UNPKG

bytev-charts

Version:

基于echarts和JavaScript及ES6封装的一个可以直接调用的图表组件库,内置主题设计,简单快捷,且支持用户自定义配置; npm 安装方式: npm install bytev-charts 若启动提示还需额外install插件,则运行 npm install @babel/runtime-corejs2 即可;

6,246 lines 223 kB
import _typeof from "@babel/runtime-corejs2/helpers/typeof";
import "core-js/modules/es.function.bind.js";
import "core-js/modules/es.array.concat.js";
import "core-js/modules/es.array.slice.js";
import "core-js/modules/es.regexp.constructor.js";
import "core-js/modules/es.regexp.exec.js";
import "core-js/modules/es.regexp.to-string.js";
import "core-js/modules/es.array.sort.js";
import "core-js/modules/es.array.for-each.js";
import "core-js/modules/es.object.to-string.js";
import "core-js/modules/web.dom-collections.for-each.js";
import "core-js/modules/es.array.iterator.js";
import "core-js/modules/web.dom-collections.iterator.js";
import "core-js/modules/es.array.map.js";
import "core-js/modules/es.promise.js";
import "core-js/modules/es.array.filter.js";
import "core-js/modules/es.array.find.js";
import "core-js/modules/es.array.reduce.js";
import "core-js/modules/es.array.every.js";
import "core-js/modules/es.array.some.js";
import "core-js/modules/es.array.index-of.js";
import "core-js/modules/es.function.name.js";
import "core-js/modules/es.array.join.js";
import "core-js/modules/es.string.match.js";
import "core-js/modules/es.date.to-string.js";
import "core-js/modules/es.string.replace.js";
import "core-js/modules/es.array.reverse.js";
import "core-js/modules/es.regexp.flags.js";
import _Object$defineProperty from "@babel/runtime-corejs2/core-js/object/define-property";
import _Symbol from "@babel/runtime-corejs2/core-js/symbol";
import _Symbol$toStringTag from "@babel/runtime-corejs2/core-js/symbol/to-string-tag";
import _Object$create from "@babel/runtime-corejs2/core-js/object/create";
import _Object$keys from "@babel/runtime-corejs2/core-js/object/keys";
import _Array$isArray from "@babel/runtime-corejs2/core-js/array/is-array";
import _Map from "@babel/runtime-corejs2/core-js/map";
import _Object$getOwnPropertyNames from "@babel/runtime-corejs2/core-js/object/get-own-property-names";
import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs2/core-js/object/get-own-property-descriptor";
import _Object$setPrototypeOf from "@babel/runtime-corejs2/core-js/object/set-prototype-of";
import _Object$freeze from "@babel/runtime-corejs2/core-js/object/freeze";
import _parseInt from "@babel/runtime-corejs2/core-js/parse-int";
import _JSON$stringify from "@babel/runtime-corejs2/core-js/json/stringify";

/*! chevrotain - v4.6.0 */
!function (t, e) {
  "object" == (typeof exports === "undefined" ? "undefined" : _typeof(exports)) && "object" == (typeof module === "undefined" ? "undefined" : _typeof(module)) ? module.exports = e() : "function" == typeof define && define.amd ? define("chevrotain", [], e) : "object" == (typeof exports === "undefined" ? "undefined" : _typeof(exports)) ? exports.chevrotain = e() : t.chevrotain = e();
}("undefined" != typeof self ? self : undefined, function () {
  return function (t) {
    var e = {};

    function n(r) {
      if (e[r]) return e[r].exports;
      var i = e[r] = {
        i: r,
        l: !1,
        exports: {}
      };
      return t[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports;
    }

    return n.m = t, n.c = e, n.d = function (t, e, r) {
      n.o(t, e) || _Object$defineProperty(t, e, {
        enumerable: !0,
        get: r
      });
    }, n.r = function (t) {
      "undefined" != typeof _Symbol && _Symbol$toStringTag && _Object$defineProperty(t, _Symbol$toStringTag, {
        value: "Module"
      }), _Object$defineProperty(t, "__esModule", {
        value: !0
      });
    }, n.t = function (t, e) {
      if (1 & e && (t = n(t)), 8 & e) return t;
      if (4 & e && "object" == _typeof(t) && t && t.__esModule) return t;

      var r = _Object$create(null);

      if (n.r(r), _Object$defineProperty(r, "default", {
        enumerable: !0,
        value: t
      }), 2 & e && "string" != typeof t) for (var i in t) {
        n.d(r, i, function (e) {
          return t[e];
        }.bind(null, i));
      }
      return r;
    }, n.n = function (t) {
      var e = t && t.__esModule ? function () {
        return t["default"];
      } : function () {
        return t;
      };
      return n.d(e, "a", e), e;
    }, n.o = function (t, e) {
      return Object.prototype.hasOwnProperty.call(t, e);
    }, n.p = "", n(n.s = 18);
  }([function (t, e, n) {
    "use strict";

    function r(t) {
      return t && 0 === t.length;
    }

    function i(t) {
      return null == t ? [] : _Object$keys(t);
    }

    function o(t) {
      for (var e = [], n = _Object$keys(t), r = 0; r < n.length; r++) {
        e.push(t[n[r]]);
      }

      return e;
    }

    function a(t, e) {
      for (var n = [], r = i(t), o = 0; o < r.length; o++) {
        var a = r[o];
        n.push(e.call(null, t[a], a));
      }

      return n;
    }

    function s(t, e) {
      for (var n = [], r = 0; r < t.length; r++) {
        n.push(e.call(null, t[r], r));
      }

      return n;
    }

    function u(t) {
      for (var e = [], n = 0; n < t.length; n++) {
        var r = t[n];
        _Array$isArray(r) ? e = e.concat(u(r)) : e.push(r);
      }

      return e;
    }

    function c(t) {
      return r(t) ? void 0 : t[0];
    }

    function p(t) {
      var e = t && t.length;
      return e ? t[e - 1] : void 0;
    }

    function l(t, e) {
      if (_Array$isArray(t)) for (var n = 0; n < t.length; n++) {
        e.call(null, t[n], n);
      } else {
        if (!C(t)) throw Error("non exhaustive match");
        var r = i(t);

        for (n = 0; n < r.length; n++) {
          var o = r[n],
              a = t[o];
          e.call(null, a, o);
        }
      }
    }

    function h(t) {
      return "string" == typeof t;
    }

    function f(t) {
      return void 0 === t;
    }

    function d(t) {
      return t instanceof Function;
    }

    function E(t, e) {
      return void 0 === e && (e = 1), t.slice(e, t.length);
    }

    function m(t, e) {
      return void 0 === e && (e = 1), t.slice(0, t.length - e);
    }

    function y(t, e) {
      var n = [];
      if (_Array$isArray(t)) for (var r = 0; r < t.length; r++) {
        var i = t[r];
        e.call(null, i) && n.push(i);
      }
      return n;
    }

    function T(t, e) {
      return y(t, function (t) {
        return !e(t);
      });
    }

    function v(t, e) {
      for (var n = _Object$keys(t), r = {}, i = 0; i < n.length; i++) {
        var o = n[i],
            a = t[o];
        e(a) && (r[o] = a);
      }

      return r;
    }

    function g(t, e) {
      return !!C(t) && t.hasOwnProperty(e);
    }

    function _(t, e) {
      return void 0 !== N(t, function (t) {
        return t === e;
      });
    }

    function R(t) {
      for (var e = [], n = 0; n < t.length; n++) {
        e.push(t[n]);
      }

      return e;
    }

    function A(t) {
      var e = {};

      for (var n in t) {
        Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
      }

      return e;
    }

    function N(t, e) {
      for (var n = 0; n < t.length; n++) {
        var r = t[n];
        if (e.call(null, r)) return r;
      }
    }

    function O(t, e) {
      for (var n = [], r = 0; r < t.length; r++) {
        var i = t[r];
        e.call(null, i) && n.push(i);
      }

      return n;
    }

    function S(t, e, n) {
      for (var r = _Array$isArray(t), a = r ? t : o(t), s = r ? [] : i(t), u = n, c = 0; c < a.length; c++) {
        u = e.call(null, u, a[c], r ? c : s[c]);
      }

      return u;
    }

    function I(t) {
      return T(t, function (t) {
        return null == t;
      });
    }

    function L(t, e) {
      void 0 === e && (e = function e(t) {
        return t;
      });
      var n = [];
      return S(t, function (t, r) {
        var i = e(r);
        return _(n, i) ? t : (n.push(i), t.concat(r));
      }, []);
    }

    function k(t) {
      for (var e = [], n = 1; n < arguments.length; n++) {
        e[n - 1] = arguments[n];
      }

      var r = [null].concat(e);
      return Function.bind.apply(t, r);
    }

    function P(t) {
      return _Array$isArray(t);
    }

    function x(t) {
      return t instanceof RegExp;
    }

    function C(t) {
      return t instanceof Object;
    }

    function M(t, e) {
      for (var n = 0; n < t.length; n++) {
        if (!e(t[n], n)) return !1;
      }

      return !0;
    }

    function F(t, e) {
      return T(t, function (t) {
        return _(e, t);
      });
    }

    function b(t, e) {
      for (var n = 0; n < t.length; n++) {
        if (e(t[n])) return !0;
      }

      return !1;
    }

    function D(t, e) {
      for (var n = 0; n < t.length; n++) {
        if (t[n] === e) return n;
      }

      return -1;
    }

    function w(t, e) {
      var n = R(t);
      return n.sort(function (t, n) {
        return e(t) - e(n);
      }), n;
    }

    function U(t, e) {
      if (t.length !== e.length) throw Error("can't zipObject with different number of keys and values!");

      for (var n = {}, r = 0; r < t.length; r++) {
        n[t[r]] = e[r];
      }

      return n;
    }

    function G(t) {
      for (var e = [], n = 1; n < arguments.length; n++) {
        e[n - 1] = arguments[n];
      }

      for (var r = 0; r < e.length; r++) {
        for (var o = e[r], a = i(o), s = 0; s < a.length; s++) {
          var u = a[s];
          t[u] = o[u];
        }
      }

      return t;
    }

    function B(t) {
      for (var e = [], n = 1; n < arguments.length; n++) {
        e[n - 1] = arguments[n];
      }

      for (var r = 0; r < e.length; r++) {
        var o = e[r];
        if (!f(o)) for (var a = i(o), s = 0; s < a.length; s++) {
          var u = a[s];
          g(t, u) || (t[u] = o[u]);
        }
      }

      return t;
    }

    function K() {
      for (var t = [], e = 0; e < arguments.length; e++) {
        t[e] = arguments[e];
      }

      return B.apply(null, [{}].concat(t));
    }

    function W(t, e) {
      var n = {};
      return l(t, function (t) {
        var r = e(t),
            i = n[r];
        i ? i.push(t) : n[r] = [t];
      }), n;
    }

    function j(t, e) {
      for (var n = A(t), r = i(e), o = 0; o < r.length; o++) {
        var a = r[o],
            s = e[a];
        n[a] = s;
      }

      return n;
    }

    function V() {}

    function Y(t) {
      return t;
    }

    function H(t) {
      for (var e = [], n = 0; n < t.length; n++) {
        var r = t[n];
        e.push(void 0 !== r ? r : void 0);
      }

      return e;
    }

    function X(t) {
      console && console.error && console.error("Error: " + t);
    }

    function z(t) {
      console && console.warn && console.warn("Warning: " + t);
    }

    function q() {
      return "function" == typeof _Map;
    }

    function $(t, e) {
      e.forEach(function (e) {
        var n = e.prototype;

        _Object$getOwnPropertyNames(n).forEach(function (r) {
          if ("constructor" !== r) {
            var i = _Object$getOwnPropertyDescriptor(n, r);

            i && (i.get || i.set) ? _Object$defineProperty(t.prototype, r, i) : t.prototype[r] = e.prototype[r];
          }
        });
      });
    }

    function Z(t) {
      function e() {}

      e.prototype = t;
      var n = new e();

      function r() {
        return _typeof(n.bar);
      }

      return r(), r(), t;
    }

    _Object$defineProperty(e, "__esModule", {
      value: !0
    }), e.isEmpty = r, e.keys = i, e.values = o, e.mapValues = a, e.map = s, e.flatten = u, e.first = c, e.last = p, e.forEach = l, e.isString = h, e.isUndefined = f, e.isFunction = d, e.drop = E, e.dropRight = m, e.filter = y, e.reject = T, e.pick = v, e.has = g, e.contains = _, e.cloneArr = R, e.cloneObj = A, e.find = N, e.findAll = O, e.reduce = S, e.compact = I, e.uniq = L, e.partial = k, e.isArray = P, e.isRegExp = x, e.isObject = C, e.every = M, e.difference = F, e.some = b, e.indexOf = D, e.sortBy = w, e.zipObject = U, e.assign = G, e.assignNoOverwrite = B, e.defaults = K, e.groupBy = W, e.merge = j, e.NOOP = V, e.IDENTITY = Y, e.packArray = H, e.PRINT_ERROR = X, e.PRINT_WARNING = z, e.isES2015MapSupported = q, e.applyMixins = $, e.toFastProperties = Z;
  }, function (t, e, n) {
    "use strict";

    var _r,
        i = this && this.__extends || (_r = function r(t, e) {
      return (_r = _Object$setPrototypeOf || {
        __proto__: []
      } instanceof Array && function (t, e) {
        t.__proto__ = e;
      } || function (t, e) {
        for (var n in e) {
          e.hasOwnProperty(n) && (t[n] = e[n]);
        }
      })(t, e);
    }, function (t, e) {
      function n() {
        this.constructor = t;
      }

      _r(t, e), t.prototype = null === e ? _Object$create(e) : (n.prototype = e.prototype, new n());
    });

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var o = n(0),
        a = n(2),
        s = function () {
      function t(t) {
        this.definition = t;
      }

      return t.prototype.accept = function (t) {
        t.visit(this), o.forEach(this.definition, function (e) {
          e.accept(t);
        });
      }, t;
    }();

    e.AbstractProduction = s;

    var u = function (t) {
      function e(e) {
        var n = t.call(this, []) || this;
        return n.idx = 1, o.assign(n, o.pick(e, function (t) {
          return void 0 !== t;
        })), n;
      }

      return i(e, t), _Object$defineProperty(e.prototype, "definition", {
        get: function get() {
          return void 0 !== this.referencedRule ? this.referencedRule.definition : [];
        },
        set: function set(t) {},
        enumerable: !0,
        configurable: !0
      }), e.prototype.accept = function (t) {
        t.visit(this);
      }, e;
    }(s);

    e.NonTerminal = u;

    var c = function (t) {
      function e(e) {
        var n = t.call(this, e.definition) || this;
        return n.orgText = "", o.assign(n, o.pick(e, function (t) {
          return void 0 !== t;
        })), n;
      }

      return i(e, t), e;
    }(s);

    e.Rule = c;

    var p = function (t) {
      function e(e) {
        var n = t.call(this, e.definition) || this;
        return o.assign(n, o.pick(e, function (t) {
          return void 0 !== t;
        })), n;
      }

      return i(e, t), e;
    }(s);

    e.Flat = p;

    var l = function (t) {
      function e(e) {
        var n = t.call(this, e.definition) || this;
        return n.idx = 1, o.assign(n, o.pick(e, function (t) {
          return void 0 !== t;
        })), n;
      }

      return i(e, t), e;
    }(s);

    e.Option = l;

    var h = function (t) {
      function e(e) {
        var n = t.call(this, e.definition) || this;
        return n.idx = 1, o.assign(n, o.pick(e, function (t) {
          return void 0 !== t;
        })), n;
      }

      return i(e, t), e;
    }(s);

    e.RepetitionMandatory = h;

    var f = function (t) {
      function e(e) {
        var n = t.call(this, e.definition) || this;
        return n.idx = 1, o.assign(n, o.pick(e, function (t) {
          return void 0 !== t;
        })), n;
      }

      return i(e, t), e;
    }(s);

    e.RepetitionMandatoryWithSeparator = f;

    var d = function (t) {
      function e(e) {
        var n = t.call(this, e.definition) || this;
        return n.idx = 1, o.assign(n, o.pick(e, function (t) {
          return void 0 !== t;
        })), n;
      }

      return i(e, t), e;
    }(s);

    e.Repetition = d;

    var E = function (t) {
      function e(e) {
        var n = t.call(this, e.definition) || this;
        return n.idx = 1, o.assign(n, o.pick(e, function (t) {
          return void 0 !== t;
        })), n;
      }

      return i(e, t), e;
    }(s);

    e.RepetitionWithSeparator = E;

    var m = function (t) {
      function e(e) {
        var n = t.call(this, e.definition) || this;
        return n.idx = 1, o.assign(n, o.pick(e, function (t) {
          return void 0 !== t;
        })), n;
      }

      return i(e, t), e;
    }(s);

    e.Alternation = m;

    var y = function () {
      function t(t) {
        this.idx = 1, o.assign(this, o.pick(t, function (t) {
          return void 0 !== t;
        }));
      }

      return t.prototype.accept = function (t) {
        t.visit(this);
      }, t;
    }();

    function T(t) {
      function e(t) {
        return o.map(t, T);
      }

      if (t instanceof u) return {
        type: "NonTerminal",
        name: t.nonTerminalName,
        idx: t.idx
      };
      if (t instanceof p) return {
        type: "Flat",
        definition: e(t.definition)
      };
      if (t instanceof l) return {
        type: "Option",
        idx: t.idx,
        definition: e(t.definition)
      };
      if (t instanceof h) return {
        type: "RepetitionMandatory",
        name: t.name,
        idx: t.idx,
        definition: e(t.definition)
      };
      if (t instanceof f) return {
        type: "RepetitionMandatoryWithSeparator",
        name: t.name,
        idx: t.idx,
        separator: T(new y({
          terminalType: t.separator
        })),
        definition: e(t.definition)
      };
      if (t instanceof E) return {
        type: "RepetitionWithSeparator",
        name: t.name,
        idx: t.idx,
        separator: T(new y({
          terminalType: t.separator
        })),
        definition: e(t.definition)
      };
      if (t instanceof d) return {
        type: "Repetition",
        name: t.name,
        idx: t.idx,
        definition: e(t.definition)
      };
      if (t instanceof m) return {
        type: "Alternation",
        name: t.name,
        idx: t.idx,
        definition: e(t.definition)
      };

      if (t instanceof y) {
        var n = {
          type: "Terminal",
          name: a.tokenName(t.terminalType),
          label: a.tokenLabel(t.terminalType),
          idx: t.idx
        },
            r = t.terminalType.PATTERN;
        return t.terminalType.PATTERN && (n.pattern = o.isRegExp(r) ? r.source : r), n;
      }

      if (t instanceof c) return {
        type: "Rule",
        name: t.name,
        orgText: t.orgText,
        definition: e(t.definition)
      };
      throw Error("non exhaustive match");
    }

    e.Terminal = y, e.serializeGrammar = function (t) {
      return o.map(t, T);
    }, e.serializeProduction = T;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(0),
        i = n(4),
        o = n(15),
        a = n(7);

    function s(t) {
      return r.isString(t.LABEL) && "" !== t.LABEL;
    }

    function u(t) {
      return r.isObject(t) && t.hasOwnProperty("tokenName") && r.isString(t.tokenName) ? t.tokenName : i.functionName(t);
    }

    e.tokenLabel = function (t) {
      return s(t) ? t.LABEL : u(t);
    }, e.hasTokenLabel = s, e.tokenName = u;
    var c = "parent",
        p = "categories",
        l = "label",
        h = "group",
        f = "push_mode",
        d = "pop_mode",
        E = "longer_alt",
        m = "line_breaks",
        y = "start_chars_hint";

    function T(t) {
      return function (t) {
        var e = t.name,
            n = t.pattern,
            o = {};
        i.defineNameProp(o, e) || (o.tokenName = e);
        r.isUndefined(n) || (o.PATTERN = n);
        if (r.has(t, c)) throw "The parent property is no longer supported.\nSee: https://github.com/SAP/chevrotain/issues/564#issuecomment-349062346 for details.";
        r.has(t, p) && (o.CATEGORIES = t[p]);
        a.augmentTokenTypes([o]), r.has(t, l) && (o.LABEL = t[l]);
        r.has(t, h) && (o.GROUP = t[h]);
        r.has(t, d) && (o.POP_MODE = t[d]);
        r.has(t, f) && (o.PUSH_MODE = t[f]);
        r.has(t, E) && (o.LONGER_ALT = t[E]);
        r.has(t, m) && (o.LINE_BREAKS = t[m]);
        r.has(t, y) && (o.START_CHARS_HINT = t[y]);
        return o;
      }(t);
    }

    e.createToken = T, e.EOF = T({
      name: "EOF",
      pattern: o.Lexer.NA
    }), a.augmentTokenTypes([e.EOF]), e.createTokenInstance = function (t, e, n, r, i, o, a, s) {
      return {
        image: e,
        startOffset: n,
        endOffset: r,
        startLine: i,
        endLine: o,
        startColumn: a,
        endColumn: s,
        tokenTypeIdx: t.tokenTypeIdx,
        tokenType: t
      };
    }, e.tokenMatcher = function (t, e) {
      return a.tokenStructuredMatcher(t, e);
    };
  }, function (t, e, n) {
    "use strict";

    var _r2,
        i = this && this.__extends || (_r2 = function r(t, e) {
      return (_r2 = _Object$setPrototypeOf || {
        __proto__: []
      } instanceof Array && function (t, e) {
        t.__proto__ = e;
      } || function (t, e) {
        for (var n in e) {
          e.hasOwnProperty(n) && (t[n] = e[n]);
        }
      })(t, e);
    }, function (t, e) {
      function n() {
        this.constructor = t;
      }

      _r2(t, e), t.prototype = null === e ? _Object$create(e) : (n.prototype = e.prototype, new n());
    });

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var o = n(4),
        a = n(0),
        s = n(26),
        u = n(2),
        c = n(23),
        p = n(16),
        l = n(10),
        h = n(24),
        f = n(25),
        d = n(31),
        E = n(32),
        m = n(34),
        y = n(35),
        T = n(36),
        v = n(37),
        g = n(38);
    e.END_OF_FILE = u.createTokenInstance(u.EOF, "", NaN, NaN, NaN, NaN, NaN, NaN), _Object$freeze(e.END_OF_FILE), e.DEFAULT_PARSER_CONFIG = _Object$freeze({
      recoveryEnabled: !1,
      maxLookahead: 4,
      ignoredIssues: {},
      dynamicTokensEnabled: !1,
      outputCst: !0,
      errorMessageProvider: l.defaultParserErrorProvider,
      serializedGrammar: null
    }), e.DEFAULT_RULE_CONFIG = _Object$freeze({
      recoveryValueFunc: function recoveryValueFunc() {},
      resyncEnabled: !0
    }), function (t) {
      t[t.INVALID_RULE_NAME = 0] = "INVALID_RULE_NAME", t[t.DUPLICATE_RULE_NAME = 1] = "DUPLICATE_RULE_NAME", t[t.INVALID_RULE_OVERRIDE = 2] = "INVALID_RULE_OVERRIDE", t[t.DUPLICATE_PRODUCTIONS = 3] = "DUPLICATE_PRODUCTIONS", t[t.UNRESOLVED_SUBRULE_REF = 4] = "UNRESOLVED_SUBRULE_REF", t[t.LEFT_RECURSION = 5] = "LEFT_RECURSION", t[t.NONE_LAST_EMPTY_ALT = 6] = "NONE_LAST_EMPTY_ALT", t[t.AMBIGUOUS_ALTS = 7] = "AMBIGUOUS_ALTS", t[t.CONFLICT_TOKENS_RULES_NAMESPACE = 8] = "CONFLICT_TOKENS_RULES_NAMESPACE", t[t.INVALID_TOKEN_NAME = 9] = "INVALID_TOKEN_NAME", t[t.INVALID_NESTED_RULE_NAME = 10] = "INVALID_NESTED_RULE_NAME", t[t.DUPLICATE_NESTED_NAME = 11] = "DUPLICATE_NESTED_NAME", t[t.NO_NON_EMPTY_LOOKAHEAD = 12] = "NO_NON_EMPTY_LOOKAHEAD", t[t.AMBIGUOUS_PREFIX_ALTS = 13] = "AMBIGUOUS_PREFIX_ALTS", t[t.TOO_MANY_ALTS = 14] = "TOO_MANY_ALTS";
    }(e.ParserDefinitionErrorType || (e.ParserDefinitionErrorType = {})), e.EMPTY_ALT = function (t) {
      return void 0 === t && (t = void 0), function () {
        return t;
      };
    };

    var _ = function () {
      function t(t, n) {
        void 0 === n && (n = e.DEFAULT_PARSER_CONFIG), this.ignoredIssues = e.DEFAULT_PARSER_CONFIG.ignoredIssues, this.definitionErrors = [], this.selfAnalysisDone = !1;
        this.initErrorHandler(n), this.initLexerAdapter(), this.initLooksAhead(n), this.initRecognizerEngine(t, n), this.initRecoverable(n), this.initTreeBuilder(n), this.initContentAssist(), this.ignoredIssues = a.has(n, "ignoredIssues") ? n.ignoredIssues : e.DEFAULT_PARSER_CONFIG.ignoredIssues, a.toFastProperties(this);
      }

      return t.performSelfAnalysis = function (t) {
        t.performSelfAnalysis();
      }, t.prototype.performSelfAnalysis = function () {
        var e,
            n = this;
        this.selfAnalysisDone = !0;
        var r = o.classNameFromInstance(this),
            i = this.gastProductionsCache;

        if (this.serializedGrammar) {
          var u = c.deserializeGrammar(this.serializedGrammar, this.tokensMap);
          a.forEach(u, function (t) {
            n.gastProductionsCache.put(t.name, t);
          });
        }

        var f = h.resolveGrammar({
          rules: i.values()
        });

        if (this.definitionErrors.push.apply(this.definitionErrors, f), a.isEmpty(f)) {
          var d = h.validateGrammar({
            rules: i.values(),
            maxLookahead: this.maxLookahead,
            tokenTypes: a.values(this.tokensMap),
            ignoredIssues: this.ignoredIssues,
            errMsgProvider: l.defaultGrammarValidatorErrorProvider,
            grammarName: r
          });
          this.definitionErrors.push.apply(this.definitionErrors, d);
        }

        if (a.isEmpty(this.definitionErrors)) {
          var E = s.computeAllProdsFollows(i.values());
          this.resyncFollows = E;
        }

        var m = p.analyzeCst(i.values(), this.fullRuleNameToShort);
        if (this.allRuleNames = m.allRuleNames, !t.DEFER_DEFINITION_ERRORS_HANDLING && !a.isEmpty(this.definitionErrors)) throw e = a.map(this.definitionErrors, function (t) {
          return t.message;
        }), new Error("Parser Definition Errors detected:\n " + e.join("\n-------------------------------\n"));
      }, t.DEFER_DEFINITION_ERRORS_HANDLING = !1, t;
    }();

    e.Parser = _, a.applyMixins(_, [f.Recoverable, d.LooksAhead, E.TreeBuilder, m.LexerAdapter, T.RecognizerEngine, y.RecognizerApi, v.ErrorHandler, g.ContentAssist]);

    var R = function (t) {
      function n(n, r) {
        void 0 === r && (r = e.DEFAULT_PARSER_CONFIG);
        var i = a.cloneObj(r);
        return i.outputCst = !0, t.call(this, n, i) || this;
      }

      return i(n, t), n;
    }(_);

    e.CstParser = R;

    var A = function (t) {
      function n(n, r) {
        void 0 === r && (r = e.DEFAULT_PARSER_CONFIG);
        var i = a.cloneObj(r);
        return i.outputCst = !1, t.call(this, n, i) || this;
      }

      return i(n, t), n;
    }(_);

    e.EmbeddedActionsParser = A;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(0);

    e.classNameFromInstance = function (t) {
      return a(t.constructor);
    };

    var i = /^\s*function\s*(\S*)\s*\(/,
        o = "name";

    function a(t) {
      var e = t.name;
      return e || t.toString().match(i)[1];
    }

    e.functionName = a, e.defineNameProp = function (t, e) {
      var n = _Object$getOwnPropertyDescriptor(t, o);

      return !(!r.isUndefined(n) && !n.configurable || (_Object$defineProperty(t, o, {
        enumerable: !1,
        configurable: !0,
        writable: !1,
        value: e
      }), 0));
    };

    var s = function () {
      function t() {
        this._state = {};
      }

      return t.prototype.keys = function () {
        return r.keys(this._state);
      }, t.prototype.values = function () {
        return r.values(this._state);
      }, t.prototype.put = function (t, e) {
        this._state[t] = e;
      }, t.prototype.putAll = function (t) {
        this._state = r.assign(this._state, t._state);
      }, t.prototype.get = function (t) {
        return this._state[t];
      }, t.prototype.containsKey = function (t) {
        return r.has(this._state, t);
      }, t.prototype.clear = function () {
        this._state = {};
      }, t;
    }();

    e.HashTable = s;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(1),
        i = function () {
      function t() {}

      return t.prototype.visit = function (t) {
        if (t instanceof r.NonTerminal) return this.visitNonTerminal(t);
        if (t instanceof r.Flat) return this.visitFlat(t);
        if (t instanceof r.Option) return this.visitOption(t);
        if (t instanceof r.RepetitionMandatory) return this.visitRepetitionMandatory(t);
        if (t instanceof r.RepetitionMandatoryWithSeparator) return this.visitRepetitionMandatoryWithSeparator(t);
        if (t instanceof r.RepetitionWithSeparator) return this.visitRepetitionWithSeparator(t);
        if (t instanceof r.Repetition) return this.visitRepetition(t);
        if (t instanceof r.Alternation) return this.visitAlternation(t);
        if (t instanceof r.Terminal) return this.visitTerminal(t);
        if (t instanceof r.Rule) return this.visitRule(t);
        throw Error("non exhaustive match");
      }, t.prototype.visitNonTerminal = function (t) {}, t.prototype.visitFlat = function (t) {}, t.prototype.visitOption = function (t) {}, t.prototype.visitRepetition = function (t) {}, t.prototype.visitRepetitionMandatory = function (t) {}, t.prototype.visitRepetitionMandatoryWithSeparator = function (t) {}, t.prototype.visitRepetitionWithSeparator = function (t) {}, t.prototype.visitAlternation = function (t) {}, t.prototype.visitTerminal = function (t) {}, t.prototype.visitRule = function (t) {}, t;
    }();

    e.GAstVisitor = i;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(0),
        i = "MismatchedTokenException",
        o = "NoViableAltException",
        a = "EarlyExitException",
        s = "NotAllInputParsedException",
        u = [i, o, a, s];

    function c(t, e, n) {
      this.name = i, this.message = t, this.token = e, this.previousToken = n, this.resyncedTokens = [];
    }

    function p(t, e, n) {
      this.name = o, this.message = t, this.token = e, this.previousToken = n, this.resyncedTokens = [];
    }

    function l(t, e) {
      this.name = s, this.message = t, this.token = e, this.resyncedTokens = [];
    }

    function h(t, e, n) {
      this.name = a, this.message = t, this.token = e, this.previousToken = n, this.resyncedTokens = [];
    }

    _Object$freeze(u), e.isRecognitionException = function (t) {
      return r.contains(u, t.name);
    }, e.MismatchedTokenException = c, c.prototype = Error.prototype, e.NoViableAltException = p, p.prototype = Error.prototype, e.NotAllInputParsedException = l, l.prototype = Error.prototype, e.EarlyExitException = h, h.prototype = Error.prototype;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(0),
        i = n(4),
        o = n(2);

    function a(t) {
      for (var e = r.cloneArr(t), n = t, i = !0; i;) {
        n = r.compact(r.flatten(r.map(n, function (t) {
          return t.CATEGORIES;
        })));
        var o = r.difference(n, e);
        e = e.concat(o), r.isEmpty(o) ? i = !1 : n = o;
      }

      return e;
    }

    function s(t) {
      r.forEach(t, function (t) {
        l(t) || (e.tokenIdxToClass.put(e.tokenShortNameIdx, t), t.tokenTypeIdx = e.tokenShortNameIdx++), h(t) && !r.isArray(t.CATEGORIES) && (t.CATEGORIES = [t.CATEGORIES]), h(t) || (t.CATEGORIES = []), f(t) || (t.categoryMatches = []), d(t) || (t.categoryMatchesMap = {}), E(t) || (t.tokenName = o.tokenName(t));
      });
    }

    function u(t) {
      r.forEach(t, function (t) {
        t.categoryMatches = [], r.forEach(t.categoryMatchesMap, function (n, r) {
          t.categoryMatches.push(e.tokenIdxToClass.get(r).tokenTypeIdx);
        });
      });
    }

    function c(t) {
      r.forEach(t, function (t) {
        p([], t);
      });
    }

    function p(t, e) {
      r.forEach(t, function (t) {
        e.categoryMatchesMap[t.tokenTypeIdx] = !0;
      }), r.forEach(e.CATEGORIES, function (n) {
        var i = t.concat(e);
        r.contains(i, n) || p(i, n);
      });
    }

    function l(t) {
      return r.has(t, "tokenTypeIdx");
    }

    function h(t) {
      return r.has(t, "CATEGORIES");
    }

    function f(t) {
      return r.has(t, "categoryMatches");
    }

    function d(t) {
      return r.has(t, "categoryMatchesMap");
    }

    function E(t) {
      return r.has(t, "tokenName");
    }

    e.tokenStructuredMatcher = function (t, e) {
      var n = t.tokenTypeIdx;
      return n === e.tokenTypeIdx || !0 === e.isParent && !0 === e.categoryMatchesMap[n];
    }, e.tokenStructuredMatcherNoCategories = function (t, e) {
      return t.tokenTypeIdx === e.tokenTypeIdx;
    }, e.tokenShortNameIdx = 1, e.tokenIdxToClass = new i.HashTable(), e.augmentTokenTypes = function (t) {
      var e = a(t);
      s(e), c(e), u(e), r.forEach(e, function (t) {
        t.isParent = t.categoryMatches.length > 0;
      });
    }, e.expandCategories = a, e.assignTokenDefaultProps = s, e.assignCategoriesTokensProp = u, e.assignCategoriesMapProp = c, e.singleAssignCategoriesToksMap = p, e.hasShortKeyProperty = l, e.hasCategoriesProperty = h, e.hasExtendingTokensTypesProperty = f, e.hasExtendingTokensTypesMapProperty = d, e.hasTokenNameProperty = E, e.isTokenType = function (t) {
      return r.has(t, "tokenTypeIdx");
    };
  }, function (t, e, n) {
    "use strict";

    var _r3,
        i = this && this.__extends || (_r3 = function r(t, e) {
      return (_r3 = _Object$setPrototypeOf || {
        __proto__: []
      } instanceof Array && function (t, e) {
        t.__proto__ = e;
      } || function (t, e) {
        for (var n in e) {
          e.hasOwnProperty(n) && (t[n] = e[n]);
        }
      })(t, e);
    }, function (t, e) {
      function n() {
        this.constructor = t;
      }

      _r3(t, e), t.prototype = null === e ? _Object$create(e) : (n.prototype = e.prototype, new n());
    });

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var o = n(0),
        a = n(1),
        s = n(5),
        u = n(2);
    e.isSequenceProd = function (t) {
      return t instanceof a.Flat || t instanceof a.Option || t instanceof a.Repetition || t instanceof a.RepetitionMandatory || t instanceof a.RepetitionMandatoryWithSeparator || t instanceof a.RepetitionWithSeparator || t instanceof a.Terminal || t instanceof a.Rule;
    }, e.isOptionalProd = function t(e, n) {
      return void 0 === n && (n = []), !!(e instanceof a.Option || e instanceof a.Repetition || e instanceof a.RepetitionWithSeparator) || (e instanceof a.Alternation ? o.some(e.definition, function (e) {
        return t(e, n);
      }) : !(e instanceof a.NonTerminal && o.contains(n, e)) && e instanceof a.AbstractProduction && (e instanceof a.NonTerminal && n.push(e), o.every(e.definition, function (e) {
        return t(e, n);
      })));
    }, e.isBranchingProd = function (t) {
      return t instanceof a.Alternation;
    }, e.getProductionDslName = function (t) {
      if (t instanceof a.NonTerminal) return "SUBRULE";
      if (t instanceof a.Option) return "OPTION";
      if (t instanceof a.Alternation) return "OR";
      if (t instanceof a.RepetitionMandatory) return "AT_LEAST_ONE";
      if (t instanceof a.RepetitionMandatoryWithSeparator) return "AT_LEAST_ONE_SEP";
      if (t instanceof a.RepetitionWithSeparator) return "MANY_SEP";
      if (t instanceof a.Repetition) return "MANY";
      if (t instanceof a.Terminal) return "CONSUME";
      throw Error("non exhaustive match");
    };

    var c = function (t) {
      function e() {
        var e = null !== t && t.apply(this, arguments) || this;
        return e.separator = "-", e.dslMethods = {
          option: [],
          alternation: [],
          repetition: [],
          repetitionWithSeparator: [],
          repetitionMandatory: [],
          repetitionMandatoryWithSeparator: []
        }, e;
      }

      return i(e, t), e.prototype.visitTerminal = function (t) {
        var e = u.tokenName(t.terminalType) + this.separator + "Terminal";
        o.has(this.dslMethods, e) || (this.dslMethods[e] = []), this.dslMethods[e].push(t);
      }, e.prototype.visitNonTerminal = function (t) {
        var e = t.nonTerminalName + this.separator + "Terminal";
        o.has(this.dslMethods, e) || (this.dslMethods[e] = []), this.dslMethods[e].push(t);
      }, e.prototype.visitOption = function (t) {
        this.dslMethods.option.push(t);
      }, e.prototype.visitRepetitionWithSeparator = function (t) {
        this.dslMethods.repetitionWithSeparator.push(t);
      }, e.prototype.visitRepetitionMandatory = function (t) {
        this.dslMethods.repetitionMandatory.push(t);
      }, e.prototype.visitRepetitionMandatoryWithSeparator = function (t) {
        this.dslMethods.repetitionMandatoryWithSeparator.push(t);
      }, e.prototype.visitRepetition = function (t) {
        this.dslMethods.repetition.push(t);
      }, e.prototype.visitAlternation = function (t) {
        this.dslMethods.alternation.push(t);
      }, e;
    }(s.GAstVisitor);

    e.DslMethodsCollectorVisitor = c;
  }, function (t, e, n) {
    "use strict";

    function r(t, e, n) {
      return n | e | t;
    }

    _Object$defineProperty(e, "__esModule", {
      value: !0
    }), e.BITS_FOR_METHOD_IDX = 4, e.BITS_FOR_OCCURRENCE_IDX = 4, e.BITS_FOR_RULE_IDX = 24, e.BITS_FOR_ALT_IDX = 8, e.OR_IDX = 1 << e.BITS_FOR_METHOD_IDX, e.OPTION_IDX = 2 << e.BITS_FOR_METHOD_IDX, e.MANY_IDX = 3 << e.BITS_FOR_METHOD_IDX, e.AT_LEAST_ONE_IDX = 4 << e.BITS_FOR_METHOD_IDX, e.MANY_SEP_IDX = 5 << e.BITS_FOR_METHOD_IDX, e.AT_LEAST_ONE_SEP_IDX = 6 << e.BITS_FOR_METHOD_IDX, e.getKeyForAutomaticLookahead = r;
    var i = 32 - e.BITS_FOR_ALT_IDX;

    e.getKeyForAltIndex = function (t, e, n, o) {
      var a = o + 1 << i;
      return r(t, e, n) | a;
    };
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(2),
        i = n(0),
        o = n(0),
        a = n(1),
        s = n(8),
        u = n(11),
        c = n(17),
        p = n(3);
    e.defaultParserErrorProvider = {
      buildMismatchTokenMessage: function buildMismatchTokenMessage(t) {
        var e = t.expected,
            n = t.actual;
        t.previous, t.ruleName;
        return "Expecting " + (r.hasTokenLabel(e) ? "--\x3e " + r.tokenLabel(e) + " <--" : "token of type --\x3e " + r.tokenName(e) + " <--") + " but found --\x3e '" + n.image + "' <--";
      },
      buildNotAllInputParsedMessage: function buildNotAllInputParsedMessage(t) {
        var e = t.firstRedundant;
        t.ruleName;
        return "Redundant input, expecting EOF but found: " + e.image;
      },
      buildNoViableAltMessage: function buildNoViableAltMessage(t) {
        var e = t.expectedPathsPerAlt,
            n = t.actual,
            i = (t.previous, t.customUserDescription),
            a = (t.ruleName, "\nbut found: '" + o.first(n).image + "'");
        if (i) return "Expecting: " + i + a;
        var s = o.reduce(e, function (t, e) {
          return t.concat(e);
        }, []),
            u = o.map(s, function (t) {
          return "[" + o.map(t, function (t) {
            return r.tokenLabel(t);
          }).join(", ") + "]";
        });
        return "Expecting: " + ("one of these possible Token sequences:\n" + o.map(u, function (t, e) {
          return "  " + (e + 1) + ". " + t;
        }).join("\n")) + a;
      },
      buildEarlyExitMessage: function buildEarlyExitMessage(t) {
        var e = t.expectedIterationPaths,
            n = t.actual,
            i = t.customUserDescription,
            a = (t.ruleName, "\nbut found: '" + o.first(n).image + "'");
        return i ? "Expecting: " + i + a : "Expecting: " + ("expecting at least one iteration which starts with one of these possible Token sequences::\n  <" + o.map(e, function (t) {
          return "[" + o.map(t, function (t) {
            return r.tokenLabel(t);
          }).join(",") + "]";
        }).join(" ,") + ">") + a;
      }
    }, _Object$freeze(e.defaultParserErrorProvider), e.defaultGrammarResolverErrorProvider = {
      buildRuleNotFoundError: function buildRuleNotFoundError(t, e) {
        return "Invalid grammar, reference to a rule which is not defined: ->" + e.nonTerminalName + "<-\ninside top level rule: ->" + t.name + "<-";
      }
    }, e.defaultGrammarValidatorErrorProvider = {
      buildDuplicateFoundError: function buildDuplicateFoundError(t, e) {
        var n,
            i = t.name,
            u = o.first(e),
            c = u.idx,
            p = s.getProductionDslName(u),
            l = (n = u) instanceof a.Terminal ? r.tokenName(n.terminalType) : n instanceof a.NonTerminal ? n.nonTerminalName : "",
            h = "->" + p + "<- with numerical suffix: ->" + c + "<-\n                  " + (l ? "and argument: ->" + l + "<-" : "") + "\n                  appears more than once (" + e.length + " times) in the top level rule: ->" + i + "<-.\n                  " + (0 === c ? "Also note that numerical suffix 0 means " + p + " without any suffix." : "") + "\n                  To fix this make sure each usage of " + p + " " + (l ? "with the argument: ->" + l + "<-" : "") + "\n                  in the rule ->" + i + "<- has a different occurrence index (0-5), as that combination acts as a unique\n                  position key in the grammar, which is needed by the parsing engine.\n                  \n                  For further details see: https://sap.github.io/chevrotain/docs/FAQ.html#NUMERICAL_SUFFIXES \n                  ";
        return h = (h = h.replace(/[ \t]+/g, " ")).replace(/\s\s+/g, "\n");
      },
      buildInvalidNestedRuleNameError: function buildInvalidNestedRuleNameError(t, e) {
        return "Invalid nested rule name: ->" + e.name + "<- inside rule: ->" + t.name + "<-\nit must match the pattern: ->" + u.validNestedRuleName.toString() + "<-.\nNote that this means a nested rule name must start with the '$'(dollar) sign.";
      },
      buildDuplicateNestedRuleNameError: function buildDuplicateNestedRuleNameError(t, e) {
        return "Duplicate nested rule name: ->" + o.first(e).name + "<- inside rule: ->" + t.name + "<-\nA nested name must be unique in the scope of a top level grammar rule.";
      },
      buildNamespaceConflictError: function buildNamespaceConflictError(t) {
        return "Namespace conflict found in grammar.\nThe grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <" + t.name + ">.\nTo resolve this make sure each Terminal and Non-Terminal names are unique\nThis is easy to accomplish by using the convention that Terminal names start with an uppercase letter\nand Non-Terminal names start with a lower case letter.";
      },
      buildAlternationPrefixAmbiguityError: function buildAlternationPrefixAmbiguityError(t) {
        var e = o.map(t.prefixPath, function (t) {
          return r.tokenLabel(t);
        }).join(", "),
            n = 0 === t.alternation.idx ? "" : t.alternation.idx;
        return "Ambiguous alternatives: <" + t.ambiguityIndices.join(" ,") + "> due to common lookahead prefix\nin <OR" + n + "> inside <" + t.topLevelRule.name + "> Rule,\n<" + e + "> may appears as a prefix path in all these alternatives.\nhttps://sap.github.io/chevrotain/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\nFor Further details.";
      },
      buildAlternationAmbiguityError: function buildAlternationAmbiguityError(t) {
        var e = o.map(t.prefixPath, function (t) {
          return r.tokenLabel(t);
        }).join(", "),
            n = 0 === t.alternation.idx ? "" : t.alternation.idx,
            i = "Ambiguous alternatives: <" + t.ambiguityIndices.join(" ,") + "> in <OR" + n + "> inside <" + t.topLevelRule.name + "> Rule,\n<" + e + "> may appears as a prefix path in all these alternatives.\n",
            a = c.VERSION.replace(/\./g, "_");
        return i = i + "To Resolve this, try one of of the following: \n1. Refactor your grammar to be LL(K) for the current value of k (by default k=" + p.DEFAULT_PARSER_CONFIG.maxLookahead + "})\n2. Increase the value of K for your grammar by providing a larger 'maxLookahead' value in the parser's config\n3. This issue can be ignored (if you know what you are doing...), see https://sap.github.io/chevrotain/documentation/" + a + "/interfaces/iparserconfig.html#ignoredissues for more details\n";
      },
      buildEmptyRepetitionError: function buildEmptyRepetitionError(t) {
        var e = s.getProductionDslName(t.repetition);
        return 0 !== t.repetition.idx && (e += t.repetition.idx), "The repetition <" + e + "> within Rule <" + t.topLevelRule.name + "> can never consume any tokens.\nThis could lead to an infinite loop.";
      },
      buildTokenNameError: function buildTokenNameError(t) {
        return "Invalid Grammar Token name: ->" + r.tokenName(t.tokenType) + "<- it must match the pattern: ->" + t.expectedPattern.toString() + "<-";
      },
      buildEmptyAlternationError: function buildEmptyAlternationError(t) {
        return "Ambiguous empty alternative: <" + (t.emptyChoiceIdx + 1) + "> in <OR" + t.alternation.idx + "> inside <" + t.topLevelRule.name + "> Rule.\nOnly the last alternative may be an empty alternative.";
      },
      buildTooManyAlternativesError: function buildTooManyAlternativesError(t) {
        return "An Alternation cannot have more than 256 alternatives:\n<OR" + t.alternation.idx + "> inside <" + t.topLevelRule.name + "> Rule.\n has " + (t.alternation.definition.length + 1) + " alternatives.";
      },
      buildLeftRecursionError: function buildLeftRecursionError(t) {
        var e = t.topLevelRule.name;
        return "Left Recursion found in grammar.\nrule: <" + e + "> can be invoked from itself (directly or indirectly)\nwithout consuming any Tokens. The grammar path that causes this is: \n " + (e + " --\x3e " + i.map(t.leftRecursionPath, function (t) {
          return t.name;
        }).concat([e]).join(" --\x3e ")) + "\n To fix this refactor your grammar to remove the left recursion.\nsee: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.";
      },
      buildInvalidRuleNameError: function buildInvalidRuleNameError(t) {
        return "Invalid grammar rule name: ->" + t.topLevelRule.name + "<- it must match the pattern: ->" + t.expectedPattern.toString() + "<-";
      },
      buildDuplicateRuleNameError: function buildDuplicateRuleNameError(t) {
        return "Duplicate definition, rule: ->" + (t.topLevelRule instanceof a.Rule ? t.topLevelRule.name : t.topLevelRule) + "<- is already defined in the grammar: ->" + t.grammarName + "<-";
      }
    };
  }, function (t, e, n) {
    "use strict";

    var _r4,
        i = this && this.__extends || (_r4 = function r(t, e) {
      return (_r4 = _Object$setPrototypeOf || {
        __proto__: []
      } instanceof Array && function (t, e) {
        t.__proto__ = e;
      } || function (t, e) {
        for (var n in e) {
          e.hasOwnProperty(n) && (t[n] = e[n]);
        }
      })(t, e);
    }, function (t, e) {
      function n() {
        this.constructor = t;
      }

      _r4(t, e), t.prototype = null === e ? _Object$create(e) : (n.prototype = e.prototype, new n());
    });

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var o = n(0),
        a = n(0),
        s = n(3),
        u = n(8),
        c = n(2),
        p = n(12),
        l = n(16),
        h = n(13),
        f = n(1),
        d = n(5);

    function E(t) {
      return u.getProductionDslName(t) + "_#_" + t.idx + "_#_" + m(t);
    }

    function m(t) {
      return t instanceof f.Terminal ? c.tokenName(t.terminalType) : t instanceof f.NonTerminal ? t.nonTerminalName : "";
    }

    e.validateGrammar = function (t, e, n, r, i, p) {
      var h = o.map(t, function (t) {
        return function (t, e) {
          var n = new y();
          t.accept(n);
          var r = n.allProductions,
              i = o.groupBy(r, E),
              a = o.pick(i, function (t) {
            return t.length > 1;
          });
          return o.map(o.values(a), function (n) {
            var r = o.first(n),
                i = e.buildDuplicateFoundError(t, n),
                a = u.getProductionDslName(r),
                c = {
              message: i,
              type: s.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,
              ruleName: t.name,
              dslName: a,
              occurrence: r.idx
            },
                p = m(r);
            return p && (c.parameter = p), c;
          });
        }(t, i);
      }),
          f = o.map(t, function (t) {
        return R(t, t, i);
      }),
          d = [],
          A = [],
          N = [];
      a.every(f, a.isEmpty) && (d = a.map(t, function (t) {
        return O(t, i);
      }), A = a.map(t, function (t) {
        return S(t, e, r, i);
      }), N = k(t, e, i));

      var I = function (t, e, n) {
        var r = [],
            i = a.map(e, function (t) {
          return c.tokenName(t);
        });
        return a.forEach(t, function (t) {
          var e = t.name;

          if (a.contains(i, e)) {
            var o = n.buildNamespaceConflictError(t);
            r.push({
              message: o,
              type: s.ParserDefinitionErrorType.CONFLICT_TOKENS_RULES_NAMESPACE,
              ruleName: e
            });
          }
        }), r;
      }(t, n, i),
          P = o.map(n, function (t) {
        return g(t, i);
      }),
          x = function (t, e) {
        var n = [];
        return a.forEach(t, function (t) {
          var r = new l.NamedDSLMethodsCollectorVisitor("");
          t.accept(r);
          var i = a.map(r.result, function (t) {
            return t.orgProd;
          });
          n.push(a.map(i, function (n) {
            return v(t, n, e);
          }));
        }), a.flatten(n);
      }(t, i),
          C = function (t, e) {
        var n = [];
        return a.forEach(t, function (t) {
          var r = new l.NamedDSLMethodsCollectorVisitor("");
          t.accept(r);
          var i = a.groupBy(r.result, function (t) {
            return t.name;
          }),
              o = a.pick(i, function (t) {
            return t.length > 1;
          });
          a.forEach(a.values(o), function (r) {
            var i = a.map(r, function (t) {
              return t.orgProd;
            }),
                o = e.buildDuplicateNestedRuleNameError(t, i);
            n.push({
              message: o,
              type: s.ParserDefinitionErrorType.DUPLICATE_NESTED_NAME,
              ruleName: t.name
            });
          });
        }), n;
      }(t, i),
          M = a.map(t, function (t) {
        return L(t, i);
      }),
          F = a.map(t, function (t) {
        return T(t, i);
      }),
          b = a.map(t, function (e) {
        return _(e, t, p, i);
      });

      return o.flatten(h.concat(P, x, C, N, f, d, A, I, M, F, b));
    }, e.identifyProductionForDuplicates = E;

    var y = function (t) {
      function e() {
        var e = null !== t && t.apply(this, arguments) || this;
        return e.allProductions = [], e;
      }

      return i(e, t), e.prototype.visitNonTerminal = function (t) {
        this.allProductions.push(t);
      }, e.prototype.visitOption = function (t) {
        this.allProductions.push(t);
      }, e.prototype.visitRepetitionWithSeparator = function (t) {
        this.allProductions.push(t);
      }, e.prototype.visitRepetitionMandatory = function (t) {
        this.allProductions.push(t);
      }, e.prototype.visitRepetitionMandatoryWithSeparator = function (t) {
        this.allProductions.push(t);
      }, e.prototype.visitRepetition = function (t) {
        this.allProductions.push(t);
      }, e.prototype.visitAlternation = function (t) {
        this.allProductions.push(t);
      }, e.prototype.visitTerminal = function (t) {
        this.allProductions.push(t);
      }, e;
    }(d.GAstVisitor);

    function T(t, n) {
      var r = [],
          i = t.name;
      return i.match(e.validTermsPattern) || r.push({
        message: n.buildInvalidRuleNameError({
          topLevelRule: t,
          expectedPattern: e.validTermsPattern
        }),
        type: s.ParserDefinitionErrorType.INVALID_RULE_NAME,
        ruleName: i
      }), r;
    }

    function v(t, n, r) {
      var i,
          o = [];
      return n.name.match(e.validNestedRuleName) || (i = r.buildInvalidNestedRuleNameError(t, n), o.push({
        message: i,
        type: s.ParserDefinitionErrorType.INVALID_NESTED_RULE_NAME,
        ruleName: t.name
      })), o;
    }

    function g(t, n) {
      var r = [];
      return c.tokenName(t).match(e.validTermsPattern) || r.push({
        message: n.buildTokenNameError({
          tokenType: t,
          expectedPattern: e.validTermsPattern
        }),
        type: s.ParserDefinitionErrorType.INVALID_TOKEN_NAME
      }), r;
    }

    function _(t, e, n, r) {
      var i = [];

      if (a.reduce(e, function (e, n) {
        return n.name === t.name ? e + 1 : e;
      }, 0) > 1) {
        var o = r.buildDuplicateRuleNameError({
          topLevelRule: t,
          grammarName: n
        });
        i.push({
          message: o,
          type: s.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,
          ruleName: t.name
        });
      }

      return i;
    }

    function R(t, e, n, r) {
      void 0 === r && (r = []);
      var i = [],
          a = A(e.definition);
      if (o.isEmpty(a)) return [];
      var u = t.name;
      o.contains(a, t) && i.push({
        message: n.buildLeftRecursionError({
          topLevelRule: t,
          leftRecursionPath: r
        }),
        type: s.ParserDefinitionErrorType.LEFT_RECURSION,
        ruleName: u
      });
      var c = o.difference(a, r.concat([t])),
          p = o.map(c, function (e) {
        var i = o.cloneArr(r);
        return i.push(e), R(t, e, n, i);
      });
      return i.concat(o.flatten(p));
    }

    function A(t) {
      var e = [];
      if (o.isEmpty(t)) return e;
      var n = o.first(t);
      if (n instanceof f.NonTerminal) e.push(n.referencedRule);else if (n instanceof f.Flat || n instanceof f.Option || n instanceof f.RepetitionMandatory || n instanceof f.RepetitionMandatoryWithSeparator || n instanceof f.RepetitionWithSeparator || n instanceof f.Repetition) e = e.concat(A(n.definition));else if (n instanceof f.Alternation) e = o.flatten(o.map(n.definition, function (t) {
        return A(t.definition);
      }));else if (!(n instanceof f.Terminal)) throw Error("non exhaustive match");
      var r = u.isOptionalProd(n),
          i = t.length > 1;

      if (r && i) {
        var a = o.drop(t);
        return e.concat(A(a));
      }

      return e;
    }

    e.OccurrenceValidationCollector = y, e.validTermsPattern = /^[a-zA-Z_]\w*$/, e.validNestedRuleName = new RegExp(e.validTermsPattern.source.replace("^", "^\\$")), e.validateRuleName = T, e.validateNestedRuleName = v, e.validateTokenName = g, e.validateRuleDoesNotAlreadyExist = _, e.validateRuleIsOverridden = function (t, e, n) {
      var r,
          i = [];
      return o.contains(e, t) || (r = "Invalid rule override, rule: ->" + t + "<- cannot be overridden in the grammar: ->" + n + "<-as it is not defined in any of the super grammars ", i.push({
        message: r,
        type: s.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,
        ruleName: t
      })), i;
    }, e.validateNoLeftRecursion = R, e.getFirstNoneTerminal = A;

    var N = function (t) {
      function e() {
        var e = null !== t && t.apply(this, arguments) || this;
        return e.alternations = [], e;
      }

      return i(e, t), e.prototype.visitAlternation = function (t) {
        this.alternations.push(t);
      }, e;
    }(d.GAstVisitor);

    function O(t, e) {
      var n = new N();
      t.accept(n);
      var r = n.alternations;
      return o.reduce(r, function (n, r) {
        var i = o.dropRight(r.definition),
            a = o.map(i, function (n, i) {
          var a = h.nextPossibleTokensAfter([n], [], null, 1);
          return o.isEmpty(a) ? {
            message: e.buildEmptyAlternationError({
              topLevelRule: t,
              alternation: r,
              emptyChoiceIdx: i
            }),
            type: s.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,
            ruleName: t.name,
            occurrence: r.idx,
            alternative: i + 1
          } : null;
        });
        return n.concat(o.compact(a));
      }, []);
    }

    function S(t, e, n, r) {
      var i = new N();
      t.accept(i);
      var c = i.alternations,
          l = n[t.name];
      return l && (c = a.reject(c, function (t) {
        return l[u.getProductionDslName(t) + (0 === t.idx ? "" : t.idx)];
      })), o.reduce(c, function (n, i) {
        var u = i.idx,
            c = p.getLookaheadPathsForOr(u, t, e),
            l = function (t, e, n, r) {
          var i = [],
              u = a.reduce(t, function (e, n, r) {
            return a.forEach(n, function (n) {
              var o = [r];
              a.forEach(t, function (t, e) {
                r !== e && p.containsPath(t, n) && o.push(e);
              }), o.length > 1 && !p.containsPath(i, n) && (i.push(n), e.push({
                alts: o,
                path: n
              }));
            }), e;
          }, []);
          return o.map(u, function (t) {
            var i = a.map(t.alts, function (t) {
              return t + 1;
            }),
                o = r.buildAlternationAmbiguityError({
              topLevelRule: n,
              alternation: e,
              ambiguityIndices: i,
              prefixPath: t.path
            });
            return {
              message: o,
              type: s.ParserDefinitionErrorType.AMBIGUOUS_ALTS,
              ruleName: n.name,
              occurrence: e.idx,
              alternatives: [t.alts]
            };
          });
        }(c, i, t, r),
            h = P(c, i, t, r);

        return n.concat(l, h);
      }, []);
    }

    e.validateEmptyOrAlternative = O, e.validateAmbiguousAlternationAlternatives = S;

    var I = function (t) {
      function e() {
        var e = null !== t && t.apply(this, arguments) || this;
        return e.allProductions = [], e;
      }

      return i(e, t), e.prototype.visitRepetitionWithSeparator = function (t) {
        this.allProductions.push(t);
      }, e.prototype.visitRepetitionMandatory = function (t) {
        this.allProductions.push(t);
      }, e.prototype.visitRepetitionMandatoryWithSeparator = function (t) {
        this.allProductions.push(t);
      }, e.prototype.visitRepetition = function (t) {
        this.allProductions.push(t);
      }, e;
    }(d.GAstVisitor);

    function L(t, e) {
      var n = new N();
      t.accept(n);
      var r = n.alternations;
      return o.reduce(r, function (n, r) {
        return r.definition.length > 255 && n.push({
          message: e.buildTooManyAlternativesError({
            topLevelRule: t,
            alternation: r
          }),
          type: s.ParserDefinitionErrorType.TOO_MANY_ALTS,
          ruleName: t.name,
          occurrence: r.idx
        }), n;
      }, []);
    }

    function k(t, e, n) {
      var r = [];
      return a.forEach(t, function (t) {
        var i = new I();
        t.accept(i);
        var o = i.allProductions;
        a.forEach(o, function (i) {
          var o = p.getProdType(i),
              u = i.idx,
              c = p.getLookaheadPathsForOptionalProd(u, t, o, e)[0];

          if (a.isEmpty(a.flatten(c))) {
            var l = n.buildEmptyRepetitionError({
              topLevelRule: t,
              repetition: i
            });
            r.push({
              message: l,
              type: s.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,
              ruleName: t.name
            });
          }
        });
      }), r;
    }

    function P(t, e, n, r) {
      var i = [],
          o = a.reduce(t, function (t, e, n) {
        var r = a.map(e, function (t) {
          return {
            idx: n,
            path: t
          };
        });
        return t.concat(r);
      }, []);
      return a.forEach(o, function (t) {
        var u = t.idx,
            c = t.path,
            l = a.findAll(o, function (t) {
          return t.idx < u && p.isStrictPrefixOfPath(t.path, c);
        }),
            h = a.map(l, function (t) {
          var i = [t.idx + 1, u + 1],
              o = 0 === e.idx ? "" : e.idx;
          return {
            message: r.buildAlternationPrefixAmbiguityError({
              topLevelRule: n,
              alternation: e,
              ambiguityIndices: i,
              prefixPath: t.path
            }),
            type: s.ParserDefinitionErrorType.AMBIGUOUS_PREFIX_ALTS,
            ruleName: n.name,
            occurrence: o,
            alternatives: i
          };
        });
        i = i.concat(h);
      }), i;
    }

    e.RepetionCollector = I, e.validateTooManyAlts = L, e.validateSomeNonEmptyLookaheadPath = k, e.checkPrefixAlternativesAmbiguities = P;
  }, function (t, e, n) {
    "use strict";

    var _r5,
        i = this && this.__extends || (_r5 = function r(t, e) {
      return (_r5 = _Object$setPrototypeOf || {
        __proto__: []
      } instanceof Array && function (t, e) {
        t.__proto__ = e;
      } || function (t, e) {
        for (var n in e) {
          e.hasOwnProperty(n) && (t[n] = e[n]);
        }
      })(t, e);
    }, function (t, e) {
      function n() {
        this.constructor = t;
      }

      _r5(t, e), t.prototype = null === e ? _Object$create(e) : (n.prototype = e.prototype, new n());
    });

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var o,
        a = n(0),
        s = n(13),
        u = n(14),
        c = n(7),
        p = n(1),
        l = n(5);
    !function (t) {
      t[t.OPTION = 0] = "OPTION", t[t.REPETITION = 1] = "REPETITION", t[t.REPETITION_MANDATORY = 2] = "REPETITION_MANDATORY", t[t.REPETITION_MANDATORY_WITH_SEPARATOR = 3] = "REPETITION_MANDATORY_WITH_SEPARATOR", t[t.REPETITION_WITH_SEPARATOR = 4] = "REPETITION_WITH_SEPARATOR", t[t.ALTERNATION = 5] = "ALTERNATION";
    }(o = e.PROD_TYPE || (e.PROD_TYPE = {})), e.getProdType = function (t) {
      if (t instanceof p.Option) return o.OPTION;
      if (t instanceof p.Repetition) return o.REPETITION;
      if (t instanceof p.RepetitionMandatory) return o.REPETITION_MANDATORY;
      if (t instanceof p.RepetitionMandatoryWithSeparator) return o.REPETITION_MANDATORY_WITH_SEPARATOR;
      if (t instanceof p.RepetitionWithSeparator) return o.REPETITION_WITH_SEPARATOR;
      if (t instanceof p.Alternation) return o.ALTERNATION;
      throw Error("non exhaustive match");
    }, e.buildLookaheadFuncForOr = function (t, e, n, r, i, o) {
      var a = E(t, e, n);
      return o(a, r, T(a) ? c.tokenStructuredMatcherNoCategories : c.tokenStructuredMatcher, i);
    }, e.buildLookaheadFuncForOptionalProd = function (t, e, n, r, i, o) {
      var a = m(t, e, i, n),
          s = T(a) ? c.tokenStructuredMatcherNoCategories : c.tokenStructuredMatcher;
      return o(a[0], s, r);
    }, e.buildAlternativesLookAheadFunc = function (t, e, n, r) {
      var i = t.length,
          o = a.every(t, function (t) {
        return a.every(t, function (t) {
          return 1 === t.length;
        });
      });
      if (e) return function (e) {
        for (var r = a.map(e, function (t) {
          return t.GATE;
        }), o = 0; o < i; o++) {
          var s = t[o],
              u = s.length,
              c = r[o];
          if (void 0 === c || !1 !== c.call(this)) t: for (var p = 0; p < u; p++) {
            for (var l = s[p], h = l.length, f = 0; f < h; f++) {
              var d = this.LA(f + 1);
              if (!1 === n(d, l[f])) continue t;
            }

            return o;
          }
        }
      };

      if (o && !r) {
        var s = a.map(t, function (t) {
          return a.flatten(t);
        }),
            u = a.reduce(s, function (t, e, n) {
          return a.forEach(e, function (e) {
            a.has(t, e.tokenTypeIdx) || (t[e.tokenTypeIdx] = n), a.forEach(e.categoryMatches, function (e) {
              a.has(t, e) || (t[e] = n);
            });
          }), t;
        }, []);
        return function () {
          var t = this.LA(1);
          return u[t.tokenTypeIdx];
        };
      }

      return function () {
        for (var e = 0; e < i; e++) {
          var r = t[e],
              o = r.length;

          t: for (var a = 0; a < o; a++) {
            for (var s = r[a], u = s.length, c = 0; c < u; c++) {
              var p = this.LA(c + 1);
              if (!1 === n(p, s[c])) continue t;
            }

            return e;
          }
        }
      };
    }, e.buildSingleAlternativeLookaheadFunction = function (t, e, n) {
      var r = a.every(t, function (t) {
        return 1 === t.length;
      }),
          i = t.length;

      if (r && !n) {
        var o = a.flatten(t);

        if (1 === o.length && a.isEmpty(o[0].categoryMatches)) {
          var s = o[0].tokenTypeIdx;
          return function () {
            return this.LA(1).tokenTypeIdx === s;
          };
        }

        var u = a.reduce(o, function (t, e, n) {
          return t[e.tokenTypeIdx] = !0, a.forEach(e.categoryMatches, function (e) {
            t[e] = !0;
          }), t;
        }, []);
        return function () {
          var t = this.LA(1);
          return !0 === u[t.tokenTypeIdx];
        };
      }

      return function () {
        t: for (var n = 0; n < i; n++) {
          for (var r = t[n], o = r.length, a = 0; a < o; a++) {
            var s = this.LA(a + 1);
            if (!1 === e(s, r[a])) continue t;
          }

          return !0;
        }

        return !1;
      };
    };

    var h = function (t) {
      function e(e, n, r) {
        var i = t.call(this) || this;
        return i.topProd = e, i.targetOccurrence = n, i.targetProdType = r, i;
      }

      return i(e, t), e.prototype.startWalking = function () {
        return this.walk(this.topProd), this.restDef;
      }, e.prototype.checkIsTarget = function (t, e, n, r) {
        return t.idx === this.targetOccurrence && this.targetProdType === e && (this.restDef = n.concat(r), !0);
      }, e.prototype.walkOption = function (e, n, r) {
        this.checkIsTarget(e, o.OPTION, n, r) || t.prototype.walkOption.call(this, e, n, r);
      }, e.prototype.walkAtLeastOne = function (e, n, r) {
        this.checkIsTarget(e, o.REPETITION_MANDATORY, n, r) || t.prototype.walkOption.call(this, e, n, r);
      }, e.prototype.walkAtLeastOneSep = function (e, n, r) {
        this.checkIsTarget(e, o.REPETITION_MANDATORY_WITH_SEPARATOR, n, r) || t.prototype.walkOption.call(this, e, n, r);
      }, e.prototype.walkMany = function (e, n, r) {
        this.checkIsTarget(e, o.REPETITION, n, r) || t.prototype.walkOption.call(this, e, n, r);
      }, e.prototype.walkManySep = function (e, n, r) {
        this.checkIsTarget(e, o.REPETITION_WITH_SEPARATOR, n, r) || t.prototype.walkOption.call(this, e, n, r);
      }, e;
    }(u.RestWalker),
        f = function (t) {
      function e(e, n) {
        var r = t.call(this) || this;
        return r.targetOccurrence = e, r.targetProdType = n, r.result = [], r;
      }

      return i(e, t), e.prototype.checkIsTarget = function (t, e) {
        t.idx === this.targetOccurrence && this.targetProdType === e && (this.result = t.definition);
      }, e.prototype.visitOption = function (t) {
        this.checkIsTarget(t, o.OPTION);
      }, e.prototype.visitRepetition = function (t) {
        this.checkIsTarget(t, o.REPETITION);
      }, e.prototype.visitRepetitionMandatory = function (t) {
        this.checkIsTarget(t, o.REPETITION_MANDATORY);
      }, e.prototype.visitRepetitionMandatoryWithSeparator = function (t) {
        this.checkIsTarget(t, o.REPETITION_MANDATORY_WITH_SEPARATOR);
      }, e.prototype.visitRepetitionWithSeparator = function (t) {
        this.checkIsTarget(t, o.REPETITION_WITH_SEPARATOR);
      }, e.prototype.visitAlternation = function (t) {
        this.checkIsTarget(t, o.ALTERNATION);
      }, e;
    }(l.GAstVisitor);

    function d(t, e) {
      function n(t, e) {
        return a.reduce(t, function (t, n, r) {
          if (r !== e) {
            var i = a.map(n, function (t) {
              return t.partialPath;
            });
            return t.concat(i);
          }

          return t;
        }, []);
      }

      function r(t, e) {
        return void 0 === a.find(t, function (t) {
          return a.every(e, function (e, n) {
            return r = e, i = t[n], r === i || r && i && (r.categoryMatchesMap[i.tokenTypeIdx] || i.categoryMatchesMap[r.tokenTypeIdx]);
            var r, i;
          });
        });
      }

      function i(t) {
        for (var e = [], n = 0; n < t; n++) {
          e.push([]);
        }

        return e;
      }

      for (var o = a.map(t, function (t) {
        return s.possiblePathsFrom([t], 1);
      }), u = i(o.length), c = o, p = 1; p <= e; p++) {
        var l = c;
        c = i(l.length);

        for (var h = 0; h < l.length; h++) {
          for (var f = l[h], d = n(l, h), E = 0; E < f.length; E++) {
            var m = f[E].partialPath,
                T = f[E].suffixDef;

            if (r(d, m) || a.isEmpty(T) || m.length === e) {
              var v = u[h];
              y(v, m) || v.push(m);
            } else {
              var g = s.possiblePathsFrom(T, p + 1, m);
              c[h] = c[h].concat(g);
            }
          }
        }
      }

      return u;
    }

    function E(t, e, n) {
      var r = new f(t, o.ALTERNATION);
      return e.accept(r), d(r.result, n);
    }

    function m(t, e, n, r) {
      var i = new f(t, n);
      e.accept(i);
      var o = i.result,
          a = new h(e, t, n).startWalking();
      return d([new p.Flat({
        definition: o
      }), new p.Flat({
        definition: a
      })], r);
    }

    function y(t, e) {
      return void 0 !== a.find(t, function (t) {
        return e.length === t.length && a.every(e, function (e, n) {
          return e === t[n] || t[n].categoryMatchesMap[e.tokenTypeIdx];
        });
      });
    }

    function T(t) {
      return a.every(t, function (t) {
        return a.every(t, function (t) {
          return a.every(t, function (t) {
            return a.isEmpty(t.categoryMatches);
          });
        });
      });
    }

    e.lookAheadSequenceFromAlternatives = d, e.getLookaheadPathsForOr = E, e.getLookaheadPathsForOptionalProd = m, e.containsPath = y, e.isStrictPrefixOfPath = function (t, e) {
      return t.length < e.length && a.every(t, function (t, n) {
        var r = e[n];
        return t === r || r.categoryMatchesMap[t.tokenTypeIdx];
      });
    }, e.areTokenCategoriesNotUsed = T;
  }, function (t, e, n) {
    "use strict";

    var _r6,
        i = this && this.__extends || (_r6 = function r(t, e) {
      return (_r6 = _Object$setPrototypeOf || {
        __proto__: []
      } instanceof Array && function (t, e) {
        t.__proto__ = e;
      } || function (t, e) {
        for (var n in e) {
          e.hasOwnProperty(n) && (t[n] = e[n]);
        }
      })(t, e);
    }, function (t, e) {
      function n() {
        this.constructor = t;
      }

      _r6(t, e), t.prototype = null === e ? _Object$create(e) : (n.prototype = e.prototype, new n());
    });

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var o = n(14),
        a = n(0),
        s = n(2),
        u = n(21),
        c = n(1),
        p = function (t) {
      function e(e, n) {
        var r = t.call(this) || this;
        return r.topProd = e, r.path = n, r.possibleTokTypes = [], r.nextProductionName = "", r.nextProductionOccurrence = 0, r.found = !1, r.isAtEndOfPath = !1, r;
      }

      return i(e, t), e.prototype.startWalking = function () {
        if (this.found = !1, this.path.ruleStack[0] !== this.topProd.name) throw Error("The path does not start with the walker's top Rule!");
        return this.ruleStack = a.cloneArr(this.path.ruleStack).reverse(), this.occurrenceStack = a.cloneArr(this.path.occurrenceStack).reverse(), this.ruleStack.pop(), this.occurrenceStack.pop(), this.updateExpectedNext(), this.walk(this.topProd), this.possibleTokTypes;
      }, e.prototype.walk = function (e, n) {
        void 0 === n && (n = []), this.found || t.prototype.walk.call(this, e, n);
      }, e.prototype.walkProdRef = function (t, e, n) {
        if (t.referencedRule.name === this.nextProductionName && t.idx === this.nextProductionOccurrence) {
          var r = e.concat(n);
          this.updateExpectedNext(), this.walk(t.referencedRule, r);
        }
      }, e.prototype.updateExpectedNext = function () {
        a.isEmpty(this.ruleStack) ? (this.nextProductionName = "", this.nextProductionOccurrence = 0, this.isAtEndOfPath = !0) : (this.nextProductionName = this.ruleStack.pop(), this.nextProductionOccurrence = this.occurrenceStack.pop());
      }, e;
    }(o.RestWalker);

    e.AbstractNextPossibleTokensWalker = p;

    var l = function (t) {
      function e(e, n) {
        var r = t.call(this, e, n) || this;
        return r.path = n, r.nextTerminalName = "", r.nextTerminalOccurrence = 0, r.nextTerminalName = s.tokenName(r.path.lastTok), r.nextTerminalOccurrence = r.path.lastTokOccurrence, r;
      }

      return i(e, t), e.prototype.walkTerminal = function (t, e, n) {
        if (this.isAtEndOfPath && s.tokenName(t.terminalType) === this.nextTerminalName && t.idx === this.nextTerminalOccurrence && !this.found) {
          var r = e.concat(n),
              i = new c.Flat({
            definition: r
          });
          this.possibleTokTypes = u.first(i), this.found = !0;
        }
      }, e;
    }(p);

    e.NextAfterTokenWalker = l;

    var h = function (t) {
      function e(e, n) {
        var r = t.call(this) || this;
        return r.topRule = e, r.occurrence = n, r.result = {
          token: void 0,
          occurrence: void 0,
          isEndOfRule: void 0
        }, r;
      }

      return i(e, t), e.prototype.startWalking = function () {
        return this.walk(this.topRule), this.result;
      }, e;
    }(o.RestWalker);

    e.AbstractNextTerminalAfterProductionWalker = h;

    var f = function (t) {
      function e() {
        return null !== t && t.apply(this, arguments) || this;
      }

      return i(e, t), e.prototype.walkMany = function (e, n, r) {
        if (e.idx === this.occurrence) {
          var i = a.first(n.concat(r));
          this.result.isEndOfRule = void 0 === i, i instanceof c.Terminal && (this.result.token = i.terminalType, this.result.occurrence = i.idx);
        } else t.prototype.walkMany.call(this, e, n, r);
      }, e;
    }(h);

    e.NextTerminalAfterManyWalker = f;

    var d = function (t) {
      function e() {
        return null !== t && t.apply(this, arguments) || this;
      }

      return i(e, t), e.prototype.walkManySep = function (e, n, r) {
        if (e.idx === this.occurrence) {
          var i = a.first(n.concat(r));
          this.result.isEndOfRule = void 0 === i, i instanceof c.Terminal && (this.result.token = i.terminalType, this.result.occurrence = i.idx);
        } else t.prototype.walkManySep.call(this, e, n, r);
      }, e;
    }(h);

    e.NextTerminalAfterManySepWalker = d;

    var E = function (t) {
      function e() {
        return null !== t && t.apply(this, arguments) || this;
      }

      return i(e, t), e.prototype.walkAtLeastOne = function (e, n, r) {
        if (e.idx === this.occurrence) {
          var i = a.first(n.concat(r));
          this.result.isEndOfRule = void 0 === i, i instanceof c.Terminal && (this.result.token = i.terminalType, this.result.occurrence = i.idx);
        } else t.prototype.walkAtLeastOne.call(this, e, n, r);
      }, e;
    }(h);

    e.NextTerminalAfterAtLeastOneWalker = E;

    var m = function (t) {
      function e() {
        return null !== t && t.apply(this, arguments) || this;
      }

      return i(e, t), e.prototype.walkAtLeastOneSep = function (e, n, r) {
        if (e.idx === this.occurrence) {
          var i = a.first(n.concat(r));
          this.result.isEndOfRule = void 0 === i, i instanceof c.Terminal && (this.result.token = i.terminalType, this.result.occurrence = i.idx);
        } else t.prototype.walkAtLeastOneSep.call(this, e, n, r);
      }, e;
    }(h);

    function y(t, e, n, r) {
      var i = a.cloneArr(n);
      i.push(t.name);
      var o = a.cloneArr(r);
      return o.push(1), {
        idx: e,
        def: t.definition,
        ruleStack: i,
        occurrenceStack: o
      };
    }

    e.NextTerminalAfterAtLeastOneSepWalker = m, e.possiblePathsFrom = function t(e, n, r) {
      void 0 === r && (r = []), r = a.cloneArr(r);
      var i = [],
          o = 0;

      function s(s) {
        var u = t(s.concat(a.drop(e, o + 1)), n, r);
        return i.concat(u);
      }

      for (; r.length < n && o < e.length;) {
        var u = e[o];
        if (u instanceof c.Flat) return s(u.definition);
        if (u instanceof c.NonTerminal) return s(u.definition);
        if (u instanceof c.Option) i = s(u.definition);else {
          if (u instanceof c.RepetitionMandatory) return s(p = u.definition.concat([new c.Repetition({
            definition: u.definition
          })]));
          if (u instanceof c.RepetitionMandatoryWithSeparator) return s(p = [new c.Flat({
            definition: u.definition
          }), new c.Repetition({
            definition: [new c.Terminal({
              terminalType: u.separator
            })].concat(u.definition)
          })]);

          if (u instanceof c.RepetitionWithSeparator) {
            var p = u.definition.concat([new c.Repetition({
              definition: [new c.Terminal({
                terminalType: u.separator
              })].concat(u.definition)
            })]);
            i = s(p);
          } else if (u instanceof c.Repetition) p = u.definition.concat([new c.Repetition({
            definition: u.definition
          })]), i = s(p);else {
            if (u instanceof c.Alternation) return a.forEach(u.definition, function (t) {
              i = s(t.definition);
            }), i;
            if (!(u instanceof c.Terminal)) throw Error("non exhaustive match");
            r.push(u.terminalType);
          }
        }
        o++;
      }

      return i.push({
        partialPath: r,
        suffixDef: a.drop(e, o)
      }), i;
    }, e.nextPossibleTokensAfter = function (t, e, n, r) {
      var i = ["EXIT_NONE_TERMINAL"],
          o = !1,
          s = e.length,
          u = s - r - 1,
          p = [],
          l = [];

      for (l.push({
        idx: -1,
        def: t,
        ruleStack: [],
        occurrenceStack: []
      }); !a.isEmpty(l);) {
        var h = l.pop();

        if ("EXIT_ALTERNATIVE" !== h) {
          var f = h.def,
              d = h.idx,
              E = h.ruleStack,
              m = h.occurrenceStack;

          if (!a.isEmpty(f)) {
            var T = f[0];

            if ("EXIT_NONE_TERMINAL" === T) {
              var v = {
                idx: d,
                def: a.drop(f),
                ruleStack: a.dropRight(E),
                occurrenceStack: a.dropRight(m)
              };
              l.push(v);
            } else if (T instanceof c.Terminal) {
              if (d < s - 1) {
                var g = d + 1;
                n(e[g], T.terminalType) && (v = {
                  idx: g,
                  def: a.drop(f),
                  ruleStack: E,
                  occurrenceStack: m
                }, l.push(v));
              } else {
                if (d !== s - 1) throw Error("non exhaustive match");
                p.push({
                  nextTokenType: T.terminalType,
                  nextTokenOccurrence: T.idx,
                  ruleStack: E,
                  occurrenceStack: m
                }), o = !0;
              }
            } else if (T instanceof c.NonTerminal) {
              var _ = a.cloneArr(E);

              _.push(T.nonTerminalName);

              var R = a.cloneArr(m);
              R.push(T.idx), v = {
                idx: d,
                def: T.definition.concat(i, a.drop(f)),
                ruleStack: _,
                occurrenceStack: R
              }, l.push(v);
            } else if (T instanceof c.Option) {
              var A = {
                idx: d,
                def: a.drop(f),
                ruleStack: E,
                occurrenceStack: m
              };
              l.push(A), l.push("EXIT_ALTERNATIVE");
              var N = {
                idx: d,
                def: T.definition.concat(a.drop(f)),
                ruleStack: E,
                occurrenceStack: m
              };
              l.push(N);
            } else if (T instanceof c.RepetitionMandatory) {
              var O = new c.Repetition({
                definition: T.definition,
                idx: T.idx
              });
              v = {
                idx: d,
                def: T.definition.concat([O], a.drop(f)),
                ruleStack: E,
                occurrenceStack: m
              }, l.push(v);
            } else if (T instanceof c.RepetitionMandatoryWithSeparator) {
              var S = new c.Terminal({
                terminalType: T.separator
              });
              O = new c.Repetition({
                definition: [S].concat(T.definition),
                idx: T.idx
              }), v = {
                idx: d,
                def: T.definition.concat([O], a.drop(f)),
                ruleStack: E,
                occurrenceStack: m
              }, l.push(v);
            } else if (T instanceof c.RepetitionWithSeparator) {
              A = {
                idx: d,
                def: a.drop(f),
                ruleStack: E,
                occurrenceStack: m
              }, l.push(A), l.push("EXIT_ALTERNATIVE"), S = new c.Terminal({
                terminalType: T.separator
              });
              var I = new c.Repetition({
                definition: [S].concat(T.definition),
                idx: T.idx
              });
              N = {
                idx: d,
                def: T.definition.concat([I], a.drop(f)),
                ruleStack: E,
                occurrenceStack: m
              }, l.push(N);
            } else if (T instanceof c.Repetition) A = {
              idx: d,
              def: a.drop(f),
              ruleStack: E,
              occurrenceStack: m
            }, l.push(A), l.push("EXIT_ALTERNATIVE"), I = new c.Repetition({
              definition: T.definition,
              idx: T.idx
            }), N = {
              idx: d,
              def: T.definition.concat([I], a.drop(f)),
              ruleStack: E,
              occurrenceStack: m
            }, l.push(N);else if (T instanceof c.Alternation) for (var L = T.definition.length - 1; L >= 0; L--) {
              var k = {
                idx: d,
                def: T.definition[L].definition.concat(a.drop(f)),
                ruleStack: E,
                occurrenceStack: m
              };
              l.push(k), l.push("EXIT_ALTERNATIVE");
            } else if (T instanceof c.Flat) l.push({
              idx: d,
              def: T.definition.concat(a.drop(f)),
              ruleStack: E,
              occurrenceStack: m
            });else {
              if (!(T instanceof c.Rule)) throw Error("non exhaustive match");
              l.push(y(T, d, E, m));
            }
          }
        } else o && a.last(l).idx <= u && l.pop();
      }

      return p;
    };
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(0),
        i = n(1),
        o = function () {
      function t() {}

      return t.prototype.walk = function (t, e) {
        var n = this;
        void 0 === e && (e = []), r.forEach(t.definition, function (o, a) {
          var s = r.drop(t.definition, a + 1);
          if (o instanceof i.NonTerminal) n.walkProdRef(o, s, e);else if (o instanceof i.Terminal) n.walkTerminal(o, s, e);else if (o instanceof i.Flat) n.walkFlat(o, s, e);else if (o instanceof i.Option) n.walkOption(o, s, e);else if (o instanceof i.RepetitionMandatory) n.walkAtLeastOne(o, s, e);else if (o instanceof i.RepetitionMandatoryWithSeparator) n.walkAtLeastOneSep(o, s, e);else if (o instanceof i.RepetitionWithSeparator) n.walkManySep(o, s, e);else if (o instanceof i.Repetition) n.walkMany(o, s, e);else {
            if (!(o instanceof i.Alternation)) throw Error("non exhaustive match");
            n.walkOr(o, s, e);
          }
        });
      }, t.prototype.walkTerminal = function (t, e, n) {}, t.prototype.walkProdRef = function (t, e, n) {}, t.prototype.walkFlat = function (t, e, n) {
        var r = e.concat(n);
        this.walk(t, r);
      }, t.prototype.walkOption = function (t, e, n) {
        var r = e.concat(n);
        this.walk(t, r);
      }, t.prototype.walkAtLeastOne = function (t, e, n) {
        var r = [new i.Option({
          definition: t.definition
        })].concat(e, n);
        this.walk(t, r);
      }, t.prototype.walkAtLeastOneSep = function (t, e, n) {
        var r = a(t, e, n);
        this.walk(t, r);
      }, t.prototype.walkMany = function (t, e, n) {
        var r = [new i.Option({
          definition: t.definition
        })].concat(e, n);
        this.walk(t, r);
      }, t.prototype.walkManySep = function (t, e, n) {
        var r = a(t, e, n);
        this.walk(t, r);
      }, t.prototype.walkOr = function (t, e, n) {
        var o = this,
            a = e.concat(n);
        r.forEach(t.definition, function (t) {
          var e = new i.Flat({
            definition: [t]
          });
          o.walk(e, a);
        });
      }, t;
    }();

    function a(t, e, n) {
      return [new i.Option({
        definition: [new i.Terminal({
          terminalType: t.separator
        })].concat(t.definition)
      })].concat(e, n);
    }

    e.RestWalker = o;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(27),
        i = n(0),
        o = n(7),
        a = n(20);
    !function (t) {
      t[t.MISSING_PATTERN = 0] = "MISSING_PATTERN", t[t.INVALID_PATTERN = 1] = "INVALID_PATTERN", t[t.EOI_ANCHOR_FOUND = 2] = "EOI_ANCHOR_FOUND", t[t.UNSUPPORTED_FLAGS_FOUND = 3] = "UNSUPPORTED_FLAGS_FOUND", t[t.DUPLICATE_PATTERNS_FOUND = 4] = "DUPLICATE_PATTERNS_FOUND", t[t.INVALID_GROUP_TYPE_FOUND = 5] = "INVALID_GROUP_TYPE_FOUND", t[t.PUSH_MODE_DOES_NOT_EXIST = 6] = "PUSH_MODE_DOES_NOT_EXIST", t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE = 7] = "MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE", t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY = 8] = "MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY", t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST = 9] = "MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST", t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED = 10] = "LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED", t[t.SOI_ANCHOR_FOUND = 11] = "SOI_ANCHOR_FOUND", t[t.EMPTY_MATCH_PATTERN = 12] = "EMPTY_MATCH_PATTERN", t[t.NO_LINE_BREAKS_FLAGS = 13] = "NO_LINE_BREAKS_FLAGS", t[t.UNREACHABLE_PATTERN = 14] = "UNREACHABLE_PATTERN", t[t.IDENTIFY_TERMINATOR = 15] = "IDENTIFY_TERMINATOR", t[t.CUSTOM_LINE_BREAK = 16] = "CUSTOM_LINE_BREAK";
    }(e.LexerDefinitionErrorType || (e.LexerDefinitionErrorType = {}));
    var s = {
      deferDefinitionErrorsHandling: !1,
      positionTracking: "full",
      lineTerminatorsPattern: /\n|\r\n?/g,
      lineTerminatorCharacters: ["\n", "\r"],
      ensureOptimizations: !1,
      safeMode: !1,
      errorMessageProvider: a.defaultLexerErrorProvider
    };

    _Object$freeze(s);

    var u = function () {
      function t(t, e) {
        var n = this;
        if (void 0 === e && (e = s), this.lexerDefinition = t, this.lexerDefinitionErrors = [], this.lexerDefinitionWarning = [], this.patternIdxToConfig = {}, this.charCodeToPatternIdxToConfig = {}, this.modes = [], this.emptyGroups = {}, this.config = void 0, this.trackStartLines = !0, this.trackEndLines = !0, this.hasCustom = !1, this.canModeBeOptimized = {}, "boolean" == typeof e) throw Error("The second argument to the Lexer constructor is now an ILexerConfig Object.\na boolean 2nd argument is no longer supported");
        if (this.config = i.merge(s, e), this.config.lineTerminatorsPattern === s.lineTerminatorsPattern) this.config.lineTerminatorsPattern = r.LineTerminatorOptimizedTester;else if (this.config.lineTerminatorCharacters === s.lineTerminatorCharacters) throw Error("Error: Missing <lineTerminatorCharacters> property on the Lexer config.\n\tFor details See: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS");
        if (e.safeMode && e.ensureOptimizations) throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');
        this.trackStartLines = /full|onlyStart/i.test(this.config.positionTracking), this.trackEndLines = /full/i.test(this.config.positionTracking);
        var a,
            u = !0;
        i.isArray(t) ? ((a = {
          modes: {}
        }).modes[r.DEFAULT_MODE] = i.cloneArr(t), a[r.DEFAULT_MODE] = r.DEFAULT_MODE) : (u = !1, a = i.cloneObj(t)), this.lexerDefinitionErrors = this.lexerDefinitionErrors.concat(r.performRuntimeChecks(a, this.trackStartLines, this.config.lineTerminatorCharacters)), this.lexerDefinitionWarning = this.lexerDefinitionWarning.concat(r.performWarningRuntimeChecks(a, this.trackStartLines, this.config.lineTerminatorCharacters)), a.modes = a.modes ? a.modes : {}, i.forEach(a.modes, function (t, e) {
          a.modes[e] = i.reject(t, function (t) {
            return i.isUndefined(t);
          });
        });
        var c = i.keys(a.modes);

        if (i.forEach(a.modes, function (t, a) {
          if (n.modes.push(a), n.lexerDefinitionErrors = n.lexerDefinitionErrors.concat(r.validatePatterns(t, c)), i.isEmpty(n.lexerDefinitionErrors)) {
            o.augmentTokenTypes(t);
            var s = r.analyzeTokenTypes(t, {
              lineTerminatorCharacters: n.config.lineTerminatorCharacters,
              positionTracking: e.positionTracking,
              ensureOptimizations: e.ensureOptimizations,
              safeMode: e.safeMode
            });
            n.patternIdxToConfig[a] = s.patternIdxToConfig, n.charCodeToPatternIdxToConfig[a] = s.charCodeToPatternIdxToConfig, n.emptyGroups = i.merge(n.emptyGroups, s.emptyGroups), n.hasCustom = s.hasCustom || n.hasCustom, n.canModeBeOptimized[a] = s.canBeOptimized;
          }
        }), this.defaultMode = a.defaultMode, !i.isEmpty(this.lexerDefinitionErrors) && !this.config.deferDefinitionErrorsHandling) {
          var p = i.map(this.lexerDefinitionErrors, function (t) {
            return t.message;
          }).join("-----------------------\n");
          throw new Error("Errors detected in definition of Lexer:\n" + p);
        }

        if (i.forEach(this.lexerDefinitionWarning, function (t) {
          i.PRINT_WARNING(t.message);
        }), r.SUPPORT_STICKY ? (this.chopInput = i.IDENTITY, this.match = this.matchWithTest) : (this.updateLastIndex = i.NOOP, this.match = this.matchWithExec), u && (this.handleModes = i.NOOP), !1 === this.trackStartLines && (this.computeNewColumn = i.IDENTITY), !1 === this.trackEndLines && (this.updateTokenEndLineColumnLocation = i.NOOP), /full/i.test(this.config.positionTracking)) this.createTokenInstance = this.createFullToken;else if (/onlyStart/i.test(this.config.positionTracking)) this.createTokenInstance = this.createStartOnlyToken;else {
          if (!/onlyOffset/i.test(this.config.positionTracking)) throw Error('Invalid <positionTracking> config option: "' + this.config.positionTracking + '"');
          this.createTokenInstance = this.createOffsetOnlyToken;
        }
        this.hasCustom ? this.addToken = this.addTokenUsingPush : this.addToken = this.addTokenUsingMemberAccess;
        var l = i.reduce(this.canModeBeOptimized, function (t, e, n) {
          return !1 === e && t.push(n), t;
        }, []);
        if (e.ensureOptimizations && !i.isEmpty(l)) throw Error("Lexer Modes: < " + l.join(", ") + ' > cannot be optimized.\n\t Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\n\t Or inspect the console log for details on how to resolve these issues.');
      }

      return t.prototype.tokenize = function (t, e) {
        if (void 0 === e && (e = this.defaultMode), !i.isEmpty(this.lexerDefinitionErrors)) {
          var n = i.map(this.lexerDefinitionErrors, function (t) {
            return t.message;
          }).join("-----------------------\n");
          throw new Error("Unable to Tokenize because Errors detected in definition of Lexer:\n" + n);
        }

        return this.tokenizeInternal(t, e);
      }, t.prototype.tokenizeInternal = function (t, e) {
        var n,
            o,
            a,
            s,
            u,
            c,
            p,
            l,
            h,
            f,
            d,
            E,
            m = this,
            y = t,
            T = y.length,
            v = 0,
            g = 0,
            _ = this.hasCustom ? 0 : Math.floor(t.length / 10),
            R = new Array(_),
            A = [],
            N = this.trackStartLines ? 1 : void 0,
            O = this.trackStartLines ? 1 : void 0,
            S = r.cloneEmptyGroups(this.emptyGroups),
            I = this.trackStartLines,
            L = this.config.lineTerminatorsPattern,
            k = 0,
            P = [],
            x = [],
            C = [],
            M = [];

        _Object$freeze(M);

        var F,
            b = void 0,
            D = function D(t) {
          if (1 === C.length && void 0 === t.tokenType.PUSH_MODE) {
            var e = m.config.errorMessageProvider.buildUnableToPopLexerModeMessage(t);
            A.push({
              offset: t.startOffset,
              line: void 0 !== t.startLine ? t.startLine : void 0,
              column: void 0 !== t.startColumn ? t.startColumn : void 0,
              length: t.image.length,
              message: e
            });
          } else {
            C.pop();
            var n = i.last(C);
            P = m.patternIdxToConfig[n], x = m.charCodeToPatternIdxToConfig[n], k = P.length;
            var r = m.canModeBeOptimized[n] && !1 === m.config.safeMode;
            b = x && r ? function (t) {
              var e = x[t];
              return void 0 === e ? M : e;
            } : function () {
              return P;
            };
          }
        };

        function w(t) {
          C.push(t), x = this.charCodeToPatternIdxToConfig[t], P = this.patternIdxToConfig[t], k = P.length, k = P.length;
          var e = this.canModeBeOptimized[t] && !1 === this.config.safeMode;
          b = x && e ? function (t) {
            var e = x[t];
            return void 0 === e ? M : e;
          } : function () {
            return P;
          };
        }

        for (w.call(this, e); v < T;) {
          u = null;
          var U = y.charCodeAt(v),
              G = b(U),
              B = G.length;

          for (n = 0; n < B; n++) {
            var K = (F = G[n]).pattern;

            if (!1 !== (Z = F["short"]) ? U === Z && (u = K) : !0 === F.isCustom ? u = null !== (E = K.exec(y, v, R, S)) ? E[0] : E : (this.updateLastIndex(K, v), u = this.match(K, t, v)), null !== u) {
              if (void 0 !== (s = F.longerAlt)) {
                var W = P[s],
                    j = W.pattern;
                !0 === W.isCustom ? a = null !== (E = j.exec(y, v, R, S)) ? E[0] : E : (this.updateLastIndex(j, v), a = this.match(j, t, v)), a && a.length > u.length && (u = a, F = W);
              }

              break;
            }
          }

          if (null !== u) {
            if (c = u.length, void 0 !== (p = F.group) && (l = F.tokenTypeIdx, h = this.createTokenInstance(u, v, l, F.tokenType, N, O, c), !1 === p ? g = this.addToken(R, g, h) : S[p].push(h)), t = this.chopInput(t, c), v += c, O = this.computeNewColumn(O, c), !0 === I && !0 === F.canLineTerminator) {
              var V = 0,
                  Y = void 0,
                  H = void 0;
              L.lastIndex = 0;

              do {
                !0 === (Y = L.test(u)) && (H = L.lastIndex - 1, V++);
              } while (Y);

              0 !== V && (N += V, O = c - H, this.updateTokenEndLineColumnLocation(h, p, H, V, N, O, c));
            }

            this.handleModes(F, D, w, h);
          } else {
            for (var X = v, z = N, q = O, $ = !1; !$ && v < T;) {
              for (y.charCodeAt(v), t = this.chopInput(t, 1), v++, o = 0; o < k; o++) {
                var Z,
                    Q = P[o];
                K = Q.pattern;
                if (!1 !== (Z = Q["short"]) ? y.charCodeAt(v) === Z && ($ = !0) : !0 === Q.isCustom ? $ = null !== K.exec(y, v, R, S) : (this.updateLastIndex(K, v), $ = null !== K.exec(t)), !0 === $) break;
              }
            }

            f = v - X, d = this.config.errorMessageProvider.buildUnexpectedCharactersMessage(y, X, f, z, q), A.push({
              offset: X,
              line: z,
              column: q,
              length: f,
              message: d
            });
          }
        }

        return this.hasCustom || (R.length = g), {
          tokens: R,
          groups: S,
          errors: A
        };
      }, t.prototype.handleModes = function (t, e, n, r) {
        if (!0 === t.pop) {
          var i = t.push;
          e(r), void 0 !== i && n.call(this, i);
        } else void 0 !== t.push && n.call(this, t.push);
      }, t.prototype.chopInput = function (t, e) {
        return t.substring(e);
      }, t.prototype.updateLastIndex = function (t, e) {
        t.lastIndex = e;
      }, t.prototype.updateTokenEndLineColumnLocation = function (t, e, n, r, i, o, a) {
        var s, u;
        void 0 !== e && (u = (s = n === a - 1) ? -1 : 0, 1 === r && !0 === s || (t.endLine = i + u, t.endColumn = o - 1 - u));
      }, t.prototype.computeNewColumn = function (t, e) {
        return t + e;
      }, t.prototype.createTokenInstance = function () {
        for (var t = [], e = 0; e < arguments.length; e++) {
          t[e] = arguments[e];
        }

        return null;
      }, t.prototype.createOffsetOnlyToken = function (t, e, n, r) {
        return {
          image: t,
          startOffset: e,
          tokenTypeIdx: n,
          tokenType: r
        };
      }, t.prototype.createStartOnlyToken = function (t, e, n, r, i, o) {
        return {
          image: t,
          startOffset: e,
          startLine: i,
          startColumn: o,
          tokenTypeIdx: n,
          tokenType: r
        };
      }, t.prototype.createFullToken = function (t, e, n, r, i, o, a) {
        return {
          image: t,
          startOffset: e,
          endOffset: e + a - 1,
          startLine: i,
          endLine: i,
          startColumn: o,
          endColumn: o + a - 1,
          tokenTypeIdx: n,
          tokenType: r
        };
      }, t.prototype.addToken = function (t, e, n) {
        return 666;
      }, t.prototype.addTokenUsingPush = function (t, e, n) {
        return t.push(n), e;
      }, t.prototype.addTokenUsingMemberAccess = function (t, e, n) {
        return t[e] = n, ++e;
      }, t.prototype.match = function (t, e, n) {
        return null;
      }, t.prototype.matchWithTest = function (t, e, n) {
        return !0 === t.test(e) ? e.substring(n, t.lastIndex) : null;
      }, t.prototype.matchWithExec = function (t, e) {
        var n = t.exec(e);
        return null !== n ? n[0] : n;
      }, t.SKIPPED = "This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.", t.NA = /NOT_APPLICABLE/, t;
    }();

    e.Lexer = u;
  }, function (t, e, n) {
    "use strict";

    var _r7,
        i = this && this.__extends || (_r7 = function r(t, e) {
      return (_r7 = _Object$setPrototypeOf || {
        __proto__: []
      } instanceof Array && function (t, e) {
        t.__proto__ = e;
      } || function (t, e) {
        for (var n in e) {
          e.hasOwnProperty(n) && (t[n] = e[n]);
        }
      })(t, e);
    }, function (t, e) {
      function n() {
        this.constructor = t;
      }

      _r7(t, e), t.prototype = null === e ? _Object$create(e) : (n.prototype = e.prototype, new n());
    });

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var o = n(0),
        a = n(4),
        s = n(9),
        u = n(1),
        c = n(5);
    e.addTerminalToCst = function (t, e, n) {
      void 0 === t.children[n] ? t.children[n] = [e] : t.children[n].push(e);
    }, e.addNoneTerminalToCst = function (t, e, n) {
      void 0 === t.children[e] ? t.children[e] = [n] : t.children[e].push(n);
    };

    var p = function (t) {
      function e(e) {
        var n = t.call(this) || this;
        return n.result = [], n.ruleIdx = e, n;
      }

      return i(e, t), e.prototype.collectNamedDSLMethod = function (t, e, n) {
        if (!o.isUndefined(t.name)) {
          var r = void 0;
          if (t instanceof u.Option || t instanceof u.Repetition || t instanceof u.RepetitionMandatory || t instanceof u.Alternation) r = new e({
            definition: t.definition,
            idx: t.idx
          });else {
            if (!(t instanceof u.RepetitionMandatoryWithSeparator || t instanceof u.RepetitionWithSeparator)) throw Error("non exhaustive match");
            r = new e({
              definition: t.definition,
              idx: t.idx,
              separator: t.separator
            });
          }
          var i = [r],
              a = s.getKeyForAutomaticLookahead(this.ruleIdx, n, t.idx);
          this.result.push({
            def: i,
            key: a,
            name: t.name,
            orgProd: t
          });
        }
      }, e.prototype.visitOption = function (t) {
        this.collectNamedDSLMethod(t, u.Option, s.OPTION_IDX);
      }, e.prototype.visitRepetition = function (t) {
        this.collectNamedDSLMethod(t, u.Repetition, s.MANY_IDX);
      }, e.prototype.visitRepetitionMandatory = function (t) {
        this.collectNamedDSLMethod(t, u.RepetitionMandatory, s.AT_LEAST_ONE_IDX);
      }, e.prototype.visitRepetitionMandatoryWithSeparator = function (t) {
        this.collectNamedDSLMethod(t, u.RepetitionMandatoryWithSeparator, s.AT_LEAST_ONE_SEP_IDX);
      }, e.prototype.visitRepetitionWithSeparator = function (t) {
        this.collectNamedDSLMethod(t, u.RepetitionWithSeparator, s.MANY_SEP_IDX);
      }, e.prototype.visitAlternation = function (t) {
        var e = this;
        this.collectNamedDSLMethod(t, u.Alternation, s.OR_IDX);
        var n = t.definition.length > 1;
        o.forEach(t.definition, function (r, i) {
          if (!o.isUndefined(r.name)) {
            var a = r.definition;
            a = n ? [new u.Option({
              definition: r.definition
            })] : r.definition;
            var c = s.getKeyForAltIndex(e.ruleIdx, s.OR_IDX, t.idx, i);
            e.result.push({
              def: a,
              key: c,
              name: r.name,
              orgProd: r
            });
          }
        });
      }, e;
    }(c.GAstVisitor);

    e.NamedDSLMethodsCollectorVisitor = p, e.analyzeCst = function (t, e) {
      var n = {
        dictDef: new a.HashTable(),
        allRuleNames: []
      };
      return o.forEach(t, function (t) {
        var r = e.get(t.name);
        n.allRuleNames.push(t.name);
        var i = new p(r);
        t.accept(i), o.forEach(i.result, function (e) {
          e.def, e.key;
          var r = e.name;
          n.allRuleNames.push(t.name + r);
        });
      }), n;
    };
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    }), e.VERSION = "4.6.0";
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(3),
        i = n(15),
        o = n(2),
        a = n(6),
        s = n(17),
        u = n(10),
        c = n(39),
        p = n(5),
        l = n(1),
        h = n(24),
        f = n(40),
        d = n(20),
        E = {};
    E.VERSION = s.VERSION, E.Parser = r.Parser, E.CstParser = r.CstParser, E.EmbeddedActionsParser = r.EmbeddedActionsParser;
    E.ParserDefinitionErrorType = r.ParserDefinitionErrorType, E.Lexer = i.Lexer, E.LexerDefinitionErrorType = i.LexerDefinitionErrorType, E.EOF = o.EOF, E.tokenName = o.tokenName, E.tokenLabel = o.tokenLabel, E.tokenMatcher = o.tokenMatcher, E.createToken = o.createToken, E.createTokenInstance = o.createTokenInstance, E.EMPTY_ALT = r.EMPTY_ALT, E.defaultParserErrorProvider = u.defaultParserErrorProvider, E.isRecognitionException = a.isRecognitionException, E.EarlyExitException = a.EarlyExitException, E.MismatchedTokenException = a.MismatchedTokenException, E.NotAllInputParsedException = a.NotAllInputParsedException, E.NoViableAltException = a.NoViableAltException, E.defaultLexerErrorProvider = d.defaultLexerErrorProvider, E.Flat = l.Flat, E.Repetition = l.Repetition, E.RepetitionWithSeparator = l.RepetitionWithSeparator, E.RepetitionMandatory = l.RepetitionMandatory, E.RepetitionMandatoryWithSeparator = l.RepetitionMandatoryWithSeparator, E.Option = l.Option, E.Alternation = l.Alternation, E.NonTerminal = l.NonTerminal, E.Terminal = l.Terminal, E.Rule = l.Rule, E.GAstVisitor = p.GAstVisitor, E.serializeGrammar = l.serializeGrammar, E.serializeProduction = l.serializeProduction, E.resolveGrammar = h.resolveGrammar, E.defaultGrammarResolverErrorProvider = u.defaultGrammarResolverErrorProvider, E.validateGrammar = h.validateGrammar, E.defaultGrammarValidatorErrorProvider = u.defaultGrammarValidatorErrorProvider, E.assignOccurrenceIndices = h.assignOccurrenceIndices, E.clearCache = function () {
      console.warn("The clearCache function was 'soft' removed from the Chevrotain API.\n\t It performs no action other than printing this message.\n\t Please avoid using it as it will be completely removed in the future");
    }, E.createSyntaxDiagramsCode = c.createSyntaxDiagramsCode, E.generateParserFactory = f.generateParserFactory, E.generateParserModule = f.generateParserModule, t.exports = E;
  }, function (t, e, n) {
    var r, i, o;
    "undefined" != typeof self && self, i = [], void 0 === (o = "function" == typeof (r = function r() {
      function t() {}

      t.prototype.saveState = function () {
        return {
          idx: this.idx,
          input: this.input,
          groupIdx: this.groupIdx
        };
      }, t.prototype.restoreState = function (t) {
        this.idx = t.idx, this.input = t.input, this.groupIdx = t.groupIdx;
      }, t.prototype.pattern = function (t) {
        this.idx = 0, this.input = t, this.groupIdx = 0, this.consumeChar("/");
        var e = this.disjunction();
        this.consumeChar("/");

        for (var n = {
          type: "Flags",
          global: !1,
          ignoreCase: !1,
          multiLine: !1,
          unicode: !1,
          sticky: !1
        }; this.isRegExpFlag();) {
          switch (this.popChar()) {
            case "g":
              s(n, "global");
              break;

            case "i":
              s(n, "ignoreCase");
              break;

            case "m":
              s(n, "multiLine");
              break;

            case "u":
              s(n, "unicode");
              break;

            case "y":
              s(n, "sticky");
          }
        }

        if (this.idx !== this.input.length) throw Error("Redundant input: " + this.input.substring(this.idx));
        return {
          type: "Pattern",
          flags: n,
          value: e
        };
      }, t.prototype.disjunction = function () {
        var t = [];

        for (t.push(this.alternative()); "|" === this.peekChar();) {
          this.consumeChar("|"), t.push(this.alternative());
        }

        return {
          type: "Disjunction",
          value: t
        };
      }, t.prototype.alternative = function () {
        for (var t = []; this.isTerm();) {
          t.push(this.term());
        }

        return {
          type: "Alternative",
          value: t
        };
      }, t.prototype.term = function () {
        return this.isAssertion() ? this.assertion() : this.atom();
      }, t.prototype.assertion = function () {
        switch (this.popChar()) {
          case "^":
            return {
              type: "StartAnchor"
            };

          case "$":
            return {
              type: "EndAnchor"
            };

          case "\\":
            switch (this.popChar()) {
              case "b":
                return {
                  type: "WordBoundary"
                };

              case "B":
                return {
                  type: "NonWordBoundary"
                };
            }

            throw Error("Invalid Assertion Escape");

          case "(":
            var t;

            switch (this.consumeChar("?"), this.popChar()) {
              case "=":
                t = "Lookahead";
                break;

              case "!":
                t = "NegativeLookahead";
            }

            u(t);
            var e = this.disjunction();
            return this.consumeChar(")"), {
              type: t,
              value: e
            };
        }

        !function () {
          throw Error("Internal Error - Should never get here!");
        }();
      }, t.prototype.quantifier = function (t) {
        var e;

        switch (this.popChar()) {
          case "*":
            e = {
              atLeast: 0,
              atMost: 1 / 0
            };
            break;

          case "+":
            e = {
              atLeast: 1,
              atMost: 1 / 0
            };
            break;

          case "?":
            e = {
              atLeast: 0,
              atMost: 1
            };
            break;

          case "{":
            var n = this.integerIncludingZero();

            switch (this.popChar()) {
              case "}":
                e = {
                  atLeast: n,
                  atMost: n
                };
                break;

              case ",":
                var r;
                this.isDigit() ? (r = this.integerIncludingZero(), e = {
                  atLeast: n,
                  atMost: r
                }) : e = {
                  atLeast: n,
                  atMost: 1 / 0
                }, this.consumeChar("}");
            }

            if (!0 === t && void 0 === e) return;
            u(e);
        }

        if (!0 !== t || void 0 !== e) return u(e), "?" === this.peekChar(0) ? (this.consumeChar("?"), e.greedy = !1) : e.greedy = !0, e.type = "Quantifier", e;
      }, t.prototype.atom = function () {
        var t;

        switch (this.peekChar()) {
          case ".":
            t = this.dotAll();
            break;

          case "\\":
            t = this.atomEscape();
            break;

          case "[":
            t = this.characterClass();
            break;

          case "(":
            t = this.group();
        }

        return void 0 === t && this.isPatternCharacter() && (t = this.patternCharacter()), u(t), this.isQuantifier() && (t.quantifier = this.quantifier()), t;
      }, t.prototype.dotAll = function () {
        return this.consumeChar("."), {
          type: "Set",
          complement: !0,
          value: [o("\n"), o("\r"), o("\u2028"), o("\u2029")]
        };
      }, t.prototype.atomEscape = function () {
        switch (this.consumeChar("\\"), this.peekChar()) {
          case "1":
          case "2":
          case "3":
          case "4":
          case "5":
          case "6":
          case "7":
          case "8":
          case "9":
            return this.decimalEscapeAtom();

          case "d":
          case "D":
          case "s":
          case "S":
          case "w":
          case "W":
            return this.characterClassEscape();

          case "f":
          case "n":
          case "r":
          case "t":
          case "v":
            return this.controlEscapeAtom();

          case "c":
            return this.controlLetterEscapeAtom();

          case "0":
            return this.nulCharacterAtom();

          case "x":
            return this.hexEscapeSequenceAtom();

          case "u":
            return this.regExpUnicodeEscapeSequenceAtom();

          default:
            return this.identityEscapeAtom();
        }
      }, t.prototype.decimalEscapeAtom = function () {
        var t = this.positiveInteger();
        return {
          type: "GroupBackReference",
          value: t
        };
      }, t.prototype.characterClassEscape = function () {
        var t,
            e = !1;

        switch (this.popChar()) {
          case "d":
            t = c;
            break;

          case "D":
            t = c, e = !0;
            break;

          case "s":
            t = l;
            break;

          case "S":
            t = l, e = !0;
            break;

          case "w":
            t = p;
            break;

          case "W":
            t = p, e = !0;
        }

        return u(t), {
          type: "Set",
          value: t,
          complement: e
        };
      }, t.prototype.controlEscapeAtom = function () {
        var t;

        switch (this.popChar()) {
          case "f":
            t = o("\f");
            break;

          case "n":
            t = o("\n");
            break;

          case "r":
            t = o("\r");
            break;

          case "t":
            t = o("\t");
            break;

          case "v":
            t = o("\v");
        }

        return u(t), {
          type: "Character",
          value: t
        };
      }, t.prototype.controlLetterEscapeAtom = function () {
        this.consumeChar("c");
        var t = this.popChar();
        if (!1 === /[a-zA-Z]/.test(t)) throw Error("Invalid ");
        var e = t.toUpperCase().charCodeAt(0) - 64;
        return {
          type: "Character",
          value: e
        };
      }, t.prototype.nulCharacterAtom = function () {
        return this.consumeChar("0"), {
          type: "Character",
          value: o("\0")
        };
      }, t.prototype.hexEscapeSequenceAtom = function () {
        return this.consumeChar("x"), this.parseHexDigits(2);
      }, t.prototype.regExpUnicodeEscapeSequenceAtom = function () {
        return this.consumeChar("u"), this.parseHexDigits(4);
      }, t.prototype.identityEscapeAtom = function () {
        var t = this.popChar();
        return {
          type: "Character",
          value: o(t)
        };
      }, t.prototype.classPatternCharacterAtom = function () {
        switch (this.peekChar()) {
          case "\n":
          case "\r":
          case "\u2028":
          case "\u2029":
          case "\\":
          case "]":
            throw Error("TBD");

          default:
            var t = this.popChar();
            return {
              type: "Character",
              value: o(t)
            };
        }
      }, t.prototype.characterClass = function () {
        var t = [],
            e = !1;

        for (this.consumeChar("["), "^" === this.peekChar(0) && (this.consumeChar("^"), e = !0); this.isClassAtom();) {
          var n = this.classAtom(),
              r = "Character" === n.type;

          if (r && this.isRangeDash()) {
            this.consumeChar("-");
            var i = this.classAtom(),
                s = "Character" === i.type;

            if (s) {
              if (i.value < n.value) throw Error("Range out of order in character class");
              t.push({
                from: n.value,
                to: i.value
              });
            } else a(n.value, t), t.push(o("-")), a(i.value, t);
          } else a(n.value, t);
        }

        return this.consumeChar("]"), {
          type: "Set",
          complement: e,
          value: t
        };
      }, t.prototype.classAtom = function () {
        switch (this.peekChar()) {
          case "]":
          case "\n":
          case "\r":
          case "\u2028":
          case "\u2029":
            throw Error("TBD");

          case "\\":
            return this.classEscape();

          default:
            return this.classPatternCharacterAtom();
        }
      }, t.prototype.classEscape = function () {
        switch (this.consumeChar("\\"), this.peekChar()) {
          case "b":
            return this.consumeChar("b"), {
              type: "Character",
              value: o("\b")
            };

          case "d":
          case "D":
          case "s":
          case "S":
          case "w":
          case "W":
            return this.characterClassEscape();

          case "f":
          case "n":
          case "r":
          case "t":
          case "v":
            return this.controlEscapeAtom();

          case "c":
            return this.controlLetterEscapeAtom();

          case "0":
            return this.nulCharacterAtom();

          case "x":
            return this.hexEscapeSequenceAtom();

          case "u":
            return this.regExpUnicodeEscapeSequenceAtom();

          default:
            return this.identityEscapeAtom();
        }
      }, t.prototype.group = function () {
        var t = !0;

        switch (this.consumeChar("("), this.peekChar(0)) {
          case "?":
            this.consumeChar("?"), this.consumeChar(":"), t = !1;
            break;

          default:
            this.groupIdx++;
        }

        var e = this.disjunction();
        this.consumeChar(")");
        var n = {
          type: "Group",
          capturing: t,
          value: e
        };
        return t && (n.idx = this.groupIdx), n;
      }, t.prototype.positiveInteger = function () {
        var t = this.popChar();
        if (!1 === i.test(t)) throw Error("Expecting a positive integer");

        for (; r.test(this.peekChar(0));) {
          t += this.popChar();
        }

        return _parseInt(t, 10);
      }, t.prototype.integerIncludingZero = function () {
        var t = this.popChar();
        if (!1 === r.test(t)) throw Error("Expecting an integer");

        for (; r.test(this.peekChar(0));) {
          t += this.popChar();
        }

        return _parseInt(t, 10);
      }, t.prototype.patternCharacter = function () {
        var t = this.popChar();

        switch (t) {
          case "\n":
          case "\r":
          case "\u2028":
          case "\u2029":
          case "^":
          case "$":
          case "\\":
          case ".":
          case "*":
          case "+":
          case "?":
          case "(":
          case ")":
          case "[":
          case "|":
            throw Error("TBD");

          default:
            return {
              type: "Character",
              value: o(t)
            };
        }
      }, t.prototype.isRegExpFlag = function () {
        switch (this.peekChar(0)) {
          case "g":
          case "i":
          case "m":
          case "u":
          case "y":
            return !0;

          default:
            return !1;
        }
      }, t.prototype.isRangeDash = function () {
        return "-" === this.peekChar() && this.isClassAtom(1);
      }, t.prototype.isDigit = function () {
        return r.test(this.peekChar(0));
      }, t.prototype.isClassAtom = function (t) {
        switch (void 0 === t && (t = 0), this.peekChar(t)) {
          case "]":
          case "\n":
          case "\r":
          case "\u2028":
          case "\u2029":
            return !1;

          default:
            return !0;
        }
      }, t.prototype.isTerm = function () {
        return this.isAtom() || this.isAssertion();
      }, t.prototype.isAtom = function () {
        if (this.isPatternCharacter()) return !0;

        switch (this.peekChar(0)) {
          case ".":
          case "\\":
          case "[":
          case "(":
            return !0;

          default:
            return !1;
        }
      }, t.prototype.isAssertion = function () {
        switch (this.peekChar(0)) {
          case "^":
          case "$":
            return !0;

          case "\\":
            switch (this.peekChar(1)) {
              case "b":
              case "B":
                return !0;

              default:
                return !1;
            }

          case "(":
            return "?" === this.peekChar(1) && ("=" === this.peekChar(2) || "!" === this.peekChar(2));

          default:
            return !1;
        }
      }, t.prototype.isQuantifier = function () {
        var t = this.saveState();

        try {
          return void 0 !== this.quantifier(!0);
        } catch (t) {
          return !1;
        } finally {
          this.restoreState(t);
        }
      }, t.prototype.isPatternCharacter = function () {
        switch (this.peekChar()) {
          case "^":
          case "$":
          case "\\":
          case ".":
          case "*":
          case "+":
          case "?":
          case "(":
          case ")":
          case "[":
          case "|":
          case "/":
          case "\n":
          case "\r":
          case "\u2028":
          case "\u2029":
            return !1;

          default:
            return !0;
        }
      }, t.prototype.parseHexDigits = function (t) {
        for (var e = "", r = 0; r < t; r++) {
          var i = this.popChar();
          if (!1 === n.test(i)) throw Error("Expecting a HexDecimal digits");
          e += i;
        }

        var o = _parseInt(e, 16);

        return {
          type: "Character",
          value: o
        };
      }, t.prototype.peekChar = function (t) {
        return void 0 === t && (t = 0), this.input[this.idx + t];
      }, t.prototype.popChar = function () {
        var t = this.peekChar(0);
        return this.consumeChar(), t;
      }, t.prototype.consumeChar = function (t) {
        if (void 0 !== t && this.input[this.idx] !== t) throw Error("Expected: '" + t + "' but found: '" + this.input[this.idx] + "' at offset: " + this.idx);
        if (this.idx >= this.input.length) throw Error("Unexpected end of input");
        this.idx++;
      };
      var e,
          n = /[0-9a-fA-F]/,
          r = /[0-9]/,
          i = /[1-9]/;

      function o(t) {
        return t.charCodeAt(0);
      }

      function a(t, e) {
        void 0 !== t.length ? t.forEach(function (t) {
          e.push(t);
        }) : e.push(t);
      }

      function s(t, e) {
        if (!0 === t[e]) throw "duplicate flag " + e;
        t[e] = !0;
      }

      function u(t) {
        if (void 0 === t) throw Error("Internal Error - Should never get here!");
      }

      var c = [];

      for (e = o("0"); e <= o("9"); e++) {
        c.push(e);
      }

      var p = [o("_")].concat(c);

      for (e = o("a"); e <= o("z"); e++) {
        p.push(e);
      }

      for (e = o("A"); e <= o("Z"); e++) {
        p.push(e);
      }

      var l = [o(" "), o("\f"), o("\n"), o("\r"), o("\t"), o("\v"), o("\t"), o(" "), o(" "), o(" "), o(" "), o(" "), o(" "), o(" "), o(" "), o(" "), o(" "), o(" "), o(" "), o(" "), o("\u2028"), o("\u2029"), o(" "), o(" "), o(" "), o("\uFEFF")];

      function h() {}

      return h.prototype.visitChildren = function (t) {
        for (var e in t) {
          var n = t[e];
          t.hasOwnProperty(e) && (void 0 !== n.type ? this.visit(n) : _Array$isArray(n) && n.forEach(function (t) {
            this.visit(t);
          }, this));
        }
      }, h.prototype.visit = function (t) {
        switch (t.type) {
          case "Pattern":
            this.visitPattern(t);
            break;

          case "Flags":
            this.visitFlags(t);
            break;

          case "Disjunction":
            this.visitDisjunction(t);
            break;

          case "Alternative":
            this.visitAlternative(t);
            break;

          case "StartAnchor":
            this.visitStartAnchor(t);
            break;

          case "EndAnchor":
            this.visitEndAnchor(t);
            break;

          case "WordBoundary":
            this.visitWordBoundary(t);
            break;

          case "NonWordBoundary":
            this.visitNonWordBoundary(t);
            break;

          case "Lookahead":
            this.visitLookahead(t);
            break;

          case "NegativeLookahead":
            this.visitNegativeLookahead(t);
            break;

          case "Character":
            this.visitCharacter(t);
            break;

          case "Set":
            this.visitSet(t);
            break;

          case "Group":
            this.visitGroup(t);
            break;

          case "GroupBackReference":
            this.visitGroupBackReference(t);
            break;

          case "Quantifier":
            this.visitQuantifier(t);
        }

        this.visitChildren(t);
      }, h.prototype.visitPattern = function (t) {}, h.prototype.visitFlags = function (t) {}, h.prototype.visitDisjunction = function (t) {}, h.prototype.visitAlternative = function (t) {}, h.prototype.visitStartAnchor = function (t) {}, h.prototype.visitEndAnchor = function (t) {}, h.prototype.visitWordBoundary = function (t) {}, h.prototype.visitNonWordBoundary = function (t) {}, h.prototype.visitLookahead = function (t) {}, h.prototype.visitNegativeLookahead = function (t) {}, h.prototype.visitCharacter = function (t) {}, h.prototype.visitSet = function (t) {}, h.prototype.visitGroup = function (t) {}, h.prototype.visitGroupBackReference = function (t) {}, h.prototype.visitQuantifier = function (t) {}, {
        RegExpParser: t,
        BaseRegExpVisitor: h,
        VERSION: "0.4.0"
      };
    }) ? r.apply(e, i) : r) || (t.exports = o);
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    }), e.defaultLexerErrorProvider = {
      buildUnableToPopLexerModeMessage: function buildUnableToPopLexerModeMessage(t) {
        return "Unable to pop Lexer Mode after encountering Token ->" + t.image + "<- The Mode Stack is empty";
      },
      buildUnexpectedCharactersMessage: function buildUnexpectedCharactersMessage(t, e, n, r, i) {
        return "unexpected character: ->" + t.charAt(e) + "<- at offset: " + e + ", skipped " + n + " characters.";
      }
    };
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(0),
        i = n(1),
        o = n(8);

    function a(t) {
      if (t instanceof i.NonTerminal) return a(t.referencedRule);
      if (t instanceof i.Terminal) return c(t);
      if (o.isSequenceProd(t)) return s(t);
      if (o.isBranchingProd(t)) return u(t);
      throw Error("non exhaustive match");
    }

    function s(t) {
      for (var e, n = [], i = t.definition, s = 0, u = i.length > s, c = !0; u && c;) {
        e = i[s], c = o.isOptionalProd(e), n = n.concat(a(e)), s += 1, u = i.length > s;
      }

      return r.uniq(n);
    }

    function u(t) {
      var e = r.map(t.definition, function (t) {
        return a(t);
      });
      return r.uniq(r.flatten(e));
    }

    function c(t) {
      return [t.terminalType];
    }

    e.first = a, e.firstForSequence = s, e.firstForBranching = u, e.firstForTerminal = c;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    }), e.IN = "_~IN~_";
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r,
        i = n(29),
        o = n(0),
        a = n(1);
    !function (t) {
      t[t.OPTION = 0] = "OPTION", t[t.OR = 1] = "OR", t[t.MANY = 2] = "MANY", t[t.MANY_SEP = 3] = "MANY_SEP", t[t.AT_LEAST_ONE = 4] = "AT_LEAST_ONE", t[t.AT_LEAST_ONE_SEP = 5] = "AT_LEAST_ONE_SEP", t[t.REF = 6] = "REF", t[t.TERMINAL = 7] = "TERMINAL", t[t.FLAT = 8] = "FLAT";
    }(r = e.ProdType || (e.ProdType = {}));

    var s = /(?:\s*{\s*NAME\s*:\s*["'`]([\w$]*)["'`])?/,
        u = new RegExp(s.source.replace("{", "").replace(")?", "\\s*,)?")),
        c = /\.\s*CONSUME(\d+)?\s*\(\s*(?:[a-zA-Z_$]\w*\s*\.\s*)*([a-zA-Z_$]\w*)/,
        p = new RegExp(c.source, "g"),
        l = /\.\s*SUBRULE(\d+)?\s*\(\s*(?:[a-zA-Z_$]\w*\s*\.\s*)*([a-zA-Z_$]\w*)/,
        h = new RegExp(l.source, "g"),
        f = /\.\s*OPTION(\d+)?\s*\(/,
        d = new RegExp(f.source + s.source),
        E = new RegExp(f.source, "g"),
        m = /\.\s*MANY(\d+)?\s*\(/,
        y = new RegExp(m.source + s.source),
        T = new RegExp(m.source, "g"),
        v = /\s*SEP\s*:\s*(?:[a-zA-Z_$]\w*\s*\.\s*)*([a-zA-Z_$]\w*)/,
        g = new RegExp(/\.\s*MANY_SEP(\d+)?\s*\(\s*{/.source + u.source + v.source),
        _ = new RegExp(g.source, "g"),
        R = new RegExp(/\.\s*AT_LEAST_ONE_SEP(\d+)?\s*\(\s*{/.source + u.source + v.source),
        A = new RegExp(R.source, "g"),
        N = /\.\s*AT_LEAST_ONE(\d+)?\s*\(/,
        O = new RegExp(N.source + s.source),
        S = new RegExp(N.source, "g"),
        I = /\.\s*OR(\d+)?\s*\(/,
        L = new RegExp(I.source + s.source),
        k = new RegExp(I.source, "g"),
        P = new RegExp(u.source + /\s*(ALT)\s*:/.source),
        x = new RegExp(P.source, "g");

    function C(t, n, i) {
      switch (t.type) {
        case r.AT_LEAST_ONE:
          return function (t, e, n) {
            return M(O, new a.RepetitionMandatory({
              definition: []
            }), t, e, n);
          }(t, n, i);

        case r.AT_LEAST_ONE_SEP:
          return function (t, e, n) {
            return F(t, e, a.RepetitionMandatoryWithSeparator, R, n);
          }(t, n, i);

        case r.MANY_SEP:
          return function (t, e, n) {
            return F(t, e, a.RepetitionWithSeparator, g, n);
          }(t, n, i);

        case r.MANY:
          return function (t, e, n) {
            return M(y, new a.Repetition({
              definition: []
            }), t, e, n);
          }(t, n, i);

        case r.OPTION:
          return function (t, e, n) {
            return M(d, new a.Option({
              definition: []
            }), t, e, n);
          }(t, n, i);

        case r.OR:
          return function (t, e, n) {
            return M(L, new a.Alternation({
              definition: []
            }), t, e, n);
          }(t, n, i);

        case r.FLAT:
          return function (t, e, n) {
            var r = new a.Flat({
              definition: []
            }),
                i = P.exec(t.text)[1];
            o.isUndefined(i) || (r.name = i);
            return b(r, t.range, e, n);
          }(t, n, i);

        case r.REF:
          return function (t) {
            var e = l.exec(t.text),
                n = void 0 === e[1] ? 0 : _parseInt(e[1], 10),
                r = e[2];
            return new a.NonTerminal({
              nonTerminalName: r,
              idx: n
            });
          }(t);

        case r.TERMINAL:
          return function (t, n) {
            var r = c.exec(t.text),
                i = void 0 === r[1] ? 0 : _parseInt(r[1], 10),
                o = r[2],
                s = e.terminalNameToConstructor[o];
            if (!s) throw Error("Terminal Token name: <" + o + "> not found in rule: <" + n + ">  \n\tSee: https://sap.github.io/chevrotain/docs/guide/resolving_grammar_errors.html#TERMINAL_NAME_NOT_FOUND\n\tFor Further details.");
            return new a.Terminal({
              terminalType: s,
              idx: i
            });
          }(t, i);

        default:
          throw Error("non exhaustive match");
      }
    }

    function M(t, e, n, r, i) {
      var a = t.exec(n.text),
          s = void 0 === a[1];
      e.idx = s ? 0 : _parseInt(a[1], 10);
      var u = a[2];
      return o.isUndefined(u) || (e.name = u), b(e, n.range, r, i);
    }

    function F(t, n, r, i, a) {
      var s = i.exec(t.text),
          u = void 0 === s[1] ? 0 : _parseInt(s[1], 10),
          c = s[3],
          p = e.terminalNameToConstructor[c];
      if (!p) throw Error("Separator Terminal Token name: " + c + " not found");
      var l = new r({
        definition: [],
        separator: p,
        idx: u
      }),
          h = s[2];
      return o.isUndefined(h) || (l.name = h), b(l, t.range, n, a);
    }

    function b(t, e, n, r) {
      var i = D(e, n),
          a = o.sortBy(i, function (t) {
        return t.range.start;
      }),
          s = [];
      return o.forEach(a, function (t) {
        s.push(C(t, n, r));
      }), t.definition = s, t;
    }

    function D(t, e) {
      return o.filter(e, function (n) {
        var r = t.strictlyContainsRange(n.range),
            i = o.every(e, function (e) {
          var r = e.range.strictlyContainsRange(n.range),
              i = e.range.isStrictlyContainedInRange(t);
          return !(r && i);
        });
        return r && i;
      });
    }

    e.terminalNameToConstructor = {}, e.buildTopProduction = function (t, n, r) {
      e.terminalNameToConstructor = r;
      var o = V(j(K("  " + t)));
      return function (t, e, n, r) {
        return b(new a.Rule({
          name: t,
          definition: [],
          orgText: r
        }), e, n, t);
      }(n, new i.Range(0, t.length + 2), o, t);
    }, e.buildProdGast = C, e.getDirectlyContainedRanges = D;
    var w = /\/\/.*/g,
        U = /\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\//g,
        G = /(NAME\s*:\s*)?"([^\\"]|\\([bfnrtv"\\\/]|u[0-9a-fA-F]{4}))*"/g,
        B = /(NAME\s*:\s*)?'([^\\']|\\([bfnrtv'\\\/]|u[0-9a-fA-F]{4}))*'/g;

    function K(t) {
      return t.replace(w, "").replace(U, "");
    }

    function W(t, e) {
      return void 0 !== e ? t : "";
    }

    function j(t) {
      return t.replace(G, W).replace(B, W);
    }

    function V(t) {
      var e = Y(t),
          n = H(t),
          r = X(t),
          i = z(t),
          o = q(t),
          a = $(t),
          s = Z(t),
          u = Q(t);
      return [].concat(e, n, r, i, o, a, s, u);
    }

    function Y(t) {
      return nt(t, r.TERMINAL, p);
    }

    function H(t) {
      return nt(t, r.REF, h);
    }

    function X(t) {
      return rt(t, r.AT_LEAST_ONE, S);
    }

    function z(t) {
      return rt(t, r.AT_LEAST_ONE_SEP, A);
    }

    function q(t) {
      return rt(t, r.MANY, T);
    }

    function $(t) {
      return rt(t, r.MANY_SEP, _);
    }

    function Z(t) {
      return rt(t, r.OPTION, E);
    }

    function Q(t) {
      var e = rt(t, r.OR, k),
          n = et(e);
      return e.concat(n);
    }

    e.removeComments = K, e.removeStringLiterals = j, e.createRanges = V, e.createTerminalRanges = Y, e.createRefsRanges = H, e.createAtLeastOneRanges = X, e.createAtLeastOneSepRanges = z, e.createManyRanges = q, e.createManySepRanges = $, e.createOptionRanges = Z, e.createOrRanges = Q;
    var J = o.partial(ot, "{", "}"),
        tt = o.partial(ot, "(", ")");

    function et(t) {
      var e = [];
      return o.forEach(t, function (t) {
        var n = it(t.text, r.FLAT, x, J),
            i = t.range.start;
        o.forEach(n, function (t) {
          t.range.start += i, t.range.end += i;
        }), e = e.concat(n);
      }), o.uniq(e, function (t) {
        return t.type + "~" + t.range.start + "~" + t.range.end + "~" + t.text;
      });
    }

    function nt(t, e, n) {
      for (var r, o = []; r = n.exec(t);) {
        var a = r.index,
            s = n.lastIndex,
            u = new i.Range(a, s),
            c = r[0];
        o.push({
          range: u,
          text: c,
          type: e
        });
      }

      return o;
    }

    function rt(t, e, n) {
      return it(t, e, n, tt);
    }

    function it(t, e, n, r) {
      for (var o, a = []; o = n.exec(t);) {
        var s = o.index,
            u = r(s + o[0].length, t),
            c = new i.Range(s, u),
            p = t.substr(s, u - s + 1);
        a.push({
          range: c,
          text: p,
          type: e
        });
      }

      return a;
    }

    function ot(t, e, n, r) {
      for (var i = [1], a = -1; !o.isEmpty(i) && a + n < r.length;) {
        a++;
        var s = r.charAt(n + a);
        s === t ? i.push(1) : s === e && i.pop();
      }

      if (o.isEmpty(i)) return a + n;
      throw new Error("INVALID INPUT TEXT, UNTERMINATED PARENTHESIS");
    }

    function at(t, e) {
      return o.map(t, function (t) {
        return st(t, e);
      });
    }

    function st(t, e) {
      switch (t.type) {
        case "NonTerminal":
          return new a.NonTerminal({
            nonTerminalName: t.name,
            idx: t.idx
          });

        case "Flat":
          return new a.Flat({
            name: t.name,
            definition: at(t.definition, e)
          });

        case "Option":
          return new a.Option({
            name: t.name,
            idx: t.idx,
            definition: at(t.definition, e)
          });

        case "RepetitionMandatory":
          return new a.RepetitionMandatory({
            name: t.name,
            idx: t.idx,
            definition: at(t.definition, e)
          });

        case "RepetitionMandatoryWithSeparator":
          return new a.RepetitionMandatoryWithSeparator({
            name: t.name,
            idx: t.idx,
            separator: e[t.separator.name],
            definition: at(t.definition, e)
          });

        case "RepetitionWithSeparator":
          return new a.RepetitionWithSeparator({
            name: t.name,
            idx: t.idx,
            separator: e[t.separator.name],
            definition: at(t.definition, e)
          });

        case "Repetition":
          return new a.Repetition({
            name: t.name,
            idx: t.idx,
            definition: at(t.definition, e)
          });

        case "Alternation":
          return new a.Alternation({
            name: t.name,
            idx: t.idx,
            definition: at(t.definition, e)
          });

        case "Terminal":
          return new a.Terminal({
            terminalType: e[t.name],
            idx: t.idx
          });

        case "Rule":
          return new a.Rule({
            name: t.name,
            orgText: t.orgText,
            definition: at(t.definition, e)
          });

        default:
      }
    }

    e.createOrPartRanges = et, e.findClosingOffset = ot, e.deserializeGrammar = at, e.deserializeProduction = st;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(0),
        i = n(4),
        o = n(30),
        a = n(11),
        s = n(10),
        u = n(8);
    e.resolveGrammar = function (t) {
      t = r.defaults(t, {
        errMsgProvider: s.defaultGrammarResolverErrorProvider
      });
      var e = new i.HashTable();
      return r.forEach(t.rules, function (t) {
        e.put(t.name, t);
      }), o.resolveGrammar(e, t.errMsgProvider);
    }, e.validateGrammar = function (t) {
      return t = r.defaults(t, {
        errMsgProvider: s.defaultGrammarValidatorErrorProvider,
        ignoredIssues: {}
      }), a.validateGrammar(t.rules, t.maxLookahead, t.tokenTypes, t.ignoredIssues, t.errMsgProvider, t.grammarName);
    }, e.assignOccurrenceIndices = function (t) {
      r.forEach(t.rules, function (t) {
        var e = new u.DslMethodsCollectorVisitor();
        t.accept(e), r.forEach(e.dslMethods, function (t) {
          r.forEach(t, function (t, e) {
            t.idx = e + 1;
          });
        });
      });
    };
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(2),
        i = n(0),
        o = n(6),
        a = n(22),
        s = n(4),
        u = n(3);

    function c(t) {
      this.name = e.IN_RULE_RECOVERY_EXCEPTION, this.message = t;
    }

    e.EOF_FOLLOW_KEY = {}, e.IN_RULE_RECOVERY_EXCEPTION = "InRuleRecoveryException", e.InRuleRecoveryException = c, c.prototype = Error.prototype;

    var p = function () {
      function t() {}

      return t.prototype.initRecoverable = function (t) {
        this.firstAfterRepMap = new s.HashTable(), this.resyncFollows = new s.HashTable(), this.recoveryEnabled = i.has(t, "recoveryEnabled") ? t.recoveryEnabled : u.DEFAULT_PARSER_CONFIG.recoveryEnabled, this.recoveryEnabled && (this.attemptInRepetitionRecovery = l);
      }, t.prototype.getTokenToInsert = function (t) {
        var e = r.createTokenInstance(t, "", NaN, NaN, NaN, NaN, NaN, NaN);
        return e.isInsertedInRecovery = !0, e;
      }, t.prototype.canTokenTypeBeInsertedInRecovery = function (t) {
        return !0;
      }, t.prototype.tryInRepetitionRecovery = function (t, e, n, r) {
        for (var a = this, s = this.findReSyncTokenType(), u = this.exportLexerState(), c = [], p = !1, l = this.LA(1), h = this.LA(1), f = function f() {
          var t = a.LA(0),
              e = a.errorMessageProvider.buildMismatchTokenMessage({
            expected: r,
            actual: l,
            previous: t,
            ruleName: a.getCurrRuleFullName()
          }),
              n = new o.MismatchedTokenException(e, l, a.LA(0));
          n.resyncedTokens = i.dropRight(c), a.SAVE_ERROR(n);
        }; !p;) {
          if (this.tokenMatcher(h, r)) return void f();
          if (n.call(this)) return f(), void t.apply(this, e);
          this.tokenMatcher(h, s) ? p = !0 : (h = this.SKIP_TOKEN(), this.addToResyncTokens(h, c));
        }

        this.importLexerState(u);
      }, t.prototype.shouldInRepetitionRecoveryBeTried = function (t, e) {
        return void 0 !== t && void 0 !== e && !this.tokenMatcher(this.LA(1), t) && !this.isBackTracking() && !this.canPerformInRuleRecovery(t, this.getFollowsForInRuleRecovery(t, e));
      }, t.prototype.getFollowsForInRuleRecovery = function (t, e) {
        var n = this.getCurrentGrammarPath(t, e);
        return this.getNextPossibleTokenTypes(n);
      }, t.prototype.tryInRuleRecovery = function (t, e) {
        if (this.canRecoverWithSingleTokenInsertion(t, e)) return this.getTokenToInsert(t);

        if (this.canRecoverWithSingleTokenDeletion(t)) {
          var n = this.SKIP_TOKEN();
          return this.consumeToken(), n;
        }

        throw new c("sad sad panda");
      }, t.prototype.canPerformInRuleRecovery = function (t, e) {
        return this.canRecoverWithSingleTokenInsertion(t, e) || this.canRecoverWithSingleTokenDeletion(t);
      }, t.prototype.canRecoverWithSingleTokenInsertion = function (t, e) {
        var n = this;
        if (!this.canTokenTypeBeInsertedInRecovery(t)) return !1;
        if (i.isEmpty(e)) return !1;
        var r = this.LA(1);
        return void 0 !== i.find(e, function (t) {
          return n.tokenMatcher(r, t);
        });
      }, t.prototype.canRecoverWithSingleTokenDeletion = function (t) {
        return this.tokenMatcher(this.LA(2), t);
      }, t.prototype.isInCurrentRuleReSyncSet = function (t) {
        var e = this.getCurrFollowKey(),
            n = this.getFollowSetFromFollowKey(e);
        return i.contains(n, t);
      }, t.prototype.findReSyncTokenType = function () {
        for (var t = this.flattenFollowSet(), e = this.LA(1), n = 2;;) {
          var r = e.tokenType;
          if (i.contains(t, r)) return r;
          e = this.LA(n), n++;
        }
      }, t.prototype.getCurrFollowKey = function () {
        if (1 === this.RULE_STACK.length) return e.EOF_FOLLOW_KEY;
        var t = this.getLastExplicitRuleShortName(),
            n = this.getLastExplicitRuleOccurrenceIndex(),
            r = this.getPreviousExplicitRuleShortName();
        return {
          ruleName: this.shortRuleNameToFullName(t),
          idxInCallingRule: n,
          inRule: this.shortRuleNameToFullName(r)
        };
      }, t.prototype.buildFullFollowKeyStack = function () {
        var t = this,
            n = this.RULE_STACK,
            r = this.RULE_OCCURRENCE_STACK;
        return i.isEmpty(this.LAST_EXPLICIT_RULE_STACK) || (n = i.map(this.LAST_EXPLICIT_RULE_STACK, function (e) {
          return t.RULE_STACK[e];
        }), r = i.map(this.LAST_EXPLICIT_RULE_STACK, function (e) {
          return t.RULE_OCCURRENCE_STACK[e];
        })), i.map(n, function (i, o) {
          return 0 === o ? e.EOF_FOLLOW_KEY : {
            ruleName: t.shortRuleNameToFullName(i),
            idxInCallingRule: r[o],
            inRule: t.shortRuleNameToFullName(n[o - 1])
          };
        });
      }, t.prototype.flattenFollowSet = function () {
        var t = this,
            e = i.map(this.buildFullFollowKeyStack(), function (e) {
          return t.getFollowSetFromFollowKey(e);
        });
        return i.flatten(e);
      }, t.prototype.getFollowSetFromFollowKey = function (t) {
        if (t === e.EOF_FOLLOW_KEY) return [r.EOF];
        var n = t.ruleName + t.idxInCallingRule + a.IN + t.inRule;
        return this.resyncFollows.get(n);
      }, t.prototype.addToResyncTokens = function (t, e) {
        return this.tokenMatcher(t, r.EOF) || e.push(t), e;
      }, t.prototype.reSyncTo = function (t) {
        for (var e = [], n = this.LA(1); !1 === this.tokenMatcher(n, t);) {
          n = this.SKIP_TOKEN(), this.addToResyncTokens(n, e);
        }

        return i.dropRight(e);
      }, t.prototype.attemptInRepetitionRecovery = function (t, e, n, r, i, o) {}, t.prototype.getCurrentGrammarPath = function (t, e) {
        return {
          ruleStack: this.getHumanReadableRuleStack(),
          occurrenceStack: i.cloneArr(this.RULE_OCCURRENCE_STACK),
          lastTok: t,
          lastTokOccurrence: e
        };
      }, t.prototype.getHumanReadableRuleStack = function () {
        var t = this;
        return i.isEmpty(this.LAST_EXPLICIT_RULE_STACK) ? i.map(this.RULE_STACK, function (e) {
          return t.shortRuleNameToFullName(e);
        }) : i.map(this.LAST_EXPLICIT_RULE_STACK, function (e) {
          return t.shortRuleNameToFullName(t.RULE_STACK[e]);
        });
      }, t;
    }();

    function l(t, e, n, i, o, a) {
      var s = this.getKeyForAutomaticLookahead(i, o),
          u = this.firstAfterRepMap.get(s);

      if (void 0 === u) {
        var c = this.getCurrRuleFullName();
        u = new a(this.getGAstProductions().get(c), o).startWalking(), this.firstAfterRepMap.put(s, u);
      }

      var p = u.token,
          l = u.occurrence,
          h = u.isEndOfRule;
      1 === this.RULE_STACK.length && h && void 0 === p && (p = r.EOF, l = 1), this.shouldInRepetitionRecoveryBeTried(p, l) && this.tryInRepetitionRecovery(t, e, n, p);
    }

    e.Recoverable = p, e.attemptInRepetitionRecovery = l;
  }, function (t, e, n) {
    "use strict";

    var _r8,
        i = this && this.__extends || (_r8 = function r(t, e) {
      return (_r8 = _Object$setPrototypeOf || {
        __proto__: []
      } instanceof Array && function (t, e) {
        t.__proto__ = e;
      } || function (t, e) {
        for (var n in e) {
          e.hasOwnProperty(n) && (t[n] = e[n]);
        }
      })(t, e);
    }, function (t, e) {
      function n() {
        this.constructor = t;
      }

      _r8(t, e), t.prototype = null === e ? _Object$create(e) : (n.prototype = e.prototype, new n());
    });

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var o = n(14),
        a = n(4),
        s = n(21),
        u = n(0),
        c = n(22),
        p = n(2),
        l = n(1),
        h = function (t) {
      function e(e) {
        var n = t.call(this) || this;
        return n.topProd = e, n.follows = new a.HashTable(), n;
      }

      return i(e, t), e.prototype.startWalking = function () {
        return this.walk(this.topProd), this.follows;
      }, e.prototype.walkTerminal = function (t, e, n) {}, e.prototype.walkProdRef = function (t, e, n) {
        var r = f(t.referencedRule, t.idx) + this.topProd.name,
            i = e.concat(n),
            o = new l.Flat({
          definition: i
        }),
            a = s.first(o);
        this.follows.put(r, a);
      }, e;
    }(o.RestWalker);

    function f(t, e) {
      return t.name + e + c.IN;
    }

    e.ResyncFollowsWalker = h, e.computeAllProdsFollows = function (t) {
      var e = new a.HashTable();
      return u.forEach(t, function (t) {
        var n = new h(t).startWalking();
        e.putAll(n);
      }), e;
    }, e.buildBetweenProdsFollowPrefix = f, e.buildInProdFollowPrefix = function (t) {
      return p.tokenName(t.terminalType) + t.idx + c.IN;
    };
  }, function (t, e, n) {
    "use strict";

    var _r9,
        i = this && this.__extends || (_r9 = function r(t, e) {
      return (_r9 = _Object$setPrototypeOf || {
        __proto__: []
      } instanceof Array && function (t, e) {
        t.__proto__ = e;
      } || function (t, e) {
        for (var n in e) {
          e.hasOwnProperty(n) && (t[n] = e[n]);
        }
      })(t, e);
    }, function (t, e) {
      function n() {
        this.constructor = t;
      }

      _r9(t, e), t.prototype = null === e ? _Object$create(e) : (n.prototype = e.prototype, new n());
    });

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var o = n(19),
        a = n(2),
        s = n(15),
        u = n(0),
        c = n(28),
        p = new o.RegExpParser(),
        l = "PATTERN";

    function h(t) {
      var e = u.filter(t, function (t) {
        return !u.has(t, l);
      });
      return {
        errors: u.map(e, function (t) {
          return {
            message: "Token Type: ->" + a.tokenName(t) + "<- missing static 'PATTERN' property",
            type: s.LexerDefinitionErrorType.MISSING_PATTERN,
            tokenTypes: [t]
          };
        }),
        valid: u.difference(t, e)
      };
    }

    function f(t) {
      var e = u.filter(t, function (t) {
        var e = t[l];
        return !(u.isRegExp(e) || u.isFunction(e) || u.has(e, "exec") || u.isString(e));
      });
      return {
        errors: u.map(e, function (t) {
          return {
            message: "Token Type: ->" + a.tokenName(t) + "<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",
            type: s.LexerDefinitionErrorType.INVALID_PATTERN,
            tokenTypes: [t]
          };
        }),
        valid: u.difference(t, e)
      };
    }

    e.DEFAULT_MODE = "defaultMode", e.MODES = "modes", e.SUPPORT_STICKY = "boolean" == typeof new RegExp("(?:)").sticky, e.disableSticky = function () {
      e.SUPPORT_STICKY = !1;
    }, e.enableSticky = function () {
      e.SUPPORT_STICKY = !0;
    }, e.analyzeTokenTypes = function (t, n) {
      n = u.defaults(n, {
        useSticky: e.SUPPORT_STICKY,
        debug: !1,
        safeMode: !1,
        positionTracking: "full",
        lineTerminatorCharacters: ["\r", "\n"]
      });
      var r = u.reject(t, function (t) {
        return t[l] === s.Lexer.NA;
      }),
          i = !1,
          o = u.map(r, function (t) {
        var e = t[l];

        if (u.isRegExp(e)) {
          var r = e.source;
          return 1 === r.length && "^" !== r && "$" !== r && "." !== r ? r : 2 !== r.length || "\\" !== r[0] || u.contains(["d", "D", "s", "S", "t", "r", "n", "t", "0", "c", "b", "B", "f", "v", "w", "W"], r[1]) ? n.useSticky ? O(e) : N(e) : r[1];
        }

        if (u.isFunction(e)) return i = !0, {
          exec: e
        };
        if (u.has(e, "exec")) return i = !0, e;

        if ("string" == typeof e) {
          if (1 === e.length) return e;
          var o = e.replace(/[\\^$.*+?()[\]{}|]/g, "\\$&"),
              a = new RegExp(o);
          return n.useSticky ? O(a) : N(a);
        }

        throw Error("non exhaustive match");
      }),
          p = u.map(r, function (t) {
        return t.tokenTypeIdx;
      }),
          h = u.map(r, function (t) {
        var e = t.GROUP;

        if (e !== s.Lexer.SKIPPED) {
          if (u.isString(e)) return e;
          if (u.isUndefined(e)) return !1;
          throw Error("non exhaustive match");
        }
      }),
          f = u.map(r, function (t) {
        var e = t.LONGER_ALT;
        if (e) return u.indexOf(r, e);
      }),
          d = u.map(r, function (t) {
        return t.PUSH_MODE;
      }),
          E = u.map(r, function (t) {
        return u.has(t, "POP_MODE");
      }),
          m = P(n.lineTerminatorCharacters),
          y = u.map(r, function (t) {
        return !1;
      });
      "onlyOffset" !== n.positionTracking && (y = u.map(r, function (t) {
        return u.has(t, "LINE_BREAKS") ? t.LINE_BREAKS : !1 === L(t, m) ? c.canMatchCharCode(m, t.PATTERN) : void 0;
      }));

      var T = u.map(r, S),
          v = u.map(o, I),
          g = u.reduce(r, function (t, e) {
        var n = e.GROUP;
        return u.isString(n) && n !== s.Lexer.SKIPPED && (t[n] = []), t;
      }, {}),
          _ = u.map(o, function (t, e) {
        return {
          pattern: o[e],
          longerAlt: f[e],
          canLineTerminator: y[e],
          isCustom: T[e],
          "short": v[e],
          group: h[e],
          push: d[e],
          pop: E[e],
          tokenTypeIdx: p[e],
          tokenType: r[e]
        };
      });

      function R(t, e, n) {
        void 0 === t[e] && (t[e] = []), t[e].push(n);
      }

      var A = !0,
          k = [];
      return n.safeMode || (k = u.reduce(r, function (t, e, r) {
        if ("string" == typeof e.PATTERN) {
          var i = e.PATTERN.charCodeAt(0);
          R(t, i, _[r]);
        } else if (u.isArray(e.START_CHARS_HINT)) u.forEach(e.START_CHARS_HINT, function (e) {
          var n = "string" == typeof e ? e.charCodeAt(0) : e;
          R(t, n, _[r]);
        });else if (u.isRegExp(e.PATTERN)) {
          if (e.PATTERN.unicode) A = !1, n.ensureOptimizations && u.PRINT_ERROR(c.failedOptimizationPrefixMsg + "\tUnable to analyze < " + e.PATTERN.toString() + " > pattern.\n\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE");else {
            var o = c.getStartCodes(e.PATTERN, n.ensureOptimizations);
            u.isEmpty(o) && (A = !1), u.forEach(o, function (e) {
              R(t, e, _[r]);
            });
          }
        } else n.ensureOptimizations && u.PRINT_ERROR(c.failedOptimizationPrefixMsg + "\tTokenType: <" + a.tokenName(e) + "> is using a custom token pattern without providing <start_chars_hint> parameter.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE"), A = !1;

        return t;
      }, [])), A && k.length < 65536 && (k = u.packArray(k)), {
        emptyGroups: g,
        patternIdxToConfig: _,
        charCodeToPatternIdxToConfig: k,
        hasCustom: i,
        canBeOptimized: A
      };
    }, e.validatePatterns = function (t, e) {
      var n = [],
          r = h(t);
      n = n.concat(r.errors);
      var i = f(r.valid),
          o = i.valid;
      return n = (n = (n = (n = (n = n.concat(i.errors)).concat(function (t) {
        var e = [],
            n = u.filter(t, function (t) {
          return u.isRegExp(t[l]);
        });
        return e = (e = (e = (e = (e = e.concat(E(n))).concat(T(n))).concat(v(n))).concat(g(n))).concat(m(n));
      }(o))).concat(_(o))).concat(R(o, e))).concat(A(o));
    }, e.findMissingPatterns = h, e.findInvalidPatterns = f;
    var d = /[^\\][\$]/;

    function E(t) {
      var e = function (t) {
        function e() {
          var e = null !== t && t.apply(this, arguments) || this;
          return e.found = !1, e;
        }

        return i(e, t), e.prototype.visitEndAnchor = function (t) {
          this.found = !0;
        }, e;
      }(o.BaseRegExpVisitor),
          n = u.filter(t, function (t) {
        var n = t[l];

        try {
          var r = p.pattern(n.toString()),
              i = new e();
          return i.visit(r), i.found;
        } catch (t) {
          return d.test(n.source);
        }
      });

      return u.map(n, function (t) {
        return {
          message: "Unexpected RegExp Anchor Error:\n\tToken Type: ->" + a.tokenName(t) + "<- static 'PATTERN' cannot contain end of input anchor '$'\n\tSee sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.",
          type: s.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,
          tokenTypes: [t]
        };
      });
    }

    function m(t) {
      var e = u.filter(t, function (t) {
        return t[l].test("");
      });
      return u.map(e, function (t) {
        return {
          message: "Token Type: ->" + a.tokenName(t) + "<- static 'PATTERN' must not match an empty string",
          type: s.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,
          tokenTypes: [t]
        };
      });
    }

    e.findEndOfInputAnchor = E, e.findEmptyMatchRegExps = m;
    var y = /[^\\[][\^]|^\^/;

    function T(t) {
      var e = function (t) {
        function e() {
          var e = null !== t && t.apply(this, arguments) || this;
          return e.found = !1, e;
        }

        return i(e, t), e.prototype.visitStartAnchor = function (t) {
          this.found = !0;
        }, e;
      }(o.BaseRegExpVisitor),
          n = u.filter(t, function (t) {
        var n = t[l];

        try {
          var r = p.pattern(n.toString()),
              i = new e();
          return i.visit(r), i.found;
        } catch (t) {
          return y.test(n.source);
        }
      });

      return u.map(n, function (t) {
        return {
          message: "Unexpected RegExp Anchor Error:\n\tToken Type: ->" + a.tokenName(t) + "<- static 'PATTERN' cannot contain start of input anchor '^'\n\tSee https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.",
          type: s.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,
          tokenTypes: [t]
        };
      });
    }

    function v(t) {
      var e = u.filter(t, function (t) {
        var e = t[l];
        return e instanceof RegExp && (e.multiline || e.global);
      });
      return u.map(e, function (t) {
        return {
          message: "Token Type: ->" + a.tokenName(t) + "<- static 'PATTERN' may NOT contain global('g') or multiline('m')",
          type: s.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,
          tokenTypes: [t]
        };
      });
    }

    function g(t) {
      var e = [],
          n = u.map(t, function (n) {
        return u.reduce(t, function (t, r) {
          return n.PATTERN.source !== r.PATTERN.source || u.contains(e, r) || r.PATTERN === s.Lexer.NA ? t : (e.push(r), t.push(r), t);
        }, []);
      });
      n = u.compact(n);
      var r = u.filter(n, function (t) {
        return t.length > 1;
      });
      return u.map(r, function (t) {
        var e = u.map(t, function (t) {
          return a.tokenName(t);
        });
        return {
          message: "The same RegExp pattern ->" + u.first(t).PATTERN + "<-has been used in all of the following Token Types: " + e.join(", ") + " <-",
          type: s.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,
          tokenTypes: t
        };
      });
    }

    function _(t) {
      var e = u.filter(t, function (t) {
        if (!u.has(t, "GROUP")) return !1;
        var e = t.GROUP;
        return e !== s.Lexer.SKIPPED && e !== s.Lexer.NA && !u.isString(e);
      });
      return u.map(e, function (t) {
        return {
          message: "Token Type: ->" + a.tokenName(t) + "<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",
          type: s.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,
          tokenTypes: [t]
        };
      });
    }

    function R(t, e) {
      var n = u.filter(t, function (t) {
        return void 0 !== t.PUSH_MODE && !u.contains(e, t.PUSH_MODE);
      });
      return u.map(n, function (t) {
        return {
          message: "Token Type: ->" + a.tokenName(t) + "<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->" + t.PUSH_MODE + "<-which does not exist",
          type: s.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,
          tokenTypes: [t]
        };
      });
    }

    function A(t) {
      var e = [],
          n = u.reduce(t, function (t, e, n) {
        var r,
            i = e.PATTERN;
        return i === s.Lexer.NA ? t : (u.isString(i) ? t.push({
          str: i,
          idx: n,
          tokenType: e
        }) : u.isRegExp(i) && (r = i, void 0 === u.find([".", "\\", "[", "]", "|", "^", "$", "(", ")", "?", "*", "+", "{"], function (t) {
          return -1 !== r.source.indexOf(t);
        })) && t.push({
          str: i.source,
          idx: n,
          tokenType: e
        }), t);
      }, []);
      return u.forEach(t, function (t, r) {
        u.forEach(n, function (n) {
          var i = n.str,
              o = n.idx,
              c = n.tokenType;

          if (r < o && function (t, e) {
            if (u.isRegExp(e)) {
              var n = e.exec(t);
              return null !== n && 0 === n.index;
            }

            if (u.isFunction(e)) return e(t, 0, [], {});
            if (u.has(e, "exec")) return e.exec(t, 0, [], {});
            if ("string" == typeof e) return e === t;
            throw Error("non exhaustive match");
          }(i, t.PATTERN)) {
            var p = "Token: ->" + a.tokenName(c) + "<- can never be matched.\nBecause it appears AFTER the Token Type ->" + a.tokenName(t) + "<-in the lexer's definition.\nSee https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#UNREACHABLE";
            e.push({
              message: p,
              type: s.LexerDefinitionErrorType.UNREACHABLE_PATTERN,
              tokenTypes: [t, c]
            });
          }
        });
      }), e;
    }

    function N(t) {
      var e = t.ignoreCase ? "i" : "";
      return new RegExp("^(?:" + t.source + ")", e);
    }

    function O(t) {
      var e = t.ignoreCase ? "iy" : "y";
      return new RegExp("" + t.source, e);
    }

    function S(t) {
      var e = t.PATTERN;
      if (u.isRegExp(e)) return !1;
      if (u.isFunction(e)) return !0;
      if (u.has(e, "exec")) return !0;
      if (u.isString(e)) return !1;
      throw Error("non exhaustive match");
    }

    function I(t) {
      return !(!u.isString(t) || 1 !== t.length) && t.charCodeAt(0);
    }

    function L(t, e) {
      if (u.has(t, "LINE_BREAKS")) return !1;

      if (u.isRegExp(t.PATTERN)) {
        try {
          c.canMatchCharCode(e, t.PATTERN);
        } catch (t) {
          return {
            issue: s.LexerDefinitionErrorType.IDENTIFY_TERMINATOR,
            errMsg: t.message
          };
        }

        return !1;
      }

      if (u.isString(t.PATTERN)) return !1;
      if (S(t)) return {
        issue: s.LexerDefinitionErrorType.CUSTOM_LINE_BREAK
      };
      throw Error("non exhaustive match");
    }

    function k(t, e) {
      if (e.issue === s.LexerDefinitionErrorType.IDENTIFY_TERMINATOR) return "Warning: unable to identify line terminator usage in pattern.\n\tThe problem is in the <" + t.name + "> Token Type\n\t Root cause: " + e.errMsg + ".\n\tFor details See: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";
      if (e.issue === s.LexerDefinitionErrorType.CUSTOM_LINE_BREAK) return "Warning: A Custom Token Pattern should specify the <line_breaks> option.\n\tThe problem is in the <" + t.name + "> Token Type\n\tFor details See: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";
      throw Error("non exhaustive match");
    }

    function P(t) {
      return u.map(t, function (t) {
        return u.isString(t) && t.length > 0 ? t.charCodeAt(0) : t;
      });
    }

    e.findStartOfInputAnchor = T, e.findUnsupportedFlags = v, e.findDuplicatePatterns = g, e.findInvalidGroupType = _, e.findModesThatDoNotExist = R, e.findUnreachablePatterns = A, e.addStartOfInput = N, e.addStickyFlag = O, e.performRuntimeChecks = function (t, n, r) {
      var i = [];
      return u.has(t, e.DEFAULT_MODE) || i.push({
        message: "A MultiMode Lexer cannot be initialized without a <" + e.DEFAULT_MODE + "> property in its definition\n",
        type: s.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE
      }), u.has(t, e.MODES) || i.push({
        message: "A MultiMode Lexer cannot be initialized without a <" + e.MODES + "> property in its definition\n",
        type: s.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY
      }), u.has(t, e.MODES) && u.has(t, e.DEFAULT_MODE) && !u.has(t.modes, t.defaultMode) && i.push({
        message: "A MultiMode Lexer cannot be initialized with a " + e.DEFAULT_MODE + ": <" + t.defaultMode + ">which does not exist\n",
        type: s.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST
      }), u.has(t, e.MODES) && u.forEach(t.modes, function (t, e) {
        u.forEach(t, function (t, n) {
          u.isUndefined(t) && i.push({
            message: "A Lexer cannot be initialized using an undefined Token Type. Mode:<" + e + "> at index: <" + n + ">\n",
            type: s.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED
          });
        });
      }), i;
    }, e.performWarningRuntimeChecks = function (t, e, n) {
      var r = [],
          i = !1,
          o = u.compact(u.flatten(u.mapValues(t.modes, function (t) {
        return t;
      }))),
          a = u.reject(o, function (t) {
        return t[l] === s.Lexer.NA;
      }),
          p = P(n);
      return e && u.forEach(a, function (t) {
        var e = L(t, p);

        if (!1 !== e) {
          var n = {
            message: k(t, e),
            type: e.issue,
            tokenType: t
          };
          r.push(n);
        } else u.has(t, "LINE_BREAKS") ? !0 === t.LINE_BREAKS && (i = !0) : c.canMatchCharCode(p, t.PATTERN) && (i = !0);
      }), e && !i && r.push({
        message: "Warning: No LINE_BREAKS Found.\n\tThis Lexer has been defined to track line and column information,\n\tBut none of the Token Types can be identified as matching a line terminator.\n\tSee https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \n\tfor details.",
        type: s.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS
      }), r;
    }, e.cloneEmptyGroups = function (t) {
      var e = {},
          n = u.keys(t);
      return u.forEach(n, function (n) {
        var r = t[n];
        if (!u.isArray(r)) throw Error("non exhaustive match");
        e[n] = [];
      }), e;
    }, e.isCustomPattern = S, e.isShortPattern = I, e.LineTerminatorOptimizedTester = {
      test: function test(t) {
        for (var e = t.length, n = this.lastIndex; n < e; n++) {
          var r = t.charCodeAt(n);
          if (10 === r) return this.lastIndex = n + 1, !0;
          if (13 === r) return 10 === t.charCodeAt(n + 1) ? this.lastIndex = n + 2 : this.lastIndex = n + 1, !0;
        }

        return !1;
      },
      lastIndex: 0
    }, e.buildLineBreakIssueMessage = k;
  }, function (t, e, n) {
    "use strict";

    var _r10,
        i = this && this.__extends || (_r10 = function r(t, e) {
      return (_r10 = _Object$setPrototypeOf || {
        __proto__: []
      } instanceof Array && function (t, e) {
        t.__proto__ = e;
      } || function (t, e) {
        for (var n in e) {
          e.hasOwnProperty(n) && (t[n] = e[n]);
        }
      })(t, e);
    }, function (t, e) {
      function n() {
        this.constructor = t;
      }

      _r10(t, e), t.prototype = null === e ? _Object$create(e) : (n.prototype = e.prototype, new n());
    });

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var o = n(19),
        a = n(0),
        s = new o.RegExpParser(),
        u = "Complement Sets are not supported for first char optimization";

    function c(t) {
      switch (t.type) {
        case "Disjunction":
          return a.flatten(a.map(t.value, c));

        case "Alternative":
          for (var e = [], n = t.value, r = 0; r < n.length; r++) {
            var i = n[r];

            if (!a.contains(["GroupBackReference", "Lookahead", "NegativeLookahead", "StartAnchor", "EndAnchor", "WordBoundary", "NonWordBoundary"], i.type)) {
              var o = i;

              switch (o.type) {
                case "Character":
                  e.push(o.value);
                  break;

                case "Set":
                  if (!0 === o.complement) throw Error(u);
                  a.forEach(o.value, function (t) {
                    if ("number" == typeof t) e.push(t);else for (var n = t, r = n.from; r <= n.to; r++) {
                      e.push(r);
                    }
                  });
                  break;

                case "Group":
                  var s = c(o.value);
                  a.forEach(s, function (t) {
                    return e.push(t);
                  });
                  break;

                default:
                  throw Error("Non Exhaustive Match");
              }

              var p = void 0 !== o.quantifier && 0 === o.quantifier.atLeast;
              if ("Group" === o.type && !1 === h(o) || "Group" !== o.type && !1 === p) break;
            }
          }

          return e;

        default:
          throw Error("non exhaustive match!");
      }
    }

    function p(t) {
      var e = [];
      return a.forEach(t, function (t) {
        e.push(t);
        var n = String.fromCharCode(t);
        n.toUpperCase() !== n ? e.push(n.toUpperCase().charCodeAt(0)) : n.toLowerCase() !== n && e.push(n.toLowerCase().charCodeAt(0));
      }), e;
    }

    function l(t, e) {
      return a.find(t.value, function (t) {
        if ("number" == typeof t) return a.contains(e, t);
        var n = t;
        return void 0 !== a.find(e, function (t) {
          return n.from <= t && t <= n.to;
        });
      });
    }

    function h(t) {
      return !(!t.quantifier || 0 !== t.quantifier.atLeast) || !!t.value && (a.isArray(t.value) ? a.every(t.value, h) : h(t.value));
    }

    e.failedOptimizationPrefixMsg = 'Unable to use "first char" lexer optimizations:\n', e.getStartCodes = function (t, n) {
      void 0 === n && (n = !1);

      try {
        var r = s.pattern(t.toString()),
            i = c(r.value);
        return r.flags.ignoreCase && (i = p(i)), i;
      } catch (r) {
        if (r.message === u) n && a.PRINT_WARNING(e.failedOptimizationPrefixMsg + "\tUnable to optimize: < " + t.toString() + " >\n\tComplement Sets cannot be automatically optimized.\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.");else {
          var l = "";
          n && (l = "\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details."), a.PRINT_ERROR(e.failedOptimizationPrefixMsg + "\n\tFailed parsing: < " + t.toString() + " >\n\tUsing the regexp-to-ast library version: " + o.VERSION + "\n\tPlease open an issue at: https://github.com/bd82/regexp-to-ast/issues" + l);
        }
      }

      return [];
    }, e.firstChar = c, e.applyIgnoreCase = p;

    var f = function (t) {
      function e(e) {
        var n = t.call(this) || this;
        return n.targetCharCodes = e, n.found = !1, n;
      }

      return i(e, t), e.prototype.visitChildren = function (e) {
        switch (e.type) {
          case "Lookahead":
            return void this.visitLookahead(e);

          case "NegativeLookahead":
            return void this.visitNegativeLookahead(e);
        }

        t.prototype.visitChildren.call(this, e);
      }, e.prototype.visitCharacter = function (t) {
        a.contains(this.targetCharCodes, t.value) && (this.found = !0);
      }, e.prototype.visitSet = function (t) {
        t.complement ? void 0 === l(t, this.targetCharCodes) && (this.found = !0) : void 0 !== l(t, this.targetCharCodes) && (this.found = !0);
      }, e;
    }(o.BaseRegExpVisitor);

    e.canMatchCharCode = function (t, e) {
      if (e instanceof RegExp) {
        var n = s.pattern(e.toString()),
            r = new f(t);
        return r.visit(n), r.found;
      }

      return void 0 !== a.find(e, function (e) {
        return a.contains(t, e.charCodeAt(0));
      });
    };
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = function () {
      function t(t, e) {
        if (this.start = t, this.end = e, !i(t, e)) throw new Error("INVALID RANGE");
      }

      return t.prototype.contains = function (t) {
        return this.start <= t && this.end >= t;
      }, t.prototype.containsRange = function (t) {
        return this.start <= t.start && this.end >= t.end;
      }, t.prototype.isContainedInRange = function (t) {
        return t.containsRange(this);
      }, t.prototype.strictlyContainsRange = function (t) {
        return this.start < t.start && this.end > t.end;
      }, t.prototype.isStrictlyContainedInRange = function (t) {
        return t.strictlyContainsRange(this);
      }, t;
    }();

    function i(t, e) {
      return !(t < 0 || e < t);
    }

    e.Range = r, e.isValidRange = i;
  }, function (t, e, n) {
    "use strict";

    var _r11,
        i = this && this.__extends || (_r11 = function r(t, e) {
      return (_r11 = _Object$setPrototypeOf || {
        __proto__: []
      } instanceof Array && function (t, e) {
        t.__proto__ = e;
      } || function (t, e) {
        for (var n in e) {
          e.hasOwnProperty(n) && (t[n] = e[n]);
        }
      })(t, e);
    }, function (t, e) {
      function n() {
        this.constructor = t;
      }

      _r11(t, e), t.prototype = null === e ? _Object$create(e) : (n.prototype = e.prototype, new n());
    });

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var o = n(3),
        a = n(0),
        s = n(5);

    e.resolveGrammar = function (t, e) {
      var n = new u(t, e);
      return n.resolveRefs(), n.errors;
    };

    var u = function (t) {
      function e(e, n) {
        var r = t.call(this) || this;
        return r.nameToTopRule = e, r.errMsgProvider = n, r.errors = [], r;
      }

      return i(e, t), e.prototype.resolveRefs = function () {
        var t = this;
        a.forEach(this.nameToTopRule.values(), function (e) {
          t.currTopLevel = e, e.accept(t);
        });
      }, e.prototype.visitNonTerminal = function (t) {
        var e = this.nameToTopRule.get(t.nonTerminalName);
        if (e) t.referencedRule = e;else {
          var n = this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel, t);
          this.errors.push({
            message: n,
            type: o.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,
            ruleName: this.currTopLevel.name,
            unresolvedRefName: t.nonTerminalName
          });
        }
      }, e;
    }(s.GAstVisitor);

    e.GastRefResolverVisitor = u;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(12),
        i = n(0),
        o = n(3),
        a = n(9),
        s = function () {
      function t() {}

      return t.prototype.initLooksAhead = function (t) {
        this.dynamicTokensEnabled = i.has(t, "dynamicTokensEnabled") ? t.dynamicTokensEnabled : o.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled, this.maxLookahead = i.has(t, "maxLookahead") ? t.maxLookahead : o.DEFAULT_PARSER_CONFIG.maxLookahead, this.lookAheadFuncsCache = i.isES2015MapSupported() ? new _Map() : [], i.isES2015MapSupported() ? (this.getLaFuncFromCache = this.getLaFuncFromMap, this.setLaFuncCache = this.setLaFuncCacheUsingMap) : (this.getLaFuncFromCache = this.getLaFuncFromObj, this.setLaFuncCache = this.setLaFuncUsingObj);
      }, t.prototype.lookAheadBuilderForOptional = function (t, e, n) {
        return r.buildSingleAlternativeLookaheadFunction(t, e, n);
      }, t.prototype.lookAheadBuilderForAlternatives = function (t, e, n, i) {
        return r.buildAlternativesLookAheadFunc(t, e, n, i);
      }, t.prototype.getKeyForAutomaticLookahead = function (t, e) {
        var n = this.getLastExplicitRuleShortName();
        return a.getKeyForAutomaticLookahead(n, t, e);
      }, t.prototype.getLookaheadFuncForOr = function (t, e) {
        var n = this.getKeyForAutomaticLookahead(a.OR_IDX, t),
            o = this.getLaFuncFromCache(n);

        if (void 0 === o) {
          var s = this.getCurrRuleFullName(),
              u = this.getGAstProductions().get(s),
              c = i.some(e, function (t) {
            return i.isFunction(t.GATE);
          });
          return o = r.buildLookaheadFuncForOr(t, u, this.maxLookahead, c, this.dynamicTokensEnabled, this.lookAheadBuilderForAlternatives), this.setLaFuncCache(n, o), o;
        }

        return o;
      }, t.prototype.getLookaheadFuncForOption = function (t, e) {
        return this.getLookaheadFuncFor(t, e, this.maxLookahead, r.PROD_TYPE.OPTION);
      }, t.prototype.getLookaheadFuncForMany = function (t, e) {
        return this.getLookaheadFuncFor(t, e, this.maxLookahead, r.PROD_TYPE.REPETITION);
      }, t.prototype.getLookaheadFuncForManySep = function (t, e) {
        return this.getLookaheadFuncFor(t, e, this.maxLookahead, r.PROD_TYPE.REPETITION_WITH_SEPARATOR);
      }, t.prototype.getLookaheadFuncForAtLeastOne = function (t, e) {
        return this.getLookaheadFuncFor(t, e, this.maxLookahead, r.PROD_TYPE.REPETITION_MANDATORY);
      }, t.prototype.getLookaheadFuncForAtLeastOneSep = function (t, e) {
        return this.getLookaheadFuncFor(t, e, this.maxLookahead, r.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR);
      }, t.prototype.getLookaheadFuncFor = function (t, e, n, i) {
        var o = this.getLaFuncFromCache(t);

        if (void 0 === o) {
          var a = this.getCurrRuleFullName(),
              s = this.getGAstProductions().get(a);
          return o = r.buildLookaheadFuncForOptionalProd(e, s, n, this.dynamicTokensEnabled, i, this.lookAheadBuilderForOptional), this.setLaFuncCache(t, o), o;
        }

        return o;
      }, t.prototype.getLaFuncFromCache = function (t) {}, t.prototype.getLaFuncFromMap = function (t) {
        return this.lookAheadFuncsCache.get(t);
      }, t.prototype.getLaFuncFromObj = function (t) {
        return this.lookAheadFuncsCache[t];
      }, t.prototype.setLaFuncCache = function (t, e) {}, t.prototype.setLaFuncCacheUsingMap = function (t, e) {
        this.lookAheadFuncsCache.set(t, e);
      }, t.prototype.setLaFuncUsingObj = function (t, e) {
        this.lookAheadFuncsCache[t] = e;
      }, t;
    }();

    e.LooksAhead = s;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(16),
        i = n(0),
        o = n(33),
        a = n(9),
        s = n(3),
        u = function () {
      function t() {}

      return t.prototype.initTreeBuilder = function (t) {
        this.LAST_EXPLICIT_RULE_STACK = [], this.CST_STACK = [], this.outputCst = i.has(t, "outputCst") ? t.outputCst : s.DEFAULT_PARSER_CONFIG.outputCst, this.outputCst || (this.cstInvocationStateUpdate = i.NOOP, this.cstFinallyStateUpdate = i.NOOP, this.cstPostTerminal = i.NOOP, this.cstPostNonTerminal = i.NOOP, this.getLastExplicitRuleShortName = this.getLastExplicitRuleShortNameNoCst, this.getPreviousExplicitRuleShortName = this.getPreviousExplicitRuleShortNameNoCst, this.getLastExplicitRuleOccurrenceIndex = this.getLastExplicitRuleOccurrenceIndexNoCst, this.manyInternal = this.manyInternalNoCst, this.orInternal = this.orInternalNoCst, this.optionInternal = this.optionInternalNoCst, this.atLeastOneInternal = this.atLeastOneInternalNoCst, this.manySepFirstInternal = this.manySepFirstInternalNoCst, this.atLeastOneSepFirstInternal = this.atLeastOneSepFirstInternalNoCst);
      }, t.prototype.cstNestedInvocationStateUpdate = function (t, e) {
        this.CST_STACK.push({
          name: t,
          fullName: this.shortRuleNameToFull.get(this.getLastExplicitRuleShortName()) + t,
          children: {}
        });
      }, t.prototype.cstInvocationStateUpdate = function (t, e) {
        this.LAST_EXPLICIT_RULE_STACK.push(this.RULE_STACK.length - 1), this.CST_STACK.push({
          name: t,
          children: {}
        });
      }, t.prototype.cstFinallyStateUpdate = function () {
        this.LAST_EXPLICIT_RULE_STACK.pop(), this.CST_STACK.pop();
      }, t.prototype.cstNestedFinallyStateUpdate = function () {
        this.CST_STACK.pop();
      }, t.prototype.cstPostTerminal = function (t, e) {
        var n = this.CST_STACK[this.CST_STACK.length - 1];
        r.addTerminalToCst(n, e, t);
      }, t.prototype.cstPostNonTerminal = function (t, e) {
        r.addNoneTerminalToCst(this.CST_STACK[this.CST_STACK.length - 1], e, t);
      }, t.prototype.getBaseCstVisitorConstructor = function () {
        if (i.isUndefined(this.baseCstVisitorConstructor)) {
          var t = o.createBaseSemanticVisitorConstructor(this.className, this.allRuleNames);
          return this.baseCstVisitorConstructor = t, t;
        }

        return this.baseCstVisitorConstructor;
      }, t.prototype.getBaseCstVisitorConstructorWithDefaults = function () {
        if (i.isUndefined(this.baseCstVisitorWithDefaultsConstructor)) {
          var t = o.createBaseVisitorConstructorWithDefaults(this.className, this.allRuleNames, this.getBaseCstVisitorConstructor());
          return this.baseCstVisitorWithDefaultsConstructor = t, t;
        }

        return this.baseCstVisitorWithDefaultsConstructor;
      }, t.prototype.nestedRuleBeforeClause = function (t, e) {
        var n;
        return void 0 !== t.NAME ? (n = t.NAME, this.nestedRuleInvocationStateUpdate(n, e), n) : void 0;
      }, t.prototype.nestedAltBeforeClause = function (t, e, n, r) {
        var i,
            o = this.getLastExplicitRuleShortName(),
            s = a.getKeyForAltIndex(o, n, e, r);
        return void 0 !== t.NAME ? (i = t.NAME, this.nestedRuleInvocationStateUpdate(i, s), {
          shortName: s,
          nestedName: i
        }) : void 0;
      }, t.prototype.nestedRuleFinallyClause = function (t, e) {
        var n = this.CST_STACK,
            i = n[n.length - 1];
        this.nestedRuleFinallyStateUpdate();
        var o = n[n.length - 1];
        r.addNoneTerminalToCst(o, e, i);
      }, t.prototype.getLastExplicitRuleShortName = function () {
        var t = this.LAST_EXPLICIT_RULE_STACK[this.LAST_EXPLICIT_RULE_STACK.length - 1];
        return this.RULE_STACK[t];
      }, t.prototype.getLastExplicitRuleShortNameNoCst = function () {
        var t = this.RULE_STACK;
        return t[t.length - 1];
      }, t.prototype.getPreviousExplicitRuleShortName = function () {
        var t = this.LAST_EXPLICIT_RULE_STACK[this.LAST_EXPLICIT_RULE_STACK.length - 2];
        return this.RULE_STACK[t];
      }, t.prototype.getPreviousExplicitRuleShortNameNoCst = function () {
        var t = this.RULE_STACK;
        return t[t.length - 2];
      }, t.prototype.getLastExplicitRuleOccurrenceIndex = function () {
        var t = this.LAST_EXPLICIT_RULE_STACK[this.LAST_EXPLICIT_RULE_STACK.length - 1];
        return this.RULE_OCCURRENCE_STACK[t];
      }, t.prototype.getLastExplicitRuleOccurrenceIndexNoCst = function () {
        var t = this.RULE_OCCURRENCE_STACK;
        return t[t.length - 1];
      }, t.prototype.nestedRuleInvocationStateUpdate = function (t, e) {
        this.RULE_OCCURRENCE_STACK.push(1), this.RULE_STACK.push(e), this.cstNestedInvocationStateUpdate(t, e);
      }, t.prototype.nestedRuleFinallyStateUpdate = function () {
        this.RULE_STACK.pop(), this.RULE_OCCURRENCE_STACK.pop(), this.cstNestedFinallyStateUpdate();
      }, t;
    }();

    e.TreeBuilder = u;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r,
        i = n(0),
        o = n(4),
        a = n(11);

    function s(t, e) {
      for (var n = i.keys(t), r = n.length, o = 0; o < r; o++) {
        for (var a = t[n[o]], s = a.length, u = 0; u < s; u++) {
          var c = a[u];
          void 0 === c.tokenTypeIdx && (void 0 !== c.fullName ? this[c.fullName](c.children, e) : this[c.name](c.children, e));
        }
      }
    }

    function u(t, e) {
      var n = c(t, e),
          r = l(t, e);
      return n.concat(r);
    }

    function c(t, e) {
      var n = i.map(e, function (e) {
        if (!i.isFunction(t[e])) return {
          msg: "Missing visitor method: <" + e + "> on " + o.functionName(t.constructor) + " CST Visitor.",
          type: r.MISSING_METHOD,
          methodName: e
        };
      });
      return i.compact(n);
    }

    e.defaultVisit = s, e.createBaseSemanticVisitorConstructor = function (t, e) {
      var n = function n() {};

      return o.defineNameProp(n, t + "BaseSemantics"), (n.prototype = {
        visit: function visit(t, e) {
          if (i.isArray(t) && (t = t[0]), !i.isUndefined(t)) return void 0 !== t.fullName ? this[t.fullName](t.children, e) : this[t.name](t.children, e);
        },
        validateVisitor: function validateVisitor() {
          var t = u(this, e);

          if (!i.isEmpty(t)) {
            var n = i.map(t, function (t) {
              return t.msg;
            });
            throw Error("Errors Detected in CST Visitor <" + o.functionName(this.constructor) + ">:\n\t" + n.join("\n\n").replace(/\n/g, "\n\t"));
          }
        }
      }).constructor = n, n._RULE_NAMES = e, n;
    }, e.createBaseVisitorConstructorWithDefaults = function (t, e, n) {
      var r = function r() {};

      o.defineNameProp(r, t + "BaseSemanticsWithDefaults");

      var a = _Object$create(n.prototype);

      return i.forEach(e, function (t) {
        a[t] = s;
      }), (r.prototype = a).constructor = r, r;
    }, function (t) {
      t[t.REDUNDANT_METHOD = 0] = "REDUNDANT_METHOD", t[t.MISSING_METHOD = 1] = "MISSING_METHOD";
    }(r = e.CstVisitorDefinitionError || (e.CstVisitorDefinitionError = {})), e.validateVisitor = u, e.validateMissingCstMethods = c;
    var p = ["constructor", "visit", "validateVisitor"];

    function l(t, e) {
      var n = [];

      for (var s in t) {
        a.validTermsPattern.test(s) && i.isFunction(t[s]) && !i.contains(p, s) && !i.contains(e, s) && n.push({
          msg: "Redundant visitor method: <" + s + "> on " + o.functionName(t.constructor) + " CST Visitor\nThere is no Grammar Rule corresponding to this method's name.\nFor utility methods on visitor classes use methods names that do not match /" + a.validTermsPattern.source + "/.",
          type: r.REDUNDANT_METHOD,
          methodName: s
        });
      }

      return n;
    }

    e.validateRedundantMethods = l;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(3),
        i = function () {
      function t() {}

      return t.prototype.initLexerAdapter = function () {
        this.tokVector = [], this.tokVectorLength = 0, this.currIdx = -1;
      }, _Object$defineProperty(t.prototype, "input", {
        get: function get() {
          return this.tokVector;
        },
        set: function set(t) {
          this.reset(), this.tokVector = t, this.tokVectorLength = t.length;
        },
        enumerable: !0,
        configurable: !0
      }), t.prototype.SKIP_TOKEN = function () {
        return this.currIdx <= this.tokVector.length - 2 ? (this.consumeToken(), this.LA(1)) : r.END_OF_FILE;
      }, t.prototype.LA = function (t) {
        return this.currIdx + t < 0 || this.tokVectorLength <= this.currIdx + t ? r.END_OF_FILE : this.tokVector[this.currIdx + t];
      }, t.prototype.consumeToken = function () {
        this.currIdx++;
      }, t.prototype.exportLexerState = function () {
        return this.currIdx;
      }, t.prototype.importLexerState = function (t) {
        this.currIdx = t;
      }, t.prototype.resetLexerState = function () {
        this.currIdx = -1;
      }, t.prototype.moveToTerminatedState = function () {
        this.currIdx = this.tokVector.length - 1;
      }, t.prototype.getLexerPosition = function () {
        return this.exportLexerState();
      }, t;
    }();

    e.LexerAdapter = i;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(0),
        i = n(6),
        o = n(3),
        a = n(10),
        s = n(23),
        u = n(11),
        c = n(1),
        p = function () {
      function t() {}

      return t.prototype.CONSUME = function (t, e) {
        return this.consumeInternal(t, 0, e);
      }, t.prototype.CONSUME1 = function (t, e) {
        return this.consumeInternal(t, 1, e);
      }, t.prototype.CONSUME2 = function (t, e) {
        return this.consumeInternal(t, 2, e);
      }, t.prototype.CONSUME3 = function (t, e) {
        return this.consumeInternal(t, 3, e);
      }, t.prototype.CONSUME4 = function (t, e) {
        return this.consumeInternal(t, 4, e);
      }, t.prototype.CONSUME5 = function (t, e) {
        return this.consumeInternal(t, 5, e);
      }, t.prototype.CONSUME6 = function (t, e) {
        return this.consumeInternal(t, 6, e);
      }, t.prototype.CONSUME7 = function (t, e) {
        return this.consumeInternal(t, 7, e);
      }, t.prototype.CONSUME8 = function (t, e) {
        return this.consumeInternal(t, 8, e);
      }, t.prototype.CONSUME9 = function (t, e) {
        return this.consumeInternal(t, 9, e);
      }, t.prototype.SUBRULE = function (t, e) {
        return this.subruleInternal(t, 0, e);
      }, t.prototype.SUBRULE1 = function (t, e) {
        return this.subruleInternal(t, 1, e);
      }, t.prototype.SUBRULE2 = function (t, e) {
        return this.subruleInternal(t, 2, e);
      }, t.prototype.SUBRULE3 = function (t, e) {
        return this.subruleInternal(t, 3, e);
      }, t.prototype.SUBRULE4 = function (t, e) {
        return this.subruleInternal(t, 4, e);
      }, t.prototype.SUBRULE5 = function (t, e) {
        return this.subruleInternal(t, 5, e);
      }, t.prototype.SUBRULE6 = function (t, e) {
        return this.subruleInternal(t, 6, e);
      }, t.prototype.SUBRULE7 = function (t, e) {
        return this.subruleInternal(t, 7, e);
      }, t.prototype.SUBRULE8 = function (t, e) {
        return this.subruleInternal(t, 8, e);
      }, t.prototype.SUBRULE9 = function (t, e) {
        return this.subruleInternal(t, 9, e);
      }, t.prototype.OPTION = function (t) {
        return this.optionInternal(t, 0);
      }, t.prototype.OPTION1 = function (t) {
        return this.optionInternal(t, 1);
      }, t.prototype.OPTION2 = function (t) {
        return this.optionInternal(t, 2);
      }, t.prototype.OPTION3 = function (t) {
        return this.optionInternal(t, 3);
      }, t.prototype.OPTION4 = function (t) {
        return this.optionInternal(t, 4);
      }, t.prototype.OPTION5 = function (t) {
        return this.optionInternal(t, 5);
      }, t.prototype.OPTION6 = function (t) {
        return this.optionInternal(t, 6);
      }, t.prototype.OPTION7 = function (t) {
        return this.optionInternal(t, 7);
      }, t.prototype.OPTION8 = function (t) {
        return this.optionInternal(t, 8);
      }, t.prototype.OPTION9 = function (t) {
        return this.optionInternal(t, 9);
      }, t.prototype.OR = function (t) {
        return this.orInternal(t, 0);
      }, t.prototype.OR1 = function (t) {
        return this.orInternal(t, 1);
      }, t.prototype.OR2 = function (t) {
        return this.orInternal(t, 2);
      }, t.prototype.OR3 = function (t) {
        return this.orInternal(t, 3);
      }, t.prototype.OR4 = function (t) {
        return this.orInternal(t, 4);
      }, t.prototype.OR5 = function (t) {
        return this.orInternal(t, 5);
      }, t.prototype.OR6 = function (t) {
        return this.orInternal(t, 6);
      }, t.prototype.OR7 = function (t) {
        return this.orInternal(t, 7);
      }, t.prototype.OR8 = function (t) {
        return this.orInternal(t, 8);
      }, t.prototype.OR9 = function (t) {
        return this.orInternal(t, 9);
      }, t.prototype.MANY = function (t) {
        this.manyInternal(0, t);
      }, t.prototype.MANY1 = function (t) {
        this.manyInternal(1, t);
      }, t.prototype.MANY2 = function (t) {
        this.manyInternal(2, t);
      }, t.prototype.MANY3 = function (t) {
        this.manyInternal(3, t);
      }, t.prototype.MANY4 = function (t) {
        this.manyInternal(4, t);
      }, t.prototype.MANY5 = function (t) {
        this.manyInternal(5, t);
      }, t.prototype.MANY6 = function (t) {
        this.manyInternal(6, t);
      }, t.prototype.MANY7 = function (t) {
        this.manyInternal(7, t);
      }, t.prototype.MANY8 = function (t) {
        this.manyInternal(8, t);
      }, t.prototype.MANY9 = function (t) {
        this.manyInternal(9, t);
      }, t.prototype.MANY_SEP = function (t) {
        this.manySepFirstInternal(0, t);
      }, t.prototype.MANY_SEP1 = function (t) {
        this.manySepFirstInternal(1, t);
      }, t.prototype.MANY_SEP2 = function (t) {
        this.manySepFirstInternal(2, t);
      }, t.prototype.MANY_SEP3 = function (t) {
        this.manySepFirstInternal(3, t);
      }, t.prototype.MANY_SEP4 = function (t) {
        this.manySepFirstInternal(4, t);
      }, t.prototype.MANY_SEP5 = function (t) {
        this.manySepFirstInternal(5, t);
      }, t.prototype.MANY_SEP6 = function (t) {
        this.manySepFirstInternal(6, t);
      }, t.prototype.MANY_SEP7 = function (t) {
        this.manySepFirstInternal(7, t);
      }, t.prototype.MANY_SEP8 = function (t) {
        this.manySepFirstInternal(8, t);
      }, t.prototype.MANY_SEP9 = function (t) {
        this.manySepFirstInternal(9, t);
      }, t.prototype.AT_LEAST_ONE = function (t) {
        this.atLeastOneInternal(0, t);
      }, t.prototype.AT_LEAST_ONE1 = function (t) {
        return this.atLeastOneInternal(1, t);
      }, t.prototype.AT_LEAST_ONE2 = function (t) {
        this.atLeastOneInternal(2, t);
      }, t.prototype.AT_LEAST_ONE3 = function (t) {
        this.atLeastOneInternal(3, t);
      }, t.prototype.AT_LEAST_ONE4 = function (t) {
        this.atLeastOneInternal(4, t);
      }, t.prototype.AT_LEAST_ONE5 = function (t) {
        this.atLeastOneInternal(5, t);
      }, t.prototype.AT_LEAST_ONE6 = function (t) {
        this.atLeastOneInternal(6, t);
      }, t.prototype.AT_LEAST_ONE7 = function (t) {
        this.atLeastOneInternal(7, t);
      }, t.prototype.AT_LEAST_ONE8 = function (t) {
        this.atLeastOneInternal(8, t);
      }, t.prototype.AT_LEAST_ONE9 = function (t) {
        this.atLeastOneInternal(9, t);
      }, t.prototype.AT_LEAST_ONE_SEP = function (t) {
        this.atLeastOneSepFirstInternal(0, t);
      }, t.prototype.AT_LEAST_ONE_SEP1 = function (t) {
        this.atLeastOneSepFirstInternal(1, t);
      }, t.prototype.AT_LEAST_ONE_SEP2 = function (t) {
        this.atLeastOneSepFirstInternal(2, t);
      }, t.prototype.AT_LEAST_ONE_SEP3 = function (t) {
        this.atLeastOneSepFirstInternal(3, t);
      }, t.prototype.AT_LEAST_ONE_SEP4 = function (t) {
        this.atLeastOneSepFirstInternal(4, t);
      }, t.prototype.AT_LEAST_ONE_SEP5 = function (t) {
        this.atLeastOneSepFirstInternal(5, t);
      }, t.prototype.AT_LEAST_ONE_SEP6 = function (t) {
        this.atLeastOneSepFirstInternal(6, t);
      }, t.prototype.AT_LEAST_ONE_SEP7 = function (t) {
        this.atLeastOneSepFirstInternal(7, t);
      }, t.prototype.AT_LEAST_ONE_SEP8 = function (t) {
        this.atLeastOneSepFirstInternal(8, t);
      }, t.prototype.AT_LEAST_ONE_SEP9 = function (t) {
        this.atLeastOneSepFirstInternal(9, t);
      }, t.prototype.RULE = function (t, e, n) {
        if (void 0 === n && (n = o.DEFAULT_RULE_CONFIG), r.contains(this.definedRulesNames, t)) {
          var i = {
            message: a.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({
              topLevelRule: t,
              grammarName: this.className
            }),
            type: o.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,
            ruleName: t
          };
          this.definitionErrors.push(i);
        }

        if (this.definedRulesNames.push(t), !this.gastProductionsCache.containsKey(t) && !this.serializedGrammar) {
          var u = s.buildTopProduction(e.toString(), t, this.tokensMap);
          this.gastProductionsCache.put(t, u);
        }

        var c = this.defineRule(t, e, n);
        return this[t] = c, c;
      }, t.prototype.OVERRIDE_RULE = function (t, e, n) {
        void 0 === n && (n = o.DEFAULT_RULE_CONFIG);
        var r = [];

        if (r = r.concat(u.validateRuleIsOverridden(t, this.definedRulesNames, this.className)), this.definitionErrors.push.apply(this.definitionErrors, r), !this.serializedGrammar) {
          var i = s.buildTopProduction(e.toString(), t, this.tokensMap);
          this.gastProductionsCache.put(t, i);
        }

        var a = this.defineRule(t, e, n);
        return this[t] = a, a;
      }, t.prototype.BACKTRACK = function (t, e) {
        return function () {
          this.isBackTrackingStack.push(1);
          var n = this.saveRecogState();

          try {
            return t.apply(this, e), !0;
          } catch (t) {
            if (i.isRecognitionException(t)) return !1;
            throw t;
          } finally {
            this.reloadRecogState(n), this.isBackTrackingStack.pop();
          }
        };
      }, t.prototype.getGAstProductions = function () {
        return this.gastProductionsCache;
      }, t.prototype.getSerializedGastProductions = function () {
        return c.serializeGrammar(this.gastProductionsCache.values());
      }, t;
    }();

    e.RecognizerApi = p;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(0),
        i = n(9),
        o = n(6),
        a = n(12),
        s = n(13),
        u = n(3),
        c = n(25),
        p = n(2),
        l = n(7),
        h = n(4),
        f = function () {
      function t() {}

      return t.prototype.initRecognizerEngine = function (t, e) {
        if (this.className = h.classNameFromInstance(this), this.shortRuleNameToFull = new h.HashTable(), this.fullRuleNameToShort = new h.HashTable(), this.ruleShortNameIdx = 256, this.tokenMatcher = l.tokenStructuredMatcherNoCategories, this.definedRulesNames = [], this.tokensMap = {}, this.allRuleNames = [], this.isBackTrackingStack = [], this.RULE_STACK = [], this.RULE_OCCURRENCE_STACK = [], this.gastProductionsCache = new h.HashTable(), this.serializedGrammar = r.has(e, "serializedGrammar") ? e.serializedGrammar : u.DEFAULT_PARSER_CONFIG.serializedGrammar, r.isArray(t)) {
          if (r.isEmpty(t)) throw Error("A Token Vocabulary cannot be empty.\n\tNote that the first argument for the parser constructor\n\tis no longer a Token vector (since v4.0).");
          if ("number" == typeof t[0].startOffset) throw Error("The Parser constructor no longer accepts a token vector as the first argument.\n\tSee: https://sap.github.io/chevrotain/docs/changes/BREAKING_CHANGES.html#_4-0-0\n\tFor Further details.");
        }

        if (r.isArray(t)) this.tokensMap = r.reduce(t, function (t, e) {
          return t[p.tokenName(e)] = e, t;
        }, {});else if (r.has(t, "modes") && r.every(r.flatten(r.values(t.modes)), l.isTokenType)) {
          var n = r.flatten(r.values(t.modes)),
              i = r.uniq(n);
          this.tokensMap = r.reduce(i, function (t, e) {
            return t[p.tokenName(e)] = e, t;
          }, {});
        } else {
          if (!r.isObject(t)) throw new Error("<tokensDictionary> argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");
          this.tokensMap = r.cloneObj(t);
        }
        this.tokensMap.EOF = p.EOF;
        var o = r.every(r.values(t), function (t) {
          return r.isEmpty(t.categoryMatches);
        });
        this.tokenMatcher = o ? l.tokenStructuredMatcherNoCategories : l.tokenStructuredMatcher, l.augmentTokenTypes(r.values(this.tokensMap));
      }, t.prototype.defineRule = function (t, e, n) {
        if (this.selfAnalysisDone) throw Error("Grammar rule <" + t + "> may not be defined after the 'performSelfAnalysis' method has been called'\nMake sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.");
        var a,
            s = r.has(n, "resyncEnabled") ? n.resyncEnabled : u.DEFAULT_RULE_CONFIG.resyncEnabled,
            c = r.has(n, "recoveryValueFunc") ? n.recoveryValueFunc : u.DEFAULT_RULE_CONFIG.recoveryValueFunc,
            p = this.ruleShortNameIdx << i.BITS_FOR_METHOD_IDX + i.BITS_FOR_OCCURRENCE_IDX;
        this.ruleShortNameIdx++, this.shortRuleNameToFull.put(p, t), this.fullRuleNameToShort.put(t, p);
        return (a = function a(n, r) {
          return void 0 === n && (n = 0), this.ruleInvocationStateUpdate(p, t, n), function (t) {
            try {
              return !0 === this.outputCst ? (e.apply(this, t), this.CST_STACK[this.CST_STACK.length - 1]) : e.apply(this, t);
            } catch (t) {
              var n = 1 === this.RULE_STACK.length,
                  r = s && !this.isBackTracking() && this.recoveryEnabled;

              if (o.isRecognitionException(t)) {
                if (r) {
                  var i,
                      a = this.findReSyncTokenType();
                  if (this.isInCurrentRuleReSyncSet(a)) return t.resyncedTokens = this.reSyncTo(a), this.outputCst ? ((i = this.CST_STACK[this.CST_STACK.length - 1]).recoveredNode = !0, i) : c();
                  throw this.outputCst && ((i = this.CST_STACK[this.CST_STACK.length - 1]).recoveredNode = !0, t.partialCstResult = i), t;
                }

                if (n) return this.moveToTerminatedState(), c();
                throw t;
              }

              throw t;
            } finally {
              this.ruleFinallyStateUpdate();
            }
          }.call(this, r);
        }).ruleName = t, a;
      }, t.prototype.optionInternal = function (t, e) {
        var n = this.getKeyForAutomaticLookahead(i.OPTION_IDX, e),
            r = this.nestedRuleBeforeClause(t, n);

        try {
          return this.optionInternalLogic(t, e, n);
        } finally {
          void 0 !== r && this.nestedRuleFinallyClause(n, r);
        }
      }, t.prototype.optionInternalNoCst = function (t, e) {
        var n = this.getKeyForAutomaticLookahead(i.OPTION_IDX, e);
        return this.optionInternalLogic(t, e, n);
      }, t.prototype.optionInternalLogic = function (t, e, n) {
        var r,
            i,
            o = this,
            a = this.getLookaheadFuncForOption(n, e);

        if (void 0 !== t.DEF) {
          if (r = t.DEF, void 0 !== (i = t.GATE)) {
            var s = a;

            a = function a() {
              return i.call(o) && s.call(o);
            };
          }
        } else r = t;

        if (!0 === a.call(this)) return r.call(this);
      }, t.prototype.atLeastOneInternal = function (t, e) {
        var n = this.getKeyForAutomaticLookahead(i.AT_LEAST_ONE_IDX, t),
            r = this.nestedRuleBeforeClause(e, n);

        try {
          return this.atLeastOneInternalLogic(t, e, n);
        } finally {
          void 0 !== r && this.nestedRuleFinallyClause(n, r);
        }
      }, t.prototype.atLeastOneInternalNoCst = function (t, e) {
        var n = this.getKeyForAutomaticLookahead(i.AT_LEAST_ONE_IDX, t);
        this.atLeastOneInternalLogic(t, e, n);
      }, t.prototype.atLeastOneInternalLogic = function (t, e, n) {
        var r,
            o,
            u = this,
            c = this.getLookaheadFuncForAtLeastOne(n, t);

        if (void 0 !== e.DEF) {
          if (r = e.DEF, void 0 !== (o = e.GATE)) {
            var p = c;

            c = function c() {
              return o.call(u) && p.call(u);
            };
          }
        } else r = e;

        if (!0 !== c.call(this)) throw this.raiseEarlyExitException(t, a.PROD_TYPE.REPETITION_MANDATORY, e.ERR_MSG);

        for (var l = this.doSingleRepetition(r); !0 === c.call(this) && !0 === l;) {
          l = this.doSingleRepetition(r);
        }

        this.attemptInRepetitionRecovery(this.atLeastOneInternal, [t, e], c, i.AT_LEAST_ONE_IDX, t, s.NextTerminalAfterAtLeastOneWalker);
      }, t.prototype.atLeastOneSepFirstInternal = function (t, e) {
        var n = this.getKeyForAutomaticLookahead(i.AT_LEAST_ONE_SEP_IDX, t),
            r = this.nestedRuleBeforeClause(e, n);

        try {
          this.atLeastOneSepFirstInternalLogic(t, e, n);
        } finally {
          void 0 !== r && this.nestedRuleFinallyClause(n, r);
        }
      }, t.prototype.atLeastOneSepFirstInternalNoCst = function (t, e) {
        var n = this.getKeyForAutomaticLookahead(i.AT_LEAST_ONE_SEP_IDX, t);
        this.atLeastOneSepFirstInternalLogic(t, e, n);
      }, t.prototype.atLeastOneSepFirstInternalLogic = function (t, e, n) {
        var r = this,
            o = e.DEF,
            u = e.SEP;
        if (!0 !== this.getLookaheadFuncForAtLeastOneSep(n, t).call(this)) throw this.raiseEarlyExitException(t, a.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, e.ERR_MSG);
        o.call(this);

        for (var c = function c() {
          return r.tokenMatcher(r.LA(1), u);
        }; !0 === this.tokenMatcher(this.LA(1), u);) {
          this.CONSUME(u), o.call(this);
        }

        this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [t, u, c, o, s.NextTerminalAfterAtLeastOneSepWalker], c, i.AT_LEAST_ONE_SEP_IDX, t, s.NextTerminalAfterAtLeastOneSepWalker);
      }, t.prototype.manyInternal = function (t, e) {
        var n = this.getKeyForAutomaticLookahead(i.MANY_IDX, t),
            r = this.nestedRuleBeforeClause(e, n);

        try {
          return this.manyInternalLogic(t, e, n);
        } finally {
          void 0 !== r && this.nestedRuleFinallyClause(n, r);
        }
      }, t.prototype.manyInternalNoCst = function (t, e) {
        var n = this.getKeyForAutomaticLookahead(i.MANY_IDX, t);
        return this.manyInternalLogic(t, e, n);
      }, t.prototype.manyInternalLogic = function (t, e, n) {
        var r,
            o,
            a = this,
            u = this.getLookaheadFuncForMany(n, t);

        if (void 0 !== e.DEF) {
          if (r = e.DEF, void 0 !== (o = e.GATE)) {
            var c = u;

            u = function u() {
              return o.call(a) && c.call(a);
            };
          }
        } else r = e;

        for (var p = !0; !0 === u.call(this) && !0 === p;) {
          p = this.doSingleRepetition(r);
        }

        this.attemptInRepetitionRecovery(this.manyInternal, [t, e], u, i.MANY_IDX, t, s.NextTerminalAfterManyWalker);
      }, t.prototype.manySepFirstInternal = function (t, e) {
        var n = this.getKeyForAutomaticLookahead(i.MANY_SEP_IDX, t),
            r = this.nestedRuleBeforeClause(e, n);

        try {
          this.manySepFirstInternalLogic(t, e, n);
        } finally {
          void 0 !== r && this.nestedRuleFinallyClause(n, r);
        }
      }, t.prototype.manySepFirstInternalNoCst = function (t, e) {
        var n = this.getKeyForAutomaticLookahead(i.MANY_SEP_IDX, t);
        this.manySepFirstInternalLogic(t, e, n);
      }, t.prototype.manySepFirstInternalLogic = function (t, e, n) {
        var r = this,
            o = e.DEF,
            a = e.SEP;

        if (!0 === this.getLookaheadFuncForManySep(n, t).call(this)) {
          o.call(this);

          for (var u = function u() {
            return r.tokenMatcher(r.LA(1), a);
          }; !0 === this.tokenMatcher(this.LA(1), a);) {
            this.CONSUME(a), o.call(this);
          }

          this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [t, a, u, o, s.NextTerminalAfterManySepWalker], u, i.MANY_SEP_IDX, t, s.NextTerminalAfterManySepWalker);
        }
      }, t.prototype.repetitionSepSecondInternal = function (t, e, n, r, o) {
        for (; n();) {
          this.CONSUME(e), r.call(this);
        }

        this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [t, e, n, r, o], n, i.AT_LEAST_ONE_SEP_IDX, t, o);
      }, t.prototype.doSingleRepetition = function (t) {
        var e = this.getLexerPosition();
        return t.call(this), this.getLexerPosition() > e;
      }, t.prototype.orInternalNoCst = function (t, e) {
        var n = r.isArray(t) ? t : t.DEF,
            i = this.getLookaheadFuncForOr(e, n).call(this, n);
        if (void 0 !== i) return n[i].ALT.call(this);
        this.raiseNoAltException(e, t.ERR_MSG);
      }, t.prototype.orInternal = function (t, e) {
        var n = this.getKeyForAutomaticLookahead(i.OR_IDX, e),
            o = this.nestedRuleBeforeClause(t, n);

        try {
          var a = r.isArray(t) ? t : t.DEF,
              s = this.getLookaheadFuncForOr(e, a).call(this, a);

          if (void 0 !== s) {
            var u = a[s],
                c = this.nestedAltBeforeClause(u, e, i.OR_IDX, s);

            try {
              return u.ALT.call(this);
            } finally {
              void 0 !== c && this.nestedRuleFinallyClause(c.shortName, c.nestedName);
            }
          }

          this.raiseNoAltException(e, t.ERR_MSG);
        } finally {
          void 0 !== o && this.nestedRuleFinallyClause(n, o);
        }
      }, t.prototype.ruleFinallyStateUpdate = function () {
        if (this.RULE_STACK.pop(), this.RULE_OCCURRENCE_STACK.pop(), this.cstFinallyStateUpdate(), 0 === this.RULE_STACK.length && !this.isAtEndOfInput()) {
          var t = this.LA(1),
              e = this.errorMessageProvider.buildNotAllInputParsedMessage({
            firstRedundant: t,
            ruleName: this.getCurrRuleFullName()
          });
          this.SAVE_ERROR(new o.NotAllInputParsedException(e, t));
        }
      }, t.prototype.subruleInternal = function (t, e, n) {
        var r;

        try {
          var i = void 0 !== n ? n.ARGS : void 0;
          return r = t.call(this, e, i), this.cstPostNonTerminal(r, void 0 !== n && void 0 !== n.LABEL ? n.LABEL : t.ruleName), r;
        } catch (e) {
          throw o.isRecognitionException(e) && void 0 !== e.partialCstResult && (this.cstPostNonTerminal(e.partialCstResult, void 0 !== n && void 0 !== n.LABEL ? n.LABEL : t.ruleName), delete e.partialCstResult), e;
        }
      }, t.prototype.consumeInternal = function (t, e, n) {
        var r;

        try {
          var i = this.LA(1);

          if (!0 !== this.tokenMatcher(i, t)) {
            var a = void 0,
                s = this.LA(0);
            throw a = void 0 !== n && n.ERR_MSG ? n.ERR_MSG : this.errorMessageProvider.buildMismatchTokenMessage({
              expected: t,
              actual: i,
              previous: s,
              ruleName: this.getCurrRuleFullName()
            }), this.SAVE_ERROR(new o.MismatchedTokenException(a, i, s));
          }

          this.consumeToken(), r = i;
        } catch (n) {
          if (!this.recoveryEnabled || "MismatchedTokenException" !== n.name || this.isBackTracking()) throw n;
          var u = this.getFollowsForInRuleRecovery(t, e);

          try {
            r = this.tryInRuleRecovery(t, u);
          } catch (t) {
            throw t.name === c.IN_RULE_RECOVERY_EXCEPTION ? n : t;
          }
        }

        return this.cstPostTerminal(void 0 !== n && void 0 !== n.LABEL ? n.LABEL : t.tokenName, r), r;
      }, t.prototype.saveRecogState = function () {
        var t = this.errors,
            e = r.cloneArr(this.RULE_STACK);
        return {
          errors: t,
          lexerState: this.exportLexerState(),
          RULE_STACK: e,
          CST_STACK: this.CST_STACK,
          LAST_EXPLICIT_RULE_STACK: this.LAST_EXPLICIT_RULE_STACK
        };
      }, t.prototype.reloadRecogState = function (t) {
        this.errors = t.errors, this.importLexerState(t.lexerState), this.RULE_STACK = t.RULE_STACK;
      }, t.prototype.ruleInvocationStateUpdate = function (t, e, n) {
        this.RULE_OCCURRENCE_STACK.push(n), this.RULE_STACK.push(t), this.cstInvocationStateUpdate(e, t);
      }, t.prototype.isBackTracking = function () {
        return !r.isEmpty(this.isBackTrackingStack);
      }, t.prototype.getCurrRuleFullName = function () {
        var t = this.getLastExplicitRuleShortName();
        return this.shortRuleNameToFull.get(t);
      }, t.prototype.shortRuleNameToFullName = function (t) {
        return this.shortRuleNameToFull.get(t);
      }, t.prototype.isAtEndOfInput = function () {
        return this.tokenMatcher(this.LA(1), p.EOF);
      }, t.prototype.reset = function () {
        this.resetLexerState(), this.isBackTrackingStack = [], this.errors = [], this.RULE_STACK = [], this.LAST_EXPLICIT_RULE_STACK = [], this.CST_STACK = [], this.RULE_OCCURRENCE_STACK = [];
      }, t;
    }();

    e.RecognizerEngine = f;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(6),
        i = n(0),
        o = n(12),
        a = n(3),
        s = function () {
      function t() {}

      return t.prototype.initErrorHandler = function (t) {
        this._errors = [], this.errorMessageProvider = i.defaults(t.errorMessageProvider, a.DEFAULT_PARSER_CONFIG.errorMessageProvider);
      }, t.prototype.SAVE_ERROR = function (t) {
        if (r.isRecognitionException(t)) return t.context = {
          ruleStack: this.getHumanReadableRuleStack(),
          ruleOccurrenceStack: i.cloneArr(this.RULE_OCCURRENCE_STACK)
        }, this._errors.push(t), t;
        throw Error("Trying to save an Error which is not a RecognitionException");
      }, _Object$defineProperty(t.prototype, "errors", {
        get: function get() {
          return i.cloneArr(this._errors);
        },
        set: function set(t) {
          this._errors = t;
        },
        enumerable: !0,
        configurable: !0
      }), t.prototype.raiseEarlyExitException = function (t, e, n) {
        for (var i = this.getCurrRuleFullName(), a = this.getGAstProductions().get(i), s = o.getLookaheadPathsForOptionalProd(t, a, e, this.maxLookahead)[0], u = [], c = 1; c < this.maxLookahead; c++) {
          u.push(this.LA(c));
        }

        var p = this.errorMessageProvider.buildEarlyExitMessage({
          expectedIterationPaths: s,
          actual: u,
          previous: this.LA(0),
          customUserDescription: n,
          ruleName: i
        });
        throw this.SAVE_ERROR(new r.EarlyExitException(p, this.LA(1), this.LA(0)));
      }, t.prototype.raiseNoAltException = function (t, e) {
        for (var n = this.getCurrRuleFullName(), i = this.getGAstProductions().get(n), a = o.getLookaheadPathsForOr(t, i, this.maxLookahead), s = [], u = 1; u <= this.maxLookahead; u++) {
          s.push(this.LA(u));
        }

        var c = this.LA(0),
            p = this.errorMessageProvider.buildNoViableAltMessage({
          expectedPathsPerAlt: a,
          actual: s,
          previous: c,
          customUserDescription: e,
          ruleName: this.getCurrRuleFullName()
        });
        throw this.SAVE_ERROR(new r.NoViableAltException(p, this.LA(1), c));
      }, t;
    }();

    e.ErrorHandler = s;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(13),
        i = n(0),
        o = function () {
      function t() {}

      return t.prototype.initContentAssist = function () {}, t.prototype.computeContentAssist = function (t, e) {
        var n = this.gastProductionsCache.get(t);
        if (i.isUndefined(n)) throw Error("Rule ->" + t + "<- does not exist in this grammar.");
        return r.nextPossibleTokensAfter([n], e, this.tokenMatcher, this.maxLookahead);
      }, t.prototype.getNextPossibleTokenTypes = function (t) {
        var e = i.first(t.ruleStack),
            n = this.getGAstProductions().get(e);
        return new r.NextAfterTokenWalker(n, t).startWalking();
      }, t;
    }();

    e.ContentAssist = o;
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(17);

    e.createSyntaxDiagramsCode = function (t, e) {
      var n = void 0 === e ? {} : e,
          i = n.resourceBase,
          o = void 0 === i ? "https://unpkg.com/chevrotain@" + r.VERSION + "/diagrams/" : i,
          a = n.css;
      return "\n\x3c!-- This is a generated file --\x3e\n<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<style>\n  body {\n    background-color: hsl(30, 20%, 95%)\n  }\n</style>\n\n\n<link rel='stylesheet' href='" + (void 0 === a ? "https://unpkg.com/chevrotain@" + r.VERSION + "/diagrams/diagrams.css" : a) + "'>\n\n<script src='" + o + "vendor/railroad-diagrams.js'><\/script>\n<script src='" + o + "src/diagrams_builder.js'><\/script>\n<script src='" + o + "src/diagrams_behavior.js'><\/script>\n<script src='" + o + 'src/main.js\'><\/script>\n\n<div id="diagrams" align="center"></div>    \n\n<script>\n    window.serializedGrammar = ' + _JSON$stringify(t, null, "  ") + ';\n<\/script>\n\n<script>\n    var diagramsDiv = document.getElementById("diagrams");\n    main.drawDiagramsFromSerializedGrammar(serializedGrammar, diagramsDiv);\n<\/script>\n';
    };
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(41);
    e.generateParserFactory = function (t) {
      var e = r.genWrapperFunction({
        name: t.name,
        rules: t.rules
      }),
          i = new Function("tokenVocabulary", "config", "chevrotain", e);
      return function (e) {
        return i(t.tokenVocabulary, e, n(18));
      };
    }, e.generateParserModule = function (t) {
      return r.genUmdModule({
        name: t.name,
        rules: t.rules
      });
    };
  }, function (t, e, n) {
    "use strict";

    _Object$defineProperty(e, "__esModule", {
      value: !0
    });

    var r = n(0),
        i = n(2),
        o = n(1),
        a = "\n";

    function s(t) {
      return "\nfunction " + t.name + "(tokenVocabulary, config) {\n    // invoke super constructor\n    // No support for embedded actions currently, so we can 'hardcode'\n    // The use of CstParser.\n    chevrotain.CstParser.call(this, tokenVocabulary, config)\n\n    const $ = this\n\n    " + u(t.rules) + "\n\n    // very important to call this after all the rules have been defined.\n    // otherwise the parser may not work correctly as it will lack information\n    // derived during the self analysis phase.\n    this.performSelfAnalysis(this)\n}\n\n// inheritance as implemented in javascript in the previous decade... :(\n" + t.name + ".prototype = Object.create(chevrotain.CstParser.prototype)\n" + t.name + ".prototype.constructor = " + t.name + "    \n    ";
    }

    function u(t) {
      return r.map(t, function (t) {
        return c(t, 1);
      }).join("\n");
    }

    function c(t, e) {
      var n = y(e, '$.RULE("' + t.name + '", function() {') + a;
      return n += m(t.definition, e + 1), n += y(e + 1, "})") + a;
    }

    function p(t, e) {
      var n = i.tokenName(t.terminalType);
      return y(e, "$.CONSUME" + t.idx + "(this.tokensMap." + n + ")" + a);
    }

    function l(t, e) {
      return y(e, "$.SUBRULE" + t.idx + "($." + t.nonTerminalName + ")" + a);
    }

    function h(t, e) {
      var n = y(e, "$.OR" + t.idx + "([") + a;
      return n += r.map(t.definition, function (t) {
        return f(t, e + 1);
      }).join("," + a), n += a + y(e, "])" + a);
    }

    function f(t, e) {
      var n = y(e, "{") + a;
      return t.name && (n += y(e + 1, 'NAME: "' + t.name + '",') + a), n += y(e + 1, "ALT: function() {") + a, n += m(t.definition, e + 1), n += y(e + 1, "}") + a, n += y(e, "}");
    }

    function d(t, e, n) {
      var r = y(n, "$." + (t + e.idx) + "(");
      return e.name || e.separator ? (r += "{" + a, e.name && (r += y(n + 1, 'NAME: "' + e.name + '"') + "," + a), e.separator && (r += y(n + 1, "SEP: this.tokensMap." + i.tokenName(e.separator)) + "," + a), r += "DEF: " + E(e.definition, n + 2) + a, r += y(n, "}") + a) : r += E(e.definition, n + 1), r += y(n, ")") + a;
    }

    function E(t, e) {
      var n = "function() {" + a;
      return n += m(t, e), n += y(e, "}") + a;
    }

    function m(t, e) {
      var n = "";
      return r.forEach(t, function (t) {
        n += function (t, e) {
          if (t instanceof o.NonTerminal) return l(t, e);
          if (t instanceof o.Option) return d("OPTION", t, e);
          if (t instanceof o.RepetitionMandatory) return d("AT_LEAST_ONE", t, e);
          if (t instanceof o.RepetitionMandatoryWithSeparator) return d("AT_LEAST_ONE_SEP", t, e);
          if (t instanceof o.RepetitionWithSeparator) return d("MANY_SEP", t, e);
          if (t instanceof o.Repetition) return d("MANY", t, e);
          if (t instanceof o.Alternation) return h(t, e);
          if (t instanceof o.Terminal) return p(t, e);
          if (t instanceof o.Flat) return m(t.definition, e);
          throw Error("non exhaustive match");
        }(t, e + 1);
      }), n;
    }

    function y(t, e) {
      return Array(4 * t + 1).join(" ") + e;
    }

    e.genUmdModule = function (t) {
      return "\n(function (root, factory) {\n    if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define(['chevrotain'], factory);\n    } else if (typeof module === 'object' && module.exports) {\n        // Node. Does not work with strict CommonJS, but\n        // only CommonJS-like environments that support module.exports,\n        // like Node.\n        module.exports = factory(require('chevrotain'));\n    } else {\n        // Browser globals (root is window)\n        root.returnExports = factory(root.b);\n    }\n}(typeof self !== 'undefined' ? self : this, function (chevrotain) {\n\n" + s(t) + "\n    \nreturn {\n    " + t.name + ": " + t.name + " \n}\n}));\n";
    }, e.genWrapperFunction = function (t) {
      return "    \n" + s(t) + "\nreturn new " + t.name + "(tokenVocabulary, config)    \n";
    }, e.genClass = s, e.genAllRules = u, e.genRule = c, e.genTerminal = p, e.genNonTerminal = l, e.genAlternation = h, e.genSingleAlt = f;
  }]);
});
export var chevrotain = window.chevrotain;