astexplorer.app
Version:
https://astexplorer.net with ES Modules support and Hot Reloading
1 lines • 168 kB
JavaScript
(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{"./node_modules/bail/index.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nmodule.exports = bail\n\nfunction bail(err) {\n if (err) {\n throw err\n }\n}\n\n\n//# sourceURL=webpack:///./node_modules/bail/index.js?")},"./node_modules/extend/index.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n//# sourceURL=webpack:///./node_modules/extend/index.js?")},"./node_modules/is-buffer/index.js":function(module,exports){eval("/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n\n//# sourceURL=webpack:///./node_modules/is-buffer/index.js?")},"./node_modules/is-plain-obj/index.js":function(module,exports,__webpack_require__){"use strict";eval("\nvar toString = Object.prototype.toString;\n\nmodule.exports = function (x) {\n\tvar prototype;\n\treturn toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));\n};\n\n\n//# sourceURL=webpack:///./node_modules/is-plain-obj/index.js?")},"./node_modules/path-browserify/index.js":function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(process) {// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack:///./node_modules/path-browserify/index.js?")},"./node_modules/process/browser.js":function(module,exports){eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n//# sourceURL=webpack:///./node_modules/process/browser.js?")},"./node_modules/redot-parse/dot.js":function(module,exports,__webpack_require__){"use strict";eval('/*\n * Generated by PEG.js 0.10.0.\n *\n * http://pegjs.org/\n */\n\n\n\nfunction peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = "SyntaxError";\n\n if (typeof Error.captureStackTrace === "function") {\n Error.captureStackTrace(this, peg$SyntaxError);\n }\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function(expectation) {\n return "\\"" + literalEscape(expectation.text) + "\\"";\n },\n\n "class": function(expectation) {\n var escapedParts = "",\n i;\n\n for (i = 0; i < expectation.parts.length; i++) {\n escapedParts += expectation.parts[i] instanceof Array\n ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1])\n : classEscape(expectation.parts[i]);\n }\n\n return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]";\n },\n\n any: function(expectation) {\n return "any character";\n },\n\n end: function(expectation) {\n return "end of input";\n },\n\n other: function(expectation) {\n return expectation.description;\n }\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, \'\\\\\\\\\')\n .replace(/"/g, \'\\\\"\')\n .replace(/\\0/g, \'\\\\0\')\n .replace(/\\t/g, \'\\\\t\')\n .replace(/\\n/g, \'\\\\n\')\n .replace(/\\r/g, \'\\\\r\')\n .replace(/[\\x00-\\x0F]/g, function(ch) { return \'\\\\x0\' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \'\\\\x\' + hex(ch); });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, \'\\\\\\\\\')\n .replace(/\\]/g, \'\\\\]\')\n .replace(/\\^/g, \'\\\\^\')\n .replace(/-/g, \'\\\\-\')\n .replace(/\\0/g, \'\\\\0\')\n .replace(/\\t/g, \'\\\\t\')\n .replace(/\\n/g, \'\\\\n\')\n .replace(/\\r/g, \'\\\\r\')\n .replace(/[\\x00-\\x0F]/g, function(ch) { return \'\\\\x0\' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \'\\\\x\' + hex(ch); });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = new Array(expected.length),\n i, j;\n\n for (i = 0; i < expected.length; i++) {\n descriptions[i] = describeExpectation(expected[i]);\n }\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + " or " + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(", ")\n + ", or "\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? "\\"" + literalEscape(found) + "\\"" : "end of input";\n }\n\n return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found.";\n};\n\nfunction peg$parse(input, options) {\n options = options !== void 0 ? options : {};\n\n var peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = function(children) {\n return {\n type: \'root\',\n children: children,\n data: {},\n position: location()\n }\n },\n peg$c1 = "strict",\n peg$c2 = peg$literalExpectation("strict", true),\n peg$c3 = "graph",\n peg$c4 = peg$literalExpectation("graph", true),\n peg$c5 = "digraph",\n peg$c6 = peg$literalExpectation("digraph", true),\n peg$c7 = "{",\n peg$c8 = peg$literalExpectation("{", false),\n peg$c9 = "}",\n peg$c10 = peg$literalExpectation("}", false),\n peg$c11 = function(strict, type, id, children) {\n return {\n id: id || undefined,\n // capitalize Graph and Digraph\n type: type.toLowerCase(),\n children: children || [],\n strict: (strict) ? true : undefined,\n data: {},\n position: location()\n }\n },\n peg$c12 = ";",\n peg$c13 = peg$literalExpectation(";", false),\n peg$c14 = function(s) { return s; },\n peg$c15 = function(e) { return [].concat(e); },\n peg$c16 = "=",\n peg$c17 = peg$literalExpectation("=", false),\n peg$c18 = function(left, right) {\n return {\n type: \'attribute\',\n name: left,\n value: right,\n data: {},\n position: location()\n };\n },\n peg$c19 = "node",\n peg$c20 = peg$literalExpectation("node", true),\n peg$c21 = "edge",\n peg$c22 = peg$literalExpectation("edge", true),\n peg$c23 = function(target, attr) {\n return {\n type: \'attributeStatement\',\n target: target,\n children: attr,\n data: {},\n position: location()\n };\n },\n peg$c24 = "[",\n peg$c25 = peg$literalExpectation("[", false),\n peg$c26 = "]",\n peg$c27 = peg$literalExpectation("]", false),\n peg$c28 = function(list, rest) {\n return (list || []).concat(rest || []);\n },\n peg$c29 = function(ida, idb) {return idb},\n peg$c30 = ",",\n peg$c31 = peg$literalExpectation(",", false),\n peg$c32 = function(ida, eq, rest) {\n return [{\n type: \'attribute\',\n name: ida,\n value: eq || undefined,\n data: {},\n position: location()\n }].concat(rest || []);\n },\n peg$c33 = function(id, rhs, attr) {\n var edge_list = [id];\n edge_list = edge_list.concat(rhs);\n\n if (attr) {\n edge_list = edge_list.concat(attr);\n }\n\n return {\n type: \'edgeStatement\',\n children: edge_list,\n data: {},\n position: location()\n };\n },\n peg$c34 = "->",\n peg$c35 = peg$literalExpectation("->", false),\n peg$c36 = "--",\n peg$c37 = peg$literalExpectation("--", false),\n peg$c38 = function(edgeop, id, rest) {\n return [{\n type: \'edgeRightHandSide\',\n edgeop: edgeop,\n children: [id],\n data: {},\n position: location()\n }].concat(rest || []);\n },\n peg$c39 = function(id, attr) {\n var children = [];\n if (id) {\n children.push(id);\n }\n if (attr) {\n children = children.concat(attr);\n }\n return {\n type: \'nodeStatement\',\n children: children,\n data: {},\n position: location()\n };\n },\n peg$c40 = function(id, port) {\n return port ? {\n type: \'nodeId\',\n id: id,\n children: [port],\n data: {},\n position: location()\n } : {\n type: \'nodeId\',\n id: id,\n data: {},\n position: location()\n };\n },\n peg$c41 = peg$otherExpectation("port"),\n peg$c42 = ":",\n peg$c43 = peg$literalExpectation(":", false),\n peg$c44 = function(id, pt) {return pt},\n peg$c45 = function(id, pt) {\n return {\n type: \'port\',\n id: id,\n compass: pt || undefined,\n data: {},\n position: location()\n };\n },\n peg$c46 = function(pt) {\n return {\n type: \'port\',\n compass: pt || undefined,\n data: {},\n position: location()\n }\n },\n peg$c47 = "subgraph",\n peg$c48 = peg$literalExpectation("subgraph", true),\n peg$c49 = function(id) {\n return id ? {\n type: \'subgraph\',\n id: id,\n data: {},\n position: location()\n } : {\n type: \'subgraph\',\n data: {},\n position: location()\n }\n },\n peg$c50 = function(g, s) {\n g = g || {\n type: \'subgraph\',\n data: {},\n position: location()\n };\n g.children = s || [];\n return g;\n },\n peg$c51 = function(id) {\n return {\n type: \'subgraph\',\n id: id,\n children: [],\n data: {},\n position: location()\n };\n },\n peg$c52 = function(s) {\n return {\n type: \'subgraph\',\n children: s,\n data: {},\n position: location()\n }\n },\n peg$c53 = "n",\n peg$c54 = peg$literalExpectation("n", false),\n peg$c55 = "ne",\n peg$c56 = peg$literalExpectation("ne", false),\n peg$c57 = "e",\n peg$c58 = peg$literalExpectation("e", false),\n peg$c59 = "se",\n peg$c60 = peg$literalExpectation("se", false),\n peg$c61 = "s",\n peg$c62 = peg$literalExpectation("s", false),\n peg$c63 = "sw",\n peg$c64 = peg$literalExpectation("sw", false),\n peg$c65 = "w",\n peg$c66 = peg$literalExpectation("w", false),\n peg$c67 = "nw",\n peg$c68 = peg$literalExpectation("nw", false),\n peg$c69 = peg$otherExpectation("UNICODE_STRING"),\n peg$c70 = function(first, rest) {\n return first + rest.join(\'\');\n },\n peg$c71 = "$",\n peg$c72 = peg$literalExpectation("$", false),\n peg$c73 = "_",\n peg$c74 = peg$literalExpectation("_", false),\n peg$c75 = peg$otherExpectation("NUMBER"),\n peg$c76 = "-",\n peg$c77 = peg$literalExpectation("-", false),\n peg$c78 = ".",\n peg$c79 = peg$literalExpectation(".", false),\n peg$c80 = /^[0-9]/,\n peg$c81 = peg$classExpectation([["0", "9"]], false, false),\n peg$c82 = function(n) {\n return parseFloat(text());\n },\n peg$c83 = function(v) {\n return {\n type: \'id\',\n value: v.slice(1, v.length - 1),\n html: true,\n data: {},\n position: location()\n };\n },\n peg$c84 = "<",\n peg$c85 = peg$literalExpectation("<", false),\n peg$c86 = ">",\n peg$c87 = peg$literalExpectation(">", false),\n peg$c88 = function(v) {\n return \'<\' + v.join(\'\') + \'>\';\n },\n peg$c89 = peg$anyExpectation(),\n peg$c90 = function(v) { return v; },\n peg$c91 = function(v) { return v.join(""); },\n peg$c92 = "\\"",\n peg$c93 = peg$literalExpectation("\\"", false),\n peg$c94 = function(chars) { return chars.join(""); },\n peg$c95 = function() { return text(); },\n peg$c96 = "\\\\",\n peg$c97 = peg$literalExpectation("\\\\", false),\n peg$c98 = function(v) { return v[1] === \'"\' ? \'"\' : v[0] + v[1]; },\n peg$c99 = function() { return \'\'; },\n peg$c100 = /^[\\n\\r\\u2028\\u2029]/,\n peg$c101 = peg$classExpectation(["\\n", "\\r", "\\u2028", "\\u2029"], false, false),\n peg$c102 = peg$otherExpectation("end of line"),\n peg$c103 = "\\n",\n peg$c104 = peg$literalExpectation("\\n", false),\n peg$c105 = "\\r\\n",\n peg$c106 = peg$literalExpectation("\\r\\n", false),\n peg$c107 = "\\r",\n peg$c108 = peg$literalExpectation("\\r", false),\n peg$c109 = "\\u2028",\n peg$c110 = peg$literalExpectation("\\u2028", false),\n peg$c111 = "\\u2029",\n peg$c112 = peg$literalExpectation("\\u2029", false),\n peg$c113 = function(chars) { return chars.join(\'\'); },\n peg$c114 = /^[^"\\\\\\0-\\x1F\\x7F]/,\n peg$c115 = peg$classExpectation(["\\"", "\\\\", ["\\0", "\\x1F"], "\\x7F"], true, false),\n peg$c116 = "\\\\\\"",\n peg$c117 = peg$literalExpectation("\\\\\\"", false),\n peg$c118 = function() { return \'"\'; },\n peg$c119 = function() { return \'\\\\\'; },\n peg$c120 = peg$otherExpectation("COMMENT"),\n peg$c121 = peg$otherExpectation("BLOCK_COMMENT"),\n peg$c122 = "/*",\n peg$c123 = peg$literalExpectation("/*", false),\n peg$c124 = "*/",\n peg$c125 = peg$literalExpectation("*/", false),\n peg$c126 = function(v) {return v;},\n peg$c127 = function(v) {\n return {\n type: \'commentBlock\',\n value: v.join(\'\'),\n data: {},\n position: location()\n }\n },\n peg$c128 = peg$otherExpectation("C_COMMENT"),\n peg$c129 = "//",\n peg$c130 = peg$literalExpectation("//", false),\n peg$c131 = /^[\\n]/,\n peg$c132 = peg$classExpectation(["\\n"], false, false),\n peg$c133 = function(v) {\n return {\n type: \'commentInline\',\n value: v.join(\'\'),\n data: {},\n position: location()\n }\n },\n peg$c134 = peg$otherExpectation("MACRO_COMMENT"),\n peg$c135 = "#",\n peg$c136 = peg$literalExpectation("#", false),\n peg$c137 = function(v) {\n return {\n type: \'commentMacro\',\n value: v.join(\'\'),\n data: {},\n position: location()\n }\n },\n peg$c138 = peg$otherExpectation("WHITESPACE"),\n peg$c139 = /^[\\n\\r]/,\n peg$c140 = peg$classExpectation(["\\n", "\\r"], false, false),\n peg$c141 = /^[ \\t]/,\n peg$c142 = peg$classExpectation([" ", "\\t"], false, false),\n peg$c143 = /^[a-z\\xB5\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137-\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148-\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C-\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA-\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9-\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC-\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF-\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F-\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0-\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB-\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE-\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0561-\\u0587\\u1D00-\\u1D2B\\u1D6B-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6-\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FC7\\u1FD0-\\u1FD3\\u1FD6-\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6-\\u1FF7\\u210A\\u210E-\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C-\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5E\\u2C61\\u2C65-\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73-\\u2C74\\u2C76-\\u2C7B\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3-\\u2CE4\\u2CEC\\u2CEE\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA793\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7FA\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A]/,\n peg$c144 = peg$classExpectation([["a", "z"], "\\xB5", ["\\xDF", "\\xF6"], ["\\xF8", "\\xFF"], "\\u0101", "\\u0103", "\\u0105", "\\u0107", "\\u0109", "\\u010B", "\\u010D", "\\u010F", "\\u0111", "\\u0113", "\\u0115", "\\u0117", "\\u0119", "\\u011B", "\\u011D", "\\u011F", "\\u0121", "\\u0123", "\\u0125", "\\u0127", "\\u0129", "\\u012B", "\\u012D", "\\u012F", "\\u0131", "\\u0133", "\\u0135", ["\\u0137", "\\u0138"], "\\u013A", "\\u013C", "\\u013E", "\\u0140", "\\u0142", "\\u0144", "\\u0146", ["\\u0148", "\\u0149"], "\\u014B", "\\u014D", "\\u014F", "\\u0151", "\\u0153", "\\u0155", "\\u0157", "\\u0159", "\\u015B", "\\u015D", "\\u015F", "\\u0161", "\\u0163", "\\u0165", "\\u0167", "\\u0169", "\\u016B", "\\u016D", "\\u016F", "\\u0171", "\\u0173", "\\u0175", "\\u0177", "\\u017A", "\\u017C", ["\\u017E", "\\u0180"], "\\u0183", "\\u0185", "\\u0188", ["\\u018C", "\\u018D"], "\\u0192", "\\u0195", ["\\u0199", "\\u019B"], "\\u019E", "\\u01A1", "\\u01A3", "\\u01A5", "\\u01A8", ["\\u01AA", "\\u01AB"], "\\u01AD", "\\u01B0", "\\u01B4", "\\u01B6", ["\\u01B9", "\\u01BA"], ["\\u01BD", "\\u01BF"], "\\u01C6", "\\u01C9", "\\u01CC", "\\u01CE", "\\u01D0", "\\u01D2", "\\u01D4", "\\u01D6", "\\u01D8", "\\u01DA", ["\\u01DC", "\\u01DD"], "\\u01DF", "\\u01E1", "\\u01E3", "\\u01E5", "\\u01E7", "\\u01E9", "\\u01EB", "\\u01ED", ["\\u01EF", "\\u01F0"], "\\u01F3", "\\u01F5", "\\u01F9", "\\u01FB", "\\u01FD", "\\u01FF", "\\u0201", "\\u0203", "\\u0205", "\\u0207", "\\u0209", "\\u020B", "\\u020D", "\\u020F", "\\u0211", "\\u0213", "\\u0215", "\\u0217", "\\u0219", "\\u021B", "\\u021D", "\\u021F", "\\u0221", "\\u0223", "\\u0225", "\\u0227", "\\u0229", "\\u022B", "\\u022D", "\\u022F", "\\u0231", ["\\u0233", "\\u0239"], "\\u023C", ["\\u023F", "\\u0240"], "\\u0242", "\\u0247", "\\u0249", "\\u024B", "\\u024D", ["\\u024F", "\\u0293"], ["\\u0295", "\\u02AF"], "\\u0371", "\\u0373", "\\u0377", ["\\u037B", "\\u037D"], "\\u0390", ["\\u03AC", "\\u03CE"], ["\\u03D0", "\\u03D1"], ["\\u03D5", "\\u03D7"], "\\u03D9", "\\u03DB", "\\u03DD", "\\u03DF", "\\u03E1", "\\u03E3", "\\u03E5", "\\u03E7", "\\u03E9", "\\u03EB", "\\u03ED", ["\\u03EF", "\\u03F3"], "\\u03F5", "\\u03F8", ["\\u03FB", "\\u03FC"], ["\\u0430", "\\u045F"], "\\u0461", "\\u0463", "\\u0465", "\\u0467", "\\u0469", "\\u046B", "\\u046D", "\\u046F", "\\u0471", "\\u0473", "\\u0475", "\\u0477", "\\u0479", "\\u047B", "\\u047D", "\\u047F", "\\u0481", "\\u048B", "\\u048D", "\\u048F", "\\u0491", "\\u0493", "\\u0495", "\\u0497", "\\u0499", "\\u049B", "\\u049D", "\\u049F", "\\u04A1", "\\u04A3", "\\u04A5", "\\u04A7", "\\u04A9", "\\u04AB", "\\u04AD", "\\u04AF", "\\u04B1", "\\u04B3", "\\u04B5", "\\u04B7", "\\u04B9", "\\u04BB", "\\u04BD", "\\u04BF", "\\u04C2", "\\u04C4", "\\u04C6", "\\u04C8", "\\u04CA", "\\u04CC", ["\\u04CE", "\\u04CF"], "\\u04D1", "\\u04D3", "\\u04D5", "\\u04D7", "\\u04D9", "\\u04DB", "\\u04DD", "\\u04DF", "\\u04E1", "\\u04E3", "\\u04E5", "\\u04E7", "\\u04E9", "\\u04EB", "\\u04ED", "\\u04EF", "\\u04F1", "\\u04F3", "\\u04F5", "\\u04F7", "\\u04F9", "\\u04FB", "\\u04FD", "\\u04FF", "\\u0501", "\\u0503", "\\u0505", "\\u0507", "\\u0509", "\\u050B", "\\u050D", "\\u050F", "\\u0511", "\\u0513", "\\u0515", "\\u0517", "\\u0519", "\\u051B", "\\u051D", "\\u051F", "\\u0521", "\\u0523", "\\u0525", "\\u0527", ["\\u0561", "\\u0587"], ["\\u1D00", "\\u1D2B"], ["\\u1D6B", "\\u1D77"], ["\\u1D79", "\\u1D9A"], "\\u1E01", "\\u1E03", "\\u1E05", "\\u1E07", "\\u1E09", "\\u1E0B", "\\u1E0D", "\\u1E0F", "\\u1E11", "\\u1E13", "\\u1E15", "\\u1E17", "\\u1E19", "\\u1E1B", "\\u1E1D", "\\u1E1F", "\\u1E21", "\\u1E23", "\\u1E25", "\\u1E27", "\\u1E29", "\\u1E2B", "\\u1E2D", "\\u1E2F", "\\u1E31", "\\u1E33", "\\u1E35", "\\u1E37", "\\u1E39", "\\u1E3B", "\\u1E3D", "\\u1E3F", "\\u1E41", "\\u1E43", "\\u1E45", "\\u1E47", "\\u1E49", "\\u1E4B", "\\u1E4D", "\\u1E4F", "\\u1E51", "\\u1E53", "\\u1E55", "\\u1E57", "\\u1E59", "\\u1E5B", "\\u1E5D", "\\u1E5F", "\\u1E61", "\\u1E63", "\\u1E65", "\\u1E67", "\\u1E69", "\\u1E6B", "\\u1E6D", "\\u1E6F", "\\u1E71", "\\u1E73", "\\u1E75", "\\u1E77", "\\u1E79", "\\u1E7B", "\\u1E7D", "\\u1E7F", "\\u1E81", "\\u1E83", "\\u1E85", "\\u1E87", "\\u1E89", "\\u1E8B", "\\u1E8D", "\\u1E8F", "\\u1E91", "\\u1E93", ["\\u1E95", "\\u1E9D"], "\\u1E9F", "\\u1EA1", "\\u1EA3", "\\u1EA5", "\\u1EA7", "\\u1EA9", "\\u1EAB", "\\u1EAD", "\\u1EAF", "\\u1EB1", "\\u1EB3", "\\u1EB5", "\\u1EB7", "\\u1EB9", "\\u1EBB", "\\u1EBD", "\\u1EBF", "\\u1EC1", "\\u1EC3", "\\u1EC5", "\\u1EC7", "\\u1EC9", "\\u1ECB", "\\u1ECD", "\\u1ECF", "\\u1ED1", "\\u1ED3", "\\u1ED5", "\\u1ED7", "\\u1ED9", "\\u1EDB", "\\u1EDD", "\\u1EDF", "\\u1EE1", "\\u1EE3", "\\u1EE5", "\\u1EE7", "\\u1EE9", "\\u1EEB", "\\u1EED", "\\u1EEF", "\\u1EF1", "\\u1EF3", "\\u1EF5", "\\u1EF7", "\\u1EF9", "\\u1EFB", "\\u1EFD", ["\\u1EFF", "\\u1F07"], ["\\u1F10", "\\u1F15"], ["\\u1F20", "\\u1F27"], ["\\u1F30", "\\u1F37"], ["\\u1F40", "\\u1F45"], ["\\u1F50", "\\u1F57"], ["\\u1F60", "\\u1F67"], ["\\u1F70", "\\u1F7D"], ["\\u1F80", "\\u1F87"], ["\\u1F90", "\\u1F97"], ["\\u1FA0", "\\u1FA7"], ["\\u1FB0", "\\u1FB4"], ["\\u1FB6", "\\u1FB7"], "\\u1FBE", ["\\u1FC2", "\\u1FC4"], ["\\u1FC6", "\\u1FC7"], ["\\u1FD0", "\\u1FD3"], ["\\u1FD6", "\\u1FD7"], ["\\u1FE0", "\\u1FE7"], ["\\u1FF2", "\\u1FF4"], ["\\u1FF6", "\\u1FF7"], "\\u210A", ["\\u210E", "\\u210F"], "\\u2113", "\\u212F", "\\u2134", "\\u2139", ["\\u213C", "\\u213D"], ["\\u2146", "\\u2149"], "\\u214E", "\\u2184", ["\\u2C30", "\\u2C5E"], "\\u2C61", ["\\u2C65", "\\u2C66"], "\\u2C68", "\\u2C6A", "\\u2C6C", "\\u2C71", ["\\u2C73", "\\u2C74"], ["\\u2C76", "\\u2C7B"], "\\u2C81", "\\u2C83", "\\u2C85", "\\u2C87", "\\u2C89", "\\u2C8B", "\\u2C8D", "\\u2C8F", "\\u2C91", "\\u2C93", "\\u2C95", "\\u2C97", "\\u2C99", "\\u2C9B", "\\u2C9D", "\\u2C9F", "\\u2CA1", "\\u2CA3", "\\u2CA5", "\\u2CA7", "\\u2CA9", "\\u2CAB", "\\u2CAD", "\\u2CAF", "\\u2CB1", "\\u2CB3", "\\u2CB5", "\\u2CB7", "\\u2CB9", "\\u2CBB", "\\u2CBD", "\\u2CBF", "\\u2CC1", "\\u2CC3", "\\u2CC5", "\\u2CC7", "\\u2CC9", "\\u2CCB", "\\u2CCD", "\\u2CCF", "\\u2CD1", "\\u2CD3", "\\u2CD5", "\\u2CD7", "\\u2CD9", "\\u2CDB", "\\u2CDD", "\\u2CDF", "\\u2CE1", ["\\u2CE3", "\\u2CE4"], "\\u2CEC", "\\u2CEE", "\\u2CF3", ["\\u2D00", "\\u2D25"], "\\u2D27", "\\u2D2D", "\\uA641", "\\uA643", "\\uA645", "\\uA647", "\\uA649", "\\uA64B", "\\uA64D", "\\uA64F", "\\uA651", "\\uA653", "\\uA655", "\\uA657", "\\uA659", "\\uA65B", "\\uA65D", "\\uA65F", "\\uA661", "\\uA663", "\\uA665", "\\uA667", "\\uA669", "\\uA66B", "\\uA66D", "\\uA681", "\\uA683", "\\uA685", "\\uA687", "\\uA689", "\\uA68B", "\\uA68D", "\\uA68F", "\\uA691", "\\uA693", "\\uA695", "\\uA697", "\\uA723", "\\uA725", "\\uA727", "\\uA729", "\\uA72B", "\\uA72D", ["\\uA72F", "\\uA731"], "\\uA733", "\\uA735", "\\uA737", "\\uA739", "\\uA73B", "\\uA73D", "\\uA73F", "\\uA741", "\\uA743", "\\uA745", "\\uA747", "\\uA749", "\\uA74B", "\\uA74D", "\\uA74F", "\\uA751", "\\uA753", "\\uA755", "\\uA757", "\\uA759", "\\uA75B", "\\uA75D", "\\uA75F", "\\uA761", "\\uA763", "\\uA765", "\\uA767", "\\uA769", "\\uA76B", "\\uA76D", "\\uA76F", ["\\uA771", "\\uA778"], "\\uA77A", "\\uA77C", "\\uA77F", "\\uA781", "\\uA783", "\\uA785", "\\uA787", "\\uA78C", "\\uA78E", "\\uA791", "\\uA793", "\\uA7A1", "\\uA7A3", "\\uA7A5", "\\uA7A7", "\\uA7A9", "\\uA7FA", ["\\uFB00", "\\uFB06"], ["\\uFB13", "\\uFB17"], ["\\uFF41", "\\uFF5A"]], false, false),\n peg$c145 = /^[\\u02B0-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0374\\u037A\\u0559\\u0640\\u06E5-\\u06E6\\u07F4-\\u07F5\\u07FA\\u081A\\u0824\\u0828\\u0971\\u0E46\\u0EC6\\u10FC\\u17D7\\u1843\\u1AA7\\u1C78-\\u1C7D\\u1D2C-\\u1D6A\\u1D78\\u1D9B-\\u1DBF\\u2071\\u207F\\u2090-\\u209C\\u2C7C-\\u2C7D\\u2D6F\\u2E2F\\u3005\\u3031-\\u3035\\u303B\\u309D-\\u309E\\u30FC-\\u30FE\\uA015\\uA4F8-\\uA4FD\\uA60C\\uA67F\\uA717-\\uA71F\\uA770\\uA788\\uA7F8-\\uA7F9\\uA9CF\\uAA70\\uAADD\\uAAF3-\\uAAF4\\uFF70\\uFF9E-\\uFF9F]/,\n peg$c146 = peg$classExpectation([["\\u02B0", "\\u02C1"], ["\\u02C6", "\\u02D1"], ["\\u02E0", "\\u02E4"], "\\u02EC", "\\u02EE", "\\u0374", "\\u037A", "\\u0559", "\\u0640", ["\\u06E5", "\\u06E6"], ["\\u07F4", "\\u07F5"], "\\u07FA", "\\u081A", "\\u0824", "\\u0828", "\\u0971", "\\u0E46", "\\u0EC6", "\\u10FC", "\\u17D7", "\\u1843", "\\u1AA7", ["\\u1C78", "\\u1C7D"], ["\\u1D2C", "\\u1D6A"], "\\u1D78", ["\\u1D9B", "\\u1DBF"], "\\u2071", "\\u207F", ["\\u2090", "\\u209C"], ["\\u2C7C", "\\u2C7D"], "\\u2D6F", "\\u2E2F", "\\u3005", ["\\u3031", "\\u3035"], "\\u303B", ["\\u309D", "\\u309E"], ["\\u30FC", "\\u30FE"], "\\uA015", ["\\uA4F8", "\\uA4FD"], "\\uA60C", "\\uA67F", ["\\uA717", "\\uA71F"], "\\uA770", "\\uA788", ["\\uA7F8", "\\uA7F9"], "\\uA9CF", "\\uAA70", "\\uAADD", ["\\uAAF3", "\\uAAF4"], "\\uFF70", ["\\uFF9E", "\\uFF9F"]], false, false),\n peg$c147 = /^[\\xAA\\xBA\\u01BB\\u01C0-\\u01C3\\u0294\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u063F\\u0641-\\u064A\\u066E-\\u066F\\u0671-\\u06D3\\u06D5\\u06EE-\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u0800-\\u0815\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0972-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC-\\u09DD\\u09DF-\\u09E1\\u09F0-\\u09F1\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0-\\u0AE1\\u0B05-\\u0B0C\\u0B0F-\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58-\\u0C59\\u0C60-\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0-\\u0CE1\\u0CF1-\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E45\\u0E81-\\u0E82\\u0E84\\u0E87-\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA-\\u0EAB\\u0EAD-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105