{"version":3,"sources":["../../node_modules/extend/index.js","../../node_modules/logform/format.js","../../node_modules/@colors/colors/lib/styles.js","../../node_modules/@colors/colors/lib/system/has-flag.js","../../node_modules/@colors/colors/lib/system/supports-colors.js","../../node_modules/@colors/colors/lib/custom/trap.js","../../node_modules/@colors/colors/lib/custom/zalgo.js","../../node_modules/@colors/colors/lib/maps/america.js","../../node_modules/@colors/colors/lib/maps/zebra.js","../../node_modules/@colors/colors/lib/maps/rainbow.js","../../node_modules/@colors/colors/lib/maps/random.js","../../node_modules/@colors/colors/lib/colors.js","../../node_modules/@colors/colors/safe.js","../../node_modules/triple-beam/config/cli.js","../../node_modules/triple-beam/config/npm.js","../../node_modules/triple-beam/config/syslog.js","../../node_modules/triple-beam/config/index.js","../../node_modules/triple-beam/index.js","../../node_modules/logform/colorize.js","../../node_modules/logform/levels.js","../../node_modules/logform/align.js","../../node_modules/logform/errors.js","../../node_modules/logform/pad-levels.js","../../node_modules/logform/cli.js","../../node_modules/logform/combine.js","../../node_modules/safe-stable-stringify/index.js","../../node_modules/logform/json.js","../../node_modules/logform/label.js","../../node_modules/logform/logstash.js","../../node_modules/logform/metadata.js","../../node_modules/ms/index.js","../../node_modules/logform/ms.js","../../node_modules/logform/pretty-print.js","../../node_modules/logform/printf.js","../../node_modules/logform/simple.js","../../node_modules/logform/splat.js","../../node_modules/fecha/src/fecha.ts","../../node_modules/logform/timestamp.js","../../node_modules/logform/uncolorize.js","../../node_modules/logform/index.js","../../node_modules/winston/lib/winston/common.js","../../node_modules/winston/package.json","../../node_modules/util-deprecate/node.js","../../node_modules/readable-stream/lib/internal/streams/stream.js","../../node_modules/readable-stream/lib/internal/streams/destroy.js","../../node_modules/readable-stream/errors.js","../../node_modules/readable-stream/lib/internal/streams/state.js","../../node_modules/inherits/inherits_browser.js","../../node_modules/inherits/inherits.js","../../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../../node_modules/safe-buffer/index.js","../../node_modules/string_decoder/lib/string_decoder.js","../../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../../node_modules/readable-stream/lib/internal/streams/async_iterator.js","../../node_modules/readable-stream/lib/internal/streams/from.js","../../node_modules/readable-stream/lib/_stream_readable.js","../../node_modules/readable-stream/lib/_stream_duplex.js","../../node_modules/readable-stream/lib/_stream_writable.js","../../node_modules/winston-transport/modern.js","../../node_modules/winston-transport/legacy.js","../../node_modules/winston-transport/index.js","../../node_modules/winston/lib/winston/transports/console.js","../../node_modules/async/internal/isArrayLike.js","../../node_modules/async/internal/initialParams.js","../../node_modules/async/internal/setImmediate.js","../../node_modules/async/asyncify.js","../../node_modules/async/internal/wrapAsync.js","../../node_modules/async/internal/awaitify.js","../../node_modules/async/internal/parallel.js","../../node_modules/async/internal/once.js","../../node_modules/async/internal/getIterator.js","../../node_modules/async/internal/iterator.js","../../node_modules/async/internal/onlyOnce.js","../../node_modules/async/internal/breakLoop.js","../../node_modules/async/internal/asyncEachOfLimit.js","../../node_modules/async/internal/eachOfLimit.js","../../node_modules/async/eachOfLimit.js","../../node_modules/async/eachOfSeries.js","../../node_modules/async/series.js","../../node_modules/readable-stream/lib/_stream_transform.js","../../node_modules/readable-stream/lib/_stream_passthrough.js","../../node_modules/readable-stream/lib/internal/streams/pipeline.js","../../node_modules/readable-stream/readable.js","../../node_modules/@dabh/diagnostics/diagnostics.js","../../node_modules/@dabh/diagnostics/node/production.js","../../node_modules/color-name/index.js","../../node_modules/is-arrayish/index.js","../../node_modules/simple-swizzle/index.js","../../node_modules/color-string/index.js","../../node_modules/color/node_modules/color-name/index.js","../../node_modules/color/node_modules/color-convert/conversions.js","../../node_modules/color/node_modules/color-convert/route.js","../../node_modules/color/node_modules/color-convert/index.js","../../node_modules/color/index.js","../../node_modules/text-hex/index.js","../../node_modules/colorspace/index.js","../../node_modules/kuler/index.js","../../node_modules/@dabh/diagnostics/modifiers/namespace-ansi.js","../../node_modules/enabled/index.js","../../node_modules/@dabh/diagnostics/adapters/index.js","../../node_modules/@dabh/diagnostics/adapters/process.env.js","../../node_modules/@dabh/diagnostics/logger/console.js","../../node_modules/@dabh/diagnostics/node/development.js","../../node_modules/@dabh/diagnostics/node/index.js","../../node_modules/winston/lib/winston/tail-file.js","../../node_modules/winston/lib/winston/transports/file.js","../../node_modules/winston/lib/winston/transports/http.js","../../node_modules/winston/node_modules/is-stream/index.js","../../node_modules/winston/lib/winston/transports/stream.js","../../node_modules/winston/lib/winston/transports/index.js","../../node_modules/winston/lib/winston/config/index.js","../../node_modules/async/eachOf.js","../../node_modules/async/internal/withoutIndex.js","../../node_modules/async/forEach.js","../../node_modules/fn.name/index.js","../../node_modules/one-time/index.js","../../node_modules/stack-trace/lib/stack-trace.js","../../node_modules/winston/lib/winston/exception-stream.js","../../node_modules/winston/lib/winston/exception-handler.js","../../node_modules/winston/lib/winston/rejection-stream.js","../../node_modules/winston/lib/winston/rejection-handler.js","../../node_modules/winston/lib/winston/profiler.js","../../node_modules/winston/lib/winston/logger.js","../../node_modules/winston/lib/winston/create-logger.js","../../node_modules/winston/lib/winston/container.js","../../node_modules/winston/lib/winston.js","../../node_modules/peggy/lib/grammar-error.js","../../node_modules/peggy/lib/compiler/visitor.js","../../node_modules/peggy/lib/compiler/asts.js","../../node_modules/peggy/lib/compiler/opcodes.js","../../node_modules/peggy/lib/compiler/passes/inference-match-result.js","../../node_modules/peggy/lib/compiler/passes/generate-bytecode.js","../../node_modules/peggy/lib/compiler/stack.js","../../node_modules/peggy/lib/version.js","../../node_modules/peggy/lib/compiler/utils.js","../../node_modules/source-map-generator/lib/base64.js","../../node_modules/source-map-generator/lib/base64-vlq.js","../../node_modules/source-map-generator/lib/util.js","../../node_modules/source-map-generator/lib/array-set.js","../../node_modules/source-map-generator/lib/mapping-list.js","../../node_modules/source-map-generator/lib/source-map-generator.js","../../node_modules/source-map-generator/lib/source-node.js","../../node_modules/source-map-generator/source-map.js","../../node_modules/peggy/lib/compiler/passes/generate-js.js","../../node_modules/peggy/lib/compiler/passes/remove-proxy-rules.js","../../node_modules/peggy/lib/compiler/passes/report-duplicate-labels.js","../../node_modules/peggy/lib/compiler/passes/report-duplicate-rules.js","../../node_modules/peggy/lib/compiler/passes/report-infinite-recursion.js","../../node_modules/peggy/lib/compiler/passes/report-infinite-repetition.js","../../node_modules/peggy/lib/compiler/passes/report-undefined-rules.js","../../node_modules/peggy/lib/compiler/passes/report-incorrect-plucking.js","../../node_modules/peggy/lib/compiler/session.js","../../node_modules/peggy/lib/compiler/index.js","../../node_modules/peggy/lib/parser.js","../../node_modules/peggy/lib/peg.js","../../node_modules/bail/index.js","../../node_modules/unified/lib/index.js","../../node_modules/is-plain-obj/index.js","../../node_modules/trough/lib/index.js","../../node_modules/unist-util-stringify-position/lib/index.js","../../node_modules/vfile-message/lib/index.js","../../node_modules/vfile/lib/minurl.shared.js","../../node_modules/vfile/lib/index.js","../../node_modules/unified/lib/callable-instance.js","../../node_modules/mdast-util-to-string/lib/index.js","../../node_modules/character-entities/index.js","../../node_modules/decode-named-character-reference/index.js","../../node_modules/micromark-util-chunked/index.js","../../node_modules/micromark-util-combine-extensions/index.js","../../node_modules/micromark-util-decode-numeric-character-reference/index.js","../../node_modules/micromark-util-normalize-identifier/index.js","../../node_modules/micromark-util-character/index.js","../../node_modules/micromark-factory-space/index.js","../../node_modules/micromark/lib/initialize/content.js","../../node_modules/micromark/lib/initialize/document.js","../../node_modules/micromark-util-classify-character/index.js","../../node_modules/micromark-util-resolve-all/index.js","../../node_modules/micromark-core-commonmark/lib/attention.js","../../node_modules/micromark-core-commonmark/lib/autolink.js","../../node_modules/micromark-core-commonmark/lib/blank-line.js","../../node_modules/micromark-core-commonmark/lib/block-quote.js","../../node_modules/micromark-core-commonmark/lib/character-escape.js","../../node_modules/micromark-core-commonmark/lib/character-reference.js","../../node_modules/micromark-core-commonmark/lib/code-fenced.js","../../node_modules/micromark-core-commonmark/lib/code-indented.js","../../node_modules/micromark-core-commonmark/lib/code-text.js","../../node_modules/micromark-util-subtokenize/lib/splice-buffer.js","../../node_modules/micromark-util-subtokenize/index.js","../../node_modules/micromark-core-commonmark/lib/content.js","../../node_modules/micromark-factory-destination/index.js","../../node_modules/micromark-factory-label/index.js","../../node_modules/micromark-factory-title/index.js","../../node_modules/micromark-factory-whitespace/index.js","../../node_modules/micromark-core-commonmark/lib/definition.js","../../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../../node_modules/micromark-core-commonmark/lib/heading-atx.js","../../node_modules/micromark-util-html-tag-name/index.js","../../node_modules/micromark-core-commonmark/lib/html-flow.js","../../node_modules/micromark-core-commonmark/lib/html-text.js","../../node_modules/micromark-core-commonmark/lib/label-end.js","../../node_modules/micromark-core-commonmark/lib/label-start-image.js","../../node_modules/micromark-core-commonmark/lib/label-start-link.js","../../node_modules/micromark-core-commonmark/lib/line-ending.js","../../node_modules/micromark-core-commonmark/lib/thematic-break.js","../../node_modules/micromark-core-commonmark/lib/list.js","../../node_modules/micromark-core-commonmark/lib/setext-underline.js","../../node_modules/micromark/lib/initialize/flow.js","../../node_modules/micromark/lib/initialize/text.js","../../node_modules/micromark/lib/constructs.js","../../node_modules/micromark/lib/create-tokenizer.js","../../node_modules/micromark/lib/parse.js","../../node_modules/micromark/lib/postprocess.js","../../node_modules/micromark/lib/preprocess.js","../../node_modules/micromark-util-decode-string/index.js","../../node_modules/mdast-util-from-markdown/lib/index.js","../../node_modules/remark-parse/lib/index.js","../../src/errors/index.ts","../../src/utils/logger.ts","../../node_modules/unist-util-is/lib/index.js","../../node_modules/unist-util-visit-parents/lib/color.node.js","../../node_modules/unist-util-visit-parents/lib/index.js","../../node_modules/unist-util-visit/lib/index.js","../../src/parser/markdown.ts","../../src/parser/llm.ts","../../src/types/ast.ts","../../src/transformer/md-to-llm.ts","../../src/transformer/llm-to-md.ts","../../src/constants.ts","../../src/extractor/index.ts","../../src/serializer/markdown.ts","../../src/serializer/llm.ts","../../src/index.ts"],"names":["exports","module","isArray","isPlainObject","setProperty","options","getProperty","extend","text","all","index","stylize","builder","colors","style","sequencer","map","format","require_cli","hasOwnProperty","configure","position","value","join","tmp","key","res","stringify","parse","require_ms","field","parser","v","fecha","err","self","require_errors","search","Buffer","push","onlegacyfinish","onfinish","onend","onerror","onclose","onrequest","createReadableStreamAsyncIterator","EElistenerCount","debug","content","flow","n","keys","realHasInstance","TransportStream","logger","LegacyTransportStream","wrap","require_eachOfLimit","process","swizzle","string","require_color_name","convert","color","node","require_console","require_node","decode","buff","require_stream","require_config","toString","one","dummyObject","v8StackTrace","location","visitor","visit","ast","inferenceMatchResult","generateBytecode","context","generateJS","name","literal","e","compile","parts","r","removeProxyRules","session","reportDuplicateLabels","reportDuplicateRules","reportInfiniteRecursion","reportInfiniteRepetition","reportUndefinedRules","reportIncorrectPlucking","Session","expected","found","compiler","grammar","passes","point","default","dirname","fileURLToPath","file","tree","parameters","isUint8Array","own","list","extension","ok","previous","token","document","constructs","events","attentionMarkers","effects","nok","start","furtherStart","titleBefore","definition","exit","from","head","blockQuote","codeText","thematicBreak","listItem","data","EventEmitter","winston","is","__filename","__dirname","readFileSync","peggy","word","score"],"mappings":"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,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,CAAC,QAAU,EAAA,QAAQ,GAAG,CAAC,QAAA,EAAU,QAAQ,CAAG,EAAA,QAAA,EAAU,UAAU,CAAC,QAAA,EAAU,QAAQ,CAAG,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU,EAAA,QAAA,EAAU,UAAU,QAAU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","file":"index.cjs","sourcesContent":["'use strict';\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","'use strict';\n\n/*\n * Displays a helpful message and the source of\n * the format when it is invalid.\n */\nclass InvalidFormatError extends Error {\n  constructor(formatFn) {\n    super(`Format functions must be synchronous taking a two arguments: (info, opts)\nFound: ${formatFn.toString().split('\\n')[0]}\\n`);\n\n    Error.captureStackTrace(this, InvalidFormatError);\n  }\n}\n\n/*\n * function format (formatFn)\n * Returns a create function for the `formatFn`.\n */\nmodule.exports = formatFn => {\n  if (formatFn.length > 2) {\n    throw new InvalidFormatError(formatFn);\n  }\n\n  /*\n   * function Format (options)\n   * Base prototype which calls a `_format`\n   * function and pushes the result.\n   */\n  function Format(options = {}) {\n    this.options = options;\n  }\n\n  Format.prototype.transform = formatFn;\n\n  //\n  // Create a function which returns new instances of\n  // FormatWrap for simple syntax like:\n  //\n  // require('winston').formats.json();\n  //\n  function createFormatWrap(opts) {\n    return new Format(opts);\n  }\n\n  //\n  // Expose the FormatWrap through the create function\n  // for testability.\n  //\n  createFormatWrap.Format = Format;\n  return createFormatWrap;\n};\n","/*\nThe MIT License (MIT)\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n\nvar styles = {};\nmodule['exports'] = styles;\n\nvar codes = {\n  reset: [0, 0],\n\n  bold: [1, 22],\n  dim: [2, 22],\n  italic: [3, 23],\n  underline: [4, 24],\n  inverse: [7, 27],\n  hidden: [8, 28],\n  strikethrough: [9, 29],\n\n  black: [30, 39],\n  red: [31, 39],\n  green: [32, 39],\n  yellow: [33, 39],\n  blue: [34, 39],\n  magenta: [35, 39],\n  cyan: [36, 39],\n  white: [37, 39],\n  gray: [90, 39],\n  grey: [90, 39],\n\n  brightRed: [91, 39],\n  brightGreen: [92, 39],\n  brightYellow: [93, 39],\n  brightBlue: [94, 39],\n  brightMagenta: [95, 39],\n  brightCyan: [96, 39],\n  brightWhite: [97, 39],\n\n  bgBlack: [40, 49],\n  bgRed: [41, 49],\n  bgGreen: [42, 49],\n  bgYellow: [43, 49],\n  bgBlue: [44, 49],\n  bgMagenta: [45, 49],\n  bgCyan: [46, 49],\n  bgWhite: [47, 49],\n  bgGray: [100, 49],\n  bgGrey: [100, 49],\n\n  bgBrightRed: [101, 49],\n  bgBrightGreen: [102, 49],\n  bgBrightYellow: [103, 49],\n  bgBrightBlue: [104, 49],\n  bgBrightMagenta: [105, 49],\n  bgBrightCyan: [106, 49],\n  bgBrightWhite: [107, 49],\n\n  // legacy styles for colors pre v1.0.0\n  blackBG: [40, 49],\n  redBG: [41, 49],\n  greenBG: [42, 49],\n  yellowBG: [43, 49],\n  blueBG: [44, 49],\n  magentaBG: [45, 49],\n  cyanBG: [46, 49],\n  whiteBG: [47, 49],\n\n};\n\nObject.keys(codes).forEach(function(key) {\n  var val = codes[key];\n  var style = styles[key] = [];\n  style.open = '\\u001b[' + val[0] + 'm';\n  style.close = '\\u001b[' + val[1] + 'm';\n});\n","/*\nMIT License\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n\n'use strict';\n\nmodule.exports = function(flag, argv) {\n  argv = argv || process.argv || [];\n\n  var terminatorPos = argv.indexOf('--');\n  var prefix = /^-{1,2}/.test(flag) ? '' : '--';\n  var pos = argv.indexOf(prefix + flag);\n\n  return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n","/*\nThe MIT License (MIT)\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n\n'use strict';\n\nvar os = require('os');\nvar hasFlag = require('./has-flag.js');\n\nvar env = process.env;\n\nvar forceColor = void 0;\nif (hasFlag('no-color') || hasFlag('no-colors') || hasFlag('color=false')) {\n  forceColor = false;\n} else if (hasFlag('color') || hasFlag('colors') || hasFlag('color=true')\n           || hasFlag('color=always')) {\n  forceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n  forceColor = env.FORCE_COLOR.length === 0\n    || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n  if (level === 0) {\n    return false;\n  }\n\n  return {\n    level: level,\n    hasBasic: true,\n    has256: level >= 2,\n    has16m: level >= 3,\n  };\n}\n\nfunction supportsColor(stream) {\n  if (forceColor === false) {\n    return 0;\n  }\n\n  if (hasFlag('color=16m') || hasFlag('color=full')\n      || hasFlag('color=truecolor')) {\n    return 3;\n  }\n\n  if (hasFlag('color=256')) {\n    return 2;\n  }\n\n  if (stream && !stream.isTTY && forceColor !== true) {\n    return 0;\n  }\n\n  var min = forceColor ? 1 : 0;\n\n  if (process.platform === 'win32') {\n    // Node.js 7.5.0 is the first version of Node.js to include a patch to\n    // libuv that enables 256 color output on Windows. Anything earlier and it\n    // won't work. However, here we target Node.js 8 at minimum as it is an LTS\n    // release, and Node.js 7 is not. Windows 10 build 10586 is the first\n    // Windows release that supports 256 colors. Windows 10 build 14931 is the\n    // first release that supports 16m/TrueColor.\n    var osRelease = os.release().split('.');\n    if (Number(process.versions.node.split('.')[0]) >= 8\n        && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {\n      return Number(osRelease[2]) >= 14931 ? 3 : 2;\n    }\n\n    return 1;\n  }\n\n  if ('CI' in env) {\n    if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(function(sign) {\n      return sign in env;\n    }) || env.CI_NAME === 'codeship') {\n      return 1;\n    }\n\n    return min;\n  }\n\n  if ('TEAMCITY_VERSION' in env) {\n    return (/^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0\n    );\n  }\n\n  if ('TERM_PROGRAM' in env) {\n    var version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n    switch (env.TERM_PROGRAM) {\n      case 'iTerm.app':\n        return version >= 3 ? 3 : 2;\n      case 'Hyper':\n        return 3;\n      case 'Apple_Terminal':\n        return 2;\n      // No default\n    }\n  }\n\n  if (/-256(color)?$/i.test(env.TERM)) {\n    return 2;\n  }\n\n  if (/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n    return 1;\n  }\n\n  if ('COLORTERM' in env) {\n    return 1;\n  }\n\n  if (env.TERM === 'dumb') {\n    return min;\n  }\n\n  return min;\n}\n\nfunction getSupportLevel(stream) {\n  var level = supportsColor(stream);\n  return translateLevel(level);\n}\n\nmodule.exports = {\n  supportsColor: getSupportLevel,\n  stdout: getSupportLevel(process.stdout),\n  stderr: getSupportLevel(process.stderr),\n};\n","module['exports'] = function runTheTrap(text, options) {\n  var result = '';\n  text = text || 'Run the trap, drop the bass';\n  text = text.split('');\n  var trap = {\n    a: ['\\u0040', '\\u0104', '\\u023a', '\\u0245', '\\u0394', '\\u039b', '\\u0414'],\n    b: ['\\u00df', '\\u0181', '\\u0243', '\\u026e', '\\u03b2', '\\u0e3f'],\n    c: ['\\u00a9', '\\u023b', '\\u03fe'],\n    d: ['\\u00d0', '\\u018a', '\\u0500', '\\u0501', '\\u0502', '\\u0503'],\n    e: ['\\u00cb', '\\u0115', '\\u018e', '\\u0258', '\\u03a3', '\\u03be', '\\u04bc',\n      '\\u0a6c'],\n    f: ['\\u04fa'],\n    g: ['\\u0262'],\n    h: ['\\u0126', '\\u0195', '\\u04a2', '\\u04ba', '\\u04c7', '\\u050a'],\n    i: ['\\u0f0f'],\n    j: ['\\u0134'],\n    k: ['\\u0138', '\\u04a0', '\\u04c3', '\\u051e'],\n    l: ['\\u0139'],\n    m: ['\\u028d', '\\u04cd', '\\u04ce', '\\u0520', '\\u0521', '\\u0d69'],\n    n: ['\\u00d1', '\\u014b', '\\u019d', '\\u0376', '\\u03a0', '\\u048a'],\n    o: ['\\u00d8', '\\u00f5', '\\u00f8', '\\u01fe', '\\u0298', '\\u047a', '\\u05dd',\n      '\\u06dd', '\\u0e4f'],\n    p: ['\\u01f7', '\\u048e'],\n    q: ['\\u09cd'],\n    r: ['\\u00ae', '\\u01a6', '\\u0210', '\\u024c', '\\u0280', '\\u042f'],\n    s: ['\\u00a7', '\\u03de', '\\u03df', '\\u03e8'],\n    t: ['\\u0141', '\\u0166', '\\u0373'],\n    u: ['\\u01b1', '\\u054d'],\n    v: ['\\u05d8'],\n    w: ['\\u0428', '\\u0460', '\\u047c', '\\u0d70'],\n    x: ['\\u04b2', '\\u04fe', '\\u04fc', '\\u04fd'],\n    y: ['\\u00a5', '\\u04b0', '\\u04cb'],\n    z: ['\\u01b5', '\\u0240'],\n  };\n  text.forEach(function(c) {\n    c = c.toLowerCase();\n    var chars = trap[c] || [' '];\n    var rand = Math.floor(Math.random() * chars.length);\n    if (typeof trap[c] !== 'undefined') {\n      result += trap[c][rand];\n    } else {\n      result += c;\n    }\n  });\n  return result;\n};\n","// please no\nmodule['exports'] = function zalgo(text, options) {\n  text = text || '   he is here   ';\n  var soul = {\n    'up': [\n      '̍', '̎', '̄', '̅',\n      '̿', '̑', '̆', '̐',\n      '͒', '͗', '͑', '̇',\n      '̈', '̊', '͂', '̓',\n      '̈', '͊', '͋', '͌',\n      '̃', '̂', '̌', '͐',\n      '̀', '́', '̋', '̏',\n      '̒', '̓', '̔', '̽',\n      '̉', 'ͣ', 'ͤ', 'ͥ',\n      'ͦ', 'ͧ', 'ͨ', 'ͩ',\n      'ͪ', 'ͫ', 'ͬ', 'ͭ',\n      'ͮ', 'ͯ', '̾', '͛',\n      '͆', '̚',\n    ],\n    'down': [\n      '̖', '̗', '̘', '̙',\n      '̜', '̝', '̞', '̟',\n      '̠', '̤', '̥', '̦',\n      '̩', '̪', '̫', '̬',\n      '̭', '̮', '̯', '̰',\n      '̱', '̲', '̳', '̹',\n      '̺', '̻', '̼', 'ͅ',\n      '͇', '͈', '͉', '͍',\n      '͎', '͓', '͔', '͕',\n      '͖', '͙', '͚', '̣',\n    ],\n    'mid': [\n      '̕', '̛', '̀', '́',\n      '͘', '̡', '̢', '̧',\n      '̨', '̴', '̵', '̶',\n      '͜', '͝', '͞',\n      '͟', '͠', '͢', '̸',\n      '̷', '͡', ' ҉',\n    ],\n  };\n  var all = [].concat(soul.up, soul.down, soul.mid);\n\n  function randomNumber(range) {\n    var r = Math.floor(Math.random() * range);\n    return r;\n  }\n\n  function isChar(character) {\n    var bool = false;\n    all.filter(function(i) {\n      bool = (i === character);\n    });\n    return bool;\n  }\n\n\n  function heComes(text, options) {\n    var result = '';\n    var counts;\n    var l;\n    options = options || {};\n    options['up'] =\n      typeof options['up'] !== 'undefined' ? options['up'] : true;\n    options['mid'] =\n      typeof options['mid'] !== 'undefined' ? options['mid'] : true;\n    options['down'] =\n      typeof options['down'] !== 'undefined' ? options['down'] : true;\n    options['size'] =\n      typeof options['size'] !== 'undefined' ? options['size'] : 'maxi';\n    text = text.split('');\n    for (l in text) {\n      if (isChar(l)) {\n        continue;\n      }\n      result = result + text[l];\n      counts = {'up': 0, 'down': 0, 'mid': 0};\n      switch (options.size) {\n        case 'mini':\n          counts.up = randomNumber(8);\n          counts.mid = randomNumber(2);\n          counts.down = randomNumber(8);\n          break;\n        case 'maxi':\n          counts.up = randomNumber(16) + 3;\n          counts.mid = randomNumber(4) + 1;\n          counts.down = randomNumber(64) + 3;\n          break;\n        default:\n          counts.up = randomNumber(8) + 1;\n          counts.mid = randomNumber(6) / 2;\n          counts.down = randomNumber(8) + 1;\n          break;\n      }\n\n      var arr = ['up', 'mid', 'down'];\n      for (var d in arr) {\n        var index = arr[d];\n        for (var i = 0; i <= counts[index]; i++) {\n          if (options[index]) {\n            result = result + soul[index][randomNumber(soul[index].length)];\n          }\n        }\n      }\n    }\n    return result;\n  }\n  // don't summon him\n  return heComes(text, options);\n};\n\n","module['exports'] = function(colors) {\n  return function(letter, i, exploded) {\n    if (letter === ' ') return letter;\n    switch (i%3) {\n      case 0: return colors.red(letter);\n      case 1: return colors.white(letter);\n      case 2: return colors.blue(letter);\n    }\n  };\n};\n","module['exports'] = function(colors) {\n  return function(letter, i, exploded) {\n    return i % 2 === 0 ? letter : colors.inverse(letter);\n  };\n};\n","module['exports'] = function(colors) {\n  // RoY G BiV\n  var rainbowColors = ['red', 'yellow', 'green', 'blue', 'magenta'];\n  return function(letter, i, exploded) {\n    if (letter === ' ') {\n      return letter;\n    } else {\n      return colors[rainbowColors[i++ % rainbowColors.length]](letter);\n    }\n  };\n};\n\n","module['exports'] = function(colors) {\n  var available = ['underline', 'inverse', 'grey', 'yellow', 'red', 'green',\n    'blue', 'white', 'cyan', 'magenta', 'brightYellow', 'brightRed',\n    'brightGreen', 'brightBlue', 'brightWhite', 'brightCyan', 'brightMagenta'];\n  return function(letter, i, exploded) {\n    return letter === ' ' ? letter :\n      colors[\n          available[Math.round(Math.random() * (available.length - 2))]\n      ](letter);\n  };\n};\n","/*\n\nThe MIT License (MIT)\n\nOriginal Library\n  - Copyright (c) Marak Squires\n\nAdditional functionality\n - Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n\nvar colors = {};\nmodule['exports'] = colors;\n\ncolors.themes = {};\n\nvar util = require('util');\nvar ansiStyles = colors.styles = require('./styles');\nvar defineProps = Object.defineProperties;\nvar newLineRegex = new RegExp(/[\\r\\n]+/g);\n\ncolors.supportsColor = require('./system/supports-colors').supportsColor;\n\nif (typeof colors.enabled === 'undefined') {\n  colors.enabled = colors.supportsColor() !== false;\n}\n\ncolors.enable = function() {\n  colors.enabled = true;\n};\n\ncolors.disable = function() {\n  colors.enabled = false;\n};\n\ncolors.stripColors = colors.strip = function(str) {\n  return ('' + str).replace(/\\x1B\\[\\d+m/g, '');\n};\n\n// eslint-disable-next-line no-unused-vars\nvar stylize = colors.stylize = function stylize(str, style) {\n  if (!colors.enabled) {\n    return str+'';\n  }\n\n  var styleMap = ansiStyles[style];\n\n  // Stylize should work for non-ANSI styles, too\n  if (!styleMap && style in colors) {\n    // Style maps like trap operate as functions on strings;\n    // they don't have properties like open or close.\n    return colors[style](str);\n  }\n\n  return styleMap.open + str + styleMap.close;\n};\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\nvar escapeStringRegexp = function(str) {\n  if (typeof str !== 'string') {\n    throw new TypeError('Expected a string');\n  }\n  return str.replace(matchOperatorsRe, '\\\\$&');\n};\n\nfunction build(_styles) {\n  var builder = function builder() {\n    return applyStyle.apply(builder, arguments);\n  };\n  builder._styles = _styles;\n  // __proto__ is used because we must return a function, but there is\n  // no way to create a function with a different prototype.\n  builder.__proto__ = proto;\n  return builder;\n}\n\nvar styles = (function() {\n  var ret = {};\n  ansiStyles.grey = ansiStyles.gray;\n  Object.keys(ansiStyles).forEach(function(key) {\n    ansiStyles[key].closeRe =\n      new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n    ret[key] = {\n      get: function() {\n        return build(this._styles.concat(key));\n      },\n    };\n  });\n  return ret;\n})();\n\nvar proto = defineProps(function colors() {}, styles);\n\nfunction applyStyle() {\n  var args = Array.prototype.slice.call(arguments);\n\n  var str = args.map(function(arg) {\n    // Use weak equality check so we can colorize null/undefined in safe mode\n    if (arg != null && arg.constructor === String) {\n      return arg;\n    } else {\n      return util.inspect(arg);\n    }\n  }).join(' ');\n\n  if (!colors.enabled || !str) {\n    return str;\n  }\n\n  var newLinesPresent = str.indexOf('\\n') != -1;\n\n  var nestedStyles = this._styles;\n\n  var i = nestedStyles.length;\n  while (i--) {\n    var code = ansiStyles[nestedStyles[i]];\n    str = code.open + str.replace(code.closeRe, code.open) + code.close;\n    if (newLinesPresent) {\n      str = str.replace(newLineRegex, function(match) {\n        return code.close + match + code.open;\n      });\n    }\n  }\n\n  return str;\n}\n\ncolors.setTheme = function(theme) {\n  if (typeof theme === 'string') {\n    console.log('colors.setTheme now only accepts an object, not a string.  ' +\n      'If you are trying to set a theme from a file, it is now your (the ' +\n      'caller\\'s) responsibility to require the file.  The old syntax ' +\n      'looked like colors.setTheme(__dirname + ' +\n      '\\'/../themes/generic-logging.js\\'); The new syntax looks like '+\n      'colors.setTheme(require(__dirname + ' +\n      '\\'/../themes/generic-logging.js\\'));');\n    return;\n  }\n  for (var style in theme) {\n    (function(style) {\n      colors[style] = function(str) {\n        if (typeof theme[style] === 'object') {\n          var out = str;\n          for (var i in theme[style]) {\n            out = colors[theme[style][i]](out);\n          }\n          return out;\n        }\n        return colors[theme[style]](str);\n      };\n    })(style);\n  }\n};\n\nfunction init() {\n  var ret = {};\n  Object.keys(styles).forEach(function(name) {\n    ret[name] = {\n      get: function() {\n        return build([name]);\n      },\n    };\n  });\n  return ret;\n}\n\nvar sequencer = function sequencer(map, str) {\n  var exploded = str.split('');\n  exploded = exploded.map(map);\n  return exploded.join('');\n};\n\n// custom formatter methods\ncolors.trap = require('./custom/trap');\ncolors.zalgo = require('./custom/zalgo');\n\n// maps\ncolors.maps = {};\ncolors.maps.america = require('./maps/america')(colors);\ncolors.maps.zebra = require('./maps/zebra')(colors);\ncolors.maps.rainbow = require('./maps/rainbow')(colors);\ncolors.maps.random = require('./maps/random')(colors);\n\nfor (var map in colors.maps) {\n  (function(map) {\n    colors[map] = function(str) {\n      return sequencer(colors.maps[map], str);\n    };\n  })(map);\n}\n\ndefineProps(colors, init());\n","//\n// Remark: Requiring this file will use the \"safe\" colors API,\n// which will not touch String.prototype.\n//\n//   var colors = require('colors/safe');\n//   colors.red(\"foo\")\n//\n//\nvar colors = require('./lib/colors');\nmodule['exports'] = colors;\n","/**\n * cli.js: Config that conform to commonly used CLI logging levels.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * Default levels for the CLI configuration.\n * @type {Object}\n */\nexports.levels = {\n  error: 0,\n  warn: 1,\n  help: 2,\n  data: 3,\n  info: 4,\n  debug: 5,\n  prompt: 6,\n  verbose: 7,\n  input: 8,\n  silly: 9\n};\n\n/**\n * Default colors for the CLI configuration.\n * @type {Object}\n */\nexports.colors = {\n  error: 'red',\n  warn: 'yellow',\n  help: 'cyan',\n  data: 'grey',\n  info: 'green',\n  debug: 'blue',\n  prompt: 'grey',\n  verbose: 'cyan',\n  input: 'grey',\n  silly: 'magenta'\n};\n","/**\n * npm.js: Config that conform to npm logging levels.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * Default levels for the npm configuration.\n * @type {Object}\n */\nexports.levels = {\n  error: 0,\n  warn: 1,\n  info: 2,\n  http: 3,\n  verbose: 4,\n  debug: 5,\n  silly: 6\n};\n\n/**\n * Default levels for the npm configuration.\n * @type {Object}\n */\nexports.colors = {\n  error: 'red',\n  warn: 'yellow',\n  info: 'green',\n  http: 'green',\n  verbose: 'cyan',\n  debug: 'blue',\n  silly: 'magenta'\n};\n","/**\n * syslog.js: Config that conform to syslog logging levels.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * Default levels for the syslog configuration.\n * @type {Object}\n */\nexports.levels = {\n  emerg: 0,\n  alert: 1,\n  crit: 2,\n  error: 3,\n  warning: 4,\n  notice: 5,\n  info: 6,\n  debug: 7\n};\n\n/**\n * Default levels for the syslog configuration.\n * @type {Object}\n */\nexports.colors = {\n  emerg: 'red',\n  alert: 'yellow',\n  crit: 'red',\n  error: 'red',\n  warning: 'red',\n  notice: 'yellow',\n  info: 'green',\n  debug: 'blue'\n};\n","/**\n * index.js: Default settings for all levels that winston knows about.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * Export config set for the CLI.\n * @type {Object}\n */\nObject.defineProperty(exports, 'cli', {\n  value: require('./cli')\n});\n\n/**\n * Export config set for npm.\n * @type {Object}\n */\nObject.defineProperty(exports, 'npm', {\n  value: require('./npm')\n});\n\n/**\n * Export config set for the syslog.\n * @type {Object}\n */\nObject.defineProperty(exports, 'syslog', {\n  value: require('./syslog')\n});\n","'use strict';\n\n/**\n * A shareable symbol constant that can be used\n * as a non-enumerable / semi-hidden level identifier\n * to allow the readable level property to be mutable for\n * operations like colorization\n *\n * @type {Symbol}\n */\nObject.defineProperty(exports, 'LEVEL', {\n  value: Symbol.for('level')\n});\n\n/**\n * A shareable symbol constant that can be used\n * as a non-enumerable / semi-hidden message identifier\n * to allow the final message property to not have\n * side effects on another.\n *\n * @type {Symbol}\n */\nObject.defineProperty(exports, 'MESSAGE', {\n  value: Symbol.for('message')\n});\n\n/**\n * A shareable symbol constant that can be used\n * as a non-enumerable / semi-hidden message identifier\n * to allow the extracted splat property be hidden\n *\n * @type {Symbol}\n */\nObject.defineProperty(exports, 'SPLAT', {\n  value: Symbol.for('splat')\n});\n\n/**\n * A shareable object constant  that can be used\n * as a standard configuration for winston@3.\n *\n * @type {Object}\n */\nObject.defineProperty(exports, 'configs', {\n  value: require('./config')\n});\n","'use strict';\n\nconst colors = require('@colors/colors/safe');\nconst { LEVEL, MESSAGE } = require('triple-beam');\n\n//\n// Fix colors not appearing in non-tty environments\n//\ncolors.enabled = true;\n\n/**\n * @property {RegExp} hasSpace\n * Simple regex to check for presence of spaces.\n */\nconst hasSpace = /\\s+/;\n\n/*\n * Colorizer format. Wraps the `level` and/or `message` properties\n * of the `info` objects with ANSI color codes based on a few options.\n */\nclass Colorizer {\n  constructor(opts = {}) {\n    if (opts.colors) {\n      this.addColors(opts.colors);\n    }\n\n    this.options = opts;\n  }\n\n  /*\n   * Adds the colors Object to the set of allColors\n   * known by the Colorizer\n   *\n   * @param {Object} colors Set of color mappings to add.\n   */\n  static addColors(clrs) {\n    const nextColors = Object.keys(clrs).reduce((acc, level) => {\n      acc[level] = hasSpace.test(clrs[level])\n        ? clrs[level].split(hasSpace)\n        : clrs[level];\n\n      return acc;\n    }, {});\n\n    Colorizer.allColors = Object.assign({}, Colorizer.allColors || {}, nextColors);\n    return Colorizer.allColors;\n  }\n\n  /*\n   * Adds the colors Object to the set of allColors\n   * known by the Colorizer\n   *\n   * @param {Object} colors Set of color mappings to add.\n   */\n  addColors(clrs) {\n    return Colorizer.addColors(clrs);\n  }\n\n  /*\n   * function colorize (lookup, level, message)\n   * Performs multi-step colorization using @colors/colors/safe\n   */\n  colorize(lookup, level, message) {\n    if (typeof message === 'undefined') {\n      message = level;\n    }\n\n    //\n    // If the color for the level is just a string\n    // then attempt to colorize the message with it.\n    //\n    if (!Array.isArray(Colorizer.allColors[lookup])) {\n      return colors[Colorizer.allColors[lookup]](message);\n    }\n\n    //\n    // If it is an Array then iterate over that Array, applying\n    // the colors function for each item.\n    //\n    for (let i = 0, len = Colorizer.allColors[lookup].length; i < len; i++) {\n      message = colors[Colorizer.allColors[lookup][i]](message);\n    }\n\n    return message;\n  }\n\n  /*\n   * function transform (info, opts)\n   * Attempts to colorize the { level, message } of the given\n   * `logform` info object.\n   */\n  transform(info, opts) {\n    if (opts.all && typeof info[MESSAGE] === 'string') {\n      info[MESSAGE] = this.colorize(info[LEVEL], info.level, info[MESSAGE]);\n    }\n\n    if (opts.level || opts.all || !opts.message) {\n      info.level = this.colorize(info[LEVEL], info.level);\n    }\n\n    if (opts.all || opts.message) {\n      info.message = this.colorize(info[LEVEL], info.level, info.message);\n    }\n\n    return info;\n  }\n}\n\n/*\n * function colorize (info)\n * Returns a new instance of the colorize Format that applies\n * level colors to `info` objects. This was previously exposed\n * as { colorize: true } to transports in `winston < 3.0.0`.\n */\nmodule.exports = opts => new Colorizer(opts);\n\n//\n// Attach the Colorizer for registration purposes\n//\nmodule.exports.Colorizer\n  = module.exports.Format\n  = Colorizer;\n","'use strict';\n\nconst { Colorizer } = require('./colorize');\n\n/*\n * Simple method to register colors with a simpler require\n * path within the module.\n */\nmodule.exports = config => {\n  Colorizer.addColors(config.colors || config);\n  return config;\n};\n","'use strict';\n\nconst format = require('./format');\n\n/*\n * function align (info)\n * Returns a new instance of the align Format which adds a `\\t`\n * delimiter before the message to properly align it in the same place.\n * It was previously { align: true } in winston < 3.0.0\n */\nmodule.exports = format(info => {\n  info.message = `\\t${info.message}`;\n  return info;\n});\n","/* eslint no-undefined: 0 */\n'use strict';\n\nconst format = require('./format');\nconst { LEVEL, MESSAGE } = require('triple-beam');\n\n/*\n * function errors (info)\n * If the `message` property of the `info` object is an instance of `Error`,\n * replace the `Error` object its own `message` property.\n *\n * Optionally, the Error's `stack` and/or `cause` properties can also be appended to the `info` object.\n */\nmodule.exports = format((einfo, { stack, cause }) => {\n  if (einfo instanceof Error) {\n    const info = Object.assign({}, einfo, {\n      level: einfo.level,\n      [LEVEL]: einfo[LEVEL] || einfo.level,\n      message: einfo.message,\n      [MESSAGE]: einfo[MESSAGE] || einfo.message\n    });\n\n    if (stack) info.stack = einfo.stack;\n    if (cause) info.cause = einfo.cause;\n    return info;\n  }\n\n  if (!(einfo.message instanceof Error)) return einfo;\n\n  // Assign all enumerable properties and the\n  // message property from the error provided.\n  const err = einfo.message;\n  Object.assign(einfo, err);\n  einfo.message = err.message;\n  einfo[MESSAGE] = err.message;\n\n  // Assign the stack and/or cause if requested.\n  if (stack) einfo.stack = err.stack;\n  if (cause) einfo.cause = err.cause;\n  return einfo;\n});\n","/* eslint no-unused-vars: 0 */\n'use strict';\n\nconst { configs, LEVEL, MESSAGE } = require('triple-beam');\n\nclass Padder {\n  constructor(opts = { levels: configs.npm.levels }) {\n    this.paddings = Padder.paddingForLevels(opts.levels, opts.filler);\n    this.options = opts;\n  }\n\n  /**\n   * Returns the maximum length of keys in the specified `levels` Object.\n   * @param  {Object} levels Set of all levels to calculate longest level against.\n   * @returns {Number} Maximum length of the longest level string.\n   */\n  static getLongestLevel(levels) {\n    const lvls = Object.keys(levels).map(level => level.length);\n    return Math.max(...lvls);\n  }\n\n  /**\n   * Returns the padding for the specified `level` assuming that the\n   * maximum length of all levels it's associated with is `maxLength`.\n   * @param  {String} level Level to calculate padding for.\n   * @param  {String} filler Repeatable text to use for padding.\n   * @param  {Number} maxLength Length of the longest level\n   * @returns {String} Padding string for the `level`\n   */\n  static paddingForLevel(level, filler, maxLength) {\n    const targetLen = maxLength + 1 - level.length;\n    const rep = Math.floor(targetLen / filler.length);\n    const padding = `${filler}${filler.repeat(rep)}`;\n    return padding.slice(0, targetLen);\n  }\n\n  /**\n   * Returns an object with the string paddings for the given `levels`\n   * using the specified `filler`.\n   * @param  {Object} levels Set of all levels to calculate padding for.\n   * @param  {String} filler Repeatable text to use for padding.\n   * @returns {Object} Mapping of level to desired padding.\n   */\n  static paddingForLevels(levels, filler = ' ') {\n    const maxLength = Padder.getLongestLevel(levels);\n    return Object.keys(levels).reduce((acc, level) => {\n      acc[level] = Padder.paddingForLevel(level, filler, maxLength);\n      return acc;\n    }, {});\n  }\n\n  /**\n   * Prepends the padding onto the `message` based on the `LEVEL` of\n   * the `info`. This is based on the behavior of `winston@2` which also\n   * prepended the level onto the message.\n   *\n   * See: https://github.com/winstonjs/winston/blob/2.x/lib/winston/logger.js#L198-L201\n   *\n   * @param  {Info} info Logform info object\n   * @param  {Object} opts Options passed along to this instance.\n   * @returns {Info} Modified logform info object.\n   */\n  transform(info, opts) {\n    info.message = `${this.paddings[info[LEVEL]]}${info.message}`;\n    if (info[MESSAGE]) {\n      info[MESSAGE] = `${this.paddings[info[LEVEL]]}${info[MESSAGE]}`;\n    }\n\n    return info;\n  }\n}\n\n/*\n * function padLevels (info)\n * Returns a new instance of the padLevels Format which pads\n * levels to be the same length. This was previously exposed as\n * { padLevels: true } to transports in `winston < 3.0.0`.\n */\nmodule.exports = opts => new Padder(opts);\n\nmodule.exports.Padder\n  = module.exports.Format\n  = Padder;\n","'use strict';\n\nconst { Colorizer } = require('./colorize');\nconst { Padder } = require('./pad-levels');\nconst { configs, MESSAGE } = require('triple-beam');\n\n\n/**\n * Cli format class that handles initial state for a a separate\n * Colorizer and Padder instance.\n */\nclass CliFormat {\n  constructor(opts = {}) {\n    if (!opts.levels) {\n      opts.levels = configs.cli.levels;\n    }\n\n    this.colorizer = new Colorizer(opts);\n    this.padder = new Padder(opts);\n    this.options = opts;\n  }\n\n  /*\n   * function transform (info, opts)\n   * Attempts to both:\n   * 1. Pad the { level }\n   * 2. Colorize the { level, message }\n   * of the given `logform` info object depending on the `opts`.\n   */\n  transform(info, opts) {\n    this.colorizer.transform(\n      this.padder.transform(info, opts),\n      opts\n    );\n\n    info[MESSAGE] = `${info.level}:${info.message}`;\n    return info;\n  }\n}\n\n/*\n * function cli (opts)\n * Returns a new instance of the CLI format that turns a log\n * `info` object into the same format previously available\n * in `winston.cli()` in `winston < 3.0.0`.\n */\nmodule.exports = opts => new CliFormat(opts);\n\n//\n// Attach the CliFormat for registration purposes\n//\nmodule.exports.Format = CliFormat;\n","'use strict';\n\nconst format = require('./format');\n\n/*\n * function cascade(formats)\n * Returns a function that invokes the `._format` function in-order\n * for the specified set of `formats`. In this manner we say that Formats\n * are \"pipe-like\", but not a pure pumpify implementation. Since there is no back\n * pressure we can remove all of the \"readable\" plumbing in Node streams.\n */\nfunction cascade(formats) {\n  if (!formats.every(isValidFormat)) {\n    return;\n  }\n\n  return info => {\n    let obj = info;\n    for (let i = 0; i < formats.length; i++) {\n      obj = formats[i].transform(obj, formats[i].options);\n      if (!obj) {\n        return false;\n      }\n    }\n\n    return obj;\n  };\n}\n\n/*\n * function isValidFormat(format)\n * If the format does not define a `transform` function throw an error\n * with more detailed usage.\n */\nfunction isValidFormat(fmt) {\n  if (typeof fmt.transform !== 'function') {\n    throw new Error([\n      'No transform function found on format. Did you create a format instance?',\n      'const myFormat = format(formatFn);',\n      'const instance = myFormat();'\n    ].join('\\n'));\n  }\n\n  return true;\n}\n\n/*\n * function combine (info)\n * Returns a new instance of the combine Format which combines the specified\n * formats into a new format. This is similar to a pipe-chain in transform streams.\n * We choose to combine the prototypes this way because there is no back pressure in\n * an in-memory transform chain.\n */\nmodule.exports = (...formats) => {\n  const combinedFormat = format(cascade(formats));\n  const instance = combinedFormat();\n  instance.Format = combinedFormat.Format;\n  return instance;\n};\n\n//\n// Export the cascade method for use in cli and other\n// combined formats that should not be assumed to be\n// singletons.\n//\nmodule.exports.cascade = cascade;\n","'use strict'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst stringify = configure()\n\n// @ts-expect-error\nstringify.configure = configure\n// @ts-expect-error\nstringify.stringify = stringify\n\n// @ts-expect-error\nstringify.default = stringify\n\n// @ts-expect-error used for named export\nexports.stringify = stringify\n// @ts-expect-error used for named export\nexports.configure = configure\n\nmodule.exports = stringify\n\n// eslint-disable-next-line no-control-regex\nconst strEscapeSequencesRegExp = /[\\u0000-\\u001f\\u0022\\u005c\\ud800-\\udfff]/\n\n// Escape C0 control characters, double quotes, the backslash and every code\n// unit with a numeric value in the inclusive range 0xD800 to 0xDFFF.\nfunction strEscape (str) {\n  // Some magic numbers that worked out fine while benchmarking with v8 8.0\n  if (str.length < 5000 && !strEscapeSequencesRegExp.test(str)) {\n    return `\"${str}\"`\n  }\n  return JSON.stringify(str)\n}\n\nfunction sort (array, comparator) {\n  // Insertion sort is very efficient for small input sizes, but it has a bad\n  // worst case complexity. Thus, use native array sort for bigger values.\n  if (array.length > 2e2 || comparator) {\n    return array.sort(comparator)\n  }\n  for (let i = 1; i < array.length; i++) {\n    const currentValue = array[i]\n    let position = i\n    while (position !== 0 && array[position - 1] > currentValue) {\n      array[position] = array[position - 1]\n      position--\n    }\n    array[position] = currentValue\n  }\n  return array\n}\n\nconst typedArrayPrototypeGetSymbolToStringTag =\n  Object.getOwnPropertyDescriptor(\n    Object.getPrototypeOf(\n      Object.getPrototypeOf(\n        new Int8Array()\n      )\n    ),\n    Symbol.toStringTag\n  ).get\n\nfunction isTypedArrayWithEntries (value) {\n  return typedArrayPrototypeGetSymbolToStringTag.call(value) !== undefined && value.length !== 0\n}\n\nfunction stringifyTypedArray (array, separator, maximumBreadth) {\n  if (array.length < maximumBreadth) {\n    maximumBreadth = array.length\n  }\n  const whitespace = separator === ',' ? '' : ' '\n  let res = `\"0\":${whitespace}${array[0]}`\n  for (let i = 1; i < maximumBreadth; i++) {\n    res += `${separator}\"${i}\":${whitespace}${array[i]}`\n  }\n  return res\n}\n\nfunction getCircularValueOption (options) {\n  if (hasOwnProperty.call(options, 'circularValue')) {\n    const circularValue = options.circularValue\n    if (typeof circularValue === 'string') {\n      return `\"${circularValue}\"`\n    }\n    if (circularValue == null) {\n      return circularValue\n    }\n    if (circularValue === Error || circularValue === TypeError) {\n      return {\n        toString () {\n          throw new TypeError('Converting circular structure to JSON')\n        }\n      }\n    }\n    throw new TypeError('The \"circularValue\" argument must be of type string or the value null or undefined')\n  }\n  return '\"[Circular]\"'\n}\n\nfunction getDeterministicOption (options) {\n  let value\n  if (hasOwnProperty.call(options, 'deterministic')) {\n    value = options.deterministic\n    if (typeof value !== 'boolean' && typeof value !== 'function') {\n      throw new TypeError('The \"deterministic\" argument must be of type boolean or comparator function')\n    }\n  }\n  return value === undefined ? true : value\n}\n\nfunction getBooleanOption (options, key) {\n  let value\n  if (hasOwnProperty.call(options, key)) {\n    value = options[key]\n    if (typeof value !== 'boolean') {\n      throw new TypeError(`The \"${key}\" argument must be of type boolean`)\n    }\n  }\n  return value === undefined ? true : value\n}\n\nfunction getPositiveIntegerOption (options, key) {\n  let value\n  if (hasOwnProperty.call(options, key)) {\n    value = options[key]\n    if (typeof value !== 'number') {\n      throw new TypeError(`The \"${key}\" argument must be of type number`)\n    }\n    if (!Number.isInteger(value)) {\n      throw new TypeError(`The \"${key}\" argument must be an integer`)\n    }\n    if (value < 1) {\n      throw new RangeError(`The \"${key}\" argument must be >= 1`)\n    }\n  }\n  return value === undefined ? Infinity : value\n}\n\nfunction getItemCount (number) {\n  if (number === 1) {\n    return '1 item'\n  }\n  return `${number} items`\n}\n\nfunction getUniqueReplacerSet (replacerArray) {\n  const replacerSet = new Set()\n  for (const value of replacerArray) {\n    if (typeof value === 'string' || typeof value === 'number') {\n      replacerSet.add(String(value))\n    }\n  }\n  return replacerSet\n}\n\nfunction getStrictOption (options) {\n  if (hasOwnProperty.call(options, 'strict')) {\n    const value = options.strict\n    if (typeof value !== 'boolean') {\n      throw new TypeError('The \"strict\" argument must be of type boolean')\n    }\n    if (value) {\n      return (value) => {\n        let message = `Object can not safely be stringified. Received type ${typeof value}`\n        if (typeof value !== 'function') message += ` (${value.toString()})`\n        throw new Error(message)\n      }\n    }\n  }\n}\n\nfunction configure (options) {\n  options = { ...options }\n  const fail = getStrictOption(options)\n  if (fail) {\n    if (options.bigint === undefined) {\n      options.bigint = false\n    }\n    if (!('circularValue' in options)) {\n      options.circularValue = Error\n    }\n  }\n  const circularValue = getCircularValueOption(options)\n  const bigint = getBooleanOption(options, 'bigint')\n  const deterministic = getDeterministicOption(options)\n  const comparator = typeof deterministic === 'function' ? deterministic : undefined\n  const maximumDepth = getPositiveIntegerOption(options, 'maximumDepth')\n  const maximumBreadth = getPositiveIntegerOption(options, 'maximumBreadth')\n\n  function stringifyFnReplacer (key, parent, stack, replacer, spacer, indentation) {\n    let value = parent[key]\n\n    if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n      value = value.toJSON(key)\n    }\n    value = replacer.call(parent, key, value)\n\n    switch (typeof value) {\n      case 'string':\n        return strEscape(value)\n      case 'object': {\n        if (value === null) {\n          return 'null'\n        }\n        if (stack.indexOf(value) !== -1) {\n          return circularValue\n        }\n\n        let res = ''\n        let join = ','\n        const originalIndentation = indentation\n\n        if (Array.isArray(value)) {\n          if (value.length === 0) {\n            return '[]'\n          }\n          if (maximumDepth < stack.length + 1) {\n            return '\"[Array]\"'\n          }\n          stack.push(value)\n          if (spacer !== '') {\n            indentation += spacer\n            res += `\\n${indentation}`\n            join = `,\\n${indentation}`\n          }\n          const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n          let i = 0\n          for (; i < maximumValuesToStringify - 1; i++) {\n            const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n            res += tmp !== undefined ? tmp : 'null'\n            res += join\n          }\n          const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n          res += tmp !== undefined ? tmp : 'null'\n          if (value.length - 1 > maximumBreadth) {\n            const removedKeys = value.length - maximumBreadth - 1\n            res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n          }\n          if (spacer !== '') {\n            res += `\\n${originalIndentation}`\n          }\n          stack.pop()\n          return `[${res}]`\n        }\n\n        let keys = Object.keys(value)\n        const keyLength = keys.length\n        if (keyLength === 0) {\n          return '{}'\n        }\n        if (maximumDepth < stack.length + 1) {\n          return '\"[Object]\"'\n        }\n        let whitespace = ''\n        let separator = ''\n        if (spacer !== '') {\n          indentation += spacer\n          join = `,\\n${indentation}`\n          whitespace = ' '\n        }\n        const maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n        if (deterministic && !isTypedArrayWithEntries(value)) {\n          keys = sort(keys, comparator)\n        }\n        stack.push(value)\n        for (let i = 0; i < maximumPropertiesToStringify; i++) {\n          const key = keys[i]\n          const tmp = stringifyFnReplacer(key, value, stack, replacer, spacer, indentation)\n          if (tmp !== undefined) {\n            res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n            separator = join\n          }\n        }\n        if (keyLength > maximumBreadth) {\n          const removedKeys = keyLength - maximumBreadth\n          res += `${separator}\"...\":${whitespace}\"${getItemCount(removedKeys)} not stringified\"`\n          separator = join\n        }\n        if (spacer !== '' && separator.length > 1) {\n          res = `\\n${indentation}${res}\\n${originalIndentation}`\n        }\n        stack.pop()\n        return `{${res}}`\n      }\n      case 'number':\n        return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n      case 'boolean':\n        return value === true ? 'true' : 'false'\n      case 'undefined':\n        return undefined\n      case 'bigint':\n        if (bigint) {\n          return String(value)\n        }\n        // fallthrough\n      default:\n        return fail ? fail(value) : undefined\n    }\n  }\n\n  function stringifyArrayReplacer (key, value, stack, replacer, spacer, indentation) {\n    if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n      value = value.toJSON(key)\n    }\n\n    switch (typeof value) {\n      case 'string':\n        return strEscape(value)\n      case 'object': {\n        if (value === null) {\n          return 'null'\n        }\n        if (stack.indexOf(value) !== -1) {\n          return circularValue\n        }\n\n        const originalIndentation = indentation\n        let res = ''\n        let join = ','\n\n        if (Array.isArray(value)) {\n          if (value.length === 0) {\n            return '[]'\n          }\n          if (maximumDepth < stack.length + 1) {\n            return '\"[Array]\"'\n          }\n          stack.push(value)\n          if (spacer !== '') {\n            indentation += spacer\n            res += `\\n${indentation}`\n            join = `,\\n${indentation}`\n          }\n          const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n          let i = 0\n          for (; i < maximumValuesToStringify - 1; i++) {\n            const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n            res += tmp !== undefined ? tmp : 'null'\n            res += join\n          }\n          const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n          res += tmp !== undefined ? tmp : 'null'\n          if (value.length - 1 > maximumBreadth) {\n            const removedKeys = value.length - maximumBreadth - 1\n            res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n          }\n          if (spacer !== '') {\n            res += `\\n${originalIndentation}`\n          }\n          stack.pop()\n          return `[${res}]`\n        }\n        stack.push(value)\n        let whitespace = ''\n        if (spacer !== '') {\n          indentation += spacer\n          join = `,\\n${indentation}`\n          whitespace = ' '\n        }\n        let separator = ''\n        for (const key of replacer) {\n          const tmp = stringifyArrayReplacer(key, value[key], stack, replacer, spacer, indentation)\n          if (tmp !== undefined) {\n            res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n            separator = join\n          }\n        }\n        if (spacer !== '' && separator.length > 1) {\n          res = `\\n${indentation}${res}\\n${originalIndentation}`\n        }\n        stack.pop()\n        return `{${res}}`\n      }\n      case 'number':\n        return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n      case 'boolean':\n        return value === true ? 'true' : 'false'\n      case 'undefined':\n        return undefined\n      case 'bigint':\n        if (bigint) {\n          return String(value)\n        }\n        // fallthrough\n      default:\n        return fail ? fail(value) : undefined\n    }\n  }\n\n  function stringifyIndent (key, value, stack, spacer, indentation) {\n    switch (typeof value) {\n      case 'string':\n        return strEscape(value)\n      case 'object': {\n        if (value === null) {\n          return 'null'\n        }\n        if (typeof value.toJSON === 'function') {\n          value = value.toJSON(key)\n          // Prevent calling `toJSON` again.\n          if (typeof value !== 'object') {\n            return stringifyIndent(key, value, stack, spacer, indentation)\n          }\n          if (value === null) {\n            return 'null'\n          }\n        }\n        if (stack.indexOf(value) !== -1) {\n          return circularValue\n        }\n        const originalIndentation = indentation\n\n        if (Array.isArray(value)) {\n          if (value.length === 0) {\n            return '[]'\n          }\n          if (maximumDepth < stack.length + 1) {\n            return '\"[Array]\"'\n          }\n          stack.push(value)\n          indentation += spacer\n          let res = `\\n${indentation}`\n          const join = `,\\n${indentation}`\n          const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n          let i = 0\n          for (; i < maximumValuesToStringify - 1; i++) {\n            const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n            res += tmp !== undefined ? tmp : 'null'\n            res += join\n          }\n          const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n          res += tmp !== undefined ? tmp : 'null'\n          if (value.length - 1 > maximumBreadth) {\n            const removedKeys = value.length - maximumBreadth - 1\n            res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n          }\n          res += `\\n${originalIndentation}`\n          stack.pop()\n          return `[${res}]`\n        }\n\n        let keys = Object.keys(value)\n        const keyLength = keys.length\n        if (keyLength === 0) {\n          return '{}'\n        }\n        if (maximumDepth < stack.length + 1) {\n          return '\"[Object]\"'\n        }\n        indentation += spacer\n        const join = `,\\n${indentation}`\n        let res = ''\n        let separator = ''\n        let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n        if (isTypedArrayWithEntries(value)) {\n          res += stringifyTypedArray(value, join, maximumBreadth)\n          keys = keys.slice(value.length)\n          maximumPropertiesToStringify -= value.length\n          separator = join\n        }\n        if (deterministic) {\n          keys = sort(keys, comparator)\n        }\n        stack.push(value)\n        for (let i = 0; i < maximumPropertiesToStringify; i++) {\n          const key = keys[i]\n          const tmp = stringifyIndent(key, value[key], stack, spacer, indentation)\n          if (tmp !== undefined) {\n            res += `${separator}${strEscape(key)}: ${tmp}`\n            separator = join\n          }\n        }\n        if (keyLength > maximumBreadth) {\n          const removedKeys = keyLength - maximumBreadth\n          res += `${separator}\"...\": \"${getItemCount(removedKeys)} not stringified\"`\n          separator = join\n        }\n        if (separator !== '') {\n          res = `\\n${indentation}${res}\\n${originalIndentation}`\n        }\n        stack.pop()\n        return `{${res}}`\n      }\n      case 'number':\n        return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n      case 'boolean':\n        return value === true ? 'true' : 'false'\n      case 'undefined':\n        return undefined\n      case 'bigint':\n        if (bigint) {\n          return String(value)\n        }\n        // fallthrough\n      default:\n        return fail ? fail(value) : undefined\n    }\n  }\n\n  function stringifySimple (key, value, stack) {\n    switch (typeof value) {\n      case 'string':\n        return strEscape(value)\n      case 'object': {\n        if (value === null) {\n          return 'null'\n        }\n        if (typeof value.toJSON === 'function') {\n          value = value.toJSON(key)\n          // Prevent calling `toJSON` again\n          if (typeof value !== 'object') {\n            return stringifySimple(key, value, stack)\n          }\n          if (value === null) {\n            return 'null'\n          }\n        }\n        if (stack.indexOf(value) !== -1) {\n          return circularValue\n        }\n\n        let res = ''\n\n        const hasLength = value.length !== undefined\n        if (hasLength && Array.isArray(value)) {\n          if (value.length === 0) {\n            return '[]'\n          }\n          if (maximumDepth < stack.length + 1) {\n            return '\"[Array]\"'\n          }\n          stack.push(value)\n          const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n          let i = 0\n          for (; i < maximumValuesToStringify - 1; i++) {\n            const tmp = stringifySimple(String(i), value[i], stack)\n            res += tmp !== undefined ? tmp : 'null'\n            res += ','\n          }\n          const tmp = stringifySimple(String(i), value[i], stack)\n          res += tmp !== undefined ? tmp : 'null'\n          if (value.length - 1 > maximumBreadth) {\n            const removedKeys = value.length - maximumBreadth - 1\n            res += `,\"... ${getItemCount(removedKeys)} not stringified\"`\n          }\n          stack.pop()\n          return `[${res}]`\n        }\n\n        let keys = Object.keys(value)\n        const keyLength = keys.length\n        if (keyLength === 0) {\n          return '{}'\n        }\n        if (maximumDepth < stack.length + 1) {\n          return '\"[Object]\"'\n        }\n        let separator = ''\n        let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n        if (hasLength && isTypedArrayWithEntries(value)) {\n          res += stringifyTypedArray(value, ',', maximumBreadth)\n          keys = keys.slice(value.length)\n          maximumPropertiesToStringify -= value.length\n          separator = ','\n        }\n        if (deterministic) {\n          keys = sort(keys, comparator)\n        }\n        stack.push(value)\n        for (let i = 0; i < maximumPropertiesToStringify; i++) {\n          const key = keys[i]\n          const tmp = stringifySimple(key, value[key], stack)\n          if (tmp !== undefined) {\n            res += `${separator}${strEscape(key)}:${tmp}`\n            separator = ','\n          }\n        }\n        if (keyLength > maximumBreadth) {\n          const removedKeys = keyLength - maximumBreadth\n          res += `${separator}\"...\":\"${getItemCount(removedKeys)} not stringified\"`\n        }\n        stack.pop()\n        return `{${res}}`\n      }\n      case 'number':\n        return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n      case 'boolean':\n        return value === true ? 'true' : 'false'\n      case 'undefined':\n        return undefined\n      case 'bigint':\n        if (bigint) {\n          return String(value)\n        }\n        // fallthrough\n      default:\n        return fail ? fail(value) : undefined\n    }\n  }\n\n  function stringify (value, replacer, space) {\n    if (arguments.length > 1) {\n      let spacer = ''\n      if (typeof space === 'number') {\n        spacer = ' '.repeat(Math.min(space, 10))\n      } else if (typeof space === 'string') {\n        spacer = space.slice(0, 10)\n      }\n      if (replacer != null) {\n        if (typeof replacer === 'function') {\n          return stringifyFnReplacer('', { '': value }, [], replacer, spacer, '')\n        }\n        if (Array.isArray(replacer)) {\n          return stringifyArrayReplacer('', value, [], getUniqueReplacerSet(replacer), spacer, '')\n        }\n      }\n      if (spacer.length !== 0) {\n        return stringifyIndent('', value, [], spacer, '')\n      }\n    }\n    return stringifySimple('', value, [])\n  }\n\n  return stringify\n}\n","'use strict';\n\nconst format = require('./format');\nconst { MESSAGE } = require('triple-beam');\nconst stringify = require('safe-stable-stringify');\n\n/*\n * function replacer (key, value)\n * Handles proper stringification of Buffer and bigint output.\n */\nfunction replacer(key, value) {\n  // safe-stable-stringify does support BigInt, however, it doesn't wrap the value in quotes.\n  // Leading to a loss in fidelity if the resulting string is parsed.\n  // It would also be a breaking change for logform.\n  if (typeof value === 'bigint')\n    return value.toString();\n  return value;\n}\n\n/*\n * function json (info)\n * Returns a new instance of the JSON format that turns a log `info`\n * object into pure JSON. This was previously exposed as { json: true }\n * to transports in `winston < 3.0.0`.\n */\nmodule.exports = format((info, opts) => {\n  const jsonStringify = stringify.configure(opts);\n  info[MESSAGE] = jsonStringify(info, opts.replacer || replacer, opts.space);\n  return info;\n});\n","'use strict';\n\nconst format = require('./format');\n\n/*\n * function label (info)\n * Returns a new instance of the label Format which adds the specified\n * `opts.label` before the message. This was previously exposed as\n * { label: 'my label' } to transports in `winston < 3.0.0`.\n */\nmodule.exports = format((info, opts) => {\n  if (opts.message) {\n    info.message = `[${opts.label}] ${info.message}`;\n    return info;\n  }\n\n  info.label = opts.label;\n  return info;\n});\n","'use strict';\n\nconst format = require('./format');\nconst { MESSAGE } = require('triple-beam');\nconst jsonStringify = require('safe-stable-stringify');\n\n/*\n * function logstash (info)\n * Returns a new instance of the LogStash Format that turns a\n * log `info` object into pure JSON with the appropriate logstash\n * options. This was previously exposed as { logstash: true }\n * to transports in `winston < 3.0.0`.\n */\nmodule.exports = format(info => {\n  const logstash = {};\n  if (info.message) {\n    logstash['@message'] = info.message;\n    delete info.message;\n  }\n\n  if (info.timestamp) {\n    logstash['@timestamp'] = info.timestamp;\n    delete info.timestamp;\n  }\n\n  logstash['@fields'] = info;\n  info[MESSAGE] = jsonStringify(logstash);\n  return info;\n});\n","'use strict';\n\nconst format = require('./format');\n\nfunction fillExcept(info, fillExceptKeys, metadataKey) {\n  const savedKeys = fillExceptKeys.reduce((acc, key) => {\n    acc[key] = info[key];\n    delete info[key];\n    return acc;\n  }, {});\n  const metadata = Object.keys(info).reduce((acc, key) => {\n    acc[key] = info[key];\n    delete info[key];\n    return acc;\n  }, {});\n\n  Object.assign(info, savedKeys, {\n    [metadataKey]: metadata\n  });\n  return info;\n}\n\nfunction fillWith(info, fillWithKeys, metadataKey) {\n  info[metadataKey] = fillWithKeys.reduce((acc, key) => {\n    acc[key] = info[key];\n    delete info[key];\n    return acc;\n  }, {});\n  return info;\n}\n\n/**\n * Adds in a \"metadata\" object to collect extraneous data, similar to the metadata\n * object in winston 2.x.\n */\nmodule.exports = format((info, opts = {}) => {\n  let metadataKey = 'metadata';\n  if (opts.key) {\n    metadataKey = opts.key;\n  }\n\n  let fillExceptKeys = [];\n  if (!opts.fillExcept && !opts.fillWith) {\n    fillExceptKeys.push('level');\n    fillExceptKeys.push('message');\n  }\n\n  if (opts.fillExcept) {\n    fillExceptKeys = opts.fillExcept;\n  }\n\n  if (fillExceptKeys.length > 0) {\n    return fillExcept(info, fillExceptKeys, metadataKey);\n  }\n\n  if (opts.fillWith) {\n    return fillWith(info, opts.fillWith, metadataKey);\n  }\n\n  return info;\n});\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","'use strict';\n\nconst format = require('./format');\nconst ms = require('ms');\n\n/*\n * function ms (info)\n * Returns an `info` with a `ms` property. The `ms` property holds the Value\n * of the time difference between two calls in milliseconds.\n */\nmodule.exports = format(info => {\n  const curr = +new Date();\n  this.diff = curr - (this.prevTime || curr);\n  this.prevTime = curr;\n  info.ms = `+${ms(this.diff)}`;\n\n  return info;\n});\n","'use strict';\n\nconst inspect = require('util').inspect;\nconst format = require('./format');\nconst { LEVEL, MESSAGE, SPLAT } = require('triple-beam');\n\n/*\n * function prettyPrint (info)\n * Returns a new instance of the prettyPrint Format that \"prettyPrint\"\n * serializes `info` objects. This was previously exposed as\n * { prettyPrint: true } to transports in `winston < 3.0.0`.\n */\nmodule.exports = format((info, opts = {}) => {\n  //\n  // info[{LEVEL, MESSAGE, SPLAT}] are enumerable here. Since they\n  // are internal, we remove them before util.inspect so they\n  // are not printed.\n  //\n  const stripped = Object.assign({}, info);\n\n  // Remark (indexzero): update this technique in April 2019\n  // when node@6 is EOL\n  delete stripped[LEVEL];\n  delete stripped[MESSAGE];\n  delete stripped[SPLAT];\n\n  info[MESSAGE] = inspect(stripped, false, opts.depth || null, opts.colorize);\n  return info;\n});\n","'use strict';\n\nconst { MESSAGE } = require('triple-beam');\n\nclass Printf {\n  constructor(templateFn) {\n    this.template = templateFn;\n  }\n\n  transform(info) {\n    info[MESSAGE] = this.template(info);\n    return info;\n  }\n}\n\n/*\n * function printf (templateFn)\n * Returns a new instance of the printf Format that creates an\n * intermediate prototype to store the template string-based formatter\n * function.\n */\nmodule.exports = opts => new Printf(opts);\n\nmodule.exports.Printf\n  = module.exports.Format\n  = Printf;\n","/* eslint no-undefined: 0 */\n'use strict';\n\nconst format = require('./format');\nconst { MESSAGE } = require('triple-beam');\nconst jsonStringify = require('safe-stable-stringify');\n\n/*\n * function simple (info)\n * Returns a new instance of the simple format TransformStream\n * which writes a simple representation of logs.\n *\n *    const { level, message, splat, ...rest } = info;\n *\n *    ${level}: ${message}                            if rest is empty\n *    ${level}: ${message} ${JSON.stringify(rest)}    otherwise\n */\nmodule.exports = format(info => {\n  const stringifiedRest = jsonStringify(Object.assign({}, info, {\n    level: undefined,\n    message: undefined,\n    splat: undefined\n  }));\n\n  const padding = info.padding && info.padding[info.level] || '';\n  if (stringifiedRest !== '{}') {\n    info[MESSAGE] = `${info.level}:${padding} ${info.message} ${stringifiedRest}`;\n  } else {\n    info[MESSAGE] = `${info.level}:${padding} ${info.message}`;\n  }\n\n  return info;\n});\n","'use strict';\n\nconst util = require('util');\nconst { SPLAT } = require('triple-beam');\n\n/**\n * Captures the number of format (i.e. %s strings) in a given string.\n * Based on `util.format`, see Node.js source:\n * https://github.com/nodejs/node/blob/b1c8f15c5f169e021f7c46eb7b219de95fe97603/lib/util.js#L201-L230\n * @type {RegExp}\n */\nconst formatRegExp = /%[scdjifoO%]/g;\n\n/**\n * Captures the number of escaped % signs in a format string (i.e. %s strings).\n * @type {RegExp}\n */\nconst escapedPercent = /%%/g;\n\nclass Splatter {\n  constructor(opts) {\n    this.options = opts;\n  }\n\n  /**\n     * Check to see if tokens <= splat.length, assign { splat, meta } into the\n     * `info` accordingly, and write to this instance.\n     *\n     * @param  {Info} info Logform info message.\n     * @param  {String[]} tokens Set of string interpolation tokens.\n     * @returns {Info} Modified info message\n     * @private\n     */\n  _splat(info, tokens) {\n    const msg = info.message;\n    const splat = info[SPLAT] || info.splat || [];\n    const percents = msg.match(escapedPercent);\n    const escapes = percents && percents.length || 0;\n\n    // The expected splat is the number of tokens minus the number of escapes\n    // e.g.\n    // - { expectedSplat: 3 } '%d %s %j'\n    // - { expectedSplat: 5 } '[%s] %d%% %d%% %s %j'\n    //\n    // Any \"meta\" will be arugments in addition to the expected splat size\n    // regardless of type. e.g.\n    //\n    // logger.log('info', '%d%% %s %j', 100, 'wow', { such: 'js' }, { thisIsMeta: true });\n    // would result in splat of four (4), but only three (3) are expected. Therefore:\n    //\n    // extraSplat = 3 - 4 = -1\n    // metas = [100, 'wow', { such: 'js' }, { thisIsMeta: true }].splice(-1, -1 * -1);\n    // splat = [100, 'wow', { such: 'js' }]\n    const expectedSplat = tokens.length - escapes;\n    const extraSplat = expectedSplat - splat.length;\n    const metas = extraSplat < 0\n      ? splat.splice(extraSplat, -1 * extraSplat)\n      : [];\n\n    // Now that { splat } has been separated from any potential { meta }. we\n    // can assign this to the `info` object and write it to our format stream.\n    // If the additional metas are **NOT** objects or **LACK** enumerable properties\n    // you are going to have a bad time.\n    const metalen = metas.length;\n    if (metalen) {\n      for (let i = 0; i < metalen; i++) {\n        Object.assign(info, metas[i]);\n      }\n    }\n\n    info.message = util.format(msg, ...splat);\n    return info;\n  }\n\n  /**\n    * Transforms the `info` message by using `util.format` to complete\n    * any `info.message` provided it has string interpolation tokens.\n    * If no tokens exist then `info` is immutable.\n    *\n    * @param  {Info} info Logform info message.\n    * @param  {Object} opts Options for this instance.\n    * @returns {Info} Modified info message\n    */\n  transform(info) {\n    const msg = info.message;\n    const splat = info[SPLAT] || info.splat;\n\n    // No need to process anything if splat is undefined\n    if (!splat || !splat.length) {\n      return info;\n    }\n\n    // Extract tokens, if none available default to empty array to\n    // ensure consistancy in expected results\n    const tokens = msg && msg.match && msg.match(formatRegExp);\n\n    // This condition will take care of inputs with info[SPLAT]\n    // but no tokens present\n    if (!tokens && (splat || splat.length)) {\n      const metas = splat.length > 1\n        ? splat.splice(0)\n        : splat;\n\n      // Now that { splat } has been separated from any potential { meta }. we\n      // can assign this to the `info` object and write it to our format stream.\n      // If the additional metas are **NOT** objects or **LACK** enumerable properties\n      // you are going to have a bad time.\n      const metalen = metas.length;\n      if (metalen) {\n        for (let i = 0; i < metalen; i++) {\n          Object.assign(info, metas[i]);\n        }\n      }\n\n      return info;\n    }\n\n    if (tokens) {\n      return this._splat(info, tokens);\n    }\n\n    return info;\n  }\n}\n\n/*\n * function splat (info)\n * Returns a new instance of the splat format TransformStream\n * which performs string interpolation from `info` objects. This was\n * previously exposed implicitly in `winston < 3.0.0`.\n */\nmodule.exports = opts => new Splatter(opts);\n","const token = /d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\nconst twoDigitsOptional = \"\\\\d\\\\d?\";\nconst twoDigits = \"\\\\d\\\\d\";\nconst threeDigits = \"\\\\d{3}\";\nconst fourDigits = \"\\\\d{4}\";\nconst word = \"[^\\\\s]+\";\nconst literal = /\\[([^]*?)\\]/gm;\n\ntype DateInfo = {\n  year: number;\n  month: number;\n  day: number;\n  hour: number;\n  minute: number;\n  second: number;\n  millisecond: number;\n  isPm: number | null;\n  timezoneOffset: number | null;\n};\n\nexport type I18nSettings = {\n  amPm: [string, string];\n  dayNames: Days;\n  dayNamesShort: Days;\n  monthNames: Months;\n  monthNamesShort: Months;\n  DoFn(dayOfMonth: number): string;\n};\n\nexport type I18nSettingsOptional = Partial<I18nSettings>;\n\nexport type Days = [string, string, string, string, string, string, string];\nexport type Months = [\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string\n];\n\nfunction shorten<T extends string[]>(arr: T, sLen: number): string[] {\n  const newArr: string[] = [];\n  for (let i = 0, len = arr.length; i < len; i++) {\n    newArr.push(arr[i].substr(0, sLen));\n  }\n  return newArr;\n}\n\nconst monthUpdate = (\n  arrName: \"monthNames\" | \"monthNamesShort\" | \"dayNames\" | \"dayNamesShort\"\n) => (v: string, i18n: I18nSettings): number | null => {\n  const lowerCaseArr = i18n[arrName].map(v => v.toLowerCase());\n  const index = lowerCaseArr.indexOf(v.toLowerCase());\n  if (index > -1) {\n    return index;\n  }\n  return null;\n};\n\nexport function assign<A>(a: A): A;\nexport function assign<A, B>(a: A, b: B): A & B;\nexport function assign<A, B, C>(a: A, b: B, c: C): A & B & C;\nexport function assign<A, B, C, D>(a: A, b: B, c: C, d: D): A & B & C & D;\nexport function assign(origObj: any, ...args: any[]): any {\n  for (const obj of args) {\n    for (const key in obj) {\n      // @ts-ignore ex\n      origObj[key] = obj[key];\n    }\n  }\n  return origObj;\n}\n\nconst dayNames: Days = [\n  \"Sunday\",\n  \"Monday\",\n  \"Tuesday\",\n  \"Wednesday\",\n  \"Thursday\",\n  \"Friday\",\n  \"Saturday\"\n];\nconst monthNames: Months = [\n  \"January\",\n  \"February\",\n  \"March\",\n  \"April\",\n  \"May\",\n  \"June\",\n  \"July\",\n  \"August\",\n  \"September\",\n  \"October\",\n  \"November\",\n  \"December\"\n];\n\nconst monthNamesShort: Months = shorten(monthNames, 3) as Months;\nconst dayNamesShort: Days = shorten(dayNames, 3) as Days;\n\nconst defaultI18n: I18nSettings = {\n  dayNamesShort,\n  dayNames,\n  monthNamesShort,\n  monthNames,\n  amPm: [\"am\", \"pm\"],\n  DoFn(dayOfMonth: number) {\n    return (\n      dayOfMonth +\n      [\"th\", \"st\", \"nd\", \"rd\"][\n        dayOfMonth % 10 > 3\n          ? 0\n          : ((dayOfMonth - (dayOfMonth % 10) !== 10 ? 1 : 0) * dayOfMonth) % 10\n      ]\n    );\n  }\n};\nlet globalI18n = assign({}, defaultI18n);\nconst setGlobalDateI18n = (i18n: I18nSettingsOptional): I18nSettings =>\n  (globalI18n = assign(globalI18n, i18n));\n\nconst regexEscape = (str: string): string =>\n  str.replace(/[|\\\\{()[^$+*?.-]/g, \"\\\\$&\");\n\nconst pad = (val: string | number, len = 2): string => {\n  val = String(val);\n  while (val.length < len) {\n    val = \"0\" + val;\n  }\n  return val;\n};\n\nconst formatFlags: Record<\n  string,\n  (dateObj: Date, i18n: I18nSettings) => string\n> = {\n  D: (dateObj: Date): string => String(dateObj.getDate()),\n  DD: (dateObj: Date): string => pad(dateObj.getDate()),\n  Do: (dateObj: Date, i18n: I18nSettings): string =>\n    i18n.DoFn(dateObj.getDate()),\n  d: (dateObj: Date): string => String(dateObj.getDay()),\n  dd: (dateObj: Date): string => pad(dateObj.getDay()),\n  ddd: (dateObj: Date, i18n: I18nSettings): string =>\n    i18n.dayNamesShort[dateObj.getDay()],\n  dddd: (dateObj: Date, i18n: I18nSettings): string =>\n    i18n.dayNames[dateObj.getDay()],\n  M: (dateObj: Date): string => String(dateObj.getMonth() + 1),\n  MM: (dateObj: Date): string => pad(dateObj.getMonth() + 1),\n  MMM: (dateObj: Date, i18n: I18nSettings): string =>\n    i18n.monthNamesShort[dateObj.getMonth()],\n  MMMM: (dateObj: Date, i18n: I18nSettings): string =>\n    i18n.monthNames[dateObj.getMonth()],\n  YY: (dateObj: Date): string =>\n    pad(String(dateObj.getFullYear()), 4).substr(2),\n  YYYY: (dateObj: Date): string => pad(dateObj.getFullYear(), 4),\n  h: (dateObj: Date): string => String(dateObj.getHours() % 12 || 12),\n  hh: (dateObj: Date): string => pad(dateObj.getHours() % 12 || 12),\n  H: (dateObj: Date): string => String(dateObj.getHours()),\n  HH: (dateObj: Date): string => pad(dateObj.getHours()),\n  m: (dateObj: Date): string => String(dateObj.getMinutes()),\n  mm: (dateObj: Date): string => pad(dateObj.getMinutes()),\n  s: (dateObj: Date): string => String(dateObj.getSeconds()),\n  ss: (dateObj: Date): string => pad(dateObj.getSeconds()),\n  S: (dateObj: Date): string =>\n    String(Math.round(dateObj.getMilliseconds() / 100)),\n  SS: (dateObj: Date): string =>\n    pad(Math.round(dateObj.getMilliseconds() / 10), 2),\n  SSS: (dateObj: Date): string => pad(dateObj.getMilliseconds(), 3),\n  a: (dateObj: Date, i18n: I18nSettings): string =>\n    dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1],\n  A: (dateObj: Date, i18n: I18nSettings): string =>\n    dateObj.getHours() < 12\n      ? i18n.amPm[0].toUpperCase()\n      : i18n.amPm[1].toUpperCase(),\n  ZZ(dateObj: Date): string {\n    const offset = dateObj.getTimezoneOffset();\n    return (\n      (offset > 0 ? \"-\" : \"+\") +\n      pad(Math.floor(Math.abs(offset) / 60) * 100 + (Math.abs(offset) % 60), 4)\n    );\n  },\n  Z(dateObj: Date): string {\n    const offset = dateObj.getTimezoneOffset();\n    return (\n      (offset > 0 ? \"-\" : \"+\") +\n      pad(Math.floor(Math.abs(offset) / 60), 2) +\n      \":\" +\n      pad(Math.abs(offset) % 60, 2)\n    );\n  }\n};\n\ntype ParseInfo = [\n  keyof DateInfo,\n  string,\n  ((v: string, i18n: I18nSettings) => number | null)?,\n  string?\n];\nconst monthParse = (v: string): number => +v - 1;\nconst emptyDigits: ParseInfo = [null, twoDigitsOptional];\nconst emptyWord: ParseInfo = [null, word];\nconst amPm: ParseInfo = [\n  \"isPm\",\n  word,\n  (v: string, i18n: I18nSettings): number | null => {\n    const val = v.toLowerCase();\n    if (val === i18n.amPm[0]) {\n      return 0;\n    } else if (val === i18n.amPm[1]) {\n      return 1;\n    }\n    return null;\n  }\n];\nconst timezoneOffset: ParseInfo = [\n  \"timezoneOffset\",\n  \"[^\\\\s]*?[\\\\+\\\\-]\\\\d\\\\d:?\\\\d\\\\d|[^\\\\s]*?Z?\",\n  (v: string): number | null => {\n    const parts = (v + \"\").match(/([+-]|\\d\\d)/gi);\n\n    if (parts) {\n      const minutes = +parts[1] * 60 + parseInt(parts[2], 10);\n      return parts[0] === \"+\" ? minutes : -minutes;\n    }\n\n    return 0;\n  }\n];\nconst parseFlags: Record<string, ParseInfo> = {\n  D: [\"day\", twoDigitsOptional],\n  DD: [\"day\", twoDigits],\n  Do: [\"day\", twoDigitsOptional + word, (v: string): number => parseInt(v, 10)],\n  M: [\"month\", twoDigitsOptional, monthParse],\n  MM: [\"month\", twoDigits, monthParse],\n  YY: [\n    \"year\",\n    twoDigits,\n    (v: string): number => {\n      const now = new Date();\n      const cent = +(\"\" + now.getFullYear()).substr(0, 2);\n      return +(\"\" + (+v > 68 ? cent - 1 : cent) + v);\n    }\n  ],\n  h: [\"hour\", twoDigitsOptional, undefined, \"isPm\"],\n  hh: [\"hour\", twoDigits, undefined, \"isPm\"],\n  H: [\"hour\", twoDigitsOptional],\n  HH: [\"hour\", twoDigits],\n  m: [\"minute\", twoDigitsOptional],\n  mm: [\"minute\", twoDigits],\n  s: [\"second\", twoDigitsOptional],\n  ss: [\"second\", twoDigits],\n  YYYY: [\"year\", fourDigits],\n  S: [\"millisecond\", \"\\\\d\", (v: string): number => +v * 100],\n  SS: [\"millisecond\", twoDigits, (v: string): number => +v * 10],\n  SSS: [\"millisecond\", threeDigits],\n  d: emptyDigits,\n  dd: emptyDigits,\n  ddd: emptyWord,\n  dddd: emptyWord,\n  MMM: [\"month\", word, monthUpdate(\"monthNamesShort\")],\n  MMMM: [\"month\", word, monthUpdate(\"monthNames\")],\n  a: amPm,\n  A: amPm,\n  ZZ: timezoneOffset,\n  Z: timezoneOffset\n};\n\n// Some common format strings\nconst globalMasks: { [key: string]: string } = {\n  default: \"ddd MMM DD YYYY HH:mm:ss\",\n  shortDate: \"M/D/YY\",\n  mediumDate: \"MMM D, YYYY\",\n  longDate: \"MMMM D, YYYY\",\n  fullDate: \"dddd, MMMM D, YYYY\",\n  isoDate: \"YYYY-MM-DD\",\n  isoDateTime: \"YYYY-MM-DDTHH:mm:ssZ\",\n  shortTime: \"HH:mm\",\n  mediumTime: \"HH:mm:ss\",\n  longTime: \"HH:mm:ss.SSS\"\n};\nconst setGlobalDateMasks = (masks: {\n  [key: string]: string;\n}): { [key: string]: string } => assign(globalMasks, masks);\n\n/***\n * Format a date\n * @method format\n * @param {Date|number} dateObj\n * @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'\n * @returns {string} Formatted date string\n */\nconst format = (\n  dateObj: Date,\n  mask: string = globalMasks[\"default\"],\n  i18n: I18nSettingsOptional = {}\n): string => {\n  if (typeof dateObj === \"number\") {\n    dateObj = new Date(dateObj);\n  }\n\n  if (\n    Object.prototype.toString.call(dateObj) !== \"[object Date]\" ||\n    isNaN(dateObj.getTime())\n  ) {\n    throw new Error(\"Invalid Date pass to format\");\n  }\n\n  mask = globalMasks[mask] || mask;\n\n  const literals: string[] = [];\n\n  // Make literals inactive by replacing them with @@@\n  mask = mask.replace(literal, function($0, $1) {\n    literals.push($1);\n    return \"@@@\";\n  });\n\n  const combinedI18nSettings: I18nSettings = assign(\n    assign({}, globalI18n),\n    i18n\n  );\n  // Apply formatting rules\n  mask = mask.replace(token, $0 =>\n    formatFlags[$0](dateObj, combinedI18nSettings)\n  );\n  // Inline literal values back into the formatted value\n  return mask.replace(/@@@/g, () => literals.shift());\n};\n\n/**\n * Parse a date string into a Javascript Date object /\n * @method parse\n * @param {string} dateStr Date string\n * @param {string} format Date parse format\n * @param {i18n} I18nSettingsOptional Full or subset of I18N settings\n * @returns {Date|null} Returns Date object. Returns null what date string is invalid or doesn't match format\n */\nfunction parse(\n  dateStr: string,\n  format: string,\n  i18n: I18nSettingsOptional = {}\n): Date | null {\n  if (typeof format !== \"string\") {\n    throw new Error(\"Invalid format in fecha parse\");\n  }\n\n  // Check to see if the format is actually a mask\n  format = globalMasks[format] || format;\n\n  // Avoid regular expression denial of service, fail early for really long strings\n  // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS\n  if (dateStr.length > 1000) {\n    return null;\n  }\n\n  // Default to the beginning of the year.\n  const today = new Date();\n  const dateInfo: DateInfo = {\n    year: today.getFullYear(),\n    month: 0,\n    day: 1,\n    hour: 0,\n    minute: 0,\n    second: 0,\n    millisecond: 0,\n    isPm: null,\n    timezoneOffset: null\n  };\n  const parseInfo: ParseInfo[] = [];\n  const literals: string[] = [];\n\n  // Replace all the literals with @@@. Hopefully a string that won't exist in the format\n  let newFormat = format.replace(literal, ($0, $1) => {\n    literals.push(regexEscape($1));\n    return \"@@@\";\n  });\n  const specifiedFields: { [field: string]: boolean } = {};\n  const requiredFields: { [field: string]: boolean } = {};\n\n  // Change every token that we find into the correct regex\n  newFormat = regexEscape(newFormat).replace(token, $0 => {\n    const info = parseFlags[$0];\n    const [field, regex, , requiredField] = info;\n\n    // Check if the person has specified the same field twice. This will lead to confusing results.\n    if (specifiedFields[field]) {\n      throw new Error(`Invalid format. ${field} specified twice in format`);\n    }\n\n    specifiedFields[field] = true;\n\n    // Check if there are any required fields. For instance, 12 hour time requires AM/PM specified\n    if (requiredField) {\n      requiredFields[requiredField] = true;\n    }\n\n    parseInfo.push(info);\n    return \"(\" + regex + \")\";\n  });\n\n  // Check all the required fields are present\n  Object.keys(requiredFields).forEach(field => {\n    if (!specifiedFields[field]) {\n      throw new Error(\n        `Invalid format. ${field} is required in specified format`\n      );\n    }\n  });\n\n  // Add back all the literals after\n  newFormat = newFormat.replace(/@@@/g, () => literals.shift());\n\n  // Check if the date string matches the format. If it doesn't return null\n  const matches = dateStr.match(new RegExp(newFormat, \"i\"));\n  if (!matches) {\n    return null;\n  }\n\n  const combinedI18nSettings: I18nSettings = assign(\n    assign({}, globalI18n),\n    i18n\n  );\n\n  // For each match, call the parser function for that date part\n  for (let i = 1; i < matches.length; i++) {\n    const [field, , parser] = parseInfo[i - 1];\n    const value = parser\n      ? parser(matches[i], combinedI18nSettings)\n      : +matches[i];\n\n    // If the parser can't make sense of the value, return null\n    if (value == null) {\n      return null;\n    }\n\n    dateInfo[field] = value;\n  }\n\n  if (dateInfo.isPm === 1 && dateInfo.hour != null && +dateInfo.hour !== 12) {\n    dateInfo.hour = +dateInfo.hour + 12;\n  } else if (dateInfo.isPm === 0 && +dateInfo.hour === 12) {\n    dateInfo.hour = 0;\n  }\n\n  let dateTZ: Date;\n  if (dateInfo.timezoneOffset == null) {\n    dateTZ = new Date(\n      dateInfo.year,\n      dateInfo.month,\n      dateInfo.day,\n      dateInfo.hour,\n      dateInfo.minute,\n      dateInfo.second,\n      dateInfo.millisecond\n    );\n    const validateFields: [\n      \"month\" | \"day\" | \"hour\" | \"minute\" | \"second\",\n      \"getMonth\" | \"getDate\" | \"getHours\" | \"getMinutes\" | \"getSeconds\"\n    ][] = [\n      [\"month\", \"getMonth\"],\n      [\"day\", \"getDate\"],\n      [\"hour\", \"getHours\"],\n      [\"minute\", \"getMinutes\"],\n      [\"second\", \"getSeconds\"]\n    ];\n    for (let i = 0, len = validateFields.length; i < len; i++) {\n      // Check to make sure the date field is within the allowed range. Javascript dates allows values\n      // outside the allowed range. If the values don't match the value was invalid\n      if (\n        specifiedFields[validateFields[i][0]] &&\n        dateInfo[validateFields[i][0]] !== dateTZ[validateFields[i][1]]()\n      ) {\n        return null;\n      }\n    }\n  } else {\n    dateTZ = new Date(\n      Date.UTC(\n        dateInfo.year,\n        dateInfo.month,\n        dateInfo.day,\n        dateInfo.hour,\n        dateInfo.minute - dateInfo.timezoneOffset,\n        dateInfo.second,\n        dateInfo.millisecond\n      )\n    );\n\n    // We can't validate dates in another timezone unfortunately. Do a basic check instead\n    if (\n      dateInfo.month > 11 ||\n      dateInfo.month < 0 ||\n      dateInfo.day > 31 ||\n      dateInfo.day < 1 ||\n      dateInfo.hour > 23 ||\n      dateInfo.hour < 0 ||\n      dateInfo.minute > 59 ||\n      dateInfo.minute < 0 ||\n      dateInfo.second > 59 ||\n      dateInfo.second < 0\n    ) {\n      return null;\n    }\n  }\n\n  // Don't allow invalid dates\n\n  return dateTZ;\n}\nexport default {\n  format,\n  parse,\n  defaultI18n,\n  setGlobalDateI18n,\n  setGlobalDateMasks\n};\nexport { format, parse, defaultI18n, setGlobalDateI18n, setGlobalDateMasks };\n","'use strict';\n\nconst fecha = require('fecha');\nconst format = require('./format');\n\n/*\n * function timestamp (info)\n * Returns a new instance of the timestamp Format which adds a timestamp\n * to the info. It was previously available in winston < 3.0.0 as:\n *\n * - { timestamp: true }             // `new Date.toISOString()`\n * - { timestamp: function:String }  // Value returned by `timestamp()`\n */\nmodule.exports = format((info, opts = {}) => {\n  if (opts.format) {\n    info.timestamp = typeof opts.format === 'function'\n      ? opts.format()\n      : fecha.format(new Date(), opts.format);\n  }\n\n  if (!info.timestamp) {\n    info.timestamp = new Date().toISOString();\n  }\n\n  if (opts.alias) {\n    info[opts.alias] = info.timestamp;\n  }\n\n  return info;\n});\n","'use strict';\n\nconst colors = require('@colors/colors/safe');\nconst format = require('./format');\nconst { MESSAGE } = require('triple-beam');\n\n/*\n * function uncolorize (info)\n * Returns a new instance of the uncolorize Format that strips colors\n * from `info` objects. This was previously exposed as { stripColors: true }\n * to transports in `winston < 3.0.0`.\n */\nmodule.exports = format((info, opts) => {\n  if (opts.level !== false) {\n    info.level = colors.strip(info.level);\n  }\n\n  if (opts.message !== false) {\n    info.message = colors.strip(String(info.message));\n  }\n\n  if (opts.raw !== false && info[MESSAGE]) {\n    info[MESSAGE] = colors.strip(String(info[MESSAGE]));\n  }\n\n  return info;\n});\n","'use strict';\n\n/*\n * @api public\n * @property {function} format\n * Both the construction method and set of exposed\n * formats.\n */\nconst format = exports.format = require('./format');\n\n/*\n * @api public\n * @method {function} levels\n * Registers the specified levels with logform.\n */\nexports.levels = require('./levels');\n\n/*\n * @api private\n * method {function} exposeFormat\n * Exposes a sub-format on the main format object\n * as a lazy-loaded getter.\n */\nfunction exposeFormat(name, requireFormat) {\n  Object.defineProperty(format, name, {\n    get() {\n      return requireFormat();\n    },\n    configurable: true\n  });\n}\n\n//\n// Setup all transports as lazy-loaded getters.\n//\nexposeFormat('align', function () { return require('./align'); });\nexposeFormat('errors', function () { return require('./errors'); });\nexposeFormat('cli', function () { return require('./cli'); });\nexposeFormat('combine', function () { return require('./combine'); });\nexposeFormat('colorize', function () { return require('./colorize'); });\nexposeFormat('json', function () { return require('./json'); });\nexposeFormat('label', function () { return require('./label'); });\nexposeFormat('logstash', function () { return require('./logstash'); });\nexposeFormat('metadata', function () { return require('./metadata'); });\nexposeFormat('ms', function () { return require('./ms'); });\nexposeFormat('padLevels', function () { return require('./pad-levels'); });\nexposeFormat('prettyPrint', function () { return require('./pretty-print'); });\nexposeFormat('printf', function () { return require('./printf'); });\nexposeFormat('simple', function () { return require('./simple'); });\nexposeFormat('splat', function () { return require('./splat'); });\nexposeFormat('timestamp', function () { return require('./timestamp'); });\nexposeFormat('uncolorize', function () { return require('./uncolorize'); });\n","/**\n * common.js: Internal helper and utility functions for winston.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst { format } = require('util');\n\n/**\n * Set of simple deprecation notices and a way to expose them for a set of\n * properties.\n * @type {Object}\n * @private\n */\nexports.warn = {\n  deprecated(prop) {\n    return () => {\n      throw new Error(format('{ %s } was removed in winston@3.0.0.', prop));\n    };\n  },\n  useFormat(prop) {\n    return () => {\n      throw new Error([\n        format('{ %s } was removed in winston@3.0.0.', prop),\n        'Use a custom winston.format = winston.format(function) instead.'\n      ].join('\\n'));\n    };\n  },\n  forFunctions(obj, type, props) {\n    props.forEach(prop => {\n      obj[prop] = exports.warn[type](prop);\n    });\n  },\n  forProperties(obj, type, props) {\n    props.forEach(prop => {\n      const notice = exports.warn[type](prop);\n      Object.defineProperty(obj, prop, {\n        get: notice,\n        set: notice\n      });\n    });\n  }\n};\n","{\n  \"name\": \"winston\",\n  \"description\": \"A logger for just about everything.\",\n  \"version\": \"3.17.0\",\n  \"author\": \"Charlie Robbins <charlie.robbins@gmail.com>\",\n  \"maintainers\": [\n    \"David Hyde <dabh@alumni.stanford.edu>\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/winstonjs/winston.git\"\n  },\n  \"keywords\": [\n    \"winston\",\n    \"logger\",\n    \"logging\",\n    \"logs\",\n    \"sysadmin\",\n    \"bunyan\",\n    \"pino\",\n    \"loglevel\",\n    \"tools\",\n    \"json\",\n    \"stream\"\n  ],\n  \"dependencies\": {\n    \"@dabh/diagnostics\": \"^2.0.2\",\n    \"@colors/colors\": \"^1.6.0\",\n    \"async\": \"^3.2.3\",\n    \"is-stream\": \"^2.0.0\",\n    \"logform\": \"^2.7.0\",\n    \"one-time\": \"^1.0.0\",\n    \"readable-stream\": \"^3.4.0\",\n    \"safe-stable-stringify\": \"^2.3.1\",\n    \"stack-trace\": \"0.0.x\",\n    \"triple-beam\": \"^1.3.0\",\n    \"winston-transport\": \"^4.9.0\"\n  },\n  \"devDependencies\": {\n    \"@babel/cli\": \"^7.23.9\",\n    \"@babel/core\": \"^7.24.0\",\n    \"@babel/preset-env\": \"^7.24.0\",\n    \"@dabh/eslint-config-populist\": \"^4.4.0\",\n    \"@types/node\": \"^20.11.24\",\n    \"abstract-winston-transport\": \"^0.5.1\",\n    \"assume\": \"^2.2.0\",\n    \"cross-spawn-async\": \"^2.2.5\",\n    \"eslint\": \"^8.57.0\",\n    \"hock\": \"^1.4.1\",\n    \"mocha\": \"^10.3.0\",\n    \"nyc\": \"^17.1.0\",\n    \"rimraf\": \"5.0.1\",\n    \"split2\": \"^4.1.0\",\n    \"std-mocks\": \"^2.0.0\",\n    \"through2\": \"^4.0.2\",\n    \"winston-compat\": \"^0.1.5\"\n  },\n  \"main\": \"./lib/winston.js\",\n  \"browser\": \"./dist/winston\",\n  \"types\": \"./index.d.ts\",\n  \"scripts\": {\n    \"lint\": \"eslint lib/*.js lib/winston/*.js lib/winston/**/*.js --resolve-plugins-relative-to ./node_modules/@dabh/eslint-config-populist\",\n    \"test\": \"rimraf test/fixtures/logs/* && mocha\",\n    \"test:coverage\": \"nyc npm run test:unit\",\n    \"test:unit\": \"mocha test/unit\",\n    \"test:integration\": \"mocha test/integration\",\n    \"build\": \"rimraf dist && babel lib -d dist\",\n    \"prepublishOnly\": \"npm run build\"\n  },\n  \"engines\": {\n    \"node\": \">= 12.0.0\"\n  },\n  \"license\": \"MIT\"\n}\n","\n/**\n * For Node.js, simply re-export the core `util.deprecate` function.\n */\n\nmodule.exports = require('util').deprecate;\n","module.exports = require('stream');\n","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nconst codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error\n  }\n\n  function getMessage (arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message\n    } else {\n      return message(arg1, arg2, arg3)\n    }\n  }\n\n  class NodeError extends Base {\n    constructor (arg1, arg2, arg3) {\n      super(getMessage(arg1, arg2, arg3));\n    }\n  }\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n\n  codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    const len = expected.length;\n    expected = expected.map((i) => String(i));\n    if (len > 2) {\n      return `one of ${thing} ${expected.slice(0, len - 1).join(', ')}, or ` +\n             expected[len - 1];\n    } else if (len === 2) {\n      return `one of ${thing} ${expected[0]} or ${expected[1]}`;\n    } else {\n      return `of ${thing} ${expected[0]}`;\n    }\n  } else {\n    return `of ${thing} ${String(expected)}`;\n  }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n\treturn str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n\tif (this_len === undefined || this_len > str.length) {\n\t\tthis_len = str.length;\n\t}\n\treturn str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"'\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  let determiner;\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  let msg;\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = `The ${name} ${determiner} ${oneOf(expected, 'type')}`;\n  } else {\n    const type = includes(name, '.') ? 'property' : 'argument';\n    msg = `The \"${name}\" ${type} ${determiner} ${oneOf(expected, 'type')}`;\n  }\n\n  msg += `. Received type ${typeof actual}`;\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented'\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\n\nmodule.exports.codes = codes;\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n","try {\n  var util = require('util');\n  /* istanbul ignore next */\n  if (typeof util.inherits !== 'function') throw '';\n  module.exports = util.inherits;\n} catch (e) {\n  /* istanbul ignore next */\n  module.exports = require('./inherits_browser.js');\n}\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\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'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE;\nfunction from(Readable, iterable, opts) {\n  var iterator;\n  if (iterable && typeof iterable.next === 'function') {\n    iterator = iterable;\n  } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable);\n  var readable = new Readable(_objectSpread({\n    objectMode: true\n  }, opts));\n  // Reading boolean to protect against _read\n  // being called before last iteration completion.\n  var reading = false;\n  readable._read = function () {\n    if (!reading) {\n      reading = true;\n      next();\n    }\n  };\n  function next() {\n    return _next2.apply(this, arguments);\n  }\n  function _next2() {\n    _next2 = _asyncToGenerator(function* () {\n      try {\n        var _yield$iterator$next = yield iterator.next(),\n          value = _yield$iterator$next.value,\n          done = _yield$iterator$next.done;\n        if (done) {\n          readable.push(null);\n        } else if (readable.push(yield value)) {\n          next();\n        } else {\n          reading = false;\n        }\n      } catch (err) {\n        readable.destroy(err);\n      }\n    });\n    return _next2.apply(this, arguments);\n  }\n  return readable;\n}\nmodule.exports = from;\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'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\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// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\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// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};","'use strict';\n\nconst util = require('util');\nconst Writable = require('readable-stream/lib/_stream_writable.js');\nconst { LEVEL } = require('triple-beam');\n\n/**\n * Constructor function for the TransportStream. This is the base prototype\n * that all `winston >= 3` transports should inherit from.\n * @param {Object} options - Options for this TransportStream instance\n * @param {String} options.level - Highest level according to RFC5424.\n * @param {Boolean} options.handleExceptions - If true, info with\n * { exception: true } will be written.\n * @param {Function} options.log - Custom log function for simple Transport\n * creation\n * @param {Function} options.close - Called on \"unpipe\" from parent.\n */\nconst TransportStream = module.exports = function TransportStream(options = {}) {\n  Writable.call(this, { objectMode: true, highWaterMark: options.highWaterMark });\n\n  this.format = options.format;\n  this.level = options.level;\n  this.handleExceptions = options.handleExceptions;\n  this.handleRejections = options.handleRejections;\n  this.silent = options.silent;\n\n  if (options.log) this.log = options.log;\n  if (options.logv) this.logv = options.logv;\n  if (options.close) this.close = options.close;\n\n  // Get the levels from the source we are piped from.\n  this.once('pipe', logger => {\n    // Remark (indexzero): this bookkeeping can only support multiple\n    // Logger parents with the same `levels`. This comes into play in\n    // the `winston.Container` code in which `container.add` takes\n    // a fully realized set of options with pre-constructed TransportStreams.\n    this.levels = logger.levels;\n    this.parent = logger;\n  });\n\n  // If and/or when the transport is removed from this instance\n  this.once('unpipe', src => {\n    // Remark (indexzero): this bookkeeping can only support multiple\n    // Logger parents with the same `levels`. This comes into play in\n    // the `winston.Container` code in which `container.add` takes\n    // a fully realized set of options with pre-constructed TransportStreams.\n    if (src === this.parent) {\n      this.parent = null;\n      if (this.close) {\n        this.close();\n      }\n    }\n  });\n};\n\n/*\n * Inherit from Writeable using Node.js built-ins\n */\nutil.inherits(TransportStream, Writable);\n\n/**\n * Writes the info object to our transport instance.\n * @param {mixed} info - TODO: add param description.\n * @param {mixed} enc - TODO: add param description.\n * @param {function} callback - TODO: add param description.\n * @returns {undefined}\n * @private\n */\nTransportStream.prototype._write = function _write(info, enc, callback) {\n  if (this.silent || (info.exception === true && !this.handleExceptions)) {\n    return callback(null);\n  }\n\n  // Remark: This has to be handled in the base transport now because we\n  // cannot conditionally write to our pipe targets as stream. We always\n  // prefer any explicit level set on the Transport itself falling back to\n  // any level set on the parent.\n  const level = this.level || (this.parent && this.parent.level);\n\n  if (!level || this.levels[level] >= this.levels[info[LEVEL]]) {\n    if (info && !this.format) {\n      return this.log(info, callback);\n    }\n\n    let errState;\n    let transformed;\n\n    // We trap(and re-throw) any errors generated by the user-provided format, but also\n    // guarantee that the streams callback is invoked so that we can continue flowing.\n    try {\n      transformed = this.format.transform(Object.assign({}, info), this.format.options);\n    } catch (err) {\n      errState = err;\n    }\n\n    if (errState || !transformed) {\n      // eslint-disable-next-line callback-return\n      callback();\n      if (errState) throw errState;\n      return;\n    }\n\n    return this.log(transformed, callback);\n  }\n  this._writableState.sync = false;\n  return callback(null);\n};\n\n/**\n * Writes the batch of info objects (i.e. \"object chunks\") to our transport\n * instance after performing any necessary filtering.\n * @param {mixed} chunks - TODO: add params description.\n * @param {function} callback - TODO: add params description.\n * @returns {mixed} - TODO: add returns description.\n * @private\n */\nTransportStream.prototype._writev = function _writev(chunks, callback) {\n  if (this.logv) {\n    const infos = chunks.filter(this._accept, this);\n    if (!infos.length) {\n      return callback(null);\n    }\n\n    // Remark (indexzero): from a performance perspective if Transport\n    // implementers do choose to implement logv should we make it their\n    // responsibility to invoke their format?\n    return this.logv(infos, callback);\n  }\n\n  for (let i = 0; i < chunks.length; i++) {\n    if (!this._accept(chunks[i])) continue;\n\n    if (chunks[i].chunk && !this.format) {\n      this.log(chunks[i].chunk, chunks[i].callback);\n      continue;\n    }\n\n    let errState;\n    let transformed;\n\n    // We trap(and re-throw) any errors generated by the user-provided format, but also\n    // guarantee that the streams callback is invoked so that we can continue flowing.\n    try {\n      transformed = this.format.transform(\n        Object.assign({}, chunks[i].chunk),\n        this.format.options\n      );\n    } catch (err) {\n      errState = err;\n    }\n\n    if (errState || !transformed) {\n      // eslint-disable-next-line callback-return\n      chunks[i].callback();\n      if (errState) {\n        // eslint-disable-next-line callback-return\n        callback(null);\n        throw errState;\n      }\n    } else {\n      this.log(transformed, chunks[i].callback);\n    }\n  }\n\n  return callback(null);\n};\n\n/**\n * Predicate function that returns true if the specfied `info` on the\n * WriteReq, `write`, should be passed down into the derived\n * TransportStream's I/O via `.log(info, callback)`.\n * @param {WriteReq} write - winston@3 Node.js WriteReq for the `info` object\n * representing the log message.\n * @returns {Boolean} - Value indicating if the `write` should be accepted &\n * logged.\n */\nTransportStream.prototype._accept = function _accept(write) {\n  const info = write.chunk;\n  if (this.silent) {\n    return false;\n  }\n\n  // We always prefer any explicit level set on the Transport itself\n  // falling back to any level set on the parent.\n  const level = this.level || (this.parent && this.parent.level);\n\n  // Immediately check the average case: log level filtering.\n  if (\n    info.exception === true ||\n    !level ||\n    this.levels[level] >= this.levels[info[LEVEL]]\n  ) {\n    // Ensure the info object is valid based on `{ exception }`:\n    // 1. { handleExceptions: true }: all `info` objects are valid\n    // 2. { exception: false }: accepted by all transports.\n    if (this.handleExceptions || info.exception !== true) {\n      return true;\n    }\n  }\n\n  return false;\n};\n\n/**\n * _nop is short for \"No operation\"\n * @returns {Boolean} Intentionally false.\n */\nTransportStream.prototype._nop = function _nop() {\n  // eslint-disable-next-line no-undefined\n  return void undefined;\n};\n","'use strict';\n\nconst util = require('util');\nconst { LEVEL } = require('triple-beam');\nconst TransportStream = require('./modern');\n\n/**\n * Constructor function for the LegacyTransportStream. This is an internal\n * wrapper `winston >= 3` uses to wrap older transports implementing\n * log(level, message, meta).\n * @param {Object} options - Options for this TransportStream instance.\n * @param {Transpot} options.transport - winston@2 or older Transport to wrap.\n */\n\nconst LegacyTransportStream = module.exports = function LegacyTransportStream(options = {}) {\n  TransportStream.call(this, options);\n  if (!options.transport || typeof options.transport.log !== 'function') {\n    throw new Error('Invalid transport, must be an object with a log method.');\n  }\n\n  this.transport = options.transport;\n  this.level = this.level || options.transport.level;\n  this.handleExceptions = this.handleExceptions || options.transport.handleExceptions;\n\n  // Display our deprecation notice.\n  this._deprecated();\n\n  // Properly bubble up errors from the transport to the\n  // LegacyTransportStream instance, but only once no matter how many times\n  // this transport is shared.\n  function transportError(err) {\n    this.emit('error', err, this.transport);\n  }\n\n  if (!this.transport.__winstonError) {\n    this.transport.__winstonError = transportError.bind(this);\n    this.transport.on('error', this.transport.__winstonError);\n  }\n};\n\n/*\n * Inherit from TransportStream using Node.js built-ins\n */\nutil.inherits(LegacyTransportStream, TransportStream);\n\n/**\n * Writes the info object to our transport instance.\n * @param {mixed} info - TODO: add param description.\n * @param {mixed} enc - TODO: add param description.\n * @param {function} callback - TODO: add param description.\n * @returns {undefined}\n * @private\n */\nLegacyTransportStream.prototype._write = function _write(info, enc, callback) {\n  if (this.silent || (info.exception === true && !this.handleExceptions)) {\n    return callback(null);\n  }\n\n  // Remark: This has to be handled in the base transport now because we\n  // cannot conditionally write to our pipe targets as stream.\n  if (!this.level || this.levels[this.level] >= this.levels[info[LEVEL]]) {\n    this.transport.log(info[LEVEL], info.message, info, this._nop);\n  }\n\n  callback(null);\n};\n\n/**\n * Writes the batch of info objects (i.e. \"object chunks\") to our transport\n * instance after performing any necessary filtering.\n * @param {mixed} chunks - TODO: add params description.\n * @param {function} callback - TODO: add params description.\n * @returns {mixed} - TODO: add returns description.\n * @private\n */\nLegacyTransportStream.prototype._writev = function _writev(chunks, callback) {\n  for (let i = 0; i < chunks.length; i++) {\n    if (this._accept(chunks[i])) {\n      this.transport.log(\n        chunks[i].chunk[LEVEL],\n        chunks[i].chunk.message,\n        chunks[i].chunk,\n        this._nop\n      );\n      chunks[i].callback();\n    }\n  }\n\n  return callback(null);\n};\n\n/**\n * Displays a deprecation notice. Defined as a function so it can be\n * overriden in tests.\n * @returns {undefined}\n */\nLegacyTransportStream.prototype._deprecated = function _deprecated() {\n  // eslint-disable-next-line no-console\n  console.error([\n    `${this.transport.name} is a legacy winston transport. Consider upgrading: `,\n    '- Upgrade docs: https://github.com/winstonjs/winston/blob/master/UPGRADE-3.0.md'\n  ].join('\\n'));\n};\n\n/**\n * Clean up error handling state on the legacy transport associated\n * with this instance.\n * @returns {undefined}\n */\nLegacyTransportStream.prototype.close = function close() {\n  if (this.transport.close) {\n    this.transport.close();\n  }\n\n  if (this.transport.__winstonError) {\n    this.transport.removeListener('error', this.transport.__winstonError);\n    this.transport.__winstonError = null;\n  }\n};\n","'use strict';\n\n// Expose modern transport directly as the export\nmodule.exports = require('./modern');\n\n// Expose legacy stream\nmodule.exports.LegacyTransportStream = require('./legacy');\n","/* eslint-disable no-console */\n/*\n * console.js: Transport for outputting to the console.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst os = require('os');\nconst { LEVEL, MESSAGE } = require('triple-beam');\nconst TransportStream = require('winston-transport');\n\n/**\n * Transport for outputting to the console.\n * @type {Console}\n * @extends {TransportStream}\n */\nmodule.exports = class Console extends TransportStream {\n  /**\n   * Constructor function for the Console transport object responsible for\n   * persisting log messages and metadata to a terminal or TTY.\n   * @param {!Object} [options={}] - Options for this instance.\n   */\n  constructor(options = {}) {\n    super(options);\n\n    // Expose the name of this Transport on the prototype\n    this.name = options.name || 'console';\n    this.stderrLevels = this._stringArrayToSet(options.stderrLevels);\n    this.consoleWarnLevels = this._stringArrayToSet(options.consoleWarnLevels);\n    this.eol = typeof options.eol === 'string' ? options.eol : os.EOL;\n    this.forceConsole = options.forceConsole || false;\n\n    // Keep a reference to the log, warn, and error console methods\n    // in case they get redirected to this transport after the logger is\n    // instantiated. This prevents a circular reference issue.\n    this._consoleLog = console.log.bind(console);\n    this._consoleWarn = console.warn.bind(console);\n    this._consoleError = console.error.bind(console);\n\n    this.setMaxListeners(30);\n  }\n\n  /**\n   * Core logging method exposed to Winston.\n   * @param {Object} info - TODO: add param description.\n   * @param {Function} callback - TODO: add param description.\n   * @returns {undefined}\n   */\n  log(info, callback) {\n    setImmediate(() => this.emit('logged', info));\n\n    // Remark: what if there is no raw...?\n    if (this.stderrLevels[info[LEVEL]]) {\n      if (console._stderr && !this.forceConsole) {\n        // Node.js maps `process.stderr` to `console._stderr`.\n        console._stderr.write(`${info[MESSAGE]}${this.eol}`);\n      } else {\n        // console.error adds a newline\n        this._consoleError(info[MESSAGE]);\n      }\n\n      if (callback) {\n        callback(); // eslint-disable-line callback-return\n      }\n      return;\n    } else if (this.consoleWarnLevels[info[LEVEL]]) {\n      if (console._stderr && !this.forceConsole) {\n        // Node.js maps `process.stderr` to `console._stderr`.\n        // in Node.js console.warn is an alias for console.error\n        console._stderr.write(`${info[MESSAGE]}${this.eol}`);\n      } else {\n        // console.warn adds a newline\n        this._consoleWarn(info[MESSAGE]);\n      }\n\n      if (callback) {\n        callback(); // eslint-disable-line callback-return\n      }\n      return;\n    }\n\n    if (console._stdout && !this.forceConsole) {\n      // Node.js maps `process.stdout` to `console._stdout`.\n      console._stdout.write(`${info[MESSAGE]}${this.eol}`);\n    } else {\n      // console.log adds a newline.\n      this._consoleLog(info[MESSAGE]);\n    }\n\n    if (callback) {\n      callback(); // eslint-disable-line callback-return\n    }\n  }\n\n  /**\n   * Returns a Set-like object with strArray's elements as keys (each with the\n   * value true).\n   * @param {Array} strArray - Array of Set-elements as strings.\n   * @param {?string} [errMsg] - Custom error message thrown on invalid input.\n   * @returns {Object} - TODO: add return description.\n   * @private\n   */\n  _stringArrayToSet(strArray, errMsg) {\n    if (!strArray) return {};\n\n    errMsg =\n      errMsg || 'Cannot make set from type other than Array of string elements';\n\n    if (!Array.isArray(strArray)) {\n      throw new Error(errMsg);\n    }\n\n    return strArray.reduce((set, el) => {\n      if (typeof el !== 'string') {\n        throw new Error(errMsg);\n      }\n      set[el] = true;\n\n      return set;\n    }, {});\n  }\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = isArrayLike;\nfunction isArrayLike(value) {\n    return value && typeof value.length === 'number' && value.length >= 0 && value.length % 1 === 0;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nexports.default = function (fn) {\n    return function (...args /*, callback*/) {\n        var callback = args.pop();\n        return fn.call(this, args, callback);\n    };\n};\n\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.fallback = fallback;\nexports.wrap = wrap;\n/* istanbul ignore file */\n\nvar hasQueueMicrotask = exports.hasQueueMicrotask = typeof queueMicrotask === 'function' && queueMicrotask;\nvar hasSetImmediate = exports.hasSetImmediate = typeof setImmediate === 'function' && setImmediate;\nvar hasNextTick = exports.hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';\n\nfunction fallback(fn) {\n    setTimeout(fn, 0);\n}\n\nfunction wrap(defer) {\n    return (fn, ...args) => defer(() => fn(...args));\n}\n\nvar _defer;\n\nif (hasQueueMicrotask) {\n    _defer = queueMicrotask;\n} else if (hasSetImmediate) {\n    _defer = setImmediate;\n} else if (hasNextTick) {\n    _defer = process.nextTick;\n} else {\n    _defer = fallback;\n}\n\nexports.default = wrap(_defer);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = asyncify;\n\nvar _initialParams = require('./internal/initialParams.js');\n\nvar _initialParams2 = _interopRequireDefault(_initialParams);\n\nvar _setImmediate = require('./internal/setImmediate.js');\n\nvar _setImmediate2 = _interopRequireDefault(_setImmediate);\n\nvar _wrapAsync = require('./internal/wrapAsync.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Take a sync function and make it async, passing its return value to a\n * callback. This is useful for plugging sync functions into a waterfall,\n * series, or other async functions. Any arguments passed to the generated\n * function will be passed to the wrapped function (except for the final\n * callback argument). Errors thrown will be passed to the callback.\n *\n * If the function passed to `asyncify` returns a Promise, that promises's\n * resolved/rejected state will be used to call the callback, rather than simply\n * the synchronous return value.\n *\n * This also means you can asyncify ES2017 `async` functions.\n *\n * @name asyncify\n * @static\n * @memberOf module:Utils\n * @method\n * @alias wrapSync\n * @category Util\n * @param {Function} func - The synchronous function, or Promise-returning\n * function to convert to an {@link AsyncFunction}.\n * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be\n * invoked with `(args..., callback)`.\n * @example\n *\n * // passing a regular synchronous function\n * async.waterfall([\n *     async.apply(fs.readFile, filename, \"utf8\"),\n *     async.asyncify(JSON.parse),\n *     function (data, next) {\n *         // data is the result of parsing the text.\n *         // If there was a parsing error, it would have been caught.\n *     }\n * ], callback);\n *\n * // passing a function returning a promise\n * async.waterfall([\n *     async.apply(fs.readFile, filename, \"utf8\"),\n *     async.asyncify(function (contents) {\n *         return db.model.create(contents);\n *     }),\n *     function (model, next) {\n *         // `model` is the instantiated model object.\n *         // If there was an error, this function would be skipped.\n *     }\n * ], callback);\n *\n * // es2017 example, though `asyncify` is not needed if your JS environment\n * // supports async functions out of the box\n * var q = async.queue(async.asyncify(async function(file) {\n *     var intermediateStep = await processFile(file);\n *     return await somePromise(intermediateStep)\n * }));\n *\n * q.push(files);\n */\nfunction asyncify(func) {\n    if ((0, _wrapAsync.isAsync)(func)) {\n        return function (...args /*, callback*/) {\n            const callback = args.pop();\n            const promise = func.apply(this, args);\n            return handlePromise(promise, callback);\n        };\n    }\n\n    return (0, _initialParams2.default)(function (args, callback) {\n        var result;\n        try {\n            result = func.apply(this, args);\n        } catch (e) {\n            return callback(e);\n        }\n        // if result is Promise object\n        if (result && typeof result.then === 'function') {\n            return handlePromise(result, callback);\n        } else {\n            callback(null, result);\n        }\n    });\n}\n\nfunction handlePromise(promise, callback) {\n    return promise.then(value => {\n        invokeCallback(callback, null, value);\n    }, err => {\n        invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err));\n    });\n}\n\nfunction invokeCallback(callback, error, value) {\n    try {\n        callback(error, value);\n    } catch (err) {\n        (0, _setImmediate2.default)(e => {\n            throw e;\n        }, err);\n    }\n}\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.isAsyncIterable = exports.isAsyncGenerator = exports.isAsync = undefined;\n\nvar _asyncify = require('../asyncify.js');\n\nvar _asyncify2 = _interopRequireDefault(_asyncify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isAsync(fn) {\n    return fn[Symbol.toStringTag] === 'AsyncFunction';\n}\n\nfunction isAsyncGenerator(fn) {\n    return fn[Symbol.toStringTag] === 'AsyncGenerator';\n}\n\nfunction isAsyncIterable(obj) {\n    return typeof obj[Symbol.asyncIterator] === 'function';\n}\n\nfunction wrapAsync(asyncFn) {\n    if (typeof asyncFn !== 'function') throw new Error('expected a function');\n    return isAsync(asyncFn) ? (0, _asyncify2.default)(asyncFn) : asyncFn;\n}\n\nexports.default = wrapAsync;\nexports.isAsync = isAsync;\nexports.isAsyncGenerator = isAsyncGenerator;\nexports.isAsyncIterable = isAsyncIterable;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = awaitify;\n// conditionally promisify a function.\n// only return a promise if a callback is omitted\nfunction awaitify(asyncFn, arity) {\n    if (!arity) arity = asyncFn.length;\n    if (!arity) throw new Error('arity is undefined');\n    function awaitable(...args) {\n        if (typeof args[arity - 1] === 'function') {\n            return asyncFn.apply(this, args);\n        }\n\n        return new Promise((resolve, reject) => {\n            args[arity - 1] = (err, ...cbArgs) => {\n                if (err) return reject(err);\n                resolve(cbArgs.length > 1 ? cbArgs : cbArgs[0]);\n            };\n            asyncFn.apply(this, args);\n        });\n    }\n\n    return awaitable;\n}\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _isArrayLike = require('./isArrayLike.js');\n\nvar _isArrayLike2 = _interopRequireDefault(_isArrayLike);\n\nvar _wrapAsync = require('./wrapAsync.js');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nvar _awaitify = require('./awaitify.js');\n\nvar _awaitify2 = _interopRequireDefault(_awaitify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _awaitify2.default)((eachfn, tasks, callback) => {\n    var results = (0, _isArrayLike2.default)(tasks) ? [] : {};\n\n    eachfn(tasks, (task, key, taskCb) => {\n        (0, _wrapAsync2.default)(task)((err, ...result) => {\n            if (result.length < 2) {\n                [result] = result;\n            }\n            results[key] = result;\n            taskCb(err);\n        });\n    }, err => callback(err, results));\n}, 3);\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = once;\nfunction once(fn) {\n    function wrapper(...args) {\n        if (fn === null) return;\n        var callFn = fn;\n        fn = null;\n        callFn.apply(this, args);\n    }\n    Object.assign(wrapper, fn);\n    return wrapper;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nexports.default = function (coll) {\n    return coll[Symbol.iterator] && coll[Symbol.iterator]();\n};\n\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = createIterator;\n\nvar _isArrayLike = require('./isArrayLike.js');\n\nvar _isArrayLike2 = _interopRequireDefault(_isArrayLike);\n\nvar _getIterator = require('./getIterator.js');\n\nvar _getIterator2 = _interopRequireDefault(_getIterator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createArrayIterator(coll) {\n    var i = -1;\n    var len = coll.length;\n    return function next() {\n        return ++i < len ? { value: coll[i], key: i } : null;\n    };\n}\n\nfunction createES2015Iterator(iterator) {\n    var i = -1;\n    return function next() {\n        var item = iterator.next();\n        if (item.done) return null;\n        i++;\n        return { value: item.value, key: i };\n    };\n}\n\nfunction createObjectIterator(obj) {\n    var okeys = obj ? Object.keys(obj) : [];\n    var i = -1;\n    var len = okeys.length;\n    return function next() {\n        var key = okeys[++i];\n        if (key === '__proto__') {\n            return next();\n        }\n        return i < len ? { value: obj[key], key } : null;\n    };\n}\n\nfunction createIterator(coll) {\n    if ((0, _isArrayLike2.default)(coll)) {\n        return createArrayIterator(coll);\n    }\n\n    var iterator = (0, _getIterator2.default)(coll);\n    return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = onlyOnce;\nfunction onlyOnce(fn) {\n    return function (...args) {\n        if (fn === null) throw new Error(\"Callback was already called.\");\n        var callFn = fn;\n        fn = null;\n        callFn.apply(this, args);\n    };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n// A temporary value used to identify if the loop should be broken.\n// See #1064, #1293\nconst breakLoop = {};\nexports.default = breakLoop;\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = asyncEachOfLimit;\n\nvar _breakLoop = require('./breakLoop.js');\n\nvar _breakLoop2 = _interopRequireDefault(_breakLoop);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// for async generators\nfunction asyncEachOfLimit(generator, limit, iteratee, callback) {\n    let done = false;\n    let canceled = false;\n    let awaiting = false;\n    let running = 0;\n    let idx = 0;\n\n    function replenish() {\n        //console.log('replenish')\n        if (running >= limit || awaiting || done) return;\n        //console.log('replenish awaiting')\n        awaiting = true;\n        generator.next().then(({ value, done: iterDone }) => {\n            //console.log('got value', value)\n            if (canceled || done) return;\n            awaiting = false;\n            if (iterDone) {\n                done = true;\n                if (running <= 0) {\n                    //console.log('done nextCb')\n                    callback(null);\n                }\n                return;\n            }\n            running++;\n            iteratee(value, idx, iterateeCallback);\n            idx++;\n            replenish();\n        }).catch(handleError);\n    }\n\n    function iterateeCallback(err, result) {\n        //console.log('iterateeCallback')\n        running -= 1;\n        if (canceled) return;\n        if (err) return handleError(err);\n\n        if (err === false) {\n            done = true;\n            canceled = true;\n            return;\n        }\n\n        if (result === _breakLoop2.default || done && running <= 0) {\n            done = true;\n            //console.log('done iterCb')\n            return callback(null);\n        }\n        replenish();\n    }\n\n    function handleError(err) {\n        if (canceled) return;\n        awaiting = false;\n        done = true;\n        callback(err);\n    }\n\n    replenish();\n}\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _once = require('./once.js');\n\nvar _once2 = _interopRequireDefault(_once);\n\nvar _iterator = require('./iterator.js');\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _onlyOnce = require('./onlyOnce.js');\n\nvar _onlyOnce2 = _interopRequireDefault(_onlyOnce);\n\nvar _wrapAsync = require('./wrapAsync.js');\n\nvar _asyncEachOfLimit = require('./asyncEachOfLimit.js');\n\nvar _asyncEachOfLimit2 = _interopRequireDefault(_asyncEachOfLimit);\n\nvar _breakLoop = require('./breakLoop.js');\n\nvar _breakLoop2 = _interopRequireDefault(_breakLoop);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = limit => {\n    return (obj, iteratee, callback) => {\n        callback = (0, _once2.default)(callback);\n        if (limit <= 0) {\n            throw new RangeError('concurrency limit cannot be less than 1');\n        }\n        if (!obj) {\n            return callback(null);\n        }\n        if ((0, _wrapAsync.isAsyncGenerator)(obj)) {\n            return (0, _asyncEachOfLimit2.default)(obj, limit, iteratee, callback);\n        }\n        if ((0, _wrapAsync.isAsyncIterable)(obj)) {\n            return (0, _asyncEachOfLimit2.default)(obj[Symbol.asyncIterator](), limit, iteratee, callback);\n        }\n        var nextElem = (0, _iterator2.default)(obj);\n        var done = false;\n        var canceled = false;\n        var running = 0;\n        var looping = false;\n\n        function iterateeCallback(err, value) {\n            if (canceled) return;\n            running -= 1;\n            if (err) {\n                done = true;\n                callback(err);\n            } else if (err === false) {\n                done = true;\n                canceled = true;\n            } else if (value === _breakLoop2.default || done && running <= 0) {\n                done = true;\n                return callback(null);\n            } else if (!looping) {\n                replenish();\n            }\n        }\n\n        function replenish() {\n            looping = true;\n            while (running < limit && !done) {\n                var elem = nextElem();\n                if (elem === null) {\n                    done = true;\n                    if (running <= 0) {\n                        callback(null);\n                    }\n                    return;\n                }\n                running += 1;\n                iteratee(elem.value, elem.key, (0, _onlyOnce2.default)(iterateeCallback));\n            }\n            looping = false;\n        }\n\n        replenish();\n    };\n};\n\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _eachOfLimit2 = require('./internal/eachOfLimit.js');\n\nvar _eachOfLimit3 = _interopRequireDefault(_eachOfLimit2);\n\nvar _wrapAsync = require('./internal/wrapAsync.js');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nvar _awaitify = require('./internal/awaitify.js');\n\nvar _awaitify2 = _interopRequireDefault(_awaitify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name eachOfLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.eachOf]{@link module:Collections.eachOf}\n * @alias forEachOfLimit\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each\n * item in `coll`. The `key` is the item's key, or index in the case of an\n * array.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n */\nfunction eachOfLimit(coll, limit, iteratee, callback) {\n    return (0, _eachOfLimit3.default)(limit)(coll, (0, _wrapAsync2.default)(iteratee), callback);\n}\n\nexports.default = (0, _awaitify2.default)(eachOfLimit, 4);\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _eachOfLimit = require('./eachOfLimit.js');\n\nvar _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);\n\nvar _awaitify = require('./internal/awaitify.js');\n\nvar _awaitify2 = _interopRequireDefault(_awaitify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time.\n *\n * @name eachOfSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.eachOf]{@link module:Collections.eachOf}\n * @alias forEachOfSeries\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n */\nfunction eachOfSeries(coll, iteratee, callback) {\n    return (0, _eachOfLimit2.default)(coll, 1, iteratee, callback);\n}\nexports.default = (0, _awaitify2.default)(eachOfSeries, 3);\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = series;\n\nvar _parallel2 = require('./internal/parallel.js');\n\nvar _parallel3 = _interopRequireDefault(_parallel2);\n\nvar _eachOfSeries = require('./eachOfSeries.js');\n\nvar _eachOfSeries2 = _interopRequireDefault(_eachOfSeries);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Run the functions in the `tasks` collection in series, each one running once\n * the previous function has completed. If any functions in the series pass an\n * error to its callback, no more functions are run, and `callback` is\n * immediately called with the value of the error. Otherwise, `callback`\n * receives an array of results when `tasks` have completed.\n *\n * It is also possible to use an object instead of an array. Each property will\n * be run as a function, and the results will be passed to the final `callback`\n * as an object instead of an array. This can be a more readable way of handling\n *  results from {@link async.series}.\n *\n * **Note** that while many implementations preserve the order of object\n * properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6)\n * explicitly states that\n *\n * > The mechanics and order of enumerating the properties is not specified.\n *\n * So if you rely on the order in which your series of functions are executed,\n * and want this to work on all platforms, consider using an array.\n *\n * @name series\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing\n * [async functions]{@link AsyncFunction} to run in series.\n * Each function can complete with any number of optional `result` values.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed. This function gets a results array (or object)\n * containing all the result arguments passed to the `task` callbacks. Invoked\n * with (err, result).\n * @return {Promise} a promise, if no callback is passed\n * @example\n *\n * //Using Callbacks\n * async.series([\n *     function(callback) {\n *         setTimeout(function() {\n *             // do some async task\n *             callback(null, 'one');\n *         }, 200);\n *     },\n *     function(callback) {\n *         setTimeout(function() {\n *             // then do another async task\n *             callback(null, 'two');\n *         }, 100);\n *     }\n * ], function(err, results) {\n *     console.log(results);\n *     // results is equal to ['one','two']\n * });\n *\n * // an example using objects instead of arrays\n * async.series({\n *     one: function(callback) {\n *         setTimeout(function() {\n *             // do some async task\n *             callback(null, 1);\n *         }, 200);\n *     },\n *     two: function(callback) {\n *         setTimeout(function() {\n *             // then do another async task\n *             callback(null, 2);\n *         }, 100);\n *     }\n * }, function(err, results) {\n *     console.log(results);\n *     // results is equal to: { one: 1, two: 2 }\n * });\n *\n * //Using Promises\n * async.series([\n *     function(callback) {\n *         setTimeout(function() {\n *             callback(null, 'one');\n *         }, 200);\n *     },\n *     function(callback) {\n *         setTimeout(function() {\n *             callback(null, 'two');\n *         }, 100);\n *     }\n * ]).then(results => {\n *     console.log(results);\n *     // results is equal to ['one','two']\n * }).catch(err => {\n *     console.log(err);\n * });\n *\n * // an example using an object instead of an array\n * async.series({\n *     one: function(callback) {\n *         setTimeout(function() {\n *             // do some async task\n *             callback(null, 1);\n *         }, 200);\n *     },\n *     two: function(callback) {\n *         setTimeout(function() {\n *             // then do another async task\n *             callback(null, 2);\n *         }, 100);\n *     }\n * }).then(results => {\n *     console.log(results);\n *     // results is equal to: { one: 1, two: 2 }\n * }).catch(err => {\n *     console.log(err);\n * });\n *\n * //Using async/await\n * async () => {\n *     try {\n *         let results = await async.series([\n *             function(callback) {\n *                 setTimeout(function() {\n *                     // do some async task\n *                     callback(null, 'one');\n *                 }, 200);\n *             },\n *             function(callback) {\n *                 setTimeout(function() {\n *                     // then do another async task\n *                     callback(null, 'two');\n *                 }, 100);\n *             }\n *         ]);\n *         console.log(results);\n *         // results is equal to ['one','two']\n *     }\n *     catch (err) {\n *         console.log(err);\n *     }\n * }\n *\n * // an example using an object instead of an array\n * async () => {\n *     try {\n *         let results = await async.parallel({\n *             one: function(callback) {\n *                 setTimeout(function() {\n *                     // do some async task\n *                     callback(null, 1);\n *                 }, 200);\n *             },\n *            two: function(callback) {\n *                 setTimeout(function() {\n *                     // then do another async task\n *                     callback(null, 2);\n *                 }, 100);\n *            }\n *         });\n *         console.log(results);\n *         // results is equal to: { one: 1, two: 2 }\n *     }\n *     catch (err) {\n *         console.log(err);\n *     }\n * }\n *\n */\nfunction series(tasks, callback) {\n    return (0, _parallel3.default)(_eachOfSeries2.default, tasks, callback);\n}\nmodule.exports = exports.default;","// 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// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\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// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","var Stream = require('stream');\nif (process.env.READABLE_STREAM === 'disable' && Stream) {\n  module.exports = Stream.Readable;\n  Object.assign(module.exports, Stream);\n  module.exports.Stream = Stream;\n} else {\n  exports = module.exports = require('./lib/_stream_readable.js');\n  exports.Stream = Stream || exports;\n  exports.Readable = exports;\n  exports.Writable = require('./lib/_stream_writable.js');\n  exports.Duplex = require('./lib/_stream_duplex.js');\n  exports.Transform = require('./lib/_stream_transform.js');\n  exports.PassThrough = require('./lib/_stream_passthrough.js');\n  exports.finished = require('./lib/internal/streams/end-of-stream.js');\n  exports.pipeline = require('./lib/internal/streams/pipeline.js');\n}\n","/**\n * Contains all configured adapters for the given environment.\n *\n * @type {Array}\n * @public\n */\nvar adapters = [];\n\n/**\n * Contains all modifier functions.\n *\n * @typs {Array}\n * @public\n */\nvar modifiers = [];\n\n/**\n * Our default logger.\n *\n * @public\n */\nvar logger = function devnull() {};\n\n/**\n * Register a new adapter that will used to find environments.\n *\n * @param {Function} adapter A function that will return the possible env.\n * @returns {Boolean} Indication of a successful add.\n * @public\n */\nfunction use(adapter) {\n  if (~adapters.indexOf(adapter)) return false;\n\n  adapters.push(adapter);\n  return true;\n}\n\n/**\n * Assign a new log method.\n *\n * @param {Function} custom The log method.\n * @public\n */\nfunction set(custom) {\n  logger = custom;\n}\n\n/**\n * Check if the namespace is allowed by any of our adapters.\n *\n * @param {String} namespace The namespace that needs to be enabled\n * @returns {Boolean|Promise} Indication if the namespace is enabled by our adapters.\n * @public\n */\nfunction enabled(namespace) {\n  var async = [];\n\n  for (var i = 0; i < adapters.length; i++) {\n    if (adapters[i].async) {\n      async.push(adapters[i]);\n      continue;\n    }\n\n    if (adapters[i](namespace)) return true;\n  }\n\n  if (!async.length) return false;\n\n  //\n  // Now that we know that we Async functions, we know we run in an ES6\n  // environment and can use all the API's that they offer, in this case\n  // we want to return a Promise so that we can `await` in React-Native\n  // for an async adapter.\n  //\n  return new Promise(function pinky(resolve) {\n    Promise.all(\n      async.map(function prebind(fn) {\n        return fn(namespace);\n      })\n    ).then(function resolved(values) {\n      resolve(values.some(Boolean));\n    });\n  });\n}\n\n/**\n * Add a new message modifier to the debugger.\n *\n * @param {Function} fn Modification function.\n * @returns {Boolean} Indication of a successful add.\n * @public\n */\nfunction modify(fn) {\n  if (~modifiers.indexOf(fn)) return false;\n\n  modifiers.push(fn);\n  return true;\n}\n\n/**\n * Write data to the supplied logger.\n *\n * @param {Object} meta Meta information about the log.\n * @param {Array} args Arguments for console.log.\n * @public\n */\nfunction write() {\n  logger.apply(logger, arguments);\n}\n\n/**\n * Process the message with the modifiers.\n *\n * @param {Mixed} message The message to be transformed by modifers.\n * @returns {String} Transformed message.\n * @public\n */\nfunction process(message) {\n  for (var i = 0; i < modifiers.length; i++) {\n    message = modifiers[i].apply(modifiers[i], arguments);\n  }\n\n  return message;\n}\n\n/**\n * Introduce options to the logger function.\n *\n * @param {Function} fn Calback function.\n * @param {Object} options Properties to introduce on fn.\n * @returns {Function} The passed function\n * @public\n */\nfunction introduce(fn, options) {\n  var has = Object.prototype.hasOwnProperty;\n\n  for (var key in options) {\n    if (has.call(options, key)) {\n      fn[key] = options[key];\n    }\n  }\n\n  return fn;\n}\n\n/**\n * Nope, we're not allowed to write messages.\n *\n * @returns {Boolean} false\n * @public\n */\nfunction nope(options) {\n  options.enabled = false;\n  options.modify = modify;\n  options.set = set;\n  options.use = use;\n\n  return introduce(function diagnopes() {\n    return false;\n  }, options);\n}\n\n/**\n * Yep, we're allowed to write debug messages.\n *\n * @param {Object} options The options for the process.\n * @returns {Function} The function that does the logging.\n * @public\n */\nfunction yep(options) {\n  /**\n   * The function that receives the actual debug information.\n   *\n   * @returns {Boolean} indication that we're logging.\n   * @public\n   */\n  function diagnostics() {\n    var args = Array.prototype.slice.call(arguments, 0);\n\n    write.call(write, options, process(args, options));\n    return true;\n  }\n\n  options.enabled = true;\n  options.modify = modify;\n  options.set = set;\n  options.use = use;\n\n  return introduce(diagnostics, options);\n}\n\n/**\n * Simple helper function to introduce various of helper methods to our given\n * diagnostics function.\n *\n * @param {Function} diagnostics The diagnostics function.\n * @returns {Function} diagnostics\n * @public\n */\nmodule.exports = function create(diagnostics) {\n  diagnostics.introduce = introduce;\n  diagnostics.enabled = enabled;\n  diagnostics.process = process;\n  diagnostics.modify = modify;\n  diagnostics.write = write;\n  diagnostics.nope = nope;\n  diagnostics.yep = yep;\n  diagnostics.set = set;\n  diagnostics.use = use;\n\n  return diagnostics;\n}\n","var create = require('../diagnostics');\n\n/**\n * Create a new diagnostics logger.\n *\n * @param {String} namespace The namespace it should enable.\n * @param {Object} options Additional options.\n * @returns {Function} The logger.\n * @public\n */\nvar diagnostics = create(function prod(namespace, options) {\n  options = options || {};\n  options.namespace = namespace;\n  options.prod = true;\n  options.dev = false;\n\n  if (!(options.force || prod.force)) return prod.nope(options);\n  return prod.yep(options);\n});\n\n//\n// Expose the diagnostics logger.\n//\nmodule.exports = diagnostics;\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n","'use strict';\n\n/***\n * Convert string to hex color.\n *\n * @param {String} str Text to hash and convert to hex.\n * @returns {String}\n * @api public\n */\nmodule.exports = function hex(str) {\n  for (\n    var i = 0, hash = 0;\n    i < str.length;\n    hash = str.charCodeAt(i++) + ((hash << 5) - hash)\n  );\n\n  var color = Math.floor(\n    Math.abs(\n      (Math.sin(hash) * 10000) % 1 * 16777216\n    )\n  ).toString(16);\n\n  return '#' + Array(6 - color.length + 1).join('0') + color;\n};\n","'use strict';\n\nvar color = require('color')\n  , hex = require('text-hex');\n\n/**\n * Generate a color for a given name. But be reasonably smart about it by\n * understanding name spaces and coloring each namespace a bit lighter so they\n * still have the same base color as the root.\n *\n * @param {string} namespace The namespace\n * @param {string} [delimiter] The delimiter\n * @returns {string} color\n */\nmodule.exports = function colorspace(namespace, delimiter) {\n  var split = namespace.split(delimiter || ':');\n  var base = hex(split[0]);\n\n  if (!split.length) return base;\n\n  for (var i = 0, l = split.length - 1; i < l; i++) {\n    base = color(base)\n    .mix(color(hex(split[i + 1])))\n    .saturate(1)\n    .hex();\n  }\n\n  return base;\n};\n","'use strict';\n\n/**\n * Kuler: Color text using CSS colors\n *\n * @constructor\n * @param {String} text The text that needs to be styled\n * @param {String} color Optional color for alternate API.\n * @api public\n */\nfunction Kuler(text, color) {\n  if (color) return (new Kuler(text)).style(color);\n  if (!(this instanceof Kuler)) return new Kuler(text);\n\n  this.text = text;\n}\n\n/**\n * ANSI color codes.\n *\n * @type {String}\n * @private\n */\nKuler.prototype.prefix = '\\x1b[';\nKuler.prototype.suffix = 'm';\n\n/**\n * Parse a hex color string and parse it to it's RGB equiv.\n *\n * @param {String} color\n * @returns {Array}\n * @api private\n */\nKuler.prototype.hex = function hex(color) {\n  color = color[0] === '#' ? color.substring(1) : color;\n\n  //\n  // Pre-parse for shorthand hex colors.\n  //\n  if (color.length === 3) {\n    color = color.split('');\n\n    color[5] = color[2]; // F60##0\n    color[4] = color[2]; // F60#00\n    color[3] = color[1]; // F60600\n    color[2] = color[1]; // F66600\n    color[1] = color[0]; // FF6600\n\n    color = color.join('');\n  }\n\n  var r = color.substring(0, 2)\n    , g = color.substring(2, 4)\n    , b = color.substring(4, 6);\n\n  return [ parseInt(r, 16), parseInt(g, 16), parseInt(b, 16) ];\n};\n\n/**\n * Transform a 255 RGB value to an RGV code.\n *\n * @param {Number} r Red color channel.\n * @param {Number} g Green color channel.\n * @param {Number} b Blue color channel.\n * @returns {String}\n * @api public\n */\nKuler.prototype.rgb = function rgb(r, g, b) {\n  var red = r / 255 * 5\n    , green = g / 255 * 5\n    , blue = b / 255 * 5;\n\n  return this.ansi(red, green, blue);\n};\n\n/**\n * Turns RGB 0-5 values into a single ANSI code.\n *\n * @param {Number} r Red color channel.\n * @param {Number} g Green color channel.\n * @param {Number} b Blue color channel.\n * @returns {String}\n * @api public\n */\nKuler.prototype.ansi = function ansi(r, g, b) {\n  var red = Math.round(r)\n    , green = Math.round(g)\n    , blue = Math.round(b);\n\n  return 16 + (red * 36) + (green * 6) + blue;\n};\n\n/**\n * Marks an end of color sequence.\n *\n * @returns {String} Reset sequence.\n * @api public\n */\nKuler.prototype.reset = function reset() {\n  return this.prefix +'39;49'+ this.suffix;\n};\n\n/**\n * Colour the terminal using CSS.\n *\n * @param {String} color The HEX color code.\n * @returns {String} the escape code.\n * @api public\n */\nKuler.prototype.style = function style(color) {\n  return this.prefix +'38;5;'+ this.rgb.apply(this, this.hex(color)) + this.suffix + this.text + this.reset();\n};\n\n\n//\n// Expose the actual interface.\n//\nmodule.exports = Kuler;\n","var colorspace = require('colorspace');\nvar kuler = require('kuler');\n\n/**\n * Prefix the messages with a colored namespace.\n *\n * @param {Array} args The messages array that is getting written.\n * @param {Object} options Options for diagnostics.\n * @returns {Array} Altered messages array.\n * @public\n */\nmodule.exports = function ansiModifier(args, options) {\n  var namespace = options.namespace;\n  var ansi = options.colors !== false\n  ? kuler(namespace +':', colorspace(namespace))\n  : namespace +':';\n\n  args[0] = ansi +' '+ args[0];\n  return args;\n};\n","'use strict';\n\n/**\n * Checks if a given namespace is allowed by the given variable.\n *\n * @param {String} name namespace that should be included.\n * @param {String} variable Value that needs to be tested.\n * @returns {Boolean} Indication if namespace is enabled.\n * @public\n */\nmodule.exports = function enabled(name, variable) {\n  if (!variable) return false;\n\n  var variables = variable.split(/[\\s,]+/)\n    , i = 0;\n\n  for (; i < variables.length; i++) {\n    variable = variables[i].replace('*', '.*?');\n\n    if ('-' === variable.charAt(0)) {\n      if ((new RegExp('^'+ variable.substr(1) +'$')).test(name)) {\n        return false;\n      }\n\n      continue;\n    }\n\n    if ((new RegExp('^'+ variable +'$')).test(name)) {\n      return true;\n    }\n  }\n\n  return false;\n};\n","var enabled = require('enabled');\n\n/**\n * Creates a new Adapter.\n *\n * @param {Function} fn Function that returns the value.\n * @returns {Function} The adapter logic.\n * @public\n */\nmodule.exports = function create(fn) {\n  return function adapter(namespace) {\n    try {\n      return enabled(namespace, fn());\n    } catch (e) { /* Any failure means that we found nothing */ }\n\n    return false;\n  };\n}\n","var adapter = require('./');\n\n/**\n * Extracts the values from process.env.\n *\n * @type {Function}\n * @public\n */\nmodule.exports = adapter(function processenv() {\n  return process.env.DEBUG || process.env.DIAGNOSTICS;\n});\n","/**\n * An idiot proof logger to be used as default. We've wrapped it in a try/catch\n * statement to ensure the environments without the `console` API do not crash\n * as well as an additional fix for ancient browsers like IE8 where the\n * `console.log` API doesn't have an `apply`, so we need to use the Function's\n * apply functionality to apply the arguments.\n *\n * @param {Object} meta Options of the logger.\n * @param {Array} messages The actuall message that needs to be logged.\n * @public\n */\nmodule.exports = function (meta, messages) {\n  //\n  // So yea. IE8 doesn't have an apply so we need a work around to puke the\n  // arguments in place.\n  //\n  try { Function.prototype.apply.call(console.log, console, messages); }\n  catch (e) {}\n}\n","var create = require('../diagnostics');\nvar tty = require('tty').isatty(1);\n\n/**\n * Create a new diagnostics logger.\n *\n * @param {String} namespace The namespace it should enable.\n * @param {Object} options Additional options.\n * @returns {Function} The logger.\n * @public\n */\nvar diagnostics = create(function dev(namespace, options) {\n  options = options || {};\n  options.colors = 'colors' in options ? options.colors : tty;\n  options.namespace = namespace;\n  options.prod = false;\n  options.dev = true;\n\n  if (!dev.enabled(namespace) && !(options.force || dev.force)) {\n    return dev.nope(options);\n  }\n  \n  return dev.yep(options);\n});\n\n//\n// Configure the logger for the given environment.\n//\ndiagnostics.modify(require('../modifiers/namespace-ansi'));\ndiagnostics.use(require('../adapters/process.env'));\ndiagnostics.set(require('../logger/console'));\n\n//\n// Expose the diagnostics logger.\n//\nmodule.exports = diagnostics;\n","//\n// Select the correct build version depending on the environment.\n//\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./production.js');\n} else {\n  module.exports = require('./development.js');\n}\n","/**\n * tail-file.js: TODO: add file header description.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst fs = require('fs');\nconst { StringDecoder } = require('string_decoder');\nconst { Stream } = require('readable-stream');\n\n/**\n * Simple no-op function.\n * @returns {undefined}\n */\nfunction noop() {}\n\n/**\n * TODO: add function description.\n * @param {Object} options - Options for tail.\n * @param {function} iter - Iterator function to execute on every line.\n* `tail -f` a file. Options must include file.\n * @returns {mixed} - TODO: add return description.\n */\nmodule.exports = (options, iter) => {\n  const buffer = Buffer.alloc(64 * 1024);\n  const decode = new StringDecoder('utf8');\n  const stream = new Stream();\n  let buff = '';\n  let pos = 0;\n  let row = 0;\n\n  if (options.start === -1) {\n    delete options.start;\n  }\n\n  stream.readable = true;\n  stream.destroy = () => {\n    stream.destroyed = true;\n    stream.emit('end');\n    stream.emit('close');\n  };\n\n  fs.open(options.file, 'a+', '0644', (err, fd) => {\n    if (err) {\n      if (!iter) {\n        stream.emit('error', err);\n      } else {\n        iter(err);\n      }\n      stream.destroy();\n      return;\n    }\n\n    (function read() {\n      if (stream.destroyed) {\n        fs.close(fd, noop);\n        return;\n      }\n\n      return fs.read(fd, buffer, 0, buffer.length, pos, (error, bytes) => {\n        if (error) {\n          if (!iter) {\n            stream.emit('error', error);\n          } else {\n            iter(error);\n          }\n          stream.destroy();\n          return;\n        }\n\n        if (!bytes) {\n          if (buff) {\n            // eslint-disable-next-line eqeqeq\n            if (options.start == null || row > options.start) {\n              if (!iter) {\n                stream.emit('line', buff);\n              } else {\n                iter(null, buff);\n              }\n            }\n            row++;\n            buff = '';\n          }\n          return setTimeout(read, 1000);\n        }\n\n        let data = decode.write(buffer.slice(0, bytes));\n        if (!iter) {\n          stream.emit('data', data);\n        }\n\n        data = (buff + data).split(/\\n+/);\n\n        const l = data.length - 1;\n        let i = 0;\n\n        for (; i < l; i++) {\n          // eslint-disable-next-line eqeqeq\n          if (options.start == null || row > options.start) {\n            if (!iter) {\n              stream.emit('line', data[i]);\n            } else {\n              iter(null, data[i]);\n            }\n          }\n          row++;\n        }\n\n        buff = data[l];\n        pos += bytes;\n        return read();\n      });\n    }());\n  });\n\n  if (!iter) {\n    return stream;\n  }\n\n  return stream.destroy;\n};\n","/* eslint-disable complexity,max-statements */\n/**\n * file.js: Transport for outputting to a local log file.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst asyncSeries = require('async/series');\nconst zlib = require('zlib');\nconst { MESSAGE } = require('triple-beam');\nconst { Stream, PassThrough } = require('readable-stream');\nconst TransportStream = require('winston-transport');\nconst debug = require('@dabh/diagnostics')('winston:file');\nconst os = require('os');\nconst tailFile = require('../tail-file');\n\n/**\n * Transport for outputting to a local log file.\n * @type {File}\n * @extends {TransportStream}\n */\nmodule.exports = class File extends TransportStream {\n  /**\n   * Constructor function for the File transport object responsible for\n   * persisting log messages and metadata to one or more files.\n   * @param {Object} options - Options for this instance.\n   */\n  constructor(options = {}) {\n    super(options);\n\n    // Expose the name of this Transport on the prototype.\n    this.name = options.name || 'file';\n\n    // Helper function which throws an `Error` in the event that any of the\n    // rest of the arguments is present in `options`.\n    function throwIf(target, ...args) {\n      args.slice(1).forEach(name => {\n        if (options[name]) {\n          throw new Error(`Cannot set ${name} and ${target} together`);\n        }\n      });\n    }\n\n    // Setup the base stream that always gets piped to to handle buffering.\n    this._stream = new PassThrough();\n    this._stream.setMaxListeners(30);\n\n    // Bind this context for listener methods.\n    this._onError = this._onError.bind(this);\n\n    if (options.filename || options.dirname) {\n      throwIf('filename or dirname', 'stream');\n      this._basename = this.filename = options.filename\n        ? path.basename(options.filename)\n        : 'winston.log';\n\n      this.dirname = options.dirname || path.dirname(options.filename);\n      this.options = options.options || { flags: 'a' };\n    } else if (options.stream) {\n      // eslint-disable-next-line no-console\n      console.warn('options.stream will be removed in winston@4. Use winston.transports.Stream');\n      throwIf('stream', 'filename', 'maxsize');\n      this._dest = this._stream.pipe(this._setupStream(options.stream));\n      this.dirname = path.dirname(this._dest.path);\n      // We need to listen for drain events when write() returns false. This\n      // can make node mad at times.\n    } else {\n      throw new Error('Cannot log to file without filename or stream.');\n    }\n\n    this.maxsize = options.maxsize || null;\n    this.rotationFormat = options.rotationFormat || false;\n    this.zippedArchive = options.zippedArchive || false;\n    this.maxFiles = options.maxFiles || null;\n    this.eol = (typeof options.eol === 'string') ? options.eol : os.EOL;\n    this.tailable = options.tailable || false;\n    this.lazy = options.lazy || false;\n\n    // Internal state variables representing the number of files this instance\n    // has created and the current size (in bytes) of the current logfile.\n    this._size = 0;\n    this._pendingSize = 0;\n    this._created = 0;\n    this._drain = false;\n    this._opening = false;\n    this._ending = false;\n    this._fileExist = false;\n\n    if (this.dirname) this._createLogDirIfNotExist(this.dirname);\n    if (!this.lazy) this.open();\n  }\n\n  finishIfEnding() {\n    if (this._ending) {\n      if (this._opening) {\n        this.once('open', () => {\n          this._stream.once('finish', () => this.emit('finish'));\n          setImmediate(() => this._stream.end());\n        });\n      } else {\n        this._stream.once('finish', () => this.emit('finish'));\n        setImmediate(() => this._stream.end());\n      }\n    }\n  }\n\n  /**\n   * Core logging method exposed to Winston. Metadata is optional.\n   * @param {Object} info - TODO: add param description.\n   * @param {Function} callback - TODO: add param description.\n   * @returns {undefined}\n   */\n  log(info, callback = () => { }) {\n    // Remark: (jcrugzz) What is necessary about this callback(null, true) now\n    // when thinking about 3.x? Should silent be handled in the base\n    // TransportStream _write method?\n    if (this.silent) {\n      callback();\n      return true;\n    }\n\n\n    // Output stream buffer is full and has asked us to wait for the drain event\n    if (this._drain) {\n      this._stream.once('drain', () => {\n        this._drain = false;\n        this.log(info, callback);\n      });\n      return;\n    }\n    if (this._rotate) {\n      this._stream.once('rotate', () => {\n        this._rotate = false;\n        this.log(info, callback);\n      });\n      return;\n    }\n    if (this.lazy) {\n      if (!this._fileExist) {\n        if (!this._opening) {\n          this.open();\n        }\n        this.once('open', () => {\n          this._fileExist = true;\n          this.log(info, callback);\n          return;\n        });\n        return;\n      }\n      if (this._needsNewFile(this._pendingSize)) {\n        this._dest.once('close', () => {\n          if (!this._opening) {\n            this.open();\n          }\n          this.once('open', () => {\n            this.log(info, callback);\n            return;\n          });\n          return;\n        });\n        return;\n      }\n    }\n\n    // Grab the raw string and append the expected EOL.\n    const output = `${info[MESSAGE]}${this.eol}`;\n    const bytes = Buffer.byteLength(output);\n\n    // After we have written to the PassThrough check to see if we need\n    // to rotate to the next file.\n    //\n    // Remark: This gets called too early and does not depict when data\n    // has been actually flushed to disk.\n    function logged() {\n      this._size += bytes;\n      this._pendingSize -= bytes;\n\n      debug('logged %s %s', this._size, output);\n      this.emit('logged', info);\n\n      // Do not attempt to rotate files while rotating\n      if (this._rotate) {\n        return;\n      }\n\n      // Do not attempt to rotate files while opening\n      if (this._opening) {\n        return;\n      }\n\n      // Check to see if we need to end the stream and create a new one.\n      if (!this._needsNewFile()) {\n        return;\n      }\n      if (this.lazy) {\n        this._endStream(() => {this.emit('fileclosed');});\n        return;\n      }\n\n      // End the current stream, ensure it flushes and create a new one.\n      // This could potentially be optimized to not run a stat call but its\n      // the safest way since we are supporting `maxFiles`.\n      this._rotate = true;\n      this._endStream(() => this._rotateFile());\n    }\n\n    // Keep track of the pending bytes being written while files are opening\n    // in order to properly rotate the PassThrough this._stream when the file\n    // eventually does open.\n    this._pendingSize += bytes;\n    if (this._opening\n      && !this.rotatedWhileOpening\n      && this._needsNewFile(this._size + this._pendingSize)) {\n      this.rotatedWhileOpening = true;\n    }\n\n    const written = this._stream.write(output, logged.bind(this));\n    if (!written) {\n      this._drain = true;\n      this._stream.once('drain', () => {\n        this._drain = false;\n        callback();\n      });\n    } else {\n      callback(); // eslint-disable-line callback-return\n    }\n\n    debug('written', written, this._drain);\n\n    this.finishIfEnding();\n\n    return written;\n  }\n\n  /**\n   * Query the transport. Options object is optional.\n   * @param {Object} options - Loggly-like query options for this instance.\n   * @param {function} callback - Continuation to respond to when complete.\n   * TODO: Refactor me.\n   */\n  query(options, callback) {\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n\n    options = normalizeQuery(options);\n    const file = path.join(this.dirname, this.filename);\n    let buff = '';\n    let results = [];\n    let row = 0;\n\n    const stream = fs.createReadStream(file, {\n      encoding: 'utf8'\n    });\n\n    stream.on('error', err => {\n      if (stream.readable) {\n        stream.destroy();\n      }\n      if (!callback) {\n        return;\n      }\n\n      return err.code !== 'ENOENT' ? callback(err) : callback(null, results);\n    });\n\n    stream.on('data', data => {\n      data = (buff + data).split(/\\n+/);\n      const l = data.length - 1;\n      let i = 0;\n\n      for (; i < l; i++) {\n        if (!options.start || row >= options.start) {\n          add(data[i]);\n        }\n        row++;\n      }\n\n      buff = data[l];\n    });\n\n    stream.on('close', () => {\n      if (buff) {\n        add(buff, true);\n      }\n      if (options.order === 'desc') {\n        results = results.reverse();\n      }\n\n      // eslint-disable-next-line callback-return\n      if (callback) callback(null, results);\n    });\n\n    function add(buff, attempt) {\n      try {\n        const log = JSON.parse(buff);\n        if (check(log)) {\n          push(log);\n        }\n      } catch (e) {\n        if (!attempt) {\n          stream.emit('error', e);\n        }\n      }\n    }\n\n    function push(log) {\n      if (\n        options.rows &&\n        results.length >= options.rows &&\n        options.order !== 'desc'\n      ) {\n        if (stream.readable) {\n          stream.destroy();\n        }\n        return;\n      }\n\n      if (options.fields) {\n        log = options.fields.reduce((obj, key) => {\n          obj[key] = log[key];\n          return obj;\n        }, {});\n      }\n\n      if (options.order === 'desc') {\n        if (results.length >= options.rows) {\n          results.shift();\n        }\n      }\n      results.push(log);\n    }\n\n    function check(log) {\n      if (!log) {\n        return;\n      }\n\n      if (typeof log !== 'object') {\n        return;\n      }\n\n      const time = new Date(log.timestamp);\n      if (\n        (options.from && time < options.from) ||\n        (options.until && time > options.until) ||\n        (options.level && options.level !== log.level)\n      ) {\n        return;\n      }\n\n      return true;\n    }\n\n    function normalizeQuery(options) {\n      options = options || {};\n\n      // limit\n      options.rows = options.rows || options.limit || 10;\n\n      // starting row offset\n      options.start = options.start || 0;\n\n      // now\n      options.until = options.until || new Date();\n      if (typeof options.until !== 'object') {\n        options.until = new Date(options.until);\n      }\n\n      // now - 24\n      options.from = options.from || (options.until - (24 * 60 * 60 * 1000));\n      if (typeof options.from !== 'object') {\n        options.from = new Date(options.from);\n      }\n\n      // 'asc' or 'desc'\n      options.order = options.order || 'desc';\n\n      return options;\n    }\n  }\n\n  /**\n   * Returns a log stream for this transport. Options object is optional.\n   * @param {Object} options - Stream options for this instance.\n   * @returns {Stream} - TODO: add return description.\n   * TODO: Refactor me.\n   */\n  stream(options = {}) {\n    const file = path.join(this.dirname, this.filename);\n    const stream = new Stream();\n    const tail = {\n      file,\n      start: options.start\n    };\n\n    stream.destroy = tailFile(tail, (err, line) => {\n      if (err) {\n        return stream.emit('error', err);\n      }\n\n      try {\n        stream.emit('data', line);\n        line = JSON.parse(line);\n        stream.emit('log', line);\n      } catch (e) {\n        stream.emit('error', e);\n      }\n    });\n\n    return stream;\n  }\n\n  /**\n   * Checks to see the filesize of.\n   * @returns {undefined}\n   */\n  open() {\n    // If we do not have a filename then we were passed a stream and\n    // don't need to keep track of size.\n    if (!this.filename) return;\n    if (this._opening) return;\n\n    this._opening = true;\n\n    // Stat the target file to get the size and create the stream.\n    this.stat((err, size) => {\n      if (err) {\n        return this.emit('error', err);\n      }\n      debug('stat done: %s { size: %s }', this.filename, size);\n      this._size = size;\n      this._dest = this._createStream(this._stream);\n      this._opening = false;\n      this.once('open', () => {\n        if (!this._stream.emit('rotate')) {\n          this._rotate = false;\n        }\n      });\n    });\n  }\n\n  /**\n   * Stat the file and assess information in order to create the proper stream.\n   * @param {function} callback - TODO: add param description.\n   * @returns {undefined}\n   */\n  stat(callback) {\n    const target = this._getFile();\n    const fullpath = path.join(this.dirname, target);\n\n    fs.stat(fullpath, (err, stat) => {\n      if (err && err.code === 'ENOENT') {\n        debug('ENOENT ok', fullpath);\n        // Update internally tracked filename with the new target name.\n        this.filename = target;\n        return callback(null, 0);\n      }\n\n      if (err) {\n        debug(`err ${err.code} ${fullpath}`);\n        return callback(err);\n      }\n\n      if (!stat || this._needsNewFile(stat.size)) {\n        // If `stats.size` is greater than the `maxsize` for this\n        // instance then try again.\n        return this._incFile(() => this.stat(callback));\n      }\n\n      // Once we have figured out what the filename is, set it\n      // and return the size.\n      this.filename = target;\n      callback(null, stat.size);\n    });\n  }\n\n  /**\n   * Closes the stream associated with this instance.\n   * @param {function} cb - TODO: add param description.\n   * @returns {undefined}\n   */\n  close(cb) {\n    if (!this._stream) {\n      return;\n    }\n\n    this._stream.end(() => {\n      if (cb) {\n        cb(); // eslint-disable-line callback-return\n      }\n      this.emit('flush');\n      this.emit('closed');\n    });\n  }\n\n  /**\n   * TODO: add method description.\n   * @param {number} size - TODO: add param description.\n   * @returns {undefined}\n   */\n  _needsNewFile(size) {\n    size = size || this._size;\n    return this.maxsize && size >= this.maxsize;\n  }\n\n  /**\n   * TODO: add method description.\n   * @param {Error} err - TODO: add param description.\n   * @returns {undefined}\n   */\n  _onError(err) {\n    this.emit('error', err);\n  }\n\n  /**\n   * TODO: add method description.\n   * @param {Stream} stream - TODO: add param description.\n   * @returns {mixed} - TODO: add return description.\n   */\n  _setupStream(stream) {\n    stream.on('error', this._onError);\n\n    return stream;\n  }\n\n  /**\n   * TODO: add method description.\n   * @param {Stream} stream - TODO: add param description.\n   * @returns {mixed} - TODO: add return description.\n   */\n  _cleanupStream(stream) {\n    stream.removeListener('error', this._onError);\n    stream.destroy();\n    return stream;\n  }\n\n  /**\n   * TODO: add method description.\n   */\n  _rotateFile() {\n    this._incFile(() => this.open());\n  }\n\n  /**\n   * Unpipe from the stream that has been marked as full and end it so it\n   * flushes to disk.\n   *\n   * @param {function} callback - Callback for when the current file has closed.\n   * @private\n   */\n  _endStream(callback = () => { }) {\n    if (this._dest) {\n      this._stream.unpipe(this._dest);\n      this._dest.end(() => {\n        this._cleanupStream(this._dest);\n        callback();\n      });\n    } else {\n      callback(); // eslint-disable-line callback-return\n    }\n  }\n\n  /**\n   * Returns the WritableStream for the active file on this instance. If we\n   * should gzip the file then a zlib stream is returned.\n   *\n   * @param {ReadableStream} source –PassThrough to pipe to the file when open.\n   * @returns {WritableStream} Stream that writes to disk for the active file.\n   */\n  _createStream(source) {\n    const fullpath = path.join(this.dirname, this.filename);\n\n    debug('create stream start', fullpath, this.options);\n    const dest = fs.createWriteStream(fullpath, this.options)\n      // TODO: What should we do with errors here?\n      .on('error', err => debug(err))\n      .on('close', () => debug('close', dest.path, dest.bytesWritten))\n      .on('open', () => {\n        debug('file open ok', fullpath);\n        this.emit('open', fullpath);\n        source.pipe(dest);\n\n        // If rotation occured during the open operation then we immediately\n        // start writing to a new PassThrough, begin opening the next file\n        // and cleanup the previous source and dest once the source has drained.\n        if (this.rotatedWhileOpening) {\n          this._stream = new PassThrough();\n          this._stream.setMaxListeners(30);\n          this._rotateFile();\n          this.rotatedWhileOpening = false;\n          this._cleanupStream(dest);\n          source.end();\n        }\n      });\n\n    debug('create stream ok', fullpath);\n    return dest;\n  }\n\n  /**\n   * TODO: add method description.\n   * @param {function} callback - TODO: add param description.\n   * @returns {undefined}\n   */\n  _incFile(callback) {\n    debug('_incFile', this.filename);\n    const ext = path.extname(this._basename);\n    const basename = path.basename(this._basename, ext);\n    const tasks = [];\n\n    if (this.zippedArchive) {\n      tasks.push(\n        function (cb) {\n          const num = this._created > 0 && !this.tailable ? this._created : '';\n          this._compressFile(\n            path.join(this.dirname, `${basename}${num}${ext}`),\n            path.join(this.dirname, `${basename}${num}${ext}.gz`),\n            cb\n          );\n        }.bind(this)\n      );\n    }\n\n    tasks.push(\n      function (cb) {\n        if (!this.tailable) {\n          this._created += 1;\n          this._checkMaxFilesIncrementing(ext, basename, cb);\n        } else {\n          this._checkMaxFilesTailable(ext, basename, cb);\n        }\n      }.bind(this)\n    );\n\n    asyncSeries(tasks, callback);\n  }\n\n  /**\n   * Gets the next filename to use for this instance in the case that log\n   * filesizes are being capped.\n   * @returns {string} - TODO: add return description.\n   * @private\n   */\n  _getFile() {\n    const ext = path.extname(this._basename);\n    const basename = path.basename(this._basename, ext);\n    const isRotation = this.rotationFormat\n      ? this.rotationFormat()\n      : this._created;\n\n    // Caveat emptor (indexzero): rotationFormat() was broken by design When\n    // combined with max files because the set of files to unlink is never\n    // stored.\n    return !this.tailable && this._created\n      ? `${basename}${isRotation}${ext}`\n      : `${basename}${ext}`;\n  }\n\n  /**\n   * Increment the number of files created or checked by this instance.\n   * @param {mixed} ext - TODO: add param description.\n   * @param {mixed} basename - TODO: add param description.\n   * @param {mixed} callback - TODO: add param description.\n   * @returns {undefined}\n   * @private\n   */\n  _checkMaxFilesIncrementing(ext, basename, callback) {\n    // Check for maxFiles option and delete file.\n    if (!this.maxFiles || this._created < this.maxFiles) {\n      return setImmediate(callback);\n    }\n\n    const oldest = this._created - this.maxFiles;\n    const isOldest = oldest !== 0 ? oldest : '';\n    const isZipped = this.zippedArchive ? '.gz' : '';\n    const filePath = `${basename}${isOldest}${ext}${isZipped}`;\n    const target = path.join(this.dirname, filePath);\n\n    fs.unlink(target, callback);\n  }\n\n  /**\n   * Roll files forward based on integer, up to maxFiles. e.g. if base if\n   * file.log and it becomes oversized, roll to file1.log, and allow file.log\n   * to be re-used. If file is oversized again, roll file1.log to file2.log,\n   * roll file.log to file1.log, and so on.\n   * @param {mixed} ext - TODO: add param description.\n   * @param {mixed} basename - TODO: add param description.\n   * @param {mixed} callback - TODO: add param description.\n   * @returns {undefined}\n   * @private\n   */\n  _checkMaxFilesTailable(ext, basename, callback) {\n    const tasks = [];\n    if (!this.maxFiles) {\n      return;\n    }\n\n    // const isZipped = this.zippedArchive ? '.gz' : '';\n    const isZipped = this.zippedArchive ? '.gz' : '';\n    for (let x = this.maxFiles - 1; x > 1; x--) {\n      tasks.push(function (i, cb) {\n        let fileName = `${basename}${(i - 1)}${ext}${isZipped}`;\n        const tmppath = path.join(this.dirname, fileName);\n\n        fs.exists(tmppath, exists => {\n          if (!exists) {\n            return cb(null);\n          }\n\n          fileName = `${basename}${i}${ext}${isZipped}`;\n          fs.rename(tmppath, path.join(this.dirname, fileName), cb);\n        });\n      }.bind(this, x));\n    }\n\n    asyncSeries(tasks, () => {\n      fs.rename(\n        path.join(this.dirname, `${basename}${ext}${isZipped}`),\n        path.join(this.dirname, `${basename}1${ext}${isZipped}`),\n        callback\n      );\n    });\n  }\n\n  /**\n   * Compresses src to dest with gzip and unlinks src\n   * @param {string} src - path to source file.\n   * @param {string} dest - path to zipped destination file.\n   * @param {Function} callback - callback called after file has been compressed.\n   * @returns {undefined}\n   * @private\n   */\n  _compressFile(src, dest, callback) {\n    fs.access(src, fs.F_OK, (err) => {\n      if (err) {\n        return callback();\n      }\n      var gzip = zlib.createGzip();\n      var inp = fs.createReadStream(src);\n      var out = fs.createWriteStream(dest);\n      out.on('finish', () => {\n        fs.unlink(src, callback);\n      });\n      inp.pipe(gzip).pipe(out);\n    });\n  }\n\n  _createLogDirIfNotExist(dirPath) {\n    /* eslint-disable no-sync */\n    if (!fs.existsSync(dirPath)) {\n      fs.mkdirSync(dirPath, { recursive: true });\n    }\n    /* eslint-enable no-sync */\n  }\n};\n","/**\n * http.js: Transport for outputting to a json-rpcserver.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst http = require('http');\nconst https = require('https');\nconst { Stream } = require('readable-stream');\nconst TransportStream = require('winston-transport');\nconst { configure } = require('safe-stable-stringify');\n\n/**\n * Transport for outputting to a json-rpc server.\n * @type {Stream}\n * @extends {TransportStream}\n */\nmodule.exports = class Http extends TransportStream {\n  /**\n   * Constructor function for the Http transport object responsible for\n   * persisting log messages and metadata to a terminal or TTY.\n   * @param {!Object} [options={}] - Options for this instance.\n   */\n  // eslint-disable-next-line max-statements\n  constructor(options = {}) {\n    super(options);\n\n    this.options = options;\n    this.name = options.name || 'http';\n    this.ssl = !!options.ssl;\n    this.host = options.host || 'localhost';\n    this.port = options.port;\n    this.auth = options.auth;\n    this.path = options.path || '';\n    this.maximumDepth = options.maximumDepth;\n    this.agent = options.agent;\n    this.headers = options.headers || {};\n    this.headers['content-type'] = 'application/json';\n    this.batch = options.batch || false;\n    this.batchInterval = options.batchInterval || 5000;\n    this.batchCount = options.batchCount || 10;\n    this.batchOptions = [];\n    this.batchTimeoutID = -1;\n    this.batchCallback = {};\n\n    if (!this.port) {\n      this.port = this.ssl ? 443 : 80;\n    }\n  }\n\n  /**\n   * Core logging method exposed to Winston.\n   * @param {Object} info - TODO: add param description.\n   * @param {function} callback - TODO: add param description.\n   * @returns {undefined}\n   */\n  log(info, callback) {\n    this._request(info, null, null, (err, res) => {\n      if (res && res.statusCode !== 200) {\n        err = new Error(`Invalid HTTP Status Code: ${res.statusCode}`);\n      }\n\n      if (err) {\n        this.emit('warn', err);\n      } else {\n        this.emit('logged', info);\n      }\n    });\n\n    // Remark: (jcrugzz) Fire and forget here so requests dont cause buffering\n    // and block more requests from happening?\n    if (callback) {\n      setImmediate(callback);\n    }\n  }\n\n  /**\n   * Query the transport. Options object is optional.\n   * @param {Object} options -  Loggly-like query options for this instance.\n   * @param {function} callback - Continuation to respond to when complete.\n   * @returns {undefined}\n   */\n  query(options, callback) {\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n\n    options = {\n      method: 'query',\n      params: this.normalizeQuery(options)\n    };\n\n    const auth = options.params.auth || null;\n    delete options.params.auth;\n\n    const path = options.params.path || null;\n    delete options.params.path;\n\n    this._request(options, auth, path, (err, res, body) => {\n      if (res && res.statusCode !== 200) {\n        err = new Error(`Invalid HTTP Status Code: ${res.statusCode}`);\n      }\n\n      if (err) {\n        return callback(err);\n      }\n\n      if (typeof body === 'string') {\n        try {\n          body = JSON.parse(body);\n        } catch (e) {\n          return callback(e);\n        }\n      }\n\n      callback(null, body);\n    });\n  }\n\n  /**\n   * Returns a log stream for this transport. Options object is optional.\n   * @param {Object} options - Stream options for this instance.\n   * @returns {Stream} - TODO: add return description\n   */\n  stream(options = {}) {\n    const stream = new Stream();\n    options = {\n      method: 'stream',\n      params: options\n    };\n\n    const path = options.params.path || null;\n    delete options.params.path;\n\n    const auth = options.params.auth || null;\n    delete options.params.auth;\n\n    let buff = '';\n    const req = this._request(options, auth, path);\n\n    stream.destroy = () => req.destroy();\n    req.on('data', data => {\n      data = (buff + data).split(/\\n+/);\n      const l = data.length - 1;\n\n      let i = 0;\n      for (; i < l; i++) {\n        try {\n          stream.emit('log', JSON.parse(data[i]));\n        } catch (e) {\n          stream.emit('error', e);\n        }\n      }\n\n      buff = data[l];\n    });\n    req.on('error', err => stream.emit('error', err));\n\n    return stream;\n  }\n\n  /**\n   * Make a request to a winstond server or any http server which can\n   * handle json-rpc.\n   * @param {function} options - Options to sent the request.\n   * @param {Object?} auth - authentication options\n   * @param {string} path - request path\n   * @param {function} callback - Continuation to respond to when complete.\n   */\n  _request(options, auth, path, callback) {\n    options = options || {};\n\n    auth = auth || this.auth;\n    path = path || this.path || '';\n\n    if (this.batch) {\n      this._doBatch(options, callback, auth, path);\n    } else {\n      this._doRequest(options, callback, auth, path);\n    }\n  }\n\n  /**\n   * Send or memorize the options according to batch configuration\n   * @param {function} options - Options to sent the request.\n   * @param {function} callback - Continuation to respond to when complete.\n   * @param {Object?} auth - authentication options\n   * @param {string} path - request path\n   */\n  _doBatch(options, callback, auth, path) {\n    this.batchOptions.push(options);\n    if (this.batchOptions.length === 1) {\n      // First message stored, it's time to start the timeout!\n      const me = this;\n      this.batchCallback = callback;\n      this.batchTimeoutID = setTimeout(function () {\n        // timeout is reached, send all messages to endpoint\n        me.batchTimeoutID = -1;\n        me._doBatchRequest(me.batchCallback, auth, path);\n      }, this.batchInterval);\n    }\n    if (this.batchOptions.length === this.batchCount) {\n      // max batch count is reached, send all messages to endpoint\n      this._doBatchRequest(this.batchCallback, auth, path);\n    }\n  }\n\n  /**\n   * Initiate a request with the memorized batch options, stop the batch timeout\n   * @param {function} callback - Continuation to respond to when complete.\n   * @param {Object?} auth - authentication options\n   * @param {string} path - request path\n   */\n  _doBatchRequest(callback, auth, path) {\n    if (this.batchTimeoutID > 0) {\n      clearTimeout(this.batchTimeoutID);\n      this.batchTimeoutID = -1;\n    }\n    const batchOptionsCopy = this.batchOptions.slice();\n    this.batchOptions = [];\n    this._doRequest(batchOptionsCopy, callback, auth, path);\n  }\n\n  /**\n   * Make a request to a winstond server or any http server which can\n   * handle json-rpc.\n   * @param {function} options - Options to sent the request.\n   * @param {function} callback - Continuation to respond to when complete.\n   * @param {Object?} auth - authentication options\n   * @param {string} path - request path\n   */\n  _doRequest(options, callback, auth, path) {\n    // Prepare options for outgoing HTTP request\n    const headers = Object.assign({}, this.headers);\n    if (auth && auth.bearer) {\n      headers.Authorization = `Bearer ${auth.bearer}`;\n    }\n    const req = (this.ssl ? https : http).request({\n      ...this.options,\n      method: 'POST',\n      host: this.host,\n      port: this.port,\n      path: `/${path.replace(/^\\//, '')}`,\n      headers: headers,\n      auth: (auth && auth.username && auth.password) ? (`${auth.username}:${auth.password}`) : '',\n      agent: this.agent\n    });\n\n    req.on('error', callback);\n    req.on('response', res => (\n      res.on('end', () => callback(null, res)).resume()\n    ));\n    const jsonStringify = configure({\n      ...(this.maximumDepth && { maximumDepth: this.maximumDepth })\n    });\n    req.end(Buffer.from(jsonStringify(options, this.options.replacer), 'utf8'));\n  }\n};\n","'use strict';\n\nconst isStream = stream =>\n\tstream !== null &&\n\ttypeof stream === 'object' &&\n\ttypeof stream.pipe === 'function';\n\nisStream.writable = stream =>\n\tisStream(stream) &&\n\tstream.writable !== false &&\n\ttypeof stream._write === 'function' &&\n\ttypeof stream._writableState === 'object';\n\nisStream.readable = stream =>\n\tisStream(stream) &&\n\tstream.readable !== false &&\n\ttypeof stream._read === 'function' &&\n\ttypeof stream._readableState === 'object';\n\nisStream.duplex = stream =>\n\tisStream.writable(stream) &&\n\tisStream.readable(stream);\n\nisStream.transform = stream =>\n\tisStream.duplex(stream) &&\n\ttypeof stream._transform === 'function';\n\nmodule.exports = isStream;\n","/**\n * stream.js: Transport for outputting to any arbitrary stream.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst isStream = require('is-stream');\nconst { MESSAGE } = require('triple-beam');\nconst os = require('os');\nconst TransportStream = require('winston-transport');\n\n/**\n * Transport for outputting to any arbitrary stream.\n * @type {Stream}\n * @extends {TransportStream}\n */\nmodule.exports = class Stream extends TransportStream {\n  /**\n   * Constructor function for the Console transport object responsible for\n   * persisting log messages and metadata to a terminal or TTY.\n   * @param {!Object} [options={}] - Options for this instance.\n   */\n  constructor(options = {}) {\n    super(options);\n\n    if (!options.stream || !isStream(options.stream)) {\n      throw new Error('options.stream is required.');\n    }\n\n    // We need to listen for drain events when write() returns false. This can\n    // make node mad at times.\n    this._stream = options.stream;\n    this._stream.setMaxListeners(Infinity);\n    this.isObjectMode = options.stream._writableState.objectMode;\n    this.eol = (typeof options.eol === 'string') ? options.eol : os.EOL;\n  }\n\n  /**\n   * Core logging method exposed to Winston.\n   * @param {Object} info - TODO: add param description.\n   * @param {Function} callback - TODO: add param description.\n   * @returns {undefined}\n   */\n  log(info, callback) {\n    setImmediate(() => this.emit('logged', info));\n    if (this.isObjectMode) {\n      this._stream.write(info);\n      if (callback) {\n        callback(); // eslint-disable-line callback-return\n      }\n      return;\n    }\n\n    this._stream.write(`${info[MESSAGE]}${this.eol}`);\n    if (callback) {\n      callback(); // eslint-disable-line callback-return\n    }\n    return;\n  }\n};\n","/**\n * transports.js: Set of all transports Winston knows about.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * TODO: add property description.\n * @type {Console}\n */\nObject.defineProperty(exports, 'Console', {\n  configurable: true,\n  enumerable: true,\n  get() {\n    return require('./console');\n  }\n});\n\n/**\n * TODO: add property description.\n * @type {File}\n */\nObject.defineProperty(exports, 'File', {\n  configurable: true,\n  enumerable: true,\n  get() {\n    return require('./file');\n  }\n});\n\n/**\n * TODO: add property description.\n * @type {Http}\n */\nObject.defineProperty(exports, 'Http', {\n  configurable: true,\n  enumerable: true,\n  get() {\n    return require('./http');\n  }\n});\n\n/**\n * TODO: add property description.\n * @type {Stream}\n */\nObject.defineProperty(exports, 'Stream', {\n  configurable: true,\n  enumerable: true,\n  get() {\n    return require('./stream');\n  }\n});\n","/**\n * index.js: Default settings for all levels that winston knows about.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst logform = require('logform');\nconst { configs } = require('triple-beam');\n\n/**\n * Export config set for the CLI.\n * @type {Object}\n */\nexports.cli = logform.levels(configs.cli);\n\n/**\n * Export config set for npm.\n * @type {Object}\n */\nexports.npm = logform.levels(configs.npm);\n\n/**\n * Export config set for the syslog.\n * @type {Object}\n */\nexports.syslog = logform.levels(configs.syslog);\n\n/**\n * Hoist addColors from logform where it was refactored into in winston@3.\n * @type {Object}\n */\nexports.addColors = logform.levels;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _isArrayLike = require('./internal/isArrayLike.js');\n\nvar _isArrayLike2 = _interopRequireDefault(_isArrayLike);\n\nvar _breakLoop = require('./internal/breakLoop.js');\n\nvar _breakLoop2 = _interopRequireDefault(_breakLoop);\n\nvar _eachOfLimit = require('./eachOfLimit.js');\n\nvar _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);\n\nvar _once = require('./internal/once.js');\n\nvar _once2 = _interopRequireDefault(_once);\n\nvar _onlyOnce = require('./internal/onlyOnce.js');\n\nvar _onlyOnce2 = _interopRequireDefault(_onlyOnce);\n\nvar _wrapAsync = require('./internal/wrapAsync.js');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nvar _awaitify = require('./internal/awaitify.js');\n\nvar _awaitify2 = _interopRequireDefault(_awaitify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// eachOf implementation optimized for array-likes\nfunction eachOfArrayLike(coll, iteratee, callback) {\n    callback = (0, _once2.default)(callback);\n    var index = 0,\n        completed = 0,\n        { length } = coll,\n        canceled = false;\n    if (length === 0) {\n        callback(null);\n    }\n\n    function iteratorCallback(err, value) {\n        if (err === false) {\n            canceled = true;\n        }\n        if (canceled === true) return;\n        if (err) {\n            callback(err);\n        } else if (++completed === length || value === _breakLoop2.default) {\n            callback(null);\n        }\n    }\n\n    for (; index < length; index++) {\n        iteratee(coll[index], index, (0, _onlyOnce2.default)(iteratorCallback));\n    }\n}\n\n// a generic version of eachOf which can handle array, object, and iterator cases.\nfunction eachOfGeneric(coll, iteratee, callback) {\n    return (0, _eachOfLimit2.default)(coll, Infinity, iteratee, callback);\n}\n\n/**\n * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument\n * to the iteratee.\n *\n * @name eachOf\n * @static\n * @memberOf module:Collections\n * @method\n * @alias forEachOf\n * @category Collection\n * @see [async.each]{@link module:Collections.each}\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A function to apply to each\n * item in `coll`.\n * The `key` is the item's key, or index in the case of an array.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n * @example\n *\n * // dev.json is a file containing a valid json object config for dev environment\n * // dev.json is a file containing a valid json object config for test environment\n * // prod.json is a file containing a valid json object config for prod environment\n * // invalid.json is a file with a malformed json object\n *\n * let configs = {}; //global variable\n * let validConfigFileMap = {dev: 'dev.json', test: 'test.json', prod: 'prod.json'};\n * let invalidConfigFileMap = {dev: 'dev.json', test: 'test.json', invalid: 'invalid.json'};\n *\n * // asynchronous function that reads a json file and parses the contents as json object\n * function parseFile(file, key, callback) {\n *     fs.readFile(file, \"utf8\", function(err, data) {\n *         if (err) return calback(err);\n *         try {\n *             configs[key] = JSON.parse(data);\n *         } catch (e) {\n *             return callback(e);\n *         }\n *         callback();\n *     });\n * }\n *\n * // Using callbacks\n * async.forEachOf(validConfigFileMap, parseFile, function (err) {\n *     if (err) {\n *         console.error(err);\n *     } else {\n *         console.log(configs);\n *         // configs is now a map of JSON data, e.g.\n *         // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}\n *     }\n * });\n *\n * //Error handing\n * async.forEachOf(invalidConfigFileMap, parseFile, function (err) {\n *     if (err) {\n *         console.error(err);\n *         // JSON parse error exception\n *     } else {\n *         console.log(configs);\n *     }\n * });\n *\n * // Using Promises\n * async.forEachOf(validConfigFileMap, parseFile)\n * .then( () => {\n *     console.log(configs);\n *     // configs is now a map of JSON data, e.g.\n *     // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}\n * }).catch( err => {\n *     console.error(err);\n * });\n *\n * //Error handing\n * async.forEachOf(invalidConfigFileMap, parseFile)\n * .then( () => {\n *     console.log(configs);\n * }).catch( err => {\n *     console.error(err);\n *     // JSON parse error exception\n * });\n *\n * // Using async/await\n * async () => {\n *     try {\n *         let result = await async.forEachOf(validConfigFileMap, parseFile);\n *         console.log(configs);\n *         // configs is now a map of JSON data, e.g.\n *         // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}\n *     }\n *     catch (err) {\n *         console.log(err);\n *     }\n * }\n *\n * //Error handing\n * async () => {\n *     try {\n *         let result = await async.forEachOf(invalidConfigFileMap, parseFile);\n *         console.log(configs);\n *     }\n *     catch (err) {\n *         console.log(err);\n *         // JSON parse error exception\n *     }\n * }\n *\n */\nfunction eachOf(coll, iteratee, callback) {\n    var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric;\n    return eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback);\n}\n\nexports.default = (0, _awaitify2.default)(eachOf, 3);\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = _withoutIndex;\nfunction _withoutIndex(iteratee) {\n    return (value, index, callback) => iteratee(value, callback);\n}\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _eachOf = require('./eachOf.js');\n\nvar _eachOf2 = _interopRequireDefault(_eachOf);\n\nvar _withoutIndex = require('./internal/withoutIndex.js');\n\nvar _withoutIndex2 = _interopRequireDefault(_withoutIndex);\n\nvar _wrapAsync = require('./internal/wrapAsync.js');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nvar _awaitify = require('./internal/awaitify.js');\n\nvar _awaitify2 = _interopRequireDefault(_awaitify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Applies the function `iteratee` to each item in `coll`, in parallel.\n * The `iteratee` is called with an item from the list, and a callback for when\n * it has finished. If the `iteratee` passes an error to its `callback`, the\n * main `callback` (for the `each` function) is immediately called with the\n * error.\n *\n * Note, that since this function applies `iteratee` to each item in parallel,\n * there is no guarantee that the iteratee functions will complete in order.\n *\n * @name each\n * @static\n * @memberOf module:Collections\n * @method\n * @alias forEach\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to\n * each item in `coll`. Invoked with (item, callback).\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOf`.\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n * @example\n *\n * // dir1 is a directory that contains file1.txt, file2.txt\n * // dir2 is a directory that contains file3.txt, file4.txt\n * // dir3 is a directory that contains file5.txt\n * // dir4 does not exist\n *\n * const fileList = [ 'dir1/file2.txt', 'dir2/file3.txt', 'dir/file5.txt'];\n * const withMissingFileList = ['dir1/file1.txt', 'dir4/file2.txt'];\n *\n * // asynchronous function that deletes a file\n * const deleteFile = function(file, callback) {\n *     fs.unlink(file, callback);\n * };\n *\n * // Using callbacks\n * async.each(fileList, deleteFile, function(err) {\n *     if( err ) {\n *         console.log(err);\n *     } else {\n *         console.log('All files have been deleted successfully');\n *     }\n * });\n *\n * // Error Handling\n * async.each(withMissingFileList, deleteFile, function(err){\n *     console.log(err);\n *     // [ Error: ENOENT: no such file or directory ]\n *     // since dir4/file2.txt does not exist\n *     // dir1/file1.txt could have been deleted\n * });\n *\n * // Using Promises\n * async.each(fileList, deleteFile)\n * .then( () => {\n *     console.log('All files have been deleted successfully');\n * }).catch( err => {\n *     console.log(err);\n * });\n *\n * // Error Handling\n * async.each(fileList, deleteFile)\n * .then( () => {\n *     console.log('All files have been deleted successfully');\n * }).catch( err => {\n *     console.log(err);\n *     // [ Error: ENOENT: no such file or directory ]\n *     // since dir4/file2.txt does not exist\n *     // dir1/file1.txt could have been deleted\n * });\n *\n * // Using async/await\n * async () => {\n *     try {\n *         await async.each(files, deleteFile);\n *     }\n *     catch (err) {\n *         console.log(err);\n *     }\n * }\n *\n * // Error Handling\n * async () => {\n *     try {\n *         await async.each(withMissingFileList, deleteFile);\n *     }\n *     catch (err) {\n *         console.log(err);\n *         // [ Error: ENOENT: no such file or directory ]\n *         // since dir4/file2.txt does not exist\n *         // dir1/file1.txt could have been deleted\n *     }\n * }\n *\n */\nfunction eachLimit(coll, iteratee, callback) {\n    return (0, _eachOf2.default)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback);\n}\n\nexports.default = (0, _awaitify2.default)(eachLimit, 3);\nmodule.exports = exports.default;","'use strict';\n\nvar toString = Object.prototype.toString;\n\n/**\n * Extract names from functions.\n *\n * @param {Function} fn The function who's name we need to extract.\n * @returns {String} The name of the function.\n * @public\n */\nmodule.exports = function name(fn) {\n  if ('string' === typeof fn.displayName && fn.constructor.name) {\n    return fn.displayName;\n  } else if ('string' === typeof fn.name && fn.name) {\n    return fn.name;\n  }\n\n  //\n  // Check to see if the constructor has a name.\n  //\n  if (\n       'object' === typeof fn\n    && fn.constructor\n    && 'string' === typeof fn.constructor.name\n  ) return fn.constructor.name;\n\n  //\n  // toString the given function and attempt to parse it out of it, or determine\n  // the class.\n  //\n  var named = fn.toString()\n    , type = toString.call(fn).slice(8, -1);\n\n  if ('Function' === type) {\n    named = named.substring(named.indexOf('(') + 1, named.indexOf(')'));\n  } else {\n    named = type;\n  }\n\n  return named || 'anonymous';\n};\n","'use strict';\n\nvar name = require('fn.name');\n\n/**\n * Wrap callbacks to prevent double execution.\n *\n * @param {Function} fn Function that should only be called once.\n * @returns {Function} A wrapped callback which prevents multiple executions.\n * @public\n */\nmodule.exports = function one(fn) {\n  var called = 0\n    , value;\n\n  /**\n   * The function that prevents double execution.\n   *\n   * @private\n   */\n  function onetime() {\n    if (called) return value;\n\n    called = 1;\n    value = fn.apply(this, arguments);\n    fn = null;\n\n    return value;\n  }\n\n  //\n  // To make debugging more easy we want to use the name of the supplied\n  // function. So when you look at the functions that are assigned to event\n  // listeners you don't see a load of `onetime` functions but actually the\n  // names of the functions that this module will call.\n  //\n  // NOTE: We cannot override the `name` property, as that is `readOnly`\n  // property, so displayName will have to do.\n  //\n  onetime.displayName = name(fn);\n  return onetime;\n};\n","exports.get = function(belowFn) {\n  var oldLimit = Error.stackTraceLimit;\n  Error.stackTraceLimit = Infinity;\n\n  var dummyObject = {};\n\n  var v8Handler = Error.prepareStackTrace;\n  Error.prepareStackTrace = function(dummyObject, v8StackTrace) {\n    return v8StackTrace;\n  };\n  Error.captureStackTrace(dummyObject, belowFn || exports.get);\n\n  var v8StackTrace = dummyObject.stack;\n  Error.prepareStackTrace = v8Handler;\n  Error.stackTraceLimit = oldLimit;\n\n  return v8StackTrace;\n};\n\nexports.parse = function(err) {\n  if (!err.stack) {\n    return [];\n  }\n\n  var self = this;\n  var lines = err.stack.split('\\n').slice(1);\n\n  return lines\n    .map(function(line) {\n      if (line.match(/^\\s*[-]{4,}$/)) {\n        return self._createParsedCallSite({\n          fileName: line,\n          lineNumber: null,\n          functionName: null,\n          typeName: null,\n          methodName: null,\n          columnNumber: null,\n          'native': null,\n        });\n      }\n\n      var lineMatch = line.match(/at (?:(.+)\\s+\\()?(?:(.+?):(\\d+)(?::(\\d+))?|([^)]+))\\)?/);\n      if (!lineMatch) {\n        return;\n      }\n\n      var object = null;\n      var method = null;\n      var functionName = null;\n      var typeName = null;\n      var methodName = null;\n      var isNative = (lineMatch[5] === 'native');\n\n      if (lineMatch[1]) {\n        functionName = lineMatch[1];\n        var methodStart = functionName.lastIndexOf('.');\n        if (functionName[methodStart-1] == '.')\n          methodStart--;\n        if (methodStart > 0) {\n          object = functionName.substr(0, methodStart);\n          method = functionName.substr(methodStart + 1);\n          var objectEnd = object.indexOf('.Module');\n          if (objectEnd > 0) {\n            functionName = functionName.substr(objectEnd + 1);\n            object = object.substr(0, objectEnd);\n          }\n        }\n        typeName = null;\n      }\n\n      if (method) {\n        typeName = object;\n        methodName = method;\n      }\n\n      if (method === '<anonymous>') {\n        methodName = null;\n        functionName = null;\n      }\n\n      var properties = {\n        fileName: lineMatch[2] || null,\n        lineNumber: parseInt(lineMatch[3], 10) || null,\n        functionName: functionName,\n        typeName: typeName,\n        methodName: methodName,\n        columnNumber: parseInt(lineMatch[4], 10) || null,\n        'native': isNative,\n      };\n\n      return self._createParsedCallSite(properties);\n    })\n    .filter(function(callSite) {\n      return !!callSite;\n    });\n};\n\nfunction CallSite(properties) {\n  for (var property in properties) {\n    this[property] = properties[property];\n  }\n}\n\nvar strProperties = [\n  'this',\n  'typeName',\n  'functionName',\n  'methodName',\n  'fileName',\n  'lineNumber',\n  'columnNumber',\n  'function',\n  'evalOrigin'\n];\nvar boolProperties = [\n  'topLevel',\n  'eval',\n  'native',\n  'constructor'\n];\nstrProperties.forEach(function (property) {\n  CallSite.prototype[property] = null;\n  CallSite.prototype['get' + property[0].toUpperCase() + property.substr(1)] = function () {\n    return this[property];\n  }\n});\nboolProperties.forEach(function (property) {\n  CallSite.prototype[property] = false;\n  CallSite.prototype['is' + property[0].toUpperCase() + property.substr(1)] = function () {\n    return this[property];\n  }\n});\n\nexports._createParsedCallSite = function(properties) {\n  return new CallSite(properties);\n};\n","/**\n * exception-stream.js: TODO: add file header handler.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst { Writable } = require('readable-stream');\n\n/**\n * TODO: add class description.\n * @type {ExceptionStream}\n * @extends {Writable}\n */\nmodule.exports = class ExceptionStream extends Writable {\n  /**\n   * Constructor function for the ExceptionStream responsible for wrapping a\n   * TransportStream; only allowing writes of `info` objects with\n   * `info.exception` set to true.\n   * @param {!TransportStream} transport - Stream to filter to exceptions\n   */\n  constructor(transport) {\n    super({ objectMode: true });\n\n    if (!transport) {\n      throw new Error('ExceptionStream requires a TransportStream instance.');\n    }\n\n    // Remark (indexzero): we set `handleExceptions` here because it's the\n    // predicate checked in ExceptionHandler.prototype.__getExceptionHandlers\n    this.handleExceptions = true;\n    this.transport = transport;\n  }\n\n  /**\n   * Writes the info object to our transport instance if (and only if) the\n   * `exception` property is set on the info.\n   * @param {mixed} info - TODO: add param description.\n   * @param {mixed} enc - TODO: add param description.\n   * @param {mixed} callback - TODO: add param description.\n   * @returns {mixed} - TODO: add return description.\n   * @private\n   */\n  _write(info, enc, callback) {\n    if (info.exception) {\n      return this.transport.log(info, callback);\n    }\n\n    callback();\n    return true;\n  }\n};\n","/**\n * exception-handler.js: Object for handling uncaughtException events.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst os = require('os');\nconst asyncForEach = require('async/forEach');\nconst debug = require('@dabh/diagnostics')('winston:exception');\nconst once = require('one-time');\nconst stackTrace = require('stack-trace');\nconst ExceptionStream = require('./exception-stream');\n\n/**\n * Object for handling uncaughtException events.\n * @type {ExceptionHandler}\n */\nmodule.exports = class ExceptionHandler {\n  /**\n   * TODO: add contructor description\n   * @param {!Logger} logger - TODO: add param description\n   */\n  constructor(logger) {\n    if (!logger) {\n      throw new Error('Logger is required to handle exceptions');\n    }\n\n    this.logger = logger;\n    this.handlers = new Map();\n  }\n\n  /**\n   * Handles `uncaughtException` events for the current process by adding any\n   * handlers passed in.\n   * @returns {undefined}\n   */\n  handle(...args) {\n    args.forEach(arg => {\n      if (Array.isArray(arg)) {\n        return arg.forEach(handler => this._addHandler(handler));\n      }\n\n      this._addHandler(arg);\n    });\n\n    if (!this.catcher) {\n      this.catcher = this._uncaughtException.bind(this);\n      process.on('uncaughtException', this.catcher);\n    }\n  }\n\n  /**\n   * Removes any handlers to `uncaughtException` events for the current\n   * process. This does not modify the state of the `this.handlers` set.\n   * @returns {undefined}\n   */\n  unhandle() {\n    if (this.catcher) {\n      process.removeListener('uncaughtException', this.catcher);\n      this.catcher = false;\n\n      Array.from(this.handlers.values())\n        .forEach(wrapper => this.logger.unpipe(wrapper));\n    }\n  }\n\n  /**\n   * TODO: add method description\n   * @param {Error} err - Error to get information about.\n   * @returns {mixed} - TODO: add return description.\n   */\n  getAllInfo(err) {\n    let message = null;\n    if (err) {\n      message = typeof err === 'string' ? err : err.message;\n    }\n\n    return {\n      error: err,\n      // TODO (indexzero): how do we configure this?\n      level: 'error',\n      message: [\n        `uncaughtException: ${(message || '(no error message)')}`,\n        err && err.stack || '  No stack trace'\n      ].join('\\n'),\n      stack: err && err.stack,\n      exception: true,\n      date: new Date().toString(),\n      process: this.getProcessInfo(),\n      os: this.getOsInfo(),\n      trace: this.getTrace(err)\n    };\n  }\n\n  /**\n   * Gets all relevant process information for the currently running process.\n   * @returns {mixed} - TODO: add return description.\n   */\n  getProcessInfo() {\n    return {\n      pid: process.pid,\n      uid: process.getuid ? process.getuid() : null,\n      gid: process.getgid ? process.getgid() : null,\n      cwd: process.cwd(),\n      execPath: process.execPath,\n      version: process.version,\n      argv: process.argv,\n      memoryUsage: process.memoryUsage()\n    };\n  }\n\n  /**\n   * Gets all relevant OS information for the currently running process.\n   * @returns {mixed} - TODO: add return description.\n   */\n  getOsInfo() {\n    return {\n      loadavg: os.loadavg(),\n      uptime: os.uptime()\n    };\n  }\n\n  /**\n   * Gets a stack trace for the specified error.\n   * @param {mixed} err - TODO: add param description.\n   * @returns {mixed} - TODO: add return description.\n   */\n  getTrace(err) {\n    const trace = err ? stackTrace.parse(err) : stackTrace.get();\n    return trace.map(site => {\n      return {\n        column: site.getColumnNumber(),\n        file: site.getFileName(),\n        function: site.getFunctionName(),\n        line: site.getLineNumber(),\n        method: site.getMethodName(),\n        native: site.isNative()\n      };\n    });\n  }\n\n  /**\n   * Helper method to add a transport as an exception handler.\n   * @param {Transport} handler - The transport to add as an exception handler.\n   * @returns {void}\n   */\n  _addHandler(handler) {\n    if (!this.handlers.has(handler)) {\n      handler.handleExceptions = true;\n      const wrapper = new ExceptionStream(handler);\n      this.handlers.set(handler, wrapper);\n      this.logger.pipe(wrapper);\n    }\n  }\n\n  /**\n   * Logs all relevant information around the `err` and exits the current\n   * process.\n   * @param {Error} err - Error to handle\n   * @returns {mixed} - TODO: add return description.\n   * @private\n   */\n  _uncaughtException(err) {\n    const info = this.getAllInfo(err);\n    const handlers = this._getExceptionHandlers();\n    // Calculate if we should exit on this error\n    let doExit = typeof this.logger.exitOnError === 'function'\n      ? this.logger.exitOnError(err)\n      : this.logger.exitOnError;\n    let timeout;\n\n    if (!handlers.length && doExit) {\n      // eslint-disable-next-line no-console\n      console.warn('winston: exitOnError cannot be true with no exception handlers.');\n      // eslint-disable-next-line no-console\n      console.warn('winston: not exiting process.');\n      doExit = false;\n    }\n\n    function gracefulExit() {\n      debug('doExit', doExit);\n      debug('process._exiting', process._exiting);\n\n      if (doExit && !process._exiting) {\n        // Remark: Currently ignoring any exceptions from transports when\n        // catching uncaught exceptions.\n        if (timeout) {\n          clearTimeout(timeout);\n        }\n        // eslint-disable-next-line no-process-exit\n        process.exit(1);\n      }\n    }\n\n    if (!handlers || handlers.length === 0) {\n      return process.nextTick(gracefulExit);\n    }\n\n    // Log to all transports attempting to listen for when they are completed.\n    asyncForEach(handlers, (handler, next) => {\n      const done = once(next);\n      const transport = handler.transport || handler;\n\n      // Debug wrapping so that we can inspect what's going on under the covers.\n      function onDone(event) {\n        return () => {\n          debug(event);\n          done();\n        };\n      }\n\n      transport._ending = true;\n      transport.once('finish', onDone('finished'));\n      transport.once('error', onDone('error'));\n    }, () => doExit && gracefulExit());\n\n    this.logger.log(info);\n\n    // If exitOnError is true, then only allow the logging of exceptions to\n    // take up to `3000ms`.\n    if (doExit) {\n      timeout = setTimeout(gracefulExit, 3000);\n    }\n  }\n\n  /**\n   * Returns the list of transports and exceptionHandlers for this instance.\n   * @returns {Array} - List of transports and exceptionHandlers for this\n   * instance.\n   * @private\n   */\n  _getExceptionHandlers() {\n    // Remark (indexzero): since `logger.transports` returns all of the pipes\n    // from the _readableState of the stream we actually get the join of the\n    // explicit handlers and the implicit transports with\n    // `handleExceptions: true`\n    return this.logger.transports.filter(wrap => {\n      const transport = wrap.transport || wrap;\n      return transport.handleExceptions;\n    });\n  }\n};\n","/**\n * rejection-stream.js: TODO: add file header handler.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst { Writable } = require('readable-stream');\n\n/**\n * TODO: add class description.\n * @type {RejectionStream}\n * @extends {Writable}\n */\nmodule.exports = class RejectionStream extends Writable {\n  /**\n   * Constructor function for the RejectionStream responsible for wrapping a\n   * TransportStream; only allowing writes of `info` objects with\n   * `info.rejection` set to true.\n   * @param {!TransportStream} transport - Stream to filter to rejections\n   */\n  constructor(transport) {\n    super({ objectMode: true });\n\n    if (!transport) {\n      throw new Error('RejectionStream requires a TransportStream instance.');\n    }\n\n    this.handleRejections = true;\n    this.transport = transport;\n  }\n\n  /**\n   * Writes the info object to our transport instance if (and only if) the\n   * `rejection` property is set on the info.\n   * @param {mixed} info - TODO: add param description.\n   * @param {mixed} enc - TODO: add param description.\n   * @param {mixed} callback - TODO: add param description.\n   * @returns {mixed} - TODO: add return description.\n   * @private\n   */\n  _write(info, enc, callback) {\n    if (info.rejection) {\n      return this.transport.log(info, callback);\n    }\n\n    callback();\n    return true;\n  }\n};\n","/**\n * exception-handler.js: Object for handling uncaughtException events.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst os = require('os');\nconst asyncForEach = require('async/forEach');\nconst debug = require('@dabh/diagnostics')('winston:rejection');\nconst once = require('one-time');\nconst stackTrace = require('stack-trace');\nconst RejectionStream = require('./rejection-stream');\n\n/**\n * Object for handling unhandledRejection events.\n * @type {RejectionHandler}\n */\nmodule.exports = class RejectionHandler {\n  /**\n   * TODO: add contructor description\n   * @param {!Logger} logger - TODO: add param description\n   */\n  constructor(logger) {\n    if (!logger) {\n      throw new Error('Logger is required to handle rejections');\n    }\n\n    this.logger = logger;\n    this.handlers = new Map();\n  }\n\n  /**\n   * Handles `unhandledRejection` events for the current process by adding any\n   * handlers passed in.\n   * @returns {undefined}\n   */\n  handle(...args) {\n    args.forEach(arg => {\n      if (Array.isArray(arg)) {\n        return arg.forEach(handler => this._addHandler(handler));\n      }\n\n      this._addHandler(arg);\n    });\n\n    if (!this.catcher) {\n      this.catcher = this._unhandledRejection.bind(this);\n      process.on('unhandledRejection', this.catcher);\n    }\n  }\n\n  /**\n   * Removes any handlers to `unhandledRejection` events for the current\n   * process. This does not modify the state of the `this.handlers` set.\n   * @returns {undefined}\n   */\n  unhandle() {\n    if (this.catcher) {\n      process.removeListener('unhandledRejection', this.catcher);\n      this.catcher = false;\n\n      Array.from(this.handlers.values()).forEach(wrapper =>\n        this.logger.unpipe(wrapper)\n      );\n    }\n  }\n\n  /**\n   * TODO: add method description\n   * @param {Error} err - Error to get information about.\n   * @returns {mixed} - TODO: add return description.\n   */\n  getAllInfo(err) {\n    let message = null;\n    if (err) {\n      message = typeof err === 'string' ? err : err.message;\n    }\n\n    return {\n      error: err,\n      // TODO (indexzero): how do we configure this?\n      level: 'error',\n      message: [\n        `unhandledRejection: ${message || '(no error message)'}`,\n        err && err.stack || '  No stack trace'\n      ].join('\\n'),\n      stack: err && err.stack,\n      rejection: true,\n      date: new Date().toString(),\n      process: this.getProcessInfo(),\n      os: this.getOsInfo(),\n      trace: this.getTrace(err)\n    };\n  }\n\n  /**\n   * Gets all relevant process information for the currently running process.\n   * @returns {mixed} - TODO: add return description.\n   */\n  getProcessInfo() {\n    return {\n      pid: process.pid,\n      uid: process.getuid ? process.getuid() : null,\n      gid: process.getgid ? process.getgid() : null,\n      cwd: process.cwd(),\n      execPath: process.execPath,\n      version: process.version,\n      argv: process.argv,\n      memoryUsage: process.memoryUsage()\n    };\n  }\n\n  /**\n   * Gets all relevant OS information for the currently running process.\n   * @returns {mixed} - TODO: add return description.\n   */\n  getOsInfo() {\n    return {\n      loadavg: os.loadavg(),\n      uptime: os.uptime()\n    };\n  }\n\n  /**\n   * Gets a stack trace for the specified error.\n   * @param {mixed} err - TODO: add param description.\n   * @returns {mixed} - TODO: add return description.\n   */\n  getTrace(err) {\n    const trace = err ? stackTrace.parse(err) : stackTrace.get();\n    return trace.map(site => {\n      return {\n        column: site.getColumnNumber(),\n        file: site.getFileName(),\n        function: site.getFunctionName(),\n        line: site.getLineNumber(),\n        method: site.getMethodName(),\n        native: site.isNative()\n      };\n    });\n  }\n\n  /**\n   * Helper method to add a transport as an exception handler.\n   * @param {Transport} handler - The transport to add as an exception handler.\n   * @returns {void}\n   */\n  _addHandler(handler) {\n    if (!this.handlers.has(handler)) {\n      handler.handleRejections = true;\n      const wrapper = new RejectionStream(handler);\n      this.handlers.set(handler, wrapper);\n      this.logger.pipe(wrapper);\n    }\n  }\n\n  /**\n   * Logs all relevant information around the `err` and exits the current\n   * process.\n   * @param {Error} err - Error to handle\n   * @returns {mixed} - TODO: add return description.\n   * @private\n   */\n  _unhandledRejection(err) {\n    const info = this.getAllInfo(err);\n    const handlers = this._getRejectionHandlers();\n    // Calculate if we should exit on this error\n    let doExit =\n      typeof this.logger.exitOnError === 'function'\n        ? this.logger.exitOnError(err)\n        : this.logger.exitOnError;\n    let timeout;\n\n    if (!handlers.length && doExit) {\n      // eslint-disable-next-line no-console\n      console.warn('winston: exitOnError cannot be true with no rejection handlers.');\n      // eslint-disable-next-line no-console\n      console.warn('winston: not exiting process.');\n      doExit = false;\n    }\n\n    function gracefulExit() {\n      debug('doExit', doExit);\n      debug('process._exiting', process._exiting);\n\n      if (doExit && !process._exiting) {\n        // Remark: Currently ignoring any rejections from transports when\n        // catching unhandled rejections.\n        if (timeout) {\n          clearTimeout(timeout);\n        }\n        // eslint-disable-next-line no-process-exit\n        process.exit(1);\n      }\n    }\n\n    if (!handlers || handlers.length === 0) {\n      return process.nextTick(gracefulExit);\n    }\n\n    // Log to all transports attempting to listen for when they are completed.\n    asyncForEach(\n      handlers,\n      (handler, next) => {\n        const done = once(next);\n        const transport = handler.transport || handler;\n\n        // Debug wrapping so that we can inspect what's going on under the covers.\n        function onDone(event) {\n          return () => {\n            debug(event);\n            done();\n          };\n        }\n\n        transport._ending = true;\n        transport.once('finish', onDone('finished'));\n        transport.once('error', onDone('error'));\n      },\n      () => doExit && gracefulExit()\n    );\n\n    this.logger.log(info);\n\n    // If exitOnError is true, then only allow the logging of exceptions to\n    // take up to `3000ms`.\n    if (doExit) {\n      timeout = setTimeout(gracefulExit, 3000);\n    }\n  }\n\n  /**\n   * Returns the list of transports and exceptionHandlers for this instance.\n   * @returns {Array} - List of transports and exceptionHandlers for this\n   * instance.\n   * @private\n   */\n  _getRejectionHandlers() {\n    // Remark (indexzero): since `logger.transports` returns all of the pipes\n    // from the _readableState of the stream we actually get the join of the\n    // explicit handlers and the implicit transports with\n    // `handleRejections: true`\n    return this.logger.transports.filter(wrap => {\n      const transport = wrap.transport || wrap;\n      return transport.handleRejections;\n    });\n  }\n};\n","/**\n * profiler.js: TODO: add file header description.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n/**\n * TODO: add class description.\n * @type {Profiler}\n * @private\n */\nclass Profiler {\n  /**\n   * Constructor function for the Profiler instance used by\n   * `Logger.prototype.startTimer`. When done is called the timer will finish\n   * and log the duration.\n   * @param {!Logger} logger - TODO: add param description.\n   * @private\n   */\n  constructor(logger) {\n    const Logger = require('./logger');\n    if (typeof logger !== 'object' || Array.isArray(logger) || !(logger instanceof Logger)) {\n      throw new Error('Logger is required for profiling');\n    } else {\n      this.logger = logger;\n      this.start = Date.now();\n    }\n  }\n\n  /**\n   * Ends the current timer (i.e. Profiler) instance and logs the `msg` along\n   * with the duration since creation.\n   * @returns {mixed} - TODO: add return description.\n   * @private\n   */\n  done(...args) {\n    if (typeof args[args.length - 1] === 'function') {\n      // eslint-disable-next-line no-console\n      console.warn('Callback function no longer supported as of winston@3.0.0');\n      args.pop();\n    }\n\n    const info = typeof args[args.length - 1] === 'object' ? args.pop() : {};\n    info.level = info.level || 'info';\n    info.durationMs = (Date.now()) - this.start;\n\n    return this.logger.write(info);\n  }\n};\n\nmodule.exports = Profiler;\n","/**\n * logger.js: TODO: add file header description.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst { Stream, Transform } = require('readable-stream');\nconst asyncForEach = require('async/forEach');\nconst { LEVEL, SPLAT } = require('triple-beam');\nconst isStream = require('is-stream');\nconst ExceptionHandler = require('./exception-handler');\nconst RejectionHandler = require('./rejection-handler');\nconst LegacyTransportStream = require('winston-transport/legacy');\nconst Profiler = require('./profiler');\nconst { warn } = require('./common');\nconst config = require('./config');\n\n/**\n * Captures the number of format (i.e. %s strings) in a given string.\n * Based on `util.format`, see Node.js source:\n * https://github.com/nodejs/node/blob/b1c8f15c5f169e021f7c46eb7b219de95fe97603/lib/util.js#L201-L230\n * @type {RegExp}\n */\nconst formatRegExp = /%[scdjifoO%]/g;\n\n/**\n * TODO: add class description.\n * @type {Logger}\n * @extends {Transform}\n */\nclass Logger extends Transform {\n  /**\n   * Constructor function for the Logger object responsible for persisting log\n   * messages and metadata to one or more transports.\n   * @param {!Object} options - foo\n   */\n  constructor(options) {\n    super({ objectMode: true });\n    this.configure(options);\n  }\n\n  child(defaultRequestMetadata) {\n    const logger = this;\n    return Object.create(logger, {\n      write: {\n        value: function (info) {\n          const infoClone = Object.assign(\n            {},\n            defaultRequestMetadata,\n            info\n          );\n\n          // Object.assign doesn't copy inherited Error\n          // properties so we have to do that explicitly\n          //\n          // Remark (indexzero): we should remove this\n          // since the errors format will handle this case.\n          //\n          if (info instanceof Error) {\n            infoClone.stack = info.stack;\n            infoClone.message = info.message;\n          }\n\n          logger.write(infoClone);\n        }\n      }\n    });\n  }\n\n  /**\n   * This will wholesale reconfigure this instance by:\n   * 1. Resetting all transports. Older transports will be removed implicitly.\n   * 2. Set all other options including levels, colors, rewriters, filters,\n   *    exceptionHandlers, etc.\n   * @param {!Object} options - TODO: add param description.\n   * @returns {undefined}\n   */\n  configure({\n    silent,\n    format,\n    defaultMeta,\n    levels,\n    level = 'info',\n    exitOnError = true,\n    transports,\n    colors,\n    emitErrs,\n    formatters,\n    padLevels,\n    rewriters,\n    stripColors,\n    exceptionHandlers,\n    rejectionHandlers\n  } = {}) {\n    // Reset transports if we already have them\n    if (this.transports.length) {\n      this.clear();\n    }\n\n    this.silent = silent;\n    this.format = format || this.format || require('logform/json')();\n\n    this.defaultMeta = defaultMeta || null;\n    // Hoist other options onto this instance.\n    this.levels = levels || this.levels || config.npm.levels;\n    this.level = level;\n    if (this.exceptions) {\n      this.exceptions.unhandle();\n    }\n    if (this.rejections) {\n      this.rejections.unhandle();\n    }\n    this.exceptions = new ExceptionHandler(this);\n    this.rejections = new RejectionHandler(this);\n    this.profilers = {};\n    this.exitOnError = exitOnError;\n\n    // Add all transports we have been provided.\n    if (transports) {\n      transports = Array.isArray(transports) ? transports : [transports];\n      transports.forEach(transport => this.add(transport));\n    }\n\n    if (\n      colors ||\n      emitErrs ||\n      formatters ||\n      padLevels ||\n      rewriters ||\n      stripColors\n    ) {\n      throw new Error(\n        [\n          '{ colors, emitErrs, formatters, padLevels, rewriters, stripColors } were removed in winston@3.0.0.',\n          'Use a custom winston.format(function) instead.',\n          'See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md'\n        ].join('\\n')\n      );\n    }\n\n    if (exceptionHandlers) {\n      this.exceptions.handle(exceptionHandlers);\n    }\n    if (rejectionHandlers) {\n      this.rejections.handle(rejectionHandlers);\n    }\n  }\n\n  isLevelEnabled(level) {\n    const givenLevelValue = getLevelValue(this.levels, level);\n    if (givenLevelValue === null) {\n      return false;\n    }\n\n    const configuredLevelValue = getLevelValue(this.levels, this.level);\n    if (configuredLevelValue === null) {\n      return false;\n    }\n\n    if (!this.transports || this.transports.length === 0) {\n      return configuredLevelValue >= givenLevelValue;\n    }\n\n    const index = this.transports.findIndex(transport => {\n      let transportLevelValue = getLevelValue(this.levels, transport.level);\n      if (transportLevelValue === null) {\n        transportLevelValue = configuredLevelValue;\n      }\n      return transportLevelValue >= givenLevelValue;\n    });\n    return index !== -1;\n  }\n\n  /* eslint-disable valid-jsdoc */\n  /**\n   * Ensure backwards compatibility with a `log` method\n   * @param {mixed} level - Level the log message is written at.\n   * @param {mixed} msg - TODO: add param description.\n   * @param {mixed} meta - TODO: add param description.\n   * @returns {Logger} - TODO: add return description.\n   *\n   * @example\n   *    // Supports the existing API:\n   *    logger.log('info', 'Hello world', { custom: true });\n   *    logger.log('info', new Error('Yo, it\\'s on fire'));\n   *\n   *    // Requires winston.format.splat()\n   *    logger.log('info', '%s %d%%', 'A string', 50, { thisIsMeta: true });\n   *\n   *    // And the new API with a single JSON literal:\n   *    logger.log({ level: 'info', message: 'Hello world', custom: true });\n   *    logger.log({ level: 'info', message: new Error('Yo, it\\'s on fire') });\n   *\n   *    // Also requires winston.format.splat()\n   *    logger.log({\n   *      level: 'info',\n   *      message: '%s %d%%',\n   *      [SPLAT]: ['A string', 50],\n   *      meta: { thisIsMeta: true }\n   *    });\n   *\n   */\n  /* eslint-enable valid-jsdoc */\n  log(level, msg, ...splat) {\n    // eslint-disable-line max-params\n    // Optimize for the hotpath of logging JSON literals\n    if (arguments.length === 1) {\n      // Yo dawg, I heard you like levels ... seriously ...\n      // In this context the LHS `level` here is actually the `info` so read\n      // this as: info[LEVEL] = info.level;\n      level[LEVEL] = level.level;\n      this._addDefaultMeta(level);\n      this.write(level);\n      return this;\n    }\n\n    // Slightly less hotpath, but worth optimizing for.\n    if (arguments.length === 2) {\n      if (msg && typeof msg === 'object') {\n        msg[LEVEL] = msg.level = level;\n        this._addDefaultMeta(msg);\n        this.write(msg);\n        return this;\n      }\n\n      msg = { [LEVEL]: level, level, message: msg };\n      this._addDefaultMeta(msg);\n      this.write(msg);\n      return this;\n    }\n\n    const [meta] = splat;\n    if (typeof meta === 'object' && meta !== null) {\n      // Extract tokens, if none available default to empty array to\n      // ensure consistancy in expected results\n      const tokens = msg && msg.match && msg.match(formatRegExp);\n\n      if (!tokens) {\n        const info = Object.assign({}, this.defaultMeta, meta, {\n          [LEVEL]: level,\n          [SPLAT]: splat,\n          level,\n          message: msg\n        });\n\n        if (meta.message) info.message = `${info.message} ${meta.message}`;\n        if (meta.stack) info.stack = meta.stack;\n        if (meta.cause) info.cause = meta.cause;\n\n        this.write(info);\n        return this;\n      }\n    }\n\n    this.write(Object.assign({}, this.defaultMeta, {\n      [LEVEL]: level,\n      [SPLAT]: splat,\n      level,\n      message: msg\n    }));\n\n    return this;\n  }\n\n  /**\n   * Pushes data so that it can be picked up by all of our pipe targets.\n   * @param {mixed} info - TODO: add param description.\n   * @param {mixed} enc - TODO: add param description.\n   * @param {mixed} callback - Continues stream processing.\n   * @returns {undefined}\n   * @private\n   */\n  _transform(info, enc, callback) {\n    if (this.silent) {\n      return callback();\n    }\n\n    // [LEVEL] is only soft guaranteed to be set here since we are a proper\n    // stream. It is likely that `info` came in through `.log(info)` or\n    // `.info(info)`. If it is not defined, however, define it.\n    // This LEVEL symbol is provided by `triple-beam` and also used in:\n    // - logform\n    // - winston-transport\n    // - abstract-winston-transport\n    if (!info[LEVEL]) {\n      info[LEVEL] = info.level;\n    }\n\n    // Remark: really not sure what to do here, but this has been reported as\n    // very confusing by pre winston@2.0.0 users as quite confusing when using\n    // custom levels.\n    if (!this.levels[info[LEVEL]] && this.levels[info[LEVEL]] !== 0) {\n      // eslint-disable-next-line no-console\n      console.error('[winston] Unknown logger level: %s', info[LEVEL]);\n    }\n\n    // Remark: not sure if we should simply error here.\n    if (!this._readableState.pipes) {\n      // eslint-disable-next-line no-console\n      console.error(\n        '[winston] Attempt to write logs with no transports, which can increase memory usage: %j',\n        info\n      );\n    }\n\n    // Here we write to the `format` pipe-chain, which on `readable` above will\n    // push the formatted `info` Object onto the buffer for this instance. We trap\n    // (and re-throw) any errors generated by the user-provided format, but also\n    // guarantee that the streams callback is invoked so that we can continue flowing.\n    try {\n      this.push(this.format.transform(info, this.format.options));\n    } finally {\n      this._writableState.sync = false;\n      // eslint-disable-next-line callback-return\n      callback();\n    }\n  }\n\n  /**\n   * Delays the 'finish' event until all transport pipe targets have\n   * also emitted 'finish' or are already finished.\n   * @param {mixed} callback - Continues stream processing.\n   */\n  _final(callback) {\n    const transports = this.transports.slice();\n    asyncForEach(\n      transports,\n      (transport, next) => {\n        if (!transport || transport.finished) return setImmediate(next);\n        transport.once('finish', next);\n        transport.end();\n      },\n      callback\n    );\n  }\n\n  /**\n   * Adds the transport to this logger instance by piping to it.\n   * @param {mixed} transport - TODO: add param description.\n   * @returns {Logger} - TODO: add return description.\n   */\n  add(transport) {\n    // Support backwards compatibility with all existing `winston < 3.x.x`\n    // transports which meet one of two criteria:\n    // 1. They inherit from winston.Transport in  < 3.x.x which is NOT a stream.\n    // 2. They expose a log method which has a length greater than 2 (i.e. more then\n    //    just `log(info, callback)`.\n    const target =\n      !isStream(transport) || transport.log.length > 2\n        ? new LegacyTransportStream({ transport })\n        : transport;\n\n    if (!target._writableState || !target._writableState.objectMode) {\n      throw new Error(\n        'Transports must WritableStreams in objectMode. Set { objectMode: true }.'\n      );\n    }\n\n    // Listen for the `error` event and the `warn` event on the new Transport.\n    this._onEvent('error', target);\n    this._onEvent('warn', target);\n    this.pipe(target);\n\n    if (transport.handleExceptions) {\n      this.exceptions.handle();\n    }\n\n    if (transport.handleRejections) {\n      this.rejections.handle();\n    }\n\n    return this;\n  }\n\n  /**\n   * Removes the transport from this logger instance by unpiping from it.\n   * @param {mixed} transport - TODO: add param description.\n   * @returns {Logger} - TODO: add return description.\n   */\n  remove(transport) {\n    if (!transport) return this;\n    let target = transport;\n    if (!isStream(transport) || transport.log.length > 2) {\n      target = this.transports.filter(\n        match => match.transport === transport\n      )[0];\n    }\n\n    if (target) {\n      this.unpipe(target);\n    }\n    return this;\n  }\n\n  /**\n   * Removes all transports from this logger instance.\n   * @returns {Logger} - TODO: add return description.\n   */\n  clear() {\n    this.unpipe();\n    return this;\n  }\n\n  /**\n   * Cleans up resources (streams, event listeners) for all transports\n   * associated with this instance (if necessary).\n   * @returns {Logger} - TODO: add return description.\n   */\n  close() {\n    this.exceptions.unhandle();\n    this.rejections.unhandle();\n    this.clear();\n    this.emit('close');\n    return this;\n  }\n\n  /**\n   * Sets the `target` levels specified on this instance.\n   * @param {Object} Target levels to use on this instance.\n   */\n  setLevels() {\n    warn.deprecated('setLevels');\n  }\n\n  /**\n   * Queries the all transports for this instance with the specified `options`.\n   * This will aggregate each transport's results into one object containing\n   * a property per transport.\n   * @param {Object} options - Query options for this instance.\n   * @param {function} callback - Continuation to respond to when complete.\n   */\n  query(options, callback) {\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n\n    options = options || {};\n    const results = {};\n    const queryObject = Object.assign({}, options.query || {});\n\n    // Helper function to query a single transport\n    function queryTransport(transport, next) {\n      if (options.query && typeof transport.formatQuery === 'function') {\n        options.query = transport.formatQuery(queryObject);\n      }\n\n      transport.query(options, (err, res) => {\n        if (err) {\n          return next(err);\n        }\n\n        if (typeof transport.formatResults === 'function') {\n          res = transport.formatResults(res, options.format);\n        }\n\n        next(null, res);\n      });\n    }\n\n    // Helper function to accumulate the results from `queryTransport` into\n    // the `results`.\n    function addResults(transport, next) {\n      queryTransport(transport, (err, result) => {\n        // queryTransport could potentially invoke the callback multiple times\n        // since Transport code can be unpredictable.\n        if (next) {\n          result = err || result;\n          if (result) {\n            results[transport.name] = result;\n          }\n\n          // eslint-disable-next-line callback-return\n          next();\n        }\n\n        next = null;\n      });\n    }\n\n    // Iterate over the transports in parallel setting the appropriate key in\n    // the `results`.\n    asyncForEach(\n      this.transports.filter(transport => !!transport.query),\n      addResults,\n      () => callback(null, results)\n    );\n  }\n\n  /**\n   * Returns a log stream for all transports. Options object is optional.\n   * @param{Object} options={} - Stream options for this instance.\n   * @returns {Stream} - TODO: add return description.\n   */\n  stream(options = {}) {\n    const out = new Stream();\n    const streams = [];\n\n    out._streams = streams;\n    out.destroy = () => {\n      let i = streams.length;\n      while (i--) {\n        streams[i].destroy();\n      }\n    };\n\n    // Create a list of all transports for this instance.\n    this.transports\n      .filter(transport => !!transport.stream)\n      .forEach(transport => {\n        const str = transport.stream(options);\n        if (!str) {\n          return;\n        }\n\n        streams.push(str);\n\n        str.on('log', log => {\n          log.transport = log.transport || [];\n          log.transport.push(transport.name);\n          out.emit('log', log);\n        });\n\n        str.on('error', err => {\n          err.transport = err.transport || [];\n          err.transport.push(transport.name);\n          out.emit('error', err);\n        });\n      });\n\n    return out;\n  }\n\n  /**\n   * Returns an object corresponding to a specific timing. When done is called\n   * the timer will finish and log the duration. e.g.:\n   * @returns {Profile} - TODO: add return description.\n   * @example\n   *    const timer = winston.startTimer()\n   *    setTimeout(() => {\n   *      timer.done({\n   *        message: 'Logging message'\n   *      });\n   *    }, 1000);\n   */\n  startTimer() {\n    return new Profiler(this);\n  }\n\n  /**\n   * Tracks the time inbetween subsequent calls to this method with the same\n   * `id` parameter. The second call to this method will log the difference in\n   * milliseconds along with the message.\n   * @param {string} id Unique id of the profiler\n   * @returns {Logger} - TODO: add return description.\n   */\n  profile(id, ...args) {\n    const time = Date.now();\n    if (this.profilers[id]) {\n      const timeEnd = this.profilers[id];\n      delete this.profilers[id];\n\n      // Attempt to be kind to users if they are still using older APIs.\n      if (typeof args[args.length - 2] === 'function') {\n        // eslint-disable-next-line no-console\n        console.warn(\n          'Callback function no longer supported as of winston@3.0.0'\n        );\n        args.pop();\n      }\n\n      // Set the duration property of the metadata\n      const info = typeof args[args.length - 1] === 'object' ? args.pop() : {};\n      info.level = info.level || 'info';\n      info.durationMs = time - timeEnd;\n      info.message = info.message || id;\n      return this.write(info);\n    }\n\n    this.profilers[id] = time;\n    return this;\n  }\n\n  /**\n   * Backwards compatibility to `exceptions.handle` in winston < 3.0.0.\n   * @returns {undefined}\n   * @deprecated\n   */\n  handleExceptions(...args) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      'Deprecated: .handleExceptions() will be removed in winston@4. Use .exceptions.handle()'\n    );\n    this.exceptions.handle(...args);\n  }\n\n  /**\n   * Backwards compatibility to `exceptions.handle` in winston < 3.0.0.\n   * @returns {undefined}\n   * @deprecated\n   */\n  unhandleExceptions(...args) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      'Deprecated: .unhandleExceptions() will be removed in winston@4. Use .exceptions.unhandle()'\n    );\n    this.exceptions.unhandle(...args);\n  }\n\n  /**\n   * Throw a more meaningful deprecation notice\n   * @throws {Error} - TODO: add throws description.\n   */\n  cli() {\n    throw new Error(\n      [\n        'Logger.cli() was removed in winston@3.0.0',\n        'Use a custom winston.formats.cli() instead.',\n        'See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md'\n      ].join('\\n')\n    );\n  }\n\n  /**\n   * Bubbles the `event` that occured on the specified `transport` up\n   * from this instance.\n   * @param {string} event - The event that occured\n   * @param {Object} transport - Transport on which the event occured\n   * @private\n   */\n  _onEvent(event, transport) {\n    function transportEvent(err) {\n      // https://github.com/winstonjs/winston/issues/1364\n      if (event === 'error' && !this.transports.includes(transport)) {\n        this.add(transport);\n      }\n      this.emit(event, err, transport);\n    }\n\n    if (!transport['__winston' + event]) {\n      transport['__winston' + event] = transportEvent.bind(this);\n      transport.on(event, transport['__winston' + event]);\n    }\n  }\n\n  _addDefaultMeta(msg) {\n    if (this.defaultMeta) {\n      Object.assign(msg, this.defaultMeta);\n    }\n  }\n}\n\nfunction getLevelValue(levels, level) {\n  const value = levels[level];\n  if (!value && value !== 0) {\n    return null;\n  }\n  return value;\n}\n\n/**\n * Represents the current readableState pipe targets for this Logger instance.\n * @type {Array|Object}\n */\nObject.defineProperty(Logger.prototype, 'transports', {\n  configurable: false,\n  enumerable: true,\n  get() {\n    const { pipes } = this._readableState;\n    return !Array.isArray(pipes) ? [pipes].filter(Boolean) : pipes;\n  }\n});\n\nmodule.exports = Logger;\n","/**\n * create-logger.js: Logger factory for winston logger instances.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst { LEVEL } = require('triple-beam');\nconst config = require('./config');\nconst Logger = require('./logger');\nconst debug = require('@dabh/diagnostics')('winston:create-logger');\n\nfunction isLevelEnabledFunctionName(level) {\n  return 'is' + level.charAt(0).toUpperCase() + level.slice(1) + 'Enabled';\n}\n\n/**\n * Create a new instance of a winston Logger. Creates a new\n * prototype for each instance.\n * @param {!Object} opts - Options for the created logger.\n * @returns {Logger} - A newly created logger instance.\n */\nmodule.exports = function (opts = {}) {\n  //\n  // Default levels: npm\n  //\n  opts.levels = opts.levels || config.npm.levels;\n\n  /**\n   * DerivedLogger to attach the logs level methods.\n   * @type {DerivedLogger}\n   * @extends {Logger}\n   */\n  class DerivedLogger extends Logger {\n    /**\n     * Create a new class derived logger for which the levels can be attached to\n     * the prototype of. This is a V8 optimization that is well know to increase\n     * performance of prototype functions.\n     * @param {!Object} options - Options for the created logger.\n     */\n    constructor(options) {\n      super(options);\n    }\n  }\n\n  const logger = new DerivedLogger(opts);\n\n  //\n  // Create the log level methods for the derived logger.\n  //\n  Object.keys(opts.levels).forEach(function (level) {\n    debug('Define prototype method for \"%s\"', level);\n    if (level === 'log') {\n      // eslint-disable-next-line no-console\n      console.warn('Level \"log\" not defined: conflicts with the method \"log\". Use a different level name.');\n      return;\n    }\n\n    //\n    // Define prototype methods for each log level e.g.:\n    // logger.log('info', msg) implies these methods are defined:\n    // - logger.info(msg)\n    // - logger.isInfoEnabled()\n    //\n    // Remark: to support logger.child this **MUST** be a function\n    // so it'll always be called on the instance instead of a fixed\n    // place in the prototype chain.\n    //\n    DerivedLogger.prototype[level] = function (...args) {\n      // Prefer any instance scope, but default to \"root\" logger\n      const self = this || logger;\n\n      // Optimize the hot-path which is the single object.\n      if (args.length === 1) {\n        const [msg] = args;\n        const info = msg && msg.message && msg || { message: msg };\n        info.level = info[LEVEL] = level;\n        self._addDefaultMeta(info);\n        self.write(info);\n        return (this || logger);\n      }\n\n      // When provided nothing assume the empty string\n      if (args.length === 0) {\n        self.log(level, '');\n        return self;\n      }\n\n      // Otherwise build argument list which could potentially conform to\n      // either:\n      // . v3 API: log(obj)\n      // 2. v1/v2 API: log(level, msg, ... [string interpolate], [{metadata}], [callback])\n      return self.log(level, ...args);\n    };\n\n    DerivedLogger.prototype[isLevelEnabledFunctionName(level)] = function () {\n      return (this || logger).isLevelEnabled(level);\n    };\n  });\n\n  return logger;\n};\n","/**\n * container.js: Inversion of control container for winston logger instances.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst createLogger = require('./create-logger');\n\n/**\n * Inversion of control container for winston logger instances.\n * @type {Container}\n */\nmodule.exports = class Container {\n  /**\n   * Constructor function for the Container object responsible for managing a\n   * set of `winston.Logger` instances based on string ids.\n   * @param {!Object} [options={}] - Default pass-thru options for Loggers.\n   */\n  constructor(options = {}) {\n    this.loggers = new Map();\n    this.options = options;\n  }\n\n  /**\n   * Retrieves a `winston.Logger` instance for the specified `id`. If an\n   * instance does not exist, one is created.\n   * @param {!string} id - The id of the Logger to get.\n   * @param {?Object} [options] - Options for the Logger instance.\n   * @returns {Logger} - A configured Logger instance with a specified id.\n   */\n  add(id, options) {\n    if (!this.loggers.has(id)) {\n      // Remark: Simple shallow clone for configuration options in case we pass\n      // in instantiated protoypal objects\n      options = Object.assign({}, options || this.options);\n      const existing = options.transports || this.options.transports;\n\n      // Remark: Make sure if we have an array of transports we slice it to\n      // make copies of those references.\n      if (existing) {\n        options.transports = Array.isArray(existing) ? existing.slice() : [existing];\n      } else {\n        options.transports = [];\n      }\n\n      const logger = createLogger(options);\n      logger.on('close', () => this._delete(id));\n      this.loggers.set(id, logger);\n    }\n\n    return this.loggers.get(id);\n  }\n\n  /**\n   * Retreives a `winston.Logger` instance for the specified `id`. If\n   * an instance does not exist, one is created.\n   * @param {!string} id - The id of the Logger to get.\n   * @param {?Object} [options] - Options for the Logger instance.\n   * @returns {Logger} - A configured Logger instance with a specified id.\n   */\n  get(id, options) {\n    return this.add(id, options);\n  }\n\n  /**\n   * Check if the container has a logger with the id.\n   * @param {?string} id - The id of the Logger instance to find.\n   * @returns {boolean} - Boolean value indicating if this instance has a\n   * logger with the specified `id`.\n   */\n  has(id) {\n    return !!this.loggers.has(id);\n  }\n\n  /**\n   * Closes a `Logger` instance with the specified `id` if it exists.\n   * If no `id` is supplied then all Loggers are closed.\n   * @param {?string} id - The id of the Logger instance to close.\n   * @returns {undefined}\n   */\n  close(id) {\n    if (id) {\n      return this._removeLogger(id);\n    }\n\n    this.loggers.forEach((val, key) => this._removeLogger(key));\n  }\n\n  /**\n   * Remove a logger based on the id.\n   * @param {!string} id - The id of the logger to remove.\n   * @returns {undefined}\n   * @private\n   */\n  _removeLogger(id) {\n    if (!this.loggers.has(id)) {\n      return;\n    }\n\n    const logger = this.loggers.get(id);\n    logger.close();\n    this._delete(id);\n  }\n\n  /**\n   * Deletes a `Logger` instance with the specified `id`.\n   * @param {!string} id - The id of the Logger instance to delete from\n   * container.\n   * @returns {undefined}\n   * @private\n   */\n  _delete(id) {\n    this.loggers.delete(id);\n  }\n};\n","/**\n * winston.js: Top-level include defining Winston.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst logform = require('logform');\nconst { warn } = require('./winston/common');\n\n/**\n * Expose version. Use `require` method for `webpack` support.\n * @type {string}\n */\nexports.version = require('../package.json').version;\n/**\n * Include transports defined by default by winston\n * @type {Array}\n */\nexports.transports = require('./winston/transports');\n/**\n * Expose utility methods\n * @type {Object}\n */\nexports.config = require('./winston/config');\n/**\n * Hoist format-related functionality from logform.\n * @type {Object}\n */\nexports.addColors = logform.levels;\n/**\n * Hoist format-related functionality from logform.\n * @type {Object}\n */\nexports.format = logform.format;\n/**\n * Expose core Logging-related prototypes.\n * @type {function}\n */\nexports.createLogger = require('./winston/create-logger');\n/**\n * Expose core Logging-related prototypes.\n * @type {function}\n */\nexports.Logger = require('./winston/logger');\n/**\n * Expose core Logging-related prototypes.\n * @type {Object}\n */\nexports.ExceptionHandler = require('./winston/exception-handler');\n/**\n * Expose core Logging-related prototypes.\n * @type {Object}\n */\nexports.RejectionHandler = require('./winston/rejection-handler');\n/**\n * Expose core Logging-related prototypes.\n * @type {Container}\n */\nexports.Container = require('./winston/container');\n/**\n * Expose core Logging-related prototypes.\n * @type {Object}\n */\nexports.Transport = require('winston-transport');\n/**\n * We create and expose a default `Container` to `winston.loggers` so that the\n * programmer may manage multiple `winston.Logger` instances without any\n * additional overhead.\n * @example\n *   // some-file1.js\n *   const logger = require('winston').loggers.get('something');\n *\n *   // some-file2.js\n *   const logger = require('winston').loggers.get('something');\n */\nexports.loggers = new exports.Container();\n\n/**\n * We create and expose a 'defaultLogger' so that the programmer may do the\n * following without the need to create an instance of winston.Logger directly:\n * @example\n *   const winston = require('winston');\n *   winston.log('info', 'some message');\n *   winston.error('some error');\n */\nconst defaultLogger = exports.createLogger();\n\n// Pass through the target methods onto `winston.\nObject.keys(exports.config.npm.levels)\n  .concat([\n    'log',\n    'query',\n    'stream',\n    'add',\n    'remove',\n    'clear',\n    'profile',\n    'startTimer',\n    'handleExceptions',\n    'unhandleExceptions',\n    'handleRejections',\n    'unhandleRejections',\n    'configure',\n    'child'\n  ])\n  .forEach(\n    method => (exports[method] = (...args) => defaultLogger[method](...args))\n  );\n\n/**\n * Define getter / setter for the default logger level which need to be exposed\n * by winston.\n * @type {string}\n */\nObject.defineProperty(exports, 'level', {\n  get() {\n    return defaultLogger.level;\n  },\n  set(val) {\n    defaultLogger.level = val;\n  }\n});\n\n/**\n * Define getter for `exceptions` which replaces `handleExceptions` and\n * `unhandleExceptions`.\n * @type {Object}\n */\nObject.defineProperty(exports, 'exceptions', {\n  get() {\n    return defaultLogger.exceptions;\n  }\n});\n\n/**\n * Define getter for `rejections` which replaces `handleRejections` and\n * `unhandleRejections`.\n * @type {Object}\n */\nObject.defineProperty(exports, 'rejections', {\n  get() {\n    return defaultLogger.rejections;\n  }\n});\n\n/**\n * Define getters / setters for appropriate properties of the default logger\n * which need to be exposed by winston.\n * @type {Logger}\n */\n['exitOnError'].forEach(prop => {\n  Object.defineProperty(exports, prop, {\n    get() {\n      return defaultLogger[prop];\n    },\n    set(val) {\n      defaultLogger[prop] = val;\n    }\n  });\n});\n\n/**\n * The default transports and exceptionHandlers for the default winston logger.\n * @type {Object}\n */\nObject.defineProperty(exports, 'default', {\n  get() {\n    return {\n      exceptionHandlers: defaultLogger.exceptionHandlers,\n      rejectionHandlers: defaultLogger.rejectionHandlers,\n      transports: defaultLogger.transports\n    };\n  }\n});\n\n// Have friendlier breakage notices for properties that were exposed by default\n// on winston < 3.0.\nwarn.deprecated(exports, 'setLevels');\nwarn.forFunctions(exports, 'useFormat', ['cli']);\nwarn.forProperties(exports, 'useFormat', ['padLevels', 'stripColors']);\nwarn.forFunctions(exports, 'deprecated', [\n  'addRewriter',\n  'addFilter',\n  'clone',\n  'extend'\n]);\nwarn.forProperties(exports, 'deprecated', ['emitErrs', 'levelLength']);\n\n","\"use strict\";\n\n// See: https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n// This is roughly what typescript generates, it's not called after super(), where it's needed.\n// istanbul ignore next This is a special black magic that cannot be covered everywhere\nconst setProtoOf = Object.setPrototypeOf\n  || ({ __proto__: [] } instanceof Array\n      && function(d, b) {\n        // eslint-disable-next-line no-proto\n        d.__proto__ = b;\n      })\n  || function(d, b) {\n    for (const p in b) {\n      if (Object.prototype.hasOwnProperty.call(b, p)) {\n        d[p] = b[p];\n      }\n    }\n  };\n\n// Thrown when the grammar contains an error.\n/** @type {import(\"./peg\").GrammarError} */\nclass GrammarError extends Error {\n  constructor(message, location, diagnostics) {\n    super(message);\n    setProtoOf(this, GrammarError.prototype);\n    this.name = \"GrammarError\";\n    this.location = location;\n    if (diagnostics === undefined) {\n      diagnostics = [];\n    }\n    this.diagnostics = diagnostics;\n    // All problems if this error is thrown by the plugin and not at stage\n    // checking phase\n    this.stage = null;\n    this.problems = [[\"error\", message, location, diagnostics]];\n  }\n\n  toString() {\n    let str = super.toString();\n    if (this.location) {\n      str += \"\\n at \";\n      if ((this.location.source !== undefined)\n          && (this.location.source !== null)) {\n        str += `${this.location.source}:`;\n      }\n      str += `${this.location.start.line}:${this.location.start.column}`;\n    }\n    for (const diag of this.diagnostics) {\n      str += \"\\n from \";\n      if ((diag.location.source !== undefined)\n          && (diag.location.source !== null)) {\n        str += `${diag.location.source}:`;\n      }\n      str += `${diag.location.start.line}:${diag.location.start.column}: ${diag.message}`;\n    }\n\n    return str;\n  }\n\n  /**\n   * Format the error with associated sources.  The `location.source` should have\n   * a `toString()` representation in order the result to look nice. If source\n   * is `null` or `undefined`, it is skipped from the output\n   *\n   * Sample output:\n   * ```\n   * Error: Label \"head\" is already defined\n   *  --> examples/arithmetics.pegjs:15:17\n   *    |\n   * 15 |   = head:Factor head:(_ (\"*\" / \"/\") _ Factor)* {\n   *    |                 ^^^^\n   * note: Original label location\n   *  --> examples/arithmetics.pegjs:15:5\n   *    |\n   * 15 |   = head:Factor head:(_ (\"*\" / \"/\") _ Factor)* {\n   *    |     ^^^^\n   * ```\n   *\n   * @param {import(\"./peg\").SourceText[]} sources mapping from location source to source text\n   *\n   * @returns {string} the formatted error\n   */\n  format(sources) {\n    const srcLines = sources.map(({ source, text }) => ({\n      source,\n      text: text.split(/\\r\\n|\\n|\\r/g),\n    }));\n\n    /**\n     * Returns a highlighted piece of source to which the `location` points\n     *\n     * @param {import(\"./peg\").LocationRange} location\n     * @param {number} indent How much width in symbols line number strip should have\n     * @param {string} message Additional message that will be shown after location\n     * @returns {string}\n     */\n    function entry(location, indent, message = \"\") {\n      let str = \"\";\n      const src = srcLines.find(({ source }) => source === location.source);\n      const s = location.start;\n      if (src) {\n        const e = location.end;\n        const line = src.text[s.line - 1];\n        const last = s.line === e.line ? e.column : line.length + 1;\n        const hatLen = (last - s.column) || 1;\n        if (message) {\n          str += `\\nnote: ${message}`;\n        }\n        str += `\n --> ${location.source}:${s.line}:${s.column}\n${\"\".padEnd(indent)} |\n${s.line.toString().padStart(indent)} | ${line}\n${\"\".padEnd(indent)} | ${\"\".padEnd(s.column - 1)}${\"\".padEnd(hatLen, \"^\")}`;\n      } else {\n        str += `\\n at ${location.source}:${s.line}:${s.column}`;\n        if (message) {\n          str += `: ${message}`;\n        }\n      }\n\n      return str;\n    }\n\n    /**\n     * Returns a formatted representation of the one problem in the error.\n     *\n     * @param {import(\"./peg\").Severity} severity Importance of the message\n     * @param {string} message Test message of the problem\n     * @param {import(\"./peg\").LocationRange?} location Location of the problem in the source\n     * @param {import(\"./peg\").DiagnosticNote[]} diagnostics Additional notes about the problem\n     * @returns {string}\n     */\n    function formatProblem(severity, message, location, diagnostics = []) {\n      // Calculate maximum width of all lines\n      let maxLine;\n      if (location) {\n        maxLine = diagnostics.reduce(\n          (t, { location }) => Math.max(t, location.start.line),\n          location.start.line\n        );\n      } else {\n        maxLine = Math.max.apply(\n          null,\n          diagnostics.map(d => d.location.start.line)\n        );\n      }\n      maxLine = maxLine.toString().length;\n\n      let str = `${severity}: ${message}`;\n      if (location) {\n        str += entry(location, maxLine);\n      }\n      for (const diag of diagnostics) {\n        str += entry(diag.location, maxLine, diag.message);\n      }\n\n      return str;\n    }\n\n    // \"info\" problems are only appropriate if in verbose mode.\n    // Handle them separately.\n    return this.problems\n      .filter(p => p[0] !== \"info\")\n      .map(p => formatProblem(...p)).join(\"\\n\\n\");\n  }\n}\n\nmodule.exports = GrammarError;\n","\"use strict\";\n\n// Simple AST node visitor builder.\nconst visitor = {\n  build(functions) {\n    function visit(node, ...args) {\n      return functions[node.type](node, ...args);\n    }\n\n    function visitNop() {\n      // Do nothing.\n    }\n\n    function visitExpression(node, ...args) {\n      return visit(node.expression, ...args);\n    }\n\n    function visitChildren(property) {\n      return function(node, ...args) {\n        // We do not use .map() here, because if you need the result\n        // of applying visitor to children you probable also need to\n        // process it in some way, therefore you anyway have to override\n        // this method. If you do not needed that, we do not waste time\n        // and memory for creating the output array\n        node[property].forEach(child => visit(child, ...args));\n      };\n    }\n\n    const DEFAULT_FUNCTIONS = {\n      grammar(node, ...args) {\n        if (node.topLevelInitializer) {\n          visit(node.topLevelInitializer, ...args);\n        }\n\n        if (node.initializer) {\n          visit(node.initializer, ...args);\n        }\n\n        node.rules.forEach(rule => visit(rule, ...args));\n      },\n\n      top_level_initializer: visitNop,\n      initializer: visitNop,\n      rule: visitExpression,\n      named: visitExpression,\n      choice: visitChildren(\"alternatives\"),\n      action: visitExpression,\n      sequence: visitChildren(\"elements\"),\n      labeled: visitExpression,\n      text: visitExpression,\n      simple_and: visitExpression,\n      simple_not: visitExpression,\n      optional: visitExpression,\n      zero_or_more: visitExpression,\n      one_or_more: visitExpression,\n      group: visitExpression,\n      semantic_and: visitNop,\n      semantic_not: visitNop,\n      rule_ref: visitNop,\n      literal: visitNop,\n      class: visitNop,\n      any: visitNop,\n    };\n\n    Object.keys(DEFAULT_FUNCTIONS).forEach(type => {\n      if (!Object.prototype.hasOwnProperty.call(functions, type)) {\n        functions[type] = DEFAULT_FUNCTIONS[type];\n      }\n    });\n\n    return visit;\n  },\n};\n\nmodule.exports = visitor;\n","\"use strict\";\n\nconst visitor = require(\"./visitor\");\n\n// AST utilities.\nconst asts = {\n  findRule(ast, name) {\n    for (let i = 0; i < ast.rules.length; i++) {\n      if (ast.rules[i].name === name) {\n        return ast.rules[i];\n      }\n    }\n\n    return undefined;\n  },\n\n  indexOfRule(ast, name) {\n    for (let i = 0; i < ast.rules.length; i++) {\n      if (ast.rules[i].name === name) {\n        return i;\n      }\n    }\n\n    // istanbul ignore next Presence of rules checked using another approach that not involve this function\n    // Any time when it is called the rules always exist\n    return -1;\n  },\n\n  alwaysConsumesOnSuccess(ast, node) {\n    function consumesTrue()  { return true;  }\n    function consumesFalse() { return false; }\n\n    const consumes = visitor.build({\n      choice(node) {\n        return node.alternatives.every(consumes);\n      },\n\n      sequence(node) {\n        return node.elements.some(consumes);\n      },\n\n      simple_and: consumesFalse,\n      simple_not: consumesFalse,\n      optional: consumesFalse,\n      zero_or_more: consumesFalse,\n      semantic_and: consumesFalse,\n      semantic_not: consumesFalse,\n\n      rule_ref(node) {\n        const rule = asts.findRule(ast, node.name);\n\n        // Because we run all checks in one stage, some rules could be missing.\n        // Checking for missing rules could be executed in parallel to this check\n        return rule ? consumes(rule) : undefined;\n      },\n\n      literal(node) {\n        return node.value !== \"\";\n      },\n\n      class: consumesTrue,\n      any: consumesTrue,\n    });\n\n    return consumes(node);\n  },\n};\n\nmodule.exports = asts;\n","\"use strict\";\n\n// Bytecode instruction opcodes.\nconst opcodes = {\n  // Stack Manipulation\n\n  /** @deprecated Unused */\n  PUSH:              0,    // PUSH c\n  PUSH_EMPTY_STRING: 35,   // PUSH_EMPTY_STRING\n  PUSH_UNDEFINED:    1,    // PUSH_UNDEFINED\n  PUSH_NULL:         2,    // PUSH_NULL\n  PUSH_FAILED:       3,    // PUSH_FAILED\n  PUSH_EMPTY_ARRAY:  4,    // PUSH_EMPTY_ARRAY\n  PUSH_CURR_POS:     5,    // PUSH_CURR_POS\n  POP:               6,    // POP\n  POP_CURR_POS:      7,    // POP_CURR_POS\n  POP_N:             8,    // POP_N n\n  NIP:               9,    // NIP\n  APPEND:            10,   // APPEND\n  WRAP:              11,   // WRAP n\n  TEXT:              12,   // TEXT\n  PLUCK:             36,   // PLUCK n, k, p1, ..., pK\n\n  // Conditions and Loops\n\n  IF:                13,   // IF t, f\n  IF_ERROR:          14,   // IF_ERROR t, f\n  IF_NOT_ERROR:      15,   // IF_NOT_ERROR t, f\n  WHILE_NOT_ERROR:   16,   // WHILE_NOT_ERROR b\n\n  // Matching\n\n  MATCH_ANY:        17,    // MATCH_ANY a, f, ...\n  MATCH_STRING:     18,    // MATCH_STRING s, a, f, ...\n  MATCH_STRING_IC:  19,    // MATCH_STRING_IC s, a, f, ...\n  MATCH_CHAR_CLASS: 20,    // MATCH_CHAR_CLASS c, a, f, ...\n  /** @deprecated Replaced with `MATCH_CHAR_CLASS` */\n  MATCH_REGEXP:     20,    // MATCH_REGEXP r, a, f, ...\n  ACCEPT_N:         21,    // ACCEPT_N n\n  ACCEPT_STRING:    22,    // ACCEPT_STRING s\n  FAIL:             23,    // FAIL e\n\n  // Calls\n\n  LOAD_SAVED_POS:    24,   // LOAD_SAVED_POS p\n  UPDATE_SAVED_POS:  25,   // UPDATE_SAVED_POS\n  CALL:              26,   // CALL f, n, pc, p1, p2, ..., pN\n\n  // Rules\n\n  RULE:              27,   // RULE r\n\n  // Failure Reporting\n\n  SILENT_FAILS_ON:   28,   // SILENT_FAILS_ON\n  SILENT_FAILS_OFF:  29,   // SILENT_FAILS_OFF\n\n  // Because the tests have hard-coded opcode numbers, don't renumber\n  // existing opcodes.  New opcodes that have been put in the correct\n  // sections above are repeated here in order to ensure we don't\n  // reuse them.\n  //\n  // 30-34 reserved for @mingun\n  // PUSH_EMPTY_STRING: 35\n  // PLUCK: 36\n};\n\nmodule.exports = opcodes;\n","\"use strict\";\n\nconst visitor      = require(\"../visitor\");\nconst asts         = require(\"../asts\");\nconst GrammarError = require(\"../../grammar-error\");\n\nconst ALWAYS_MATCH = 1;\nconst SOMETIMES_MATCH = 0;\nconst NEVER_MATCH = -1;\n\n// Inference match result of the each node. Can be:\n// -1: negative result, matching of that node always fails\n//  0: neutral result, may be fail, may be match\n//  1: positive result, always match\nfunction inferenceMatchResult(ast) {\n  function sometimesMatch(node) { return (node.match = SOMETIMES_MATCH); }\n  function alwaysMatch(node) {\n    inference(node.expression);\n\n    return (node.match = ALWAYS_MATCH);\n  }\n\n  function inferenceExpression(node) {\n    return (node.match = inference(node.expression));\n  }\n  function inferenceElements(elements, forChoice) {\n    const length = elements.length;\n    let always = 0;\n    let never = 0;\n\n    for (let i = 0; i < length; ++i) {\n      const result = inference(elements[i]);\n\n      if (result === ALWAYS_MATCH) { ++always; }\n      if (result === NEVER_MATCH)  { ++never;  }\n    }\n\n    if (always === length) {\n      return ALWAYS_MATCH;\n    }\n    if (forChoice) {\n      return never === length ? NEVER_MATCH : SOMETIMES_MATCH;\n    }\n\n    return never > 0 ? NEVER_MATCH : SOMETIMES_MATCH;\n  }\n\n  const inference = visitor.build({\n    rule(node) {\n      let oldResult;\n      let count = 0;\n\n      // If property not yet calculated, do that\n      if (typeof node.match === \"undefined\") {\n        node.match = SOMETIMES_MATCH;\n        do {\n          oldResult = node.match;\n          node.match = inference(node.expression);\n          // 6 == 3! -- permutations count for all transitions from one match\n          // state to another.\n          // After 6 iterations the cycle with guarantee begins\n          // For example, an input of `start = [] start` will generate the\n          // sequence: 0 -> -1 -> -1 (then stop)\n          //\n          // A more complex grammar theoretically would generate the\n          // sequence: 0 -> 1 -> 0 -> -1 -> 0 -> 1 -> ... (then cycle)\n          // but there are no examples of such grammars yet (possible, they\n          // do not exist at all)\n\n          // istanbul ignore next  This is canary test, shouldn't trigger in real life\n          if (++count > 6) {\n            throw new GrammarError(\n              \"Infinity cycle detected when trying to evaluate node match result\",\n              node.location\n            );\n          }\n        } while (oldResult !== node.match);\n      }\n\n      return node.match;\n    },\n    named:        inferenceExpression,\n    choice(node) {\n      return (node.match = inferenceElements(node.alternatives, true));\n    },\n    action:       inferenceExpression,\n    sequence(node) {\n      return (node.match = inferenceElements(node.elements, false));\n    },\n    labeled:      inferenceExpression,\n    text:         inferenceExpression,\n    simple_and:   inferenceExpression,\n    simple_not(node) {\n      return (node.match = -inference(node.expression));\n    },\n    optional:     alwaysMatch,\n    zero_or_more: alwaysMatch,\n    one_or_more:  inferenceExpression,\n    group:        inferenceExpression,\n    semantic_and: sometimesMatch,\n    semantic_not: sometimesMatch,\n    rule_ref(node) {\n      const rule = asts.findRule(ast, node.name);\n\n      return (node.match = inference(rule));\n    },\n    literal(node) {\n      // Empty literal always match on any input\n      const match = node.value.length === 0 ? ALWAYS_MATCH : SOMETIMES_MATCH;\n\n      return (node.match = match);\n    },\n    class(node) {\n      // Empty character class never match on any input\n      const match = node.parts.length === 0 ? NEVER_MATCH : SOMETIMES_MATCH;\n\n      return (node.match = match);\n    },\n    // |any| not match on empty input\n    any:          sometimesMatch,\n  });\n\n  inference(ast);\n}\n\ninferenceMatchResult.ALWAYS_MATCH    = ALWAYS_MATCH;\ninferenceMatchResult.SOMETIMES_MATCH = SOMETIMES_MATCH;\ninferenceMatchResult.NEVER_MATCH     = NEVER_MATCH;\n\nmodule.exports = inferenceMatchResult;\n","\"use strict\";\n\nconst asts = require(\"../asts\");\nconst op = require(\"../opcodes\");\nconst visitor = require(\"../visitor\");\nconst { ALWAYS_MATCH, SOMETIMES_MATCH, NEVER_MATCH } = require(\"./inference-match-result\");\n\n// Generates bytecode.\n//\n// Instructions\n// ============\n//\n// Stack Manipulation\n// ------------------\n//\n//  [35] PUSH_EMPTY_STRING\n//\n//        stack.push(\"\");\n//\n//  [1] PUSH_UNDEFINED\n//\n//        stack.push(undefined);\n//\n//  [2] PUSH_NULL\n//\n//        stack.push(null);\n//\n//  [3] PUSH_FAILED\n//\n//        stack.push(FAILED);\n//\n//  [4] PUSH_EMPTY_ARRAY\n//\n//        stack.push([]);\n//\n//  [5] PUSH_CURR_POS\n//\n//        stack.push(currPos);\n//\n//  [6] POP\n//\n//        stack.pop();\n//\n//  [7] POP_CURR_POS\n//\n//        currPos = stack.pop();\n//\n//  [8] POP_N n\n//\n//        stack.pop(n);\n//\n//  [9] NIP\n//\n//        value = stack.pop();\n//        stack.pop();\n//        stack.push(value);\n//\n// [10] APPEND\n//\n//        value = stack.pop();\n//        array = stack.pop();\n//        array.push(value);\n//        stack.push(array);\n//\n// [11] WRAP n\n//\n//        stack.push(stack.pop(n));\n//\n// [12] TEXT\n//\n//        stack.push(input.substring(stack.pop(), currPos));\n//\n// [36] PLUCK n, k, p1, ..., pK\n//\n//        value = [stack[p1], ..., stack[pK]]; // when k != 1\n//        -or-\n//        value = stack[p1];                   // when k == 1\n//\n//        stack.pop(n);\n//        stack.push(value);\n//\n// Conditions and Loops\n// --------------------\n//\n// [13] IF t, f\n//\n//        if (stack.top()) {\n//          interpret(ip + 3, ip + 3 + t);\n//        } else {\n//          interpret(ip + 3 + t, ip + 3 + t + f);\n//        }\n//\n// [14] IF_ERROR t, f\n//\n//        if (stack.top() === FAILED) {\n//          interpret(ip + 3, ip + 3 + t);\n//        } else {\n//          interpret(ip + 3 + t, ip + 3 + t + f);\n//        }\n//\n// [15] IF_NOT_ERROR t, f\n//\n//        if (stack.top() !== FAILED) {\n//          interpret(ip + 3, ip + 3 + t);\n//        } else {\n//          interpret(ip + 3 + t, ip + 3 + t + f);\n//        }\n//\n// [16] WHILE_NOT_ERROR b\n//\n//        while(stack.top() !== FAILED) {\n//          interpret(ip + 2, ip + 2 + b);\n//        }\n//\n// Matching\n// --------\n//\n// [17] MATCH_ANY a, f, ...\n//\n//        if (input.length > currPos) {\n//          interpret(ip + 3, ip + 3 + a);\n//        } else {\n//          interpret(ip + 3 + a, ip + 3 + a + f);\n//        }\n//\n// [18] MATCH_STRING s, a, f, ...\n//\n//        if (input.substr(currPos, literals[s].length) === literals[s]) {\n//          interpret(ip + 4, ip + 4 + a);\n//        } else {\n//          interpret(ip + 4 + a, ip + 4 + a + f);\n//        }\n//\n// [19] MATCH_STRING_IC s, a, f, ...\n//\n//        if (input.substr(currPos, literals[s].length).toLowerCase() === literals[s]) {\n//          interpret(ip + 4, ip + 4 + a);\n//        } else {\n//          interpret(ip + 4 + a, ip + 4 + a + f);\n//        }\n//\n// [20] MATCH_CHAR_CLASS c, a, f, ...\n//\n//        if (classes[c].test(input.charAt(currPos))) {\n//          interpret(ip + 4, ip + 4 + a);\n//        } else {\n//          interpret(ip + 4 + a, ip + 4 + a + f);\n//        }\n//\n// [21] ACCEPT_N n\n//\n//        stack.push(input.substring(currPos, n));\n//        currPos += n;\n//\n// [22] ACCEPT_STRING s\n//\n//        stack.push(literals[s]);\n//        currPos += literals[s].length;\n//\n// [23] FAIL e\n//\n//        stack.push(FAILED);\n//        fail(expectations[e]);\n//\n// Calls\n// -----\n//\n// [24] LOAD_SAVED_POS p\n//\n//        savedPos = stack[p];\n//\n// [25] UPDATE_SAVED_POS\n//\n//        savedPos = currPos;\n//\n// [26] CALL f, n, pc, p1, p2, ..., pN\n//\n//        value = functions[f](stack[p1], ..., stack[pN]);\n//        stack.pop(n);\n//        stack.push(value);\n//\n// Rules\n// -----\n//\n// [27] RULE r\n//\n//        stack.push(parseRule(r));\n//\n// Failure Reporting\n// -----------------\n//\n// [28] SILENT_FAILS_ON\n//\n//        silentFails++;\n//\n// [29] SILENT_FAILS_OFF\n//\n//        silentFails--;\n//\n// This pass can use the results of other previous passes, each of which can\n// change the AST (and, as consequence, the bytecode).\n//\n// In particular, if the pass |inferenceMatchResult| has been run before this pass,\n// then each AST node will contain a |match| property, which represents a possible\n// match result of the node:\n// - `<0` - node is never matched, for example, `!('a'*)` (negation of the always\n//          matched node). Generator can put |FAILED| to the stack immediately\n// - `=0` - sometimes node matched, sometimes not. This is the same behavior\n//          when |match| is missed\n// - `>0` - node is always matched, for example, `'a'*` (because result is an\n//          empty array, or an array with some elements). The generator does not\n//          need to add a check for |FAILED|, because it is impossible\n//\n// To handle the situation, when the |inferenceMatchResult| has not run (that\n// happens, for example, in tests), the |match| value extracted using the\n// `|0` trick, which performing cast of any value to an integer with value `0`\n// that is equivalent of an unknown match result and signals the generator that\n// runtime check for the |FAILED| is required. Trick is explained on the\n// Wikipedia page (https://en.wikipedia.org/wiki/Asm.js#Code_generation)\nfunction generateBytecode(ast) {\n  const literals = [];\n  const classes = [];\n  const expectations = [];\n  const functions = [];\n\n  function addLiteralConst(value) {\n    const index = literals.indexOf(value);\n\n    return index === -1 ? literals.push(value) - 1 : index;\n  }\n\n  function addClassConst(node) {\n    const cls = {\n      value: node.parts,\n      inverted: node.inverted,\n      ignoreCase: node.ignoreCase,\n    };\n    const pattern = JSON.stringify(cls);\n    const index = classes.findIndex(c => JSON.stringify(c) === pattern);\n\n    return index === -1 ? classes.push(cls) - 1 : index;\n  }\n\n  function addExpectedConst(expected) {\n    const pattern = JSON.stringify(expected);\n    const index = expectations.findIndex(e => JSON.stringify(e) === pattern);\n\n    return index === -1 ? expectations.push(expected) - 1 : index;\n  }\n\n  function addFunctionConst(predicate, params, node) {\n    const func = {\n      predicate,\n      params,\n      body: node.code,\n      location: node.codeLocation,\n    };\n    const pattern = JSON.stringify(func);\n    const index = functions.findIndex(f => JSON.stringify(f) === pattern);\n\n    return index === -1 ? functions.push(func) - 1 : index;\n  }\n\n  function cloneEnv(env) {\n    const clone = {};\n\n    Object.keys(env).forEach(name => {\n      clone[name] = env[name];\n    });\n\n    return clone;\n  }\n\n  function buildSequence(first, ...args) {\n    return first.concat(...args);\n  }\n\n  function buildCondition(match, condCode, thenCode, elseCode) {\n    if (match === ALWAYS_MATCH) { return thenCode; }\n    if (match === NEVER_MATCH)  { return elseCode; }\n\n    return condCode.concat(\n      [thenCode.length, elseCode.length],\n      thenCode,\n      elseCode\n    );\n  }\n\n  function buildLoop(condCode, bodyCode) {\n    return condCode.concat([bodyCode.length], bodyCode);\n  }\n\n  function buildCall(functionIndex, delta, env, sp) {\n    const params = Object.keys(env).map(name => sp - env[name]);\n\n    return [op.CALL, functionIndex, delta, params.length].concat(params);\n  }\n\n  function buildSimplePredicate(expression, negative, context) {\n    const match = expression.match | 0;\n\n    return buildSequence(\n      [op.PUSH_CURR_POS],\n      [op.SILENT_FAILS_ON],\n      generate(expression, {\n        sp: context.sp + 1,\n        env: cloneEnv(context.env),\n        action: null,\n      }),\n      [op.SILENT_FAILS_OFF],\n      buildCondition(\n        negative ? -match : match,\n        [negative ? op.IF_ERROR : op.IF_NOT_ERROR],\n        buildSequence(\n          [op.POP],\n          [negative ? op.POP : op.POP_CURR_POS],\n          [op.PUSH_UNDEFINED]\n        ),\n        buildSequence(\n          [op.POP],\n          [negative ? op.POP_CURR_POS : op.POP],\n          [op.PUSH_FAILED]\n        )\n      )\n    );\n  }\n\n  function buildSemanticPredicate(node, negative, context) {\n    const functionIndex = addFunctionConst(\n      true, Object.keys(context.env), node\n    );\n\n    return buildSequence(\n      [op.UPDATE_SAVED_POS],\n      buildCall(functionIndex, 0, context.env, context.sp),\n      buildCondition(\n        node.match | 0,\n        [op.IF],\n        buildSequence(\n          [op.POP],\n          negative ? [op.PUSH_FAILED] : [op.PUSH_UNDEFINED]\n        ),\n        buildSequence(\n          [op.POP],\n          negative ? [op.PUSH_UNDEFINED] : [op.PUSH_FAILED]\n        )\n      )\n    );\n  }\n\n  function buildAppendLoop(expressionCode) {\n    return buildLoop(\n      [op.WHILE_NOT_ERROR],\n      buildSequence([op.APPEND], expressionCode)\n    );\n  }\n\n  const generate = visitor.build({\n    grammar(node) {\n      node.rules.forEach(generate);\n\n      node.literals = literals;\n      node.classes = classes;\n      node.expectations = expectations;\n      node.functions = functions;\n    },\n\n    rule(node) {\n      node.bytecode = generate(node.expression, {\n        sp: -1,        // Stack pointer\n        env: {},       // Mapping of label names to stack positions\n        pluck: [],     // Fields that have been picked\n        action: null,  // Action nodes pass themselves to children here\n      });\n    },\n\n    named(node, context) {\n      const match = node.match | 0;\n      // Expectation not required if node always fail\n      const nameIndex = (match === NEVER_MATCH)\n        ? null\n        : addExpectedConst({ type: \"rule\", value: node.name });\n\n      // The code generated below is slightly suboptimal because |FAIL| pushes\n      // to the stack, so we need to stick a |POP| in front of it. We lack a\n      // dedicated instruction that would just report the failure and not touch\n      // the stack.\n      return buildSequence(\n        [op.SILENT_FAILS_ON],\n        generate(node.expression, context),\n        [op.SILENT_FAILS_OFF],\n        buildCondition(match, [op.IF_ERROR], [op.FAIL, nameIndex], [])\n      );\n    },\n\n    choice(node, context) {\n      function buildAlternativesCode(alternatives, context) {\n        const match = alternatives[0].match | 0;\n        const first = generate(alternatives[0], {\n          sp: context.sp,\n          env: cloneEnv(context.env),\n          action: null,\n        });\n        // If an alternative always match, no need to generate code for the next\n        // alternatives. Because their will never tried to match, any side-effects\n        // from next alternatives is impossible so we can skip their generation\n        if (match === ALWAYS_MATCH) {\n          return first;\n        }\n\n        // Even if an alternative never match it can have side-effects from\n        // a semantic predicates or an actions, so we can not skip generation\n        // of the first alternative.\n        // We can do that when analysis for possible side-effects will be introduced\n        return buildSequence(\n          first,\n          alternatives.length > 1\n            ? buildCondition(\n              SOMETIMES_MATCH,\n              [op.IF_ERROR],\n              buildSequence(\n                [op.POP],\n                buildAlternativesCode(alternatives.slice(1), context)\n              ),\n              []\n            )\n            : []\n        );\n      }\n\n      return buildAlternativesCode(node.alternatives, context);\n    },\n\n    action(node, context) {\n      const env = cloneEnv(context.env);\n      const emitCall = node.expression.type !== \"sequence\"\n                    || node.expression.elements.length === 0;\n      const expressionCode = generate(node.expression, {\n        sp: context.sp + (emitCall ? 1 : 0),\n        env,\n        action: node,\n      });\n      const match = node.expression.match | 0;\n      // Function only required if expression can match\n      const functionIndex = emitCall && match !== NEVER_MATCH\n        ? addFunctionConst(false, Object.keys(env), node)\n        : null;\n\n      return emitCall\n        ? buildSequence(\n          [op.PUSH_CURR_POS],\n          expressionCode,\n          buildCondition(\n            match,\n            [op.IF_NOT_ERROR],\n            buildSequence(\n              [op.LOAD_SAVED_POS, 1],\n              buildCall(functionIndex, 1, env, context.sp + 2)\n            ),\n            []\n          ),\n          [op.NIP]\n        )\n        : expressionCode;\n    },\n\n    sequence(node, context) {\n      function buildElementsCode(elements, context) {\n        if (elements.length > 0) {\n          const processedCount = node.elements.length - elements.length + 1;\n\n          return buildSequence(\n            generate(elements[0], {\n              sp: context.sp,\n              env: context.env,\n              pluck: context.pluck,\n              action: null,\n            }),\n            buildCondition(\n              elements[0].match | 0,\n              [op.IF_NOT_ERROR],\n              buildElementsCode(elements.slice(1), {\n                sp: context.sp + 1,\n                env: context.env,\n                pluck: context.pluck,\n                action: context.action,\n              }),\n              buildSequence(\n                processedCount > 1 ? [op.POP_N, processedCount] : [op.POP],\n                [op.POP_CURR_POS],\n                [op.PUSH_FAILED]\n              )\n            )\n          );\n        } else {\n          if (context.pluck.length > 0) {\n            return buildSequence(\n              [op.PLUCK, node.elements.length + 1, context.pluck.length],\n              context.pluck.map(eSP => context.sp - eSP)\n            );\n          }\n\n          if (context.action) {\n            const functionIndex = addFunctionConst(\n              false,\n              Object.keys(context.env),\n              context.action\n            );\n\n            return buildSequence(\n              [op.LOAD_SAVED_POS, node.elements.length],\n              buildCall(\n                functionIndex,\n                node.elements.length + 1,\n                context.env,\n                context.sp\n              )\n            );\n          } else {\n            return buildSequence([op.WRAP, node.elements.length], [op.NIP]);\n          }\n        }\n      }\n\n      return buildSequence(\n        [op.PUSH_CURR_POS],\n        buildElementsCode(node.elements, {\n          sp: context.sp + 1,\n          env: context.env,\n          pluck: [],\n          action: context.action,\n        })\n      );\n    },\n\n    labeled(node, context) {\n      let env = context.env;\n      const label = node.label;\n      const sp = context.sp + 1;\n\n      if (label) {\n        env = cloneEnv(context.env);\n        context.env[node.label] = sp;\n      }\n\n      if (node.pick) {\n        context.pluck.push(sp);\n      }\n\n      return generate(node.expression, {\n        sp: context.sp,\n        env,\n        action: null,\n      });\n    },\n\n    text(node, context) {\n      return buildSequence(\n        [op.PUSH_CURR_POS],\n        generate(node.expression, {\n          sp: context.sp + 1,\n          env: cloneEnv(context.env),\n          action: null,\n        }),\n        buildCondition(\n          node.match | 0,\n          [op.IF_NOT_ERROR],\n          buildSequence([op.POP], [op.TEXT]),\n          [op.NIP]\n        )\n      );\n    },\n\n    simple_and(node, context) {\n      return buildSimplePredicate(node.expression, false, context);\n    },\n\n    simple_not(node, context) {\n      return buildSimplePredicate(node.expression, true, context);\n    },\n\n    optional(node, context) {\n      return buildSequence(\n        generate(node.expression, {\n          sp: context.sp,\n          env: cloneEnv(context.env),\n          action: null,\n        }),\n        buildCondition(\n          // Check expression match, not the node match\n          // If expression always match, no need to replace FAILED to NULL,\n          // because FAILED will never appeared\n          -(node.expression.match | 0),\n          [op.IF_ERROR],\n          buildSequence([op.POP], [op.PUSH_NULL]),\n          []\n        )\n      );\n    },\n\n    zero_or_more(node, context) {\n      const expressionCode = generate(node.expression, {\n        sp: context.sp + 1,\n        env: cloneEnv(context.env),\n        action: null,\n      });\n\n      return buildSequence(\n        [op.PUSH_EMPTY_ARRAY],\n        expressionCode,\n        buildAppendLoop(expressionCode),\n        [op.POP]\n      );\n    },\n\n    one_or_more(node, context) {\n      const expressionCode = generate(node.expression, {\n        sp: context.sp + 1,\n        env: cloneEnv(context.env),\n        action: null,\n      });\n\n      return buildSequence(\n        [op.PUSH_EMPTY_ARRAY],\n        expressionCode,\n        buildCondition(\n          // Condition depends on the expression match, not the node match\n          node.expression.match | 0,\n          [op.IF_NOT_ERROR],\n          buildSequence(buildAppendLoop(expressionCode), [op.POP]),\n          buildSequence([op.POP], [op.POP], [op.PUSH_FAILED])\n        )\n      );\n    },\n\n    group(node, context) {\n      return generate(node.expression, {\n        sp: context.sp,\n        env: cloneEnv(context.env),\n        action: null,\n      });\n    },\n\n    semantic_and(node, context) {\n      return buildSemanticPredicate(node, false, context);\n    },\n\n    semantic_not(node, context) {\n      return buildSemanticPredicate(node, true, context);\n    },\n\n    rule_ref(node) {\n      return [op.RULE, asts.indexOfRule(ast, node.name)];\n    },\n\n    literal(node) {\n      if (node.value.length > 0) {\n        const match = node.match | 0;\n        // String only required if condition is generated or string is\n        // case-sensitive and node always match\n        const needConst = match === SOMETIMES_MATCH\n                      || (match === ALWAYS_MATCH && !node.ignoreCase);\n        const stringIndex = needConst\n          ? addLiteralConst(\n            node.ignoreCase ? node.value.toLowerCase() : node.value\n          )\n          : null;\n        // Expectation not required if node always match\n        const expectedIndex = (match !== ALWAYS_MATCH)\n          ? addExpectedConst({\n            type: \"literal\",\n            value: node.value,\n            ignoreCase: node.ignoreCase,\n          })\n          : null;\n\n        // For case-sensitive strings the value must match the beginning of the\n        // remaining input exactly. As a result, we can use |ACCEPT_STRING| and\n        // save one |substr| call that would be needed if we used |ACCEPT_N|.\n        return buildCondition(\n          match,\n          node.ignoreCase\n            ? [op.MATCH_STRING_IC, stringIndex]\n            : [op.MATCH_STRING, stringIndex],\n          node.ignoreCase\n            ? [op.ACCEPT_N, node.value.length]\n            : [op.ACCEPT_STRING, stringIndex],\n          [op.FAIL, expectedIndex]\n        );\n      }\n\n      return [op.PUSH_EMPTY_STRING];\n    },\n\n    class(node) {\n      const match = node.match | 0;\n      // Character class constant only required if condition is generated\n      const classIndex = match === SOMETIMES_MATCH ? addClassConst(node) : null;\n      // Expectation not required if node always match\n      const expectedIndex = (match !== ALWAYS_MATCH)\n        ? addExpectedConst({\n          type: \"class\",\n          value: node.parts,\n          inverted: node.inverted,\n          ignoreCase: node.ignoreCase,\n        })\n        : null;\n\n      return buildCondition(\n        match,\n        [op.MATCH_CHAR_CLASS, classIndex],\n        [op.ACCEPT_N, 1],\n        [op.FAIL, expectedIndex]\n      );\n    },\n\n    any(node) {\n      const match = node.match | 0;\n      // Expectation not required if node always match\n      const expectedIndex = (match !== ALWAYS_MATCH)\n        ? addExpectedConst({\n          type: \"any\",\n        })\n        : null;\n\n      return buildCondition(\n        match,\n        [op.MATCH_ANY],\n        [op.ACCEPT_N, 1],\n        [op.FAIL, expectedIndex]\n      );\n    },\n  });\n\n  generate(ast);\n}\n\nmodule.exports = generateBytecode;\n","\"use strict\";\n\n/** Utility class that helps generating code for C-like languages. */\nclass Stack {\n  /**\n   * Constructs the helper for tracking variable slots of the stack virtual machine\n   *\n   * @param {string} ruleName The name of rule that will be used in error messages\n   * @param {string} varName The prefix for generated names of variables\n   * @param {string} type The type of the variables. For JavaScript there are `var` or `let`\n   */\n  constructor(ruleName, varName, type) {\n    /** Last used variable in the stack. */\n    this.sp       = -1;\n    /** Maximum stack size. */\n    this.maxSp    = -1;\n    this.varName  = varName;\n    this.ruleName = ruleName;\n    this.type     = type;\n  }\n\n  /**\n   * Returns name of the variable at the index `i`.\n   *\n   * @param {number} i Index for which name must be generated\n   * @return {string} Generated name\n   *\n   * @throws {RangeError} If `i < 0`, which means a stack underflow (there are more `pop`s than `push`es)\n   */\n  name(i) {\n    if (i < 0) {\n      throw new RangeError(\n        `Rule '${this.ruleName}': The variable stack underflow: attempt to use a variable '${this.varName}<x>' at an index ${i}`\n      );\n    }\n\n    return this.varName + i;\n  }\n\n  /**\n   * Assigns `exprCode` to the new variable in the stack, returns generated code.\n   * As the result, the size of a stack increases on 1.\n   *\n   * @param {string} exprCode Any expression code that must be assigned to the new variable in the stack\n   * @return {string} Assignment code\n   */\n  push(exprCode) {\n    const code = this.name(++this.sp) + \" = \" + exprCode + \";\";\n\n    if (this.sp > this.maxSp) { this.maxSp = this.sp; }\n\n    return code;\n  }\n\n  /**\n   * Returns name or `n` names of the variable(s) from the top of the stack.\n   *\n   * @param {number} [n=1] Quantity of variables, which need to be removed from the stack\n   * @return {string|string[]} Generated name(s). If `n > 1` than array has length of `n`\n   *\n   * @throws {RangeError} If the stack underflow (there are more `pop`s than `push`es)\n   */\n  pop(n) {\n    if (n !== undefined) {\n      this.sp -= n;\n\n      return Array.from({ length: n }, (v, i) => this.name(this.sp + 1 + i));\n    }\n\n    return this.name(this.sp--);\n  }\n\n  /**\n   * Returns name of the first free variable. The same as `index(0)`.\n   *\n   * @return {string} Generated name\n   *\n   * @throws {RangeError} If the stack is empty (there was no `push`'s yet)\n   */\n  top() { return this.name(this.sp); }\n\n  /**\n   * Returns name of the variable at index `i`.\n   *\n   * @param {number} [i] Index of the variable from top of the stack\n   * @return {string} Generated name\n   *\n   * @throws {RangeError} If `i < 0` or more than the stack size\n   */\n  index(i) {\n    if (i < 0) {\n      throw new RangeError(\n        `Rule '${this.ruleName}': The variable stack overflow: attempt to get a variable at a negative index ${i}`\n      );\n    }\n\n    return this.name(this.sp - i);\n  }\n\n  /**\n   * Returns variable name that contains result (bottom of the stack).\n   *\n   * @return {string} Generated name\n   *\n   * @throws {RangeError} If the stack is empty (there was no `push`es yet)\n   */\n  result() {\n    if (this.maxSp < 0) {\n      throw new RangeError(\n        `Rule '${this.ruleName}': The variable stack is empty, can't get the result'`\n      );\n    }\n\n    return this.name(0);\n  }\n\n  /**\n   * Returns defines of all used variables.\n   *\n   * @return {string} Generated define variable expression with the type `this.type`.\n   *         If the stack is empty, returns empty string\n   */\n  defines() {\n    if (this.maxSp < 0) {\n      return \"\";\n    }\n\n    return this.type + \" \" + Array.from({ length: this.maxSp + 1 }, (v, i) => this.name(i)).join(\", \") + \";\";\n  }\n\n  /**\n   * Checks that code in the `generateIf` and `generateElse` move the stack pointer in the same way.\n   *\n   * @param {number} pos Opcode number for error messages\n   * @param {function()} generateIf First function that works with this stack\n   * @param {function()} [generateElse] Second function that works with this stack\n   * @return {undefined}\n   *\n   * @throws {Error} If `generateElse` is defined and the stack pointer moved differently in the\n   *         `generateIf` and `generateElse`\n   */\n  checkedIf(pos, generateIf, generateElse) {\n    const baseSp = this.sp;\n\n    generateIf();\n\n    if (generateElse) {\n      const thenSp = this.sp;\n\n      this.sp = baseSp;\n      generateElse();\n\n      if (thenSp !== this.sp) {\n        throw new Error(\n          \"Rule '\" + this.ruleName + \"', position \" + pos + \": \"\n          + \"Branches of a condition can't move the stack pointer differently \"\n          + \"(before: \" + baseSp + \", after then: \" + thenSp + \", after else: \" + this.sp + \").\"\n        );\n      }\n    }\n  }\n\n  /**\n   * Checks that code in the `generateBody` do not move stack pointer.\n   *\n   * @param {number} pos Opcode number for error messages\n   * @param {function()} generateBody Function that works with this stack\n   * @return {undefined}\n   *\n   * @throws {Error} If `generateBody` move the stack pointer (if it contains unbalanced `push`es and `pop`s)\n   */\n  checkedLoop(pos, generateBody) {\n    const baseSp = this.sp;\n\n    generateBody();\n\n    if (baseSp !== this.sp) {\n      throw new Error(\n        \"Rule '\" + this.ruleName + \"', position \" + pos + \": \"\n        + \"Body of a loop can't move the stack pointer \"\n        + \"(before: \" + baseSp + \", after: \" + this.sp + \").\"\n      );\n    }\n  }\n}\n\nmodule.exports = Stack;\n","\n// This file is generated.\n// Do not edit it!  Your work will be overwritten.\n//\n// Instead, please look at ./tools/set_version.js\n\n\"use strict\";\n\nmodule.exports = \"2.0.1\";\n","\"use strict\";\n\nfunction hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\nexports.hex = hex;\n\nfunction stringEscape(s) {\n  // ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n  // literal except for the closing quote character, backslash, carriage\n  // return, line separator, paragraph separator, and line feed. Any character\n  // may appear in the form of an escape sequence.\n  //\n  // For portability, we also escape all control and non-ASCII characters.\n  return s\n    .replace(/\\\\/g,   \"\\\\\\\\\")   // Backslash\n    .replace(/\"/g,    \"\\\\\\\"\")   // Closing double quote\n    .replace(/\\0/g,   \"\\\\0\")    // Null\n    .replace(/\\x08/g, \"\\\\b\")    // Backspace\n    .replace(/\\t/g,   \"\\\\t\")    // Horizontal tab\n    .replace(/\\n/g,   \"\\\\n\")    // Line feed\n    .replace(/\\v/g,   \"\\\\v\")    // Vertical tab\n    .replace(/\\f/g,   \"\\\\f\")    // Form feed\n    .replace(/\\r/g,   \"\\\\r\")    // Carriage return\n    .replace(/[\\x00-\\x0F]/g,          ch => \"\\\\x0\" + hex(ch))\n    .replace(/[\\x10-\\x1F\\x7F-\\xFF]/g, ch => \"\\\\x\"  + hex(ch))\n    .replace(/[\\u0100-\\u0FFF]/g,      ch => \"\\\\u0\" + hex(ch))\n    .replace(/[\\u1000-\\uFFFF]/g,      ch => \"\\\\u\"  + hex(ch));\n}\nexports.stringEscape = stringEscape;\n\nfunction regexpClassEscape(s) {\n  // Based on ECMA-262, 5th ed., 7.8.5 & 15.10.1.\n  //\n  // For portability, we also escape all control and non-ASCII characters.\n  return s\n    .replace(/\\\\/g,   \"\\\\\\\\\")   // Backslash\n    .replace(/\\//g,   \"\\\\/\")    // Closing slash\n    .replace(/]/g,    \"\\\\]\")    // Closing bracket\n    .replace(/\\^/g,   \"\\\\^\")    // Caret\n    .replace(/-/g,    \"\\\\-\")    // Dash\n    .replace(/\\0/g,   \"\\\\0\")    // Null\n    .replace(/\\x08/g, \"\\\\b\")    // Backspace\n    .replace(/\\t/g,   \"\\\\t\")    // Horizontal tab\n    .replace(/\\n/g,   \"\\\\n\")    // Line feed\n    .replace(/\\v/g,   \"\\\\v\")    // Vertical tab\n    .replace(/\\f/g,   \"\\\\f\")    // Form feed\n    .replace(/\\r/g,   \"\\\\r\")    // Carriage return\n    .replace(/[\\x00-\\x0F]/g,          ch => \"\\\\x0\" + hex(ch))\n    .replace(/[\\x10-\\x1F\\x7F-\\xFF]/g, ch => \"\\\\x\"  + hex(ch))\n    .replace(/[\\u0100-\\u0FFF]/g,      ch => \"\\\\u0\" + hex(ch))\n    .replace(/[\\u1000-\\uFFFF]/g,      ch => \"\\\\u\"  + hex(ch));\n}\nexports.regexpClassEscape = regexpClassEscape;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nconst intToCharMap = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".split(\n  \"\"\n);\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function(number) {\n  if (0 <= number && number < intToCharMap.length) {\n    return intToCharMap[number];\n  }\n  throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n *  * Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n *  * Redistributions in binary form must reproduce the above\n *    copyright notice, this list of conditions and the following\n *    disclaimer in the documentation and/or other materials provided\n *    with the distribution.\n *  * Neither the name of Google Inc. nor the names of its\n *    contributors may be used to endorse or promote products derived\n *    from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nconst base64 = require(\"./base64\");\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n//   Continuation\n//   |    Sign\n//   |    |\n//   V    V\n//   101011\n\nconst VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nconst VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nconst VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nconst VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n  return aValue < 0 ? (-aValue << 1) + 1 : (aValue << 1) + 0;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n  let encoded = \"\";\n  let digit;\n\n  let vlq = toVLQSigned(aValue);\n\n  do {\n    digit = vlq & VLQ_BASE_MASK;\n    vlq >>>= VLQ_BASE_SHIFT;\n    if (vlq > 0) {\n      // There are still more digits in this value, so we must make sure the\n      // continuation bit is marked.\n      digit |= VLQ_CONTINUATION_BIT;\n    }\n    encoded += base64.encode(digit);\n  } while (vlq > 0);\n\n  return encoded;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n  if (aName in aArgs) {\n    return aArgs[aName];\n  } else if (arguments.length === 3) {\n    return aDefaultValue;\n  }\n  throw new Error('\"' + aName + '\" is a required argument.');\n}\nexports.getArg = getArg;\n\nconst supportsNullProto = (function() {\n  const obj = Object.create(null);\n  return !(\"__proto__\" in obj);\n})();\n\nfunction identity(s) {\n  return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return \"$\" + aStr;\n  }\n\n  return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return aStr.slice(1);\n  }\n\n  return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n  if (!s) {\n    return false;\n  }\n\n  const length = s.length;\n\n  if (length < 9 /* \"__proto__\".length */) {\n    return false;\n  }\n\n  /* eslint-disable no-multi-spaces */\n  if (\n    s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n    s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n    s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n    s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n    s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n    s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n    s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n    s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n    s.charCodeAt(length - 9) !== 95 /* '_' */\n  ) {\n    return false;\n  }\n  /* eslint-enable no-multi-spaces */\n\n  for (let i = length - 10; i >= 0; i--) {\n    if (s.charCodeAt(i) !== 36 /* '$' */) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction strcmp(aStr1, aStr2) {\n  if (aStr1 === aStr2) {\n    return 0;\n  }\n\n  if (aStr1 === null) {\n    return 1; // aStr2 !== null\n  }\n\n  if (aStr2 === null) {\n    return -1; // aStr1 !== null\n  }\n\n  if (aStr1 > aStr2) {\n    return 1;\n  }\n\n  return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n  let cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n// We use 'http' as the base here because we want URLs processed relative\n// to the safe base to be treated as \"special\" URLs during parsing using\n// the WHATWG URL parsing. This ensures that backslash normalization\n// applies to the path and such.\nconst PROTOCOL = \"http:\";\nconst PROTOCOL_AND_HOST = `${PROTOCOL}//host`;\n\n/**\n * Make it easy to create small utilities that tweak a URL's path.\n */\nfunction createSafeHandler(cb) {\n  return input => {\n    const type = getURLType(input);\n    const base = buildSafeBase(input);\n    const url = new URL(input, base);\n\n    cb(url);\n\n    const result = url.toString();\n\n    if (type === \"absolute\") {\n      return result;\n    } else if (type === \"scheme-relative\") {\n      return result.slice(PROTOCOL.length);\n    } else if (type === \"path-absolute\") {\n      return result.slice(PROTOCOL_AND_HOST.length);\n    }\n\n    // This assumes that the callback will only change\n    // the path, search and hash values.\n    return computeRelativeURL(base, result);\n  };\n}\n\nfunction withBase(url, base) {\n  return new URL(url, base).toString();\n}\n\nfunction buildUniqueSegment(prefix, str) {\n  let id = 0;\n  do {\n    const ident = prefix + id++;\n    if (str.indexOf(ident) === -1) return ident;\n  } while (true);\n}\n\nfunction buildSafeBase(str) {\n  const maxDotParts = str.split(\"..\").length - 1;\n\n  // If we used a segment that also existed in `str`, then we would be unable\n  // to compute relative paths. For example, if `segment` were just \"a\":\n  //\n  //   const url = \"../../a/\"\n  //   const base = buildSafeBase(url); // http://host/a/a/\n  //   const joined = \"http://host/a/\";\n  //   const result = relative(base, joined);\n  //\n  // Expected: \"../../a/\";\n  // Actual: \"a/\"\n  //\n  const segment = buildUniqueSegment(\"p\", str);\n\n  let base = `${PROTOCOL_AND_HOST}/`;\n  for (let i = 0; i < maxDotParts; i++) {\n    base += `${segment}/`;\n  }\n  return base;\n}\n\nconst ABSOLUTE_SCHEME = /^[A-Za-z0-9\\+\\-\\.]+:/;\nfunction getURLType(url) {\n  if (url[0] === \"/\") {\n    if (url[1] === \"/\") return \"scheme-relative\";\n    return \"path-absolute\";\n  }\n\n  return ABSOLUTE_SCHEME.test(url) ? \"absolute\" : \"path-relative\";\n}\n\n/**\n * Given two URLs that are assumed to be on the same\n * protocol/host/user/password build a relative URL from the\n * path, params, and hash values.\n *\n * @param rootURL The root URL that the target will be relative to.\n * @param targetURL The target that the relative URL points to.\n * @return A rootURL-relative, normalized URL value.\n */\nfunction computeRelativeURL(rootURL, targetURL) {\n  if (typeof rootURL === \"string\") rootURL = new URL(rootURL);\n  if (typeof targetURL === \"string\") targetURL = new URL(targetURL);\n\n  const targetParts = targetURL.pathname.split(\"/\");\n  const rootParts = rootURL.pathname.split(\"/\");\n\n  // If we've got a URL path ending with a \"/\", we remove it since we'd\n  // otherwise be relative to the wrong location.\n  if (rootParts.length > 0 && !rootParts[rootParts.length - 1]) {\n    rootParts.pop();\n  }\n\n  while (\n    targetParts.length > 0 &&\n    rootParts.length > 0 &&\n    targetParts[0] === rootParts[0]\n  ) {\n    targetParts.shift();\n    rootParts.shift();\n  }\n\n  const relativePath = rootParts\n    .map(() => \"..\")\n    .concat(targetParts)\n    .join(\"/\");\n\n  return relativePath + targetURL.search + targetURL.hash;\n}\n\n/**\n * Given a URL, ensure that it is treated as a directory URL.\n *\n * @param url\n * @return A normalized URL value.\n */\nconst ensureDirectory = createSafeHandler(url => {\n  url.pathname = url.pathname.replace(/\\/?$/, \"/\");\n});\n\n/**\n * Normalize a given URL.\n * * Convert backslashes.\n * * Remove any \"..\" and \".\" segments.\n *\n * @param url\n * @return A normalized URL value.\n */\nconst normalize = createSafeHandler(url => {});\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * All returned URLs will be normalized.\n *\n * @param aRoot The root path or URL. Assumed to reference a directory.\n * @param aPath The path or URL to be joined with the root.\n * @return A joined and normalized URL value.\n */\nfunction join(aRoot, aPath) {\n  const pathType = getURLType(aPath);\n  const rootType = getURLType(aRoot);\n\n  aRoot = ensureDirectory(aRoot);\n\n  if (pathType === \"absolute\") {\n    return withBase(aPath, undefined);\n  }\n  if (rootType === \"absolute\") {\n    return withBase(aPath, aRoot);\n  }\n\n  if (pathType === \"scheme-relative\") {\n    return normalize(aPath);\n  }\n  if (rootType === \"scheme-relative\") {\n    return withBase(aPath, withBase(aRoot, PROTOCOL_AND_HOST)).slice(\n      PROTOCOL.length\n    );\n  }\n\n  if (pathType === \"path-absolute\") {\n    return normalize(aPath);\n  }\n  if (rootType === \"path-absolute\") {\n    return withBase(aPath, withBase(aRoot, PROTOCOL_AND_HOST)).slice(\n      PROTOCOL_AND_HOST.length\n    );\n  }\n\n  const base = buildSafeBase(aPath + aRoot);\n  const newPath = withBase(aPath, withBase(aRoot, base));\n  return computeRelativeURL(base, newPath);\n}\nexports.join = join;\n\n/**\n * Make a path relative to a URL or another path. If returning a\n * relative URL is not possible, the original target will be returned.\n * All returned URLs will be normalized.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n * @return A rootURL-relative (if possible), normalized URL value.\n */\nfunction relative(rootURL, targetURL) {\n  const result = relativeIfPossible(rootURL, targetURL);\n\n  return typeof result === \"string\" ? result : normalize(targetURL);\n}\nexports.relative = relative;\n\nfunction relativeIfPossible(rootURL, targetURL) {\n  const urlType = getURLType(rootURL);\n  if (urlType !== getURLType(targetURL)) {\n    return null;\n  }\n\n  const base = buildSafeBase(rootURL + targetURL);\n  const root = new URL(rootURL, base);\n  const target = new URL(targetURL, base);\n\n  try {\n    new URL(\"\", target.toString());\n  } catch (err) {\n    // Bail if the URL doesn't support things being relative to it,\n    // For example, data: and blob: URLs.\n    return null;\n  }\n\n  if (\n    target.protocol !== root.protocol ||\n    target.user !== root.user ||\n    target.password !== root.password ||\n    target.hostname !== root.hostname ||\n    target.port !== root.port\n  ) {\n    return null;\n  }\n\n  return computeRelativeURL(root, target);\n}\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nclass ArraySet {\n  constructor() {\n    this._array = [];\n    this._set = new Map();\n  }\n\n  /**\n   * Static method for creating ArraySet instances from an existing array.\n   */\n  static fromArray(aArray, aAllowDuplicates) {\n    const set = new ArraySet();\n    for (let i = 0, len = aArray.length; i < len; i++) {\n      set.add(aArray[i], aAllowDuplicates);\n    }\n    return set;\n  }\n\n  /**\n   * Return how many unique items are in this ArraySet. If duplicates have been\n   * added, than those do not count towards the size.\n   *\n   * @returns Number\n   */\n  size() {\n    return this._set.size;\n  }\n\n  /**\n   * Add the given string to this set.\n   *\n   * @param String aStr\n   */\n  add(aStr, aAllowDuplicates) {\n    const isDuplicate = this.has(aStr);\n    const idx = this._array.length;\n    if (!isDuplicate || aAllowDuplicates) {\n      this._array.push(aStr);\n    }\n    if (!isDuplicate) {\n      this._set.set(aStr, idx);\n    }\n  }\n\n  /**\n   * Is the given string a member of this set?\n   *\n   * @param String aStr\n   */\n  has(aStr) {\n    return this._set.has(aStr);\n  }\n\n  /**\n   * What is the index of the given string in the array?\n   *\n   * @param String aStr\n   */\n  indexOf(aStr) {\n    const idx = this._set.get(aStr);\n    if (idx >= 0) {\n      return idx;\n    }\n    throw new Error('\"' + aStr + '\" is not in the set.');\n  }\n\n  /**\n   * What is the element at the given index?\n   *\n   * @param Number aIdx\n   */\n  at(aIdx) {\n    if (aIdx >= 0 && aIdx < this._array.length) {\n      return this._array[aIdx];\n    }\n    throw new Error(\"No element indexed by \" + aIdx);\n  }\n\n  /**\n   * Returns the array representation of this set (which has the proper indices\n   * indicated by indexOf). Note that this is a copy of the internal array used\n   * for storing the members so that no one can mess with internal state.\n   */\n  toArray() {\n    return this._array.slice();\n  }\n}\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nconst util = require(\"./util\");\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n  // Optimized for most common case\n  const lineA = mappingA.generatedLine;\n  const lineB = mappingB.generatedLine;\n  const columnA = mappingA.generatedColumn;\n  const columnB = mappingB.generatedColumn;\n  return (\n    lineB > lineA ||\n    (lineB == lineA && columnB >= columnA) ||\n    util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0\n  );\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a negligible overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nclass MappingList {\n  constructor() {\n    this._array = [];\n    this._sorted = true;\n    // Serves as infimum\n    this._last = { generatedLine: -1, generatedColumn: 0 };\n  }\n\n  /**\n   * Iterate through internal items. This method takes the same arguments that\n   * `Array.prototype.forEach` takes.\n   *\n   * NOTE: The order of the mappings is NOT guaranteed.\n   */\n  unsortedForEach(aCallback, aThisArg) {\n    this._array.forEach(aCallback, aThisArg);\n  }\n\n  /**\n   * Add the given source mapping.\n   *\n   * @param Object aMapping\n   */\n  add(aMapping) {\n    if (generatedPositionAfter(this._last, aMapping)) {\n      this._last = aMapping;\n      this._array.push(aMapping);\n    } else {\n      this._sorted = false;\n      this._array.push(aMapping);\n    }\n  }\n\n  /**\n   * Returns the flat, sorted array of mappings. The mappings are sorted by\n   * generated position.\n   *\n   * WARNING: This method returns internal data without copying, for\n   * performance. The return value must NOT be mutated, and should be treated as\n   * an immutable borrow. If you want to take ownership, you must make your own\n   * copy.\n   */\n  toArray() {\n    if (!this._sorted) {\n      this._array.sort(util.compareByGeneratedPositionsInflated);\n      this._sorted = true;\n    }\n    return this._array;\n  }\n}\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nconst base64VLQ = require(\"./base64-vlq\");\nconst util = require(\"./util\");\nconst ArraySet = require(\"./array-set\").ArraySet;\nconst MappingList = require(\"./mapping-list\").MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n *   - file: The filename of the generated source.\n *   - sourceRoot: A root for all relative URLs in this source map.\n */\nclass SourceMapGenerator {\n  constructor(aArgs) {\n    if (!aArgs) {\n      aArgs = {};\n    }\n    this._file = util.getArg(aArgs, \"file\", null);\n    this._sourceRoot = util.getArg(aArgs, \"sourceRoot\", null);\n    this._skipValidation = util.getArg(aArgs, \"skipValidation\", false);\n    this._sources = new ArraySet();\n    this._names = new ArraySet();\n    this._mappings = new MappingList();\n    this._sourcesContents = null;\n  }\n\n  /**\n   * Creates a new SourceMapGenerator based on a SourceMapConsumer\n   *\n   * @param aSourceMapConsumer The SourceMap.\n   */\n  static fromSourceMap(aSourceMapConsumer) {\n    const sourceRoot = aSourceMapConsumer.sourceRoot;\n    const generator = new SourceMapGenerator({\n      file: aSourceMapConsumer.file,\n      sourceRoot\n    });\n    aSourceMapConsumer.eachMapping(function(mapping) {\n      const newMapping = {\n        generated: {\n          line: mapping.generatedLine,\n          column: mapping.generatedColumn\n        }\n      };\n\n      if (mapping.source != null) {\n        newMapping.source = mapping.source;\n        if (sourceRoot != null) {\n          newMapping.source = util.relative(sourceRoot, newMapping.source);\n        }\n\n        newMapping.original = {\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        };\n\n        if (mapping.name != null) {\n          newMapping.name = mapping.name;\n        }\n      }\n\n      generator.addMapping(newMapping);\n    });\n    aSourceMapConsumer.sources.forEach(function(sourceFile) {\n      let sourceRelative = sourceFile;\n      if (sourceRoot != null) {\n        sourceRelative = util.relative(sourceRoot, sourceFile);\n      }\n\n      if (!generator._sources.has(sourceRelative)) {\n        generator._sources.add(sourceRelative);\n      }\n\n      const content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        generator.setSourceContent(sourceFile, content);\n      }\n    });\n    return generator;\n  }\n\n  /**\n   * Add a single mapping from original source line and column to the generated\n   * source's line and column for this source map being created. The mapping\n   * object should have the following properties:\n   *\n   *   - generated: An object with the generated line and column positions.\n   *   - original: An object with the original line and column positions.\n   *   - source: The original source file (relative to the sourceRoot).\n   *   - name: An optional original token name for this mapping.\n   */\n  addMapping(aArgs) {\n    const generated = util.getArg(aArgs, \"generated\");\n    const original = util.getArg(aArgs, \"original\", null);\n    let source = util.getArg(aArgs, \"source\", null);\n    let name = util.getArg(aArgs, \"name\", null);\n\n    if (!this._skipValidation) {\n      this._validateMapping(generated, original, source, name);\n    }\n\n    if (source != null) {\n      source = String(source);\n      if (!this._sources.has(source)) {\n        this._sources.add(source);\n      }\n    }\n\n    if (name != null) {\n      name = String(name);\n      if (!this._names.has(name)) {\n        this._names.add(name);\n      }\n    }\n\n    this._mappings.add({\n      generatedLine: generated.line,\n      generatedColumn: generated.column,\n      originalLine: original && original.line,\n      originalColumn: original && original.column,\n      source,\n      name\n    });\n  }\n\n  /**\n   * Set the source content for a source file.\n   */\n  setSourceContent(aSourceFile, aSourceContent) {\n    let source = aSourceFile;\n    if (this._sourceRoot != null) {\n      source = util.relative(this._sourceRoot, source);\n    }\n\n    if (aSourceContent != null) {\n      // Add the source content to the _sourcesContents map.\n      // Create a new _sourcesContents map if the property is null.\n      if (!this._sourcesContents) {\n        this._sourcesContents = Object.create(null);\n      }\n      this._sourcesContents[util.toSetString(source)] = aSourceContent;\n    } else if (this._sourcesContents) {\n      // Remove the source file from the _sourcesContents map.\n      // If the _sourcesContents map is empty, set the property to null.\n      delete this._sourcesContents[util.toSetString(source)];\n      if (Object.keys(this._sourcesContents).length === 0) {\n        this._sourcesContents = null;\n      }\n    }\n  }\n\n  /**\n   * Applies the mappings of a sub-source-map for a specific source file to the\n   * source map being generated. Each mapping to the supplied source file is\n   * rewritten using the supplied source map. Note: The resolution for the\n   * resulting mappings is the minimium of this map and the supplied map.\n   *\n   * @param aSourceMapConsumer The source map to be applied.\n   * @param aSourceFile Optional. The filename of the source file.\n   *        If omitted, SourceMapConsumer's file property will be used.\n   * @param aSourceMapPath Optional. The dirname of the path to the source map\n   *        to be applied. If relative, it is relative to the SourceMapConsumer.\n   *        This parameter is needed when the two source maps aren't in the same\n   *        directory, and the source map to be applied contains relative source\n   *        paths. If so, those relative source paths need to be rewritten\n   *        relative to the SourceMapGenerator.\n   */\n  applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n    let sourceFile = aSourceFile;\n    // If aSourceFile is omitted, we will use the file property of the SourceMap\n    if (aSourceFile == null) {\n      if (aSourceMapConsumer.file == null) {\n        throw new Error(\n          \"SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, \" +\n            'or the source map\\'s \"file\" property. Both were omitted.'\n        );\n      }\n      sourceFile = aSourceMapConsumer.file;\n    }\n    const sourceRoot = this._sourceRoot;\n    // Make \"sourceFile\" relative if an absolute Url is passed.\n    if (sourceRoot != null) {\n      sourceFile = util.relative(sourceRoot, sourceFile);\n    }\n    // Applying the SourceMap can add and remove items from the sources and\n    // the names array.\n    const newSources =\n      this._mappings.toArray().length > 0 ? new ArraySet() : this._sources;\n    const newNames = new ArraySet();\n\n    // Find mappings for the \"sourceFile\"\n    this._mappings.unsortedForEach(function(mapping) {\n      if (mapping.source === sourceFile && mapping.originalLine != null) {\n        // Check if it can be mapped by the source map, then update the mapping.\n        const original = aSourceMapConsumer.originalPositionFor({\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        });\n        if (original.source != null) {\n          // Copy mapping\n          mapping.source = original.source;\n          if (aSourceMapPath != null) {\n            mapping.source = util.join(aSourceMapPath, mapping.source);\n          }\n          if (sourceRoot != null) {\n            mapping.source = util.relative(sourceRoot, mapping.source);\n          }\n          mapping.originalLine = original.line;\n          mapping.originalColumn = original.column;\n          if (original.name != null) {\n            mapping.name = original.name;\n          }\n        }\n      }\n\n      const source = mapping.source;\n      if (source != null && !newSources.has(source)) {\n        newSources.add(source);\n      }\n\n      const name = mapping.name;\n      if (name != null && !newNames.has(name)) {\n        newNames.add(name);\n      }\n    }, this);\n    this._sources = newSources;\n    this._names = newNames;\n\n    // Copy sourcesContents of applied map.\n    aSourceMapConsumer.sources.forEach(function(srcFile) {\n      const content = aSourceMapConsumer.sourceContentFor(srcFile);\n      if (content != null) {\n        if (aSourceMapPath != null) {\n          srcFile = util.join(aSourceMapPath, srcFile);\n        }\n        if (sourceRoot != null) {\n          srcFile = util.relative(sourceRoot, srcFile);\n        }\n        this.setSourceContent(srcFile, content);\n      }\n    }, this);\n  }\n\n  /**\n   * A mapping can have one of the three levels of data:\n   *\n   *   1. Just the generated position.\n   *   2. The Generated position, original position, and original source.\n   *   3. Generated and original position, original source, as well as a name\n   *      token.\n   *\n   * To maintain consistency, we validate that any new mapping being added falls\n   * in to one of these categories.\n   */\n  _validateMapping(aGenerated, aOriginal, aSource, aName) {\n    // When aOriginal is truthy but has empty values for .line and .column,\n    // it is most likely a programmer error. In this case we throw a very\n    // specific error message to try to guide them the right way.\n    // For example: https://github.com/Polymer/polymer-bundler/pull/519\n    if (\n      aOriginal &&\n      typeof aOriginal.line !== \"number\" &&\n      typeof aOriginal.column !== \"number\"\n    ) {\n      throw new Error(\n        \"original.line and original.column are not numbers -- you probably meant to omit \" +\n          \"the original mapping entirely and only map the generated position. If so, pass \" +\n          \"null for the original mapping instead of an object with empty or null values.\"\n      );\n    }\n\n    if (\n      aGenerated &&\n      \"line\" in aGenerated &&\n      \"column\" in aGenerated &&\n      aGenerated.line > 0 &&\n      aGenerated.column >= 0 &&\n      !aOriginal &&\n      !aSource &&\n      !aName\n    ) {\n      // Case 1.\n    } else if (\n      aGenerated &&\n      \"line\" in aGenerated &&\n      \"column\" in aGenerated &&\n      aOriginal &&\n      \"line\" in aOriginal &&\n      \"column\" in aOriginal &&\n      aGenerated.line > 0 &&\n      aGenerated.column >= 0 &&\n      aOriginal.line > 0 &&\n      aOriginal.column >= 0 &&\n      aSource\n    ) {\n      // Cases 2 and 3.\n    } else {\n      throw new Error(\n        \"Invalid mapping: \" +\n          JSON.stringify({\n            generated: aGenerated,\n            source: aSource,\n            original: aOriginal,\n            name: aName\n          })\n      );\n    }\n  }\n\n  /**\n   * Serialize the accumulated mappings in to the stream of base 64 VLQs\n   * specified by the source map format.\n   */\n  _serializeMappings() {\n    let previousGeneratedColumn = 0;\n    let previousGeneratedLine = 1;\n    let previousOriginalColumn = 0;\n    let previousOriginalLine = 0;\n    let previousName = 0;\n    let previousSource = 0;\n    let result = \"\";\n    let next;\n    let mapping;\n    let nameIdx;\n    let sourceIdx;\n\n    const mappings = this._mappings.toArray();\n    for (let i = 0, len = mappings.length; i < len; i++) {\n      mapping = mappings[i];\n      next = \"\";\n\n      if (mapping.generatedLine !== previousGeneratedLine) {\n        previousGeneratedColumn = 0;\n        while (mapping.generatedLine !== previousGeneratedLine) {\n          next += \";\";\n          previousGeneratedLine++;\n        }\n      } else if (i > 0) {\n        if (\n          !util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])\n        ) {\n          continue;\n        }\n        next += \",\";\n      }\n\n      next += base64VLQ.encode(\n        mapping.generatedColumn - previousGeneratedColumn\n      );\n      previousGeneratedColumn = mapping.generatedColumn;\n\n      if (mapping.source != null) {\n        sourceIdx = this._sources.indexOf(mapping.source);\n        next += base64VLQ.encode(sourceIdx - previousSource);\n        previousSource = sourceIdx;\n\n        // lines are stored 0-based in SourceMap spec version 3\n        next += base64VLQ.encode(\n          mapping.originalLine - 1 - previousOriginalLine\n        );\n        previousOriginalLine = mapping.originalLine - 1;\n\n        next += base64VLQ.encode(\n          mapping.originalColumn - previousOriginalColumn\n        );\n        previousOriginalColumn = mapping.originalColumn;\n\n        if (mapping.name != null) {\n          nameIdx = this._names.indexOf(mapping.name);\n          next += base64VLQ.encode(nameIdx - previousName);\n          previousName = nameIdx;\n        }\n      }\n\n      result += next;\n    }\n\n    return result;\n  }\n\n  _generateSourcesContent(aSources, aSourceRoot) {\n    return aSources.map(function(source) {\n      if (!this._sourcesContents) {\n        return null;\n      }\n      if (aSourceRoot != null) {\n        source = util.relative(aSourceRoot, source);\n      }\n      const key = util.toSetString(source);\n      return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n        ? this._sourcesContents[key]\n        : null;\n    }, this);\n  }\n\n  /**\n   * Externalize the source map.\n   */\n  toJSON() {\n    const map = {\n      version: this._version,\n      sources: this._sources.toArray(),\n      names: this._names.toArray(),\n      mappings: this._serializeMappings()\n    };\n    if (this._file != null) {\n      map.file = this._file;\n    }\n    if (this._sourceRoot != null) {\n      map.sourceRoot = this._sourceRoot;\n    }\n    if (this._sourcesContents) {\n      map.sourcesContent = this._generateSourcesContent(\n        map.sources,\n        map.sourceRoot\n      );\n    }\n\n    return map;\n  }\n\n  /**\n   * Render the source map being generated to a string.\n   */\n  toString() {\n    return JSON.stringify(this.toJSON());\n  }\n}\n\nSourceMapGenerator.prototype._version = 3;\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nconst SourceMapGenerator = require(\"./source-map-generator\").SourceMapGenerator;\nconst util = require(\"./util\");\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nconst REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nconst NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nconst isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n *        generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nclass SourceNode {\n  constructor(aLine, aColumn, aSource, aChunks, aName) {\n    this.children = [];\n    this.sourceContents = {};\n    this.line = aLine == null ? null : aLine;\n    this.column = aColumn == null ? null : aColumn;\n    this.source = aSource == null ? null : aSource;\n    this.name = aName == null ? null : aName;\n    this[isSourceNode] = true;\n    if (aChunks != null) this.add(aChunks);\n  }\n\n  /**\n   * Creates a SourceNode from generated code and a SourceMapConsumer.\n   *\n   * @param aGeneratedCode The generated code\n   * @param aSourceMapConsumer The SourceMap for the generated code\n   * @param aRelativePath Optional. The path that relative sources in the\n   *        SourceMapConsumer should be relative to.\n   */\n  static fromStringWithSourceMap(\n    aGeneratedCode,\n    aSourceMapConsumer,\n    aRelativePath\n  ) {\n    // The SourceNode we want to fill with the generated code\n    // and the SourceMap\n    const node = new SourceNode();\n\n    // All even indices of this array are one line of the generated code,\n    // while all odd indices are the newlines between two adjacent lines\n    // (since `REGEX_NEWLINE` captures its match).\n    // Processed fragments are accessed by calling `shiftNextLine`.\n    const remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n    let remainingLinesIndex = 0;\n    const shiftNextLine = function() {\n      const lineContents = getNextLine();\n      // The last line of a file might not have a newline.\n      const newLine = getNextLine() || \"\";\n      return lineContents + newLine;\n\n      function getNextLine() {\n        return remainingLinesIndex < remainingLines.length\n          ? remainingLines[remainingLinesIndex++]\n          : undefined;\n      }\n    };\n\n    // We need to remember the position of \"remainingLines\"\n    let lastGeneratedLine = 1,\n      lastGeneratedColumn = 0;\n\n    // The generate SourceNodes we need a code range.\n    // To extract it current and last mapping is used.\n    // Here we store the last mapping.\n    let lastMapping = null;\n    let nextLine;\n\n    aSourceMapConsumer.eachMapping(function(mapping) {\n      if (lastMapping !== null) {\n        // We add the code from \"lastMapping\" to \"mapping\":\n        // First check if there is a new line in between.\n        if (lastGeneratedLine < mapping.generatedLine) {\n          // Associate first line with \"lastMapping\"\n          addMappingWithCode(lastMapping, shiftNextLine());\n          lastGeneratedLine++;\n          lastGeneratedColumn = 0;\n          // The remaining code is added without mapping\n        } else {\n          // There is no new line in between.\n          // Associate the code between \"lastGeneratedColumn\" and\n          // \"mapping.generatedColumn\" with \"lastMapping\"\n          nextLine = remainingLines[remainingLinesIndex] || \"\";\n          const code = nextLine.substr(\n            0,\n            mapping.generatedColumn - lastGeneratedColumn\n          );\n          remainingLines[remainingLinesIndex] = nextLine.substr(\n            mapping.generatedColumn - lastGeneratedColumn\n          );\n          lastGeneratedColumn = mapping.generatedColumn;\n          addMappingWithCode(lastMapping, code);\n          // No more remaining code, continue\n          lastMapping = mapping;\n          return;\n        }\n      }\n      // We add the generated code until the first mapping\n      // to the SourceNode without any mapping.\n      // Each line is added as separate string.\n      while (lastGeneratedLine < mapping.generatedLine) {\n        node.add(shiftNextLine());\n        lastGeneratedLine++;\n      }\n      if (lastGeneratedColumn < mapping.generatedColumn) {\n        nextLine = remainingLines[remainingLinesIndex] || \"\";\n        node.add(nextLine.substr(0, mapping.generatedColumn));\n        remainingLines[remainingLinesIndex] = nextLine.substr(\n          mapping.generatedColumn\n        );\n        lastGeneratedColumn = mapping.generatedColumn;\n      }\n      lastMapping = mapping;\n    }, this);\n    // We have processed all mappings.\n    if (remainingLinesIndex < remainingLines.length) {\n      if (lastMapping) {\n        // Associate the remaining code in the current line with \"lastMapping\"\n        addMappingWithCode(lastMapping, shiftNextLine());\n      }\n      // and add the remaining lines without any mapping\n      node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n    }\n\n    // Copy sourcesContent into SourceNode\n    aSourceMapConsumer.sources.forEach(function(sourceFile) {\n      const content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        if (aRelativePath != null) {\n          sourceFile = util.join(aRelativePath, sourceFile);\n        }\n        node.setSourceContent(sourceFile, content);\n      }\n    });\n\n    return node;\n\n    function addMappingWithCode(mapping, code) {\n      if (mapping === null || mapping.source === undefined) {\n        node.add(code);\n      } else {\n        const source = aRelativePath\n          ? util.join(aRelativePath, mapping.source)\n          : mapping.source;\n        node.add(\n          new SourceNode(\n            mapping.originalLine,\n            mapping.originalColumn,\n            source,\n            code,\n            mapping.name\n          )\n        );\n      }\n    }\n  }\n\n  /**\n   * Add a chunk of generated JS to this source node.\n   *\n   * @param aChunk A string snippet of generated JS code, another instance of\n   *        SourceNode, or an array where each member is one of those things.\n   */\n  add(aChunk) {\n    if (Array.isArray(aChunk)) {\n      aChunk.forEach(function(chunk) {\n        this.add(chunk);\n      }, this);\n    } else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n      if (aChunk) {\n        this.children.push(aChunk);\n      }\n    } else {\n      throw new TypeError(\n        \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" +\n          aChunk\n      );\n    }\n    return this;\n  }\n\n  /**\n   * Add a chunk of generated JS to the beginning of this source node.\n   *\n   * @param aChunk A string snippet of generated JS code, another instance of\n   *        SourceNode, or an array where each member is one of those things.\n   */\n  prepend(aChunk) {\n    if (Array.isArray(aChunk)) {\n      for (let i = aChunk.length - 1; i >= 0; i--) {\n        this.prepend(aChunk[i]);\n      }\n    } else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n      this.children.unshift(aChunk);\n    } else {\n      throw new TypeError(\n        \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" +\n          aChunk\n      );\n    }\n    return this;\n  }\n\n  /**\n   * Walk over the tree of JS snippets in this node and its children. The\n   * walking function is called once for each snippet of JS and is passed that\n   * snippet and the its original associated source's line/column location.\n   *\n   * @param aFn The traversal function.\n   */\n  walk(aFn) {\n    let chunk;\n    for (let i = 0, len = this.children.length; i < len; i++) {\n      chunk = this.children[i];\n      if (chunk[isSourceNode]) {\n        chunk.walk(aFn);\n      } else if (chunk !== \"\") {\n        aFn(chunk, {\n          source: this.source,\n          line: this.line,\n          column: this.column,\n          name: this.name\n        });\n      }\n    }\n  }\n\n  /**\n   * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n   * each of `this.children`.\n   *\n   * @param aSep The separator.\n   */\n  join(aSep) {\n    let newChildren;\n    let i;\n    const len = this.children.length;\n    if (len > 0) {\n      newChildren = [];\n      for (i = 0; i < len - 1; i++) {\n        newChildren.push(this.children[i]);\n        newChildren.push(aSep);\n      }\n      newChildren.push(this.children[i]);\n      this.children = newChildren;\n    }\n    return this;\n  }\n\n  /**\n   * Call String.prototype.replace on the very right-most source snippet. Useful\n   * for trimming whitespace from the end of a source node, etc.\n   *\n   * @param aPattern The pattern to replace.\n   * @param aReplacement The thing to replace the pattern with.\n   */\n  replaceRight(aPattern, aReplacement) {\n    const lastChild = this.children[this.children.length - 1];\n    if (lastChild[isSourceNode]) {\n      lastChild.replaceRight(aPattern, aReplacement);\n    } else if (typeof lastChild === \"string\") {\n      this.children[this.children.length - 1] = lastChild.replace(\n        aPattern,\n        aReplacement\n      );\n    } else {\n      this.children.push(\"\".replace(aPattern, aReplacement));\n    }\n    return this;\n  }\n\n  /**\n   * Set the source content for a source file. This will be added to the SourceMapGenerator\n   * in the sourcesContent field.\n   *\n   * @param aSourceFile The filename of the source file\n   * @param aSourceContent The content of the source file\n   */\n  setSourceContent(aSourceFile, aSourceContent) {\n    this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n  }\n\n  /**\n   * Walk over the tree of SourceNodes. The walking function is called for each\n   * source file content and is passed the filename and source content.\n   *\n   * @param aFn The traversal function.\n   */\n  walkSourceContents(aFn) {\n    for (let i = 0, len = this.children.length; i < len; i++) {\n      if (this.children[i][isSourceNode]) {\n        this.children[i].walkSourceContents(aFn);\n      }\n    }\n\n    const sources = Object.keys(this.sourceContents);\n    for (let i = 0, len = sources.length; i < len; i++) {\n      aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n    }\n  }\n\n  /**\n   * Return the string representation of this source node. Walks over the tree\n   * and concatenates all the various snippets together to one string.\n   */\n  toString() {\n    let str = \"\";\n    this.walk(function(chunk) {\n      str += chunk;\n    });\n    return str;\n  }\n\n  /**\n   * Returns the string representation of this source node along with a source\n   * map.\n   */\n  toStringWithSourceMap(aArgs) {\n    const generated = {\n      code: \"\",\n      line: 1,\n      column: 0\n    };\n    const map = new SourceMapGenerator(aArgs);\n    let sourceMappingActive = false;\n    let lastOriginalSource = null;\n    let lastOriginalLine = null;\n    let lastOriginalColumn = null;\n    let lastOriginalName = null;\n    this.walk(function(chunk, original) {\n      generated.code += chunk;\n      if (\n        original.source !== null &&\n        original.line !== null &&\n        original.column !== null\n      ) {\n        if (\n          lastOriginalSource !== original.source ||\n          lastOriginalLine !== original.line ||\n          lastOriginalColumn !== original.column ||\n          lastOriginalName !== original.name\n        ) {\n          map.addMapping({\n            source: original.source,\n            original: {\n              line: original.line,\n              column: original.column\n            },\n            generated: {\n              line: generated.line,\n              column: generated.column\n            },\n            name: original.name\n          });\n        }\n        lastOriginalSource = original.source;\n        lastOriginalLine = original.line;\n        lastOriginalColumn = original.column;\n        lastOriginalName = original.name;\n        sourceMappingActive = true;\n      } else if (sourceMappingActive) {\n        map.addMapping({\n          generated: {\n            line: generated.line,\n            column: generated.column\n          }\n        });\n        lastOriginalSource = null;\n        sourceMappingActive = false;\n      }\n      for (let idx = 0, length = chunk.length; idx < length; idx++) {\n        if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n          generated.line++;\n          generated.column = 0;\n          // Mappings end at eol\n          if (idx + 1 === length) {\n            lastOriginalSource = null;\n            sourceMappingActive = false;\n          } else if (sourceMappingActive) {\n            map.addMapping({\n              source: original.source,\n              original: {\n                line: original.line,\n                column: original.column\n              },\n              generated: {\n                line: generated.line,\n                column: generated.column\n              },\n              name: original.name\n            });\n          }\n        } else {\n          generated.column++;\n        }\n      }\n    });\n    this.walkSourceContents(function(sourceFile, sourceContent) {\n      map.setSourceContent(sourceFile, sourceContent);\n    });\n\n    return { code: generated.code, map };\n  }\n}\n\nexports.SourceNode = SourceNode;\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require(\"./lib/source-map-generator\").SourceMapGenerator;\nexports.SourceNode = require(\"./lib/source-node\").SourceNode;\n","\"use strict\";\n\nconst asts = require(\"../asts\");\nconst op = require(\"../opcodes\");\nconst Stack = require(\"../stack\");\nconst VERSION = require(\"../../version\");\nconst { stringEscape, regexpClassEscape } = require(\"../utils\");\nconst { SourceNode } = require(\"source-map-generator\");\n\n/**\n * Converts source text from the grammar into the `source-map` object\n *\n * @param {string} code Multiline string with source code\n * @param {import(\"../peg\").Location} location\n *        Location that represents code block in the grammar\n * @param {string?} name Name of the code chunk\n *\n * @returns {SourceNode} New node that represents code chunk.\n *          Code will be splitted by lines if necessary\n */\nfunction toSourceNode(code, location, name) {\n  const line = location.start.line;\n  // `source-map` columns are 0-based, peggy columns is 1-based\n  const column = location.start.column - 1;\n  const lines = code.split(\"\\n\");\n\n  if (lines.length === 1) {\n    return new SourceNode(\n      line, column, location.source, code, name\n    );\n  }\n\n  return new SourceNode(\n    null, null, location.source, lines.map((l, i) => new SourceNode(\n      line + i,\n      i === 0 ? column : 0,\n      location.source,\n      i === lines.length - 1 ? l : [l, \"\\n\"],\n      name\n    ))\n  );\n}\n\n/**\n * Wraps code line that consists from three parts into `SourceNode`.\n *\n * @param {string} prefix String that will be prepended before mapped chunk\n * @param {string} chunk Chunk for mapping (possible multiline)\n * @param {import(\"../../peg\").Location} location\n *        Location that represents chunk in the grammar\n * @param {string} suffix String that will be appended after mapped chunk\n * @param {string?} name Name of the code chunk\n *\n * @returns {SourceNode} New node that represents code chunk.\n *          Code will be splitted by lines if necessary\n */\nfunction wrapInSourceNode(prefix, chunk, location, suffix, name) {\n  // If location is not defined (for example, AST node was replaced\n  // by a plugin and does not provide location information, see\n  // plugin-api.spec.js/\"can replace parser\") returns original chunk\n  if (location) {\n    return new SourceNode(null, null, location.source, [\n      prefix,\n      toSourceNode(chunk, location, name),\n      // Mark end location with column information otherwise\n      // mapping will be always continue to the end of line\n      new SourceNode(\n        location.end.line,\n        // `source-map` columns are 0-based, peggy columns is 1-based\n        location.end.column - 1,\n        location.source,\n        suffix\n      ),\n    ]);\n  }\n\n  return new SourceNode(null, null, null, [prefix, chunk, suffix]);\n}\n\n// Generates parser JavaScript code.\nfunction generateJS(ast, options) {\n  // These only indent non-empty lines to avoid trailing whitespace.\n  function indent2(code) {\n    return code instanceof SourceNode\n      ? code\n      : code.replace(/^(.+)$/gm, \"  $1\");\n  }\n\n  function l(i) { return \"peg$c\" + i; } // |literals[i]| of the abstract machine\n  function r(i) { return \"peg$r\" + i; } // |classes[i]| of the abstract machine\n  function e(i) { return \"peg$e\" + i; } // |expectations[i]| of the abstract machine\n  function f(i) { return \"peg$f\" + i; } // |actions[i]| of the abstract machine\n\n  /** Generates name of the function that parses specified rule. */\n  function name(name) { return \"peg$parse\" + name; }\n\n  function generateTables() {\n    function buildLiteral(literal) {\n      return \"\\\"\" + stringEscape(literal) + \"\\\"\";\n    }\n\n    function buildRegexp(cls) {\n      return \"/^[\"\n        + (cls.inverted ? \"^\" : \"\")\n        + cls.value.map(part => Array.isArray(part)\n          ? regexpClassEscape(part[0])\n            + \"-\"\n            + regexpClassEscape(part[1])\n          : regexpClassEscape(part)).join(\"\")\n        + \"]/\" + (cls.ignoreCase ? \"i\" : \"\");\n    }\n\n    function buildExpectation(e) {\n      switch (e.type) {\n        case \"rule\": {\n          return \"peg$otherExpectation(\\\"\" + stringEscape(e.value) + \"\\\")\";\n        }\n        case \"literal\": {\n          return \"peg$literalExpectation(\\\"\"\n                  + stringEscape(e.value)\n                  + \"\\\", \"\n                  + e.ignoreCase\n                  + \")\";\n        }\n        case \"class\": {\n          const parts = e.value.map(part => Array.isArray(part)\n            ? \"[\\\"\" + stringEscape(part[0]) + \"\\\", \\\"\" + stringEscape(part[1]) + \"\\\"]\"\n            : \"\\\"\"  + stringEscape(part) + \"\\\"\").join(\", \");\n\n          return \"peg$classExpectation([\"\n                  + parts + \"], \"\n                  + e.inverted + \", \"\n                  + e.ignoreCase\n                  + \")\";\n        }\n        case \"any\": return \"peg$anyExpectation()\";\n        // istanbul ignore next Because we never generate expectation type we cannot reach this branch\n        default: throw new Error(\"Unknown expectation type (\" + JSON.stringify(e) + \")\");\n      }\n    }\n\n    function buildFunc(a, i) {\n      return wrapInSourceNode(\n        `\\n  var ${f(i)} = function(${a.params.join(\", \")}) {`,\n        a.body,\n        a.location,\n        \"};\"\n      );\n    }\n\n    return new SourceNode(\n      null, null, options.grammarSource, [\n        ast.literals.map(\n          (c, i) => \"  var \" + l(i) + \" = \" + buildLiteral(c) + \";\"\n        ).concat(\"\", ast.classes.map(\n          (c, i) => \"  var \" + r(i) + \" = \" + buildRegexp(c) + \";\"\n        )).concat(\"\", ast.expectations.map(\n          (c, i) => \"  var \" + e(i) + \" = \" + buildExpectation(c) + \";\"\n        )).concat(\"\").join(\"\\n\"),\n        ast.functions.map(buildFunc),\n      ]\n    );\n  }\n\n  function generateRuleHeader(ruleNameCode, ruleIndexCode) {\n    const parts = [];\n\n    parts.push(\"\");\n\n    if (options.trace) {\n      parts.push(\n        \"peg$tracer.trace({\",\n        \"  type: \\\"rule.enter\\\",\",\n        \"  rule: \" + ruleNameCode + \",\",\n        \"  location: peg$computeLocation(startPos, startPos)\",\n        \"});\",\n        \"\"\n      );\n    }\n\n    if (options.cache) {\n      parts.push(\n        \"var key = peg$currPos * \" + ast.rules.length + \" + \" + ruleIndexCode + \";\",\n        \"var cached = peg$resultsCache[key];\",\n        \"\",\n        \"if (cached) {\",\n        \"  peg$currPos = cached.nextPos;\",\n        \"\"\n      );\n\n      if (options.trace) {\n        parts.push(\n          \"if (cached.result !== peg$FAILED) {\",\n          \"  peg$tracer.trace({\",\n          \"    type: \\\"rule.match\\\",\",\n          \"    rule: \" + ruleNameCode + \",\",\n          \"    result: cached.result,\",\n          \"    location: peg$computeLocation(startPos, peg$currPos)\",\n          \"  });\",\n          \"} else {\",\n          \"  peg$tracer.trace({\",\n          \"    type: \\\"rule.fail\\\",\",\n          \"    rule: \" + ruleNameCode + \",\",\n          \"    location: peg$computeLocation(startPos, startPos)\",\n          \"  });\",\n          \"}\",\n          \"\"\n        );\n      }\n\n      parts.push(\n        \"  return cached.result;\",\n        \"}\",\n        \"\"\n      );\n    }\n\n    return parts;\n  }\n\n  function generateRuleFooter(ruleNameCode, resultCode) {\n    const parts = [];\n\n    if (options.cache) {\n      parts.push(\n        \"\",\n        \"peg$resultsCache[key] = { nextPos: peg$currPos, result: \" + resultCode + \" };\"\n      );\n    }\n\n    if (options.trace) {\n      parts.push(\n        \"\",\n        \"if (\" + resultCode + \" !== peg$FAILED) {\",\n        \"  peg$tracer.trace({\",\n        \"    type: \\\"rule.match\\\",\",\n        \"    rule: \" + ruleNameCode + \",\",\n        \"    result: \" + resultCode + \",\",\n        \"    location: peg$computeLocation(startPos, peg$currPos)\",\n        \"  });\",\n        \"} else {\",\n        \"  peg$tracer.trace({\",\n        \"    type: \\\"rule.fail\\\",\",\n        \"    rule: \" + ruleNameCode + \",\",\n        \"    location: peg$computeLocation(startPos, startPos)\",\n        \"  });\",\n        \"}\"\n      );\n    }\n\n    parts.push(\n      \"\",\n      \"return \" + resultCode + \";\"\n    );\n\n    return parts;\n  }\n\n  function generateRuleFunction(rule) {\n    const parts = [];\n    const stack = new Stack(rule.name, \"s\", \"var\");\n\n    function compile(bc) {\n      let ip = 0;\n      const end = bc.length;\n      const parts = [];\n      let value;\n\n      function compileCondition(cond, argCount) {\n        const baseLength = argCount + 3;\n        const thenLength = bc[ip + baseLength - 2];\n        const elseLength = bc[ip + baseLength - 1];\n        let thenCode, elseCode;\n\n        stack.checkedIf(\n          ip,\n          () => {\n            ip += baseLength;\n            thenCode = compile(bc.slice(ip, ip + thenLength));\n            ip += thenLength;\n          },\n          (elseLength > 0)\n            ? () => {\n                elseCode = compile(bc.slice(ip, ip + elseLength));\n                ip += elseLength;\n              }\n            : null\n        );\n\n        parts.push(\"if (\" + cond + \") {\");\n        parts.push(...thenCode.map(indent2));\n        if (elseLength > 0) {\n          parts.push(\"} else {\");\n          parts.push(...elseCode.map(indent2));\n        }\n        parts.push(\"}\");\n      }\n\n      function compileLoop(cond) {\n        const baseLength = 2;\n        const bodyLength = bc[ip + baseLength - 1];\n        let bodyCode;\n\n        stack.checkedLoop(ip, () => {\n          ip += baseLength;\n          bodyCode = compile(bc.slice(ip, ip + bodyLength));\n          ip += bodyLength;\n        });\n\n        parts.push(\"while (\" + cond + \") {\");\n        parts.push(...bodyCode.map(indent2));\n        parts.push(\"}\");\n      }\n\n      function compileCall() {\n        const baseLength = 4;\n        const paramsLength = bc[ip + baseLength - 1];\n\n        const value = f(bc[ip + 1]) + \"(\"\n          + bc.slice(ip + baseLength, ip + baseLength + paramsLength).map(\n            p => stack.index(p)\n          ).join(\", \")\n          + \")\";\n        stack.pop(bc[ip + 2]);\n        parts.push(stack.push(value));\n        ip += baseLength + paramsLength;\n      }\n\n      while (ip < end) {\n        switch (bc[ip]) {\n          case op.PUSH_EMPTY_STRING:  // PUSH_EMPTY_STRING\n            parts.push(stack.push(\"''\"));\n            ip++;\n            break;\n\n          case op.PUSH_CURR_POS:      // PUSH_CURR_POS\n            parts.push(stack.push(\"peg$currPos\"));\n            ip++;\n            break;\n\n          case op.PUSH_UNDEFINED:     // PUSH_UNDEFINED\n            parts.push(stack.push(\"undefined\"));\n            ip++;\n            break;\n\n          case op.PUSH_NULL:          // PUSH_NULL\n            parts.push(stack.push(\"null\"));\n            ip++;\n            break;\n\n          case op.PUSH_FAILED:        // PUSH_FAILED\n            parts.push(stack.push(\"peg$FAILED\"));\n            ip++;\n            break;\n\n          case op.PUSH_EMPTY_ARRAY:   // PUSH_EMPTY_ARRAY\n            parts.push(stack.push(\"[]\"));\n            ip++;\n            break;\n\n          case op.POP:                // POP\n            stack.pop();\n            ip++;\n            break;\n\n          case op.POP_CURR_POS:       // POP_CURR_POS\n            parts.push(\"peg$currPos = \" + stack.pop() + \";\");\n            ip++;\n            break;\n\n          case op.POP_N:              // POP_N n\n            stack.pop(bc[ip + 1]);\n            ip += 2;\n            break;\n\n          case op.NIP:                // NIP\n            value = stack.pop();\n            stack.pop();\n            parts.push(stack.push(value));\n            ip++;\n            break;\n\n          case op.APPEND:             // APPEND\n            value = stack.pop();\n            parts.push(stack.top() + \".push(\" + value + \");\");\n            ip++;\n            break;\n\n          case op.WRAP:               // WRAP n\n            parts.push(\n              // @ts-expect-error  pop() returns array if argument is specified\n              stack.push(\"[\" + stack.pop(bc[ip + 1]).join(\", \") + \"]\")\n            );\n            ip += 2;\n            break;\n\n          case op.TEXT:               // TEXT\n            parts.push(\n              stack.push(\"input.substring(\" + stack.pop() + \", peg$currPos)\")\n            );\n            ip++;\n            break;\n\n          case op.PLUCK: {            // PLUCK n, k, p1, ..., pK\n            const baseLength = 3;\n            const paramsLength = bc[ip + baseLength - 1];\n            const n = baseLength + paramsLength;\n            value = bc.slice(ip + baseLength, ip + n);\n            value = paramsLength === 1\n              ? stack.index(value[0])\n              : `[ ${\n                value.map(p => stack.index(p)).join(\", \")\n              } ]`;\n            stack.pop(bc[ip + 1]);\n            parts.push(stack.push(value));\n            ip += n;\n            break;\n          }\n\n          case op.IF:                 // IF t, f\n            compileCondition(stack.top(), 0);\n            break;\n\n          case op.IF_ERROR:           // IF_ERROR t, f\n            compileCondition(stack.top() + \" === peg$FAILED\", 0);\n            break;\n\n          case op.IF_NOT_ERROR:       // IF_NOT_ERROR t, f\n            compileCondition(stack.top() + \" !== peg$FAILED\", 0);\n            break;\n\n          case op.WHILE_NOT_ERROR:    // WHILE_NOT_ERROR b\n            compileLoop(stack.top() + \" !== peg$FAILED\");\n            break;\n\n          case op.MATCH_ANY:          // MATCH_ANY a, f, ...\n            compileCondition(\"input.length > peg$currPos\", 0);\n            break;\n\n          case op.MATCH_STRING:       // MATCH_STRING s, a, f, ...\n            compileCondition(\n              ast.literals[bc[ip + 1]].length > 1\n                ? \"input.substr(peg$currPos, \"\n                    + ast.literals[bc[ip + 1]].length\n                    + \") === \"\n                    + l(bc[ip + 1])\n                : \"input.charCodeAt(peg$currPos) === \"\n                    + ast.literals[bc[ip + 1]].charCodeAt(0),\n              1\n            );\n            break;\n\n          case op.MATCH_STRING_IC:    // MATCH_STRING_IC s, a, f, ...\n            compileCondition(\n              \"input.substr(peg$currPos, \"\n                + ast.literals[bc[ip + 1]].length\n                + \").toLowerCase() === \"\n                + l(bc[ip + 1]),\n              1\n            );\n            break;\n\n          case op.MATCH_CHAR_CLASS:   // MATCH_CHAR_CLASS c, a, f, ...\n            compileCondition(\n              r(bc[ip + 1]) + \".test(input.charAt(peg$currPos))\",\n              1\n            );\n            break;\n\n          case op.ACCEPT_N:           // ACCEPT_N n\n            parts.push(stack.push(\n              bc[ip + 1] > 1\n                ? \"input.substr(peg$currPos, \" + bc[ip + 1] + \")\"\n                : \"input.charAt(peg$currPos)\"\n            ));\n            parts.push(\n              bc[ip + 1] > 1\n                ? \"peg$currPos += \" + bc[ip + 1] + \";\"\n                : \"peg$currPos++;\"\n            );\n            ip += 2;\n            break;\n\n          case op.ACCEPT_STRING:      // ACCEPT_STRING s\n            parts.push(stack.push(l(bc[ip + 1])));\n            parts.push(\n              ast.literals[bc[ip + 1]].length > 1\n                ? \"peg$currPos += \" + ast.literals[bc[ip + 1]].length + \";\"\n                : \"peg$currPos++;\"\n            );\n            ip += 2;\n            break;\n\n          case op.FAIL:               // FAIL e\n            parts.push(stack.push(\"peg$FAILED\"));\n            parts.push(\"if (peg$silentFails === 0) { peg$fail(\" + e(bc[ip + 1]) + \"); }\");\n            ip += 2;\n            break;\n\n          case op.LOAD_SAVED_POS:     // LOAD_SAVED_POS p\n            parts.push(\"peg$savedPos = \" + stack.index(bc[ip + 1]) + \";\");\n            ip += 2;\n            break;\n\n          case op.UPDATE_SAVED_POS:   // UPDATE_SAVED_POS\n            parts.push(\"peg$savedPos = peg$currPos;\");\n            ip++;\n            break;\n\n          case op.CALL:               // CALL f, n, pc, p1, p2, ..., pN\n            compileCall();\n            break;\n\n          case op.RULE:               // RULE r\n            parts.push(stack.push(name(ast.rules[bc[ip + 1]].name) + \"()\"));\n            ip += 2;\n            break;\n\n          case op.SILENT_FAILS_ON:    // SILENT_FAILS_ON\n            parts.push(\"peg$silentFails++;\");\n            ip++;\n            break;\n\n          case op.SILENT_FAILS_OFF:   // SILENT_FAILS_OFF\n            parts.push(\"peg$silentFails--;\");\n            ip++;\n            break;\n\n          // istanbul ignore next Because we never generate invalid bytecode we cannot reach this branch\n          default:\n            throw new Error(\"Invalid opcode: \" + bc[ip] + \".\");\n        }\n      }\n\n      return parts;\n    }\n\n    const code = compile(rule.bytecode);\n\n    parts.push(wrapInSourceNode(\n      \"  function \",\n      name(rule.name),\n      rule.nameLocation,\n      \"() {\\n\",\n      rule.name\n    ));\n\n    if (options.trace) {\n      parts.push(\"  var startPos = peg$currPos;\");\n    }\n\n    parts.push(indent2(stack.defines()));\n\n    parts.push(...generateRuleHeader(\n      \"\\\"\" + stringEscape(rule.name) + \"\\\"\",\n      asts.indexOfRule(ast, rule.name)\n    ).map(indent2));\n    parts.push(...code.map(indent2));\n    parts.push(...generateRuleFooter(\n      \"\\\"\" + stringEscape(rule.name) + \"\\\"\",\n      stack.result()\n    ).map(indent2));\n\n    parts.push(\"}\");\n\n    return parts;\n  }\n\n  function ast2SourceNode(node) {\n    // If location is not defined (for example, AST node was replaced\n    // by a plugin and does not provide location information, see\n    // plugin-api.spec.js/\"can replace parser\") returns initializer code\n    if (node.codeLocation) {\n      // Append \"$\" to the name to create an impossible rule name\n      // so that names will not collide with rule names\n      return toSourceNode(node.code, node.codeLocation, \"$\" + node.type);\n    }\n\n    return node.code;\n  }\n\n  function generateToplevel() {\n    const parts = [];\n\n    if (ast.topLevelInitializer) {\n      parts.push(ast2SourceNode(ast.topLevelInitializer));\n      parts.push(\"\");\n    }\n\n    parts.push(\n      \"function peg$subclass(child, parent) {\",\n      \"  function C() { this.constructor = child; }\",\n      \"  C.prototype = parent.prototype;\",\n      \"  child.prototype = new C();\",\n      \"}\",\n      \"\",\n      \"function peg$SyntaxError(message, expected, found, location) {\",\n      \"  var self = Error.call(this, message);\",\n      \"  // istanbul ignore next Check is a necessary evil to support older environments\",\n      \"  if (Object.setPrototypeOf) {\",\n      \"    Object.setPrototypeOf(self, peg$SyntaxError.prototype);\",\n      \"  }\",\n      \"  self.expected = expected;\",\n      \"  self.found = found;\",\n      \"  self.location = location;\",\n      \"  self.name = \\\"SyntaxError\\\";\",\n      \"  return self;\",\n      \"}\",\n      \"\",\n      \"peg$subclass(peg$SyntaxError, Error);\",\n      \"\",\n      \"function peg$padEnd(str, targetLength, padString) {\",\n      \"  padString = padString || \\\" \\\";\",\n      \"  if (str.length > targetLength) { return str; }\",\n      \"  targetLength -= str.length;\",\n      \"  padString += padString.repeat(targetLength);\",\n      \"  return str + padString.slice(0, targetLength);\",\n      \"}\",\n      \"\",\n      \"peg$SyntaxError.prototype.format = function(sources) {\",\n      \"  var str = \\\"Error: \\\" + this.message;\",\n      \"  if (this.location) {\",\n      \"    var src = null;\",\n      \"    var k;\",\n      \"    for (k = 0; k < sources.length; k++) {\",\n      \"      if (sources[k].source === this.location.source) {\",\n      \"        src = sources[k].text.split(/\\\\r\\\\n|\\\\n|\\\\r/g);\",\n      \"        break;\",\n      \"      }\",\n      \"    }\",\n      \"    var s = this.location.start;\",\n      \"    var loc = this.location.source + \\\":\\\" + s.line + \\\":\\\" + s.column;\",\n      \"    if (src) {\",\n      \"      var e = this.location.end;\",\n      \"      var filler = peg$padEnd(\\\"\\\", s.line.toString().length, ' ');\",\n      \"      var line = src[s.line - 1];\",\n      \"      var last = s.line === e.line ? e.column : line.length + 1;\",\n      \"      var hatLen = (last - s.column) || 1;\",\n      \"      str += \\\"\\\\n --> \\\" + loc + \\\"\\\\n\\\"\",\n      \"          + filler + \\\" |\\\\n\\\"\",\n      \"          + s.line + \\\" | \\\" + line + \\\"\\\\n\\\"\",\n      \"          + filler + \\\" | \\\" + peg$padEnd(\\\"\\\", s.column - 1, ' ')\",\n      \"          + peg$padEnd(\\\"\\\", hatLen, \\\"^\\\");\",\n      \"    } else {\",\n      \"      str += \\\"\\\\n at \\\" + loc;\",\n      \"    }\",\n      \"  }\",\n      \"  return str;\",\n      \"};\",\n      \"\",\n      \"peg$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 = expectation.parts.map(function(part) {\",\n      \"        return Array.isArray(part)\",\n      \"          ? classEscape(part[0]) + \\\"-\\\" + classEscape(part[1])\",\n      \"          : classEscape(part);\",\n      \"      });\",\n      \"\",\n      \"      return \\\"[\\\" + (expectation.inverted ? \\\"^\\\" : \\\"\\\") + escapedParts.join(\\\"\\\") + \\\"]\\\";\",\n      \"    },\",\n      \"\",\n      \"    any: function() {\",\n      \"      return \\\"any character\\\";\",\n      \"    },\",\n      \"\",\n      \"    end: function() {\",\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, \\\"\\\\\\\\\\\\\\\\\\\")\",   // Backslash\n      \"      .replace(/\\\"/g,  \\\"\\\\\\\\\\\\\\\"\\\")\",    // Closing double quote\n      \"      .replace(/\\\\0/g, \\\"\\\\\\\\0\\\")\",       // Null\n      \"      .replace(/\\\\t/g, \\\"\\\\\\\\t\\\")\",       // Horizontal tab\n      \"      .replace(/\\\\n/g, \\\"\\\\\\\\n\\\")\",       // Line feed\n      \"      .replace(/\\\\r/g, \\\"\\\\\\\\r\\\")\",       // Carriage return\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, \\\"\\\\\\\\\\\\\\\\\\\")\",   // Backslash\n      \"      .replace(/\\\\]/g, \\\"\\\\\\\\]\\\")\",       // Closing bracket\n      \"      .replace(/\\\\^/g, \\\"\\\\\\\\^\\\")\",       // Caret\n      \"      .replace(/-/g,  \\\"\\\\\\\\-\\\")\",        // Dash\n      \"      .replace(/\\\\0/g, \\\"\\\\\\\\0\\\")\",       // Null\n      \"      .replace(/\\\\t/g, \\\"\\\\\\\\t\\\")\",       // Horizontal tab\n      \"      .replace(/\\\\n/g, \\\"\\\\\\\\n\\\")\",       // Line feed\n      \"      .replace(/\\\\r/g, \\\"\\\\\\\\r\\\")\",       // Carriage return\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 = expected.map(describeExpectation);\",\n      \"    var i, j;\",\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      \"\"\n    );\n\n    if (options.trace) {\n      parts.push(\n        \"function peg$DefaultTracer() {\",\n        \"  this.indentLevel = 0;\",\n        \"}\",\n        \"\",\n        \"peg$DefaultTracer.prototype.trace = function(event) {\",\n        \"  var that = this;\",\n        \"\",\n        \"  function log(event) {\",\n        \"    function repeat(string, n) {\",\n        \"       var result = \\\"\\\", i;\",\n        \"\",\n        \"       for (i = 0; i < n; i++) {\",\n        \"         result += string;\",\n        \"       }\",\n        \"\",\n        \"       return result;\",\n        \"    }\",\n        \"\",\n        \"    function pad(string, length) {\",\n        \"      return string + repeat(\\\" \\\", length - string.length);\",\n        \"    }\",\n        \"\",\n        \"    if (typeof console === \\\"object\\\") {\",   // IE 8-10\n        \"      console.log(\",\n        \"        event.location.start.line + \\\":\\\" + event.location.start.column + \\\"-\\\"\",\n        \"          + event.location.end.line + \\\":\\\" + event.location.end.column + \\\" \\\"\",\n        \"          + pad(event.type, 10) + \\\" \\\"\",\n        \"          + repeat(\\\"  \\\", that.indentLevel) + event.rule\",\n        \"      );\",\n        \"    }\",\n        \"  }\",\n        \"\",\n        \"  switch (event.type) {\",\n        \"    case \\\"rule.enter\\\":\",\n        \"      log(event);\",\n        \"      this.indentLevel++;\",\n        \"      break;\",\n        \"\",\n        \"    case \\\"rule.match\\\":\",\n        \"      this.indentLevel--;\",\n        \"      log(event);\",\n        \"      break;\",\n        \"\",\n        \"    case \\\"rule.fail\\\":\",\n        \"      this.indentLevel--;\",\n        \"      log(event);\",\n        \"      break;\",\n        \"\",\n        \"    default:\",\n        \"      throw new Error(\\\"Invalid event type: \\\" + event.type + \\\".\\\");\",\n        \"  }\",\n        \"};\",\n        \"\"\n      );\n    }\n\n    const startRuleFunctions = \"{ \"\n      + options.allowedStartRules.map(\n        r => r + \": \" + name(r)\n      ).join(\", \")\n      + \" }\";\n    const startRuleFunction = name(options.allowedStartRules[0]);\n\n    parts.push(\n      \"function peg$parse(input, options) {\",\n      \"  options = options !== undefined ? options : {};\",\n      \"\",\n      \"  var peg$FAILED = {};\",\n      \"  var peg$source = options.grammarSource;\",\n      \"\",\n      \"  var peg$startRuleFunctions = \" + startRuleFunctions + \";\",\n      \"  var peg$startRuleFunction = \" + startRuleFunction + \";\",\n      \"\",\n      generateTables(),\n      \"\",\n      \"  var peg$currPos = 0;\",\n      \"  var peg$savedPos = 0;\",\n      \"  var peg$posDetailsCache = [{ line: 1, column: 1 }];\",\n      \"  var peg$maxFailPos = 0;\",\n      \"  var peg$maxFailExpected = [];\",\n      \"  var peg$silentFails = 0;\",   // 0 = report failures, > 0 = silence failures\n      \"\"\n    );\n\n    if (options.cache) {\n      parts.push(\n        \"  var peg$resultsCache = {};\",\n        \"\"\n      );\n    }\n\n    if (options.trace) {\n      parts.push(\n        \"  var peg$tracer = \\\"tracer\\\" in options ? options.tracer : new peg$DefaultTracer();\",\n        \"\"\n      );\n    }\n\n    parts.push(\n      \"  var peg$result;\",\n      \"\",\n      \"  if (\\\"startRule\\\" in options) {\",\n      \"    if (!(options.startRule in peg$startRuleFunctions)) {\",\n      \"      throw new Error(\\\"Can't start parsing from rule \\\\\\\"\\\" + options.startRule + \\\"\\\\\\\".\\\");\",\n      \"    }\",\n      \"\",\n      \"    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\",\n      \"  }\",\n      \"\",\n      \"  function text() {\",\n      \"    return input.substring(peg$savedPos, peg$currPos);\",\n      \"  }\",\n      \"\",\n      \"  function offset() {\",\n      \"    return peg$savedPos;\",\n      \"  }\",\n      \"\",\n      \"  function range() {\",\n      \"    return {\",\n      \"      source: peg$source,\",\n      \"      start: peg$savedPos,\",\n      \"      end: peg$currPos\",\n      \"    };\",\n      \"  }\",\n      \"\",\n      \"  function location() {\",\n      \"    return peg$computeLocation(peg$savedPos, peg$currPos);\",\n      \"  }\",\n      \"\",\n      \"  function expected(description, location) {\",\n      \"    location = location !== undefined\",\n      \"      ? location\",\n      \"      : peg$computeLocation(peg$savedPos, peg$currPos);\",\n      \"\",\n      \"    throw peg$buildStructuredError(\",\n      \"      [peg$otherExpectation(description)],\",\n      \"      input.substring(peg$savedPos, peg$currPos),\",\n      \"      location\",\n      \"    );\",\n      \"  }\",\n      \"\",\n      \"  function error(message, location) {\",\n      \"    location = location !== undefined\",\n      \"      ? location\",\n      \"      : peg$computeLocation(peg$savedPos, peg$currPos);\",\n      \"\",\n      \"    throw peg$buildSimpleError(message, location);\",\n      \"  }\",\n      \"\",\n      \"  function peg$literalExpectation(text, ignoreCase) {\",\n      \"    return { type: \\\"literal\\\", text: text, ignoreCase: ignoreCase };\",\n      \"  }\",\n      \"\",\n      \"  function peg$classExpectation(parts, inverted, ignoreCase) {\",\n      \"    return { type: \\\"class\\\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\",\n      \"  }\",\n      \"\",\n      \"  function peg$anyExpectation() {\",\n      \"    return { type: \\\"any\\\" };\",\n      \"  }\",\n      \"\",\n      \"  function peg$endExpectation() {\",\n      \"    return { type: \\\"end\\\" };\",\n      \"  }\",\n      \"\",\n      \"  function peg$otherExpectation(description) {\",\n      \"    return { type: \\\"other\\\", description: description };\",\n      \"  }\",\n      \"\",\n      \"  function peg$computePosDetails(pos) {\",\n      \"    var details = peg$posDetailsCache[pos];\",\n      \"    var p;\",\n      \"\",\n      \"    if (details) {\",\n      \"      return details;\",\n      \"    } else {\",\n      \"      p = pos - 1;\",\n      \"      while (!peg$posDetailsCache[p]) {\",\n      \"        p--;\",\n      \"      }\",\n      \"\",\n      \"      details = peg$posDetailsCache[p];\",\n      \"      details = {\",\n      \"        line: details.line,\",\n      \"        column: details.column\",\n      \"      };\",\n      \"\",\n      \"      while (p < pos) {\",\n      \"        if (input.charCodeAt(p) === 10) {\",\n      \"          details.line++;\",\n      \"          details.column = 1;\",\n      \"        } else {\",\n      \"          details.column++;\",\n      \"        }\",\n      \"\",\n      \"        p++;\",\n      \"      }\",\n      \"\",\n      \"      peg$posDetailsCache[pos] = details;\",\n      \"\",\n      \"      return details;\",\n      \"    }\",\n      \"  }\",\n      \"\",\n      \"  function peg$computeLocation(startPos, endPos) {\",\n      \"    var startPosDetails = peg$computePosDetails(startPos);\",\n      \"    var endPosDetails = peg$computePosDetails(endPos);\",\n      \"\",\n      \"    return {\",\n      \"      source: peg$source,\",\n      \"      start: {\",\n      \"        offset: startPos,\",\n      \"        line: startPosDetails.line,\",\n      \"        column: startPosDetails.column\",\n      \"      },\",\n      \"      end: {\",\n      \"        offset: endPos,\",\n      \"        line: endPosDetails.line,\",\n      \"        column: endPosDetails.column\",\n      \"      }\",\n      \"    };\",\n      \"  }\",\n      \"\",\n      \"  function peg$fail(expected) {\",\n      \"    if (peg$currPos < peg$maxFailPos) { return; }\",\n      \"\",\n      \"    if (peg$currPos > peg$maxFailPos) {\",\n      \"      peg$maxFailPos = peg$currPos;\",\n      \"      peg$maxFailExpected = [];\",\n      \"    }\",\n      \"\",\n      \"    peg$maxFailExpected.push(expected);\",\n      \"  }\",\n      \"\",\n      \"  function peg$buildSimpleError(message, location) {\",\n      \"    return new peg$SyntaxError(message, null, null, location);\",\n      \"  }\",\n      \"\",\n      \"  function peg$buildStructuredError(expected, found, location) {\",\n      \"    return new peg$SyntaxError(\",\n      \"      peg$SyntaxError.buildMessage(expected, found),\",\n      \"      expected,\",\n      \"      found,\",\n      \"      location\",\n      \"    );\",\n      \"  }\",\n      \"\"\n    );\n\n    ast.rules.forEach(rule => {\n      parts.push(...generateRuleFunction(rule).map(indent2));\n      parts.push(\"\");\n    });\n\n    if (ast.initializer) {\n      parts.push(ast2SourceNode(ast.initializer));\n      parts.push(\"\");\n    }\n\n    parts.push(\n      \"  peg$result = peg$startRuleFunction();\",\n      \"\",\n      \"  if (peg$result !== peg$FAILED && peg$currPos === input.length) {\",\n      \"    return peg$result;\",\n      \"  } else {\",\n      \"    if (peg$result !== peg$FAILED && peg$currPos < input.length) {\",\n      \"      peg$fail(peg$endExpectation());\",\n      \"    }\",\n      \"\",\n      \"    throw peg$buildStructuredError(\",\n      \"      peg$maxFailExpected,\",\n      \"      peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\",\n      \"      peg$maxFailPos < input.length\",\n      \"        ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\",\n      \"        : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\",\n      \"    );\",\n      \"  }\",\n      \"}\"\n    );\n\n    return new SourceNode(\n      // This expression has a better readability when on two lines\n      // eslint-disable-next-line function-call-argument-newline\n      null, null, options.grammarSource,\n      parts.map(s => s instanceof SourceNode ? s : s + \"\\n\")\n    );\n  }\n\n  function generateWrapper(toplevelCode) {\n    function generateGeneratedByComment() {\n      return [\n        `// Generated by Peggy ${VERSION}.`,\n        \"//\",\n        \"// https://peggyjs.org/\",\n      ];\n    }\n\n    function generateParserObject() {\n      return options.trace\n        ? [\n            \"{\",\n            \"  SyntaxError: peg$SyntaxError,\",\n            \"  DefaultTracer: peg$DefaultTracer,\",\n            \"  parse: peg$parse\",\n            \"}\",\n          ].join(\"\\n\")\n        : [\n            \"{\",\n            \"  SyntaxError: peg$SyntaxError,\",\n            \"  parse: peg$parse\",\n            \"}\",\n          ].join(\"\\n\");\n    }\n\n    const generators = {\n      bare() {\n        return [\n          ...generateGeneratedByComment(),\n          \"(function() {\",\n          \"  \\\"use strict\\\";\",\n          \"\",\n          toplevelCode,\n          \"\",\n          indent2(\"return \" + generateParserObject() + \";\"),\n          \"})()\",\n        ];\n      },\n\n      commonjs() {\n        const dependencyVars = Object.keys(options.dependencies);\n\n        const parts = generateGeneratedByComment();\n        parts.push(\n          \"\",\n          \"\\\"use strict\\\";\",\n          \"\"\n        );\n\n        if (dependencyVars.length > 0) {\n          dependencyVars.forEach(variable => {\n            parts.push(\n              \"var \" + variable\n              + \" = require(\\\"\"\n              + stringEscape(options.dependencies[variable])\n              + \"\\\");\"\n            );\n          });\n          parts.push(\"\");\n        }\n\n        parts.push(\n          toplevelCode,\n          \"\",\n          \"module.exports = \" + generateParserObject() + \";\"\n        );\n\n        return parts;\n      },\n\n      es() {\n        const dependencyVars = Object.keys(options.dependencies);\n\n        const parts = generateGeneratedByComment();\n        parts.push(\"\");\n\n        if (dependencyVars.length > 0) {\n          dependencyVars.forEach(variable => {\n            parts.push(\n              \"import \" + variable\n              + \" from \\\"\"\n              + stringEscape(options.dependencies[variable])\n              + \"\\\";\"\n            );\n          });\n          parts.push(\"\");\n        }\n\n        parts.push(\n          toplevelCode,\n          \"\",\n          \"export {\",\n          \"  peg$SyntaxError as SyntaxError,\",\n          options.trace ? \"  peg$DefaultTracer as DefaultTracer,\" : \"\",\n          \"  peg$parse as parse\",\n          \"};\"\n        );\n\n        return parts;\n      },\n\n      amd() {\n        const dependencyVars = Object.keys(options.dependencies);\n        const dependencyIds = dependencyVars.map(v => options.dependencies[v]);\n        const dependencies = \"[\"\n          + dependencyIds.map(\n            id => \"\\\"\" + stringEscape(id) + \"\\\"\"\n          ).join(\", \")\n          + \"]\";\n        const params = dependencyVars.join(\", \");\n\n        return [\n          ...generateGeneratedByComment(),\n          \"define(\" + dependencies + \", function(\" + params + \") {\",\n          \"  \\\"use strict\\\";\",\n          \"\",\n          toplevelCode,\n          \"\",\n          indent2(\"return \" + generateParserObject() + \";\"),\n          \"});\",\n        ];\n      },\n\n      globals() {\n        return [\n          ...generateGeneratedByComment(),\n          \"(function(root) {\",\n          \"  \\\"use strict\\\";\",\n          \"\",\n          toplevelCode,\n          \"\",\n          indent2(\"root.\" + options.exportVar + \" = \" + generateParserObject() + \";\"),\n          \"})(this);\",\n        ];\n      },\n\n      umd() {\n        const dependencyVars = Object.keys(options.dependencies);\n        const dependencyIds = dependencyVars.map(v => options.dependencies[v]);\n        const dependencies = \"[\"\n          + dependencyIds.map(\n            id => \"\\\"\" + stringEscape(id) + \"\\\"\"\n          ).join(\", \")\n          + \"]\";\n        const requires = dependencyIds.map(\n          id => \"require(\\\"\" + stringEscape(id) + \"\\\")\"\n        ).join(\", \");\n        const params = dependencyVars.join(\", \");\n\n        const parts = generateGeneratedByComment();\n        parts.push(\n          \"(function(root, factory) {\",\n          \"  if (typeof define === \\\"function\\\" && define.amd) {\",\n          \"    define(\" + dependencies + \", factory);\",\n          \"  } else if (typeof module === \\\"object\\\" && module.exports) {\",\n          \"    module.exports = factory(\" + requires + \");\"\n        );\n\n        if (options.exportVar !== null) {\n          parts.push(\n            \"  } else {\",\n            \"    root.\" + options.exportVar + \" = factory();\"\n          );\n        }\n\n        parts.push(\n          \"  }\",\n          \"})(this, function(\" + params + \") {\",\n          \"  \\\"use strict\\\";\",\n          \"\",\n          toplevelCode,\n          \"\",\n          indent2(\"return \" + generateParserObject() + \";\"),\n          \"});\"\n        );\n\n        return parts;\n      },\n    };\n\n    const parts = generators[options.format]();\n\n    return new SourceNode(\n      // This expression has a better readability when on two lines\n      // eslint-disable-next-line function-call-argument-newline\n      null, null, options.grammarSource,\n      parts.map(s => s instanceof SourceNode ? s : s + \"\\n\")\n    );\n  }\n\n  ast.code = generateWrapper(generateToplevel());\n}\n\nmodule.exports = generateJS;\n","\"use strict\";\n\nconst asts = require(\"../asts\");\nconst visitor = require(\"../visitor\");\n\n// Removes proxy rules -- that is, rules that only delegate to other rule.\nfunction removeProxyRules(ast, options, session) {\n  function isProxyRule(node) {\n    return node.type === \"rule\" && node.expression.type === \"rule_ref\";\n  }\n\n  function replaceRuleRefs(ast, from, to) {\n    const replace = visitor.build({\n      rule_ref(node) {\n        if (node.name === from) {\n          node.name = to;\n\n          session.info(\n            `Proxy rule \"${from}\" replaced by the rule \"${to}\"`,\n            node.location,\n            [{\n              message: \"This rule will be used\",\n              location: asts.findRule(ast, to).nameLocation,\n            }]\n          );\n        }\n      },\n    });\n\n    replace(ast);\n  }\n\n  const indices = [];\n\n  ast.rules.forEach((rule, i) => {\n    if (isProxyRule(rule)) {\n      replaceRuleRefs(ast, rule.name, rule.expression.name);\n      if (options.allowedStartRules.indexOf(rule.name) === -1) {\n        indices.push(i);\n      }\n    }\n  });\n\n  indices.reverse();\n\n  indices.forEach(i => { ast.rules.splice(i, 1); });\n}\n\nmodule.exports = removeProxyRules;\n","\"use strict\";\n\nconst visitor = require(\"../visitor\");\n\n// Checks that each label is defined only once within each scope.\nfunction reportDuplicateLabels(ast, options, session) {\n  function cloneEnv(env) {\n    const clone = {};\n\n    Object.keys(env).forEach(name => {\n      clone[name] = env[name];\n    });\n\n    return clone;\n  }\n\n  function checkExpressionWithClonedEnv(node, env) {\n    check(node.expression, cloneEnv(env));\n  }\n\n  const check = visitor.build({\n    rule(node) {\n      check(node.expression, { });\n    },\n\n    choice(node, env) {\n      node.alternatives.forEach(alternative => {\n        check(alternative, cloneEnv(env));\n      });\n    },\n\n    action: checkExpressionWithClonedEnv,\n\n    labeled(node, env) {\n      const label = node.label;\n      if (label && Object.prototype.hasOwnProperty.call(env, label)) {\n        session.error(\n          `Label \"${node.label}\" is already defined`,\n          node.labelLocation,\n          [{\n            message: \"Original label location\",\n            location: env[label],\n          }]\n        );\n      }\n\n      check(node.expression, env);\n\n      env[node.label] = node.labelLocation;\n    },\n\n    text: checkExpressionWithClonedEnv,\n    simple_and: checkExpressionWithClonedEnv,\n    simple_not: checkExpressionWithClonedEnv,\n    optional: checkExpressionWithClonedEnv,\n    zero_or_more: checkExpressionWithClonedEnv,\n    one_or_more: checkExpressionWithClonedEnv,\n    group: checkExpressionWithClonedEnv,\n  });\n\n  check(ast);\n}\n\nmodule.exports = reportDuplicateLabels;\n","\"use strict\";\n\nconst visitor = require(\"../visitor\");\n\n// Checks that each rule is defined only once.\nfunction reportDuplicateRules(ast, options, session) {\n  const rules = {};\n\n  const check = visitor.build({\n    rule(node) {\n      if (Object.prototype.hasOwnProperty.call(rules, node.name)) {\n        session.error(\n          `Rule \"${node.name}\" is already defined`,\n          node.nameLocation,\n          [{\n            message: \"Original rule location\",\n            location: rules[node.name],\n          }]\n        );\n\n        // Do not rewrite original rule location\n        return;\n      }\n\n      rules[node.name] = node.nameLocation;\n    },\n  });\n\n  check(ast);\n}\n\nmodule.exports = reportDuplicateRules;\n","\"use strict\";\n\nconst asts = require(\"../asts\");\nconst visitor = require(\"../visitor\");\n\n// Reports left recursion in the grammar, which prevents infinite recursion in\n// the generated parser.\n//\n// Both direct and indirect recursion is detected. The pass also correctly\n// reports cases like this:\n//\n//   start = \"a\"? start\n//\n// In general, if a rule reference can be reached without consuming any input,\n// it can lead to left recursion.\nfunction reportInfiniteRecursion(ast, options, session) {\n  // Array with rule names for error message\n  const visitedRules = [];\n  // Array with rule_refs for diagnostic\n  const backtraceRefs = [];\n\n  const check = visitor.build({\n    rule(node) {\n      visitedRules.push(node.name);\n      check(node.expression);\n      visitedRules.pop();\n    },\n\n    sequence(node) {\n      node.elements.every(element => {\n        check(element);\n\n        return !asts.alwaysConsumesOnSuccess(ast, element);\n      });\n    },\n\n    rule_ref(node) {\n      backtraceRefs.push(node);\n\n      const rule = asts.findRule(ast, node.name);\n\n      if (visitedRules.indexOf(node.name) !== -1) {\n        visitedRules.push(node.name);\n\n        session.error(\n          \"Possible infinite loop when parsing (left recursion: \"\n            + visitedRules.join(\" -> \")\n            + \")\",\n          rule.nameLocation,\n          backtraceRefs.map((ref, i, a) => ({\n            message: i + 1 !== a.length\n              ? `Step ${i + 1}: call of the rule \"${ref.name}\" without input consumption`\n              : `Step ${i + 1}: call itself without input consumption - left recursion`,\n            location: ref.location,\n          }))\n        );\n\n        // Because we enter into recursion we should break it\n        return;\n      }\n\n      // Because we run all checks in one stage, some rules could be missing - this check\n      // executed in parallel\n      if (rule) {\n        check(rule);\n      }\n      backtraceRefs.pop();\n    },\n  });\n\n  check(ast);\n}\n\nmodule.exports = reportInfiniteRecursion;\n","\"use strict\";\n\nconst asts = require(\"../asts\");\nconst visitor = require(\"../visitor\");\n\n// Reports expressions that don't consume any input inside |*| or |+| in the\n// grammar, which prevents infinite loops in the generated parser.\nfunction reportInfiniteRepetition(ast, options, session) {\n  const check = visitor.build({\n    zero_or_more(node) {\n      if (!asts.alwaysConsumesOnSuccess(ast, node.expression)) {\n        session.error(\n          \"Possible infinite loop when parsing (repetition used with an expression that may not consume any input)\",\n          node.location\n        );\n      }\n    },\n\n    one_or_more(node) {\n      if (!asts.alwaysConsumesOnSuccess(ast, node.expression)) {\n        session.error(\n          \"Possible infinite loop when parsing (repetition used with an expression that may not consume any input)\",\n          node.location\n        );\n      }\n    },\n  });\n\n  check(ast);\n}\n\nmodule.exports = reportInfiniteRepetition;\n","\"use strict\";\n\nconst asts = require(\"../asts\");\nconst visitor = require(\"../visitor\");\n\n// Checks that all referenced rules exist.\nfunction reportUndefinedRules(ast, options, session) {\n  const check = visitor.build({\n    rule_ref(node) {\n      if (!asts.findRule(ast, node.name)) {\n        session.error(\n          `Rule \"${node.name}\" is not defined`,\n          node.location\n        );\n      }\n    },\n  });\n\n  check(ast);\n}\n\nmodule.exports = reportUndefinedRules;\n","\"use strict\";\n\nconst visitor = require(\"../visitor\");\n\n//\n// Compiler pass to ensure the following are enforced:\n//\n//   - plucking can not be done with an action block\n//\nfunction reportIncorrectPlucking(ast, options, session) {\n  const check = visitor.build({\n    action(node) {\n      check(node.expression, node);\n    },\n\n    labeled(node, action) {\n      if (node.pick) {\n        if (action) {\n          session.error(\n            \"\\\"@\\\" cannot be used with an action block\",\n            node.labelLocation,\n            [{\n              message: \"Action block location\",\n              location: action.codeLocation,\n            }]\n          );\n        }\n      }\n\n      check(node.expression);\n    },\n  });\n\n  check(ast);\n}\n\nmodule.exports = reportIncorrectPlucking;\n","\"use strict\";\n\nconst GrammarError = require(\"../grammar-error\");\n\nclass Defaults {\n  constructor(options) {\n    options = typeof options !== \"undefined\" ? options : {};\n\n    if (typeof options.error === \"function\") { this.error = options.error; }\n    if (typeof options.warning === \"function\") { this.warning = options.warning; }\n    if (typeof options.info === \"function\") { this.info = options.info; }\n  }\n\n  error() {\n    // Intentionally empty placeholder\n  }\n\n  warning() {\n    // Intentionally empty placeholder\n  }\n\n  info() {\n    // Intentionally empty placeholder\n  }\n}\n\nclass Session {\n  constructor(options) {\n    this._callbacks = new Defaults(options);\n    this._firstError = null;\n    this.errors = 0;\n    /** @type {import(\"../peg\").Problem[]} */\n    this.problems = [];\n    /** @type {import(\"../peg\").Stage} */\n    this.stage = null;\n  }\n\n  error(...args) {\n    ++this.errors;\n    // In order to preserve backward compatibility we cannot change `GrammarError`\n    // constructor, nor throw another class of error:\n    // - if we change `GrammarError` constructor, this will break plugins that\n    //   throws `GrammarError`\n    // - if we throw another Error class, this will break parser clients that\n    //   catches GrammarError\n    //\n    // So we use a compromise: we throw an `GrammarError` with all found problems\n    // in the `problems` property, but the thrown error itself is the first\n    // registered error.\n    //\n    // Thus when the old client catches the error it can find all properties on\n    // the Grammar error that it want. On the other hand the new client can\n    // inspect the `problems` property to get all problems.\n    if (this._firstError === null) {\n      this._firstError = new GrammarError(...args);\n      this._firstError.stage = this.stage;\n      this._firstError.problems = this.problems;\n    }\n\n    this.problems.push([\"error\", ...args]);\n    this._callbacks.error(this.stage, ...args);\n  }\n\n  warning(...args) {\n    this.problems.push([\"warning\", ...args]);\n    this._callbacks.warning(this.stage, ...args);\n  }\n\n  info(...args) {\n    this.problems.push([\"info\", ...args]);\n    this._callbacks.info(this.stage, ...args);\n  }\n\n  checkErrors() {\n    if (this.errors !== 0) {\n      throw this._firstError;\n    }\n  }\n}\n\nmodule.exports = Session;\n","\"use strict\";\n\nconst generateBytecode = require(\"./passes/generate-bytecode\");\nconst generateJS = require(\"./passes/generate-js\");\nconst inferenceMatchResult = require(\"./passes/inference-match-result\");\nconst removeProxyRules = require(\"./passes/remove-proxy-rules\");\nconst reportDuplicateLabels = require(\"./passes/report-duplicate-labels\");\nconst reportDuplicateRules = require(\"./passes/report-duplicate-rules\");\nconst reportInfiniteRecursion = require(\"./passes/report-infinite-recursion\");\nconst reportInfiniteRepetition = require(\"./passes/report-infinite-repetition\");\nconst reportUndefinedRules = require(\"./passes/report-undefined-rules\");\nconst reportIncorrectPlucking = require(\"./passes/report-incorrect-plucking\");\nconst Session = require(\"./session\");\nconst visitor = require(\"./visitor\");\n\nfunction processOptions(options, defaults) {\n  const processedOptions = {};\n\n  Object.keys(options).forEach(name => {\n    processedOptions[name] = options[name];\n  });\n\n  Object.keys(defaults).forEach(name => {\n    if (!Object.prototype.hasOwnProperty.call(processedOptions, name)) {\n      processedOptions[name] = defaults[name];\n    }\n  });\n\n  return processedOptions;\n}\n\nconst compiler = {\n  // AST node visitor builder. Useful mainly for plugins which manipulate the\n  // AST.\n  visitor,\n\n  // Compiler passes.\n  //\n  // Each pass is a function that is passed the AST. It can perform checks on it\n  // or modify it as needed. If the pass encounters a semantic error, it throws\n  // |peg.GrammarError|.\n  passes: {\n    check: [\n      reportUndefinedRules,\n      reportDuplicateRules,\n      reportDuplicateLabels,\n      reportInfiniteRecursion,\n      reportInfiniteRepetition,\n      reportIncorrectPlucking,\n    ],\n    transform: [\n      removeProxyRules,\n      inferenceMatchResult,\n    ],\n    generate: [\n      generateBytecode,\n      generateJS,\n    ],\n  },\n\n  // Generates a parser from a specified grammar AST. Throws |peg.GrammarError|\n  // if the AST contains a semantic error. Note that not all errors are detected\n  // during the generation and some may protrude to the generated parser and\n  // cause its malfunction.\n  compile(ast, passes, options) {\n    options = options !== undefined ? options : {};\n\n    options = processOptions(options, {\n      allowedStartRules: [ast.rules[0].name],\n      cache: false,\n      dependencies: {},\n      exportVar: null,\n      format: \"bare\",\n      output: \"parser\",\n      trace: false,\n    });\n\n    if (!Array.isArray(options.allowedStartRules)) {\n      throw new Error(\"allowedStartRules must be an array\");\n    }\n    if (options.allowedStartRules.length === 0) {\n      throw new Error(\"Must have at least one start rule\");\n    }\n    const allRules = ast.rules.map(r => r.name);\n    for (const rule of options.allowedStartRules) {\n      if (allRules.indexOf(rule) === -1) {\n        throw new Error(`Unknown start rule \"${rule}\"`);\n      }\n    }\n\n    const session = new Session(options);\n    Object.keys(passes).forEach(stage => {\n      session.stage = stage;\n      session.info(`Process stage ${stage}`);\n\n      passes[stage].forEach(pass => {\n        session.info(`Process pass ${stage}.${pass.name}`);\n\n        pass(ast, options, session);\n      });\n\n      // Collect all errors by stage\n      session.checkErrors();\n    });\n\n    switch (options.output) {\n      case \"parser\":\n        return eval(ast.code.toString());\n\n      case \"source\":\n        return ast.code.toString();\n\n      case \"source-and-map\":\n        return ast.code;\n\n      default:\n        throw new Error(\"Invalid output format: \" + options.output + \".\");\n    }\n  },\n};\n\nmodule.exports = compiler;\n","// Generated by Peggy 2.0.1.\n//\n// https://peggyjs.org/\n\n\"use strict\";\n\n\n  const OPS_TO_PREFIXED_TYPES = {\n    \"$\": \"text\",\n    \"&\": \"simple_and\",\n    \"!\": \"simple_not\"\n  };\n\n  const OPS_TO_SUFFIXED_TYPES = {\n    \"?\": \"optional\",\n    \"*\": \"zero_or_more\",\n    \"+\": \"one_or_more\"\n  };\n\n  const OPS_TO_SEMANTIC_PREDICATE_TYPES = {\n    \"&\": \"semantic_and\",\n    \"!\": \"semantic_not\"\n  };\n\nfunction peg$subclass(child, parent) {\n  function C() { this.constructor = child; }\n  C.prototype = parent.prototype;\n  child.prototype = new C();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n  var self = Error.call(this, message);\n  // istanbul ignore next Check is a necessary evil to support older environments\n  if (Object.setPrototypeOf) {\n    Object.setPrototypeOf(self, peg$SyntaxError.prototype);\n  }\n  self.expected = expected;\n  self.found = found;\n  self.location = location;\n  self.name = \"SyntaxError\";\n  return self;\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\nfunction peg$padEnd(str, targetLength, padString) {\n  padString = padString || \" \";\n  if (str.length > targetLength) { return str; }\n  targetLength -= str.length;\n  padString += padString.repeat(targetLength);\n  return str + padString.slice(0, targetLength);\n}\n\npeg$SyntaxError.prototype.format = function(sources) {\n  var str = \"Error: \" + this.message;\n  if (this.location) {\n    var src = null;\n    var k;\n    for (k = 0; k < sources.length; k++) {\n      if (sources[k].source === this.location.source) {\n        src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n        break;\n      }\n    }\n    var s = this.location.start;\n    var loc = this.location.source + \":\" + s.line + \":\" + s.column;\n    if (src) {\n      var e = this.location.end;\n      var filler = peg$padEnd(\"\", s.line.toString().length, ' ');\n      var line = src[s.line - 1];\n      var last = s.line === e.line ? e.column : line.length + 1;\n      var hatLen = (last - s.column) || 1;\n      str += \"\\n --> \" + loc + \"\\n\"\n          + filler + \" |\\n\"\n          + s.line + \" | \" + line + \"\\n\"\n          + filler + \" | \" + peg$padEnd(\"\", s.column - 1, ' ')\n          + peg$padEnd(\"\", hatLen, \"^\");\n    } else {\n      str += \"\\n at \" + loc;\n    }\n  }\n  return str;\n};\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 = expectation.parts.map(function(part) {\n        return Array.isArray(part)\n          ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n          : classEscape(part);\n      });\n\n      return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\";\n    },\n\n    any: function() {\n      return \"any character\";\n    },\n\n    end: function() {\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 = expected.map(describeExpectation);\n    var i, j;\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 !== undefined ? options : {};\n\n  var peg$FAILED = {};\n  var peg$source = options.grammarSource;\n\n  var peg$startRuleFunctions = { Grammar: peg$parseGrammar };\n  var peg$startRuleFunction = peg$parseGrammar;\n\n  var peg$c0 = \"{\";\n  var peg$c1 = \"}\";\n  var peg$c2 = \"=\";\n  var peg$c3 = \"/\";\n  var peg$c4 = \"@\";\n  var peg$c5 = \":\";\n  var peg$c6 = \"$\";\n  var peg$c7 = \"&\";\n  var peg$c8 = \"!\";\n  var peg$c9 = \"?\";\n  var peg$c10 = \"*\";\n  var peg$c11 = \"+\";\n  var peg$c12 = \"(\";\n  var peg$c13 = \")\";\n  var peg$c14 = \"\\t\";\n  var peg$c15 = \"\\v\";\n  var peg$c16 = \"\\f\";\n  var peg$c17 = \" \";\n  var peg$c18 = \"\\xA0\";\n  var peg$c19 = \"\\uFEFF\";\n  var peg$c20 = \"\\n\";\n  var peg$c21 = \"\\r\\n\";\n  var peg$c22 = \"\\r\";\n  var peg$c23 = \"\\u2028\";\n  var peg$c24 = \"\\u2029\";\n  var peg$c25 = \"/*\";\n  var peg$c26 = \"*/\";\n  var peg$c27 = \"//\";\n  var peg$c28 = \"_\";\n  var peg$c29 = \"\\\\\";\n  var peg$c30 = \"\\u200C\";\n  var peg$c31 = \"\\u200D\";\n  var peg$c32 = \"i\";\n  var peg$c33 = \"\\\"\";\n  var peg$c34 = \"'\";\n  var peg$c35 = \"[\";\n  var peg$c36 = \"^\";\n  var peg$c37 = \"]\";\n  var peg$c38 = \"-\";\n  var peg$c39 = \"0\";\n  var peg$c40 = \"b\";\n  var peg$c41 = \"f\";\n  var peg$c42 = \"n\";\n  var peg$c43 = \"r\";\n  var peg$c44 = \"t\";\n  var peg$c45 = \"v\";\n  var peg$c46 = \"x\";\n  var peg$c47 = \"u\";\n  var peg$c48 = \".\";\n  var peg$c49 = \";\";\n\n  var peg$r0 = /^[\\n\\r\\u2028\\u2029]/;\n  var peg$r1 = /^[0-9]/;\n  var peg$r2 = /^[0-9a-f]/i;\n  var peg$r3 = /^[{}]/;\n  var peg$r4 = /^[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\\u0529\\u052B\\u052D\\u052F\\u0561-\\u0587\\u13F8-\\u13FD\\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\\uA699\\uA69B\\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-\\uA795\\uA797\\uA799\\uA79B\\uA79D\\uA79F\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7B5\\uA7B7\\uA7FA\\uAB30-\\uAB5A\\uAB60-\\uAB65\\uAB70-\\uABBF\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A]/;\n  var peg$r5 = /^[\\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\\uA69C-\\uA69D\\uA717-\\uA71F\\uA770\\uA788\\uA7F8-\\uA7F9\\uA9CF\\uA9E6\\uAA70\\uAADD\\uAAF3-\\uAAF4\\uAB5C-\\uAB5F\\uFF70\\uFF9E-\\uFF9F]/;\n  var peg$r6 = /^[\\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-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0972-\\u0980\\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\\u0AF9\\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-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\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\\u0D5F-\\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-\\u105D\\u1061\\u1065-\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10D0-\\u10FA\\u10FD-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17DC\\u1820-\\u1842\\u1844-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE-\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C77\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5-\\u1CF6\\u2135-\\u2138\\u2D30-\\u2D67\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3006\\u303C\\u3041-\\u3096\\u309F\\u30A1-\\u30FA\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA014\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA500-\\uA60B\\uA610-\\uA61F\\uA62A-\\uA62B\\uA66E\\uA6A0-\\uA6E5\\uA78F\\uA7F7\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9E0-\\uA9E4\\uA9E7-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA6F\\uAA71-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADC\\uAAE0-\\uAAEA\\uAAF2\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40-\\uFB41\\uFB43-\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF66-\\uFF6F\\uFF71-\\uFF9D\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/;\n  var peg$r7 = /^[\\u01C5\\u01C8\\u01CB\\u01F2\\u1F88-\\u1F8F\\u1F98-\\u1F9F\\u1FA8-\\u1FAF\\u1FBC\\u1FCC\\u1FFC]/;\n  var peg$r8 = /^[A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178-\\u0179\\u017B\\u017D\\u0181-\\u0182\\u0184\\u0186-\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193-\\u0194\\u0196-\\u0198\\u019C-\\u019D\\u019F-\\u01A0\\u01A2\\u01A4\\u01A6-\\u01A7\\u01A9\\u01AC\\u01AE-\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7-\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A-\\u023B\\u023D-\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9-\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0-\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u10A0-\\u10C5\\u10C7\\u10CD\\u13A0-\\u13F5\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E-\\u213F\\u2145\\u2183\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D-\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AD\\uA7B0-\\uA7B4\\uA7B6\\uFF21-\\uFF3A]/;\n  var peg$r9 = /^[\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E-\\u094F\\u0982-\\u0983\\u09BE-\\u09C0\\u09C7-\\u09C8\\u09CB-\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB-\\u0ACC\\u0B02-\\u0B03\\u0B3E\\u0B40\\u0B47-\\u0B48\\u0B4B-\\u0B4C\\u0B57\\u0BBE-\\u0BBF\\u0BC1-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82-\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7-\\u0CC8\\u0CCA-\\u0CCB\\u0CD5-\\u0CD6\\u0D02-\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82-\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2-\\u0DF3\\u0F3E-\\u0F3F\\u0F7F\\u102B-\\u102C\\u1031\\u1038\\u103B-\\u103C\\u1056-\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083-\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7-\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930-\\u1931\\u1933-\\u1938\\u1A19-\\u1A1A\\u1A55\\u1A57\\u1A61\\u1A63-\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B44\\u1B82\\u1BA1\\u1BA6-\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2-\\u1BF3\\u1C24-\\u1C2B\\u1C34-\\u1C35\\u1CE1\\u1CF2-\\u1CF3\\u302E-\\u302F\\uA823-\\uA824\\uA827\\uA880-\\uA881\\uA8B4-\\uA8C3\\uA952-\\uA953\\uA983\\uA9B4-\\uA9B5\\uA9BA-\\uA9BB\\uA9BD-\\uA9C0\\uAA2F-\\uAA30\\uAA33-\\uAA34\\uAA4D\\uAA7B\\uAA7D\\uAAEB\\uAAEE-\\uAAEF\\uAAF5\\uABE3-\\uABE4\\uABE6-\\uABE7\\uABE9-\\uABEA\\uABEC]/;\n  var peg$r10 = /^[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1-\\u05C2\\u05C4-\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7-\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962-\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2-\\u09E3\\u0A01-\\u0A02\\u0A3C\\u0A41-\\u0A42\\u0A47-\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70-\\u0A71\\u0A75\\u0A81-\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7-\\u0AC8\\u0ACD\\u0AE2-\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62-\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55-\\u0C56\\u0C62-\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC6\\u0CCC-\\u0CCD\\u0CE2-\\u0CE3\\u0D01\\u0D41-\\u0D44\\u0D4D\\u0D62-\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB-\\u0EBC\\u0EC8-\\u0ECD\\u0F18-\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86-\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039-\\u103A\\u103D-\\u103E\\u1058-\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085-\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752-\\u1753\\u1772-\\u1773\\u17B4-\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927-\\u1928\\u1932\\u1939-\\u193B\\u1A17-\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ABD\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80-\\u1B81\\u1BA2-\\u1BA5\\u1BA8-\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8-\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8-\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099-\\u309A\\uA66F\\uA674-\\uA67D\\uA69E-\\uA69F\\uA6F0-\\uA6F1\\uA802\\uA806\\uA80B\\uA825-\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9E5\\uAA29-\\uAA2E\\uAA31-\\uAA32\\uAA35-\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7-\\uAAB8\\uAABE-\\uAABF\\uAAC1\\uAAEC-\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F]/;\n  var peg$r11 = /^[0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]/;\n  var peg$r12 = /^[\\u16EE-\\u16F0\\u2160-\\u2182\\u2185-\\u2188\\u3007\\u3021-\\u3029\\u3038-\\u303A\\uA6E6-\\uA6EF]/;\n  var peg$r13 = /^[_\\u203F-\\u2040\\u2054\\uFE33-\\uFE34\\uFE4D-\\uFE4F\\uFF3F]/;\n  var peg$r14 = /^[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\n\n  var peg$e0 = peg$literalExpectation(\"{\", false);\n  var peg$e1 = peg$literalExpectation(\"}\", false);\n  var peg$e2 = peg$literalExpectation(\"=\", false);\n  var peg$e3 = peg$literalExpectation(\"/\", false);\n  var peg$e4 = peg$literalExpectation(\"@\", false);\n  var peg$e5 = peg$literalExpectation(\":\", false);\n  var peg$e6 = peg$literalExpectation(\"$\", false);\n  var peg$e7 = peg$literalExpectation(\"&\", false);\n  var peg$e8 = peg$literalExpectation(\"!\", false);\n  var peg$e9 = peg$literalExpectation(\"?\", false);\n  var peg$e10 = peg$literalExpectation(\"*\", false);\n  var peg$e11 = peg$literalExpectation(\"+\", false);\n  var peg$e12 = peg$literalExpectation(\"(\", false);\n  var peg$e13 = peg$literalExpectation(\")\", false);\n  var peg$e14 = peg$anyExpectation();\n  var peg$e15 = peg$otherExpectation(\"whitespace\");\n  var peg$e16 = peg$literalExpectation(\"\\t\", false);\n  var peg$e17 = peg$literalExpectation(\"\\v\", false);\n  var peg$e18 = peg$literalExpectation(\"\\f\", false);\n  var peg$e19 = peg$literalExpectation(\" \", false);\n  var peg$e20 = peg$literalExpectation(\"\\xA0\", false);\n  var peg$e21 = peg$literalExpectation(\"\\uFEFF\", false);\n  var peg$e22 = peg$classExpectation([\"\\n\", \"\\r\", \"\\u2028\", \"\\u2029\"], false, false);\n  var peg$e23 = peg$otherExpectation(\"end of line\");\n  var peg$e24 = peg$literalExpectation(\"\\n\", false);\n  var peg$e25 = peg$literalExpectation(\"\\r\\n\", false);\n  var peg$e26 = peg$literalExpectation(\"\\r\", false);\n  var peg$e27 = peg$literalExpectation(\"\\u2028\", false);\n  var peg$e28 = peg$literalExpectation(\"\\u2029\", false);\n  var peg$e29 = peg$otherExpectation(\"comment\");\n  var peg$e30 = peg$literalExpectation(\"/*\", false);\n  var peg$e31 = peg$literalExpectation(\"*/\", false);\n  var peg$e32 = peg$literalExpectation(\"//\", false);\n  var peg$e33 = peg$otherExpectation(\"identifier\");\n  var peg$e34 = peg$literalExpectation(\"_\", false);\n  var peg$e35 = peg$literalExpectation(\"\\\\\", false);\n  var peg$e36 = peg$literalExpectation(\"\\u200C\", false);\n  var peg$e37 = peg$literalExpectation(\"\\u200D\", false);\n  var peg$e38 = peg$otherExpectation(\"literal\");\n  var peg$e39 = peg$literalExpectation(\"i\", false);\n  var peg$e40 = peg$otherExpectation(\"string\");\n  var peg$e41 = peg$literalExpectation(\"\\\"\", false);\n  var peg$e42 = peg$literalExpectation(\"'\", false);\n  var peg$e43 = peg$otherExpectation(\"character class\");\n  var peg$e44 = peg$literalExpectation(\"[\", false);\n  var peg$e45 = peg$literalExpectation(\"^\", false);\n  var peg$e46 = peg$literalExpectation(\"]\", false);\n  var peg$e47 = peg$literalExpectation(\"-\", false);\n  var peg$e48 = peg$literalExpectation(\"0\", false);\n  var peg$e49 = peg$literalExpectation(\"b\", false);\n  var peg$e50 = peg$literalExpectation(\"f\", false);\n  var peg$e51 = peg$literalExpectation(\"n\", false);\n  var peg$e52 = peg$literalExpectation(\"r\", false);\n  var peg$e53 = peg$literalExpectation(\"t\", false);\n  var peg$e54 = peg$literalExpectation(\"v\", false);\n  var peg$e55 = peg$literalExpectation(\"x\", false);\n  var peg$e56 = peg$literalExpectation(\"u\", false);\n  var peg$e57 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n  var peg$e58 = peg$classExpectation([[\"0\", \"9\"], [\"a\", \"f\"]], false, true);\n  var peg$e59 = peg$literalExpectation(\".\", false);\n  var peg$e60 = peg$otherExpectation(\"code block\");\n  var peg$e61 = peg$classExpectation([\"{\", \"}\"], false, false);\n  var peg$e62 = 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\", \"\\u0529\", \"\\u052B\", \"\\u052D\", \"\\u052F\", [\"\\u0561\", \"\\u0587\"], [\"\\u13F8\", \"\\u13FD\"], [\"\\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\", \"\\uA699\", \"\\uA69B\", \"\\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\", \"\\uA795\"], \"\\uA797\", \"\\uA799\", \"\\uA79B\", \"\\uA79D\", \"\\uA79F\", \"\\uA7A1\", \"\\uA7A3\", \"\\uA7A5\", \"\\uA7A7\", \"\\uA7A9\", \"\\uA7B5\", \"\\uA7B7\", \"\\uA7FA\", [\"\\uAB30\", \"\\uAB5A\"], [\"\\uAB60\", \"\\uAB65\"], [\"\\uAB70\", \"\\uABBF\"], [\"\\uFB00\", \"\\uFB06\"], [\"\\uFB13\", \"\\uFB17\"], [\"\\uFF41\", \"\\uFF5A\"]], false, false);\n  var peg$e63 = 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\", [\"\\uA69C\", \"\\uA69D\"], [\"\\uA717\", \"\\uA71F\"], \"\\uA770\", \"\\uA788\", [\"\\uA7F8\", \"\\uA7F9\"], \"\\uA9CF\", \"\\uA9E6\", \"\\uAA70\", \"\\uAADD\", [\"\\uAAF3\", \"\\uAAF4\"], [\"\\uAB5C\", \"\\uAB5F\"], \"\\uFF70\", [\"\\uFF9E\", \"\\uFF9F\"]], false, false);\n  var peg$e64 = peg$classExpectation([\"\\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\", \"\\u08B4\"], [\"\\u0904\", \"\\u0939\"], \"\\u093D\", \"\\u0950\", [\"\\u0958\", \"\\u0961\"], [\"\\u0972\", \"\\u0980\"], [\"\\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\"], \"\\u0AF9\", [\"\\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\", \"\\u0C39\"], \"\\u0C3D\", [\"\\u0C58\", \"\\u0C5A\"], [\"\\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\", [\"\\u0D5F\", \"\\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\", \"\\u105D\"], \"\\u1061\", [\"\\u1065\", \"\\u1066\"], [\"\\u106E\", \"\\u1070\"], [\"\\u1075\", \"\\u1081\"], \"\\u108E\", [\"\\u10D0\", \"\\u10FA\"], [\"\\u10FD\", \"\\u1248\"], [\"\\u124A\", \"\\u124D\"], [\"\\u1250\", \"\\u1256\"], \"\\u1258\", [\"\\u125A\", \"\\u125D\"], [\"\\u1260\", \"\\u1288\"], [\"\\u128A\", \"\\u128D\"], [\"\\u1290\", \"\\u12B0\"], [\"\\u12B2\", \"\\u12B5\"], [\"\\u12B8\", \"\\u12BE\"], \"\\u12C0\", [\"\\u12C2\", \"\\u12C5\"], [\"\\u12C8\", \"\\u12D6\"], [\"\\u12D8\", \"\\u1310\"], [\"\\u1312\", \"\\u1315\"], [\"\\u1318\", \"\\u135A\"], [\"\\u1380\", \"\\u138F\"], [\"\\u1401\", \"\\u166C\"], [\"\\u166F\", \"\\u167F\"], [\"\\u1681\", \"\\u169A\"], [\"\\u16A0\", \"\\u16EA\"], [\"\\u16F1\", \"\\u16F8\"], [\"\\u1700\", \"\\u170C\"], [\"\\u170E\", \"\\u1711\"], [\"\\u1720\", \"\\u1731\"], [\"\\u1740\", \"\\u1751\"], [\"\\u1760\", \"\\u176C\"], [\"\\u176E\", \"\\u1770\"], [\"\\u1780\", \"\\u17B3\"], \"\\u17DC\", [\"\\u1820\", \"\\u1842\"], [\"\\u1844\", \"\\u1877\"], [\"\\u1880\", \"\\u18A8\"], \"\\u18AA\", [\"\\u18B0\", \"\\u18F5\"], [\"\\u1900\", \"\\u191E\"], [\"\\u1950\", \"\\u196D\"], [\"\\u1970\", \"\\u1974\"], [\"\\u1980\", \"\\u19AB\"], [\"\\u19B0\", \"\\u19C9\"], [\"\\u1A00\", \"\\u1A16\"], [\"\\u1A20\", \"\\u1A54\"], [\"\\u1B05\", \"\\u1B33\"], [\"\\u1B45\", \"\\u1B4B\"], [\"\\u1B83\", \"\\u1BA0\"], [\"\\u1BAE\", \"\\u1BAF\"], [\"\\u1BBA\", \"\\u1BE5\"], [\"\\u1C00\", \"\\u1C23\"], [\"\\u1C4D\", \"\\u1C4F\"], [\"\\u1C5A\", \"\\u1C77\"], [\"\\u1CE9\", \"\\u1CEC\"], [\"\\u1CEE\", \"\\u1CF1\"], [\"\\u1CF5\", \"\\u1CF6\"], [\"\\u2135\", \"\\u2138\"], [\"\\u2D30\", \"\\u2D67\"], [\"\\u2D80\", \"\\u2D96\"], [\"\\u2DA0\", \"\\u2DA6\"], [\"\\u2DA8\", \"\\u2DAE\"], [\"\\u2DB0\", \"\\u2DB6\"], [\"\\u2DB8\", \"\\u2DBE\"], [\"\\u2DC0\", \"\\u2DC6\"], [\"\\u2DC8\", \"\\u2DCE\"], [\"\\u2DD0\", \"\\u2DD6\"], [\"\\u2DD8\", \"\\u2DDE\"], \"\\u3006\", \"\\u303C\", [\"\\u3041\", \"\\u3096\"], \"\\u309F\", [\"\\u30A1\", \"\\u30FA\"], \"\\u30FF\", [\"\\u3105\", \"\\u312D\"], [\"\\u3131\", \"\\u318E\"], [\"\\u31A0\", \"\\u31BA\"], [\"\\u31F0\", \"\\u31FF\"], [\"\\u3400\", \"\\u4DB5\"], [\"\\u4E00\", \"\\u9FD5\"], [\"\\uA000\", \"\\uA014\"], [\"\\uA016\", \"\\uA48C\"], [\"\\uA4D0\", \"\\uA4F7\"], [\"\\uA500\", \"\\uA60B\"], [\"\\uA610\", \"\\uA61F\"], [\"\\uA62A\", \"\\uA62B\"], \"\\uA66E\", [\"\\uA6A0\", \"\\uA6E5\"], \"\\uA78F\", \"\\uA7F7\", [\"\\uA7FB\", \"\\uA801\"], [\"\\uA803\", \"\\uA805\"], [\"\\uA807\", \"\\uA80A\"], [\"\\uA80C\", \"\\uA822\"], [\"\\uA840\", \"\\uA873\"], [\"\\uA882\", \"\\uA8B3\"], [\"\\uA8F2\", \"\\uA8F7\"], \"\\uA8FB\", \"\\uA8FD\", [\"\\uA90A\", \"\\uA925\"], [\"\\uA930\", \"\\uA946\"], [\"\\uA960\", \"\\uA97C\"], [\"\\uA984\", \"\\uA9B2\"], [\"\\uA9E0\", \"\\uA9E4\"], [\"\\uA9E7\", \"\\uA9EF\"], [\"\\uA9FA\", \"\\uA9FE\"], [\"\\uAA00\", \"\\uAA28\"], [\"\\uAA40\", \"\\uAA42\"], [\"\\uAA44\", \"\\uAA4B\"], [\"\\uAA60\", \"\\uAA6F\"], [\"\\uAA71\", \"\\uAA76\"], \"\\uAA7A\", [\"\\uAA7E\", \"\\uAAAF\"], \"\\uAAB1\", [\"\\uAAB5\", \"\\uAAB6\"], [\"\\uAAB9\", \"\\uAABD\"], \"\\uAAC0\", \"\\uAAC2\", [\"\\uAADB\", \"\\uAADC\"], [\"\\uAAE0\", \"\\uAAEA\"], \"\\uAAF2\", [\"\\uAB01\", \"\\uAB06\"], [\"\\uAB09\", \"\\uAB0E\"], [\"\\uAB11\", \"\\uAB16\"], [\"\\uAB20\", \"\\uAB26\"], [\"\\uAB28\", \"\\uAB2E\"], [\"\\uABC0\", \"\\uABE2\"], [\"\\uAC00\", \"\\uD7A3\"], [\"\\uD7B0\", \"\\uD7C6\"], [\"\\uD7CB\", \"\\uD7FB\"], [\"\\uF900\", \"\\uFA6D\"], [\"\\uFA70\", \"\\uFAD9\"], \"\\uFB1D\", [\"\\uFB1F\", \"\\uFB28\"], [\"\\uFB2A\", \"\\uFB36\"], [\"\\uFB38\", \"\\uFB3C\"], \"\\uFB3E\", [\"\\uFB40\", \"\\uFB41\"], [\"\\uFB43\", \"\\uFB44\"], [\"\\uFB46\", \"\\uFBB1\"], [\"\\uFBD3\", \"\\uFD3D\"], [\"\\uFD50\", \"\\uFD8F\"], [\"\\uFD92\", \"\\uFDC7\"], [\"\\uFDF0\", \"\\uFDFB\"], [\"\\uFE70\", \"\\uFE74\"], [\"\\uFE76\", \"\\uFEFC\"], [\"\\uFF66\", \"\\uFF6F\"], [\"\\uFF71\", \"\\uFF9D\"], [\"\\uFFA0\", \"\\uFFBE\"], [\"\\uFFC2\", \"\\uFFC7\"], [\"\\uFFCA\", \"\\uFFCF\"], [\"\\uFFD2\", \"\\uFFD7\"], [\"\\uFFDA\", \"\\uFFDC\"]], false, false);\n  var peg$e65 = peg$classExpectation([\"\\u01C5\", \"\\u01C8\", \"\\u01CB\", \"\\u01F2\", [\"\\u1F88\", \"\\u1F8F\"], [\"\\u1F98\", \"\\u1F9F\"], [\"\\u1FA8\", \"\\u1FAF\"], \"\\u1FBC\", \"\\u1FCC\", \"\\u1FFC\"], false, false);\n  var peg$e66 = peg$classExpectation([[\"A\", \"Z\"], [\"\\xC0\", \"\\xD6\"], [\"\\xD8\", \"\\xDE\"], \"\\u0100\", \"\\u0102\", \"\\u0104\", \"\\u0106\", \"\\u0108\", \"\\u010A\", \"\\u010C\", \"\\u010E\", \"\\u0110\", \"\\u0112\", \"\\u0114\", \"\\u0116\", \"\\u0118\", \"\\u011A\", \"\\u011C\", \"\\u011E\", \"\\u0120\", \"\\u0122\", \"\\u0124\", \"\\u0126\", \"\\u0128\", \"\\u012A\", \"\\u012C\", \"\\u012E\", \"\\u0130\", \"\\u0132\", \"\\u0134\", \"\\u0136\", \"\\u0139\", \"\\u013B\", \"\\u013D\", \"\\u013F\", \"\\u0141\", \"\\u0143\", \"\\u0145\", \"\\u0147\", \"\\u014A\", \"\\u014C\", \"\\u014E\", \"\\u0150\", \"\\u0152\", \"\\u0154\", \"\\u0156\", \"\\u0158\", \"\\u015A\", \"\\u015C\", \"\\u015E\", \"\\u0160\", \"\\u0162\", \"\\u0164\", \"\\u0166\", \"\\u0168\", \"\\u016A\", \"\\u016C\", \"\\u016E\", \"\\u0170\", \"\\u0172\", \"\\u0174\", \"\\u0176\", [\"\\u0178\", \"\\u0179\"], \"\\u017B\", \"\\u017D\", [\"\\u0181\", \"\\u0182\"], \"\\u0184\", [\"\\u0186\", \"\\u0187\"], [\"\\u0189\", \"\\u018B\"], [\"\\u018E\", \"\\u0191\"], [\"\\u0193\", \"\\u0194\"], [\"\\u0196\", \"\\u0198\"], [\"\\u019C\", \"\\u019D\"], [\"\\u019F\", \"\\u01A0\"], \"\\u01A2\", \"\\u01A4\", [\"\\u01A6\", \"\\u01A7\"], \"\\u01A9\", \"\\u01AC\", [\"\\u01AE\", \"\\u01AF\"], [\"\\u01B1\", \"\\u01B3\"], \"\\u01B5\", [\"\\u01B7\", \"\\u01B8\"], \"\\u01BC\", \"\\u01C4\", \"\\u01C7\", \"\\u01CA\", \"\\u01CD\", \"\\u01CF\", \"\\u01D1\", \"\\u01D3\", \"\\u01D5\", \"\\u01D7\", \"\\u01D9\", \"\\u01DB\", \"\\u01DE\", \"\\u01E0\", \"\\u01E2\", \"\\u01E4\", \"\\u01E6\", \"\\u01E8\", \"\\u01EA\", \"\\u01EC\", \"\\u01EE\", \"\\u01F1\", \"\\u01F4\", [\"\\u01F6\", \"\\u01F8\"], \"\\u01FA\", \"\\u01FC\", \"\\u01FE\", \"\\u0200\", \"\\u0202\", \"\\u0204\", \"\\u0206\", \"\\u0208\", \"\\u020A\", \"\\u020C\", \"\\u020E\", \"\\u0210\", \"\\u0212\", \"\\u0214\", \"\\u0216\", \"\\u0218\", \"\\u021A\", \"\\u021C\", \"\\u021E\", \"\\u0220\", \"\\u0222\", \"\\u0224\", \"\\u0226\", \"\\u0228\", \"\\u022A\", \"\\u022C\", \"\\u022E\", \"\\u0230\", \"\\u0232\", [\"\\u023A\", \"\\u023B\"], [\"\\u023D\", \"\\u023E\"], \"\\u0241\", [\"\\u0243\", \"\\u0246\"], \"\\u0248\", \"\\u024A\", \"\\u024C\", \"\\u024E\", \"\\u0370\", \"\\u0372\", \"\\u0376\", \"\\u037F\", \"\\u0386\", [\"\\u0388\", \"\\u038A\"], \"\\u038C\", [\"\\u038E\", \"\\u038F\"], [\"\\u0391\", \"\\u03A1\"], [\"\\u03A3\", \"\\u03AB\"], \"\\u03CF\", [\"\\u03D2\", \"\\u03D4\"], \"\\u03D8\", \"\\u03DA\", \"\\u03DC\", \"\\u03DE\", \"\\u03E0\", \"\\u03E2\", \"\\u03E4\", \"\\u03E6\", \"\\u03E8\", \"\\u03EA\", \"\\u03EC\", \"\\u03EE\", \"\\u03F4\", \"\\u03F7\", [\"\\u03F9\", \"\\u03FA\"], [\"\\u03FD\", \"\\u042F\"], \"\\u0460\", \"\\u0462\", \"\\u0464\", \"\\u0466\", \"\\u0468\", \"\\u046A\", \"\\u046C\", \"\\u046E\", \"\\u0470\", \"\\u0472\", \"\\u0474\", \"\\u0476\", \"\\u0478\", \"\\u047A\", \"\\u047C\", \"\\u047E\", \"\\u0480\", \"\\u048A\", \"\\u048C\", \"\\u048E\", \"\\u0490\", \"\\u0492\", \"\\u0494\", \"\\u0496\", \"\\u0498\", \"\\u049A\", \"\\u049C\", \"\\u049E\", \"\\u04A0\", \"\\u04A2\", \"\\u04A4\", \"\\u04A6\", \"\\u04A8\", \"\\u04AA\", \"\\u04AC\", \"\\u04AE\", \"\\u04B0\", \"\\u04B2\", \"\\u04B4\", \"\\u04B6\", \"\\u04B8\", \"\\u04BA\", \"\\u04BC\", \"\\u04BE\", [\"\\u04C0\", \"\\u04C1\"], \"\\u04C3\", \"\\u04C5\", \"\\u04C7\", \"\\u04C9\", \"\\u04CB\", \"\\u04CD\", \"\\u04D0\", \"\\u04D2\", \"\\u04D4\", \"\\u04D6\", \"\\u04D8\", \"\\u04DA\", \"\\u04DC\", \"\\u04DE\", \"\\u04E0\", \"\\u04E2\", \"\\u04E4\", \"\\u04E6\", \"\\u04E8\", \"\\u04EA\", \"\\u04EC\", \"\\u04EE\", \"\\u04F0\", \"\\u04F2\", \"\\u04F4\", \"\\u04F6\", \"\\u04F8\", \"\\u04FA\", \"\\u04FC\", \"\\u04FE\", \"\\u0500\", \"\\u0502\", \"\\u0504\", \"\\u0506\", \"\\u0508\", \"\\u050A\", \"\\u050C\", \"\\u050E\", \"\\u0510\", \"\\u0512\", \"\\u0514\", \"\\u0516\", \"\\u0518\", \"\\u051A\", \"\\u051C\", \"\\u051E\", \"\\u0520\", \"\\u0522\", \"\\u0524\", \"\\u0526\", \"\\u0528\", \"\\u052A\", \"\\u052C\", \"\\u052E\", [\"\\u0531\", \"\\u0556\"], [\"\\u10A0\", \"\\u10C5\"], \"\\u10C7\", \"\\u10CD\", [\"\\u13A0\", \"\\u13F5\"], \"\\u1E00\", \"\\u1E02\", \"\\u1E04\", \"\\u1E06\", \"\\u1E08\", \"\\u1E0A\", \"\\u1E0C\", \"\\u1E0E\", \"\\u1E10\", \"\\u1E12\", \"\\u1E14\", \"\\u1E16\", \"\\u1E18\", \"\\u1E1A\", \"\\u1E1C\", \"\\u1E1E\", \"\\u1E20\", \"\\u1E22\", \"\\u1E24\", \"\\u1E26\", \"\\u1E28\", \"\\u1E2A\", \"\\u1E2C\", \"\\u1E2E\", \"\\u1E30\", \"\\u1E32\", \"\\u1E34\", \"\\u1E36\", \"\\u1E38\", \"\\u1E3A\", \"\\u1E3C\", \"\\u1E3E\", \"\\u1E40\", \"\\u1E42\", \"\\u1E44\", \"\\u1E46\", \"\\u1E48\", \"\\u1E4A\", \"\\u1E4C\", \"\\u1E4E\", \"\\u1E50\", \"\\u1E52\", \"\\u1E54\", \"\\u1E56\", \"\\u1E58\", \"\\u1E5A\", \"\\u1E5C\", \"\\u1E5E\", \"\\u1E60\", \"\\u1E62\", \"\\u1E64\", \"\\u1E66\", \"\\u1E68\", \"\\u1E6A\", \"\\u1E6C\", \"\\u1E6E\", \"\\u1E70\", \"\\u1E72\", \"\\u1E74\", \"\\u1E76\", \"\\u1E78\", \"\\u1E7A\", \"\\u1E7C\", \"\\u1E7E\", \"\\u1E80\", \"\\u1E82\", \"\\u1E84\", \"\\u1E86\", \"\\u1E88\", \"\\u1E8A\", \"\\u1E8C\", \"\\u1E8E\", \"\\u1E90\", \"\\u1E92\", \"\\u1E94\", \"\\u1E9E\", \"\\u1EA0\", \"\\u1EA2\", \"\\u1EA4\", \"\\u1EA6\", \"\\u1EA8\", \"\\u1EAA\", \"\\u1EAC\", \"\\u1EAE\", \"\\u1EB0\", \"\\u1EB2\", \"\\u1EB4\", \"\\u1EB6\", \"\\u1EB8\", \"\\u1EBA\", \"\\u1EBC\", \"\\u1EBE\", \"\\u1EC0\", \"\\u1EC2\", \"\\u1EC4\", \"\\u1EC6\", \"\\u1EC8\", \"\\u1ECA\", \"\\u1ECC\", \"\\u1ECE\", \"\\u1ED0\", \"\\u1ED2\", \"\\u1ED4\", \"\\u1ED6\", \"\\u1ED8\", \"\\u1EDA\", \"\\u1EDC\", \"\\u1EDE\", \"\\u1EE0\", \"\\u1EE2\", \"\\u1EE4\", \"\\u1EE6\", \"\\u1EE8\", \"\\u1EEA\", \"\\u1EEC\", \"\\u1EEE\", \"\\u1EF0\", \"\\u1EF2\", \"\\u1EF4\", \"\\u1EF6\", \"\\u1EF8\", \"\\u1EFA\", \"\\u1EFC\", \"\\u1EFE\", [\"\\u1F08\", \"\\u1F0F\"], [\"\\u1F18\", \"\\u1F1D\"], [\"\\u1F28\", \"\\u1F2F\"], [\"\\u1F38\", \"\\u1F3F\"], [\"\\u1F48\", \"\\u1F4D\"], \"\\u1F59\", \"\\u1F5B\", \"\\u1F5D\", \"\\u1F5F\", [\"\\u1F68\", \"\\u1F6F\"], [\"\\u1FB8\", \"\\u1FBB\"], [\"\\u1FC8\", \"\\u1FCB\"], [\"\\u1FD8\", \"\\u1FDB\"], [\"\\u1FE8\", \"\\u1FEC\"], [\"\\u1FF8\", \"\\u1FFB\"], \"\\u2102\", \"\\u2107\", [\"\\u210B\", \"\\u210D\"], [\"\\u2110\", \"\\u2112\"], \"\\u2115\", [\"\\u2119\", \"\\u211D\"], \"\\u2124\", \"\\u2126\", \"\\u2128\", [\"\\u212A\", \"\\u212D\"], [\"\\u2130\", \"\\u2133\"], [\"\\u213E\", \"\\u213F\"], \"\\u2145\", \"\\u2183\", [\"\\u2C00\", \"\\u2C2E\"], \"\\u2C60\", [\"\\u2C62\", \"\\u2C64\"], \"\\u2C67\", \"\\u2C69\", \"\\u2C6B\", [\"\\u2C6D\", \"\\u2C70\"], \"\\u2C72\", \"\\u2C75\", [\"\\u2C7E\", \"\\u2C80\"], \"\\u2C82\", \"\\u2C84\", \"\\u2C86\", \"\\u2C88\", \"\\u2C8A\", \"\\u2C8C\", \"\\u2C8E\", \"\\u2C90\", \"\\u2C92\", \"\\u2C94\", \"\\u2C96\", \"\\u2C98\", \"\\u2C9A\", \"\\u2C9C\", \"\\u2C9E\", \"\\u2CA0\", \"\\u2CA2\", \"\\u2CA4\", \"\\u2CA6\", \"\\u2CA8\", \"\\u2CAA\", \"\\u2CAC\", \"\\u2CAE\", \"\\u2CB0\", \"\\u2CB2\", \"\\u2CB4\", \"\\u2CB6\", \"\\u2CB8\", \"\\u2CBA\", \"\\u2CBC\", \"\\u2CBE\", \"\\u2CC0\", \"\\u2CC2\", \"\\u2CC4\", \"\\u2CC6\", \"\\u2CC8\", \"\\u2CCA\", \"\\u2CCC\", \"\\u2CCE\", \"\\u2CD0\", \"\\u2CD2\", \"\\u2CD4\", \"\\u2CD6\", \"\\u2CD8\", \"\\u2CDA\", \"\\u2CDC\", \"\\u2CDE\", \"\\u2CE0\", \"\\u2CE2\", \"\\u2CEB\", \"\\u2CED\", \"\\u2CF2\", \"\\uA640\", \"\\uA642\", \"\\uA644\", \"\\uA646\", \"\\uA648\", \"\\uA64A\", \"\\uA64C\", \"\\uA64E\", \"\\uA650\", \"\\uA652\", \"\\uA654\", \"\\uA656\", \"\\uA658\", \"\\uA65A\", \"\\uA65C\", \"\\uA65E\", \"\\uA660\", \"\\uA662\", \"\\uA664\", \"\\uA666\", \"\\uA668\", \"\\uA66A\", \"\\uA66C\", \"\\uA680\", \"\\uA682\", \"\\uA684\", \"\\uA686\", \"\\uA688\", \"\\uA68A\", \"\\uA68C\", \"\\uA68E\", \"\\uA690\", \"\\uA692\", \"\\uA694\", \"\\uA696\", \"\\uA698\", \"\\uA69A\", \"\\uA722\", \"\\uA724\", \"\\uA726\", \"\\uA728\", \"\\uA72A\", \"\\uA72C\", \"\\uA72E\", \"\\uA732\", \"\\uA734\", \"\\uA736\", \"\\uA738\", \"\\uA73A\", \"\\uA73C\", \"\\uA73E\", \"\\uA740\", \"\\uA742\", \"\\uA744\", \"\\uA746\", \"\\uA748\", \"\\uA74A\", \"\\uA74C\", \"\\uA74E\", \"\\uA750\", \"\\uA752\", \"\\uA754\", \"\\uA756\", \"\\uA758\", \"\\uA75A\", \"\\uA75C\", \"\\uA75E\", \"\\uA760\", \"\\uA762\", \"\\uA764\", \"\\uA766\", \"\\uA768\", \"\\uA76A\", \"\\uA76C\", \"\\uA76E\", \"\\uA779\", \"\\uA77B\", [\"\\uA77D\", \"\\uA77E\"], \"\\uA780\", \"\\uA782\", \"\\uA784\", \"\\uA786\", \"\\uA78B\", \"\\uA78D\", \"\\uA790\", \"\\uA792\", \"\\uA796\", \"\\uA798\", \"\\uA79A\", \"\\uA79C\", \"\\uA79E\", \"\\uA7A0\", \"\\uA7A2\", \"\\uA7A4\", \"\\uA7A6\", \"\\uA7A8\", [\"\\uA7AA\", \"\\uA7AD\"], [\"\\uA7B0\", \"\\uA7B4\"], \"\\uA7B6\", [\"\\uFF21\", \"\\uFF3A\"]], false, false);\n  var peg$e67 = peg$classExpectation([\"\\u0903\", \"\\u093B\", [\"\\u093E\", \"\\u0940\"], [\"\\u0949\", \"\\u094C\"], [\"\\u094E\", \"\\u094F\"], [\"\\u0982\", \"\\u0983\"], [\"\\u09BE\", \"\\u09C0\"], [\"\\u09C7\", \"\\u09C8\"], [\"\\u09CB\", \"\\u09CC\"], \"\\u09D7\", \"\\u0A03\", [\"\\u0A3E\", \"\\u0A40\"], \"\\u0A83\", [\"\\u0ABE\", \"\\u0AC0\"], \"\\u0AC9\", [\"\\u0ACB\", \"\\u0ACC\"], [\"\\u0B02\", \"\\u0B03\"], \"\\u0B3E\", \"\\u0B40\", [\"\\u0B47\", \"\\u0B48\"], [\"\\u0B4B\", \"\\u0B4C\"], \"\\u0B57\", [\"\\u0BBE\", \"\\u0BBF\"], [\"\\u0BC1\", \"\\u0BC2\"], [\"\\u0BC6\", \"\\u0BC8\"], [\"\\u0BCA\", \"\\u0BCC\"], \"\\u0BD7\", [\"\\u0C01\", \"\\u0C03\"], [\"\\u0C41\", \"\\u0C44\"], [\"\\u0C82\", \"\\u0C83\"], \"\\u0CBE\", [\"\\u0CC0\", \"\\u0CC4\"], [\"\\u0CC7\", \"\\u0CC8\"], [\"\\u0CCA\", \"\\u0CCB\"], [\"\\u0CD5\", \"\\u0CD6\"], [\"\\u0D02\", \"\\u0D03\"], [\"\\u0D3E\", \"\\u0D40\"], [\"\\u0D46\", \"\\u0D48\"], [\"\\u0D4A\", \"\\u0D4C\"], \"\\u0D57\", [\"\\u0D82\", \"\\u0D83\"], [\"\\u0DCF\", \"\\u0DD1\"], [\"\\u0DD8\", \"\\u0DDF\"], [\"\\u0DF2\", \"\\u0DF3\"], [\"\\u0F3E\", \"\\u0F3F\"], \"\\u0F7F\", [\"\\u102B\", \"\\u102C\"], \"\\u1031\", \"\\u1038\", [\"\\u103B\", \"\\u103C\"], [\"\\u1056\", \"\\u1057\"], [\"\\u1062\", \"\\u1064\"], [\"\\u1067\", \"\\u106D\"], [\"\\u1083\", \"\\u1084\"], [\"\\u1087\", \"\\u108C\"], \"\\u108F\", [\"\\u109A\", \"\\u109C\"], \"\\u17B6\", [\"\\u17BE\", \"\\u17C5\"], [\"\\u17C7\", \"\\u17C8\"], [\"\\u1923\", \"\\u1926\"], [\"\\u1929\", \"\\u192B\"], [\"\\u1930\", \"\\u1931\"], [\"\\u1933\", \"\\u1938\"], [\"\\u1A19\", \"\\u1A1A\"], \"\\u1A55\", \"\\u1A57\", \"\\u1A61\", [\"\\u1A63\", \"\\u1A64\"], [\"\\u1A6D\", \"\\u1A72\"], \"\\u1B04\", \"\\u1B35\", \"\\u1B3B\", [\"\\u1B3D\", \"\\u1B41\"], [\"\\u1B43\", \"\\u1B44\"], \"\\u1B82\", \"\\u1BA1\", [\"\\u1BA6\", \"\\u1BA7\"], \"\\u1BAA\", \"\\u1BE7\", [\"\\u1BEA\", \"\\u1BEC\"], \"\\u1BEE\", [\"\\u1BF2\", \"\\u1BF3\"], [\"\\u1C24\", \"\\u1C2B\"], [\"\\u1C34\", \"\\u1C35\"], \"\\u1CE1\", [\"\\u1CF2\", \"\\u1CF3\"], [\"\\u302E\", \"\\u302F\"], [\"\\uA823\", \"\\uA824\"], \"\\uA827\", [\"\\uA880\", \"\\uA881\"], [\"\\uA8B4\", \"\\uA8C3\"], [\"\\uA952\", \"\\uA953\"], \"\\uA983\", [\"\\uA9B4\", \"\\uA9B5\"], [\"\\uA9BA\", \"\\uA9BB\"], [\"\\uA9BD\", \"\\uA9C0\"], [\"\\uAA2F\", \"\\uAA30\"], [\"\\uAA33\", \"\\uAA34\"], \"\\uAA4D\", \"\\uAA7B\", \"\\uAA7D\", \"\\uAAEB\", [\"\\uAAEE\", \"\\uAAEF\"], \"\\uAAF5\", [\"\\uABE3\", \"\\uABE4\"], [\"\\uABE6\", \"\\uABE7\"], [\"\\uABE9\", \"\\uABEA\"], \"\\uABEC\"], false, false);\n  var peg$e68 = peg$classExpectation([[\"\\u0300\", \"\\u036F\"], [\"\\u0483\", \"\\u0487\"], [\"\\u0591\", \"\\u05BD\"], \"\\u05BF\", [\"\\u05C1\", \"\\u05C2\"], [\"\\u05C4\", \"\\u05C5\"], \"\\u05C7\", [\"\\u0610\", \"\\u061A\"], [\"\\u064B\", \"\\u065F\"], \"\\u0670\", [\"\\u06D6\", \"\\u06DC\"], [\"\\u06DF\", \"\\u06E4\"], [\"\\u06E7\", \"\\u06E8\"], [\"\\u06EA\", \"\\u06ED\"], \"\\u0711\", [\"\\u0730\", \"\\u074A\"], [\"\\u07A6\", \"\\u07B0\"], [\"\\u07EB\", \"\\u07F3\"], [\"\\u0816\", \"\\u0819\"], [\"\\u081B\", \"\\u0823\"], [\"\\u0825\", \"\\u0827\"], [\"\\u0829\", \"\\u082D\"], [\"\\u0859\", \"\\u085B\"], [\"\\u08E3\", \"\\u0902\"], \"\\u093A\", \"\\u093C\", [\"\\u0941\", \"\\u0948\"], \"\\u094D\", [\"\\u0951\", \"\\u0957\"], [\"\\u0962\", \"\\u0963\"], \"\\u0981\", \"\\u09BC\", [\"\\u09C1\", \"\\u09C4\"], \"\\u09CD\", [\"\\u09E2\", \"\\u09E3\"], [\"\\u0A01\", \"\\u0A02\"], \"\\u0A3C\", [\"\\u0A41\", \"\\u0A42\"], [\"\\u0A47\", \"\\u0A48\"], [\"\\u0A4B\", \"\\u0A4D\"], \"\\u0A51\", [\"\\u0A70\", \"\\u0A71\"], \"\\u0A75\", [\"\\u0A81\", \"\\u0A82\"], \"\\u0ABC\", [\"\\u0AC1\", \"\\u0AC5\"], [\"\\u0AC7\", \"\\u0AC8\"], \"\\u0ACD\", [\"\\u0AE2\", \"\\u0AE3\"], \"\\u0B01\", \"\\u0B3C\", \"\\u0B3F\", [\"\\u0B41\", \"\\u0B44\"], \"\\u0B4D\", \"\\u0B56\", [\"\\u0B62\", \"\\u0B63\"], \"\\u0B82\", \"\\u0BC0\", \"\\u0BCD\", \"\\u0C00\", [\"\\u0C3E\", \"\\u0C40\"], [\"\\u0C46\", \"\\u0C48\"], [\"\\u0C4A\", \"\\u0C4D\"], [\"\\u0C55\", \"\\u0C56\"], [\"\\u0C62\", \"\\u0C63\"], \"\\u0C81\", \"\\u0CBC\", \"\\u0CBF\", \"\\u0CC6\", [\"\\u0CCC\", \"\\u0CCD\"], [\"\\u0CE2\", \"\\u0CE3\"], \"\\u0D01\", [\"\\u0D41\", \"\\u0D44\"], \"\\u0D4D\", [\"\\u0D62\", \"\\u0D63\"], \"\\u0DCA\", [\"\\u0DD2\", \"\\u0DD4\"], \"\\u0DD6\", \"\\u0E31\", [\"\\u0E34\", \"\\u0E3A\"], [\"\\u0E47\", \"\\u0E4E\"], \"\\u0EB1\", [\"\\u0EB4\", \"\\u0EB9\"], [\"\\u0EBB\", \"\\u0EBC\"], [\"\\u0EC8\", \"\\u0ECD\"], [\"\\u0F18\", \"\\u0F19\"], \"\\u0F35\", \"\\u0F37\", \"\\u0F39\", [\"\\u0F71\", \"\\u0F7E\"], [\"\\u0F80\", \"\\u0F84\"], [\"\\u0F86\", \"\\u0F87\"], [\"\\u0F8D\", \"\\u0F97\"], [\"\\u0F99\", \"\\u0FBC\"], \"\\u0FC6\", [\"\\u102D\", \"\\u1030\"], [\"\\u1032\", \"\\u1037\"], [\"\\u1039\", \"\\u103A\"], [\"\\u103D\", \"\\u103E\"], [\"\\u1058\", \"\\u1059\"], [\"\\u105E\", \"\\u1060\"], [\"\\u1071\", \"\\u1074\"], \"\\u1082\", [\"\\u1085\", \"\\u1086\"], \"\\u108D\", \"\\u109D\", [\"\\u135D\", \"\\u135F\"], [\"\\u1712\", \"\\u1714\"], [\"\\u1732\", \"\\u1734\"], [\"\\u1752\", \"\\u1753\"], [\"\\u1772\", \"\\u1773\"], [\"\\u17B4\", \"\\u17B5\"], [\"\\u17B7\", \"\\u17BD\"], \"\\u17C6\", [\"\\u17C9\", \"\\u17D3\"], \"\\u17DD\", [\"\\u180B\", \"\\u180D\"], \"\\u18A9\", [\"\\u1920\", \"\\u1922\"], [\"\\u1927\", \"\\u1928\"], \"\\u1932\", [\"\\u1939\", \"\\u193B\"], [\"\\u1A17\", \"\\u1A18\"], \"\\u1A1B\", \"\\u1A56\", [\"\\u1A58\", \"\\u1A5E\"], \"\\u1A60\", \"\\u1A62\", [\"\\u1A65\", \"\\u1A6C\"], [\"\\u1A73\", \"\\u1A7C\"], \"\\u1A7F\", [\"\\u1AB0\", \"\\u1ABD\"], [\"\\u1B00\", \"\\u1B03\"], \"\\u1B34\", [\"\\u1B36\", \"\\u1B3A\"], \"\\u1B3C\", \"\\u1B42\", [\"\\u1B6B\", \"\\u1B73\"], [\"\\u1B80\", \"\\u1B81\"], [\"\\u1BA2\", \"\\u1BA5\"], [\"\\u1BA8\", \"\\u1BA9\"], [\"\\u1BAB\", \"\\u1BAD\"], \"\\u1BE6\", [\"\\u1BE8\", \"\\u1BE9\"], \"\\u1BED\", [\"\\u1BEF\", \"\\u1BF1\"], [\"\\u1C2C\", \"\\u1C33\"], [\"\\u1C36\", \"\\u1C37\"], [\"\\u1CD0\", \"\\u1CD2\"], [\"\\u1CD4\", \"\\u1CE0\"], [\"\\u1CE2\", \"\\u1CE8\"], \"\\u1CED\", \"\\u1CF4\", [\"\\u1CF8\", \"\\u1CF9\"], [\"\\u1DC0\", \"\\u1DF5\"], [\"\\u1DFC\", \"\\u1DFF\"], [\"\\u20D0\", \"\\u20DC\"], \"\\u20E1\", [\"\\u20E5\", \"\\u20F0\"], [\"\\u2CEF\", \"\\u2CF1\"], \"\\u2D7F\", [\"\\u2DE0\", \"\\u2DFF\"], [\"\\u302A\", \"\\u302D\"], [\"\\u3099\", \"\\u309A\"], \"\\uA66F\", [\"\\uA674\", \"\\uA67D\"], [\"\\uA69E\", \"\\uA69F\"], [\"\\uA6F0\", \"\\uA6F1\"], \"\\uA802\", \"\\uA806\", \"\\uA80B\", [\"\\uA825\", \"\\uA826\"], \"\\uA8C4\", [\"\\uA8E0\", \"\\uA8F1\"], [\"\\uA926\", \"\\uA92D\"], [\"\\uA947\", \"\\uA951\"], [\"\\uA980\", \"\\uA982\"], \"\\uA9B3\", [\"\\uA9B6\", \"\\uA9B9\"], \"\\uA9BC\", \"\\uA9E5\", [\"\\uAA29\", \"\\uAA2E\"], [\"\\uAA31\", \"\\uAA32\"], [\"\\uAA35\", \"\\uAA36\"], \"\\uAA43\", \"\\uAA4C\", \"\\uAA7C\", \"\\uAAB0\", [\"\\uAAB2\", \"\\uAAB4\"], [\"\\uAAB7\", \"\\uAAB8\"], [\"\\uAABE\", \"\\uAABF\"], \"\\uAAC1\", [\"\\uAAEC\", \"\\uAAED\"], \"\\uAAF6\", \"\\uABE5\", \"\\uABE8\", \"\\uABED\", \"\\uFB1E\", [\"\\uFE00\", \"\\uFE0F\"], [\"\\uFE20\", \"\\uFE2F\"]], false, false);\n  var peg$e69 = peg$classExpectation([[\"0\", \"9\"], [\"\\u0660\", \"\\u0669\"], [\"\\u06F0\", \"\\u06F9\"], [\"\\u07C0\", \"\\u07C9\"], [\"\\u0966\", \"\\u096F\"], [\"\\u09E6\", \"\\u09EF\"], [\"\\u0A66\", \"\\u0A6F\"], [\"\\u0AE6\", \"\\u0AEF\"], [\"\\u0B66\", \"\\u0B6F\"], [\"\\u0BE6\", \"\\u0BEF\"], [\"\\u0C66\", \"\\u0C6F\"], [\"\\u0CE6\", \"\\u0CEF\"], [\"\\u0D66\", \"\\u0D6F\"], [\"\\u0DE6\", \"\\u0DEF\"], [\"\\u0E50\", \"\\u0E59\"], [\"\\u0ED0\", \"\\u0ED9\"], [\"\\u0F20\", \"\\u0F29\"], [\"\\u1040\", \"\\u1049\"], [\"\\u1090\", \"\\u1099\"], [\"\\u17E0\", \"\\u17E9\"], [\"\\u1810\", \"\\u1819\"], [\"\\u1946\", \"\\u194F\"], [\"\\u19D0\", \"\\u19D9\"], [\"\\u1A80\", \"\\u1A89\"], [\"\\u1A90\", \"\\u1A99\"], [\"\\u1B50\", \"\\u1B59\"], [\"\\u1BB0\", \"\\u1BB9\"], [\"\\u1C40\", \"\\u1C49\"], [\"\\u1C50\", \"\\u1C59\"], [\"\\uA620\", \"\\uA629\"], [\"\\uA8D0\", \"\\uA8D9\"], [\"\\uA900\", \"\\uA909\"], [\"\\uA9D0\", \"\\uA9D9\"], [\"\\uA9F0\", \"\\uA9F9\"], [\"\\uAA50\", \"\\uAA59\"], [\"\\uABF0\", \"\\uABF9\"], [\"\\uFF10\", \"\\uFF19\"]], false, false);\n  var peg$e70 = peg$classExpectation([[\"\\u16EE\", \"\\u16F0\"], [\"\\u2160\", \"\\u2182\"], [\"\\u2185\", \"\\u2188\"], \"\\u3007\", [\"\\u3021\", \"\\u3029\"], [\"\\u3038\", \"\\u303A\"], [\"\\uA6E6\", \"\\uA6EF\"]], false, false);\n  var peg$e71 = peg$classExpectation([\"_\", [\"\\u203F\", \"\\u2040\"], \"\\u2054\", [\"\\uFE33\", \"\\uFE34\"], [\"\\uFE4D\", \"\\uFE4F\"], \"\\uFF3F\"], false, false);\n  var peg$e72 = peg$classExpectation([\" \", \"\\xA0\", \"\\u1680\", [\"\\u2000\", \"\\u200A\"], \"\\u202F\", \"\\u205F\", \"\\u3000\"], false, false);\n  var peg$e73 = peg$literalExpectation(\";\", false);\n\n  var peg$f0 = function(topLevelInitializer, initializer, rules) {\n      return {\n        type: \"grammar\",\n        topLevelInitializer,\n        initializer,\n        rules,\n        location: location()\n      };\n    };\n  var peg$f1 = function(code) {\n      return {\n        type: \"top_level_initializer\",\n        code: code[0],\n        codeLocation: code[1],\n        location: location()\n      };\n    };\n  var peg$f2 = function(code) {\n      return {\n        type: \"initializer\",\n        code: code[0],\n        codeLocation: code[1],\n        location: location()\n      };\n    };\n  var peg$f3 = function(name, displayName, expression) {\n      return {\n        type: \"rule\",\n        name: name[0],\n        nameLocation: name[1],\n        expression: displayName !== null\n          ? {\n              type: \"named\",\n              name: displayName,\n              expression,\n              location: location()\n            }\n          : expression,\n        location: location()\n      };\n    };\n  var peg$f4 = function(head, tail) {\n      return tail.length > 0\n        ? {\n            type: \"choice\",\n            alternatives: [head].concat(tail),\n            location: location()\n          }\n        : head;\n    };\n  var peg$f5 = function(expression, code) {\n      return code !== null\n        ? {\n            type: \"action\",\n            expression,\n            code: code[0],\n            codeLocation: code[1],\n            location: location()\n          }\n        : expression;\n    };\n  var peg$f6 = function(head, tail) {\n      return ((tail.length > 0) || (head.type === \"labeled\" && head.pick))\n        ? {\n            type: \"sequence\",\n            elements: [head].concat(tail),\n            location: location()\n          }\n        : head;\n    };\n  var peg$f7 = function(pluck, label, expression) {\n      if (expression.type.startsWith(\"semantic_\")) {\n        error(\"\\\"@\\\" cannot be used on a semantic predicate\", pluck);\n      }\n      return {\n        type: \"labeled\",\n        label: label !== null ? label[0] : null,\n        // Use location of \"@\" if label is unavailable\n        labelLocation: label !== null ? label[1] : pluck,\n        pick: true,\n        expression,\n        location: location()\n      };\n    };\n  var peg$f8 = function(label, expression) {\n      return {\n        type: \"labeled\",\n        label: label[0],\n        labelLocation: label[1],\n        expression,\n        location: location()\n      };\n    };\n  var peg$f9 = function() { return location(); };\n  var peg$f10 = function(label) {\n      if (reservedWords.indexOf(label[0]) >= 0) {\n        error(`Label can't be a reserved word \"${label[0]}\"`, label[1]);\n      }\n\n      return label;\n    };\n  var peg$f11 = function(operator, expression) {\n      return {\n        type: OPS_TO_PREFIXED_TYPES[operator],\n        expression,\n        location: location()\n      };\n    };\n  var peg$f12 = function(expression, operator) {\n      return {\n        type: OPS_TO_SUFFIXED_TYPES[operator],\n        expression,\n        location: location()\n      };\n    };\n  var peg$f13 = function(expression) {\n      // The purpose of the \"group\" AST node is just to isolate label scope. We\n      // don't need to put it around nodes that can't contain any labels or\n      // nodes that already isolate label scope themselves. This leaves us with\n      // \"labeled\" and \"sequence\".\n      return expression.type === \"labeled\" || expression.type === \"sequence\"\n          ? { type: \"group\", expression, location: location() }\n          : expression;\n    };\n  var peg$f14 = function(name) {\n      return { type: \"rule_ref\", name: name[0], location: location() };\n    };\n  var peg$f15 = function(operator, code) {\n      return {\n        type: OPS_TO_SEMANTIC_PREDICATE_TYPES[operator],\n        code: code[0],\n        codeLocation: code[1],\n        location: location()\n      };\n    };\n  var peg$f16 = function(head, tail) {\n      return [head + tail.join(\"\"), location()];\n    };\n  var peg$f17 = function(value, ignoreCase) {\n      return {\n        type: \"literal\",\n        value,\n        ignoreCase: ignoreCase !== null,\n        location: location()\n      };\n    };\n  var peg$f18 = function(chars) { return chars.join(\"\"); };\n  var peg$f19 = function(chars) { return chars.join(\"\"); };\n  var peg$f20 = function(inverted, parts, ignoreCase) {\n      return {\n        type: \"class\",\n        parts: parts.filter(part => part !== \"\"),\n        inverted: inverted !== null,\n        ignoreCase: ignoreCase !== null,\n        location: location()\n      };\n    };\n  var peg$f21 = function(begin, end) {\n      if (begin.charCodeAt(0) > end.charCodeAt(0)) {\n        error(\n          \"Invalid character range: \" + text() + \".\"\n        );\n      }\n\n      return [begin, end];\n    };\n  var peg$f22 = function() { return \"\"; };\n  var peg$f23 = function() { return \"\\0\"; };\n  var peg$f24 = function() { return \"\\b\"; };\n  var peg$f25 = function() { return \"\\f\"; };\n  var peg$f26 = function() { return \"\\n\"; };\n  var peg$f27 = function() { return \"\\r\"; };\n  var peg$f28 = function() { return \"\\t\"; };\n  var peg$f29 = function() { return \"\\v\"; };\n  var peg$f30 = function(digits) {\n      return String.fromCharCode(parseInt(digits, 16));\n    };\n  var peg$f31 = function(digits) {\n      return String.fromCharCode(parseInt(digits, 16));\n    };\n  var peg$f32 = function() { return { type: \"any\", location: location() }; };\n  var peg$f33 = function(code) { return [code, location()]; };\n  var peg$currPos = 0;\n  var peg$savedPos = 0;\n  var peg$posDetailsCache = [{ line: 1, column: 1 }];\n  var peg$maxFailPos = 0;\n  var peg$maxFailExpected = [];\n  var peg$silentFails = 0;\n\n  var peg$result;\n\n  if (\"startRule\" in options) {\n    if (!(options.startRule in peg$startRuleFunctions)) {\n      throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n    }\n\n    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n  }\n\n  function text() {\n    return input.substring(peg$savedPos, peg$currPos);\n  }\n\n  function offset() {\n    return peg$savedPos;\n  }\n\n  function range() {\n    return {\n      source: peg$source,\n      start: peg$savedPos,\n      end: peg$currPos\n    };\n  }\n\n  function location() {\n    return peg$computeLocation(peg$savedPos, peg$currPos);\n  }\n\n  function expected(description, location) {\n    location = location !== undefined\n      ? location\n      : peg$computeLocation(peg$savedPos, peg$currPos);\n\n    throw peg$buildStructuredError(\n      [peg$otherExpectation(description)],\n      input.substring(peg$savedPos, peg$currPos),\n      location\n    );\n  }\n\n  function error(message, location) {\n    location = location !== undefined\n      ? location\n      : peg$computeLocation(peg$savedPos, peg$currPos);\n\n    throw peg$buildSimpleError(message, location);\n  }\n\n  function peg$literalExpectation(text, ignoreCase) {\n    return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n  }\n\n  function peg$classExpectation(parts, inverted, ignoreCase) {\n    return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n  }\n\n  function peg$anyExpectation() {\n    return { type: \"any\" };\n  }\n\n  function peg$endExpectation() {\n    return { type: \"end\" };\n  }\n\n  function peg$otherExpectation(description) {\n    return { type: \"other\", description: description };\n  }\n\n  function peg$computePosDetails(pos) {\n    var details = peg$posDetailsCache[pos];\n    var p;\n\n    if (details) {\n      return details;\n    } else {\n      p = pos - 1;\n      while (!peg$posDetailsCache[p]) {\n        p--;\n      }\n\n      details = peg$posDetailsCache[p];\n      details = {\n        line: details.line,\n        column: details.column\n      };\n\n      while (p < pos) {\n        if (input.charCodeAt(p) === 10) {\n          details.line++;\n          details.column = 1;\n        } else {\n          details.column++;\n        }\n\n        p++;\n      }\n\n      peg$posDetailsCache[pos] = details;\n\n      return details;\n    }\n  }\n\n  function peg$computeLocation(startPos, endPos) {\n    var startPosDetails = peg$computePosDetails(startPos);\n    var endPosDetails = peg$computePosDetails(endPos);\n\n    return {\n      source: peg$source,\n      start: {\n        offset: startPos,\n        line: startPosDetails.line,\n        column: startPosDetails.column\n      },\n      end: {\n        offset: endPos,\n        line: endPosDetails.line,\n        column: endPosDetails.column\n      }\n    };\n  }\n\n  function peg$fail(expected) {\n    if (peg$currPos < peg$maxFailPos) { return; }\n\n    if (peg$currPos > peg$maxFailPos) {\n      peg$maxFailPos = peg$currPos;\n      peg$maxFailExpected = [];\n    }\n\n    peg$maxFailExpected.push(expected);\n  }\n\n  function peg$buildSimpleError(message, location) {\n    return new peg$SyntaxError(message, null, null, location);\n  }\n\n  function peg$buildStructuredError(expected, found, location) {\n    return new peg$SyntaxError(\n      peg$SyntaxError.buildMessage(expected, found),\n      expected,\n      found,\n      location\n    );\n  }\n\n  function peg$parseGrammar() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    s2 = peg$currPos;\n    s3 = peg$parseTopLevelInitializer();\n    if (s3 !== peg$FAILED) {\n      s4 = peg$parse__();\n      s2 = s3;\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    if (s2 === peg$FAILED) {\n      s2 = null;\n    }\n    s3 = peg$currPos;\n    s4 = peg$parseInitializer();\n    if (s4 !== peg$FAILED) {\n      s5 = peg$parse__();\n      s3 = s4;\n    } else {\n      peg$currPos = s3;\n      s3 = peg$FAILED;\n    }\n    if (s3 === peg$FAILED) {\n      s3 = null;\n    }\n    s4 = [];\n    s5 = peg$currPos;\n    s6 = peg$parseRule();\n    if (s6 !== peg$FAILED) {\n      s7 = peg$parse__();\n      s5 = s6;\n    } else {\n      peg$currPos = s5;\n      s5 = peg$FAILED;\n    }\n    if (s5 !== peg$FAILED) {\n      while (s5 !== peg$FAILED) {\n        s4.push(s5);\n        s5 = peg$currPos;\n        s6 = peg$parseRule();\n        if (s6 !== peg$FAILED) {\n          s7 = peg$parse__();\n          s5 = s6;\n        } else {\n          peg$currPos = s5;\n          s5 = peg$FAILED;\n        }\n      }\n    } else {\n      s4 = peg$FAILED;\n    }\n    if (s4 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s0 = peg$f0(s2, s3, s4);\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTopLevelInitializer() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c0;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e0); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseCodeBlock();\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 125) {\n          s3 = peg$c1;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e1); }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseEOS();\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f1(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseInitializer() {\n    var s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parseCodeBlock();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseEOS();\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f2(s1);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseRule() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parseIdentifierName();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse__();\n      s3 = peg$currPos;\n      s4 = peg$parseStringLiteral();\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parse__();\n        s3 = s4;\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      if (s3 === peg$FAILED) {\n        s3 = null;\n      }\n      if (input.charCodeAt(peg$currPos) === 61) {\n        s4 = peg$c2;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e2); }\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parse__();\n        s6 = peg$parseChoiceExpression();\n        if (s6 !== peg$FAILED) {\n          s7 = peg$parseEOS();\n          if (s7 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f3(s1, s3, s6);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChoiceExpression() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parseActionExpression();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parse__();\n      if (input.charCodeAt(peg$currPos) === 47) {\n        s5 = peg$c3;\n        peg$currPos++;\n      } else {\n        s5 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e3); }\n      }\n      if (s5 !== peg$FAILED) {\n        s6 = peg$parse__();\n        s7 = peg$parseActionExpression();\n        if (s7 !== peg$FAILED) {\n          s3 = s7;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$parse__();\n        if (input.charCodeAt(peg$currPos) === 47) {\n          s5 = peg$c3;\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e3); }\n        }\n        if (s5 !== peg$FAILED) {\n          s6 = peg$parse__();\n          s7 = peg$parseActionExpression();\n          if (s7 !== peg$FAILED) {\n            s3 = s7;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      peg$savedPos = s0;\n      s0 = peg$f4(s1, s2);\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseActionExpression() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parseSequenceExpression();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$currPos;\n      s3 = peg$parse__();\n      s4 = peg$parseCodeBlock();\n      if (s4 !== peg$FAILED) {\n        s2 = s4;\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      peg$savedPos = s0;\n      s0 = peg$f5(s1, s2);\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseSequenceExpression() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parseLabeledExpression();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parse__();\n      s5 = peg$parseLabeledExpression();\n      if (s5 !== peg$FAILED) {\n        s3 = s5;\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$parse__();\n        s5 = peg$parseLabeledExpression();\n        if (s5 !== peg$FAILED) {\n          s3 = s5;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      peg$savedPos = s0;\n      s0 = peg$f6(s1, s2);\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseLabeledExpression() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parsePluck();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseLabelColon();\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      s3 = peg$parsePrefixedExpression();\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f7(s1, s2, s3);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseLabelColon();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse__();\n        s3 = peg$parsePrefixedExpression();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f8(s1, s3);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$parsePrefixedExpression();\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parsePluck() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 64) {\n      s1 = peg$c4;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e4); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f9();\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseLabelColon() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parseIdentifierName();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse__();\n      if (input.charCodeAt(peg$currPos) === 58) {\n        s3 = peg$c5;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e5); }\n      }\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f10(s1);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsePrefixedExpression() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parsePrefixedOperator();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse__();\n      s3 = peg$parseSuffixedExpression();\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f11(s1, s3);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseSuffixedExpression();\n    }\n\n    return s0;\n  }\n\n  function peg$parsePrefixedOperator() {\n    var s0;\n\n    if (input.charCodeAt(peg$currPos) === 36) {\n      s0 = peg$c6;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e6); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 38) {\n        s0 = peg$c7;\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e7); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 33) {\n          s0 = peg$c8;\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e8); }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseSuffixedExpression() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parsePrimaryExpression();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse__();\n      s3 = peg$parseSuffixedOperator();\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f12(s1, s3);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$parsePrimaryExpression();\n    }\n\n    return s0;\n  }\n\n  function peg$parseSuffixedOperator() {\n    var s0;\n\n    if (input.charCodeAt(peg$currPos) === 63) {\n      s0 = peg$c9;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e9); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 42) {\n        s0 = peg$c10;\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e10); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 43) {\n          s0 = peg$c11;\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e11); }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parsePrimaryExpression() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$parseLiteralMatcher();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseCharacterClassMatcher();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseAnyMatcher();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parseRuleReferenceExpression();\n          if (s0 === peg$FAILED) {\n            s0 = peg$parseSemanticPredicateExpression();\n            if (s0 === peg$FAILED) {\n              s0 = peg$currPos;\n              if (input.charCodeAt(peg$currPos) === 40) {\n                s1 = peg$c12;\n                peg$currPos++;\n              } else {\n                s1 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$e12); }\n              }\n              if (s1 !== peg$FAILED) {\n                s2 = peg$parse__();\n                s3 = peg$parseChoiceExpression();\n                if (s3 !== peg$FAILED) {\n                  s4 = peg$parse__();\n                  if (input.charCodeAt(peg$currPos) === 41) {\n                    s5 = peg$c13;\n                    peg$currPos++;\n                  } else {\n                    s5 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$e13); }\n                  }\n                  if (s5 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s0 = peg$f13(s3);\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseRuleReferenceExpression() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parseIdentifierName();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$currPos;\n      peg$silentFails++;\n      s3 = peg$currPos;\n      s4 = peg$parse__();\n      s5 = peg$currPos;\n      s6 = peg$parseStringLiteral();\n      if (s6 !== peg$FAILED) {\n        s7 = peg$parse__();\n        s6 = [s6, s7];\n        s5 = s6;\n      } else {\n        peg$currPos = s5;\n        s5 = peg$FAILED;\n      }\n      if (s5 === peg$FAILED) {\n        s5 = null;\n      }\n      if (input.charCodeAt(peg$currPos) === 61) {\n        s6 = peg$c2;\n        peg$currPos++;\n      } else {\n        s6 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e2); }\n      }\n      if (s6 !== peg$FAILED) {\n        s4 = [s4, s5, s6];\n        s3 = s4;\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      peg$silentFails--;\n      if (s3 === peg$FAILED) {\n        s2 = undefined;\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f14(s1);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseSemanticPredicateExpression() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parseSemanticPredicateOperator();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse__();\n      s3 = peg$parseCodeBlock();\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f15(s1, s3);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseSemanticPredicateOperator() {\n    var s0;\n\n    if (input.charCodeAt(peg$currPos) === 38) {\n      s0 = peg$c7;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e7); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 33) {\n        s0 = peg$c8;\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e8); }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseSourceCharacter() {\n    var s0;\n\n    if (input.length > peg$currPos) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e14); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseWhiteSpace() {\n    var s0, s1;\n\n    peg$silentFails++;\n    if (input.charCodeAt(peg$currPos) === 9) {\n      s0 = peg$c14;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e16); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 11) {\n        s0 = peg$c15;\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e17); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 12) {\n          s0 = peg$c16;\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e18); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 32) {\n            s0 = peg$c17;\n            peg$currPos++;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e19); }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 160) {\n              s0 = peg$c18;\n              peg$currPos++;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e20); }\n            }\n            if (s0 === peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 65279) {\n                s0 = peg$c19;\n                peg$currPos++;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$e21); }\n              }\n              if (s0 === peg$FAILED) {\n                s0 = peg$parseZs();\n              }\n            }\n          }\n        }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e15); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseLineTerminator() {\n    var s0;\n\n    if (peg$r0.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e22); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseLineTerminatorSequence() {\n    var s0, s1;\n\n    peg$silentFails++;\n    if (input.charCodeAt(peg$currPos) === 10) {\n      s0 = peg$c20;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e24); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 2) === peg$c21) {\n        s0 = peg$c21;\n        peg$currPos += 2;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e25); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 13) {\n          s0 = peg$c22;\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e26); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 8232) {\n            s0 = peg$c23;\n            peg$currPos++;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e27); }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 8233) {\n              s0 = peg$c24;\n              peg$currPos++;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e28); }\n            }\n          }\n        }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e23); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseComment() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$parseMultiLineComment();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseSingleLineComment();\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e29); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseMultiLineComment() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 2) === peg$c25) {\n      s1 = peg$c25;\n      peg$currPos += 2;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e30); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$currPos;\n      peg$silentFails++;\n      if (input.substr(peg$currPos, 2) === peg$c26) {\n        s5 = peg$c26;\n        peg$currPos += 2;\n      } else {\n        s5 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e31); }\n      }\n      peg$silentFails--;\n      if (s5 === peg$FAILED) {\n        s4 = undefined;\n      } else {\n        peg$currPos = s4;\n        s4 = peg$FAILED;\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parseSourceCharacter();\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$currPos;\n        peg$silentFails++;\n        if (input.substr(peg$currPos, 2) === peg$c26) {\n          s5 = peg$c26;\n          peg$currPos += 2;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e31); }\n        }\n        peg$silentFails--;\n        if (s5 === peg$FAILED) {\n          s4 = undefined;\n        } else {\n          peg$currPos = s4;\n          s4 = peg$FAILED;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseSourceCharacter();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (input.substr(peg$currPos, 2) === peg$c26) {\n        s3 = peg$c26;\n        peg$currPos += 2;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e31); }\n      }\n      if (s3 !== peg$FAILED) {\n        s1 = [s1, s2, s3];\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseMultiLineCommentNoLineTerminator() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 2) === peg$c25) {\n      s1 = peg$c25;\n      peg$currPos += 2;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e30); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$currPos;\n      peg$silentFails++;\n      if (input.substr(peg$currPos, 2) === peg$c26) {\n        s5 = peg$c26;\n        peg$currPos += 2;\n      } else {\n        s5 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e31); }\n      }\n      if (s5 === peg$FAILED) {\n        s5 = peg$parseLineTerminator();\n      }\n      peg$silentFails--;\n      if (s5 === peg$FAILED) {\n        s4 = undefined;\n      } else {\n        peg$currPos = s4;\n        s4 = peg$FAILED;\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parseSourceCharacter();\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$currPos;\n        peg$silentFails++;\n        if (input.substr(peg$currPos, 2) === peg$c26) {\n          s5 = peg$c26;\n          peg$currPos += 2;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e31); }\n        }\n        if (s5 === peg$FAILED) {\n          s5 = peg$parseLineTerminator();\n        }\n        peg$silentFails--;\n        if (s5 === peg$FAILED) {\n          s4 = undefined;\n        } else {\n          peg$currPos = s4;\n          s4 = peg$FAILED;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseSourceCharacter();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (input.substr(peg$currPos, 2) === peg$c26) {\n        s3 = peg$c26;\n        peg$currPos += 2;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e31); }\n      }\n      if (s3 !== peg$FAILED) {\n        s1 = [s1, s2, s3];\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseSingleLineComment() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 2) === peg$c27) {\n      s1 = peg$c27;\n      peg$currPos += 2;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e32); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$currPos;\n      peg$silentFails++;\n      s5 = peg$parseLineTerminator();\n      peg$silentFails--;\n      if (s5 === peg$FAILED) {\n        s4 = undefined;\n      } else {\n        peg$currPos = s4;\n        s4 = peg$FAILED;\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parseSourceCharacter();\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$currPos;\n        peg$silentFails++;\n        s5 = peg$parseLineTerminator();\n        peg$silentFails--;\n        if (s5 === peg$FAILED) {\n          s4 = undefined;\n        } else {\n          peg$currPos = s4;\n          s4 = peg$FAILED;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseSourceCharacter();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      s1 = [s1, s2];\n      s0 = s1;\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseIdentifierName() {\n    var s0, s1, s2, s3;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = peg$parseIdentifierStart();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parseIdentifierPart();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parseIdentifierPart();\n      }\n      peg$savedPos = s0;\n      s0 = peg$f16(s1, s2);\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e33); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseIdentifierStart() {\n    var s0, s1, s2;\n\n    s0 = peg$parseUnicodeLetter();\n    if (s0 === peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 36) {\n        s0 = peg$c6;\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e6); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 95) {\n          s0 = peg$c28;\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e34); }\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 92) {\n            s1 = peg$c29;\n            peg$currPos++;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e35); }\n          }\n          if (s1 !== peg$FAILED) {\n            s2 = peg$parseUnicodeEscapeSequence();\n            if (s2 !== peg$FAILED) {\n              s0 = s2;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseIdentifierPart() {\n    var s0;\n\n    s0 = peg$parseIdentifierStart();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseUnicodeCombiningMark();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseNd();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parsePc();\n          if (s0 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 8204) {\n              s0 = peg$c30;\n              peg$currPos++;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e36); }\n            }\n            if (s0 === peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 8205) {\n                s0 = peg$c31;\n                peg$currPos++;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$e37); }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseUnicodeLetter() {\n    var s0;\n\n    s0 = peg$parseLu();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseLl();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseLt();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parseLm();\n          if (s0 === peg$FAILED) {\n            s0 = peg$parseLo();\n            if (s0 === peg$FAILED) {\n              s0 = peg$parseNl();\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseUnicodeCombiningMark() {\n    var s0;\n\n    s0 = peg$parseMn();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseMc();\n    }\n\n    return s0;\n  }\n\n  function peg$parseLiteralMatcher() {\n    var s0, s1, s2;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = peg$parseStringLiteral();\n    if (s1 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 105) {\n        s2 = peg$c32;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e39); }\n      }\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      peg$savedPos = s0;\n      s0 = peg$f17(s1, s2);\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e38); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseStringLiteral() {\n    var s0, s1, s2, s3;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 34) {\n      s1 = peg$c33;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e41); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parseDoubleStringCharacter();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parseDoubleStringCharacter();\n      }\n      if (input.charCodeAt(peg$currPos) === 34) {\n        s3 = peg$c33;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e41); }\n      }\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f18(s2);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 39) {\n        s1 = peg$c34;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e42); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$parseSingleStringCharacter();\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$parseSingleStringCharacter();\n        }\n        if (input.charCodeAt(peg$currPos) === 39) {\n          s3 = peg$c34;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e42); }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f19(s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e40); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseDoubleStringCharacter() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$currPos;\n    peg$silentFails++;\n    if (input.charCodeAt(peg$currPos) === 34) {\n      s3 = peg$c33;\n      peg$currPos++;\n    } else {\n      s3 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e41); }\n    }\n    if (s3 === peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 92) {\n        s3 = peg$c29;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e35); }\n      }\n      if (s3 === peg$FAILED) {\n        s3 = peg$parseLineTerminator();\n      }\n    }\n    peg$silentFails--;\n    if (s3 === peg$FAILED) {\n      s2 = undefined;\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      s3 = peg$parseSourceCharacter();\n      if (s3 !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 92) {\n        s1 = peg$c29;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e35); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseEscapeSequence();\n        if (s2 !== peg$FAILED) {\n          s0 = s2;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseLineContinuation();\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseSingleStringCharacter() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$currPos;\n    peg$silentFails++;\n    if (input.charCodeAt(peg$currPos) === 39) {\n      s3 = peg$c34;\n      peg$currPos++;\n    } else {\n      s3 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e42); }\n    }\n    if (s3 === peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 92) {\n        s3 = peg$c29;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e35); }\n      }\n      if (s3 === peg$FAILED) {\n        s3 = peg$parseLineTerminator();\n      }\n    }\n    peg$silentFails--;\n    if (s3 === peg$FAILED) {\n      s2 = undefined;\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      s3 = peg$parseSourceCharacter();\n      if (s3 !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 92) {\n        s1 = peg$c29;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e35); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseEscapeSequence();\n        if (s2 !== peg$FAILED) {\n          s0 = s2;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseLineContinuation();\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseCharacterClassMatcher() {\n    var s0, s1, s2, s3, s4, s5;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 91) {\n      s1 = peg$c35;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e44); }\n    }\n    if (s1 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 94) {\n        s2 = peg$c36;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e45); }\n      }\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      s3 = [];\n      s4 = peg$parseClassCharacterRange();\n      if (s4 === peg$FAILED) {\n        s4 = peg$parseClassCharacter();\n      }\n      while (s4 !== peg$FAILED) {\n        s3.push(s4);\n        s4 = peg$parseClassCharacterRange();\n        if (s4 === peg$FAILED) {\n          s4 = peg$parseClassCharacter();\n        }\n      }\n      if (input.charCodeAt(peg$currPos) === 93) {\n        s4 = peg$c37;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e46); }\n      }\n      if (s4 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 105) {\n          s5 = peg$c32;\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e39); }\n        }\n        if (s5 === peg$FAILED) {\n          s5 = null;\n        }\n        peg$savedPos = s0;\n        s0 = peg$f20(s2, s3, s5);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e43); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseClassCharacterRange() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parseClassCharacter();\n    if (s1 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 45) {\n        s2 = peg$c38;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e47); }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseClassCharacter();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f21(s1, s3);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseClassCharacter() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$currPos;\n    peg$silentFails++;\n    if (input.charCodeAt(peg$currPos) === 93) {\n      s3 = peg$c37;\n      peg$currPos++;\n    } else {\n      s3 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e46); }\n    }\n    if (s3 === peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 92) {\n        s3 = peg$c29;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e35); }\n      }\n      if (s3 === peg$FAILED) {\n        s3 = peg$parseLineTerminator();\n      }\n    }\n    peg$silentFails--;\n    if (s3 === peg$FAILED) {\n      s2 = undefined;\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      s3 = peg$parseSourceCharacter();\n      if (s3 !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 92) {\n        s1 = peg$c29;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e35); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseEscapeSequence();\n        if (s2 !== peg$FAILED) {\n          s0 = s2;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseLineContinuation();\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseLineContinuation() {\n    var s0, s1, s2;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 92) {\n      s1 = peg$c29;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e35); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseLineTerminatorSequence();\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f22();\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseEscapeSequence() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$parseCharacterEscapeSequence();\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 48) {\n        s1 = peg$c39;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e48); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$currPos;\n        peg$silentFails++;\n        s3 = peg$parseDecimalDigit();\n        peg$silentFails--;\n        if (s3 === peg$FAILED) {\n          s2 = undefined;\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f23();\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseHexEscapeSequence();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parseUnicodeEscapeSequence();\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseCharacterEscapeSequence() {\n    var s0;\n\n    s0 = peg$parseSingleEscapeCharacter();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseNonEscapeCharacter();\n    }\n\n    return s0;\n  }\n\n  function peg$parseSingleEscapeCharacter() {\n    var s0, s1;\n\n    if (input.charCodeAt(peg$currPos) === 39) {\n      s0 = peg$c34;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e42); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 34) {\n        s0 = peg$c33;\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e41); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 92) {\n          s0 = peg$c29;\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e35); }\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 98) {\n            s1 = peg$c40;\n            peg$currPos++;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e49); }\n          }\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$f24();\n          }\n          s0 = s1;\n          if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 102) {\n              s1 = peg$c41;\n              peg$currPos++;\n            } else {\n              s1 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e50); }\n            }\n            if (s1 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$f25();\n            }\n            s0 = s1;\n            if (s0 === peg$FAILED) {\n              s0 = peg$currPos;\n              if (input.charCodeAt(peg$currPos) === 110) {\n                s1 = peg$c42;\n                peg$currPos++;\n              } else {\n                s1 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$e51); }\n              }\n              if (s1 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$f26();\n              }\n              s0 = s1;\n              if (s0 === peg$FAILED) {\n                s0 = peg$currPos;\n                if (input.charCodeAt(peg$currPos) === 114) {\n                  s1 = peg$c43;\n                  peg$currPos++;\n                } else {\n                  s1 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$e52); }\n                }\n                if (s1 !== peg$FAILED) {\n                  peg$savedPos = s0;\n                  s1 = peg$f27();\n                }\n                s0 = s1;\n                if (s0 === peg$FAILED) {\n                  s0 = peg$currPos;\n                  if (input.charCodeAt(peg$currPos) === 116) {\n                    s1 = peg$c44;\n                    peg$currPos++;\n                  } else {\n                    s1 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$e53); }\n                  }\n                  if (s1 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$f28();\n                  }\n                  s0 = s1;\n                  if (s0 === peg$FAILED) {\n                    s0 = peg$currPos;\n                    if (input.charCodeAt(peg$currPos) === 118) {\n                      s1 = peg$c45;\n                      peg$currPos++;\n                    } else {\n                      s1 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$e54); }\n                    }\n                    if (s1 !== peg$FAILED) {\n                      peg$savedPos = s0;\n                      s1 = peg$f29();\n                    }\n                    s0 = s1;\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseNonEscapeCharacter() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$currPos;\n    peg$silentFails++;\n    s3 = peg$parseEscapeCharacter();\n    if (s3 === peg$FAILED) {\n      s3 = peg$parseLineTerminator();\n    }\n    peg$silentFails--;\n    if (s3 === peg$FAILED) {\n      s2 = undefined;\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      s3 = peg$parseSourceCharacter();\n      if (s3 !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseEscapeCharacter() {\n    var s0;\n\n    s0 = peg$parseSingleEscapeCharacter();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseDecimalDigit();\n      if (s0 === peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 120) {\n          s0 = peg$c46;\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e55); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 117) {\n            s0 = peg$c47;\n            peg$currPos++;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e56); }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseHexEscapeSequence() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 120) {\n      s1 = peg$c46;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e55); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$currPos;\n      s3 = peg$currPos;\n      s4 = peg$parseHexDigit();\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parseHexDigit();\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      if (s3 !== peg$FAILED) {\n        s2 = input.substring(s2, peg$currPos);\n      } else {\n        s2 = s3;\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f30(s2);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseUnicodeEscapeSequence() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 117) {\n      s1 = peg$c47;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e56); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$currPos;\n      s3 = peg$currPos;\n      s4 = peg$parseHexDigit();\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parseHexDigit();\n        if (s5 !== peg$FAILED) {\n          s6 = peg$parseHexDigit();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parseHexDigit();\n            if (s7 !== peg$FAILED) {\n              s4 = [s4, s5, s6, s7];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      if (s3 !== peg$FAILED) {\n        s2 = input.substring(s2, peg$currPos);\n      } else {\n        s2 = s3;\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f31(s2);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseDecimalDigit() {\n    var s0;\n\n    if (peg$r1.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e57); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseHexDigit() {\n    var s0;\n\n    if (peg$r2.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e58); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseAnyMatcher() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 46) {\n      s1 = peg$c48;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e59); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f32();\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseCodeBlock() {\n    var s0, s1, s2, s3;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c0;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e0); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseBareCodeBlock();\n      if (input.charCodeAt(peg$currPos) === 125) {\n        s3 = peg$c1;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e1); }\n      }\n      if (s3 !== peg$FAILED) {\n        s0 = s2;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e60); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseBareCodeBlock() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    s1 = peg$parseCode();\n    peg$savedPos = s0;\n    s1 = peg$f33(s1);\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseCode() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = [];\n    s3 = peg$currPos;\n    s4 = peg$currPos;\n    peg$silentFails++;\n    if (peg$r3.test(input.charAt(peg$currPos))) {\n      s5 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s5 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e61); }\n    }\n    peg$silentFails--;\n    if (s5 === peg$FAILED) {\n      s4 = undefined;\n    } else {\n      peg$currPos = s4;\n      s4 = peg$FAILED;\n    }\n    if (s4 !== peg$FAILED) {\n      s5 = peg$parseSourceCharacter();\n      if (s5 !== peg$FAILED) {\n        s4 = [s4, s5];\n        s3 = s4;\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s3;\n      s3 = peg$FAILED;\n    }\n    if (s3 !== peg$FAILED) {\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$currPos;\n        peg$silentFails++;\n        if (peg$r3.test(input.charAt(peg$currPos))) {\n          s5 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e61); }\n        }\n        peg$silentFails--;\n        if (s5 === peg$FAILED) {\n          s4 = undefined;\n        } else {\n          peg$currPos = s4;\n          s4 = peg$FAILED;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseSourceCharacter();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n    } else {\n      s2 = peg$FAILED;\n    }\n    if (s2 === peg$FAILED) {\n      s2 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 123) {\n        s3 = peg$c0;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e0); }\n      }\n      if (s3 !== peg$FAILED) {\n        s4 = peg$parseCode();\n        if (input.charCodeAt(peg$currPos) === 125) {\n          s5 = peg$c1;\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e1); }\n        }\n        if (s5 !== peg$FAILED) {\n          s3 = [s3, s4, s5];\n          s2 = s3;\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n    }\n    while (s2 !== peg$FAILED) {\n      s1.push(s2);\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$currPos;\n      peg$silentFails++;\n      if (peg$r3.test(input.charAt(peg$currPos))) {\n        s5 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s5 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e61); }\n      }\n      peg$silentFails--;\n      if (s5 === peg$FAILED) {\n        s4 = undefined;\n      } else {\n        peg$currPos = s4;\n        s4 = peg$FAILED;\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parseSourceCharacter();\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      if (s3 !== peg$FAILED) {\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$currPos;\n          s4 = peg$currPos;\n          peg$silentFails++;\n          if (peg$r3.test(input.charAt(peg$currPos))) {\n            s5 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e61); }\n          }\n          peg$silentFails--;\n          if (s5 === peg$FAILED) {\n            s4 = undefined;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseSourceCharacter();\n            if (s5 !== peg$FAILED) {\n              s4 = [s4, s5];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        }\n      } else {\n        s2 = peg$FAILED;\n      }\n      if (s2 === peg$FAILED) {\n        s2 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 123) {\n          s3 = peg$c0;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e0); }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseCode();\n          if (input.charCodeAt(peg$currPos) === 125) {\n            s5 = peg$c1;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e1); }\n          }\n          if (s5 !== peg$FAILED) {\n            s3 = [s3, s4, s5];\n            s2 = s3;\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n      }\n    }\n    s0 = input.substring(s0, peg$currPos);\n\n    return s0;\n  }\n\n  function peg$parseLl() {\n    var s0;\n\n    if (peg$r4.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e62); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseLm() {\n    var s0;\n\n    if (peg$r5.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e63); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseLo() {\n    var s0;\n\n    if (peg$r6.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e64); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseLt() {\n    var s0;\n\n    if (peg$r7.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e65); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseLu() {\n    var s0;\n\n    if (peg$r8.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e66); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseMc() {\n    var s0;\n\n    if (peg$r9.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e67); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseMn() {\n    var s0;\n\n    if (peg$r10.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e68); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseNd() {\n    var s0;\n\n    if (peg$r11.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e69); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseNl() {\n    var s0;\n\n    if (peg$r12.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e70); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsePc() {\n    var s0;\n\n    if (peg$r13.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e71); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseZs() {\n    var s0;\n\n    if (peg$r14.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e72); }\n    }\n\n    return s0;\n  }\n\n  function peg$parse__() {\n    var s0, s1;\n\n    s0 = [];\n    s1 = peg$parseWhiteSpace();\n    if (s1 === peg$FAILED) {\n      s1 = peg$parseLineTerminatorSequence();\n      if (s1 === peg$FAILED) {\n        s1 = peg$parseComment();\n      }\n    }\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$parseWhiteSpace();\n      if (s1 === peg$FAILED) {\n        s1 = peg$parseLineTerminatorSequence();\n        if (s1 === peg$FAILED) {\n          s1 = peg$parseComment();\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parse_() {\n    var s0, s1;\n\n    s0 = [];\n    s1 = peg$parseWhiteSpace();\n    if (s1 === peg$FAILED) {\n      s1 = peg$parseMultiLineCommentNoLineTerminator();\n    }\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$parseWhiteSpace();\n      if (s1 === peg$FAILED) {\n        s1 = peg$parseMultiLineCommentNoLineTerminator();\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseEOS() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (input.charCodeAt(peg$currPos) === 59) {\n      s2 = peg$c49;\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e73); }\n    }\n    if (s2 !== peg$FAILED) {\n      s1 = [s1, s2];\n      s0 = s1;\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parse_();\n      s2 = peg$parseSingleLineComment();\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      s3 = peg$parseLineTerminatorSequence();\n      if (s3 !== peg$FAILED) {\n        s1 = [s1, s2, s3];\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parse__();\n        s2 = peg$parseEOF();\n        if (s2 !== peg$FAILED) {\n          s1 = [s1, s2];\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseEOF() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    peg$silentFails++;\n    if (input.length > peg$currPos) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e14); }\n    }\n    peg$silentFails--;\n    if (s1 === peg$FAILED) {\n      s0 = undefined;\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n\n  // Cannot use Set here because of native IE support.\n  const reservedWords = options.reservedWords || [];\n\n  peg$result = peg$startRuleFunction();\n\n  if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n    return peg$result;\n  } else {\n    if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n      peg$fail(peg$endExpectation());\n    }\n\n    throw peg$buildStructuredError(\n      peg$maxFailExpected,\n      peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n      peg$maxFailPos < input.length\n        ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n        : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n    );\n  }\n}\n\nmodule.exports = {\n  SyntaxError: peg$SyntaxError,\n  parse: peg$parse\n};\n","\"use strict\";\n\nconst GrammarError = require(\"./grammar-error\");\nconst compiler = require(\"./compiler\");\nconst parser = require(\"./parser\");\nconst VERSION = require(\"./version\");\n\nconst RESERVED_WORDS = [\n  // Reserved keywords as of ECMAScript 2015\n  \"break\",\n  \"case\",\n  \"catch\",\n  \"class\",\n  \"const\",\n  \"continue\",\n  \"debugger\",\n  \"default\",\n  \"delete\",\n  \"do\",\n  \"else\",\n  \"export\",\n  \"extends\",\n  \"finally\",\n  \"for\",\n  \"function\",\n  \"if\",\n  \"import\",\n  \"in\",\n  \"instanceof\",\n  \"new\",\n  \"return\",\n  \"super\",\n  \"switch\",\n  \"this\",\n  \"throw\",\n  \"try\",\n  \"typeof\",\n  \"var\",\n  \"void\",\n  \"while\",\n  \"with\",\n  // \"yield\", // encountered twice on the web page\n\n  // Special constants\n  \"null\",\n  \"true\",\n  \"false\",\n\n  // These are always reserved:\n  \"enum\",\n\n  // The following are only reserved when they are found in strict mode code\n  // Peggy generates code in strictly mode, so it applicable to it\n  \"implements\",\n  \"interface\",\n  \"let\",\n  \"package\",\n  \"private\",\n  \"protected\",\n  \"public\",\n  \"static\",\n  \"yield\",\n\n  // The following are only reserved when they are found in module code:\n  \"await\",\n];\n\nconst peg = {\n  // Peggy version (filled in by /tools/release).\n  VERSION,\n  /**\n   * Default list of reserved words. Contains list of currently and future\n   * JavaScript (ECMAScript 2015) reserved words.\n   *\n   * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#reserved_keywords_as_of_ecmascript_2015\n   */\n  RESERVED_WORDS,\n  GrammarError,\n  parser,\n  compiler,\n\n  // Generates a parser from a specified grammar and returns it.\n  //\n  // The grammar must be a string in the format described by the meta-grammar in\n  // the parser.pegjs file.\n  //\n  // Throws |peg.parser.SyntaxError| if the grammar contains a syntax error or\n  // |peg.GrammarError| if it contains a semantic error. Note that not all\n  // errors are detected during the generation and some may protrude to the\n  // generated parser and cause its malfunction.\n  generate(grammar, options) {\n    options = options !== undefined ? options : {};\n\n    function copyPasses(passes) {\n      const converted = {};\n      Object.keys(passes).forEach(stage => {\n        converted[stage] = passes[stage].slice();\n      });\n\n      return converted;\n    }\n\n    const plugins = \"plugins\" in options ? options.plugins : [];\n    const config = {\n      parser: peg.parser,\n      passes: copyPasses(peg.compiler.passes),\n      reservedWords: peg.RESERVED_WORDS.slice(),\n    };\n\n    plugins.forEach(p => { p.use(config, options); });\n\n    return peg.compiler.compile(\n      config.parser.parse(grammar, {\n        grammarSource: options.grammarSource,\n        reservedWords: config.reservedWords,\n      }),\n      config.passes,\n      options\n    );\n  },\n};\n\nmodule.exports = peg;\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n *   Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n  if (error) {\n    throw error\n  }\n}\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n *   Acceptable results from compilers.\n *\n *   To register custom results, add them to\n *   {@linkcode CompileResultMap}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n *   The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n *   A **compiler** handles the compiling of a syntax tree to something else\n *   (in most cases, text) (TypeScript type).\n *\n *   It is used in the stringify phase and called with a {@linkcode Node}\n *   and {@linkcode VFile} representation of the document to compile.\n *   It should return the textual representation of the given tree (typically\n *   `string`).\n *\n *   > **Note**: unified typically compiles by serializing: most compilers\n *   > return `string` (or `Uint8Array`).\n *   > Some compilers, such as the one configured with\n *   > [`rehype-react`][rehype-react], return other values (in this case, a\n *   > React tree).\n *   > If you’re using a compiler that doesn’t serialize, expect different\n *   > result values.\n *   >\n *   > To register custom results in TypeScript, add them to\n *   > {@linkcode CompileResultMap}.\n *\n *   [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n *   Tree to compile.\n * @param {VFile} file\n *   File associated with `tree`.\n * @returns {Result}\n *   New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n *   something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The node that the parser yields (default: `Node`)\n * @callback Parser\n *   A **parser** handles the parsing of text to a syntax tree.\n *\n *   It is used in the parse phase and is called with a `string` and\n *   {@linkcode VFile} of the document to parse.\n *   It must return the syntax tree representation of the given file\n *   ({@linkcode Node}).\n * @param {string} document\n *   Document to parse.\n * @param {VFile} file\n *   File associated with `document`.\n * @returns {Tree}\n *   Node representing the given file.\n */\n\n/**\n * @typedef {(\n *   Plugin<Array<any>, any, any> |\n *   PluginTuple<Array<any>, any, any> |\n *   Preset\n * )} Pluggable\n *   Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array<Pluggable>} PluggableList\n *   List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n//  <https://github.com/microsoft/TypeScript/issues/55197>.\n/**\n * @template {Array<unknown>} [PluginParameters=[]]\n *   Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n *   Value that is expected as input (default: `Node`).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node it expects.\n *   *   If the plugin sets a {@linkcode Parser}, this should be\n *       `string`.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be the\n *       node it expects.\n * @template [Output=Input]\n *   Value that is yielded as output (default: `Input`).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node that that yields.\n *   *   If the plugin sets a {@linkcode Parser}, this should be the\n *       node that it yields.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be\n *       result it yields.\n * @typedef {(\n *   (this: Processor, ...parameters: PluginParameters) =>\n *     Input extends string ? // Parser.\n *        Output extends Node | undefined ? undefined | void : never :\n *     Output extends CompileResults ? // Compiler.\n *        Input extends Node | undefined ? undefined | void : never :\n *     Transformer<\n *       Input extends Node ? Input : Node,\n *       Output extends Node ? Output : Node\n *     > | undefined | void\n * )} Plugin\n *   Single plugin.\n *\n *   Plugins configure the processors they are applied on in the following\n *   ways:\n *\n *   *   they change the processor, such as the parser, the compiler, or by\n *       configuring data\n *   *   they specify how to handle trees and files\n *\n *   In practice, they are functions that can receive options and configure the\n *   processor (`this`).\n *\n *   > **Note**: plugins are called when the processor is *frozen*, not when\n *   > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array<unknown>} [TupleParameters=[]]\n *   Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n *   Value that is expected as input (optional).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node it expects.\n *   *   If the plugin sets a {@linkcode Parser}, this should be\n *       `string`.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be the\n *       node it expects.\n * @template [Output=undefined] (optional).\n *   Value that is yielded as output.\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node that that yields.\n *   *   If the plugin sets a {@linkcode Parser}, this should be the\n *       node that it yields.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be\n *       result it yields.\n * @typedef {(\n *   [\n *     plugin: Plugin<TupleParameters, Input, Output>,\n *     ...parameters: TupleParameters\n *   ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n *   Sharable configuration.\n *\n *   They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n *   List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n *   Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n *   The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n *   Callback called when the process is done.\n *\n *   Called with either an error or a result.\n * @param {Error | undefined} [error]\n *   Fatal error (optional).\n * @param {File | undefined} [file]\n *   Processed file (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n *   Callback called when transformers are done.\n *\n *   Called with either an error or results.\n * @param {Error | undefined} [error]\n *   Fatal error (optional).\n * @param {Tree | undefined} [tree]\n *   Transformed tree (optional).\n * @param {VFile | undefined} [file]\n *   File (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n *   Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n *   Callback passed to transforms.\n *\n *   If the signature of a `transformer` accepts a third argument, the\n *   transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n *   Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n *   New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n *   New, changed, file (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n *   Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n *   Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n *   Transformers handle syntax trees and files.\n *\n *   They are functions that are called each time a syntax tree and file are\n *   passed through the run phase.\n *   When an error occurs in them (either because it’s thrown, returned,\n *   rejected, or passed to `next`), the process stops.\n *\n *   The run phase is handled by [`trough`][trough], see its documentation for\n *   the exact semantics of these functions.\n *\n *   > **Note**: you should likely ignore `next`: don’t accept it.\n *   > it supports callback-style async work.\n *   > But promises are likely easier to reason about.\n *\n *   [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n *   Tree to handle.\n * @param {VFile} file\n *   File to handle.\n * @param {TransformCallback<Output>} next\n *   Callback.\n * @returns {(\n *   Promise<Output | undefined | void> |\n *   Promise<never> | // For some reason this is needed separately.\n *   Output |\n *   Error |\n *   undefined |\n *   void\n * )}\n *   If you accept `next`, nothing.\n *   Otherwise:\n *\n *   *   `Error` — fatal error to stop the process\n *   *   `Promise<undefined>` or `undefined` — the next transformer keeps using\n *       same tree\n *   *   `Promise<Node>` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n *   Output of `parse`.\n * @template {Node | undefined} HeadTree\n *   Input for `run`.\n * @template {Node | undefined} TailTree\n *   Output for `run`.\n * @template {Node | undefined} CompileTree\n *   Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n *   Output of `stringify`.\n * @template {Node | string | undefined} Input\n *   Input of plugin.\n * @template Output\n *   Output of plugin (optional).\n * @typedef {(\n *   Input extends string\n *     ? Output extends Node | undefined\n *       ? // Parser.\n *         Processor<\n *           Output extends undefined ? ParseTree : Output,\n *           HeadTree,\n *           TailTree,\n *           CompileTree,\n *           CompileResult\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : Output extends CompileResults\n *     ? Input extends Node | undefined\n *       ? // Compiler.\n *         Processor<\n *           ParseTree,\n *           HeadTree,\n *           TailTree,\n *           Input extends undefined ? CompileTree : Input,\n *           Output extends undefined ? CompileResult : Output\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : Input extends Node | undefined\n *     ? Output extends Node | undefined\n *       ? // Transform.\n *         Processor<\n *           ParseTree,\n *           HeadTree extends undefined ? Input : HeadTree,\n *           Output extends undefined ? TailTree : Output,\n *           CompileTree,\n *           CompileResult\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : // Unknown.\n *       Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * )} UsePlugin\n *   Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n *   Node type that the transformer yields.\n * @typedef {(\n *   Result extends Value | undefined ?\n *     VFile :\n *     VFile & {result: Result}\n *   )} VFileWithOutput\n *   Type to generate a {@linkcode VFile} corresponding to a compiler result.\n *\n *   If a result that is not acceptable on a `VFile` is used, that will\n *   be stored on the `result` field of {@linkcode VFile}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n *   Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n *   Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n *   Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n *   Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n *   Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>}\n */\nexport class Processor extends CallableInstance {\n  /**\n   * Create a processor.\n   */\n  constructor() {\n    // If `Processor()` is called (w/o new), `copy` is called instead.\n    super('copy')\n\n    /**\n     * Compiler to use (deprecated).\n     *\n     * @deprecated\n     *   Use `compiler` instead.\n     * @type {(\n     *   Compiler<\n     *     CompileTree extends undefined ? Node : CompileTree,\n     *     CompileResult extends undefined ? CompileResults : CompileResult\n     *   > |\n     *   undefined\n     * )}\n     */\n    this.Compiler = undefined\n\n    /**\n     * Parser to use (deprecated).\n     *\n     * @deprecated\n     *   Use `parser` instead.\n     * @type {(\n     *   Parser<ParseTree extends undefined ? Node : ParseTree> |\n     *   undefined\n     * )}\n     */\n    this.Parser = undefined\n\n    // Note: the following fields are considered private.\n    // However, they are needed for tests, and TSC generates an untyped\n    // `private freezeIndex` field for, which trips `type-coverage` up.\n    // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n    /**\n     * Internal list of configured plugins.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Array<PluginTuple<Array<unknown>>>}\n     */\n    this.attachers = []\n\n    /**\n     * Compiler to use.\n     *\n     * @type {(\n     *   Compiler<\n     *     CompileTree extends undefined ? Node : CompileTree,\n     *     CompileResult extends undefined ? CompileResults : CompileResult\n     *   > |\n     *   undefined\n     * )}\n     */\n    this.compiler = undefined\n\n    /**\n     * Internal state to track where we are while freezing.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {number}\n     */\n    this.freezeIndex = -1\n\n    /**\n     * Internal state to track whether we’re frozen.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {boolean | undefined}\n     */\n    this.frozen = undefined\n\n    /**\n     * Internal state.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Data}\n     */\n    this.namespace = {}\n\n    /**\n     * Parser to use.\n     *\n     * @type {(\n     *   Parser<ParseTree extends undefined ? Node : ParseTree> |\n     *   undefined\n     * )}\n     */\n    this.parser = undefined\n\n    /**\n     * Internal list of configured transformers.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Pipeline}\n     */\n    this.transformers = trough()\n  }\n\n  /**\n   * Copy a processor.\n   *\n   * @deprecated\n   *   This is a private internal method and should not be used.\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   New *unfrozen* processor ({@linkcode Processor}) that is\n   *   configured to work the same as its ancestor.\n   *   When the descendant processor is configured in the future it does not\n   *   affect the ancestral processor.\n   */\n  copy() {\n    // Cast as the type parameters will be the same after attaching.\n    const destination =\n      /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */ (\n        new Processor()\n      )\n    let index = -1\n\n    while (++index < this.attachers.length) {\n      const attacher = this.attachers[index]\n      destination.use(...attacher)\n    }\n\n    destination.data(extend(true, {}, this.namespace))\n\n    return destination\n  }\n\n  /**\n   * Configure the processor with info available to all plugins.\n   * Information is stored in an object.\n   *\n   * Typically, options can be given to a specific plugin, but sometimes it\n   * makes sense to have information shared with several plugins.\n   * For example, a list of HTML elements that are self-closing, which is\n   * needed during all phases.\n   *\n   * > **Note**: setting information cannot occur on *frozen* processors.\n   * > Call the processor first to create a new unfrozen processor.\n   *\n   * > **Note**: to register custom data in TypeScript, augment the\n   * > {@linkcode Data} interface.\n   *\n   * @example\n   *   This example show how to get and set info:\n   *\n   *   ```js\n   *   import {unified} from 'unified'\n   *\n   *   const processor = unified().data('alpha', 'bravo')\n   *\n   *   processor.data('alpha') // => 'bravo'\n   *\n   *   processor.data() // => {alpha: 'bravo'}\n   *\n   *   processor.data({charlie: 'delta'})\n   *\n   *   processor.data() // => {charlie: 'delta'}\n   *   ```\n   *\n   * @template {keyof Data} Key\n   *\n   * @overload\n   * @returns {Data}\n   *\n   * @overload\n   * @param {Data} dataset\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {Key} key\n   * @returns {Data[Key]}\n   *\n   * @overload\n   * @param {Key} key\n   * @param {Data[Key]} value\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @param {Data | Key} [key]\n   *   Key to get or set, or entire dataset to set, or nothing to get the\n   *   entire dataset (optional).\n   * @param {Data[Key]} [value]\n   *   Value to set (optional).\n   * @returns {unknown}\n   *   The current processor when setting, the value at `key` when getting, or\n   *   the entire dataset when getting without key.\n   */\n  data(key, value) {\n    if (typeof key === 'string') {\n      // Set `key`.\n      if (arguments.length === 2) {\n        assertUnfrozen('data', this.frozen)\n        this.namespace[key] = value\n        return this\n      }\n\n      // Get `key`.\n      return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n    }\n\n    // Set space.\n    if (key) {\n      assertUnfrozen('data', this.frozen)\n      this.namespace = key\n      return this\n    }\n\n    // Get space.\n    return this.namespace\n  }\n\n  /**\n   * Freeze a processor.\n   *\n   * Frozen processors are meant to be extended and not to be configured\n   * directly.\n   *\n   * When a processor is frozen it cannot be unfrozen.\n   * New processors working the same way can be created by calling the\n   * processor.\n   *\n   * It’s possible to freeze processors explicitly by calling `.freeze()`.\n   * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n   * `.stringify()`, `.process()`, or `.processSync()` are called.\n   *\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   The current processor.\n   */\n  freeze() {\n    if (this.frozen) {\n      return this\n    }\n\n    // Cast so that we can type plugins easier.\n    // Plugins are supposed to be usable on different processors, not just on\n    // this exact processor.\n    const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n    while (++this.freezeIndex < this.attachers.length) {\n      const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n      if (options[0] === false) {\n        continue\n      }\n\n      if (options[0] === true) {\n        options[0] = undefined\n      }\n\n      const transformer = attacher.call(self, ...options)\n\n      if (typeof transformer === 'function') {\n        this.transformers.use(transformer)\n      }\n    }\n\n    this.frozen = true\n    this.freezeIndex = Number.POSITIVE_INFINITY\n\n    return this\n  }\n\n  /**\n   * Parse text to a syntax tree.\n   *\n   * > **Note**: `parse` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `parse` performs the parse phase, not the run phase or other\n   * > phases.\n   *\n   * @param {Compatible | undefined} [file]\n   *   file to parse (optional); typically `string` or `VFile`; any value\n   *   accepted as `x` in `new VFile(x)`.\n   * @returns {ParseTree extends undefined ? Node : ParseTree}\n   *   Syntax tree representing `file`.\n   */\n  parse(file) {\n    this.freeze()\n    const realFile = vfile(file)\n    const parser = this.parser || this.Parser\n    assertParser('parse', parser)\n    return parser(String(realFile), realFile)\n  }\n\n  /**\n   * Process the given file as configured on the processor.\n   *\n   * > **Note**: `process` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `process` performs the parse, run, and stringify phases.\n   *\n   * @overload\n   * @param {Compatible | undefined} file\n   * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {Compatible | undefined} [file]\n   * @returns {Promise<VFileWithOutput<CompileResult>>}\n   *\n   * @param {Compatible | undefined} [file]\n   *   File (optional); typically `string` or `VFile`]; any value accepted as\n   *   `x` in `new VFile(x)`.\n   * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]\n   *   Callback (optional).\n   * @returns {Promise<VFile> | undefined}\n   *   Nothing if `done` is given.\n   *   Otherwise a promise, rejected with a fatal error or resolved with the\n   *   processed file.\n   *\n   *   The parsed, transformed, and compiled value is available at\n   *   `file.value` (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most\n   *   > compilers return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you’re using a compiler that doesn’t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  process(file, done) {\n    const self = this\n\n    this.freeze()\n    assertParser('process', this.parser || this.Parser)\n    assertCompiler('process', this.compiler || this.Compiler)\n\n    return done ? executor(undefined, done) : new Promise(executor)\n\n    // Note: `void`s needed for TS.\n    /**\n     * @param {((file: VFileWithOutput<CompileResult>) => undefined | void) | undefined} resolve\n     * @param {(error: Error | undefined) => undefined | void} reject\n     * @returns {undefined}\n     */\n    function executor(resolve, reject) {\n      const realFile = vfile(file)\n      // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n      // input of the first transform).\n      const parseTree =\n        /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n          /** @type {unknown} */ (self.parse(realFile))\n        )\n\n      self.run(parseTree, realFile, function (error, tree, file) {\n        if (error || !tree || !file) {\n          return realDone(error)\n        }\n\n        // Assume `TailTree` (the output of the last transform) matches\n        // `CompileTree` (the input of the compiler).\n        const compileTree =\n          /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n            /** @type {unknown} */ (tree)\n          )\n\n        const compileResult = self.stringify(compileTree, file)\n\n        if (looksLikeAValue(compileResult)) {\n          file.value = compileResult\n        } else {\n          file.result = compileResult\n        }\n\n        realDone(error, /** @type {VFileWithOutput<CompileResult>} */ (file))\n      })\n\n      /**\n       * @param {Error | undefined} error\n       * @param {VFileWithOutput<CompileResult> | undefined} [file]\n       * @returns {undefined}\n       */\n      function realDone(error, file) {\n        if (error || !file) {\n          reject(error)\n        } else if (resolve) {\n          resolve(file)\n        } else {\n          assert(done, '`done` is defined if `resolve` is not')\n          done(undefined, file)\n        }\n      }\n    }\n  }\n\n  /**\n   * Process the given file as configured on the processor.\n   *\n   * An error is thrown if asynchronous transforms are configured.\n   *\n   * > **Note**: `processSync` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `processSync` performs the parse, run, and stringify phases.\n   *\n   * @param {Compatible | undefined} [file]\n   *   File (optional); typically `string` or `VFile`; any value accepted as\n   *   `x` in `new VFile(x)`.\n   * @returns {VFileWithOutput<CompileResult>}\n   *   The processed file.\n   *\n   *   The parsed, transformed, and compiled value is available at\n   *   `file.value` (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most\n   *   > compilers return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you’re using a compiler that doesn’t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  processSync(file) {\n    /** @type {boolean} */\n    let complete = false\n    /** @type {VFileWithOutput<CompileResult> | undefined} */\n    let result\n\n    this.freeze()\n    assertParser('processSync', this.parser || this.Parser)\n    assertCompiler('processSync', this.compiler || this.Compiler)\n\n    this.process(file, realDone)\n    assertDone('processSync', 'process', complete)\n    assert(result, 'we either bailed on an error or have a tree')\n\n    return result\n\n    /**\n     * @type {ProcessCallback<VFileWithOutput<CompileResult>>}\n     */\n    function realDone(error, file) {\n      complete = true\n      bail(error)\n      result = file\n    }\n  }\n\n  /**\n   * Run *transformers* on a syntax tree.\n   *\n   * > **Note**: `run` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `run` performs the run phase, not other phases.\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {Compatible | undefined} file\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {Compatible | undefined} [file]\n   * @returns {Promise<TailTree extends undefined ? Node : TailTree>}\n   *\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   *   Tree to transform and inspect.\n   * @param {(\n   *   RunCallback<TailTree extends undefined ? Node : TailTree> |\n   *   Compatible\n   * )} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]\n   *   Callback (optional).\n   * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}\n   *   Nothing if `done` is given.\n   *   Otherwise, a promise rejected with a fatal error or resolved with the\n   *   transformed tree.\n   */\n  run(tree, file, done) {\n    assertNode(tree)\n    this.freeze()\n\n    const transformers = this.transformers\n\n    if (!done && typeof file === 'function') {\n      done = file\n      file = undefined\n    }\n\n    return done ? executor(undefined, done) : new Promise(executor)\n\n    // Note: `void`s needed for TS.\n    /**\n     * @param {(\n     *   ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n     *   undefined\n     * )} resolve\n     * @param {(error: Error) => undefined | void} reject\n     * @returns {undefined}\n     */\n    function executor(resolve, reject) {\n      assert(\n        typeof file !== 'function',\n        '`file` can’t be a `done` anymore, we checked'\n      )\n      const realFile = vfile(file)\n      transformers.run(tree, realFile, realDone)\n\n      /**\n       * @param {Error | undefined} error\n       * @param {Node} outputTree\n       * @param {VFile} file\n       * @returns {undefined}\n       */\n      function realDone(error, outputTree, file) {\n        const resultingTree =\n          /** @type {TailTree extends undefined ? Node : TailTree} */ (\n            outputTree || tree\n          )\n\n        if (error) {\n          reject(error)\n        } else if (resolve) {\n          resolve(resultingTree)\n        } else {\n          assert(done, '`done` is defined if `resolve` is not')\n          done(undefined, resultingTree, file)\n        }\n      }\n    }\n  }\n\n  /**\n   * Run *transformers* on a syntax tree.\n   *\n   * An error is thrown if asynchronous transforms are configured.\n   *\n   * > **Note**: `runSync` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `runSync` performs the run phase, not other phases.\n   *\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   *   Tree to transform and inspect.\n   * @param {Compatible | undefined} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @returns {TailTree extends undefined ? Node : TailTree}\n   *   Transformed tree.\n   */\n  runSync(tree, file) {\n    /** @type {boolean} */\n    let complete = false\n    /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n    let result\n\n    this.run(tree, file, realDone)\n\n    assertDone('runSync', 'run', complete)\n    assert(result, 'we either bailed on an error or have a tree')\n    return result\n\n    /**\n     * @type {RunCallback<TailTree extends undefined ? Node : TailTree>}\n     */\n    function realDone(error, tree) {\n      bail(error)\n      result = tree\n      complete = true\n    }\n  }\n\n  /**\n   * Compile a syntax tree.\n   *\n   * > **Note**: `stringify` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `stringify` performs the stringify phase, not the run phase\n   * > or other phases.\n   *\n   * @param {CompileTree extends undefined ? Node : CompileTree} tree\n   *   Tree to compile.\n   * @param {Compatible | undefined} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @returns {CompileResult extends undefined ? Value : CompileResult}\n   *   Textual representation of the tree (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most compilers\n   *   > return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you’re using a compiler that doesn’t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  stringify(tree, file) {\n    this.freeze()\n    const realFile = vfile(file)\n    const compiler = this.compiler || this.Compiler\n    assertCompiler('stringify', compiler)\n    assertNode(tree)\n\n    return compiler(tree, realFile)\n  }\n\n  /**\n   * Configure the processor to use a plugin, a list of usable values, or a\n   * preset.\n   *\n   * If the processor is already using a plugin, the previous plugin\n   * configuration is changed based on the options that are passed in.\n   * In other words, the plugin is not added a second time.\n   *\n   * > **Note**: `use` cannot be called on *frozen* processors.\n   * > Call the processor first to create a new unfrozen processor.\n   *\n   * @example\n   *   There are many ways to pass plugins to `.use()`.\n   *   This example gives an overview:\n   *\n   *   ```js\n   *   import {unified} from 'unified'\n   *\n   *   unified()\n   *     // Plugin with options:\n   *     .use(pluginA, {x: true, y: true})\n   *     // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n   *     .use(pluginA, {y: false, z: true})\n   *     // Plugins:\n   *     .use([pluginB, pluginC])\n   *     // Two plugins, the second with options:\n   *     .use([pluginD, [pluginE, {}]])\n   *     // Preset with plugins and settings:\n   *     .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n   *     // Settings only:\n   *     .use({settings: {position: false}})\n   *   ```\n   *\n   * @template {Array<unknown>} [Parameters=[]]\n   * @template {Node | string | undefined} [Input=undefined]\n   * @template [Output=Input]\n   *\n   * @overload\n   * @param {Preset | null | undefined} [preset]\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {PluggableList} list\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {Plugin<Parameters, Input, Output>} plugin\n   * @param {...(Parameters | [boolean])} parameters\n   * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}\n   *\n   * @param {PluggableList | Plugin | Preset | null | undefined} value\n   *   Usable value.\n   * @param {...unknown} parameters\n   *   Parameters, when a plugin is given as a usable value.\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   Current processor.\n   */\n  use(value, ...parameters) {\n    const attachers = this.attachers\n    const namespace = this.namespace\n\n    assertUnfrozen('use', this.frozen)\n\n    if (value === null || value === undefined) {\n      // Empty.\n    } else if (typeof value === 'function') {\n      addPlugin(value, parameters)\n    } else if (typeof value === 'object') {\n      if (Array.isArray(value)) {\n        addList(value)\n      } else {\n        addPreset(value)\n      }\n    } else {\n      throw new TypeError('Expected usable value, not `' + value + '`')\n    }\n\n    return this\n\n    /**\n     * @param {Pluggable} value\n     * @returns {undefined}\n     */\n    function add(value) {\n      if (typeof value === 'function') {\n        addPlugin(value, [])\n      } else if (typeof value === 'object') {\n        if (Array.isArray(value)) {\n          const [plugin, ...parameters] =\n            /** @type {PluginTuple<Array<unknown>>} */ (value)\n          addPlugin(plugin, parameters)\n        } else {\n          addPreset(value)\n        }\n      } else {\n        throw new TypeError('Expected usable value, not `' + value + '`')\n      }\n    }\n\n    /**\n     * @param {Preset} result\n     * @returns {undefined}\n     */\n    function addPreset(result) {\n      if (!('plugins' in result) && !('settings' in result)) {\n        throw new Error(\n          'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n        )\n      }\n\n      addList(result.plugins)\n\n      if (result.settings) {\n        namespace.settings = extend(true, namespace.settings, result.settings)\n      }\n    }\n\n    /**\n     * @param {PluggableList | null | undefined} plugins\n     * @returns {undefined}\n     */\n    function addList(plugins) {\n      let index = -1\n\n      if (plugins === null || plugins === undefined) {\n        // Empty.\n      } else if (Array.isArray(plugins)) {\n        while (++index < plugins.length) {\n          const thing = plugins[index]\n          add(thing)\n        }\n      } else {\n        throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n      }\n    }\n\n    /**\n     * @param {Plugin} plugin\n     * @param {Array<unknown>} parameters\n     * @returns {undefined}\n     */\n    function addPlugin(plugin, parameters) {\n      let index = -1\n      let entryIndex = -1\n\n      while (++index < attachers.length) {\n        if (attachers[index][0] === plugin) {\n          entryIndex = index\n          break\n        }\n      }\n\n      if (entryIndex === -1) {\n        attachers.push([plugin, ...parameters])\n      }\n      // Only set if there was at least a `primary` value, otherwise we’d change\n      // `arguments.length`.\n      else if (parameters.length > 0) {\n        let [primary, ...rest] = parameters\n        const currentPrimary = attachers[entryIndex][1]\n        if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n          primary = extend(true, currentPrimary, primary)\n        }\n\n        attachers[entryIndex] = [plugin, primary, ...rest]\n      }\n    }\n  }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n *   This example shows how a new processor can be created (from `remark`) and linked\n *   to **stdin**(4) and **stdout**(4).\n *\n *   ```js\n *   import process from 'node:process'\n *   import concatStream from 'concat-stream'\n *   import {remark} from 'remark'\n *\n *   process.stdin.pipe(\n *     concatStream(function (buf) {\n *       process.stdout.write(String(remark().processSync(buf)))\n *     })\n *   )\n *   ```\n *\n * @returns\n *   New *unfrozen* processor (`processor`).\n *\n *   This processor is configured to work the same as its ancestor.\n *   When the descendant processor is configured in the future it does not\n *   affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `parser`')\n  }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `compiler`')\n  }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n  if (frozen) {\n    throw new Error(\n      'Cannot call `' +\n        name +\n        '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n    )\n  }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n  // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n  // type-coverage:ignore-next-line\n  if (!isPlainObj(node) || typeof node.type !== 'string') {\n    throw new TypeError('Expected node, got `' + node + '`')\n    // Fine.\n  }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n  if (!complete) {\n    throw new Error(\n      '`' + name + '` finished async. Use `' + asyncName + '` instead'\n    )\n  }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n  return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'message' in value &&\n      'messages' in value\n  )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n  return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n *   thing.\n * @returns {value is Uint8Array}\n *   Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'byteLength' in value &&\n      'byteOffset' in value\n  )\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n *   Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n *   Ware.\n *\n * @typedef Pipeline\n *   Pipeline.\n * @property {Run} run\n *   Run the pipeline.\n * @property {Use} use\n *   Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n *   Call all middleware.\n *\n *   Calls `done` on completion with either an error or the output of the\n *   last middleware.\n *\n *   > 👉 **Note**: as the length of input defines whether async functions get a\n *   > `next` function,\n *   > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n *   Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n *   Pipeline.\n */\nexport function trough() {\n  /** @type {Array<Middleware>} */\n  const fns = []\n  /** @type {Pipeline} */\n  const pipeline = {run, use}\n\n  return pipeline\n\n  /** @type {Run} */\n  function run(...values) {\n    let middlewareIndex = -1\n    /** @type {Callback} */\n    const callback = values.pop()\n\n    if (typeof callback !== 'function') {\n      throw new TypeError('Expected function as last argument, not ' + callback)\n    }\n\n    next(null, ...values)\n\n    /**\n     * Run the next `fn`, or we’re done.\n     *\n     * @param {Error | null | undefined} error\n     * @param {Array<any>} output\n     */\n    function next(error, ...output) {\n      const fn = fns[++middlewareIndex]\n      let index = -1\n\n      if (error) {\n        callback(error)\n        return\n      }\n\n      // Copy non-nullish input into values.\n      while (++index < values.length) {\n        if (output[index] === null || output[index] === undefined) {\n          output[index] = values[index]\n        }\n      }\n\n      // Save the newly created `output` for the next call.\n      values = output\n\n      // Next or done.\n      if (fn) {\n        wrap(fn, next)(...output)\n      } else {\n        callback(null, ...output)\n      }\n    }\n  }\n\n  /** @type {Use} */\n  function use(middelware) {\n    if (typeof middelware !== 'function') {\n      throw new TypeError(\n        'Expected `middelware` to be a function, not ' + middelware\n      )\n    }\n\n    fns.push(middelware)\n    return pipeline\n  }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n *   returns a promise that is rejected,\n *   or calls the given `done` function with an error,\n *   `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n *   that value is the main output value\n * * if `middleware` calls `done`,\n *   all non-nullish values except for the first one (the error) overwrite the\n *   output values\n *\n * @param {Middleware} middleware\n *   Function to wrap.\n * @param {Callback} callback\n *   Callback called with the output of `middleware`.\n * @returns {Run}\n *   Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n  /** @type {boolean} */\n  let called\n\n  return wrapped\n\n  /**\n   * Call `middleware`.\n   * @this {any}\n   * @param {Array<any>} parameters\n   * @returns {void}\n   */\n  function wrapped(...parameters) {\n    const fnExpectsCallback = middleware.length > parameters.length\n    /** @type {any} */\n    let result\n\n    if (fnExpectsCallback) {\n      parameters.push(done)\n    }\n\n    try {\n      result = middleware.apply(this, parameters)\n    } catch (error) {\n      const exception = /** @type {Error} */ (error)\n\n      // Well, this is quite the pickle.\n      // `middleware` received a callback and called it synchronously, but that\n      // threw an error.\n      // The only thing left to do is to throw the thing instead.\n      if (fnExpectsCallback && called) {\n        throw exception\n      }\n\n      return done(exception)\n    }\n\n    if (!fnExpectsCallback) {\n      if (result && result.then && typeof result.then === 'function') {\n        result.then(then, done)\n      } else if (result instanceof Error) {\n        done(result)\n      } else {\n        then(result)\n      }\n    }\n  }\n\n  /**\n   * Call `callback`, only once.\n   *\n   * @type {Callback}\n   */\n  function done(error, ...output) {\n    if (!called) {\n      called = true\n      callback(error, ...output)\n    }\n  }\n\n  /**\n   * Call `done` with one value.\n   *\n   * @param {any} [value]\n   */\n  function then(value) {\n    done(null, value)\n  }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n *   Node, position, or point.\n * @returns {string}\n *   Pretty printed positional info of a node (`string`).\n *\n *   In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n *   or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n *   column, `s` for `start`, and `e` for end.\n *   An empty string (`''`) is returned if the given value is neither `node`,\n *   `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n  // Nothing.\n  if (!value || typeof value !== 'object') {\n    return ''\n  }\n\n  // Node.\n  if ('position' in value || 'type' in value) {\n    return position(value.position)\n  }\n\n  // Position.\n  if ('start' in value || 'end' in value) {\n    return position(value)\n  }\n\n  // Point.\n  if ('line' in value || 'column' in value) {\n    return point(value)\n  }\n\n  // ?\n  return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n  return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n  return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n  return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n *   Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n *   Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n *   Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n *   Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n *   Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n *   Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n  /**\n   * Create a message for `reason`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Options | null | undefined} [options]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns\n   *   Instance of `VFileMessage`.\n   */\n  // eslint-disable-next-line complexity\n  constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n    super()\n\n    if (typeof optionsOrParentOrPlace === 'string') {\n      origin = optionsOrParentOrPlace\n      optionsOrParentOrPlace = undefined\n    }\n\n    /** @type {string} */\n    let reason = ''\n    /** @type {Options} */\n    let options = {}\n    let legacyCause = false\n\n    if (optionsOrParentOrPlace) {\n      // Point.\n      if (\n        'line' in optionsOrParentOrPlace &&\n        'column' in optionsOrParentOrPlace\n      ) {\n        options = {place: optionsOrParentOrPlace}\n      }\n      // Position.\n      else if (\n        'start' in optionsOrParentOrPlace &&\n        'end' in optionsOrParentOrPlace\n      ) {\n        options = {place: optionsOrParentOrPlace}\n      }\n      // Node.\n      else if ('type' in optionsOrParentOrPlace) {\n        options = {\n          ancestors: [optionsOrParentOrPlace],\n          place: optionsOrParentOrPlace.position\n        }\n      }\n      // Options.\n      else {\n        options = {...optionsOrParentOrPlace}\n      }\n    }\n\n    if (typeof causeOrReason === 'string') {\n      reason = causeOrReason\n    }\n    // Error.\n    else if (!options.cause && causeOrReason) {\n      legacyCause = true\n      reason = causeOrReason.message\n      options.cause = causeOrReason\n    }\n\n    if (!options.ruleId && !options.source && typeof origin === 'string') {\n      const index = origin.indexOf(':')\n\n      if (index === -1) {\n        options.ruleId = origin\n      } else {\n        options.source = origin.slice(0, index)\n        options.ruleId = origin.slice(index + 1)\n      }\n    }\n\n    if (!options.place && options.ancestors && options.ancestors) {\n      const parent = options.ancestors[options.ancestors.length - 1]\n\n      if (parent) {\n        options.place = parent.position\n      }\n    }\n\n    const start =\n      options.place && 'start' in options.place\n        ? options.place.start\n        : options.place\n\n    /* eslint-disable no-unused-expressions */\n    /**\n     * Stack of ancestor nodes surrounding the message.\n     *\n     * @type {Array<Node> | undefined}\n     */\n    this.ancestors = options.ancestors || undefined\n\n    /**\n     * Original error cause of the message.\n     *\n     * @type {Error | undefined}\n     */\n    this.cause = options.cause || undefined\n\n    /**\n     * Starting column of message.\n     *\n     * @type {number | undefined}\n     */\n    this.column = start ? start.column : undefined\n\n    /**\n     * State of problem.\n     *\n     * * `true` — error, file not usable\n     * * `false` — warning, change may be needed\n     * * `undefined` — change likely not needed\n     *\n     * @type {boolean | null | undefined}\n     */\n    this.fatal = undefined\n\n    /**\n     * Path of a file (used throughout the `VFile` ecosystem).\n     *\n     * @type {string | undefined}\n     */\n    this.file\n\n    // Field from `Error`.\n    /**\n     * Reason for message.\n     *\n     * @type {string}\n     */\n    this.message = reason\n\n    /**\n     * Starting line of error.\n     *\n     * @type {number | undefined}\n     */\n    this.line = start ? start.line : undefined\n\n    // Field from `Error`.\n    /**\n     * Serialized positional info of message.\n     *\n     * On normal errors, this would be something like `ParseError`, buit in\n     * `VFile` messages we use this space to show where an error happened.\n     */\n    this.name = stringifyPosition(options.place) || '1:1'\n\n    /**\n     * Place of message.\n     *\n     * @type {Point | Position | undefined}\n     */\n    this.place = options.place || undefined\n\n    /**\n     * Reason for message, should use markdown.\n     *\n     * @type {string}\n     */\n    this.reason = this.message\n\n    /**\n     * Category of message (example: `'my-rule'`).\n     *\n     * @type {string | undefined}\n     */\n    this.ruleId = options.ruleId || undefined\n\n    /**\n     * Namespace of message (example: `'my-package'`).\n     *\n     * @type {string | undefined}\n     */\n    this.source = options.source || undefined\n\n    // Field from `Error`.\n    /**\n     * Stack of message.\n     *\n     * This is used by normal errors to show where something happened in\n     * programming code, irrelevant for `VFile` messages,\n     *\n     * @type {string}\n     */\n    this.stack =\n      legacyCause && options.cause && typeof options.cause.stack === 'string'\n        ? options.cause.stack\n        : ''\n\n    // The following fields are “well known”.\n    // Not standard.\n    // Feel free to add other non-standard fields to your messages.\n\n    /**\n     * Specify the source value that’s being reported, which is deemed\n     * incorrect.\n     *\n     * @type {string | undefined}\n     */\n    this.actual\n\n    /**\n     * Suggest acceptable values that can be used instead of `actual`.\n     *\n     * @type {Array<string> | undefined}\n     */\n    this.expected\n\n    /**\n     * Long form description of the message (you should use markdown).\n     *\n     * @type {string | undefined}\n     */\n    this.note\n\n    /**\n     * Link to docs for the message.\n     *\n     * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n     * > to `new URL(x)`.\n     *\n     * @type {string | undefined}\n     */\n    this.url\n    /* eslint-enable no-unused-expressions */\n  }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n *   File path or URL.\n * @returns {fileUrlOrPath is URL}\n *   Whether it’s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nexport function isUrl(fileUrlOrPath) {\n  return Boolean(\n    fileUrlOrPath !== null &&\n      typeof fileUrlOrPath === 'object' &&\n      'href' in fileUrlOrPath &&\n      fileUrlOrPath.href &&\n      'protocol' in fileUrlOrPath &&\n      fileUrlOrPath.protocol &&\n      // @ts-expect-error: indexing is fine.\n      fileUrlOrPath.auth === undefined\n  )\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n  'history',\n  'path',\n  'basename',\n  'stem',\n  'extname',\n  'dirname'\n])\n\nexport class VFile {\n  /**\n   * Create a new virtual file.\n   *\n   * `options` is treated as:\n   *\n   * *   `string` or `Uint8Array` — `{value: options}`\n   * *   `URL` — `{path: options}`\n   * *   `VFile` — shallow copies its data over to the new file\n   * *   `object` — all fields are shallow copied over to the new file\n   *\n   * Path related fields are set in the following order (least specific to\n   * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n   * `dirname`.\n   *\n   * You cannot set `dirname` or `extname` without setting either `history`,\n   * `path`, `basename`, or `stem` too.\n   *\n   * @param {Compatible | null | undefined} [value]\n   *   File value.\n   * @returns\n   *   New instance.\n   */\n  constructor(value) {\n    /** @type {Options | VFile} */\n    let options\n\n    if (!value) {\n      options = {}\n    } else if (isUrl(value)) {\n      options = {path: value}\n    } else if (typeof value === 'string' || isUint8Array(value)) {\n      options = {value}\n    } else {\n      options = value\n    }\n\n    /* eslint-disable no-unused-expressions */\n\n    /**\n     * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n     *\n     * @type {string}\n     */\n    // Prevent calling `cwd` (which could be expensive) if it’s not needed;\n    // the empty string will be overridden in the next block.\n    this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n    /**\n     * Place to store custom info (default: `{}`).\n     *\n     * It’s OK to store custom data directly on the file but moving it to\n     * `data` is recommended.\n     *\n     * @type {Data}\n     */\n    this.data = {}\n\n    /**\n     * List of file paths the file moved between.\n     *\n     * The first is the original path and the last is the current path.\n     *\n     * @type {Array<string>}\n     */\n    this.history = []\n\n    /**\n     * List of messages associated with the file.\n     *\n     * @type {Array<VFileMessage>}\n     */\n    this.messages = []\n\n    /**\n     * Raw value.\n     *\n     * @type {Value}\n     */\n    this.value\n\n    // The below are non-standard, they are “well-known”.\n    // As in, used in several tools.\n    /**\n     * Source map.\n     *\n     * This type is equivalent to the `RawSourceMap` type from the `source-map`\n     * module.\n     *\n     * @type {Map | null | undefined}\n     */\n    this.map\n\n    /**\n     * Custom, non-string, compiled, representation.\n     *\n     * This is used by unified to store non-string results.\n     * One example is when turning markdown into React nodes.\n     *\n     * @type {unknown}\n     */\n    this.result\n\n    /**\n     * Whether a file was saved to disk.\n     *\n     * This is used by vfile reporters.\n     *\n     * @type {boolean}\n     */\n    this.stored\n    /* eslint-enable no-unused-expressions */\n\n    // Set path related properties in the correct order.\n    let index = -1\n\n    while (++index < order.length) {\n      const field = order[index]\n\n      // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n      // `vfile`s too.\n      if (\n        field in options &&\n        options[field] !== undefined &&\n        options[field] !== null\n      ) {\n        // @ts-expect-error: TS doesn’t understand basic reality.\n        this[field] = field === 'history' ? [...options[field]] : options[field]\n      }\n    }\n\n    /** @type {string} */\n    let field\n\n    // Set non-path related properties.\n    for (field in options) {\n      // @ts-expect-error: fine to set other things.\n      if (!order.includes(field)) {\n        // @ts-expect-error: fine to set other things.\n        this[field] = options[field]\n      }\n    }\n  }\n\n  /**\n   * Get the basename (including extname) (example: `'index.min.js'`).\n   *\n   * @returns {string | undefined}\n   *   Basename.\n   */\n  get basename() {\n    return typeof this.path === 'string'\n      ? minpath.basename(this.path)\n      : undefined\n  }\n\n  /**\n   * Set basename (including extname) (`'index.min.js'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   *\n   * @param {string} basename\n   *   Basename.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set basename(basename) {\n    assertNonEmpty(basename, 'basename')\n    assertPart(basename, 'basename')\n    this.path = minpath.join(this.dirname || '', basename)\n  }\n\n  /**\n   * Get the parent path (example: `'~'`).\n   *\n   * @returns {string | undefined}\n   *   Dirname.\n   */\n  get dirname() {\n    return typeof this.path === 'string'\n      ? minpath.dirname(this.path)\n      : undefined\n  }\n\n  /**\n   * Set the parent path (example: `'~'`).\n   *\n   * Cannot be set if there’s no `path` yet.\n   *\n   * @param {string | undefined} dirname\n   *   Dirname.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set dirname(dirname) {\n    assertPath(this.basename, 'dirname')\n    this.path = minpath.join(dirname || '', this.basename)\n  }\n\n  /**\n   * Get the extname (including dot) (example: `'.js'`).\n   *\n   * @returns {string | undefined}\n   *   Extname.\n   */\n  get extname() {\n    return typeof this.path === 'string'\n      ? minpath.extname(this.path)\n      : undefined\n  }\n\n  /**\n   * Set the extname (including dot) (example: `'.js'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be set if there’s no `path` yet.\n   *\n   * @param {string | undefined} extname\n   *   Extname.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set extname(extname) {\n    assertPart(extname, 'extname')\n    assertPath(this.dirname, 'extname')\n\n    if (extname) {\n      if (extname.codePointAt(0) !== 46 /* `.` */) {\n        throw new Error('`extname` must start with `.`')\n      }\n\n      if (extname.includes('.', 1)) {\n        throw new Error('`extname` cannot contain multiple dots')\n      }\n    }\n\n    this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n  }\n\n  /**\n   * Get the full path (example: `'~/index.min.js'`).\n   *\n   * @returns {string}\n   *   Path.\n   */\n  get path() {\n    return this.history[this.history.length - 1]\n  }\n\n  /**\n   * Set the full path (example: `'~/index.min.js'`).\n   *\n   * Cannot be nullified.\n   * You can set a file URL (a `URL` object with a `file:` protocol) which will\n   * be turned into a path with `url.fileURLToPath`.\n   *\n   * @param {URL | string} path\n   *   Path.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set path(path) {\n    if (isUrl(path)) {\n      path = urlToPath(path)\n    }\n\n    assertNonEmpty(path, 'path')\n\n    if (this.path !== path) {\n      this.history.push(path)\n    }\n  }\n\n  /**\n   * Get the stem (basename w/o extname) (example: `'index.min'`).\n   *\n   * @returns {string | undefined}\n   *   Stem.\n   */\n  get stem() {\n    return typeof this.path === 'string'\n      ? minpath.basename(this.path, this.extname)\n      : undefined\n  }\n\n  /**\n   * Set the stem (basename w/o extname) (example: `'index.min'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   *\n   * @param {string} stem\n   *   Stem.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set stem(stem) {\n    assertNonEmpty(stem, 'stem')\n    assertPart(stem, 'stem')\n    this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n  }\n\n  // Normal prototypal methods.\n  /**\n   * Create a fatal message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `true` (error; file not usable)\n   * and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {never}\n   *   Never.\n   * @throws {VFileMessage}\n   *   Message.\n   */\n  fail(causeOrReason, optionsOrParentOrPlace, origin) {\n    // @ts-expect-error: the overloads are fine.\n    const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n    message.fatal = true\n\n    throw message\n  }\n\n  /**\n   * Create an info message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `undefined` (info; change\n   * likely not needed) and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  info(causeOrReason, optionsOrParentOrPlace, origin) {\n    // @ts-expect-error: the overloads are fine.\n    const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n    message.fatal = undefined\n\n    return message\n  }\n\n  /**\n   * Create a message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `false` (warning; change may be\n   * needed) and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  message(causeOrReason, optionsOrParentOrPlace, origin) {\n    const message = new VFileMessage(\n      // @ts-expect-error: the overloads are fine.\n      causeOrReason,\n      optionsOrParentOrPlace,\n      origin\n    )\n\n    if (this.path) {\n      message.name = this.path + ':' + message.name\n      message.file = this.path\n    }\n\n    message.fatal = false\n\n    this.messages.push(message)\n\n    return message\n  }\n\n  /**\n   * Serialize the file.\n   *\n   * > **Note**: which encodings are supported depends on the engine.\n   * > For info on Node.js, see:\n   * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n   *\n   * @param {string | null | undefined} [encoding='utf8']\n   *   Character encoding to understand `value` as when it’s a `Uint8Array`\n   *   (default: `'utf-8'`).\n   * @returns {string}\n   *   Serialized file.\n   */\n  toString(encoding) {\n    if (this.value === undefined) {\n      return ''\n    }\n\n    if (typeof this.value === 'string') {\n      return this.value\n    }\n\n    const decoder = new TextDecoder(encoding || undefined)\n    return decoder.decode(this.value)\n  }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n *   File path part.\n * @param {string} name\n *   Part name.\n * @returns {undefined}\n *   Nothing.\n */\nfunction assertPart(part, name) {\n  if (part && part.includes(minpath.sep)) {\n    throw new Error(\n      '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n    )\n  }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n *   Thing.\n * @param {string} name\n *   Part name.\n * @returns {asserts part is string}\n *   Nothing.\n */\nfunction assertNonEmpty(part, name) {\n  if (!part) {\n    throw new Error('`' + name + '` cannot be empty')\n  }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n *   Path.\n * @param {string} name\n *   Dependency name.\n * @returns {asserts path is string}\n *   Nothing.\n */\nfunction assertPath(path, name) {\n  if (!path) {\n    throw new Error('Setting `' + name + '` requires `path` to be set too')\n  }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n *   thing.\n * @returns {value is Uint8Array}\n *   Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'byteLength' in value &&\n      'byteOffset' in value\n  )\n}\n","export const CallableInstance =\n  /**\n   * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n   */\n  (\n    /** @type {unknown} */\n    (\n      /**\n       * @this {Function}\n       * @param {string | symbol} property\n       * @returns {(...parameters: Array<unknown>) => unknown}\n       */\n      function (property) {\n        const self = this\n        const constr = self.constructor\n        const proto = /** @type {Record<string | symbol, Function>} */ (\n          // Prototypes do exist.\n          // type-coverage:ignore-next-line\n          constr.prototype\n        )\n        const value = proto[property]\n        /** @type {(...parameters: Array<unknown>) => unknown} */\n        const apply = function () {\n          return value.apply(apply, arguments)\n        }\n\n        Object.setPrototypeOf(apply, proto)\n\n        // Not needed for us in `unified`: we only call this on the `copy`\n        // function,\n        // and we don't need to add its fields (`length`, `name`)\n        // over.\n        // See also: GH-246.\n        // const names = Object.getOwnPropertyNames(value)\n        //\n        // for (const p of names) {\n        //   const descriptor = Object.getOwnPropertyDescriptor(value, p)\n        //   if (descriptor) Object.defineProperty(apply, p, descriptor)\n        // }\n\n        return apply\n      }\n    )\n  )\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n *   Whether to use `alt` for `image`s (default: `true`).\n * @property {boolean | null | undefined} [includeHtml=true]\n *   Whether to use `value` of HTML (default: `true`).\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} [value]\n *   Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Serialized `value`.\n */\nexport function toString(value, options) {\n  const settings = options || emptyOptions\n  const includeImageAlt =\n    typeof settings.includeImageAlt === 'boolean'\n      ? settings.includeImageAlt\n      : true\n  const includeHtml =\n    typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n  return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @param {boolean} includeHtml\n *   Include HTML.\n * @returns {string}\n *   Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n  if (node(value)) {\n    if ('value' in value) {\n      return value.type === 'html' && !includeHtml ? '' : value.value\n    }\n\n    if (includeImageAlt && 'alt' in value && value.alt) {\n      return value.alt\n    }\n\n    if ('children' in value) {\n      return all(value.children, includeImageAlt, includeHtml)\n    }\n  }\n\n  if (Array.isArray(value)) {\n    return all(value, includeImageAlt, includeHtml)\n  }\n\n  return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array<unknown>} values\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @param {boolean} includeHtml\n *   Include HTML.\n * @returns {string}\n *   Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n  /** @type {Array<string>} */\n  const result = []\n  let index = -1\n\n  while (++index < values.length) {\n    result[index] = one(values[index], includeImageAlt, includeHtml)\n  }\n\n  return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n *   Thing.\n * @returns {value is Nodes}\n *   Whether `value` is a node.\n */\nfunction node(value) {\n  return Boolean(value && typeof value === 'object')\n}\n","/**\n * Map of named character references.\n *\n * @type {Record<string, string>}\n */\nexport const characterEntities = {\n  AElig: 'Æ',\n  AMP: '&',\n  Aacute: 'Á',\n  Abreve: 'Ă',\n  Acirc: 'Â',\n  Acy: 'А',\n  Afr: '𝔄',\n  Agrave: 'À',\n  Alpha: 'Α',\n  Amacr: 'Ā',\n  And: '⩓',\n  Aogon: 'Ą',\n  Aopf: '𝔸',\n  ApplyFunction: '⁡',\n  Aring: 'Å',\n  Ascr: '𝒜',\n  Assign: '≔',\n  Atilde: 'Ã',\n  Auml: 'Ä',\n  Backslash: '∖',\n  Barv: '⫧',\n  Barwed: '⌆',\n  Bcy: 'Б',\n  Because: '∵',\n  Bernoullis: 'ℬ',\n  Beta: 'Β',\n  Bfr: '𝔅',\n  Bopf: '𝔹',\n  Breve: '˘',\n  Bscr: 'ℬ',\n  Bumpeq: '≎',\n  CHcy: 'Ч',\n  COPY: '©',\n  Cacute: 'Ć',\n  Cap: '⋒',\n  CapitalDifferentialD: 'ⅅ',\n  Cayleys: 'ℭ',\n  Ccaron: 'Č',\n  Ccedil: 'Ç',\n  Ccirc: 'Ĉ',\n  Cconint: '∰',\n  Cdot: 'Ċ',\n  Cedilla: '¸',\n  CenterDot: '·',\n  Cfr: 'ℭ',\n  Chi: 'Χ',\n  CircleDot: '⊙',\n  CircleMinus: '⊖',\n  CirclePlus: '⊕',\n  CircleTimes: '⊗',\n  ClockwiseContourIntegral: '∲',\n  CloseCurlyDoubleQuote: '”',\n  CloseCurlyQuote: '’',\n  Colon: '∷',\n  Colone: '⩴',\n  Congruent: '≡',\n  Conint: '∯',\n  ContourIntegral: '∮',\n  Copf: 'ℂ',\n  Coproduct: '∐',\n  CounterClockwiseContourIntegral: '∳',\n  Cross: '⨯',\n  Cscr: '𝒞',\n  Cup: '⋓',\n  CupCap: '≍',\n  DD: 'ⅅ',\n  DDotrahd: '⤑',\n  DJcy: 'Ђ',\n  DScy: 'Ѕ',\n  DZcy: 'Џ',\n  Dagger: '‡',\n  Darr: '↡',\n  Dashv: '⫤',\n  Dcaron: 'Ď',\n  Dcy: 'Д',\n  Del: '∇',\n  Delta: 'Δ',\n  Dfr: '𝔇',\n  DiacriticalAcute: '´',\n  DiacriticalDot: '˙',\n  DiacriticalDoubleAcute: '˝',\n  DiacriticalGrave: '`',\n  DiacriticalTilde: '˜',\n  Diamond: '⋄',\n  DifferentialD: 'ⅆ',\n  Dopf: '𝔻',\n  Dot: '¨',\n  DotDot: '⃜',\n  DotEqual: '≐',\n  DoubleContourIntegral: '∯',\n  DoubleDot: '¨',\n  DoubleDownArrow: '⇓',\n  DoubleLeftArrow: '⇐',\n  DoubleLeftRightArrow: '⇔',\n  DoubleLeftTee: '⫤',\n  DoubleLongLeftArrow: '⟸',\n  DoubleLongLeftRightArrow: '⟺',\n  DoubleLongRightArrow: '⟹',\n  DoubleRightArrow: '⇒',\n  DoubleRightTee: '⊨',\n  DoubleUpArrow: '⇑',\n  DoubleUpDownArrow: '⇕',\n  DoubleVerticalBar: '∥',\n  DownArrow: '↓',\n  DownArrowBar: '⤓',\n  DownArrowUpArrow: '⇵',\n  DownBreve: '̑',\n  DownLeftRightVector: '⥐',\n  DownLeftTeeVector: '⥞',\n  DownLeftVector: '↽',\n  DownLeftVectorBar: '⥖',\n  DownRightTeeVector: '⥟',\n  DownRightVector: '⇁',\n  DownRightVectorBar: '⥗',\n  DownTee: '⊤',\n  DownTeeArrow: '↧',\n  Downarrow: '⇓',\n  Dscr: '𝒟',\n  Dstrok: 'Đ',\n  ENG: 'Ŋ',\n  ETH: 'Ð',\n  Eacute: 'É',\n  Ecaron: 'Ě',\n  Ecirc: 'Ê',\n  Ecy: 'Э',\n  Edot: 'Ė',\n  Efr: '𝔈',\n  Egrave: 'È',\n  Element: '∈',\n  Emacr: 'Ē',\n  EmptySmallSquare: '◻',\n  EmptyVerySmallSquare: '▫',\n  Eogon: 'Ę',\n  Eopf: '𝔼',\n  Epsilon: 'Ε',\n  Equal: '⩵',\n  EqualTilde: '≂',\n  Equilibrium: '⇌',\n  Escr: 'ℰ',\n  Esim: '⩳',\n  Eta: 'Η',\n  Euml: 'Ë',\n  Exists: '∃',\n  ExponentialE: 'ⅇ',\n  Fcy: 'Ф',\n  Ffr: '𝔉',\n  FilledSmallSquare: '◼',\n  FilledVerySmallSquare: '▪',\n  Fopf: '𝔽',\n  ForAll: '∀',\n  Fouriertrf: 'ℱ',\n  Fscr: 'ℱ',\n  GJcy: 'Ѓ',\n  GT: '>',\n  Gamma: 'Γ',\n  Gammad: 'Ϝ',\n  Gbreve: 'Ğ',\n  Gcedil: 'Ģ',\n  Gcirc: 'Ĝ',\n  Gcy: 'Г',\n  Gdot: 'Ġ',\n  Gfr: '𝔊',\n  Gg: '⋙',\n  Gopf: '𝔾',\n  GreaterEqual: '≥',\n  GreaterEqualLess: '⋛',\n  GreaterFullEqual: '≧',\n  GreaterGreater: '⪢',\n  GreaterLess: '≷',\n  GreaterSlantEqual: '⩾',\n  GreaterTilde: '≳',\n  Gscr: '𝒢',\n  Gt: '≫',\n  HARDcy: 'Ъ',\n  Hacek: 'ˇ',\n  Hat: '^',\n  Hcirc: 'Ĥ',\n  Hfr: 'ℌ',\n  HilbertSpace: 'ℋ',\n  Hopf: 'ℍ',\n  HorizontalLine: '─',\n  Hscr: 'ℋ',\n  Hstrok: 'Ħ',\n  HumpDownHump: '≎',\n  HumpEqual: '≏',\n  IEcy: 'Е',\n  IJlig: 'Ĳ',\n  IOcy: 'Ё',\n  Iacute: 'Í',\n  Icirc: 'Î',\n  Icy: 'И',\n  Idot: 'İ',\n  Ifr: 'ℑ',\n  Igrave: 'Ì',\n  Im: 'ℑ',\n  Imacr: 'Ī',\n  ImaginaryI: 'ⅈ',\n  Implies: '⇒',\n  Int: '∬',\n  Integral: '∫',\n  Intersection: '⋂',\n  InvisibleComma: '⁣',\n  InvisibleTimes: '⁢',\n  Iogon: 'Į',\n  Iopf: '𝕀',\n  Iota: 'Ι',\n  Iscr: 'ℐ',\n  Itilde: 'Ĩ',\n  Iukcy: 'І',\n  Iuml: 'Ï',\n  Jcirc: 'Ĵ',\n  Jcy: 'Й',\n  Jfr: '𝔍',\n  Jopf: '𝕁',\n  Jscr: '𝒥',\n  Jsercy: 'Ј',\n  Jukcy: 'Є',\n  KHcy: 'Х',\n  KJcy: 'Ќ',\n  Kappa: 'Κ',\n  Kcedil: 'Ķ',\n  Kcy: 'К',\n  Kfr: '𝔎',\n  Kopf: '𝕂',\n  Kscr: '𝒦',\n  LJcy: 'Љ',\n  LT: '<',\n  Lacute: 'Ĺ',\n  Lambda: 'Λ',\n  Lang: '⟪',\n  Laplacetrf: 'ℒ',\n  Larr: '↞',\n  Lcaron: 'Ľ',\n  Lcedil: 'Ļ',\n  Lcy: 'Л',\n  LeftAngleBracket: '⟨',\n  LeftArrow: '←',\n  LeftArrowBar: '⇤',\n  LeftArrowRightArrow: '⇆',\n  LeftCeiling: '⌈',\n  LeftDoubleBracket: '⟦',\n  LeftDownTeeVector: '⥡',\n  LeftDownVector: '⇃',\n  LeftDownVectorBar: '⥙',\n  LeftFloor: '⌊',\n  LeftRightArrow: '↔',\n  LeftRightVector: '⥎',\n  LeftTee: '⊣',\n  LeftTeeArrow: '↤',\n  LeftTeeVector: '⥚',\n  LeftTriangle: '⊲',\n  LeftTriangleBar: '⧏',\n  LeftTriangleEqual: '⊴',\n  LeftUpDownVector: '⥑',\n  LeftUpTeeVector: '⥠',\n  LeftUpVector: '↿',\n  LeftUpVectorBar: '⥘',\n  LeftVector: '↼',\n  LeftVectorBar: '⥒',\n  Leftarrow: '⇐',\n  Leftrightarrow: '⇔',\n  LessEqualGreater: '⋚',\n  LessFullEqual: '≦',\n  LessGreater: '≶',\n  LessLess: '⪡',\n  LessSlantEqual: '⩽',\n  LessTilde: '≲',\n  Lfr: '𝔏',\n  Ll: '⋘',\n  Lleftarrow: '⇚',\n  Lmidot: 'Ŀ',\n  LongLeftArrow: '⟵',\n  LongLeftRightArrow: '⟷',\n  LongRightArrow: '⟶',\n  Longleftarrow: '⟸',\n  Longleftrightarrow: '⟺',\n  Longrightarrow: '⟹',\n  Lopf: '𝕃',\n  LowerLeftArrow: '↙',\n  LowerRightArrow: '↘',\n  Lscr: 'ℒ',\n  Lsh: '↰',\n  Lstrok: 'Ł',\n  Lt: '≪',\n  Map: '⤅',\n  Mcy: 'М',\n  MediumSpace: ' ',\n  Mellintrf: 'ℳ',\n  Mfr: '𝔐',\n  MinusPlus: '∓',\n  Mopf: '𝕄',\n  Mscr: 'ℳ',\n  Mu: 'Μ',\n  NJcy: 'Њ',\n  Nacute: 'Ń',\n  Ncaron: 'Ň',\n  Ncedil: 'Ņ',\n  Ncy: 'Н',\n  NegativeMediumSpace: '​',\n  NegativeThickSpace: '​',\n  NegativeThinSpace: '​',\n  NegativeVeryThinSpace: '​',\n  NestedGreaterGreater: '≫',\n  NestedLessLess: '≪',\n  NewLine: '\\n',\n  Nfr: '𝔑',\n  NoBreak: '⁠',\n  NonBreakingSpace: ' ',\n  Nopf: 'ℕ',\n  Not: '⫬',\n  NotCongruent: '≢',\n  NotCupCap: '≭',\n  NotDoubleVerticalBar: '∦',\n  NotElement: '∉',\n  NotEqual: '≠',\n  NotEqualTilde: '≂̸',\n  NotExists: '∄',\n  NotGreater: '≯',\n  NotGreaterEqual: '≱',\n  NotGreaterFullEqual: '≧̸',\n  NotGreaterGreater: '≫̸',\n  NotGreaterLess: '≹',\n  NotGreaterSlantEqual: '⩾̸',\n  NotGreaterTilde: '≵',\n  NotHumpDownHump: '≎̸',\n  NotHumpEqual: '≏̸',\n  NotLeftTriangle: '⋪',\n  NotLeftTriangleBar: '⧏̸',\n  NotLeftTriangleEqual: '⋬',\n  NotLess: '≮',\n  NotLessEqual: '≰',\n  NotLessGreater: '≸',\n  NotLessLess: '≪̸',\n  NotLessSlantEqual: '⩽̸',\n  NotLessTilde: '≴',\n  NotNestedGreaterGreater: '⪢̸',\n  NotNestedLessLess: '⪡̸',\n  NotPrecedes: '⊀',\n  NotPrecedesEqual: '⪯̸',\n  NotPrecedesSlantEqual: '⋠',\n  NotReverseElement: '∌',\n  NotRightTriangle: '⋫',\n  NotRightTriangleBar: '⧐̸',\n  NotRightTriangleEqual: '⋭',\n  NotSquareSubset: '⊏̸',\n  NotSquareSubsetEqual: '⋢',\n  NotSquareSuperset: '⊐̸',\n  NotSquareSupersetEqual: '⋣',\n  NotSubset: '⊂⃒',\n  NotSubsetEqual: '⊈',\n  NotSucceeds: '⊁',\n  NotSucceedsEqual: '⪰̸',\n  NotSucceedsSlantEqual: '⋡',\n  NotSucceedsTilde: '≿̸',\n  NotSuperset: '⊃⃒',\n  NotSupersetEqual: '⊉',\n  NotTilde: '≁',\n  NotTildeEqual: '≄',\n  NotTildeFullEqual: '≇',\n  NotTildeTilde: '≉',\n  NotVerticalBar: '∤',\n  Nscr: '𝒩',\n  Ntilde: 'Ñ',\n  Nu: 'Ν',\n  OElig: 'Œ',\n  Oacute: 'Ó',\n  Ocirc: 'Ô',\n  Ocy: 'О',\n  Odblac: 'Ő',\n  Ofr: '𝔒',\n  Ograve: 'Ò',\n  Omacr: 'Ō',\n  Omega: 'Ω',\n  Omicron: 'Ο',\n  Oopf: '𝕆',\n  OpenCurlyDoubleQuote: '“',\n  OpenCurlyQuote: '‘',\n  Or: '⩔',\n  Oscr: '𝒪',\n  Oslash: 'Ø',\n  Otilde: 'Õ',\n  Otimes: '⨷',\n  Ouml: 'Ö',\n  OverBar: '‾',\n  OverBrace: '⏞',\n  OverBracket: '⎴',\n  OverParenthesis: '⏜',\n  PartialD: '∂',\n  Pcy: 'П',\n  Pfr: '𝔓',\n  Phi: 'Φ',\n  Pi: 'Π',\n  PlusMinus: '±',\n  Poincareplane: 'ℌ',\n  Popf: 'ℙ',\n  Pr: '⪻',\n  Precedes: '≺',\n  PrecedesEqual: '⪯',\n  PrecedesSlantEqual: '≼',\n  PrecedesTilde: '≾',\n  Prime: '″',\n  Product: '∏',\n  Proportion: '∷',\n  Proportional: '∝',\n  Pscr: '𝒫',\n  Psi: 'Ψ',\n  QUOT: '\"',\n  Qfr: '𝔔',\n  Qopf: 'ℚ',\n  Qscr: '𝒬',\n  RBarr: '⤐',\n  REG: '®',\n  Racute: 'Ŕ',\n  Rang: '⟫',\n  Rarr: '↠',\n  Rarrtl: '⤖',\n  Rcaron: 'Ř',\n  Rcedil: 'Ŗ',\n  Rcy: 'Р',\n  Re: 'ℜ',\n  ReverseElement: '∋',\n  ReverseEquilibrium: '⇋',\n  ReverseUpEquilibrium: '⥯',\n  Rfr: 'ℜ',\n  Rho: 'Ρ',\n  RightAngleBracket: '⟩',\n  RightArrow: '→',\n  RightArrowBar: '⇥',\n  RightArrowLeftArrow: '⇄',\n  RightCeiling: '⌉',\n  RightDoubleBracket: '⟧',\n  RightDownTeeVector: '⥝',\n  RightDownVector: '⇂',\n  RightDownVectorBar: '⥕',\n  RightFloor: '⌋',\n  RightTee: '⊢',\n  RightTeeArrow: '↦',\n  RightTeeVector: '⥛',\n  RightTriangle: '⊳',\n  RightTriangleBar: '⧐',\n  RightTriangleEqual: '⊵',\n  RightUpDownVector: '⥏',\n  RightUpTeeVector: '⥜',\n  RightUpVector: '↾',\n  RightUpVectorBar: '⥔',\n  RightVector: '⇀',\n  RightVectorBar: '⥓',\n  Rightarrow: '⇒',\n  Ropf: 'ℝ',\n  RoundImplies: '⥰',\n  Rrightarrow: '⇛',\n  Rscr: 'ℛ',\n  Rsh: '↱',\n  RuleDelayed: '⧴',\n  SHCHcy: 'Щ',\n  SHcy: 'Ш',\n  SOFTcy: 'Ь',\n  Sacute: 'Ś',\n  Sc: '⪼',\n  Scaron: 'Š',\n  Scedil: 'Ş',\n  Scirc: 'Ŝ',\n  Scy: 'С',\n  Sfr: '𝔖',\n  ShortDownArrow: '↓',\n  ShortLeftArrow: '←',\n  ShortRightArrow: '→',\n  ShortUpArrow: '↑',\n  Sigma: 'Σ',\n  SmallCircle: '∘',\n  Sopf: '𝕊',\n  Sqrt: '√',\n  Square: '□',\n  SquareIntersection: '⊓',\n  SquareSubset: '⊏',\n  SquareSubsetEqual: '⊑',\n  SquareSuperset: '⊐',\n  SquareSupersetEqual: '⊒',\n  SquareUnion: '⊔',\n  Sscr: '𝒮',\n  Star: '⋆',\n  Sub: '⋐',\n  Subset: '⋐',\n  SubsetEqual: '⊆',\n  Succeeds: '≻',\n  SucceedsEqual: '⪰',\n  SucceedsSlantEqual: '≽',\n  SucceedsTilde: '≿',\n  SuchThat: '∋',\n  Sum: '∑',\n  Sup: '⋑',\n  Superset: '⊃',\n  SupersetEqual: '⊇',\n  Supset: '⋑',\n  THORN: 'Þ',\n  TRADE: '™',\n  TSHcy: 'Ћ',\n  TScy: 'Ц',\n  Tab: '\\t',\n  Tau: 'Τ',\n  Tcaron: 'Ť',\n  Tcedil: 'Ţ',\n  Tcy: 'Т',\n  Tfr: '𝔗',\n  Therefore: '∴',\n  Theta: 'Θ',\n  ThickSpace: '  ',\n  ThinSpace: ' ',\n  Tilde: '∼',\n  TildeEqual: '≃',\n  TildeFullEqual: '≅',\n  TildeTilde: '≈',\n  Topf: '𝕋',\n  TripleDot: '⃛',\n  Tscr: '𝒯',\n  Tstrok: 'Ŧ',\n  Uacute: 'Ú',\n  Uarr: '↟',\n  Uarrocir: '⥉',\n  Ubrcy: 'Ў',\n  Ubreve: 'Ŭ',\n  Ucirc: 'Û',\n  Ucy: 'У',\n  Udblac: 'Ű',\n  Ufr: '𝔘',\n  Ugrave: 'Ù',\n  Umacr: 'Ū',\n  UnderBar: '_',\n  UnderBrace: '⏟',\n  UnderBracket: '⎵',\n  UnderParenthesis: '⏝',\n  Union: '⋃',\n  UnionPlus: '⊎',\n  Uogon: 'Ų',\n  Uopf: '𝕌',\n  UpArrow: '↑',\n  UpArrowBar: '⤒',\n  UpArrowDownArrow: '⇅',\n  UpDownArrow: '↕',\n  UpEquilibrium: '⥮',\n  UpTee: '⊥',\n  UpTeeArrow: '↥',\n  Uparrow: '⇑',\n  Updownarrow: '⇕',\n  UpperLeftArrow: '↖',\n  UpperRightArrow: '↗',\n  Upsi: 'ϒ',\n  Upsilon: 'Υ',\n  Uring: 'Ů',\n  Uscr: '𝒰',\n  Utilde: 'Ũ',\n  Uuml: 'Ü',\n  VDash: '⊫',\n  Vbar: '⫫',\n  Vcy: 'В',\n  Vdash: '⊩',\n  Vdashl: '⫦',\n  Vee: '⋁',\n  Verbar: '‖',\n  Vert: '‖',\n  VerticalBar: '∣',\n  VerticalLine: '|',\n  VerticalSeparator: '❘',\n  VerticalTilde: '≀',\n  VeryThinSpace: ' ',\n  Vfr: '𝔙',\n  Vopf: '𝕍',\n  Vscr: '𝒱',\n  Vvdash: '⊪',\n  Wcirc: 'Ŵ',\n  Wedge: '⋀',\n  Wfr: '𝔚',\n  Wopf: '𝕎',\n  Wscr: '𝒲',\n  Xfr: '𝔛',\n  Xi: 'Ξ',\n  Xopf: '𝕏',\n  Xscr: '𝒳',\n  YAcy: 'Я',\n  YIcy: 'Ї',\n  YUcy: 'Ю',\n  Yacute: 'Ý',\n  Ycirc: 'Ŷ',\n  Ycy: 'Ы',\n  Yfr: '𝔜',\n  Yopf: '𝕐',\n  Yscr: '𝒴',\n  Yuml: 'Ÿ',\n  ZHcy: 'Ж',\n  Zacute: 'Ź',\n  Zcaron: 'Ž',\n  Zcy: 'З',\n  Zdot: 'Ż',\n  ZeroWidthSpace: '​',\n  Zeta: 'Ζ',\n  Zfr: 'ℨ',\n  Zopf: 'ℤ',\n  Zscr: '𝒵',\n  aacute: 'á',\n  abreve: 'ă',\n  ac: '∾',\n  acE: '∾̳',\n  acd: '∿',\n  acirc: 'â',\n  acute: '´',\n  acy: 'а',\n  aelig: 'æ',\n  af: '⁡',\n  afr: '𝔞',\n  agrave: 'à',\n  alefsym: 'ℵ',\n  aleph: 'ℵ',\n  alpha: 'α',\n  amacr: 'ā',\n  amalg: '⨿',\n  amp: '&',\n  and: '∧',\n  andand: '⩕',\n  andd: '⩜',\n  andslope: '⩘',\n  andv: '⩚',\n  ang: '∠',\n  ange: '⦤',\n  angle: '∠',\n  angmsd: '∡',\n  angmsdaa: '⦨',\n  angmsdab: '⦩',\n  angmsdac: '⦪',\n  angmsdad: '⦫',\n  angmsdae: '⦬',\n  angmsdaf: '⦭',\n  angmsdag: '⦮',\n  angmsdah: '⦯',\n  angrt: '∟',\n  angrtvb: '⊾',\n  angrtvbd: '⦝',\n  angsph: '∢',\n  angst: 'Å',\n  angzarr: '⍼',\n  aogon: 'ą',\n  aopf: '𝕒',\n  ap: '≈',\n  apE: '⩰',\n  apacir: '⩯',\n  ape: '≊',\n  apid: '≋',\n  apos: \"'\",\n  approx: '≈',\n  approxeq: '≊',\n  aring: 'å',\n  ascr: '𝒶',\n  ast: '*',\n  asymp: '≈',\n  asympeq: '≍',\n  atilde: 'ã',\n  auml: 'ä',\n  awconint: '∳',\n  awint: '⨑',\n  bNot: '⫭',\n  backcong: '≌',\n  backepsilon: '϶',\n  backprime: '‵',\n  backsim: '∽',\n  backsimeq: '⋍',\n  barvee: '⊽',\n  barwed: '⌅',\n  barwedge: '⌅',\n  bbrk: '⎵',\n  bbrktbrk: '⎶',\n  bcong: '≌',\n  bcy: 'б',\n  bdquo: '„',\n  becaus: '∵',\n  because: '∵',\n  bemptyv: '⦰',\n  bepsi: '϶',\n  bernou: 'ℬ',\n  beta: 'β',\n  beth: 'ℶ',\n  between: '≬',\n  bfr: '𝔟',\n  bigcap: '⋂',\n  bigcirc: '◯',\n  bigcup: '⋃',\n  bigodot: '⨀',\n  bigoplus: '⨁',\n  bigotimes: '⨂',\n  bigsqcup: '⨆',\n  bigstar: '★',\n  bigtriangledown: '▽',\n  bigtriangleup: '△',\n  biguplus: '⨄',\n  bigvee: '⋁',\n  bigwedge: '⋀',\n  bkarow: '⤍',\n  blacklozenge: '⧫',\n  blacksquare: '▪',\n  blacktriangle: '▴',\n  blacktriangledown: '▾',\n  blacktriangleleft: '◂',\n  blacktriangleright: '▸',\n  blank: '␣',\n  blk12: '▒',\n  blk14: '░',\n  blk34: '▓',\n  block: '█',\n  bne: '=⃥',\n  bnequiv: '≡⃥',\n  bnot: '⌐',\n  bopf: '𝕓',\n  bot: '⊥',\n  bottom: '⊥',\n  bowtie: '⋈',\n  boxDL: '╗',\n  boxDR: '╔',\n  boxDl: '╖',\n  boxDr: '╓',\n  boxH: '═',\n  boxHD: '╦',\n  boxHU: '╩',\n  boxHd: '╤',\n  boxHu: '╧',\n  boxUL: '╝',\n  boxUR: '╚',\n  boxUl: '╜',\n  boxUr: '╙',\n  boxV: '║',\n  boxVH: '╬',\n  boxVL: '╣',\n  boxVR: '╠',\n  boxVh: '╫',\n  boxVl: '╢',\n  boxVr: '╟',\n  boxbox: '⧉',\n  boxdL: '╕',\n  boxdR: '╒',\n  boxdl: '┐',\n  boxdr: '┌',\n  boxh: '─',\n  boxhD: '╥',\n  boxhU: '╨',\n  boxhd: '┬',\n  boxhu: '┴',\n  boxminus: '⊟',\n  boxplus: '⊞',\n  boxtimes: '⊠',\n  boxuL: '╛',\n  boxuR: '╘',\n  boxul: '┘',\n  boxur: '└',\n  boxv: '│',\n  boxvH: '╪',\n  boxvL: '╡',\n  boxvR: '╞',\n  boxvh: '┼',\n  boxvl: '┤',\n  boxvr: '├',\n  bprime: '‵',\n  breve: '˘',\n  brvbar: '¦',\n  bscr: '𝒷',\n  bsemi: '⁏',\n  bsim: '∽',\n  bsime: '⋍',\n  bsol: '\\\\',\n  bsolb: '⧅',\n  bsolhsub: '⟈',\n  bull: '•',\n  bullet: '•',\n  bump: '≎',\n  bumpE: '⪮',\n  bumpe: '≏',\n  bumpeq: '≏',\n  cacute: 'ć',\n  cap: '∩',\n  capand: '⩄',\n  capbrcup: '⩉',\n  capcap: '⩋',\n  capcup: '⩇',\n  capdot: '⩀',\n  caps: '∩︀',\n  caret: '⁁',\n  caron: 'ˇ',\n  ccaps: '⩍',\n  ccaron: 'č',\n  ccedil: 'ç',\n  ccirc: 'ĉ',\n  ccups: '⩌',\n  ccupssm: '⩐',\n  cdot: 'ċ',\n  cedil: '¸',\n  cemptyv: '⦲',\n  cent: '¢',\n  centerdot: '·',\n  cfr: '𝔠',\n  chcy: 'ч',\n  check: '✓',\n  checkmark: '✓',\n  chi: 'χ',\n  cir: '○',\n  cirE: '⧃',\n  circ: 'ˆ',\n  circeq: '≗',\n  circlearrowleft: '↺',\n  circlearrowright: '↻',\n  circledR: '®',\n  circledS: 'Ⓢ',\n  circledast: '⊛',\n  circledcirc: '⊚',\n  circleddash: '⊝',\n  cire: '≗',\n  cirfnint: '⨐',\n  cirmid: '⫯',\n  cirscir: '⧂',\n  clubs: '♣',\n  clubsuit: '♣',\n  colon: ':',\n  colone: '≔',\n  coloneq: '≔',\n  comma: ',',\n  commat: '@',\n  comp: '∁',\n  compfn: '∘',\n  complement: '∁',\n  complexes: 'ℂ',\n  cong: '≅',\n  congdot: '⩭',\n  conint: '∮',\n  copf: '𝕔',\n  coprod: '∐',\n  copy: '©',\n  copysr: '℗',\n  crarr: '↵',\n  cross: '✗',\n  cscr: '𝒸',\n  csub: '⫏',\n  csube: '⫑',\n  csup: '⫐',\n  csupe: '⫒',\n  ctdot: '⋯',\n  cudarrl: '⤸',\n  cudarrr: '⤵',\n  cuepr: '⋞',\n  cuesc: '⋟',\n  cularr: '↶',\n  cularrp: '⤽',\n  cup: '∪',\n  cupbrcap: '⩈',\n  cupcap: '⩆',\n  cupcup: '⩊',\n  cupdot: '⊍',\n  cupor: '⩅',\n  cups: '∪︀',\n  curarr: '↷',\n  curarrm: '⤼',\n  curlyeqprec: '⋞',\n  curlyeqsucc: '⋟',\n  curlyvee: '⋎',\n  curlywedge: '⋏',\n  curren: '¤',\n  curvearrowleft: '↶',\n  curvearrowright: '↷',\n  cuvee: '⋎',\n  cuwed: '⋏',\n  cwconint: '∲',\n  cwint: '∱',\n  cylcty: '⌭',\n  dArr: '⇓',\n  dHar: '⥥',\n  dagger: '†',\n  daleth: 'ℸ',\n  darr: '↓',\n  dash: '‐',\n  dashv: '⊣',\n  dbkarow: '⤏',\n  dblac: '˝',\n  dcaron: 'ď',\n  dcy: 'д',\n  dd: 'ⅆ',\n  ddagger: '‡',\n  ddarr: '⇊',\n  ddotseq: '⩷',\n  deg: '°',\n  delta: 'δ',\n  demptyv: '⦱',\n  dfisht: '⥿',\n  dfr: '𝔡',\n  dharl: '⇃',\n  dharr: '⇂',\n  diam: '⋄',\n  diamond: '⋄',\n  diamondsuit: '♦',\n  diams: '♦',\n  die: '¨',\n  digamma: 'ϝ',\n  disin: '⋲',\n  div: '÷',\n  divide: '÷',\n  divideontimes: '⋇',\n  divonx: '⋇',\n  djcy: 'ђ',\n  dlcorn: '⌞',\n  dlcrop: '⌍',\n  dollar: '$',\n  dopf: '𝕕',\n  dot: '˙',\n  doteq: '≐',\n  doteqdot: '≑',\n  dotminus: '∸',\n  dotplus: '∔',\n  dotsquare: '⊡',\n  doublebarwedge: '⌆',\n  downarrow: '↓',\n  downdownarrows: '⇊',\n  downharpoonleft: '⇃',\n  downharpoonright: '⇂',\n  drbkarow: '⤐',\n  drcorn: '⌟',\n  drcrop: '⌌',\n  dscr: '𝒹',\n  dscy: 'ѕ',\n  dsol: '⧶',\n  dstrok: 'đ',\n  dtdot: '⋱',\n  dtri: '▿',\n  dtrif: '▾',\n  duarr: '⇵',\n  duhar: '⥯',\n  dwangle: '⦦',\n  dzcy: 'џ',\n  dzigrarr: '⟿',\n  eDDot: '⩷',\n  eDot: '≑',\n  eacute: 'é',\n  easter: '⩮',\n  ecaron: 'ě',\n  ecir: '≖',\n  ecirc: 'ê',\n  ecolon: '≕',\n  ecy: 'э',\n  edot: 'ė',\n  ee: 'ⅇ',\n  efDot: '≒',\n  efr: '𝔢',\n  eg: '⪚',\n  egrave: 'è',\n  egs: '⪖',\n  egsdot: '⪘',\n  el: '⪙',\n  elinters: '⏧',\n  ell: 'ℓ',\n  els: '⪕',\n  elsdot: '⪗',\n  emacr: 'ē',\n  empty: '∅',\n  emptyset: '∅',\n  emptyv: '∅',\n  emsp13: ' ',\n  emsp14: ' ',\n  emsp: ' ',\n  eng: 'ŋ',\n  ensp: ' ',\n  eogon: 'ę',\n  eopf: '𝕖',\n  epar: '⋕',\n  eparsl: '⧣',\n  eplus: '⩱',\n  epsi: 'ε',\n  epsilon: 'ε',\n  epsiv: 'ϵ',\n  eqcirc: '≖',\n  eqcolon: '≕',\n  eqsim: '≂',\n  eqslantgtr: '⪖',\n  eqslantless: '⪕',\n  equals: '=',\n  equest: '≟',\n  equiv: '≡',\n  equivDD: '⩸',\n  eqvparsl: '⧥',\n  erDot: '≓',\n  erarr: '⥱',\n  escr: 'ℯ',\n  esdot: '≐',\n  esim: '≂',\n  eta: 'η',\n  eth: 'ð',\n  euml: 'ë',\n  euro: '€',\n  excl: '!',\n  exist: '∃',\n  expectation: 'ℰ',\n  exponentiale: 'ⅇ',\n  fallingdotseq: '≒',\n  fcy: 'ф',\n  female: '♀',\n  ffilig: 'ﬃ',\n  fflig: 'ﬀ',\n  ffllig: 'ﬄ',\n  ffr: '𝔣',\n  filig: 'ﬁ',\n  fjlig: 'fj',\n  flat: '♭',\n  fllig: 'ﬂ',\n  fltns: '▱',\n  fnof: 'ƒ',\n  fopf: '𝕗',\n  forall: '∀',\n  fork: '⋔',\n  forkv: '⫙',\n  fpartint: '⨍',\n  frac12: '½',\n  frac13: '⅓',\n  frac14: '¼',\n  frac15: '⅕',\n  frac16: '⅙',\n  frac18: '⅛',\n  frac23: '⅔',\n  frac25: '⅖',\n  frac34: '¾',\n  frac35: '⅗',\n  frac38: '⅜',\n  frac45: '⅘',\n  frac56: '⅚',\n  frac58: '⅝',\n  frac78: '⅞',\n  frasl: '⁄',\n  frown: '⌢',\n  fscr: '𝒻',\n  gE: '≧',\n  gEl: '⪌',\n  gacute: 'ǵ',\n  gamma: 'γ',\n  gammad: 'ϝ',\n  gap: '⪆',\n  gbreve: 'ğ',\n  gcirc: 'ĝ',\n  gcy: 'г',\n  gdot: 'ġ',\n  ge: '≥',\n  gel: '⋛',\n  geq: '≥',\n  geqq: '≧',\n  geqslant: '⩾',\n  ges: '⩾',\n  gescc: '⪩',\n  gesdot: '⪀',\n  gesdoto: '⪂',\n  gesdotol: '⪄',\n  gesl: '⋛︀',\n  gesles: '⪔',\n  gfr: '𝔤',\n  gg: '≫',\n  ggg: '⋙',\n  gimel: 'ℷ',\n  gjcy: 'ѓ',\n  gl: '≷',\n  glE: '⪒',\n  gla: '⪥',\n  glj: '⪤',\n  gnE: '≩',\n  gnap: '⪊',\n  gnapprox: '⪊',\n  gne: '⪈',\n  gneq: '⪈',\n  gneqq: '≩',\n  gnsim: '⋧',\n  gopf: '𝕘',\n  grave: '`',\n  gscr: 'ℊ',\n  gsim: '≳',\n  gsime: '⪎',\n  gsiml: '⪐',\n  gt: '>',\n  gtcc: '⪧',\n  gtcir: '⩺',\n  gtdot: '⋗',\n  gtlPar: '⦕',\n  gtquest: '⩼',\n  gtrapprox: '⪆',\n  gtrarr: '⥸',\n  gtrdot: '⋗',\n  gtreqless: '⋛',\n  gtreqqless: '⪌',\n  gtrless: '≷',\n  gtrsim: '≳',\n  gvertneqq: '≩︀',\n  gvnE: '≩︀',\n  hArr: '⇔',\n  hairsp: ' ',\n  half: '½',\n  hamilt: 'ℋ',\n  hardcy: 'ъ',\n  harr: '↔',\n  harrcir: '⥈',\n  harrw: '↭',\n  hbar: 'ℏ',\n  hcirc: 'ĥ',\n  hearts: '♥',\n  heartsuit: '♥',\n  hellip: '…',\n  hercon: '⊹',\n  hfr: '𝔥',\n  hksearow: '⤥',\n  hkswarow: '⤦',\n  hoarr: '⇿',\n  homtht: '∻',\n  hookleftarrow: '↩',\n  hookrightarrow: '↪',\n  hopf: '𝕙',\n  horbar: '―',\n  hscr: '𝒽',\n  hslash: 'ℏ',\n  hstrok: 'ħ',\n  hybull: '⁃',\n  hyphen: '‐',\n  iacute: 'í',\n  ic: '⁣',\n  icirc: 'î',\n  icy: 'и',\n  iecy: 'е',\n  iexcl: '¡',\n  iff: '⇔',\n  ifr: '𝔦',\n  igrave: 'ì',\n  ii: 'ⅈ',\n  iiiint: '⨌',\n  iiint: '∭',\n  iinfin: '⧜',\n  iiota: '℩',\n  ijlig: 'ĳ',\n  imacr: 'ī',\n  image: 'ℑ',\n  imagline: 'ℐ',\n  imagpart: 'ℑ',\n  imath: 'ı',\n  imof: '⊷',\n  imped: 'Ƶ',\n  in: '∈',\n  incare: '℅',\n  infin: '∞',\n  infintie: '⧝',\n  inodot: 'ı',\n  int: '∫',\n  intcal: '⊺',\n  integers: 'ℤ',\n  intercal: '⊺',\n  intlarhk: '⨗',\n  intprod: '⨼',\n  iocy: 'ё',\n  iogon: 'į',\n  iopf: '𝕚',\n  iota: 'ι',\n  iprod: '⨼',\n  iquest: '¿',\n  iscr: '𝒾',\n  isin: '∈',\n  isinE: '⋹',\n  isindot: '⋵',\n  isins: '⋴',\n  isinsv: '⋳',\n  isinv: '∈',\n  it: '⁢',\n  itilde: 'ĩ',\n  iukcy: 'і',\n  iuml: 'ï',\n  jcirc: 'ĵ',\n  jcy: 'й',\n  jfr: '𝔧',\n  jmath: 'ȷ',\n  jopf: '𝕛',\n  jscr: '𝒿',\n  jsercy: 'ј',\n  jukcy: 'є',\n  kappa: 'κ',\n  kappav: 'ϰ',\n  kcedil: 'ķ',\n  kcy: 'к',\n  kfr: '𝔨',\n  kgreen: 'ĸ',\n  khcy: 'х',\n  kjcy: 'ќ',\n  kopf: '𝕜',\n  kscr: '𝓀',\n  lAarr: '⇚',\n  lArr: '⇐',\n  lAtail: '⤛',\n  lBarr: '⤎',\n  lE: '≦',\n  lEg: '⪋',\n  lHar: '⥢',\n  lacute: 'ĺ',\n  laemptyv: '⦴',\n  lagran: 'ℒ',\n  lambda: 'λ',\n  lang: '⟨',\n  langd: '⦑',\n  langle: '⟨',\n  lap: '⪅',\n  laquo: '«',\n  larr: '←',\n  larrb: '⇤',\n  larrbfs: '⤟',\n  larrfs: '⤝',\n  larrhk: '↩',\n  larrlp: '↫',\n  larrpl: '⤹',\n  larrsim: '⥳',\n  larrtl: '↢',\n  lat: '⪫',\n  latail: '⤙',\n  late: '⪭',\n  lates: '⪭︀',\n  lbarr: '⤌',\n  lbbrk: '❲',\n  lbrace: '{',\n  lbrack: '[',\n  lbrke: '⦋',\n  lbrksld: '⦏',\n  lbrkslu: '⦍',\n  lcaron: 'ľ',\n  lcedil: 'ļ',\n  lceil: '⌈',\n  lcub: '{',\n  lcy: 'л',\n  ldca: '⤶',\n  ldquo: '“',\n  ldquor: '„',\n  ldrdhar: '⥧',\n  ldrushar: '⥋',\n  ldsh: '↲',\n  le: '≤',\n  leftarrow: '←',\n  leftarrowtail: '↢',\n  leftharpoondown: '↽',\n  leftharpoonup: '↼',\n  leftleftarrows: '⇇',\n  leftrightarrow: '↔',\n  leftrightarrows: '⇆',\n  leftrightharpoons: '⇋',\n  leftrightsquigarrow: '↭',\n  leftthreetimes: '⋋',\n  leg: '⋚',\n  leq: '≤',\n  leqq: '≦',\n  leqslant: '⩽',\n  les: '⩽',\n  lescc: '⪨',\n  lesdot: '⩿',\n  lesdoto: '⪁',\n  lesdotor: '⪃',\n  lesg: '⋚︀',\n  lesges: '⪓',\n  lessapprox: '⪅',\n  lessdot: '⋖',\n  lesseqgtr: '⋚',\n  lesseqqgtr: '⪋',\n  lessgtr: '≶',\n  lesssim: '≲',\n  lfisht: '⥼',\n  lfloor: '⌊',\n  lfr: '𝔩',\n  lg: '≶',\n  lgE: '⪑',\n  lhard: '↽',\n  lharu: '↼',\n  lharul: '⥪',\n  lhblk: '▄',\n  ljcy: 'љ',\n  ll: '≪',\n  llarr: '⇇',\n  llcorner: '⌞',\n  llhard: '⥫',\n  lltri: '◺',\n  lmidot: 'ŀ',\n  lmoust: '⎰',\n  lmoustache: '⎰',\n  lnE: '≨',\n  lnap: '⪉',\n  lnapprox: '⪉',\n  lne: '⪇',\n  lneq: '⪇',\n  lneqq: '≨',\n  lnsim: '⋦',\n  loang: '⟬',\n  loarr: '⇽',\n  lobrk: '⟦',\n  longleftarrow: '⟵',\n  longleftrightarrow: '⟷',\n  longmapsto: '⟼',\n  longrightarrow: '⟶',\n  looparrowleft: '↫',\n  looparrowright: '↬',\n  lopar: '⦅',\n  lopf: '𝕝',\n  loplus: '⨭',\n  lotimes: '⨴',\n  lowast: '∗',\n  lowbar: '_',\n  loz: '◊',\n  lozenge: '◊',\n  lozf: '⧫',\n  lpar: '(',\n  lparlt: '⦓',\n  lrarr: '⇆',\n  lrcorner: '⌟',\n  lrhar: '⇋',\n  lrhard: '⥭',\n  lrm: '‎',\n  lrtri: '⊿',\n  lsaquo: '‹',\n  lscr: '𝓁',\n  lsh: '↰',\n  lsim: '≲',\n  lsime: '⪍',\n  lsimg: '⪏',\n  lsqb: '[',\n  lsquo: '‘',\n  lsquor: '‚',\n  lstrok: 'ł',\n  lt: '<',\n  ltcc: '⪦',\n  ltcir: '⩹',\n  ltdot: '⋖',\n  lthree: '⋋',\n  ltimes: '⋉',\n  ltlarr: '⥶',\n  ltquest: '⩻',\n  ltrPar: '⦖',\n  ltri: '◃',\n  ltrie: '⊴',\n  ltrif: '◂',\n  lurdshar: '⥊',\n  luruhar: '⥦',\n  lvertneqq: '≨︀',\n  lvnE: '≨︀',\n  mDDot: '∺',\n  macr: '¯',\n  male: '♂',\n  malt: '✠',\n  maltese: '✠',\n  map: '↦',\n  mapsto: '↦',\n  mapstodown: '↧',\n  mapstoleft: '↤',\n  mapstoup: '↥',\n  marker: '▮',\n  mcomma: '⨩',\n  mcy: 'м',\n  mdash: '—',\n  measuredangle: '∡',\n  mfr: '𝔪',\n  mho: '℧',\n  micro: 'µ',\n  mid: '∣',\n  midast: '*',\n  midcir: '⫰',\n  middot: '·',\n  minus: '−',\n  minusb: '⊟',\n  minusd: '∸',\n  minusdu: '⨪',\n  mlcp: '⫛',\n  mldr: '…',\n  mnplus: '∓',\n  models: '⊧',\n  mopf: '𝕞',\n  mp: '∓',\n  mscr: '𝓂',\n  mstpos: '∾',\n  mu: 'μ',\n  multimap: '⊸',\n  mumap: '⊸',\n  nGg: '⋙̸',\n  nGt: '≫⃒',\n  nGtv: '≫̸',\n  nLeftarrow: '⇍',\n  nLeftrightarrow: '⇎',\n  nLl: '⋘̸',\n  nLt: '≪⃒',\n  nLtv: '≪̸',\n  nRightarrow: '⇏',\n  nVDash: '⊯',\n  nVdash: '⊮',\n  nabla: '∇',\n  nacute: 'ń',\n  nang: '∠⃒',\n  nap: '≉',\n  napE: '⩰̸',\n  napid: '≋̸',\n  napos: 'ŉ',\n  napprox: '≉',\n  natur: '♮',\n  natural: '♮',\n  naturals: 'ℕ',\n  nbsp: ' ',\n  nbump: '≎̸',\n  nbumpe: '≏̸',\n  ncap: '⩃',\n  ncaron: 'ň',\n  ncedil: 'ņ',\n  ncong: '≇',\n  ncongdot: '⩭̸',\n  ncup: '⩂',\n  ncy: 'н',\n  ndash: '–',\n  ne: '≠',\n  neArr: '⇗',\n  nearhk: '⤤',\n  nearr: '↗',\n  nearrow: '↗',\n  nedot: '≐̸',\n  nequiv: '≢',\n  nesear: '⤨',\n  nesim: '≂̸',\n  nexist: '∄',\n  nexists: '∄',\n  nfr: '𝔫',\n  ngE: '≧̸',\n  nge: '≱',\n  ngeq: '≱',\n  ngeqq: '≧̸',\n  ngeqslant: '⩾̸',\n  nges: '⩾̸',\n  ngsim: '≵',\n  ngt: '≯',\n  ngtr: '≯',\n  nhArr: '⇎',\n  nharr: '↮',\n  nhpar: '⫲',\n  ni: '∋',\n  nis: '⋼',\n  nisd: '⋺',\n  niv: '∋',\n  njcy: 'њ',\n  nlArr: '⇍',\n  nlE: '≦̸',\n  nlarr: '↚',\n  nldr: '‥',\n  nle: '≰',\n  nleftarrow: '↚',\n  nleftrightarrow: '↮',\n  nleq: '≰',\n  nleqq: '≦̸',\n  nleqslant: '⩽̸',\n  nles: '⩽̸',\n  nless: '≮',\n  nlsim: '≴',\n  nlt: '≮',\n  nltri: '⋪',\n  nltrie: '⋬',\n  nmid: '∤',\n  nopf: '𝕟',\n  not: '¬',\n  notin: '∉',\n  notinE: '⋹̸',\n  notindot: '⋵̸',\n  notinva: '∉',\n  notinvb: '⋷',\n  notinvc: '⋶',\n  notni: '∌',\n  notniva: '∌',\n  notnivb: '⋾',\n  notnivc: '⋽',\n  npar: '∦',\n  nparallel: '∦',\n  nparsl: '⫽⃥',\n  npart: '∂̸',\n  npolint: '⨔',\n  npr: '⊀',\n  nprcue: '⋠',\n  npre: '⪯̸',\n  nprec: '⊀',\n  npreceq: '⪯̸',\n  nrArr: '⇏',\n  nrarr: '↛',\n  nrarrc: '⤳̸',\n  nrarrw: '↝̸',\n  nrightarrow: '↛',\n  nrtri: '⋫',\n  nrtrie: '⋭',\n  nsc: '⊁',\n  nsccue: '⋡',\n  nsce: '⪰̸',\n  nscr: '𝓃',\n  nshortmid: '∤',\n  nshortparallel: '∦',\n  nsim: '≁',\n  nsime: '≄',\n  nsimeq: '≄',\n  nsmid: '∤',\n  nspar: '∦',\n  nsqsube: '⋢',\n  nsqsupe: '⋣',\n  nsub: '⊄',\n  nsubE: '⫅̸',\n  nsube: '⊈',\n  nsubset: '⊂⃒',\n  nsubseteq: '⊈',\n  nsubseteqq: '⫅̸',\n  nsucc: '⊁',\n  nsucceq: '⪰̸',\n  nsup: '⊅',\n  nsupE: '⫆̸',\n  nsupe: '⊉',\n  nsupset: '⊃⃒',\n  nsupseteq: '⊉',\n  nsupseteqq: '⫆̸',\n  ntgl: '≹',\n  ntilde: 'ñ',\n  ntlg: '≸',\n  ntriangleleft: '⋪',\n  ntrianglelefteq: '⋬',\n  ntriangleright: '⋫',\n  ntrianglerighteq: '⋭',\n  nu: 'ν',\n  num: '#',\n  numero: '№',\n  numsp: ' ',\n  nvDash: '⊭',\n  nvHarr: '⤄',\n  nvap: '≍⃒',\n  nvdash: '⊬',\n  nvge: '≥⃒',\n  nvgt: '>⃒',\n  nvinfin: '⧞',\n  nvlArr: '⤂',\n  nvle: '≤⃒',\n  nvlt: '<⃒',\n  nvltrie: '⊴⃒',\n  nvrArr: '⤃',\n  nvrtrie: '⊵⃒',\n  nvsim: '∼⃒',\n  nwArr: '⇖',\n  nwarhk: '⤣',\n  nwarr: '↖',\n  nwarrow: '↖',\n  nwnear: '⤧',\n  oS: 'Ⓢ',\n  oacute: 'ó',\n  oast: '⊛',\n  ocir: '⊚',\n  ocirc: 'ô',\n  ocy: 'о',\n  odash: '⊝',\n  odblac: 'ő',\n  odiv: '⨸',\n  odot: '⊙',\n  odsold: '⦼',\n  oelig: 'œ',\n  ofcir: '⦿',\n  ofr: '𝔬',\n  ogon: '˛',\n  ograve: 'ò',\n  ogt: '⧁',\n  ohbar: '⦵',\n  ohm: 'Ω',\n  oint: '∮',\n  olarr: '↺',\n  olcir: '⦾',\n  olcross: '⦻',\n  oline: '‾',\n  olt: '⧀',\n  omacr: 'ō',\n  omega: 'ω',\n  omicron: 'ο',\n  omid: '⦶',\n  ominus: '⊖',\n  oopf: '𝕠',\n  opar: '⦷',\n  operp: '⦹',\n  oplus: '⊕',\n  or: '∨',\n  orarr: '↻',\n  ord: '⩝',\n  order: 'ℴ',\n  orderof: 'ℴ',\n  ordf: 'ª',\n  ordm: 'º',\n  origof: '⊶',\n  oror: '⩖',\n  orslope: '⩗',\n  orv: '⩛',\n  oscr: 'ℴ',\n  oslash: 'ø',\n  osol: '⊘',\n  otilde: 'õ',\n  otimes: '⊗',\n  otimesas: '⨶',\n  ouml: 'ö',\n  ovbar: '⌽',\n  par: '∥',\n  para: '¶',\n  parallel: '∥',\n  parsim: '⫳',\n  parsl: '⫽',\n  part: '∂',\n  pcy: 'п',\n  percnt: '%',\n  period: '.',\n  permil: '‰',\n  perp: '⊥',\n  pertenk: '‱',\n  pfr: '𝔭',\n  phi: 'φ',\n  phiv: 'ϕ',\n  phmmat: 'ℳ',\n  phone: '☎',\n  pi: 'π',\n  pitchfork: '⋔',\n  piv: 'ϖ',\n  planck: 'ℏ',\n  planckh: 'ℎ',\n  plankv: 'ℏ',\n  plus: '+',\n  plusacir: '⨣',\n  plusb: '⊞',\n  pluscir: '⨢',\n  plusdo: '∔',\n  plusdu: '⨥',\n  pluse: '⩲',\n  plusmn: '±',\n  plussim: '⨦',\n  plustwo: '⨧',\n  pm: '±',\n  pointint: '⨕',\n  popf: '𝕡',\n  pound: '£',\n  pr: '≺',\n  prE: '⪳',\n  prap: '⪷',\n  prcue: '≼',\n  pre: '⪯',\n  prec: '≺',\n  precapprox: '⪷',\n  preccurlyeq: '≼',\n  preceq: '⪯',\n  precnapprox: '⪹',\n  precneqq: '⪵',\n  precnsim: '⋨',\n  precsim: '≾',\n  prime: '′',\n  primes: 'ℙ',\n  prnE: '⪵',\n  prnap: '⪹',\n  prnsim: '⋨',\n  prod: '∏',\n  profalar: '⌮',\n  profline: '⌒',\n  profsurf: '⌓',\n  prop: '∝',\n  propto: '∝',\n  prsim: '≾',\n  prurel: '⊰',\n  pscr: '𝓅',\n  psi: 'ψ',\n  puncsp: ' ',\n  qfr: '𝔮',\n  qint: '⨌',\n  qopf: '𝕢',\n  qprime: '⁗',\n  qscr: '𝓆',\n  quaternions: 'ℍ',\n  quatint: '⨖',\n  quest: '?',\n  questeq: '≟',\n  quot: '\"',\n  rAarr: '⇛',\n  rArr: '⇒',\n  rAtail: '⤜',\n  rBarr: '⤏',\n  rHar: '⥤',\n  race: '∽̱',\n  racute: 'ŕ',\n  radic: '√',\n  raemptyv: '⦳',\n  rang: '⟩',\n  rangd: '⦒',\n  range: '⦥',\n  rangle: '⟩',\n  raquo: '»',\n  rarr: '→',\n  rarrap: '⥵',\n  rarrb: '⇥',\n  rarrbfs: '⤠',\n  rarrc: '⤳',\n  rarrfs: '⤞',\n  rarrhk: '↪',\n  rarrlp: '↬',\n  rarrpl: '⥅',\n  rarrsim: '⥴',\n  rarrtl: '↣',\n  rarrw: '↝',\n  ratail: '⤚',\n  ratio: '∶',\n  rationals: 'ℚ',\n  rbarr: '⤍',\n  rbbrk: '❳',\n  rbrace: '}',\n  rbrack: ']',\n  rbrke: '⦌',\n  rbrksld: '⦎',\n  rbrkslu: '⦐',\n  rcaron: 'ř',\n  rcedil: 'ŗ',\n  rceil: '⌉',\n  rcub: '}',\n  rcy: 'р',\n  rdca: '⤷',\n  rdldhar: '⥩',\n  rdquo: '”',\n  rdquor: '”',\n  rdsh: '↳',\n  real: 'ℜ',\n  realine: 'ℛ',\n  realpart: 'ℜ',\n  reals: 'ℝ',\n  rect: '▭',\n  reg: '®',\n  rfisht: '⥽',\n  rfloor: '⌋',\n  rfr: '𝔯',\n  rhard: '⇁',\n  rharu: '⇀',\n  rharul: '⥬',\n  rho: 'ρ',\n  rhov: 'ϱ',\n  rightarrow: '→',\n  rightarrowtail: '↣',\n  rightharpoondown: '⇁',\n  rightharpoonup: '⇀',\n  rightleftarrows: '⇄',\n  rightleftharpoons: '⇌',\n  rightrightarrows: '⇉',\n  rightsquigarrow: '↝',\n  rightthreetimes: '⋌',\n  ring: '˚',\n  risingdotseq: '≓',\n  rlarr: '⇄',\n  rlhar: '⇌',\n  rlm: '‏',\n  rmoust: '⎱',\n  rmoustache: '⎱',\n  rnmid: '⫮',\n  roang: '⟭',\n  roarr: '⇾',\n  robrk: '⟧',\n  ropar: '⦆',\n  ropf: '𝕣',\n  roplus: '⨮',\n  rotimes: '⨵',\n  rpar: ')',\n  rpargt: '⦔',\n  rppolint: '⨒',\n  rrarr: '⇉',\n  rsaquo: '›',\n  rscr: '𝓇',\n  rsh: '↱',\n  rsqb: ']',\n  rsquo: '’',\n  rsquor: '’',\n  rthree: '⋌',\n  rtimes: '⋊',\n  rtri: '▹',\n  rtrie: '⊵',\n  rtrif: '▸',\n  rtriltri: '⧎',\n  ruluhar: '⥨',\n  rx: '℞',\n  sacute: 'ś',\n  sbquo: '‚',\n  sc: '≻',\n  scE: '⪴',\n  scap: '⪸',\n  scaron: 'š',\n  sccue: '≽',\n  sce: '⪰',\n  scedil: 'ş',\n  scirc: 'ŝ',\n  scnE: '⪶',\n  scnap: '⪺',\n  scnsim: '⋩',\n  scpolint: '⨓',\n  scsim: '≿',\n  scy: 'с',\n  sdot: '⋅',\n  sdotb: '⊡',\n  sdote: '⩦',\n  seArr: '⇘',\n  searhk: '⤥',\n  searr: '↘',\n  searrow: '↘',\n  sect: '§',\n  semi: ';',\n  seswar: '⤩',\n  setminus: '∖',\n  setmn: '∖',\n  sext: '✶',\n  sfr: '𝔰',\n  sfrown: '⌢',\n  sharp: '♯',\n  shchcy: 'щ',\n  shcy: 'ш',\n  shortmid: '∣',\n  shortparallel: '∥',\n  shy: '­',\n  sigma: 'σ',\n  sigmaf: 'ς',\n  sigmav: 'ς',\n  sim: '∼',\n  simdot: '⩪',\n  sime: '≃',\n  simeq: '≃',\n  simg: '⪞',\n  simgE: '⪠',\n  siml: '⪝',\n  simlE: '⪟',\n  simne: '≆',\n  simplus: '⨤',\n  simrarr: '⥲',\n  slarr: '←',\n  smallsetminus: '∖',\n  smashp: '⨳',\n  smeparsl: '⧤',\n  smid: '∣',\n  smile: '⌣',\n  smt: '⪪',\n  smte: '⪬',\n  smtes: '⪬︀',\n  softcy: 'ь',\n  sol: '/',\n  solb: '⧄',\n  solbar: '⌿',\n  sopf: '𝕤',\n  spades: '♠',\n  spadesuit: '♠',\n  spar: '∥',\n  sqcap: '⊓',\n  sqcaps: '⊓︀',\n  sqcup: '⊔',\n  sqcups: '⊔︀',\n  sqsub: '⊏',\n  sqsube: '⊑',\n  sqsubset: '⊏',\n  sqsubseteq: '⊑',\n  sqsup: '⊐',\n  sqsupe: '⊒',\n  sqsupset: '⊐',\n  sqsupseteq: '⊒',\n  squ: '□',\n  square: '□',\n  squarf: '▪',\n  squf: '▪',\n  srarr: '→',\n  sscr: '𝓈',\n  ssetmn: '∖',\n  ssmile: '⌣',\n  sstarf: '⋆',\n  star: '☆',\n  starf: '★',\n  straightepsilon: 'ϵ',\n  straightphi: 'ϕ',\n  strns: '¯',\n  sub: '⊂',\n  subE: '⫅',\n  subdot: '⪽',\n  sube: '⊆',\n  subedot: '⫃',\n  submult: '⫁',\n  subnE: '⫋',\n  subne: '⊊',\n  subplus: '⪿',\n  subrarr: '⥹',\n  subset: '⊂',\n  subseteq: '⊆',\n  subseteqq: '⫅',\n  subsetneq: '⊊',\n  subsetneqq: '⫋',\n  subsim: '⫇',\n  subsub: '⫕',\n  subsup: '⫓',\n  succ: '≻',\n  succapprox: '⪸',\n  succcurlyeq: '≽',\n  succeq: '⪰',\n  succnapprox: '⪺',\n  succneqq: '⪶',\n  succnsim: '⋩',\n  succsim: '≿',\n  sum: '∑',\n  sung: '♪',\n  sup1: '¹',\n  sup2: '²',\n  sup3: '³',\n  sup: '⊃',\n  supE: '⫆',\n  supdot: '⪾',\n  supdsub: '⫘',\n  supe: '⊇',\n  supedot: '⫄',\n  suphsol: '⟉',\n  suphsub: '⫗',\n  suplarr: '⥻',\n  supmult: '⫂',\n  supnE: '⫌',\n  supne: '⊋',\n  supplus: '⫀',\n  supset: '⊃',\n  supseteq: '⊇',\n  supseteqq: '⫆',\n  supsetneq: '⊋',\n  supsetneqq: '⫌',\n  supsim: '⫈',\n  supsub: '⫔',\n  supsup: '⫖',\n  swArr: '⇙',\n  swarhk: '⤦',\n  swarr: '↙',\n  swarrow: '↙',\n  swnwar: '⤪',\n  szlig: 'ß',\n  target: '⌖',\n  tau: 'τ',\n  tbrk: '⎴',\n  tcaron: 'ť',\n  tcedil: 'ţ',\n  tcy: 'т',\n  tdot: '⃛',\n  telrec: '⌕',\n  tfr: '𝔱',\n  there4: '∴',\n  therefore: '∴',\n  theta: 'θ',\n  thetasym: 'ϑ',\n  thetav: 'ϑ',\n  thickapprox: '≈',\n  thicksim: '∼',\n  thinsp: ' ',\n  thkap: '≈',\n  thksim: '∼',\n  thorn: 'þ',\n  tilde: '˜',\n  times: '×',\n  timesb: '⊠',\n  timesbar: '⨱',\n  timesd: '⨰',\n  tint: '∭',\n  toea: '⤨',\n  top: '⊤',\n  topbot: '⌶',\n  topcir: '⫱',\n  topf: '𝕥',\n  topfork: '⫚',\n  tosa: '⤩',\n  tprime: '‴',\n  trade: '™',\n  triangle: '▵',\n  triangledown: '▿',\n  triangleleft: '◃',\n  trianglelefteq: '⊴',\n  triangleq: '≜',\n  triangleright: '▹',\n  trianglerighteq: '⊵',\n  tridot: '◬',\n  trie: '≜',\n  triminus: '⨺',\n  triplus: '⨹',\n  trisb: '⧍',\n  tritime: '⨻',\n  trpezium: '⏢',\n  tscr: '𝓉',\n  tscy: 'ц',\n  tshcy: 'ћ',\n  tstrok: 'ŧ',\n  twixt: '≬',\n  twoheadleftarrow: '↞',\n  twoheadrightarrow: '↠',\n  uArr: '⇑',\n  uHar: '⥣',\n  uacute: 'ú',\n  uarr: '↑',\n  ubrcy: 'ў',\n  ubreve: 'ŭ',\n  ucirc: 'û',\n  ucy: 'у',\n  udarr: '⇅',\n  udblac: 'ű',\n  udhar: '⥮',\n  ufisht: '⥾',\n  ufr: '𝔲',\n  ugrave: 'ù',\n  uharl: '↿',\n  uharr: '↾',\n  uhblk: '▀',\n  ulcorn: '⌜',\n  ulcorner: '⌜',\n  ulcrop: '⌏',\n  ultri: '◸',\n  umacr: 'ū',\n  uml: '¨',\n  uogon: 'ų',\n  uopf: '𝕦',\n  uparrow: '↑',\n  updownarrow: '↕',\n  upharpoonleft: '↿',\n  upharpoonright: '↾',\n  uplus: '⊎',\n  upsi: 'υ',\n  upsih: 'ϒ',\n  upsilon: 'υ',\n  upuparrows: '⇈',\n  urcorn: '⌝',\n  urcorner: '⌝',\n  urcrop: '⌎',\n  uring: 'ů',\n  urtri: '◹',\n  uscr: '𝓊',\n  utdot: '⋰',\n  utilde: 'ũ',\n  utri: '▵',\n  utrif: '▴',\n  uuarr: '⇈',\n  uuml: 'ü',\n  uwangle: '⦧',\n  vArr: '⇕',\n  vBar: '⫨',\n  vBarv: '⫩',\n  vDash: '⊨',\n  vangrt: '⦜',\n  varepsilon: 'ϵ',\n  varkappa: 'ϰ',\n  varnothing: '∅',\n  varphi: 'ϕ',\n  varpi: 'ϖ',\n  varpropto: '∝',\n  varr: '↕',\n  varrho: 'ϱ',\n  varsigma: 'ς',\n  varsubsetneq: '⊊︀',\n  varsubsetneqq: '⫋︀',\n  varsupsetneq: '⊋︀',\n  varsupsetneqq: '⫌︀',\n  vartheta: 'ϑ',\n  vartriangleleft: '⊲',\n  vartriangleright: '⊳',\n  vcy: 'в',\n  vdash: '⊢',\n  vee: '∨',\n  veebar: '⊻',\n  veeeq: '≚',\n  vellip: '⋮',\n  verbar: '|',\n  vert: '|',\n  vfr: '𝔳',\n  vltri: '⊲',\n  vnsub: '⊂⃒',\n  vnsup: '⊃⃒',\n  vopf: '𝕧',\n  vprop: '∝',\n  vrtri: '⊳',\n  vscr: '𝓋',\n  vsubnE: '⫋︀',\n  vsubne: '⊊︀',\n  vsupnE: '⫌︀',\n  vsupne: '⊋︀',\n  vzigzag: '⦚',\n  wcirc: 'ŵ',\n  wedbar: '⩟',\n  wedge: '∧',\n  wedgeq: '≙',\n  weierp: '℘',\n  wfr: '𝔴',\n  wopf: '𝕨',\n  wp: '℘',\n  wr: '≀',\n  wreath: '≀',\n  wscr: '𝓌',\n  xcap: '⋂',\n  xcirc: '◯',\n  xcup: '⋃',\n  xdtri: '▽',\n  xfr: '𝔵',\n  xhArr: '⟺',\n  xharr: '⟷',\n  xi: 'ξ',\n  xlArr: '⟸',\n  xlarr: '⟵',\n  xmap: '⟼',\n  xnis: '⋻',\n  xodot: '⨀',\n  xopf: '𝕩',\n  xoplus: '⨁',\n  xotime: '⨂',\n  xrArr: '⟹',\n  xrarr: '⟶',\n  xscr: '𝓍',\n  xsqcup: '⨆',\n  xuplus: '⨄',\n  xutri: '△',\n  xvee: '⋁',\n  xwedge: '⋀',\n  yacute: 'ý',\n  yacy: 'я',\n  ycirc: 'ŷ',\n  ycy: 'ы',\n  yen: '¥',\n  yfr: '𝔶',\n  yicy: 'ї',\n  yopf: '𝕪',\n  yscr: '𝓎',\n  yucy: 'ю',\n  yuml: 'ÿ',\n  zacute: 'ź',\n  zcaron: 'ž',\n  zcy: 'з',\n  zdot: 'ż',\n  zeetrf: 'ℨ',\n  zeta: 'ζ',\n  zfr: '𝔷',\n  zhcy: 'ж',\n  zigrarr: '⇝',\n  zopf: '𝕫',\n  zscr: '𝓏',\n  zwj: '‍',\n  zwnj: '‌'\n}\n","import {characterEntities} from 'character-entities'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Decode a single character reference (without the `&` or `;`).\n * You probably only need this when you’re building parsers yourself that follow\n * different rules compared to HTML.\n * This is optimized to be tiny in browsers.\n *\n * @param {string} value\n *   `notin` (named), `#123` (deci), `#x123` (hexa).\n * @returns {string|false}\n *   Decoded reference.\n */\nexport function decodeNamedCharacterReference(value) {\n  return own.call(characterEntities, value) ? characterEntities[value] : false\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n *   Item type.\n * @param {Array<T>} list\n *   List to operate on.\n * @param {number} start\n *   Index to remove/insert at (can be negative).\n * @param {number} remove\n *   Number of items to remove.\n * @param {Array<T>} items\n *   Items to inject into `list`.\n * @returns {undefined}\n *   Nothing.\n */\nexport function splice(list, start, remove, items) {\n  const end = list.length;\n  let chunkStart = 0;\n  /** @type {Array<unknown>} */\n  let parameters;\n\n  // Make start between zero and `end` (included).\n  if (start < 0) {\n    start = -start > end ? 0 : end + start;\n  } else {\n    start = start > end ? end : start;\n  }\n  remove = remove > 0 ? remove : 0;\n\n  // No need to chunk the items if there’s only a couple (10k) items.\n  if (items.length < 10000) {\n    parameters = Array.from(items);\n    parameters.unshift(start, remove);\n    // @ts-expect-error Hush, it’s fine.\n    list.splice(...parameters);\n  } else {\n    // Delete `remove` items starting from `start`\n    if (remove) list.splice(start, remove);\n\n    // Insert the items in chunks to not cause stack overflows.\n    while (chunkStart < items.length) {\n      parameters = items.slice(chunkStart, chunkStart + 10000);\n      parameters.unshift(start, 0);\n      // @ts-expect-error Hush, it’s fine.\n      list.splice(...parameters);\n      chunkStart += 10000;\n      start += 10000;\n    }\n  }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n *   Item type.\n * @param {Array<T>} list\n *   List to operate on.\n * @param {Array<T>} items\n *   Items to add to `list`.\n * @returns {Array<T>}\n *   Either `list` or `items`.\n */\nexport function push(list, items) {\n  if (list.length > 0) {\n    splice(list, list.length, 0, items);\n    return list;\n  }\n  return items;\n}","/**\n * @import {\n *   Extension,\n *   Handles,\n *   HtmlExtension,\n *   NormalizedExtension\n * } from 'micromark-util-types'\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {ReadonlyArray<Extension>} extensions\n *   List of syntax extensions.\n * @returns {NormalizedExtension}\n *   A single combined extension.\n */\nexport function combineExtensions(extensions) {\n  /** @type {NormalizedExtension} */\n  const all = {}\n  let index = -1\n\n  while (++index < extensions.length) {\n    syntaxExtension(all, extensions[index])\n  }\n\n  return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n *   Extension to merge into.\n * @param {Extension} extension\n *   Extension to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction syntaxExtension(all, extension) {\n  /** @type {keyof Extension} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    /** @type {Record<string, unknown>} */\n    const left = maybe || (all[hook] = {})\n    /** @type {Record<string, unknown> | undefined} */\n    const right = extension[hook]\n    /** @type {string} */\n    let code\n\n    if (right) {\n      for (code in right) {\n        if (!hasOwnProperty.call(left, code)) left[code] = []\n        const value = right[code]\n        constructs(\n          // @ts-expect-error Looks like a list.\n          left[code],\n          Array.isArray(value) ? value : value ? [value] : []\n        )\n      }\n    }\n  }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array<unknown>} existing\n *   List of constructs to merge into.\n * @param {Array<unknown>} list\n *   List of constructs to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction constructs(existing, list) {\n  let index = -1\n  /** @type {Array<unknown>} */\n  const before = []\n\n  while (++index < list.length) {\n    // @ts-expect-error Looks like an object.\n    ;(list[index].add === 'after' ? existing : before).push(list[index])\n  }\n\n  splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {ReadonlyArray<HtmlExtension>} htmlExtensions\n *   List of HTML extensions.\n * @returns {HtmlExtension}\n *   Single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n  /** @type {HtmlExtension} */\n  const handlers = {}\n  let index = -1\n\n  while (++index < htmlExtensions.length) {\n    htmlExtension(handlers, htmlExtensions[index])\n  }\n\n  return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n *   Extension to merge into.\n * @param {HtmlExtension} extension\n *   Extension to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction htmlExtension(all, extension) {\n  /** @type {keyof HtmlExtension} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    const left = maybe || (all[hook] = {})\n    const right = extension[hook]\n    /** @type {keyof Handles} */\n    let type\n\n    if (right) {\n      for (type in right) {\n        // @ts-expect-error assume document vs regular handler are managed correctly.\n        left[type] = right[type]\n      }\n    }\n  }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n *   Value to decode.\n * @param {number} base\n *   Numeric base.\n * @returns {string}\n *   Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n  const code = Number.parseInt(value, base);\n  if (\n  // C0 except for HT, LF, FF, CR, space.\n  code < 9 || code === 11 || code > 13 && code < 32 ||\n  // Control character (DEL) of C0, and C1 controls.\n  code > 126 && code < 160 ||\n  // Lone high surrogates and low surrogates.\n  code > 55_295 && code < 57_344 ||\n  // Noncharacters.\n  code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n  (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n  // Out of range\n  code > 1_114_111) {\n    return \"\\uFFFD\";\n  }\n  return String.fromCodePoint(code);\n}","/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n *   Identifier to normalize.\n * @returns {string}\n *   Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n  return value\n  // Collapse markdown whitespace.\n  .replace(/[\\t\\n\\r ]+/g, \" \")\n  // Trim.\n  .replace(/^ | $/g, '')\n  // Some characters are considered “uppercase”, but if their lowercase\n  // counterpart is uppercased will result in a different uppercase\n  // character.\n  // Hence, to get that form, we perform both lower- and uppercase.\n  // Upper case makes sure keys will not interact with default prototypal\n  // methods: no method is uppercase.\n  .toLowerCase().toUpperCase();\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function asciiControl(code) {\n  return (\n    // Special whitespace codes (which have negative values), C0 and Control\n    // character DEL\n    code !== null && (code < 32 || code === 127)\n  );\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/);\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownLineEnding(code) {\n  return code !== null && code < -2;\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n  return code !== null && (code < 0 || code === 32);\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownSpace(code) {\n  return code === -2 || code === -1 || code === 32;\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(/\\p{P}|\\p{S}/u);\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/);\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n *   Expression.\n * @returns {(code: Code) => boolean}\n *   Check.\n */\nfunction regexCheck(regex) {\n  return check;\n\n  /**\n   * Check whether a code matches the bound regex.\n   *\n   * @param {Code} code\n   *   Character code.\n   * @returns {boolean}\n   *   Whether the character code matches the bound regex.\n   */\n  function check(code) {\n    return code !== null && code > -1 && regex.test(String.fromCharCode(code));\n  }\n}","/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { markdownSpace } from 'micromark-util-character';\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * *   spaces in markdown are often optional, in which case this factory can be\n *     used and `ok` will be switched to whether spaces were found or not\n * *   one line ending or space can be detected with `markdownSpace(code)` right\n *     before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {TokenType} type\n *   Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n *   Max (exclusive).\n * @returns {State}\n *   Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n  const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n  let size = 0;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    if (markdownSpace(code)) {\n      effects.enter(type);\n      return prefix(code);\n    }\n    return ok(code);\n  }\n\n  /** @type {State} */\n  function prefix(code) {\n    if (markdownSpace(code) && size++ < limit) {\n      effects.consume(code);\n      return prefix;\n    }\n    effects.exit(type);\n    return ok(code);\n  }\n}","/**\n * @import {\n *   InitialConstruct,\n *   Initializer,\n *   State,\n *   TokenizeContext,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const content = {\n  tokenize: initializeContent\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Initializer}\n *   Content.\n */\nfunction initializeContent(effects) {\n  const contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial);\n  /** @type {Token} */\n  let previous;\n  return contentStart;\n\n  /** @type {State} */\n  function afterContentStartConstruct(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, contentStart, \"linePrefix\");\n  }\n\n  /** @type {State} */\n  function paragraphInitial(code) {\n    effects.enter(\"paragraph\");\n    return lineStart(code);\n  }\n\n  /** @type {State} */\n  function lineStart(code) {\n    const token = effects.enter(\"chunkText\", {\n      contentType: \"text\",\n      previous\n    });\n    if (previous) {\n      previous.next = token;\n    }\n    previous = token;\n    return data(code);\n  }\n\n  /** @type {State} */\n  function data(code) {\n    if (code === null) {\n      effects.exit(\"chunkText\");\n      effects.exit(\"paragraph\");\n      effects.consume(code);\n      return;\n    }\n    if (markdownLineEnding(code)) {\n      effects.consume(code);\n      effects.exit(\"chunkText\");\n      return lineStart;\n    }\n\n    // Data.\n    effects.consume(code);\n    return data;\n  }\n}","/**\n * @import {\n *   Construct,\n *   ContainerState,\n *   InitialConstruct,\n *   Initializer,\n *   Point,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n *   Construct and its state.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {InitialConstruct} */\nexport const document = {\n  tokenize: initializeDocument\n};\n\n/** @type {Construct} */\nconst containerConstruct = {\n  tokenize: tokenizeContainer\n};\n\n/**\n * @this {TokenizeContext}\n *   Self.\n * @type {Initializer}\n *   Initializer.\n */\nfunction initializeDocument(effects) {\n  const self = this;\n  /** @type {Array<StackItem>} */\n  const stack = [];\n  let continued = 0;\n  /** @type {TokenizeContext | undefined} */\n  let childFlow;\n  /** @type {Token | undefined} */\n  let childToken;\n  /** @type {number} */\n  let lineStartOffset;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    // First we iterate through the open blocks, starting with the root\n    // document, and descending through last children down to the last open\n    // block.\n    // Each block imposes a condition that the line must satisfy if the block is\n    // to remain open.\n    // For example, a block quote requires a `>` character.\n    // A paragraph requires a non-blank line.\n    // In this phase we may match all or just some of the open blocks.\n    // But we cannot close unmatched blocks yet, because we may have a lazy\n    // continuation line.\n    if (continued < stack.length) {\n      const item = stack[continued];\n      self.containerState = item[1];\n      return effects.attempt(item[0].continuation, documentContinue, checkNewContainers)(code);\n    }\n\n    // Done.\n    return checkNewContainers(code);\n  }\n\n  /** @type {State} */\n  function documentContinue(code) {\n    continued++;\n\n    // Note: this field is called `_closeFlow` but it also closes containers.\n    // Perhaps a good idea to rename it but it’s already used in the wild by\n    // extensions.\n    if (self.containerState._closeFlow) {\n      self.containerState._closeFlow = undefined;\n      if (childFlow) {\n        closeFlow();\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when dealing with lazy lines in `writeToChild`.\n      const indexBeforeExits = self.events.length;\n      let indexBeforeFlow = indexBeforeExits;\n      /** @type {Point | undefined} */\n      let point;\n\n      // Find the flow chunk.\n      while (indexBeforeFlow--) {\n        if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n          point = self.events[indexBeforeFlow][1].end;\n          break;\n        }\n      }\n      exitContainers(continued);\n\n      // Fix positions.\n      let index = indexBeforeExits;\n      while (index < self.events.length) {\n        self.events[index][1].end = {\n          ...point\n        };\n        index++;\n      }\n\n      // Inject the exits earlier (they’re still also at the end).\n      splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n      // Discard the duplicate exits.\n      self.events.length = index;\n      return checkNewContainers(code);\n    }\n    return start(code);\n  }\n\n  /** @type {State} */\n  function checkNewContainers(code) {\n    // Next, after consuming the continuation markers for existing blocks, we\n    // look for new block starts (e.g. `>` for a block quote).\n    // If we encounter a new block start, we close any blocks unmatched in\n    // step 1 before creating the new block as a child of the last matched\n    // block.\n    if (continued === stack.length) {\n      // No need to `check` whether there’s a container, of `exitContainers`\n      // would be moot.\n      // We can instead immediately `attempt` to parse one.\n      if (!childFlow) {\n        return documentContinued(code);\n      }\n\n      // If we have concrete content, such as block HTML or fenced code,\n      // we can’t have containers “pierce” into them, so we can immediately\n      // start.\n      if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n        return flowStart(code);\n      }\n\n      // If we do have flow, it could still be a blank line,\n      // but we’d be interrupting it w/ a new container if there’s a current\n      // construct.\n      // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n      // needed in micromark-extension-gfm-table@1.0.6).\n      self.interrupt = Boolean(childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack);\n    }\n\n    // Check if there is a new container.\n    self.containerState = {};\n    return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code);\n  }\n\n  /** @type {State} */\n  function thereIsANewContainer(code) {\n    if (childFlow) closeFlow();\n    exitContainers(continued);\n    return documentContinued(code);\n  }\n\n  /** @type {State} */\n  function thereIsNoNewContainer(code) {\n    self.parser.lazy[self.now().line] = continued !== stack.length;\n    lineStartOffset = self.now().offset;\n    return flowStart(code);\n  }\n\n  /** @type {State} */\n  function documentContinued(code) {\n    // Try new containers.\n    self.containerState = {};\n    return effects.attempt(containerConstruct, containerContinue, flowStart)(code);\n  }\n\n  /** @type {State} */\n  function containerContinue(code) {\n    continued++;\n    stack.push([self.currentConstruct, self.containerState]);\n    // Try another.\n    return documentContinued(code);\n  }\n\n  /** @type {State} */\n  function flowStart(code) {\n    if (code === null) {\n      if (childFlow) closeFlow();\n      exitContainers(0);\n      effects.consume(code);\n      return;\n    }\n    childFlow = childFlow || self.parser.flow(self.now());\n    effects.enter(\"chunkFlow\", {\n      _tokenizer: childFlow,\n      contentType: \"flow\",\n      previous: childToken\n    });\n    return flowContinue(code);\n  }\n\n  /** @type {State} */\n  function flowContinue(code) {\n    if (code === null) {\n      writeToChild(effects.exit(\"chunkFlow\"), true);\n      exitContainers(0);\n      effects.consume(code);\n      return;\n    }\n    if (markdownLineEnding(code)) {\n      effects.consume(code);\n      writeToChild(effects.exit(\"chunkFlow\"));\n      // Get ready for the next line.\n      continued = 0;\n      self.interrupt = undefined;\n      return start;\n    }\n    effects.consume(code);\n    return flowContinue;\n  }\n\n  /**\n   * @param {Token} token\n   *   Token.\n   * @param {boolean | undefined} [endOfFile]\n   *   Whether the token is at the end of the file (default: `false`).\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function writeToChild(token, endOfFile) {\n    const stream = self.sliceStream(token);\n    if (endOfFile) stream.push(null);\n    token.previous = childToken;\n    if (childToken) childToken.next = token;\n    childToken = token;\n    childFlow.defineSkip(token.start);\n    childFlow.write(stream);\n\n    // Alright, so we just added a lazy line:\n    //\n    // ```markdown\n    // > a\n    // b.\n    //\n    // Or:\n    //\n    // > ~~~c\n    // d\n    //\n    // Or:\n    //\n    // > | e |\n    // f\n    // ```\n    //\n    // The construct in the second example (fenced code) does not accept lazy\n    // lines, so it marked itself as done at the end of its first line, and\n    // then the content construct parses `d`.\n    // Most constructs in markdown match on the first line: if the first line\n    // forms a construct, a non-lazy line can’t “unmake” it.\n    //\n    // The construct in the third example is potentially a GFM table, and\n    // those are *weird*.\n    // It *could* be a table, from the first line, if the following line\n    // matches a condition.\n    // In this case, that second line is lazy, which “unmakes” the first line\n    // and turns the whole into one content block.\n    //\n    // We’ve now parsed the non-lazy and the lazy line, and can figure out\n    // whether the lazy line started a new flow block.\n    // If it did, we exit the current containers between the two flow blocks.\n    if (self.parser.lazy[token.start.line]) {\n      let index = childFlow.events.length;\n      while (index--) {\n        if (\n        // The token starts before the line ending…\n        childFlow.events[index][1].start.offset < lineStartOffset && (\n        // …and either is not ended yet…\n        !childFlow.events[index][1].end ||\n        // …or ends after it.\n        childFlow.events[index][1].end.offset > lineStartOffset)) {\n          // Exit: there’s still something open, which means it’s a lazy line\n          // part of something.\n          return;\n        }\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when closing flow in `documentContinue`.\n      const indexBeforeExits = self.events.length;\n      let indexBeforeFlow = indexBeforeExits;\n      /** @type {boolean | undefined} */\n      let seen;\n      /** @type {Point | undefined} */\n      let point;\n\n      // Find the previous chunk (the one before the lazy line).\n      while (indexBeforeFlow--) {\n        if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n          if (seen) {\n            point = self.events[indexBeforeFlow][1].end;\n            break;\n          }\n          seen = true;\n        }\n      }\n      exitContainers(continued);\n\n      // Fix positions.\n      index = indexBeforeExits;\n      while (index < self.events.length) {\n        self.events[index][1].end = {\n          ...point\n        };\n        index++;\n      }\n\n      // Inject the exits earlier (they’re still also at the end).\n      splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n      // Discard the duplicate exits.\n      self.events.length = index;\n    }\n  }\n\n  /**\n   * @param {number} size\n   *   Size.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function exitContainers(size) {\n    let index = stack.length;\n\n    // Exit open containers.\n    while (index-- > size) {\n      const entry = stack[index];\n      self.containerState = entry[1];\n      entry[0].exit.call(self, effects);\n    }\n    stack.length = size;\n  }\n  function closeFlow() {\n    childFlow.write([null]);\n    childToken = undefined;\n    childFlow = undefined;\n    self.containerState._closeFlow = undefined;\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n *   Tokenizer.\n */\nfunction tokenizeContainer(effects, ok, nok) {\n  // Always populated by defaults.\n\n  return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), \"linePrefix\", this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4);\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\nimport { markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n *   Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n *   Group.\n */\nexport function classifyCharacter(code) {\n  if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n    return 1;\n  }\n  if (unicodePunctuation(code)) {\n    return 2;\n  }\n}","/**\n * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {ReadonlyArray<{resolveAll?: Resolver | undefined}>} constructs\n *   List of constructs, optionally with `resolveAll`s.\n * @param {Array<Event>} events\n *   List of events.\n * @param {TokenizeContext} context\n *   Context used by `tokenize`.\n * @returns {Array<Event>}\n *   Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n  /** @type {Array<Resolver>} */\n  const called = []\n  let index = -1\n\n  while (++index < constructs.length) {\n    const resolve = constructs[index].resolveAll\n\n    if (resolve && !called.includes(resolve)) {\n      events = resolve(events, context)\n      called.push(resolve)\n    }\n  }\n\n  return events\n}\n","/**\n * @import {\n *   Code,\n *   Construct,\n *   Event,\n *   Point,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n  name: 'attention',\n  resolveAll: resolveAllAttention,\n  tokenize: tokenizeAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n  let index = -1;\n  /** @type {number} */\n  let open;\n  /** @type {Token} */\n  let group;\n  /** @type {Token} */\n  let text;\n  /** @type {Token} */\n  let openingSequence;\n  /** @type {Token} */\n  let closingSequence;\n  /** @type {number} */\n  let use;\n  /** @type {Array<Event>} */\n  let nextEvents;\n  /** @type {number} */\n  let offset;\n\n  // Walk through all events.\n  //\n  // Note: performance of this is fine on an mb of normal markdown, but it’s\n  // a bottleneck for malicious stuff.\n  while (++index < events.length) {\n    // Find a token that can close.\n    if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n      open = index;\n\n      // Now walk back to find an opener.\n      while (open--) {\n        // Find a token that can open the closer.\n        if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n        // If the markers are the same:\n        context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n          // If the opening can close or the closing can open,\n          // and the close size *is not* a multiple of three,\n          // but the sum of the opening and closing size *is* multiple of three,\n          // then don’t match.\n          if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n            continue;\n          }\n\n          // Number of markers to use from the sequence.\n          use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n          const start = {\n            ...events[open][1].end\n          };\n          const end = {\n            ...events[index][1].start\n          };\n          movePoint(start, -use);\n          movePoint(end, use);\n          openingSequence = {\n            type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n            start,\n            end: {\n              ...events[open][1].end\n            }\n          };\n          closingSequence = {\n            type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n            start: {\n              ...events[index][1].start\n            },\n            end\n          };\n          text = {\n            type: use > 1 ? \"strongText\" : \"emphasisText\",\n            start: {\n              ...events[open][1].end\n            },\n            end: {\n              ...events[index][1].start\n            }\n          };\n          group = {\n            type: use > 1 ? \"strong\" : \"emphasis\",\n            start: {\n              ...openingSequence.start\n            },\n            end: {\n              ...closingSequence.end\n            }\n          };\n          events[open][1].end = {\n            ...openingSequence.start\n          };\n          events[index][1].start = {\n            ...closingSequence.end\n          };\n          nextEvents = [];\n\n          // If there are more markers in the opening, add them before.\n          if (events[open][1].end.offset - events[open][1].start.offset) {\n            nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n          }\n\n          // Opening.\n          nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n          // Always populated by defaults.\n\n          // Between.\n          nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n          // Closing.\n          nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n          // If there are more markers in the closing, add them after.\n          if (events[index][1].end.offset - events[index][1].start.offset) {\n            offset = 2;\n            nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n          } else {\n            offset = 0;\n          }\n          splice(events, open - 1, index - open + 3, nextEvents);\n          index = open + nextEvents.length - offset - 2;\n          break;\n        }\n      }\n    }\n  }\n\n  // Remove remaining sequences.\n  index = -1;\n  while (++index < events.length) {\n    if (events[index][1].type === 'attentionSequence') {\n      events[index][1].type = 'data';\n    }\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n  const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n  const previous = this.previous;\n  const before = classifyCharacter(previous);\n\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Before a sequence.\n   *\n   * ```markdown\n   * > | **\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    marker = code;\n    effects.enter('attentionSequence');\n    return inside(code);\n  }\n\n  /**\n   * In a sequence.\n   *\n   * ```markdown\n   * > | **\n   *     ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker) {\n      effects.consume(code);\n      return inside;\n    }\n    const token = effects.exit('attentionSequence');\n\n    // To do: next major: move this to resolver, just like `markdown-rs`.\n    const after = classifyCharacter(code);\n\n    // Always populated by defaults.\n\n    const open = !after || after === 2 && before || attentionMarkers.includes(code);\n    const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n    token._open = Boolean(marker === 42 ? open : open && (before || !close));\n    token._close = Boolean(marker === 42 ? close : close && (after || !open));\n    return ok(code);\n  }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n *   Point.\n * @param {number} offset\n *   Amount to move.\n * @returns {undefined}\n *   Nothing.\n */\nfunction movePoint(point, offset) {\n  point.column += offset;\n  point.offset += offset;\n  point._bufferIndex += offset;\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n  name: 'autolink',\n  tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n  let size = 0;\n  return start;\n\n  /**\n   * Start of an autolink.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *      ^\n   * > | a<user@example.com>b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"autolink\");\n    effects.enter(\"autolinkMarker\");\n    effects.consume(code);\n    effects.exit(\"autolinkMarker\");\n    effects.enter(\"autolinkProtocol\");\n    return open;\n  }\n\n  /**\n   * After `<`, at protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *       ^\n   * > | a<user@example.com>b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return schemeOrEmailAtext;\n    }\n    if (code === 64) {\n      return nok(code);\n    }\n    return emailAtext(code);\n  }\n\n  /**\n   * At second byte of protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function schemeOrEmailAtext(code) {\n    // ASCII alphanumeric and `+`, `-`, and `.`.\n    if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n      // Count the previous alphabetical from `open` too.\n      size = 1;\n      return schemeInsideOrEmailAtext(code);\n    }\n    return emailAtext(code);\n  }\n\n  /**\n   * In ambiguous protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function schemeInsideOrEmailAtext(code) {\n    if (code === 58) {\n      effects.consume(code);\n      size = 0;\n      return urlInside;\n    }\n\n    // ASCII alphanumeric and `+`, `-`, and `.`.\n    if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n      effects.consume(code);\n      return schemeInsideOrEmailAtext;\n    }\n    size = 0;\n    return emailAtext(code);\n  }\n\n  /**\n   * After protocol, in URL.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function urlInside(code) {\n    if (code === 62) {\n      effects.exit(\"autolinkProtocol\");\n      effects.enter(\"autolinkMarker\");\n      effects.consume(code);\n      effects.exit(\"autolinkMarker\");\n      effects.exit(\"autolink\");\n      return ok;\n    }\n\n    // ASCII control, space, or `<`.\n    if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return urlInside;\n  }\n\n  /**\n   * In email atext.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailAtext(code) {\n    if (code === 64) {\n      effects.consume(code);\n      return emailAtSignOrDot;\n    }\n    if (asciiAtext(code)) {\n      effects.consume(code);\n      return emailAtext;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In label, after at-sign or dot.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *                 ^       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailAtSignOrDot(code) {\n    return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n  }\n\n  /**\n   * In label, where `.` and `>` are allowed.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *                   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailLabel(code) {\n    if (code === 46) {\n      effects.consume(code);\n      size = 0;\n      return emailAtSignOrDot;\n    }\n    if (code === 62) {\n      // Exit, then change the token type.\n      effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n      effects.enter(\"autolinkMarker\");\n      effects.consume(code);\n      effects.exit(\"autolinkMarker\");\n      effects.exit(\"autolink\");\n      return ok;\n    }\n    return emailValue(code);\n  }\n\n  /**\n   * In label, where `.` and `>` are *not* allowed.\n   *\n   * Though, this is also used in `emailLabel` to parse other values.\n   *\n   * ```markdown\n   * > | a<user.name@ex-ample.com>b\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailValue(code) {\n    // ASCII alphanumeric or `-`.\n    if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n      const next = code === 45 ? emailValue : emailLabel;\n      effects.consume(code);\n      return next;\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blankLine = {\n  partial: true,\n  tokenize: tokenizeBlankLine\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of blank line.\n   *\n   * > 👉 **Note**: `␠` represents a space character.\n   *\n   * ```markdown\n   * > | ␠␠␊\n   *     ^\n   * > | ␊\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    return markdownSpace(code) ? factorySpace(effects, after, \"linePrefix\")(code) : after(code);\n  }\n\n  /**\n   * At eof/eol, after optional whitespace.\n   *\n   * > 👉 **Note**: `␠` represents a space character.\n   *\n   * ```markdown\n   * > | ␠␠␊\n   *       ^\n   * > | ␊\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   Exiter,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blockQuote = {\n  continuation: {\n    tokenize: tokenizeBlockQuoteContinuation\n  },\n  exit,\n  name: 'blockQuote',\n  tokenize: tokenizeBlockQuoteStart\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of block quote.\n   *\n   * ```markdown\n   * > | > a\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 62) {\n      const state = self.containerState;\n      if (!state.open) {\n        effects.enter(\"blockQuote\", {\n          _container: true\n        });\n        state.open = true;\n      }\n      effects.enter(\"blockQuotePrefix\");\n      effects.enter(\"blockQuoteMarker\");\n      effects.consume(code);\n      effects.exit(\"blockQuoteMarker\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `>`, before optional whitespace.\n   *\n   * ```markdown\n   * > | > a\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    if (markdownSpace(code)) {\n      effects.enter(\"blockQuotePrefixWhitespace\");\n      effects.consume(code);\n      effects.exit(\"blockQuotePrefixWhitespace\");\n      effects.exit(\"blockQuotePrefix\");\n      return ok;\n    }\n    effects.exit(\"blockQuotePrefix\");\n    return ok(code);\n  }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n *   | > a\n * > | > b\n *     ^\n * ```\n *\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n  const self = this;\n  return contStart;\n\n  /**\n   * Start of block quote continuation.\n   *\n   * Also used to parse the first block quote opening.\n   *\n   * ```markdown\n   *   | > a\n   * > | > b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function contStart(code) {\n    if (markdownSpace(code)) {\n      // Always populated by defaults.\n\n      return factorySpace(effects, contBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n    }\n    return contBefore(code);\n  }\n\n  /**\n   * At `>`, after optional whitespace.\n   *\n   * Also used to parse the first block quote opening.\n   *\n   * ```markdown\n   *   | > a\n   * > | > b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function contBefore(code) {\n    return effects.attempt(blockQuote, ok, nok)(code);\n  }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n  effects.exit(\"blockQuote\");\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n  name: 'characterEscape',\n  tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of character escape.\n   *\n   * ```markdown\n   * > | a\\*b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"characterEscape\");\n    effects.enter(\"escapeMarker\");\n    effects.consume(code);\n    effects.exit(\"escapeMarker\");\n    return inside;\n  }\n\n  /**\n   * After `\\`, at punctuation.\n   *\n   * ```markdown\n   * > | a\\*b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    // ASCII punctuation.\n    if (asciiPunctuation(code)) {\n      effects.enter(\"characterEscapeValue\");\n      effects.consume(code);\n      effects.exit(\"characterEscapeValue\");\n      effects.exit(\"characterEscape\");\n      return ok;\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n  name: 'characterReference',\n  tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n  const self = this;\n  let size = 0;\n  /** @type {number} */\n  let max;\n  /** @type {(code: Code) => boolean} */\n  let test;\n  return start;\n\n  /**\n   * Start of character reference.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *      ^\n   * > | a&#123;b\n   *      ^\n   * > | a&#x9;b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"characterReference\");\n    effects.enter(\"characterReferenceMarker\");\n    effects.consume(code);\n    effects.exit(\"characterReferenceMarker\");\n    return open;\n  }\n\n  /**\n   * After `&`, at `#` for numeric references or alphanumeric for named\n   * references.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *       ^\n   * > | a&#123;b\n   *       ^\n   * > | a&#x9;b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 35) {\n      effects.enter(\"characterReferenceMarkerNumeric\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarkerNumeric\");\n      return numeric;\n    }\n    effects.enter(\"characterReferenceValue\");\n    max = 31;\n    test = asciiAlphanumeric;\n    return value(code);\n  }\n\n  /**\n   * After `#`, at `x` for hexadecimals or digit for decimals.\n   *\n   * ```markdown\n   * > | a&#123;b\n   *        ^\n   * > | a&#x9;b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function numeric(code) {\n    if (code === 88 || code === 120) {\n      effects.enter(\"characterReferenceMarkerHexadecimal\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarkerHexadecimal\");\n      effects.enter(\"characterReferenceValue\");\n      max = 6;\n      test = asciiHexDigit;\n      return value;\n    }\n    effects.enter(\"characterReferenceValue\");\n    max = 7;\n    test = asciiDigit;\n    return value(code);\n  }\n\n  /**\n   * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n   *\n   * The character reference kind defines what and how many characters are\n   * allowed.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *       ^^^\n   * > | a&#123;b\n   *        ^^^\n   * > | a&#x9;b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function value(code) {\n    if (code === 59 && size) {\n      const token = effects.exit(\"characterReferenceValue\");\n      if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n        return nok(code);\n      }\n\n      // To do: `markdown-rs` uses a different name:\n      // `CharacterReferenceMarkerSemi`.\n      effects.enter(\"characterReferenceMarker\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarker\");\n      effects.exit(\"characterReference\");\n      return ok;\n    }\n    if (test(code) && size++ < max) {\n      effects.consume(code);\n      return value;\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n  partial: true,\n  tokenize: tokenizeNonLazyContinuation\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n  concrete: true,\n  name: 'codeFenced',\n  tokenize: tokenizeCodeFenced\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n  const self = this;\n  /** @type {Construct} */\n  const closeStart = {\n    partial: true,\n    tokenize: tokenizeCloseStart\n  };\n  let initialPrefix = 0;\n  let sizeOpen = 0;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of code.\n   *\n   * ```markdown\n   * > | ~~~js\n   *     ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse whitespace like `markdown-rs`.\n    return beforeSequenceOpen(code);\n  }\n\n  /**\n   * In opening fence, after prefix, at sequence.\n   *\n   * ```markdown\n   * > | ~~~js\n   *     ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeSequenceOpen(code) {\n    const tail = self.events[self.events.length - 1];\n    initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n    marker = code;\n    effects.enter(\"codeFenced\");\n    effects.enter(\"codeFencedFence\");\n    effects.enter(\"codeFencedFenceSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening fence sequence.\n   *\n   * ```markdown\n   * > | ~~~js\n   *      ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === marker) {\n      sizeOpen++;\n      effects.consume(code);\n      return sequenceOpen;\n    }\n    if (sizeOpen < 3) {\n      return nok(code);\n    }\n    effects.exit(\"codeFencedFenceSequence\");\n    return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n  }\n\n  /**\n   * In opening fence, after the sequence (and optional whitespace), before info.\n   *\n   * ```markdown\n   * > | ~~~js\n   *        ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function infoBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFencedFence\");\n      return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n    }\n    effects.enter(\"codeFencedFenceInfo\");\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return info(code);\n  }\n\n  /**\n   * In info.\n   *\n   * ```markdown\n   * > | ~~~js\n   *        ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function info(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceInfo\");\n      return infoBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceInfo\");\n      return factorySpace(effects, metaBefore, \"whitespace\")(code);\n    }\n    if (code === 96 && code === marker) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return info;\n  }\n\n  /**\n   * In opening fence, after info and whitespace, before meta.\n   *\n   * ```markdown\n   * > | ~~~js eval\n   *           ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function metaBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return infoBefore(code);\n    }\n    effects.enter(\"codeFencedFenceMeta\");\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return meta(code);\n  }\n\n  /**\n   * In meta.\n   *\n   * ```markdown\n   * > | ~~~js eval\n   *           ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function meta(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceMeta\");\n      return infoBefore(code);\n    }\n    if (code === 96 && code === marker) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return meta;\n  }\n\n  /**\n   * At eol/eof in code, before a non-lazy closing fence or content.\n   *\n   * ```markdown\n   * > | ~~~js\n   *          ^\n   * > | alert(1)\n   *             ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function atNonLazyBreak(code) {\n    return effects.attempt(closeStart, after, contentBefore)(code);\n  }\n\n  /**\n   * Before code content, not a closing fence, at eol.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *             ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentBefore(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return contentStart;\n  }\n\n  /**\n   * Before code content, not a closing fence.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentStart(code) {\n    return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n  }\n\n  /**\n   * Before code content, after optional prefix.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeContentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n    }\n    effects.enter(\"codeFlowValue\");\n    return contentChunk(code);\n  }\n\n  /**\n   * In code content.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^^^^^^^^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFlowValue\");\n      return beforeContentChunk(code);\n    }\n    effects.consume(code);\n    return contentChunk;\n  }\n\n  /**\n   * After code.\n   *\n   * ```markdown\n   *   | ~~~js\n   *   | alert(1)\n   * > | ~~~\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    effects.exit(\"codeFenced\");\n    return ok(code);\n  }\n\n  /**\n   * @this {TokenizeContext}\n   *   Context.\n   * @type {Tokenizer}\n   */\n  function tokenizeCloseStart(effects, ok, nok) {\n    let size = 0;\n    return startBefore;\n\n    /**\n     *\n     *\n     * @type {State}\n     */\n    function startBefore(code) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return start;\n    }\n\n    /**\n     * Before closing fence, at optional whitespace.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function start(code) {\n      // Always populated by defaults.\n\n      // To do: `enter` here or in next state?\n      effects.enter(\"codeFencedFence\");\n      return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n    }\n\n    /**\n     * In closing fence, after optional whitespace, at sequence.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function beforeSequenceClose(code) {\n      if (code === marker) {\n        effects.enter(\"codeFencedFenceSequence\");\n        return sequenceClose(code);\n      }\n      return nok(code);\n    }\n\n    /**\n     * In closing fence sequence.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceClose(code) {\n      if (code === marker) {\n        size++;\n        effects.consume(code);\n        return sequenceClose;\n      }\n      if (size >= sizeOpen) {\n        effects.exit(\"codeFencedFenceSequence\");\n        return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n      }\n      return nok(code);\n    }\n\n    /**\n     * After closing fence sequence, after optional whitespace.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *        ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceCloseAfter(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit(\"codeFencedFence\");\n        return ok(code);\n      }\n      return nok(code);\n    }\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return lineStart;\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function lineStart(code) {\n    return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeIndented = {\n  name: 'codeIndented',\n  tokenize: tokenizeCodeIndented\n};\n\n/** @type {Construct} */\nconst furtherStart = {\n  partial: true,\n  tokenize: tokenizeFurtherStart\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of code (indented).\n   *\n   * > **Parsing note**: it is not needed to check if this first line is a\n   * > filled line (that it has a non-whitespace character), because blank lines\n   * > are parsed already, so we never run into that.\n   *\n   * ```markdown\n   * > |     aaa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: manually check if interrupting like `markdown-rs`.\n\n    effects.enter(\"codeIndented\");\n    // To do: use an improved `space_or_tab` function like `markdown-rs`,\n    // so that we can drop the next state.\n    return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n  }\n\n  /**\n   * At start, after 1 or 4 spaces.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code) : nok(code);\n  }\n\n  /**\n   * At a break.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^  ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === null) {\n      return after(code);\n    }\n    if (markdownLineEnding(code)) {\n      return effects.attempt(furtherStart, atBreak, after)(code);\n    }\n    effects.enter(\"codeFlowValue\");\n    return inside(code);\n  }\n\n  /**\n   * In code content.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFlowValue\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return inside;\n  }\n\n  /** @type {State} */\n  function after(code) {\n    effects.exit(\"codeIndented\");\n    // To do: allow interrupting like `markdown-rs`.\n    // Feel free to interrupt.\n    // tokenizer.interrupt = false\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n  const self = this;\n  return furtherStart;\n\n  /**\n   * At eol, trying to parse another indent.\n   *\n   * ```markdown\n   * > |     aaa\n   *            ^\n   *   |     bbb\n   * ```\n   *\n   * @type {State}\n   */\n  function furtherStart(code) {\n    // To do: improve `lazy` / `pierce` handling.\n    // If this is a lazy line, it can’t be code.\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code);\n    }\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return furtherStart;\n    }\n\n    // To do: the code here in `micromark-js` is a bit different from\n    // `markdown-rs` because there it can attempt spaces.\n    // We can’t yet.\n    //\n    // To do: use an improved `space_or_tab` function like `markdown-rs`,\n    // so that we can drop the next state.\n    return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n  }\n\n  /**\n   * At start, after 1 or 4 spaces.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart(code) : nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   Previous,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n  name: 'codeText',\n  previous,\n  resolve: resolveCodeText,\n  tokenize: tokenizeCodeText\n};\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n  let tailExitIndex = events.length - 4;\n  let headEnterIndex = 3;\n  /** @type {number} */\n  let index;\n  /** @type {number | undefined} */\n  let enter;\n\n  // If we start and end with an EOL or a space.\n  if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n    index = headEnterIndex;\n\n    // And we have data.\n    while (++index < tailExitIndex) {\n      if (events[index][1].type === \"codeTextData\") {\n        // Then we have padding.\n        events[headEnterIndex][1].type = \"codeTextPadding\";\n        events[tailExitIndex][1].type = \"codeTextPadding\";\n        headEnterIndex += 2;\n        tailExitIndex -= 2;\n        break;\n      }\n    }\n  }\n\n  // Merge adjacent spaces and data.\n  index = headEnterIndex - 1;\n  tailExitIndex++;\n  while (++index <= tailExitIndex) {\n    if (enter === undefined) {\n      if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n        enter = index;\n      }\n    } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n      events[enter][1].type = \"codeTextData\";\n      if (index !== enter + 2) {\n        events[enter][1].end = events[index - 1][1].end;\n        events.splice(enter + 2, index - enter - 2);\n        tailExitIndex -= index - enter - 2;\n        index = enter + 2;\n      }\n      enter = undefined;\n    }\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Previous}\n */\nfunction previous(code) {\n  // If there is a previous code, there will always be a tail.\n  return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n  const self = this;\n  let sizeOpen = 0;\n  /** @type {number} */\n  let size;\n  /** @type {Token} */\n  let token;\n  return start;\n\n  /**\n   * Start of code (text).\n   *\n   * ```markdown\n   * > | `a`\n   *     ^\n   * > | \\`a`\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"codeText\");\n    effects.enter(\"codeTextSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening sequence.\n   *\n   * ```markdown\n   * > | `a`\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 96) {\n      effects.consume(code);\n      sizeOpen++;\n      return sequenceOpen;\n    }\n    effects.exit(\"codeTextSequence\");\n    return between(code);\n  }\n\n  /**\n   * Between something and something else.\n   *\n   * ```markdown\n   * > | `a`\n   *      ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function between(code) {\n    // EOF.\n    if (code === null) {\n      return nok(code);\n    }\n\n    // To do: next major: don’t do spaces in resolve, but when compiling,\n    // like `markdown-rs`.\n    // Tabs don’t work, and virtual spaces don’t make sense.\n    if (code === 32) {\n      effects.enter('space');\n      effects.consume(code);\n      effects.exit('space');\n      return between;\n    }\n\n    // Closing fence? Could also be data.\n    if (code === 96) {\n      token = effects.enter(\"codeTextSequence\");\n      size = 0;\n      return sequenceClose(code);\n    }\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return between;\n    }\n\n    // Data.\n    effects.enter(\"codeTextData\");\n    return data(code);\n  }\n\n  /**\n   * In data.\n   *\n   * ```markdown\n   * > | `a`\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function data(code) {\n    if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n      effects.exit(\"codeTextData\");\n      return between(code);\n    }\n    effects.consume(code);\n    return data;\n  }\n\n  /**\n   * In closing sequence.\n   *\n   * ```markdown\n   * > | `a`\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceClose(code) {\n    // More.\n    if (code === 96) {\n      effects.consume(code);\n      size++;\n      return sequenceClose;\n    }\n\n    // Done!\n    if (size === sizeOpen) {\n      effects.exit(\"codeTextSequence\");\n      effects.exit(\"codeText\");\n      return ok(code);\n    }\n\n    // More or less accents: mark as data.\n    token.type = \"codeTextData\";\n    return data(code);\n  }\n}","/**\n * Some of the internal operations of micromark do lots of editing\n * operations on very large arrays. This runs into problems with two\n * properties of most circa-2020 JavaScript interpreters:\n *\n *  - Array-length modifications at the high end of an array (push/pop) are\n *    expected to be common and are implemented in (amortized) time\n *    proportional to the number of elements added or removed, whereas\n *    other operations (shift/unshift and splice) are much less efficient.\n *  - Function arguments are passed on the stack, so adding tens of thousands\n *    of elements to an array with `arr.push(...newElements)` will frequently\n *    cause stack overflows. (see <https://stackoverflow.com/questions/22123769/rangeerror-maximum-call-stack-size-exceeded-why>)\n *\n * SpliceBuffers are an implementation of gap buffers, which are a\n * generalization of the \"queue made of two stacks\" idea. The splice buffer\n * maintains a cursor, and moving the cursor has cost proportional to the\n * distance the cursor moves, but inserting, deleting, or splicing in\n * new information at the cursor is as efficient as the push/pop operation.\n * This allows for an efficient sequence of splices (or pushes, pops, shifts,\n * or unshifts) as long such edits happen at the same part of the array or\n * generally sweep through the array from the beginning to the end.\n *\n * The interface for splice buffers also supports large numbers of inputs by\n * passing a single array argument rather passing multiple arguments on the\n * function call stack.\n *\n * @template T\n *   Item type.\n */\nexport class SpliceBuffer {\n  /**\n   * @param {ReadonlyArray<T> | null | undefined} [initial]\n   *   Initial items (optional).\n   * @returns\n   *   Splice buffer.\n   */\n  constructor(initial) {\n    /** @type {Array<T>} */\n    this.left = initial ? [...initial] : [];\n    /** @type {Array<T>} */\n    this.right = [];\n  }\n\n  /**\n   * Array access;\n   * does not move the cursor.\n   *\n   * @param {number} index\n   *   Index.\n   * @return {T}\n   *   Item.\n   */\n  get(index) {\n    if (index < 0 || index >= this.left.length + this.right.length) {\n      throw new RangeError('Cannot access index `' + index + '` in a splice buffer of size `' + (this.left.length + this.right.length) + '`');\n    }\n    if (index < this.left.length) return this.left[index];\n    return this.right[this.right.length - index + this.left.length - 1];\n  }\n\n  /**\n   * The length of the splice buffer, one greater than the largest index in the\n   * array.\n   */\n  get length() {\n    return this.left.length + this.right.length;\n  }\n\n  /**\n   * Remove and return `list[0]`;\n   * moves the cursor to `0`.\n   *\n   * @returns {T | undefined}\n   *   Item, optional.\n   */\n  shift() {\n    this.setCursor(0);\n    return this.right.pop();\n  }\n\n  /**\n   * Slice the buffer to get an array;\n   * does not move the cursor.\n   *\n   * @param {number} start\n   *   Start.\n   * @param {number | null | undefined} [end]\n   *   End (optional).\n   * @returns {Array<T>}\n   *   Array of items.\n   */\n  slice(start, end) {\n    /** @type {number} */\n    const stop = end === null || end === undefined ? Number.POSITIVE_INFINITY : end;\n    if (stop < this.left.length) {\n      return this.left.slice(start, stop);\n    }\n    if (start > this.left.length) {\n      return this.right.slice(this.right.length - stop + this.left.length, this.right.length - start + this.left.length).reverse();\n    }\n    return this.left.slice(start).concat(this.right.slice(this.right.length - stop + this.left.length).reverse());\n  }\n\n  /**\n   * Mimics the behavior of Array.prototype.splice() except for the change of\n   * interface necessary to avoid segfaults when patching in very large arrays.\n   *\n   * This operation moves cursor is moved to `start` and results in the cursor\n   * placed after any inserted items.\n   *\n   * @param {number} start\n   *   Start;\n   *   zero-based index at which to start changing the array;\n   *   negative numbers count backwards from the end of the array and values\n   *   that are out-of bounds are clamped to the appropriate end of the array.\n   * @param {number | null | undefined} [deleteCount=0]\n   *   Delete count (default: `0`);\n   *   maximum number of elements to delete, starting from start.\n   * @param {Array<T> | null | undefined} [items=[]]\n   *   Items to include in place of the deleted items (default: `[]`).\n   * @return {Array<T>}\n   *   Any removed items.\n   */\n  splice(start, deleteCount, items) {\n    /** @type {number} */\n    const count = deleteCount || 0;\n    this.setCursor(Math.trunc(start));\n    const removed = this.right.splice(this.right.length - count, Number.POSITIVE_INFINITY);\n    if (items) chunkedPush(this.left, items);\n    return removed.reverse();\n  }\n\n  /**\n   * Remove and return the highest-numbered item in the array, so\n   * `list[list.length - 1]`;\n   * Moves the cursor to `length`.\n   *\n   * @returns {T | undefined}\n   *   Item, optional.\n   */\n  pop() {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    return this.left.pop();\n  }\n\n  /**\n   * Inserts a single item to the high-numbered side of the array;\n   * moves the cursor to `length`.\n   *\n   * @param {T} item\n   *   Item.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  push(item) {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    this.left.push(item);\n  }\n\n  /**\n   * Inserts many items to the high-numbered side of the array.\n   * Moves the cursor to `length`.\n   *\n   * @param {Array<T>} items\n   *   Items.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  pushMany(items) {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    chunkedPush(this.left, items);\n  }\n\n  /**\n   * Inserts a single item to the low-numbered side of the array;\n   * Moves the cursor to `0`.\n   *\n   * @param {T} item\n   *   Item.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  unshift(item) {\n    this.setCursor(0);\n    this.right.push(item);\n  }\n\n  /**\n   * Inserts many items to the low-numbered side of the array;\n   * moves the cursor to `0`.\n   *\n   * @param {Array<T>} items\n   *   Items.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  unshiftMany(items) {\n    this.setCursor(0);\n    chunkedPush(this.right, items.reverse());\n  }\n\n  /**\n   * Move the cursor to a specific position in the array. Requires\n   * time proportional to the distance moved.\n   *\n   * If `n < 0`, the cursor will end up at the beginning.\n   * If `n > length`, the cursor will end up at the end.\n   *\n   * @param {number} n\n   *   Position.\n   * @return {undefined}\n   *   Nothing.\n   */\n  setCursor(n) {\n    if (n === this.left.length || n > this.left.length && this.right.length === 0 || n < 0 && this.left.length === 0) return;\n    if (n < this.left.length) {\n      // Move cursor to the this.left\n      const removed = this.left.splice(n, Number.POSITIVE_INFINITY);\n      chunkedPush(this.right, removed.reverse());\n    } else {\n      // Move cursor to the this.right\n      const removed = this.right.splice(this.left.length + this.right.length - n, Number.POSITIVE_INFINITY);\n      chunkedPush(this.left, removed.reverse());\n    }\n  }\n}\n\n/**\n * Avoid stack overflow by pushing items onto the stack in segments\n *\n * @template T\n *   Item type.\n * @param {Array<T>} list\n *   List to inject into.\n * @param {ReadonlyArray<T>} right\n *   Items to inject.\n * @return {undefined}\n *   Nothing.\n */\nfunction chunkedPush(list, right) {\n  /** @type {number} */\n  let chunkStart = 0;\n  if (right.length < 10000) {\n    list.push(...right);\n  } else {\n    while (chunkStart < right.length) {\n      list.push(...right.slice(chunkStart, chunkStart + 10000));\n      chunkStart += 10000;\n    }\n  }\n}","/**\n * @import {Chunk, Event, Token} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { SpliceBuffer } from './lib/splice-buffer.js';\n\n// Hidden API exposed for testing.\nexport { SpliceBuffer } from './lib/splice-buffer.js';\n\n/**\n * Tokenize subcontent.\n *\n * @param {Array<Event>} eventsArray\n *   List of events.\n * @returns {boolean}\n *   Whether subtokens were found.\n */\n// eslint-disable-next-line complexity\nexport function subtokenize(eventsArray) {\n  /** @type {Record<string, number>} */\n  const jumps = {};\n  let index = -1;\n  /** @type {Event} */\n  let event;\n  /** @type {number | undefined} */\n  let lineIndex;\n  /** @type {number} */\n  let otherIndex;\n  /** @type {Event} */\n  let otherEvent;\n  /** @type {Array<Event>} */\n  let parameters;\n  /** @type {Array<Event>} */\n  let subevents;\n  /** @type {boolean | undefined} */\n  let more;\n  const events = new SpliceBuffer(eventsArray);\n  while (++index < events.length) {\n    while (index in jumps) {\n      index = jumps[index];\n    }\n    event = events.get(index);\n\n    // Add a hook for the GFM tasklist extension, which needs to know if text\n    // is in the first content of a list item.\n    if (index && event[1].type === \"chunkFlow\" && events.get(index - 1)[1].type === \"listItemPrefix\") {\n      subevents = event[1]._tokenizer.events;\n      otherIndex = 0;\n      if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"lineEndingBlank\") {\n        otherIndex += 2;\n      }\n      if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"content\") {\n        while (++otherIndex < subevents.length) {\n          if (subevents[otherIndex][1].type === \"content\") {\n            break;\n          }\n          if (subevents[otherIndex][1].type === \"chunkText\") {\n            subevents[otherIndex][1]._isInFirstContentOfListItem = true;\n            otherIndex++;\n          }\n        }\n      }\n    }\n\n    // Enter.\n    if (event[0] === 'enter') {\n      if (event[1].contentType) {\n        Object.assign(jumps, subcontent(events, index));\n        index = jumps[index];\n        more = true;\n      }\n    }\n    // Exit.\n    else if (event[1]._container) {\n      otherIndex = index;\n      lineIndex = undefined;\n      while (otherIndex--) {\n        otherEvent = events.get(otherIndex);\n        if (otherEvent[1].type === \"lineEnding\" || otherEvent[1].type === \"lineEndingBlank\") {\n          if (otherEvent[0] === 'enter') {\n            if (lineIndex) {\n              events.get(lineIndex)[1].type = \"lineEndingBlank\";\n            }\n            otherEvent[1].type = \"lineEnding\";\n            lineIndex = otherIndex;\n          }\n        } else if (otherEvent[1].type === \"linePrefix\") {\n          // Move past.\n        } else {\n          break;\n        }\n      }\n      if (lineIndex) {\n        // Fix position.\n        event[1].end = {\n          ...events.get(lineIndex)[1].start\n        };\n\n        // Switch container exit w/ line endings.\n        parameters = events.slice(lineIndex, index);\n        parameters.unshift(event);\n        events.splice(lineIndex, index - lineIndex + 1, parameters);\n      }\n    }\n  }\n\n  // The changes to the `events` buffer must be copied back into the eventsArray\n  splice(eventsArray, 0, Number.POSITIVE_INFINITY, events.slice(0));\n  return !more;\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {SpliceBuffer<Event>} events\n *   Events.\n * @param {number} eventIndex\n *   Index.\n * @returns {Record<string, number>}\n *   Gaps.\n */\nfunction subcontent(events, eventIndex) {\n  const token = events.get(eventIndex)[1];\n  const context = events.get(eventIndex)[2];\n  let startPosition = eventIndex - 1;\n  /** @type {Array<number>} */\n  const startPositions = [];\n  const tokenizer = token._tokenizer || context.parser[token.contentType](token.start);\n  const childEvents = tokenizer.events;\n  /** @type {Array<[number, number]>} */\n  const jumps = [];\n  /** @type {Record<string, number>} */\n  const gaps = {};\n  /** @type {Array<Chunk>} */\n  let stream;\n  /** @type {Token | undefined} */\n  let previous;\n  let index = -1;\n  /** @type {Token | undefined} */\n  let current = token;\n  let adjust = 0;\n  let start = 0;\n  const breaks = [start];\n\n  // Loop forward through the linked tokens to pass them in order to the\n  // subtokenizer.\n  while (current) {\n    // Find the position of the event for this token.\n    while (events.get(++startPosition)[1] !== current) {\n      // Empty.\n    }\n    startPositions.push(startPosition);\n    if (!current._tokenizer) {\n      stream = context.sliceStream(current);\n      if (!current.next) {\n        stream.push(null);\n      }\n      if (previous) {\n        tokenizer.defineSkip(current.start);\n      }\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = true;\n      }\n      tokenizer.write(stream);\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = undefined;\n      }\n    }\n\n    // Unravel the next token.\n    previous = current;\n    current = current.next;\n  }\n\n  // Now, loop back through all events (and linked tokens), to figure out which\n  // parts belong where.\n  current = token;\n  while (++index < childEvents.length) {\n    if (\n    // Find a void token that includes a break.\n    childEvents[index][0] === 'exit' && childEvents[index - 1][0] === 'enter' && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {\n      start = index + 1;\n      breaks.push(start);\n      // Help GC.\n      current._tokenizer = undefined;\n      current.previous = undefined;\n      current = current.next;\n    }\n  }\n\n  // Help GC.\n  tokenizer.events = [];\n\n  // If there’s one more token (which is the cases for lines that end in an\n  // EOF), that’s perfect: the last point we found starts it.\n  // If there isn’t then make sure any remaining content is added to it.\n  if (current) {\n    // Help GC.\n    current._tokenizer = undefined;\n    current.previous = undefined;\n  } else {\n    breaks.pop();\n  }\n\n  // Now splice the events from the subtokenizer into the current events,\n  // moving back to front so that splice indices aren’t affected.\n  index = breaks.length;\n  while (index--) {\n    const slice = childEvents.slice(breaks[index], breaks[index + 1]);\n    const start = startPositions.pop();\n    jumps.push([start, start + slice.length - 1]);\n    events.splice(start, 2, slice);\n  }\n  jumps.reverse();\n  index = -1;\n  while (++index < jumps.length) {\n    gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];\n    adjust += jumps[index][1] - jumps[index][0] - 1;\n  }\n  return gaps;\n}","/**\n * @import {\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { subtokenize } from 'micromark-util-subtokenize';\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n  resolve: resolveContent,\n  tokenize: tokenizeContent\n};\n\n/** @type {Construct} */\nconst continuationConstruct = {\n  partial: true,\n  tokenize: tokenizeContinuation\n};\n\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n  subtokenize(events);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n  /** @type {Token | undefined} */\n  let previous;\n  return chunkStart;\n\n  /**\n   * Before a content chunk.\n   *\n   * ```markdown\n   * > | abc\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function chunkStart(code) {\n    effects.enter(\"content\");\n    previous = effects.enter(\"chunkContent\", {\n      contentType: \"content\"\n    });\n    return chunkInside(code);\n  }\n\n  /**\n   * In a content chunk.\n   *\n   * ```markdown\n   * > | abc\n   *     ^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function chunkInside(code) {\n    if (code === null) {\n      return contentEnd(code);\n    }\n\n    // To do: in `markdown-rs`, each line is parsed on its own, and everything\n    // is stitched together resolving.\n    if (markdownLineEnding(code)) {\n      return effects.check(continuationConstruct, contentContinue, contentEnd)(code);\n    }\n\n    // Data.\n    effects.consume(code);\n    return chunkInside;\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function contentEnd(code) {\n    effects.exit(\"chunkContent\");\n    effects.exit(\"content\");\n    return ok(code);\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function contentContinue(code) {\n    effects.consume(code);\n    effects.exit(\"chunkContent\");\n    previous.next = effects.enter(\"chunkContent\", {\n      contentType: \"content\",\n      previous\n    });\n    previous = previous.next;\n    return chunkInside;\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n  const self = this;\n  return startLookahead;\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function startLookahead(code) {\n    effects.exit(\"chunkContent\");\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, prefixed, \"linePrefix\");\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function prefixed(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code);\n    }\n\n    // Always populated by defaults.\n\n    const tail = self.events[self.events.length - 1];\n    if (!self.parser.constructs.disable.null.includes('codeIndented') && tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4) {\n      return ok(code);\n    }\n    return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);\n  }\n}","/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { asciiControl, markdownLineEndingOrSpace, markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * <a>\n * <a\\>b>\n * <a b>\n * <a)>\n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type for whole (`<a>` or `b`).\n * @param {TokenType} literalType\n *   Type when enclosed (`<a>`).\n * @param {TokenType} literalMarkerType\n *   Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n *   Type when not enclosed (`b`).\n * @param {TokenType} stringType\n *   Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n *   Depth of nested parens (inclusive).\n * @returns {State}\n *   Start state.\n */\nexport function factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) {\n  const limit = max || Number.POSITIVE_INFINITY;\n  let balance = 0;\n  return start;\n\n  /**\n   * Start of destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *     ^\n   * > | aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 60) {\n      effects.enter(type);\n      effects.enter(literalType);\n      effects.enter(literalMarkerType);\n      effects.consume(code);\n      effects.exit(literalMarkerType);\n      return enclosedBefore;\n    }\n\n    // ASCII control, space, closing paren.\n    if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.enter(type);\n    effects.enter(rawType);\n    effects.enter(stringType);\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return raw(code);\n  }\n\n  /**\n   * After `<`, at an enclosed destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosedBefore(code) {\n    if (code === 62) {\n      effects.enter(literalMarkerType);\n      effects.consume(code);\n      effects.exit(literalMarkerType);\n      effects.exit(literalType);\n      effects.exit(type);\n      return ok;\n    }\n    effects.enter(stringType);\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return enclosed(code);\n  }\n\n  /**\n   * In enclosed destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosed(code) {\n    if (code === 62) {\n      effects.exit(\"chunkString\");\n      effects.exit(stringType);\n      return enclosedBefore(code);\n    }\n    if (code === null || code === 60 || markdownLineEnding(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return code === 92 ? enclosedEscape : enclosed;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | <a\\*a>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosedEscape(code) {\n    if (code === 60 || code === 62 || code === 92) {\n      effects.consume(code);\n      return enclosed;\n    }\n    return enclosed(code);\n  }\n\n  /**\n   * In raw destination.\n   *\n   * ```markdown\n   * > | aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function raw(code) {\n    if (!balance && (code === null || code === 41 || markdownLineEndingOrSpace(code))) {\n      effects.exit(\"chunkString\");\n      effects.exit(stringType);\n      effects.exit(rawType);\n      effects.exit(type);\n      return ok(code);\n    }\n    if (balance < limit && code === 40) {\n      effects.consume(code);\n      balance++;\n      return raw;\n    }\n    if (code === 41) {\n      effects.consume(code);\n      balance--;\n      return raw;\n    }\n\n    // ASCII control (but *not* `\\0`) and space and `(`.\n    // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n    // doesn’t.\n    if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return code === 92 ? rawEscape : raw;\n  }\n\n  /**\n   * After `\\`, at special character.\n   *\n   * ```markdown\n   * > | a\\*a\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function rawEscape(code) {\n    if (code === 40 || code === 41 || code === 92) {\n      effects.consume(code);\n      return raw;\n    }\n    return raw(code);\n  }\n}","/**\n * @import {\n *   Effects,\n *   State,\n *   TokenizeContext,\n *   TokenType\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n *   Tokenize context.\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n *   Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n *   Type for the identifier (`a`).\n * @returns {State}\n *   Start state.\n */\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n  const self = this;\n  let size = 0;\n  /** @type {boolean} */\n  let seen;\n  return start;\n\n  /**\n   * Start of label.\n   *\n   * ```markdown\n   * > | [a]\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(type);\n    effects.enter(markerType);\n    effects.consume(code);\n    effects.exit(markerType);\n    effects.enter(stringType);\n    return atBreak;\n  }\n\n  /**\n   * In label, at something, before something else.\n   *\n   * ```markdown\n   * > | [a]\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (size > 999 || code === null || code === 91 || code === 93 && !seen ||\n    // To do: remove in the future once we’ve switched from\n    // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n    // which doesn’t need this.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    code === 94 && !size && '_hiddenFootnoteSupport' in self.parser.constructs) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.exit(stringType);\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      effects.exit(type);\n      return ok;\n    }\n\n    // To do: indent? Link chunks and EOLs together?\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return atBreak;\n    }\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return labelInside(code);\n  }\n\n  /**\n   * In label, in text.\n   *\n   * ```markdown\n   * > | [a]\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelInside(code) {\n    if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) {\n      effects.exit(\"chunkString\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    if (!seen) seen = !markdownSpace(code);\n    return code === 92 ? labelEscape : labelInside;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | [a\\*a]\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code);\n      size++;\n      return labelInside;\n    }\n    return labelInside(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Effects,\n *   State,\n *   TokenType\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n *     b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n *   Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n *   Type for the value (`a`).\n * @returns {State}\n *   Start state.\n */\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of title.\n   *\n   * ```markdown\n   * > | \"a\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      effects.enter(type);\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      marker = code === 40 ? 41 : code;\n      return begin;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After opening marker.\n   *\n   * This is also used at the closing marker.\n   *\n   * ```markdown\n   * > | \"a\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function begin(code) {\n    if (code === marker) {\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      effects.exit(type);\n      return ok;\n    }\n    effects.enter(stringType);\n    return atBreak(code);\n  }\n\n  /**\n   * At something, before something else.\n   *\n   * ```markdown\n   * > | \"a\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.exit(stringType);\n      return begin(marker);\n    }\n    if (code === null) {\n      return nok(code);\n    }\n\n    // Note: blank lines can’t exist in content.\n    if (markdownLineEnding(code)) {\n      // To do: use `space_or_tab_eol_with_options`, connect.\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return factorySpace(effects, atBreak, \"linePrefix\");\n    }\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return inside(code);\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker || code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return code === 92 ? escape : inside;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | \"a\\*b\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function escape(code) {\n    if (code === marker || code === 92) {\n      effects.consume(code);\n      return inside;\n    }\n    return inside(code);\n  }\n}","/**\n * @import {Effects, State} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * *   line endings or spaces in markdown are often optional, in which case this\n *     factory can be used and `ok` will be switched to whether spaces were found\n *     or not\n * *   one line ending or space can be detected with\n *     `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @returns {State}\n *   Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n  /** @type {boolean} */\n  let seen;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      seen = true;\n      return start;\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, start, seen ? \"linePrefix\" : \"lineSuffix\")(code);\n    }\n    return ok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factorySpace } from 'micromark-factory-space';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\n/** @type {Construct} */\nexport const definition = {\n  name: 'definition',\n  tokenize: tokenizeDefinition\n};\n\n/** @type {Construct} */\nconst titleBefore = {\n  partial: true,\n  tokenize: tokenizeTitleBefore\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n  const self = this;\n  /** @type {string} */\n  let identifier;\n  return start;\n\n  /**\n   * At start of a definition.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // Do not interrupt paragraphs (but do follow definitions).\n    // To do: do `interrupt` the way `markdown-rs` does.\n    // To do: parse whitespace the way `markdown-rs` does.\n    effects.enter(\"definition\");\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at `[`.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    // To do: parse whitespace the way `markdown-rs` does.\n\n    return factoryLabel.call(self, effects, labelAfter,\n    // Note: we don’t need to reset the way `markdown-rs` does.\n    nok, \"definitionLabel\", \"definitionLabelMarker\", \"definitionLabelString\")(code);\n  }\n\n  /**\n   * After label.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAfter(code) {\n    identifier = normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1));\n    if (code === 58) {\n      effects.enter(\"definitionMarker\");\n      effects.consume(code);\n      effects.exit(\"definitionMarker\");\n      return markerAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After marker.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function markerAfter(code) {\n    // Note: whitespace is optional.\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code);\n  }\n\n  /**\n   * Before destination.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function destinationBefore(code) {\n    return factoryDestination(effects, destinationAfter,\n    // Note: we don’t need to reset the way `markdown-rs` does.\n    nok, \"definitionDestination\", \"definitionDestinationLiteral\", \"definitionDestinationLiteralMarker\", \"definitionDestinationRaw\", \"definitionDestinationString\")(code);\n  }\n\n  /**\n   * After destination.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function destinationAfter(code) {\n    return effects.attempt(titleBefore, after, after)(code);\n  }\n\n  /**\n   * After definition.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return markdownSpace(code) ? factorySpace(effects, afterWhitespace, \"whitespace\")(code) : afterWhitespace(code);\n  }\n\n  /**\n   * After definition, after optional whitespace.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterWhitespace(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"definition\");\n\n      // Note: we don’t care about uniqueness.\n      // It’s likely that that doesn’t happen very frequently.\n      // It is more likely that it wastes precious time.\n      self.parser.defined.push(identifier);\n\n      // To do: `markdown-rs` interrupt.\n      // // You’d be interrupting.\n      // tokenizer.interrupt = true\n      return ok(code);\n    }\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n  return titleBefore;\n\n  /**\n   * After destination, at whitespace.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleBefore(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code);\n  }\n\n  /**\n   * At title.\n   *\n   * ```markdown\n   *   | [a]: b\n   * > | \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeMarker(code) {\n    return factoryTitle(effects, titleAfter, nok, \"definitionTitle\", \"definitionTitleMarker\", \"definitionTitleString\")(code);\n  }\n\n  /**\n   * After title.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleAfter(code) {\n    return markdownSpace(code) ? factorySpace(effects, titleAfterOptionalWhitespace, \"whitespace\")(code) : titleAfterOptionalWhitespace(code);\n  }\n\n  /**\n   * After title, after optional whitespace.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleAfterOptionalWhitespace(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n  name: 'hardBreakEscape',\n  tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of a hard break (escape).\n   *\n   * ```markdown\n   * > | a\\\n   *      ^\n   *   | b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"hardBreakEscape\");\n    effects.consume(code);\n    return after;\n  }\n\n  /**\n   * After `\\`, at eol.\n   *\n   * ```markdown\n   * > | a\\\n   *       ^\n   *   | b\n   * ```\n   *\n   *  @type {State}\n   */\n  function after(code) {\n    if (markdownLineEnding(code)) {\n      effects.exit(\"hardBreakEscape\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {Construct} */\nexport const headingAtx = {\n  name: 'headingAtx',\n  resolve: resolveHeadingAtx,\n  tokenize: tokenizeHeadingAtx\n};\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n  let contentEnd = events.length - 2;\n  let contentStart = 3;\n  /** @type {Token} */\n  let content;\n  /** @type {Token} */\n  let text;\n\n  // Prefix whitespace, part of the opening.\n  if (events[contentStart][1].type === \"whitespace\") {\n    contentStart += 2;\n  }\n\n  // Suffix whitespace, part of the closing.\n  if (contentEnd - 2 > contentStart && events[contentEnd][1].type === \"whitespace\") {\n    contentEnd -= 2;\n  }\n  if (events[contentEnd][1].type === \"atxHeadingSequence\" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === \"whitespace\")) {\n    contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;\n  }\n  if (contentEnd > contentStart) {\n    content = {\n      type: \"atxHeadingText\",\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end\n    };\n    text = {\n      type: \"chunkText\",\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end,\n      contentType: \"text\"\n    };\n    splice(events, contentStart, contentEnd - contentStart + 1, [['enter', content, context], ['enter', text, context], ['exit', text, context], ['exit', content, context]]);\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n  let size = 0;\n  return start;\n\n  /**\n   * Start of a heading (atx).\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse indent like `markdown-rs`.\n    effects.enter(\"atxHeading\");\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at `#`.\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"atxHeadingSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening sequence.\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 35 && size++ < 6) {\n      effects.consume(code);\n      return sequenceOpen;\n    }\n\n    // Always at least one `#`.\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"atxHeadingSequence\");\n      return atBreak(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * After something, before something else.\n   *\n   * ```markdown\n   * > | ## aa\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === 35) {\n      effects.enter(\"atxHeadingSequence\");\n      return sequenceFurther(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"atxHeading\");\n      // To do: interrupt like `markdown-rs`.\n      // // Feel free to interrupt.\n      // tokenizer.interrupt = false\n      return ok(code);\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, atBreak, \"whitespace\")(code);\n    }\n\n    // To do: generate `data` tokens, add the `text` token later.\n    // Needs edit map, see: `markdown.rs`.\n    effects.enter(\"atxHeadingText\");\n    return data(code);\n  }\n\n  /**\n   * In further sequence (after whitespace).\n   *\n   * Could be normal “visible” hashes in the heading or a final sequence.\n   *\n   * ```markdown\n   * > | ## aa ##\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceFurther(code) {\n    if (code === 35) {\n      effects.consume(code);\n      return sequenceFurther;\n    }\n    effects.exit(\"atxHeadingSequence\");\n    return atBreak(code);\n  }\n\n  /**\n   * In text.\n   *\n   * ```markdown\n   * > | ## aa\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function data(code) {\n    if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"atxHeadingText\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return data;\n  }\n}","/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = [\n  'address',\n  'article',\n  'aside',\n  'base',\n  'basefont',\n  'blockquote',\n  'body',\n  'caption',\n  'center',\n  'col',\n  'colgroup',\n  'dd',\n  'details',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'frame',\n  'frameset',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hr',\n  'html',\n  'iframe',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'menu',\n  'menuitem',\n  'nav',\n  'noframes',\n  'ol',\n  'optgroup',\n  'option',\n  'p',\n  'param',\n  'search',\n  'section',\n  'summary',\n  'table',\n  'tbody',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'title',\n  'tr',\n  'track',\n  'ul'\n]\n\n/**\n * List of lowercase HTML “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @import {\n *   Code,\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { htmlBlockNames, htmlRawNames } from 'micromark-util-html-tag-name';\nimport { blankLine } from './blank-line.js';\n\n/** @type {Construct} */\nexport const htmlFlow = {\n  concrete: true,\n  name: 'htmlFlow',\n  resolveTo: resolveToHtmlFlow,\n  tokenize: tokenizeHtmlFlow\n};\n\n/** @type {Construct} */\nconst blankLineBefore = {\n  partial: true,\n  tokenize: tokenizeBlankLineBefore\n};\nconst nonLazyContinuationStart = {\n  partial: true,\n  tokenize: tokenizeNonLazyContinuationStart\n};\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n  let index = events.length;\n  while (index--) {\n    if (events[index][0] === 'enter' && events[index][1].type === \"htmlFlow\") {\n      break;\n    }\n  }\n  if (index > 1 && events[index - 2][1].type === \"linePrefix\") {\n    // Add the prefix start to the HTML token.\n    events[index][1].start = events[index - 2][1].start;\n    // Add the prefix start to the HTML line token.\n    events[index + 1][1].start = events[index - 2][1].start;\n    // Remove the line prefix.\n    events.splice(index - 2, 2);\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n  const self = this;\n  /** @type {number} */\n  let marker;\n  /** @type {boolean} */\n  let closingTag;\n  /** @type {string} */\n  let buffer;\n  /** @type {number} */\n  let index;\n  /** @type {Code} */\n  let markerB;\n  return start;\n\n  /**\n   * Start of HTML (flow).\n   *\n   * ```markdown\n   * > | <x />\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse indent like `markdown-rs`.\n    return before(code);\n  }\n\n  /**\n   * At `<`, after optional whitespace.\n   *\n   * ```markdown\n   * > | <x />\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"htmlFlow\");\n    effects.enter(\"htmlFlowData\");\n    effects.consume(code);\n    return open;\n  }\n\n  /**\n   * After `<`, at tag name or other stuff.\n   *\n   * ```markdown\n   * > | <x />\n   *      ^\n   * > | <!doctype>\n   *      ^\n   * > | <!--xxx-->\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code);\n      return declarationOpen;\n    }\n    if (code === 47) {\n      effects.consume(code);\n      closingTag = true;\n      return tagCloseStart;\n    }\n    if (code === 63) {\n      effects.consume(code);\n      marker = 3;\n      // To do:\n      // tokenizer.concrete = true\n      // To do: use `markdown-rs` style interrupt.\n      // While we’re in an instruction instead of a declaration, we’re on a `?`\n      // right now, so we do need to search for `>`, similar to declarations.\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      // Always the case.\n      effects.consume(code);\n      buffer = String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *       ^\n   * > | <!--xxx-->\n   *       ^\n   * > | <![CDATA[>&<]]>\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code);\n      marker = 2;\n      return commentOpenInside;\n    }\n    if (code === 91) {\n      effects.consume(code);\n      marker = 5;\n      index = 0;\n      return cdataOpenInside;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      marker = 4;\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!-`, inside a comment, at another `-`.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<![`, inside CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\n   *        ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataOpenInside(code) {\n    const value = \"CDATA[\";\n    if (code === value.charCodeAt(index++)) {\n      effects.consume(code);\n      if (index === value.length) {\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok : continuation;\n      }\n      return cdataOpenInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | </x>\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseStart(code) {\n    if (asciiAlpha(code)) {\n      // Always the case.\n      effects.consume(code);\n      buffer = String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In tag name.\n   *\n   * ```markdown\n   * > | <ab>\n   *      ^^\n   * > | </ab>\n   *       ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagName(code) {\n    if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      const slash = code === 47;\n      const name = buffer.toLowerCase();\n      if (!slash && !closingTag && htmlRawNames.includes(name)) {\n        marker = 1;\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok(code) : continuation(code);\n      }\n      if (htmlBlockNames.includes(buffer.toLowerCase())) {\n        marker = 6;\n        if (slash) {\n          effects.consume(code);\n          return basicSelfClosing;\n        }\n\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok(code) : continuation(code);\n      }\n      marker = 7;\n      // Do not support complete HTML when interrupting.\n      return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code);\n    }\n\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      buffer += String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After closing slash of a basic tag name.\n   *\n   * ```markdown\n   * > | <div/>\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function basicSelfClosing(code) {\n    if (code === 62) {\n      effects.consume(code);\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuation;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After closing slash of a complete tag name.\n   *\n   * ```markdown\n   * > | <x/>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeClosingTagAfter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeClosingTagAfter;\n    }\n    return completeEnd(code);\n  }\n\n  /**\n   * At an attribute name.\n   *\n   * At first, this state is used after a complete tag name, after whitespace,\n   * where it expects optional attributes or the end of the tag.\n   * It is also reused after attributes, when expecting more optional\n   * attributes.\n   *\n   * ```markdown\n   * > | <a />\n   *        ^\n   * > | <a :b>\n   *        ^\n   * > | <a _b>\n   *        ^\n   * > | <a b>\n   *        ^\n   * > | <a >\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeNameBefore(code) {\n    if (code === 47) {\n      effects.consume(code);\n      return completeEnd;\n    }\n\n    // ASCII alphanumerical and `:` and `_`.\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code);\n      return completeAttributeName;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeNameBefore;\n    }\n    return completeEnd(code);\n  }\n\n  /**\n   * In attribute name.\n   *\n   * ```markdown\n   * > | <a :b>\n   *         ^\n   * > | <a _b>\n   *         ^\n   * > | <a b>\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeName(code) {\n    // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n    if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return completeAttributeName;\n    }\n    return completeAttributeNameAfter(code);\n  }\n\n  /**\n   * After attribute name, at an optional initializer, the end of the tag, or\n   * whitespace.\n   *\n   * ```markdown\n   * > | <a b>\n   *         ^\n   * > | <a b=c>\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code);\n      return completeAttributeValueBefore;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeNameAfter;\n    }\n    return completeAttributeNameBefore(code);\n  }\n\n  /**\n   * Before unquoted, double quoted, or single quoted attribute value, allowing\n   * whitespace.\n   *\n   * ```markdown\n   * > | <a b=c>\n   *          ^\n   * > | <a b=\"c\">\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueBefore(code) {\n    if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n      return nok(code);\n    }\n    if (code === 34 || code === 39) {\n      effects.consume(code);\n      markerB = code;\n      return completeAttributeValueQuoted;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeValueBefore;\n    }\n    return completeAttributeValueUnquoted(code);\n  }\n\n  /**\n   * In double or single quoted attribute value.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *           ^\n   * > | <a b='c'>\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueQuoted(code) {\n    if (code === markerB) {\n      effects.consume(code);\n      markerB = null;\n      return completeAttributeValueQuotedAfter;\n    }\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return completeAttributeValueQuoted;\n  }\n\n  /**\n   * In unquoted attribute value.\n   *\n   * ```markdown\n   * > | <a b=c>\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueUnquoted(code) {\n    if (code === null || code === 34 || code === 39 || code === 47 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) {\n      return completeAttributeNameAfter(code);\n    }\n    effects.consume(code);\n    return completeAttributeValueUnquoted;\n  }\n\n  /**\n   * After double or single quoted attribute value, before whitespace or the\n   * end of the tag.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownSpace(code)) {\n      return completeAttributeNameBefore(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In certain circumstances of a complete tag where only an `>` is allowed.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeEnd(code) {\n    if (code === 62) {\n      effects.consume(code);\n      return completeAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `>` in a complete tag.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAfter(code) {\n    if (code === null || markdownLineEnding(code)) {\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return continuation(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In continuation of any HTML kind.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuation(code) {\n    if (code === 45 && marker === 2) {\n      effects.consume(code);\n      return continuationCommentInside;\n    }\n    if (code === 60 && marker === 1) {\n      effects.consume(code);\n      return continuationRawTagOpen;\n    }\n    if (code === 62 && marker === 4) {\n      effects.consume(code);\n      return continuationClose;\n    }\n    if (code === 63 && marker === 3) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    if (code === 93 && marker === 5) {\n      effects.consume(code);\n      return continuationCdataInside;\n    }\n    if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n      effects.exit(\"htmlFlowData\");\n      return effects.check(blankLineBefore, continuationAfter, continuationStart)(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"htmlFlowData\");\n      return continuationStart(code);\n    }\n    effects.consume(code);\n    return continuation;\n  }\n\n  /**\n   * In continuation, at eol.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   *   | asd\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationStart(code) {\n    return effects.check(nonLazyContinuationStart, continuationStartNonLazy, continuationAfter)(code);\n  }\n\n  /**\n   * In continuation, at eol, before non-lazy content.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   *   | asd\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationStartNonLazy(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return continuationBefore;\n  }\n\n  /**\n   * In continuation, before non-lazy content.\n   *\n   * ```markdown\n   *   | <x>\n   * > | asd\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return continuationStart(code);\n    }\n    effects.enter(\"htmlFlowData\");\n    return continuation(code);\n  }\n\n  /**\n   * In comment continuation, after one `-`, expecting another.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationCommentInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In raw continuation, after `<`, at `/`.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\n   *                            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationRawTagOpen(code) {\n    if (code === 47) {\n      effects.consume(code);\n      buffer = '';\n      return continuationRawEndTag;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In raw continuation, after `</`, in a raw tag name.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\n   *                             ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationRawEndTag(code) {\n    if (code === 62) {\n      const name = buffer.toLowerCase();\n      if (htmlRawNames.includes(name)) {\n        effects.consume(code);\n        return continuationClose;\n      }\n      return continuation(code);\n    }\n    if (asciiAlpha(code) && buffer.length < 8) {\n      // Always the case.\n      effects.consume(code);\n      buffer += String.fromCharCode(code);\n      return continuationRawEndTag;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In cdata continuation, after `]`, expecting `]>`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\n   *                  ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationCdataInside(code) {\n    if (code === 93) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In declaration or instruction continuation, at `>`.\n   *\n   * ```markdown\n   * > | <!-->\n   *         ^\n   * > | <?>\n   *       ^\n   * > | <!q>\n   *        ^\n   * > | <!--ab-->\n   *             ^\n   * > | <![CDATA[>&<]]>\n   *                   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationDeclarationInside(code) {\n    if (code === 62) {\n      effects.consume(code);\n      return continuationClose;\n    }\n\n    // More dashes.\n    if (code === 45 && marker === 2) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In closed continuation: everything we get until the eol/eof is part of it.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationClose(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"htmlFlowData\");\n      return continuationAfter(code);\n    }\n    effects.consume(code);\n    return continuationClose;\n  }\n\n  /**\n   * Done.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationAfter(code) {\n    effects.exit(\"htmlFlow\");\n    // // Feel free to interrupt.\n    // tokenizer.interrupt = false\n    // // No longer concrete.\n    // tokenizer.concrete = false\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * At eol, before continuation.\n   *\n   * ```markdown\n   * > | * ```js\n   *            ^\n   *   | b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * A continuation.\n   *\n   * ```markdown\n   *   | * ```js\n   * > | b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n  return start;\n\n  /**\n   * Before eol, expecting blank line.\n   *\n   * ```markdown\n   * > | <div>\n   *          ^\n   *   |\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return effects.attempt(blankLine, ok, nok);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n  name: 'htmlText',\n  tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n  const self = this;\n  /** @type {NonNullable<Code> | undefined} */\n  let marker;\n  /** @type {number} */\n  let index;\n  /** @type {State} */\n  let returnState;\n  return start;\n\n  /**\n   * Start of HTML (text).\n   *\n   * ```markdown\n   * > | a <b> c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"htmlText\");\n    effects.enter(\"htmlTextData\");\n    effects.consume(code);\n    return open;\n  }\n\n  /**\n   * After `<`, at tag name or other stuff.\n   *\n   * ```markdown\n   * > | a <b> c\n   *        ^\n   * > | a <!doctype> c\n   *        ^\n   * > | a <!--b--> c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code);\n      return declarationOpen;\n    }\n    if (code === 47) {\n      effects.consume(code);\n      return tagCloseStart;\n    }\n    if (code === 63) {\n      effects.consume(code);\n      return instruction;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return tagOpen;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | a <!doctype> c\n   *         ^\n   * > | a <!--b--> c\n   *         ^\n   * > | a <![CDATA[>&<]]> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentOpenInside;\n    }\n    if (code === 91) {\n      effects.consume(code);\n      index = 0;\n      return cdataOpenInside;\n    }\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return declaration;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In a comment, after `<!-`, at another `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentEnd;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In comment.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function comment(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 45) {\n      effects.consume(code);\n      return commentClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = comment;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return comment;\n  }\n\n  /**\n   * In comment, after `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentClose(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentEnd;\n    }\n    return comment(code);\n  }\n\n  /**\n   * In comment, after `--`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentEnd(code) {\n    return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n  }\n\n  /**\n   * After `<![`, in CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *          ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataOpenInside(code) {\n    const value = \"CDATA[\";\n    if (code === value.charCodeAt(index++)) {\n      effects.consume(code);\n      return index === value.length ? cdata : cdataOpenInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In CDATA.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                ^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdata(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.consume(code);\n      return cdataClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = cdata;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return cdata;\n  }\n\n  /**\n   * In CDATA, after `]`, at another `]`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataClose(code) {\n    if (code === 93) {\n      effects.consume(code);\n      return cdataEnd;\n    }\n    return cdata(code);\n  }\n\n  /**\n   * In CDATA, after `]]`, at `>`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataEnd(code) {\n    if (code === 62) {\n      return end(code);\n    }\n    if (code === 93) {\n      effects.consume(code);\n      return cdataEnd;\n    }\n    return cdata(code);\n  }\n\n  /**\n   * In declaration.\n   *\n   * ```markdown\n   * > | a <!b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declaration(code) {\n    if (code === null || code === 62) {\n      return end(code);\n    }\n    if (markdownLineEnding(code)) {\n      returnState = declaration;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return declaration;\n  }\n\n  /**\n   * In instruction.\n   *\n   * ```markdown\n   * > | a <?b?> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function instruction(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 63) {\n      effects.consume(code);\n      return instructionClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = instruction;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return instruction;\n  }\n\n  /**\n   * In instruction, after `?`, at `>`.\n   *\n   * ```markdown\n   * > | a <?b?> c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function instructionClose(code) {\n    return code === 62 ? end(code) : instruction(code);\n  }\n\n  /**\n   * After `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseStart(code) {\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return tagClose;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `</x`, in a tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagClose(code) {\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagClose;\n    }\n    return tagCloseBetween(code);\n  }\n\n  /**\n   * In closing tag, after tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseBetween(code) {\n    if (markdownLineEnding(code)) {\n      returnState = tagCloseBetween;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagCloseBetween;\n    }\n    return end(code);\n  }\n\n  /**\n   * After `<x`, in opening tag name.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpen(code) {\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagOpen;\n    }\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In opening tag, after tag name.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenBetween(code) {\n    if (code === 47) {\n      effects.consume(code);\n      return end;\n    }\n\n    // ASCII alphabetical and `:` and `_`.\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code);\n      return tagOpenAttributeName;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenBetween;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenBetween;\n    }\n    return end(code);\n  }\n\n  /**\n   * In attribute name.\n   *\n   * ```markdown\n   * > | a <b c> d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeName(code) {\n    // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n    if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagOpenAttributeName;\n    }\n    return tagOpenAttributeNameAfter(code);\n  }\n\n  /**\n   * After attribute name, before initializer, the end of the tag, or\n   * whitespace.\n   *\n   * ```markdown\n   * > | a <b c> d\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code);\n      return tagOpenAttributeValueBefore;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeNameAfter;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenAttributeNameAfter;\n    }\n    return tagOpenBetween(code);\n  }\n\n  /**\n   * Before unquoted, double quoted, or single quoted attribute value, allowing\n   * whitespace.\n   *\n   * ```markdown\n   * > | a <b c=d> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueBefore(code) {\n    if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n      return nok(code);\n    }\n    if (code === 34 || code === 39) {\n      effects.consume(code);\n      marker = code;\n      return tagOpenAttributeValueQuoted;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueBefore;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenAttributeValueBefore;\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueUnquoted;\n  }\n\n  /**\n   * In double or single quoted attribute value.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueQuoted(code) {\n    if (code === marker) {\n      effects.consume(code);\n      marker = undefined;\n      return tagOpenAttributeValueQuotedAfter;\n    }\n    if (code === null) {\n      return nok(code);\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueQuoted;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueQuoted;\n  }\n\n  /**\n   * In unquoted attribute value.\n   *\n   * ```markdown\n   * > | a <b c=d> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueUnquoted(code) {\n    if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n      return nok(code);\n    }\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueUnquoted;\n  }\n\n  /**\n   * After double or single quoted attribute value, before whitespace or the end\n   * of the tag.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In certain circumstances of a tag where only an `>` is allowed.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function end(code) {\n    if (code === 62) {\n      effects.consume(code);\n      effects.exit(\"htmlTextData\");\n      effects.exit(\"htmlText\");\n      return ok;\n    }\n    return nok(code);\n  }\n\n  /**\n   * At eol.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   * > | a <!--a\n   *            ^\n   *   | b-->\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingBefore(code) {\n    effects.exit(\"htmlTextData\");\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return lineEndingAfter;\n  }\n\n  /**\n   * After eol, at optional whitespace.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   *   | a <!--a\n   * > | b-->\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingAfter(code) {\n    // Always populated by defaults.\n\n    return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n  }\n\n  /**\n   * After eol, after optional whitespace.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   *   | a <!--a\n   * > | b-->\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingAfterPrefix(code) {\n    effects.enter(\"htmlTextData\");\n    return returnState(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   Event,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n  name: 'labelEnd',\n  resolveAll: resolveAllLabelEnd,\n  resolveTo: resolveToLabelEnd,\n  tokenize: tokenizeLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n  tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n  tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n  tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n  let index = -1;\n  /** @type {Array<Event>} */\n  const newEvents = [];\n  while (++index < events.length) {\n    const token = events[index][1];\n    newEvents.push(events[index]);\n    if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n      // Remove the marker.\n      const offset = token.type === \"labelImage\" ? 4 : 2;\n      token.type = \"data\";\n      index += offset;\n    }\n  }\n\n  // If the events are equal, we don't have to copy newEvents to events\n  if (events.length !== newEvents.length) {\n    splice(events, 0, events.length, newEvents);\n  }\n  return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n  let index = events.length;\n  let offset = 0;\n  /** @type {Token} */\n  let token;\n  /** @type {number | undefined} */\n  let open;\n  /** @type {number | undefined} */\n  let close;\n  /** @type {Array<Event>} */\n  let media;\n\n  // Find an opening.\n  while (index--) {\n    token = events[index][1];\n    if (open) {\n      // If we see another link, or inactive link label, we’ve been here before.\n      if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n        break;\n      }\n\n      // Mark other link openings as inactive, as we can’t have links in\n      // links.\n      if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n        token._inactive = true;\n      }\n    } else if (close) {\n      if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n        open = index;\n        if (token.type !== \"labelLink\") {\n          offset = 2;\n          break;\n        }\n      }\n    } else if (token.type === \"labelEnd\") {\n      close = index;\n    }\n  }\n  const group = {\n    type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n    start: {\n      ...events[open][1].start\n    },\n    end: {\n      ...events[events.length - 1][1].end\n    }\n  };\n  const label = {\n    type: \"label\",\n    start: {\n      ...events[open][1].start\n    },\n    end: {\n      ...events[close][1].end\n    }\n  };\n  const text = {\n    type: \"labelText\",\n    start: {\n      ...events[open + offset + 2][1].end\n    },\n    end: {\n      ...events[close - 2][1].start\n    }\n  };\n  media = [['enter', group, context], ['enter', label, context]];\n\n  // Opening marker.\n  media = push(media, events.slice(open + 1, open + offset + 3));\n\n  // Text open.\n  media = push(media, [['enter', text, context]]);\n\n  // Always populated by defaults.\n\n  // Between.\n  media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n  // Text close, marker close, label close.\n  media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n  // Reference, resource, or so.\n  media = push(media, events.slice(close + 1));\n\n  // Media close.\n  media = push(media, [['exit', group, context]]);\n  splice(events, open, events.length, media);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n  const self = this;\n  let index = self.events.length;\n  /** @type {Token} */\n  let labelStart;\n  /** @type {boolean} */\n  let defined;\n\n  // Find an opening.\n  while (index--) {\n    if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n      labelStart = self.events[index][1];\n      break;\n    }\n  }\n  return start;\n\n  /**\n   * Start of label end.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *       ^\n   * > | [a][b] c\n   *       ^\n   * > | [a][] b\n   *       ^\n   * > | [a] b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // If there is not an okay opening.\n    if (!labelStart) {\n      return nok(code);\n    }\n\n    // If the corresponding label (link) start is marked as inactive,\n    // it means we’d be wrapping a link, like this:\n    //\n    // ```markdown\n    // > | a [b [c](d) e](f) g.\n    //                  ^\n    // ```\n    //\n    // We can’t have that, so it’s just balanced brackets.\n    if (labelStart._inactive) {\n      return labelEndNok(code);\n    }\n    defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n      start: labelStart.end,\n      end: self.now()\n    })));\n    effects.enter(\"labelEnd\");\n    effects.enter(\"labelMarker\");\n    effects.consume(code);\n    effects.exit(\"labelMarker\");\n    effects.exit(\"labelEnd\");\n    return after;\n  }\n\n  /**\n   * After `]`.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *       ^\n   * > | [a][b] c\n   *       ^\n   * > | [a][] b\n   *       ^\n   * > | [a] b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n    // an extension.\n\n    // Resource (`[asd](fgh)`)?\n    if (code === 40) {\n      return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n    }\n\n    // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n    if (code === 91) {\n      return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n    }\n\n    // Shortcut (`[asd]`) reference?\n    return defined ? labelEndOk(code) : labelEndNok(code);\n  }\n\n  /**\n   * After `]`, at `[`, but not at a full reference.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] b\n   *        ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceNotFull(code) {\n    return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n  }\n\n  /**\n   * Done, we found something.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *           ^\n   * > | [a][b] c\n   *           ^\n   * > | [a][] b\n   *          ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEndOk(code) {\n    // Note: `markdown-rs` does a bunch of stuff here.\n    return ok(code);\n  }\n\n  /**\n   * Done, it’s nothing.\n   *\n   * There was an okay opening, but we didn’t match anything.\n   *\n   * ```markdown\n   * > | [a](b c\n   *        ^\n   * > | [a][b c\n   *        ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEndNok(code) {\n    labelStart._balanced = true;\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n  return resourceStart;\n\n  /**\n   * At a resource.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceStart(code) {\n    effects.enter(\"resource\");\n    effects.enter(\"resourceMarker\");\n    effects.consume(code);\n    effects.exit(\"resourceMarker\");\n    return resourceBefore;\n  }\n\n  /**\n   * In resource, after `(`, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceBefore(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n  }\n\n  /**\n   * In resource, after optional whitespace, at `)` or a destination.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceOpen(code) {\n    if (code === 41) {\n      return resourceEnd(code);\n    }\n    return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n  }\n\n  /**\n   * In resource, after destination, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceDestinationAfter(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n  }\n\n  /**\n   * At invalid destination.\n   *\n   * ```markdown\n   * > | [a](<<) b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceDestinationMissing(code) {\n    return nok(code);\n  }\n\n  /**\n   * In resource, after destination and whitespace, at `(` or title.\n   *\n   * ```markdown\n   * > | [a](b ) c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceBetween(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n    }\n    return resourceEnd(code);\n  }\n\n  /**\n   * In resource, after title, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b \"c\") d\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceTitleAfter(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n  }\n\n  /**\n   * In resource, at `)`.\n   *\n   * ```markdown\n   * > | [a](b) d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceEnd(code) {\n    if (code === 41) {\n      effects.enter(\"resourceMarker\");\n      effects.consume(code);\n      effects.exit(\"resourceMarker\");\n      effects.exit(\"resource\");\n      return ok;\n    }\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n  const self = this;\n  return referenceFull;\n\n  /**\n   * In a reference (full), at the `[`.\n   *\n   * ```markdown\n   * > | [a][b] d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFull(code) {\n    return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n  }\n\n  /**\n   * In a reference (full), after `]`.\n   *\n   * ```markdown\n   * > | [a][b] d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFullAfter(code) {\n    return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n  }\n\n  /**\n   * In reference (full) that was missing.\n   *\n   * ```markdown\n   * > | [a][b d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFullMissing(code) {\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n  return referenceCollapsedStart;\n\n  /**\n   * In reference (collapsed), at `[`.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceCollapsedStart(code) {\n    // We only attempt a collapsed label if there’s a `[`.\n\n    effects.enter(\"reference\");\n    effects.enter(\"referenceMarker\");\n    effects.consume(code);\n    effects.exit(\"referenceMarker\");\n    return referenceCollapsedOpen;\n  }\n\n  /**\n   * In reference (collapsed), at `]`.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] d\n   *         ^\n   * ```\n   *\n   *  @type {State}\n   */\n  function referenceCollapsedOpen(code) {\n    if (code === 93) {\n      effects.enter(\"referenceMarker\");\n      effects.consume(code);\n      effects.exit(\"referenceMarker\");\n      effects.exit(\"reference\");\n      return ok;\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n  name: 'labelStartImage',\n  resolveAll: labelEnd.resolveAll,\n  tokenize: tokenizeLabelStartImage\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of label (image) start.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"labelImage\");\n    effects.enter(\"labelImageMarker\");\n    effects.consume(code);\n    effects.exit(\"labelImageMarker\");\n    return open;\n  }\n\n  /**\n   * After `!`, at `[`.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 91) {\n      effects.enter(\"labelMarker\");\n      effects.consume(code);\n      effects.exit(\"labelMarker\");\n      effects.exit(\"labelImage\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `![`.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *         ^\n   * ```\n   *\n   * This is needed in because, when GFM footnotes are enabled, images never\n   * form when started with a `^`.\n   * Instead, links form:\n   *\n   * ```markdown\n   * ![^a](b)\n   *\n   * ![^a][b]\n   *\n   * [b]: c\n   * ```\n   *\n   * ```html\n   * <p>!<a href=\\\"b\\\">^a</a></p>\n   * <p>!<a href=\\\"c\\\">^a</a></p>\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // To do: use a new field to do this, this is still needed for\n    // `micromark-extension-gfm-footnote`, but the `label-start-link`\n    // behavior isn’t.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n  name: 'labelStartLink',\n  resolveAll: labelEnd.resolveAll,\n  tokenize: tokenizeLabelStartLink\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of label (link) start.\n   *\n   * ```markdown\n   * > | a [b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"labelLink\");\n    effects.enter(\"labelMarker\");\n    effects.consume(code);\n    effects.exit(\"labelMarker\");\n    effects.exit(\"labelLink\");\n    return after;\n  }\n\n  /** @type {State} */\n  function after(code) {\n    // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n    // remove.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n  name: 'lineEnding',\n  tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, ok, \"linePrefix\");\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const thematicBreak = {\n  name: 'thematicBreak',\n  tokenize: tokenizeThematicBreak\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n  let size = 0;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of thematic break.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"thematicBreak\");\n    // To do: parse indent like `markdown-rs`.\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at marker.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    marker = code;\n    return atBreak(code);\n  }\n\n  /**\n   * After something, before something else.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.enter(\"thematicBreakSequence\");\n      return sequence(code);\n    }\n    if (size >= 3 && (code === null || markdownLineEnding(code))) {\n      effects.exit(\"thematicBreak\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In sequence.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequence(code) {\n    if (code === marker) {\n      effects.consume(code);\n      size++;\n      return sequence;\n    }\n    effects.exit(\"thematicBreakSequence\");\n    return markdownSpace(code) ? factorySpace(effects, atBreak, \"whitespace\")(code) : atBreak(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   Exiter,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiDigit, markdownSpace } from 'micromark-util-character';\nimport { blankLine } from './blank-line.js';\nimport { thematicBreak } from './thematic-break.js';\n\n/** @type {Construct} */\nexport const list = {\n  continuation: {\n    tokenize: tokenizeListContinuation\n  },\n  exit: tokenizeListEnd,\n  name: 'list',\n  tokenize: tokenizeListStart\n};\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n  partial: true,\n  tokenize: tokenizeListItemPrefixWhitespace\n};\n\n/** @type {Construct} */\nconst indentConstruct = {\n  partial: true,\n  tokenize: tokenizeIndent\n};\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n  const self = this;\n  const tail = self.events[self.events.length - 1];\n  let initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n  let size = 0;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? \"listUnordered\" : \"listOrdered\");\n    if (kind === \"listUnordered\" ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) {\n      if (!self.containerState.type) {\n        self.containerState.type = kind;\n        effects.enter(kind, {\n          _container: true\n        });\n      }\n      if (kind === \"listUnordered\") {\n        effects.enter(\"listItemPrefix\");\n        return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code);\n      }\n      if (!self.interrupt || code === 49) {\n        effects.enter(\"listItemPrefix\");\n        effects.enter(\"listItemValue\");\n        return inside(code);\n      }\n    }\n    return nok(code);\n  }\n\n  /** @type {State} */\n  function inside(code) {\n    if (asciiDigit(code) && ++size < 10) {\n      effects.consume(code);\n      return inside;\n    }\n    if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) {\n      effects.exit(\"listItemValue\");\n      return atMarker(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * @type {State}\n   **/\n  function atMarker(code) {\n    effects.enter(\"listItemMarker\");\n    effects.consume(code);\n    effects.exit(\"listItemMarker\");\n    self.containerState.marker = self.containerState.marker || code;\n    return effects.check(blankLine,\n    // Can’t be empty when interrupting.\n    self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix));\n  }\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.initialBlankLine = true;\n    initialSize++;\n    return endOfPrefix(code);\n  }\n\n  /** @type {State} */\n  function otherPrefix(code) {\n    if (markdownSpace(code)) {\n      effects.enter(\"listItemPrefixWhitespace\");\n      effects.consume(code);\n      effects.exit(\"listItemPrefixWhitespace\");\n      return endOfPrefix;\n    }\n    return nok(code);\n  }\n\n  /** @type {State} */\n  function endOfPrefix(code) {\n    self.containerState.size = initialSize + self.sliceSerialize(effects.exit(\"listItemPrefix\"), true).length;\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n  const self = this;\n  self.containerState._closeFlow = undefined;\n  return effects.check(blankLine, onBlank, notBlank);\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine;\n\n    // We have a blank line.\n    // Still, try to consume at most the items size.\n    return factorySpace(effects, ok, \"listItemIndent\", self.containerState.size + 1)(code);\n  }\n\n  /** @type {State} */\n  function notBlank(code) {\n    if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n      self.containerState.furtherBlankLines = undefined;\n      self.containerState.initialBlankLine = undefined;\n      return notInCurrentItem(code);\n    }\n    self.containerState.furtherBlankLines = undefined;\n    self.containerState.initialBlankLine = undefined;\n    return effects.attempt(indentConstruct, ok, notInCurrentItem)(code);\n  }\n\n  /** @type {State} */\n  function notInCurrentItem(code) {\n    // While we do continue, we signal that the flow should be closed.\n    self.containerState._closeFlow = true;\n    // As we’re closing flow, we’re no longer interrupting.\n    self.interrupt = undefined;\n    // Always populated by defaults.\n\n    return factorySpace(effects, effects.attempt(list, ok, nok), \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this;\n  return factorySpace(effects, afterPrefix, \"listItemIndent\", self.containerState.size + 1);\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"listItemIndent\" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Exiter}\n */\nfunction tokenizeListEnd(effects) {\n  effects.exit(this.containerState.type);\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n  const self = this;\n\n  // Always populated by defaults.\n\n  return factorySpace(effects, afterPrefix, \"listItemPrefixWhitespace\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1);\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return !markdownSpace(code) && tail && tail[1].type === \"listItemPrefixWhitespace\" ? ok(code) : nok(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const setextUnderline = {\n  name: 'setextUnderline',\n  resolveTo: resolveToSetextUnderline,\n  tokenize: tokenizeSetextUnderline\n};\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n  // To do: resolve like `markdown-rs`.\n  let index = events.length;\n  /** @type {number | undefined} */\n  let content;\n  /** @type {number | undefined} */\n  let text;\n  /** @type {number | undefined} */\n  let definition;\n\n  // Find the opening of the content.\n  // It’ll always exist: we don’t tokenize if it isn’t there.\n  while (index--) {\n    if (events[index][0] === 'enter') {\n      if (events[index][1].type === \"content\") {\n        content = index;\n        break;\n      }\n      if (events[index][1].type === \"paragraph\") {\n        text = index;\n      }\n    }\n    // Exit\n    else {\n      if (events[index][1].type === \"content\") {\n        // Remove the content end (if needed we’ll add it later)\n        events.splice(index, 1);\n      }\n      if (!definition && events[index][1].type === \"definition\") {\n        definition = index;\n      }\n    }\n  }\n  const heading = {\n    type: \"setextHeading\",\n    start: {\n      ...events[text][1].start\n    },\n    end: {\n      ...events[events.length - 1][1].end\n    }\n  };\n\n  // Change the paragraph to setext heading text.\n  events[text][1].type = \"setextHeadingText\";\n\n  // If we have definitions in the content, we’ll keep on having content,\n  // but we need move it.\n  if (definition) {\n    events.splice(text, 0, ['enter', heading, context]);\n    events.splice(definition + 1, 0, ['exit', events[content][1], context]);\n    events[content][1].end = {\n      ...events[definition][1].end\n    };\n  } else {\n    events[content][1] = heading;\n  }\n\n  // Add the heading exit at the end.\n  events.push(['exit', heading, context]);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n  const self = this;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * At start of heading (setext) underline.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    let index = self.events.length;\n    /** @type {boolean | undefined} */\n    let paragraph;\n    // Find an opening.\n    while (index--) {\n      // Skip enter/exit of line ending, line prefix, and content.\n      // We can now either have a definition or a paragraph.\n      if (self.events[index][1].type !== \"lineEnding\" && self.events[index][1].type !== \"linePrefix\" && self.events[index][1].type !== \"content\") {\n        paragraph = self.events[index][1].type === \"paragraph\";\n        break;\n      }\n    }\n\n    // To do: handle lazy/pierce like `markdown-rs`.\n    // To do: parse indent like `markdown-rs`.\n    if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n      effects.enter(\"setextHeadingLine\");\n      marker = code;\n      return before(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * After optional whitespace, at `-` or `=`.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"setextHeadingLineSequence\");\n    return inside(code);\n  }\n\n  /**\n   * In sequence.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker) {\n      effects.consume(code);\n      return inside;\n    }\n    effects.exit(\"setextHeadingLineSequence\");\n    return markdownSpace(code) ? factorySpace(effects, after, \"lineSuffix\")(code) : after(code);\n  }\n\n  /**\n   * After sequence, after optional whitespace.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"setextHeadingLine\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   InitialConstruct,\n *   Initializer,\n *   State,\n *   TokenizeContext\n * } from 'micromark-util-types'\n */\n\nimport { blankLine, content } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const flow = {\n  tokenize: initializeFlow\n};\n\n/**\n * @this {TokenizeContext}\n *   Self.\n * @type {Initializer}\n *   Initializer.\n */\nfunction initializeFlow(effects) {\n  const self = this;\n  const initial = effects.attempt(\n  // Try to parse a blank line.\n  blankLine, atBlankEnding,\n  // Try to parse initial flow (essentially, only code).\n  effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), \"linePrefix\")));\n  return initial;\n\n  /** @type {State} */\n  function atBlankEnding(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEndingBlank\");\n    effects.consume(code);\n    effects.exit(\"lineEndingBlank\");\n    self.currentConstruct = undefined;\n    return initial;\n  }\n\n  /** @type {State} */\n  function afterConstruct(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    self.currentConstruct = undefined;\n    return initial;\n  }\n}","/**\n * @import {\n *   Code,\n *   InitialConstruct,\n *   Initializer,\n *   Resolver,\n *   State,\n *   TokenizeContext\n * } from 'micromark-util-types'\n */\n\nexport const resolver = {\n  resolveAll: createResolver()\n};\nexport const string = initializeFactory('string');\nexport const text = initializeFactory('text');\n\n/**\n * @param {'string' | 'text'} field\n *   Field.\n * @returns {InitialConstruct}\n *   Construct.\n */\nfunction initializeFactory(field) {\n  return {\n    resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined),\n    tokenize: initializeText\n  };\n\n  /**\n   * @this {TokenizeContext}\n   *   Context.\n   * @type {Initializer}\n   */\n  function initializeText(effects) {\n    const self = this;\n    const constructs = this.parser.constructs[field];\n    const text = effects.attempt(constructs, start, notText);\n    return start;\n\n    /** @type {State} */\n    function start(code) {\n      return atBreak(code) ? text(code) : notText(code);\n    }\n\n    /** @type {State} */\n    function notText(code) {\n      if (code === null) {\n        effects.consume(code);\n        return;\n      }\n      effects.enter(\"data\");\n      effects.consume(code);\n      return data;\n    }\n\n    /** @type {State} */\n    function data(code) {\n      if (atBreak(code)) {\n        effects.exit(\"data\");\n        return text(code);\n      }\n\n      // Data.\n      effects.consume(code);\n      return data;\n    }\n\n    /**\n     * @param {Code} code\n     *   Code.\n     * @returns {boolean}\n     *   Whether the code is a break.\n     */\n    function atBreak(code) {\n      if (code === null) {\n        return true;\n      }\n      const list = constructs[code];\n      let index = -1;\n      if (list) {\n        // Always populated by defaults.\n\n        while (++index < list.length) {\n          const item = list[index];\n          if (!item.previous || item.previous.call(self, self.previous)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n  }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n *   Resolver.\n * @returns {Resolver}\n *   Resolver.\n */\nfunction createResolver(extraResolver) {\n  return resolveAllText;\n\n  /** @type {Resolver} */\n  function resolveAllText(events, context) {\n    let index = -1;\n    /** @type {number | undefined} */\n    let enter;\n\n    // A rather boring computation (to merge adjacent `data` events) which\n    // improves mm performance by 29%.\n    while (++index <= events.length) {\n      if (enter === undefined) {\n        if (events[index] && events[index][1].type === \"data\") {\n          enter = index;\n          index++;\n        }\n      } else if (!events[index] || events[index][1].type !== \"data\") {\n        // Don’t do anything if there is one data token.\n        if (index !== enter + 2) {\n          events[enter][1].end = events[index - 1][1].end;\n          events.splice(enter + 2, index - enter - 2);\n          index = enter + 2;\n        }\n        enter = undefined;\n      }\n    }\n    return extraResolver ? extraResolver(events, context) : events;\n  }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n  let eventIndex = 0; // Skip first.\n\n  while (++eventIndex <= events.length) {\n    if ((eventIndex === events.length || events[eventIndex][1].type === \"lineEnding\") && events[eventIndex - 1][1].type === \"data\") {\n      const data = events[eventIndex - 1][1];\n      const chunks = context.sliceStream(data);\n      let index = chunks.length;\n      let bufferIndex = -1;\n      let size = 0;\n      /** @type {boolean | undefined} */\n      let tabs;\n      while (index--) {\n        const chunk = chunks[index];\n        if (typeof chunk === 'string') {\n          bufferIndex = chunk.length;\n          while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n            size++;\n            bufferIndex--;\n          }\n          if (bufferIndex) break;\n          bufferIndex = -1;\n        }\n        // Number\n        else if (chunk === -2) {\n          tabs = true;\n          size++;\n        } else if (chunk === -1) {\n          // Empty\n        } else {\n          // Replacement character, exit.\n          index++;\n          break;\n        }\n      }\n      if (size) {\n        const token = {\n          type: eventIndex === events.length || tabs || size < 2 ? \"lineSuffix\" : \"hardBreakTrailing\",\n          start: {\n            _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex,\n            _index: data.start._index + index,\n            line: data.end.line,\n            column: data.end.column - size,\n            offset: data.end.offset - size\n          },\n          end: {\n            ...data.end\n          }\n        };\n        data.end = {\n          ...token.start\n        };\n        if (data.start.offset === data.end.offset) {\n          Object.assign(data, token);\n        } else {\n          events.splice(eventIndex, 0, ['enter', token, context], ['exit', token, context]);\n          eventIndex += 2;\n        }\n      }\n      eventIndex++;\n    }\n  }\n  return events;\n}","/**\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n  [42]: list,\n  [43]: list,\n  [45]: list,\n  [48]: list,\n  [49]: list,\n  [50]: list,\n  [51]: list,\n  [52]: list,\n  [53]: list,\n  [54]: list,\n  [55]: list,\n  [56]: list,\n  [57]: list,\n  [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n  [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n  [-2]: codeIndented,\n  [-1]: codeIndented,\n  [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n  [35]: headingAtx,\n  [42]: thematicBreak,\n  [45]: [setextUnderline, thematicBreak],\n  [60]: htmlFlow,\n  [61]: setextUnderline,\n  [95]: thematicBreak,\n  [96]: codeFenced,\n  [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n  [38]: characterReference,\n  [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n  [-5]: lineEnding,\n  [-4]: lineEnding,\n  [-3]: lineEnding,\n  [33]: labelStartImage,\n  [38]: characterReference,\n  [42]: attention,\n  [60]: [autolink, htmlText],\n  [91]: labelStartLink,\n  [92]: [hardBreakEscape, characterEscape],\n  [93]: labelEnd,\n  [95]: attention,\n  [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n  null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n  null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n  null: []\n};","/**\n * @import {\n *   Chunk,\n *   Code,\n *   ConstructRecord,\n *   Construct,\n *   Effects,\n *   InitialConstruct,\n *   ParseContext,\n *   Point,\n *   State,\n *   TokenizeContext,\n *   Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @callback Restore\n *   Restore the state.\n * @returns {undefined}\n *   Nothing.\n *\n * @typedef Info\n *   Info.\n * @property {Restore} restore\n *   Restore.\n * @property {number} from\n *   From.\n *\n * @callback ReturnHandle\n *   Handle a successful run.\n * @param {Construct} construct\n *   Construct.\n * @param {Info} info\n *   Info.\n * @returns {undefined}\n *   Nothing.\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n *   Parser.\n * @param {InitialConstruct} initialize\n *   Construct.\n * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from]\n *   Point (optional).\n * @returns {TokenizeContext}\n *   Context.\n */\nexport function createTokenizer(parser, initialize, from) {\n  /** @type {Point} */\n  let point = {\n    _bufferIndex: -1,\n    _index: 0,\n    line: from && from.line || 1,\n    column: from && from.column || 1,\n    offset: from && from.offset || 0\n  };\n  /** @type {Record<string, number>} */\n  const columnStart = {};\n  /** @type {Array<Construct>} */\n  const resolveAllConstructs = [];\n  /** @type {Array<Chunk>} */\n  let chunks = [];\n  /** @type {Array<Token>} */\n  let stack = [];\n  /** @type {boolean | undefined} */\n  let consumed = true;\n\n  /**\n   * Tools used for tokenizing.\n   *\n   * @type {Effects}\n   */\n  const effects = {\n    attempt: constructFactory(onsuccessfulconstruct),\n    check: constructFactory(onsuccessfulcheck),\n    consume,\n    enter,\n    exit,\n    interrupt: constructFactory(onsuccessfulcheck, {\n      interrupt: true\n    })\n  };\n\n  /**\n   * State and tools for resolving and serializing.\n   *\n   * @type {TokenizeContext}\n   */\n  const context = {\n    code: null,\n    containerState: {},\n    defineSkip,\n    events: [],\n    now,\n    parser,\n    previous: null,\n    sliceSerialize,\n    sliceStream,\n    write\n  };\n\n  /**\n   * The state function.\n   *\n   * @type {State | undefined}\n   */\n  let state = initialize.tokenize.call(context, effects);\n\n  /**\n   * Track which character we expect to be consumed, to catch bugs.\n   *\n   * @type {Code}\n   */\n  let expectedCode;\n  if (initialize.resolveAll) {\n    resolveAllConstructs.push(initialize);\n  }\n  return context;\n\n  /** @type {TokenizeContext['write']} */\n  function write(slice) {\n    chunks = push(chunks, slice);\n    main();\n\n    // Exit if we’re not done, resolve might change stuff.\n    if (chunks[chunks.length - 1] !== null) {\n      return [];\n    }\n    addResult(initialize, 0);\n\n    // Otherwise, resolve, and exit.\n    context.events = resolveAll(resolveAllConstructs, context.events, context);\n    return context.events;\n  }\n\n  //\n  // Tools.\n  //\n\n  /** @type {TokenizeContext['sliceSerialize']} */\n  function sliceSerialize(token, expandTabs) {\n    return serializeChunks(sliceStream(token), expandTabs);\n  }\n\n  /** @type {TokenizeContext['sliceStream']} */\n  function sliceStream(token) {\n    return sliceChunks(chunks, token);\n  }\n\n  /** @type {TokenizeContext['now']} */\n  function now() {\n    // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n    const {\n      _bufferIndex,\n      _index,\n      line,\n      column,\n      offset\n    } = point;\n    return {\n      _bufferIndex,\n      _index,\n      line,\n      column,\n      offset\n    };\n  }\n\n  /** @type {TokenizeContext['defineSkip']} */\n  function defineSkip(value) {\n    columnStart[value.line] = value.column;\n    accountForPotentialSkip();\n  }\n\n  //\n  // State management.\n  //\n\n  /**\n   * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n   * `consume`).\n   * Here is where we walk through the chunks, which either include strings of\n   * several characters, or numerical character codes.\n   * The reason to do this in a loop instead of a call is so the stack can\n   * drain.\n   *\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function main() {\n    /** @type {number} */\n    let chunkIndex;\n    while (point._index < chunks.length) {\n      const chunk = chunks[point._index];\n\n      // If we’re in a buffer chunk, loop through it.\n      if (typeof chunk === 'string') {\n        chunkIndex = point._index;\n        if (point._bufferIndex < 0) {\n          point._bufferIndex = 0;\n        }\n        while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n          go(chunk.charCodeAt(point._bufferIndex));\n        }\n      } else {\n        go(chunk);\n      }\n    }\n  }\n\n  /**\n   * Deal with one code.\n   *\n   * @param {Code} code\n   *   Code.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function go(code) {\n    consumed = undefined;\n    expectedCode = code;\n    state = state(code);\n  }\n\n  /** @type {Effects['consume']} */\n  function consume(code) {\n    if (markdownLineEnding(code)) {\n      point.line++;\n      point.column = 1;\n      point.offset += code === -3 ? 2 : 1;\n      accountForPotentialSkip();\n    } else if (code !== -1) {\n      point.column++;\n      point.offset++;\n    }\n\n    // Not in a string chunk.\n    if (point._bufferIndex < 0) {\n      point._index++;\n    } else {\n      point._bufferIndex++;\n\n      // At end of string chunk.\n      if (point._bufferIndex ===\n      // Points w/ non-negative `_bufferIndex` reference\n      // strings.\n      /** @type {string} */\n      chunks[point._index].length) {\n        point._bufferIndex = -1;\n        point._index++;\n      }\n    }\n\n    // Expose the previous character.\n    context.previous = code;\n\n    // Mark as consumed.\n    consumed = true;\n  }\n\n  /** @type {Effects['enter']} */\n  function enter(type, fields) {\n    /** @type {Token} */\n    // @ts-expect-error Patch instead of assign required fields to help GC.\n    const token = fields || {};\n    token.type = type;\n    token.start = now();\n    context.events.push(['enter', token, context]);\n    stack.push(token);\n    return token;\n  }\n\n  /** @type {Effects['exit']} */\n  function exit(type) {\n    const token = stack.pop();\n    token.end = now();\n    context.events.push(['exit', token, context]);\n    return token;\n  }\n\n  /**\n   * Use results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulconstruct(construct, info) {\n    addResult(construct, info.from);\n  }\n\n  /**\n   * Discard results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulcheck(_, info) {\n    info.restore();\n  }\n\n  /**\n   * Factory to attempt/check/interrupt.\n   *\n   * @param {ReturnHandle} onreturn\n   *   Callback.\n   * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n   *   Fields.\n   */\n  function constructFactory(onreturn, fields) {\n    return hook;\n\n    /**\n     * Handle either an object mapping codes to constructs, a list of\n     * constructs, or a single construct.\n     *\n     * @param {Array<Construct> | ConstructRecord | Construct} constructs\n     *   Constructs.\n     * @param {State} returnState\n     *   State.\n     * @param {State | undefined} [bogusState]\n     *   State.\n     * @returns {State}\n     *   State.\n     */\n    function hook(constructs, returnState, bogusState) {\n      /** @type {ReadonlyArray<Construct>} */\n      let listOfConstructs;\n      /** @type {number} */\n      let constructIndex;\n      /** @type {Construct} */\n      let currentConstruct;\n      /** @type {Info} */\n      let info;\n      return Array.isArray(constructs) ? /* c8 ignore next 1 */\n      handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n      // Looks like a construct.\n      handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs);\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ConstructRecord} map\n       *   Constructs.\n       * @returns {State}\n       *   State.\n       */\n      function handleMapOfConstructs(map) {\n        return start;\n\n        /** @type {State} */\n        function start(code) {\n          const left = code !== null && map[code];\n          const all = code !== null && map.null;\n          const list = [\n          // To do: add more extension tests.\n          /* c8 ignore next 2 */\n          ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n          return handleListOfConstructs(list)(code);\n        }\n      }\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ReadonlyArray<Construct>} list\n       *   Constructs.\n       * @returns {State}\n       *   State.\n       */\n      function handleListOfConstructs(list) {\n        listOfConstructs = list;\n        constructIndex = 0;\n        if (list.length === 0) {\n          return bogusState;\n        }\n        return handleConstruct(list[constructIndex]);\n      }\n\n      /**\n       * Handle a single construct.\n       *\n       * @param {Construct} construct\n       *   Construct.\n       * @returns {State}\n       *   State.\n       */\n      function handleConstruct(construct) {\n        return start;\n\n        /** @type {State} */\n        function start(code) {\n          // To do: not needed to store if there is no bogus state, probably?\n          // Currently doesn’t work because `inspect` in document does a check\n          // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n          // by not storing.\n          info = store();\n          currentConstruct = construct;\n          if (!construct.partial) {\n            context.currentConstruct = construct;\n          }\n\n          // Always populated by defaults.\n\n          if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n            return nok(code);\n          }\n          return construct.tokenize.call(\n          // If we do have fields, create an object w/ `context` as its\n          // prototype.\n          // This allows a “live binding”, which is needed for `interrupt`.\n          fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n        }\n      }\n\n      /** @type {State} */\n      function ok(code) {\n        consumed = true;\n        onreturn(currentConstruct, info);\n        return returnState;\n      }\n\n      /** @type {State} */\n      function nok(code) {\n        consumed = true;\n        info.restore();\n        if (++constructIndex < listOfConstructs.length) {\n          return handleConstruct(listOfConstructs[constructIndex]);\n        }\n        return bogusState;\n      }\n    }\n  }\n\n  /**\n   * @param {Construct} construct\n   *   Construct.\n   * @param {number} from\n   *   From.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function addResult(construct, from) {\n    if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n      resolveAllConstructs.push(construct);\n    }\n    if (construct.resolve) {\n      splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n    }\n    if (construct.resolveTo) {\n      context.events = construct.resolveTo(context.events, context);\n    }\n  }\n\n  /**\n   * Store state.\n   *\n   * @returns {Info}\n   *   Info.\n   */\n  function store() {\n    const startPoint = now();\n    const startPrevious = context.previous;\n    const startCurrentConstruct = context.currentConstruct;\n    const startEventsIndex = context.events.length;\n    const startStack = Array.from(stack);\n    return {\n      from: startEventsIndex,\n      restore\n    };\n\n    /**\n     * Restore state.\n     *\n     * @returns {undefined}\n     *   Nothing.\n     */\n    function restore() {\n      point = startPoint;\n      context.previous = startPrevious;\n      context.currentConstruct = startCurrentConstruct;\n      context.events.length = startEventsIndex;\n      stack = startStack;\n      accountForPotentialSkip();\n    }\n  }\n\n  /**\n   * Move the current point a bit forward in the line when it’s on a column\n   * skip.\n   *\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function accountForPotentialSkip() {\n    if (point.line in columnStart && point.column < 2) {\n      point.column = columnStart[point.line];\n      point.offset += columnStart[point.line] - 1;\n    }\n  }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n *   Chunks.\n * @param {Pick<Token, 'end' | 'start'>} token\n *   Token.\n * @returns {Array<Chunk>}\n *   Chunks.\n */\nfunction sliceChunks(chunks, token) {\n  const startIndex = token.start._index;\n  const startBufferIndex = token.start._bufferIndex;\n  const endIndex = token.end._index;\n  const endBufferIndex = token.end._bufferIndex;\n  /** @type {Array<Chunk>} */\n  let view;\n  if (startIndex === endIndex) {\n    // @ts-expect-error `_bufferIndex` is used on string chunks.\n    view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n  } else {\n    view = chunks.slice(startIndex, endIndex);\n    if (startBufferIndex > -1) {\n      const head = view[0];\n      if (typeof head === 'string') {\n        view[0] = head.slice(startBufferIndex);\n      } else {\n        view.shift();\n      }\n    }\n    if (endBufferIndex > 0) {\n      // @ts-expect-error `_bufferIndex` is used on string chunks.\n      view.push(chunks[endIndex].slice(0, endBufferIndex));\n    }\n  }\n  return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n *   Chunks.\n * @param {boolean | undefined} [expandTabs=false]\n *   Whether to expand tabs (default: `false`).\n * @returns {string}\n *   Result.\n */\nfunction serializeChunks(chunks, expandTabs) {\n  let index = -1;\n  /** @type {Array<string>} */\n  const result = [];\n  /** @type {boolean | undefined} */\n  let atTab;\n  while (++index < chunks.length) {\n    const chunk = chunks[index];\n    /** @type {string} */\n    let value;\n    if (typeof chunk === 'string') {\n      value = chunk;\n    } else switch (chunk) {\n      case -5:\n        {\n          value = \"\\r\";\n          break;\n        }\n      case -4:\n        {\n          value = \"\\n\";\n          break;\n        }\n      case -3:\n        {\n          value = \"\\r\" + \"\\n\";\n          break;\n        }\n      case -2:\n        {\n          value = expandTabs ? \" \" : \"\\t\";\n          break;\n        }\n      case -1:\n        {\n          if (!expandTabs && atTab) continue;\n          value = \" \";\n          break;\n        }\n      default:\n        {\n          // Currently only replacement character.\n          value = String.fromCharCode(chunk);\n        }\n    }\n    atTab = chunk === -2;\n    result.push(value);\n  }\n  return result.join('');\n}","/**\n * @import {\n *   Create,\n *   FullNormalizedExtension,\n *   InitialConstruct,\n *   ParseContext,\n *   ParseOptions\n * } from 'micromark-util-types'\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { string, text } from './initialize/text.js';\nimport * as defaultConstructs from './constructs.js';\nimport { createTokenizer } from './create-tokenizer.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ParseContext}\n *   Parser.\n */\nexport function parse(options) {\n  const settings = options || {};\n  const constructs = /** @type {FullNormalizedExtension} */\n  combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n  /** @type {ParseContext} */\n  const parser = {\n    constructs,\n    content: create(content),\n    defined: [],\n    document: create(document),\n    flow: create(flow),\n    lazy: {},\n    string: create(string),\n    text: create(text)\n  };\n  return parser;\n\n  /**\n   * @param {InitialConstruct} initial\n   *   Construct to start with.\n   * @returns {Create}\n   *   Create a tokenizer.\n   */\n  function create(initial) {\n    return creator;\n    /** @type {Create} */\n    function creator(from) {\n      return createTokenizer(parser, initial, from);\n    }\n  }\n}","/**\n * @import {Event} from 'micromark-util-types'\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array<Event>} events\n *   Events.\n * @returns {Array<Event>}\n *   Events.\n */\nexport function postprocess(events) {\n  while (!subtokenize(events)) {\n    // Empty\n  }\n  return events;\n}","/**\n * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'\n */\n\n/**\n * @callback Preprocessor\n *   Preprocess a value.\n * @param {Value} value\n *   Value.\n * @param {Encoding | null | undefined} [encoding]\n *   Encoding when `value` is a typed array (optional).\n * @param {boolean | null | undefined} [end=false]\n *   Whether this is the last chunk (default: `false`).\n * @returns {Array<Chunk>}\n *   Chunks.\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n *   Preprocess a value.\n */\nexport function preprocess() {\n  let column = 1;\n  let buffer = '';\n  /** @type {boolean | undefined} */\n  let start = true;\n  /** @type {boolean | undefined} */\n  let atCarriageReturn;\n  return preprocessor;\n\n  /** @type {Preprocessor} */\n  // eslint-disable-next-line complexity\n  function preprocessor(value, encoding, end) {\n    /** @type {Array<Chunk>} */\n    const chunks = [];\n    /** @type {RegExpMatchArray | null} */\n    let match;\n    /** @type {number} */\n    let next;\n    /** @type {number} */\n    let startPosition;\n    /** @type {number} */\n    let endPosition;\n    /** @type {Code} */\n    let code;\n    value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value));\n    startPosition = 0;\n    buffer = '';\n    if (start) {\n      // To do: `markdown-rs` actually parses BOMs (byte order mark).\n      if (value.charCodeAt(0) === 65279) {\n        startPosition++;\n      }\n      start = undefined;\n    }\n    while (startPosition < value.length) {\n      search.lastIndex = startPosition;\n      match = search.exec(value);\n      endPosition = match && match.index !== undefined ? match.index : value.length;\n      code = value.charCodeAt(endPosition);\n      if (!match) {\n        buffer = value.slice(startPosition);\n        break;\n      }\n      if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n        chunks.push(-3);\n        atCarriageReturn = undefined;\n      } else {\n        if (atCarriageReturn) {\n          chunks.push(-5);\n          atCarriageReturn = undefined;\n        }\n        if (startPosition < endPosition) {\n          chunks.push(value.slice(startPosition, endPosition));\n          column += endPosition - startPosition;\n        }\n        switch (code) {\n          case 0:\n            {\n              chunks.push(65533);\n              column++;\n              break;\n            }\n          case 9:\n            {\n              next = Math.ceil(column / 4) * 4;\n              chunks.push(-2);\n              while (column++ < next) chunks.push(-1);\n              break;\n            }\n          case 10:\n            {\n              chunks.push(-4);\n              column = 1;\n              break;\n            }\n          default:\n            {\n              atCarriageReturn = true;\n              column = 1;\n            }\n        }\n      }\n      startPosition = endPosition + 1;\n    }\n    if (end) {\n      if (atCarriageReturn) chunks.push(-5);\n      if (buffer) chunks.push(buffer);\n      chunks.push(null);\n    }\n    return chunks;\n  }\n}","import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n *   Value to decode.\n * @returns {string}\n *   Decoded value.\n */\nexport function decodeString(value) {\n  return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n *   Match.\n * @param {string} $1\n *   Character escape.\n * @param {string} $2\n *   Character reference.\n * @returns {string}\n *   Decoded value\n */\nfunction decode($0, $1, $2) {\n  if ($1) {\n    // Escape.\n    return $1;\n  }\n\n  // Reference.\n  const head = $2.charCodeAt(0);\n  if (head === 35) {\n    const head = $2.charCodeAt(1);\n    const hex = head === 120 || head === 88;\n    return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n  }\n  return decodeNamedCharacterReference($2) || $0;\n}","/**\n * @import {\n *   Break,\n *   Blockquote,\n *   Code,\n *   Definition,\n *   Emphasis,\n *   Heading,\n *   Html,\n *   Image,\n *   InlineCode,\n *   Link,\n *   ListItem,\n *   List,\n *   Nodes,\n *   Paragraph,\n *   PhrasingContent,\n *   ReferenceType,\n *   Root,\n *   Strong,\n *   Text,\n *   ThematicBreak\n * } from 'mdast'\n * @import {\n *   Encoding,\n *   Event,\n *   Token,\n *   Value\n * } from 'micromark-util-types'\n * @import {Point} from 'unist'\n * @import {\n *   CompileContext,\n *   CompileData,\n *   Config,\n *   Extension,\n *   Handle,\n *   OnEnterError,\n *   Options\n * } from './types.js'\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n *   Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n *   Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {Root}\n *   mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n  if (typeof encoding !== 'string') {\n    options = encoding;\n    encoding = undefined;\n  }\n  return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n  /** @type {Config} */\n  const config = {\n    transforms: [],\n    canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n    enter: {\n      autolink: opener(link),\n      autolinkProtocol: onenterdata,\n      autolinkEmail: onenterdata,\n      atxHeading: opener(heading),\n      blockQuote: opener(blockQuote),\n      characterEscape: onenterdata,\n      characterReference: onenterdata,\n      codeFenced: opener(codeFlow),\n      codeFencedFenceInfo: buffer,\n      codeFencedFenceMeta: buffer,\n      codeIndented: opener(codeFlow, buffer),\n      codeText: opener(codeText, buffer),\n      codeTextData: onenterdata,\n      data: onenterdata,\n      codeFlowValue: onenterdata,\n      definition: opener(definition),\n      definitionDestinationString: buffer,\n      definitionLabelString: buffer,\n      definitionTitleString: buffer,\n      emphasis: opener(emphasis),\n      hardBreakEscape: opener(hardBreak),\n      hardBreakTrailing: opener(hardBreak),\n      htmlFlow: opener(html, buffer),\n      htmlFlowData: onenterdata,\n      htmlText: opener(html, buffer),\n      htmlTextData: onenterdata,\n      image: opener(image),\n      label: buffer,\n      link: opener(link),\n      listItem: opener(listItem),\n      listItemValue: onenterlistitemvalue,\n      listOrdered: opener(list, onenterlistordered),\n      listUnordered: opener(list),\n      paragraph: opener(paragraph),\n      reference: onenterreference,\n      referenceString: buffer,\n      resourceDestinationString: buffer,\n      resourceTitleString: buffer,\n      setextHeading: opener(heading),\n      strong: opener(strong),\n      thematicBreak: opener(thematicBreak)\n    },\n    exit: {\n      atxHeading: closer(),\n      atxHeadingSequence: onexitatxheadingsequence,\n      autolink: closer(),\n      autolinkEmail: onexitautolinkemail,\n      autolinkProtocol: onexitautolinkprotocol,\n      blockQuote: closer(),\n      characterEscapeValue: onexitdata,\n      characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n      characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n      characterReferenceValue: onexitcharacterreferencevalue,\n      characterReference: onexitcharacterreference,\n      codeFenced: closer(onexitcodefenced),\n      codeFencedFence: onexitcodefencedfence,\n      codeFencedFenceInfo: onexitcodefencedfenceinfo,\n      codeFencedFenceMeta: onexitcodefencedfencemeta,\n      codeFlowValue: onexitdata,\n      codeIndented: closer(onexitcodeindented),\n      codeText: closer(onexitcodetext),\n      codeTextData: onexitdata,\n      data: onexitdata,\n      definition: closer(),\n      definitionDestinationString: onexitdefinitiondestinationstring,\n      definitionLabelString: onexitdefinitionlabelstring,\n      definitionTitleString: onexitdefinitiontitlestring,\n      emphasis: closer(),\n      hardBreakEscape: closer(onexithardbreak),\n      hardBreakTrailing: closer(onexithardbreak),\n      htmlFlow: closer(onexithtmlflow),\n      htmlFlowData: onexitdata,\n      htmlText: closer(onexithtmltext),\n      htmlTextData: onexitdata,\n      image: closer(onexitimage),\n      label: onexitlabel,\n      labelText: onexitlabeltext,\n      lineEnding: onexitlineending,\n      link: closer(onexitlink),\n      listItem: closer(),\n      listOrdered: closer(),\n      listUnordered: closer(),\n      paragraph: closer(),\n      referenceString: onexitreferencestring,\n      resourceDestinationString: onexitresourcedestinationstring,\n      resourceTitleString: onexitresourcetitlestring,\n      resource: onexitresource,\n      setextHeading: closer(onexitsetextheading),\n      setextHeadingLineSequence: onexitsetextheadinglinesequence,\n      setextHeadingText: onexitsetextheadingtext,\n      strong: closer(),\n      thematicBreak: closer()\n    }\n  };\n  configure(config, (options || {}).mdastExtensions || []);\n\n  /** @type {CompileData} */\n  const data = {};\n  return compile;\n\n  /**\n   * Turn micromark events into an mdast tree.\n   *\n   * @param {Array<Event>} events\n   *   Events.\n   * @returns {Root}\n   *   mdast tree.\n   */\n  function compile(events) {\n    /** @type {Root} */\n    let tree = {\n      type: 'root',\n      children: []\n    };\n    /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n    const context = {\n      stack: [tree],\n      tokenStack: [],\n      config,\n      enter,\n      exit,\n      buffer,\n      resume,\n      data\n    };\n    /** @type {Array<number>} */\n    const listStack = [];\n    let index = -1;\n    while (++index < events.length) {\n      // We preprocess lists to add `listItem` tokens, and to infer whether\n      // items the list itself are spread out.\n      if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n        if (events[index][0] === 'enter') {\n          listStack.push(index);\n        } else {\n          const tail = listStack.pop();\n          index = prepareList(events, tail, index);\n        }\n      }\n    }\n    index = -1;\n    while (++index < events.length) {\n      const handler = config[events[index][0]];\n      if (own.call(handler, events[index][1].type)) {\n        handler[events[index][1].type].call(Object.assign({\n          sliceSerialize: events[index][2].sliceSerialize\n        }, context), events[index][1]);\n      }\n    }\n\n    // Handle tokens still being open.\n    if (context.tokenStack.length > 0) {\n      const tail = context.tokenStack[context.tokenStack.length - 1];\n      const handler = tail[1] || defaultOnError;\n      handler.call(context, undefined, tail[0]);\n    }\n\n    // Figure out `root` position.\n    tree.position = {\n      start: point(events.length > 0 ? events[0][1].start : {\n        line: 1,\n        column: 1,\n        offset: 0\n      }),\n      end: point(events.length > 0 ? events[events.length - 2][1].end : {\n        line: 1,\n        column: 1,\n        offset: 0\n      })\n    };\n\n    // Call transforms.\n    index = -1;\n    while (++index < config.transforms.length) {\n      tree = config.transforms[index](tree) || tree;\n    }\n    return tree;\n  }\n\n  /**\n   * @param {Array<Event>} events\n   * @param {number} start\n   * @param {number} length\n   * @returns {number}\n   */\n  function prepareList(events, start, length) {\n    let index = start - 1;\n    let containerBalance = -1;\n    let listSpread = false;\n    /** @type {Token | undefined} */\n    let listItem;\n    /** @type {number | undefined} */\n    let lineIndex;\n    /** @type {number | undefined} */\n    let firstBlankLineIndex;\n    /** @type {boolean | undefined} */\n    let atMarker;\n    while (++index <= length) {\n      const event = events[index];\n      switch (event[1].type) {\n        case \"listUnordered\":\n        case \"listOrdered\":\n        case \"blockQuote\":\n          {\n            if (event[0] === 'enter') {\n              containerBalance++;\n            } else {\n              containerBalance--;\n            }\n            atMarker = undefined;\n            break;\n          }\n        case \"lineEndingBlank\":\n          {\n            if (event[0] === 'enter') {\n              if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n                firstBlankLineIndex = index;\n              }\n              atMarker = undefined;\n            }\n            break;\n          }\n        case \"linePrefix\":\n        case \"listItemValue\":\n        case \"listItemMarker\":\n        case \"listItemPrefix\":\n        case \"listItemPrefixWhitespace\":\n          {\n            // Empty.\n\n            break;\n          }\n        default:\n          {\n            atMarker = undefined;\n          }\n      }\n      if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n        if (listItem) {\n          let tailIndex = index;\n          lineIndex = undefined;\n          while (tailIndex--) {\n            const tailEvent = events[tailIndex];\n            if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n              if (tailEvent[0] === 'exit') continue;\n              if (lineIndex) {\n                events[lineIndex][1].type = \"lineEndingBlank\";\n                listSpread = true;\n              }\n              tailEvent[1].type = \"lineEnding\";\n              lineIndex = tailIndex;\n            } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n              // Empty\n            } else {\n              break;\n            }\n          }\n          if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n            listItem._spread = true;\n          }\n\n          // Fix position.\n          listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n          events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n          index++;\n          length++;\n        }\n\n        // Create a new list item.\n        if (event[1].type === \"listItemPrefix\") {\n          /** @type {Token} */\n          const item = {\n            type: 'listItem',\n            _spread: false,\n            start: Object.assign({}, event[1].start),\n            // @ts-expect-error: we’ll add `end` in a second.\n            end: undefined\n          };\n          listItem = item;\n          events.splice(index, 0, ['enter', item, event[2]]);\n          index++;\n          length++;\n          firstBlankLineIndex = undefined;\n          atMarker = true;\n        }\n      }\n    }\n    events[start][1]._spread = listSpread;\n    return length;\n  }\n\n  /**\n   * Create an opener handle.\n   *\n   * @param {(token: Token) => Nodes} create\n   *   Create a node.\n   * @param {Handle | undefined} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function opener(create, and) {\n    return open;\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {undefined}\n     */\n    function open(token) {\n      enter.call(this, create(token), token);\n      if (and) and.call(this, token);\n    }\n  }\n\n  /**\n   * @type {CompileContext['buffer']}\n   */\n  function buffer() {\n    this.stack.push({\n      type: 'fragment',\n      children: []\n    });\n  }\n\n  /**\n   * @type {CompileContext['enter']}\n   */\n  function enter(node, token, errorHandler) {\n    const parent = this.stack[this.stack.length - 1];\n    /** @type {Array<Nodes>} */\n    const siblings = parent.children;\n    siblings.push(node);\n    this.stack.push(node);\n    this.tokenStack.push([token, errorHandler || undefined]);\n    node.position = {\n      start: point(token.start),\n      // @ts-expect-error: `end` will be patched later.\n      end: undefined\n    };\n  }\n\n  /**\n   * Create a closer handle.\n   *\n   * @param {Handle | undefined} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function closer(and) {\n    return close;\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {undefined}\n     */\n    function close(token) {\n      if (and) and.call(this, token);\n      exit.call(this, token);\n    }\n  }\n\n  /**\n   * @type {CompileContext['exit']}\n   */\n  function exit(token, onExitError) {\n    const node = this.stack.pop();\n    const open = this.tokenStack.pop();\n    if (!open) {\n      throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n        start: token.start,\n        end: token.end\n      }) + '): it’s not open');\n    } else if (open[0].type !== token.type) {\n      if (onExitError) {\n        onExitError.call(this, token, open[0]);\n      } else {\n        const handler = open[1] || defaultOnError;\n        handler.call(this, token, open[0]);\n      }\n    }\n    node.position.end = point(token.end);\n  }\n\n  /**\n   * @type {CompileContext['resume']}\n   */\n  function resume() {\n    return toString(this.stack.pop());\n  }\n\n  //\n  // Handlers.\n  //\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistordered() {\n    this.data.expectingFirstListItemValue = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistitemvalue(token) {\n    if (this.data.expectingFirstListItemValue) {\n      const ancestor = this.stack[this.stack.length - 2];\n      ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n      this.data.expectingFirstListItemValue = undefined;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfenceinfo() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.lang = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfencemeta() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.meta = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfence() {\n    // Exit if this is the closing fence.\n    if (this.data.flowCodeInside) return;\n    this.buffer();\n    this.data.flowCodeInside = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefenced() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n    this.data.flowCodeInside = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodeindented() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitionlabelstring(token) {\n    const label = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.label = label;\n    node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiontitlestring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.title = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiondestinationstring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.url = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitatxheadingsequence(token) {\n    const node = this.stack[this.stack.length - 1];\n    if (!node.depth) {\n      const depth = this.sliceSerialize(token).length;\n      node.depth = depth;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadingtext() {\n    this.data.setextHeadingSlurpLineEnding = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadinglinesequence(token) {\n    const node = this.stack[this.stack.length - 1];\n    node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheading() {\n    this.data.setextHeadingSlurpLineEnding = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterdata(token) {\n    const node = this.stack[this.stack.length - 1];\n    /** @type {Array<Nodes>} */\n    const siblings = node.children;\n    let tail = siblings[siblings.length - 1];\n    if (!tail || tail.type !== 'text') {\n      // Add a new text node.\n      tail = text();\n      tail.position = {\n        start: point(token.start),\n        // @ts-expect-error: we’ll add `end` later.\n        end: undefined\n      };\n      siblings.push(tail);\n    }\n    this.stack.push(tail);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitdata(token) {\n    const tail = this.stack.pop();\n    tail.value += this.sliceSerialize(token);\n    tail.position.end = point(token.end);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlineending(token) {\n    const context = this.stack[this.stack.length - 1];\n    // If we’re at a hard break, include the line ending in there.\n    if (this.data.atHardBreak) {\n      const tail = context.children[context.children.length - 1];\n      tail.position.end = point(token.end);\n      this.data.atHardBreak = undefined;\n      return;\n    }\n    if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n      onenterdata.call(this, token);\n      onexitdata.call(this, token);\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithardbreak() {\n    this.data.atHardBreak = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmlflow() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmltext() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcodetext() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlink() {\n    const node = this.stack[this.stack.length - 1];\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n\n    // To do: clean.\n    if (this.data.inReference) {\n      /** @type {ReferenceType} */\n      const referenceType = this.data.referenceType || 'shortcut';\n      node.type += 'Reference';\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType;\n      // @ts-expect-error: mutate.\n      delete node.url;\n      delete node.title;\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier;\n      // @ts-expect-error: mutate.\n      delete node.label;\n    }\n    this.data.referenceType = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitimage() {\n    const node = this.stack[this.stack.length - 1];\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n\n    // To do: clean.\n    if (this.data.inReference) {\n      /** @type {ReferenceType} */\n      const referenceType = this.data.referenceType || 'shortcut';\n      node.type += 'Reference';\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType;\n      // @ts-expect-error: mutate.\n      delete node.url;\n      delete node.title;\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier;\n      // @ts-expect-error: mutate.\n      delete node.label;\n    }\n    this.data.referenceType = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabeltext(token) {\n    const string = this.sliceSerialize(token);\n    const ancestor = this.stack[this.stack.length - 2];\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    ancestor.label = decodeString(string);\n    // @ts-expect-error: same as above.\n    ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabel() {\n    const fragment = this.stack[this.stack.length - 1];\n    const value = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    // Assume a reference.\n    this.data.inReference = true;\n    if (node.type === 'link') {\n      /** @type {Array<PhrasingContent>} */\n      const children = fragment.children;\n      node.children = children;\n    } else {\n      node.alt = value;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcedestinationstring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.url = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcetitlestring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.title = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresource() {\n    this.data.inReference = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterreference() {\n    this.data.referenceType = 'collapsed';\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitreferencestring(token) {\n    const label = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    node.label = label;\n    // @ts-expect-error: same as above.\n    node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n    this.data.referenceType = 'full';\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcharacterreferencemarker(token) {\n    this.data.characterReferenceType = token.type;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcharacterreferencevalue(token) {\n    const data = this.sliceSerialize(token);\n    const type = this.data.characterReferenceType;\n    /** @type {string} */\n    let value;\n    if (type) {\n      value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n      this.data.characterReferenceType = undefined;\n    } else {\n      const result = decodeNamedCharacterReference(data);\n      value = result;\n    }\n    const tail = this.stack[this.stack.length - 1];\n    tail.value += value;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcharacterreference(token) {\n    const tail = this.stack.pop();\n    tail.position.end = point(token.end);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkprotocol(token) {\n    onexitdata.call(this, token);\n    const node = this.stack[this.stack.length - 1];\n    node.url = this.sliceSerialize(token);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkemail(token) {\n    onexitdata.call(this, token);\n    const node = this.stack[this.stack.length - 1];\n    node.url = 'mailto:' + this.sliceSerialize(token);\n  }\n\n  //\n  // Creaters.\n  //\n\n  /** @returns {Blockquote} */\n  function blockQuote() {\n    return {\n      type: 'blockquote',\n      children: []\n    };\n  }\n\n  /** @returns {Code} */\n  function codeFlow() {\n    return {\n      type: 'code',\n      lang: null,\n      meta: null,\n      value: ''\n    };\n  }\n\n  /** @returns {InlineCode} */\n  function codeText() {\n    return {\n      type: 'inlineCode',\n      value: ''\n    };\n  }\n\n  /** @returns {Definition} */\n  function definition() {\n    return {\n      type: 'definition',\n      identifier: '',\n      label: null,\n      title: null,\n      url: ''\n    };\n  }\n\n  /** @returns {Emphasis} */\n  function emphasis() {\n    return {\n      type: 'emphasis',\n      children: []\n    };\n  }\n\n  /** @returns {Heading} */\n  function heading() {\n    return {\n      type: 'heading',\n      // @ts-expect-error `depth` will be set later.\n      depth: 0,\n      children: []\n    };\n  }\n\n  /** @returns {Break} */\n  function hardBreak() {\n    return {\n      type: 'break'\n    };\n  }\n\n  /** @returns {Html} */\n  function html() {\n    return {\n      type: 'html',\n      value: ''\n    };\n  }\n\n  /** @returns {Image} */\n  function image() {\n    return {\n      type: 'image',\n      title: null,\n      url: '',\n      alt: null\n    };\n  }\n\n  /** @returns {Link} */\n  function link() {\n    return {\n      type: 'link',\n      title: null,\n      url: '',\n      children: []\n    };\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {List}\n   */\n  function list(token) {\n    return {\n      type: 'list',\n      ordered: token.type === 'listOrdered',\n      start: null,\n      spread: token._spread,\n      children: []\n    };\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {ListItem}\n   */\n  function listItem(token) {\n    return {\n      type: 'listItem',\n      spread: token._spread,\n      checked: null,\n      children: []\n    };\n  }\n\n  /** @returns {Paragraph} */\n  function paragraph() {\n    return {\n      type: 'paragraph',\n      children: []\n    };\n  }\n\n  /** @returns {Strong} */\n  function strong() {\n    return {\n      type: 'strong',\n      children: []\n    };\n  }\n\n  /** @returns {Text} */\n  function text() {\n    return {\n      type: 'text',\n      value: ''\n    };\n  }\n\n  /** @returns {ThematicBreak} */\n  function thematicBreak() {\n    return {\n      type: 'thematicBreak'\n    };\n  }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n *   Point-like value.\n * @returns {Point}\n *   unist point.\n */\nfunction point(d) {\n  return {\n    line: d.line,\n    column: d.column,\n    offset: d.offset\n  };\n}\n\n/**\n * @param {Config} combined\n * @param {Array<Array<Extension> | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n  let index = -1;\n  while (++index < extensions.length) {\n    const value = extensions[index];\n    if (Array.isArray(value)) {\n      configure(combined, value);\n    } else {\n      extension(combined, value);\n    }\n  }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n  /** @type {keyof Extension} */\n  let key;\n  for (key in extension) {\n    if (own.call(extension, key)) {\n      switch (key) {\n        case 'canContainEols':\n          {\n            const right = extension[key];\n            if (right) {\n              combined[key].push(...right);\n            }\n            break;\n          }\n        case 'transforms':\n          {\n            const right = extension[key];\n            if (right) {\n              combined[key].push(...right);\n            }\n            break;\n          }\n        case 'enter':\n        case 'exit':\n          {\n            const right = extension[key];\n            if (right) {\n              Object.assign(combined[key], right);\n            }\n            break;\n          }\n        // No default\n      }\n    }\n  }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n  if (left) {\n    throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n      start: left.start,\n      end: left.end\n    }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n      start: right.start,\n      end: right.end\n    }) + ') is open');\n  } else {\n    throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n      start: right.start,\n      end: right.end\n    }) + ') is still open');\n  }\n}","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser<Root>} Parser\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\n/**\n * @typedef {Omit<FromMarkdownOptions, 'extensions' | 'mdastExtensions'>} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nexport default function remarkParse(options) {\n  /** @type {Processor} */\n  // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n  const self = this\n\n  self.parser = parser\n\n  /**\n   * @type {Parser}\n   */\n  function parser(doc) {\n    return fromMarkdown(doc, {\n      ...self.data('settings'),\n      ...options,\n      // Note: these options are not in the readme.\n      // The goal is for them to be set by plugins on `data` instead of being\n      // passed by users.\n      extensions: self.data('micromarkExtensions') || [],\n      mdastExtensions: self.data('fromMarkdownExtensions') || []\n    })\n  }\n}\n","import type { ErrorCode } from '../types';\n\n/**\n * Custom error class for LLMXML-specific errors\n */\nexport class LLMXMLError extends Error {\n  /**\n   * Creates a new LLMXMLError\n   * \n   * @param message - Human-readable error message\n   * @param code - Error code identifying the type of error\n   * @param details - Optional additional error context\n   */\n  constructor(\n    message: string,\n    public code: ErrorCode,\n    public details?: unknown\n  ) {\n    super(message);\n    this.name = 'LLMXMLError';\n    Object.setPrototypeOf(this, LLMXMLError.prototype);\n  }\n} ","import winston from 'winston';\nimport { EventEmitter } from 'events';\nimport type { Warning } from '../types';\n\n/**\n * Event emitter for library-level events\n */\nexport const events = new EventEmitter();\n\n/**\n * Custom transport that emits events for warnings\n */\nclass EventTransport extends winston.transports.Stream {\n  constructor(opts?: any) {\n    super({\n      stream: process.stdout,\n      ...opts\n    });\n    // @ts-ignore - winston types are incorrect, eol can be boolean\n    this.eol = true;\n    this.level = 'warn';\n  }\n\n  log(info: any, callback: () => void) {\n    setImmediate(() => {\n      this.emit('logged', info);\n    });\n\n    // Extract the message and metadata\n    const { message, level, timestamp, ...meta } = info;\n    \n    // Emit the warning event with our format\n    if (level === 'warn') {\n      events.emit('warning', {\n        code: meta.code || 'UNKNOWN_WARNING',\n        message: message,\n        details: meta\n      } as Warning);\n    }\n\n    callback();\n  }\n}\n\n/**\n * Centralized logger for the LLMXML library\n * \n * By default:\n * - Only logs errors to avoid unwanted console output\n * - Can be overridden with LOG_LEVEL environment variable\n * \n * In development:\n * - Logs to console with colors and simple format\n * \n * In production:\n * - Logs errors to error.log\n * - Logs all levels to combined.log\n * - Uses JSON format with timestamps\n * \n * Respects LLMXML options via configureLogger():\n * - When warningLevel is 'none', only errors are logged\n * - When verbose is true, enables info/debug logging\n * - When verbose is false, only warnings and errors are logged\n */\nconst logger = winston.createLogger({\n  /** Set by LOG_LEVEL env var or defaults to 'error' to avoid unwanted console output */\n  level: process.env.LOG_LEVEL || 'error',\n  /** Use JSON format with timestamps for structured logging */\n  format: winston.format.combine(\n    winston.format.timestamp(),\n    winston.format.json()\n  ),\n  transports: [\n    /** Console output with colors in development */\n    new winston.transports.Console({\n      format: winston.format.combine(\n        winston.format.colorize(),\n        winston.format.simple()\n      ),\n    }),\n    /** Event transport for warning events */\n    new EventTransport(),\n  ],\n});\n\n// Add file transports in production\nif (process.env.NODE_ENV === 'production') {\n  /** Log errors to dedicated file */\n  logger.add(\n    new winston.transports.File({ filename: 'error.log', level: 'error' })\n  );\n  /** Log all levels to combined file */\n  logger.add(\n    new winston.transports.File({ filename: 'combined.log' })\n  );\n}\n\n/**\n * Updates logger level based on LLMXML options\n * @param options Options from LLMXML instance\n */\nexport function configureLogger(options: { warningLevel?: 'all' | 'none' | 'ambiguous-only', verbose?: boolean } = {}) {\n  // Set log level based on warningLevel\n  if (options.warningLevel === 'none') {\n    // When warningLevel is 'none', only log errors\n    logger.level = 'error';\n  } else if (!options.verbose) {\n    // When not verbose, don't show info logs\n    logger.level = 'warn';\n  } else {\n    // Default to info level\n    logger.level = process.env.LOG_LEVEL || 'info';\n  }\n}\n\nexport default logger; ","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n *   Check that an arbitrary value is a node.\n * @param {unknown} this\n *   The given context.\n * @param {unknown} [node]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean}\n *   Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n *   Object to check for equivalence.\n *\n *   Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n *   Check for an arbitrary node.\n *\n * @callback TestFunction\n *   Check if a node passes a test.\n * @param {unknown} this\n *   The given context.\n * @param {Node} node\n *   A node.\n * @param {number | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean | undefined | void}\n *   Whether this node passes the test.\n *\n *   Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n *   Thing to check, typically `Node`.\n * @param {Test} test\n *   A check for a specific node.\n * @param {number | null | undefined} index\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n *   The node’s parent.\n * @param {unknown} context\n *   Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n *   Whether `node` is a node and passes a test.\n */\nexport const is =\n  // Note: overloads in JSDoc can’t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n   *   ((node?: null | undefined) => false) &\n   *   ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * @param {unknown} [node]\n     * @param {Test} [test]\n     * @param {number | null | undefined} [index]\n     * @param {Parent | null | undefined} [parent]\n     * @param {unknown} [context]\n     * @returns {boolean}\n     */\n    // eslint-disable-next-line max-params\n    function (node, test, index, parent, context) {\n      const check = convert(test)\n\n      if (\n        index !== undefined &&\n        index !== null &&\n        (typeof index !== 'number' ||\n          index < 0 ||\n          index === Number.POSITIVE_INFINITY)\n      ) {\n        throw new Error('Expected positive finite index')\n      }\n\n      if (\n        parent !== undefined &&\n        parent !== null &&\n        (!is(parent) || !parent.children)\n      ) {\n        throw new Error('Expected parent node')\n      }\n\n      if (\n        (parent === undefined || parent === null) !==\n        (index === undefined || index === null)\n      ) {\n        throw new Error('Expected both parent and index')\n      }\n\n      return looksLikeANode(node)\n        ? check.call(context, node, index, parent)\n        : false\n    }\n  )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n *   *   when nullish, checks if `node` is a `Node`.\n *   *   when `string`, works like passing `(node) => node.type === test`.\n *   *   when `function` checks if function passed the node is true.\n *   *   when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n *   *   when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n *   An assertion.\n */\nexport const convert =\n  // Note: overloads in JSDoc can’t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n   *   ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((test?: Test) => Check)\n   * )}\n   */\n  (\n    /**\n     * @param {Test} [test]\n     * @returns {Check}\n     */\n    function (test) {\n      if (test === null || test === undefined) {\n        return ok\n      }\n\n      if (typeof test === 'function') {\n        return castFactory(test)\n      }\n\n      if (typeof test === 'object') {\n        return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n      }\n\n      if (typeof test === 'string') {\n        return typeFactory(test)\n      }\n\n      throw new Error('Expected function, string, or object as test')\n    }\n  )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n  /** @type {Array<Check>} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @type {TestFunction}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].apply(this, parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n  const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n  return castFactory(all)\n\n  /**\n   * @param {Node} node\n   * @returns {boolean}\n   */\n  function all(node) {\n    const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n      /** @type {unknown} */ (node)\n    )\n\n    /** @type {string} */\n    let key\n\n    for (key in check) {\n      if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n    }\n\n    return true\n  }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n  return castFactory(type)\n\n  /**\n   * @param {Node} node\n   */\n  function type(node) {\n    return node && node.type === check\n  }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n  return check\n\n  /**\n   * @this {unknown}\n   * @type {Check}\n   */\n  function check(value, index, parent) {\n    return Boolean(\n      looksLikeANode(value) &&\n        testFunction.call(\n          this,\n          value,\n          typeof index === 'number' ? index : undefined,\n          parent || undefined\n        )\n    )\n  }\n}\n\nfunction ok() {\n  return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n  return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @param {string} d\n * @returns {string}\n */\nexport function color(d) {\n  return '\\u001B[33m' + d + '\\u001B[39m'\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate<Check, Value> extends Value\n *     ? Predicate<Check, Value>\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends Array<any>\n *   ? MatchesOne<Value, Check[keyof Check]>\n *   : MatchesOne<Value, Check>\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array<infer Children>}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent<Node, Child>\n *     | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn’t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n *   Union of the action types.\n *\n * @typedef {number} Index\n *   Move to the sibling at `index` next (after node itself is completely\n *   traversed).\n *\n *   Useful if mutating the tree, such as removing the node the visitor is\n *   currently on, or any of its previous siblings.\n *   Results less than 0 or greater than or equal to `children.length` stop\n *   traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n *   List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n *   Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform the parent of node (the last of `ancestors`).\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of an ancestor still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Array<VisitedParents>} ancestors\n *   Ancestors of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Tree type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} test\n *   `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n *   Handle each node.\n * @param {boolean | null | undefined} [reverse]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n  /** @type {Test} */\n  let check\n\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor\n    // @ts-expect-error no visitor given, so `visitor` is test.\n    visitor = test\n  } else {\n    // @ts-expect-error visitor given, so `test` isn’t a visitor.\n    check = test\n  }\n\n  const is = convert(check)\n  const step = reverse ? -1 : 1\n\n  factory(tree, undefined, [])()\n\n  /**\n   * @param {UnistNode} node\n   * @param {number | undefined} index\n   * @param {Array<UnistParent>} parents\n   */\n  function factory(node, index, parents) {\n    const value = /** @type {Record<string, unknown>} */ (\n      node && typeof node === 'object' ? node : {}\n    )\n\n    if (typeof value.type === 'string') {\n      const name =\n        // `hast`\n        typeof value.tagName === 'string'\n          ? value.tagName\n          : // `xast`\n          typeof value.name === 'string'\n          ? value.name\n          : undefined\n\n      Object.defineProperty(visit, 'name', {\n        value:\n          'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n      })\n    }\n\n    return visit\n\n    function visit() {\n      /** @type {Readonly<ActionTuple>} */\n      let result = empty\n      /** @type {Readonly<ActionTuple>} */\n      let subresult\n      /** @type {number} */\n      let offset\n      /** @type {Array<UnistParent>} */\n      let grandparents\n\n      if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n        // @ts-expect-error: `visitor` is now a visitor.\n        result = toResult(visitor(node, parents))\n\n        if (result[0] === EXIT) {\n          return result\n        }\n      }\n\n      if ('children' in node && node.children) {\n        const nodeAsParent = /** @type {UnistParent} */ (node)\n\n        if (nodeAsParent.children && result[0] !== SKIP) {\n          offset = (reverse ? nodeAsParent.children.length : -1) + step\n          grandparents = parents.concat(nodeAsParent)\n\n          while (offset > -1 && offset < nodeAsParent.children.length) {\n            const child = nodeAsParent.children[offset]\n\n            subresult = factory(child, offset, grandparents)()\n\n            if (subresult[0] === EXIT) {\n              return subresult\n            }\n\n            offset =\n              typeof subresult[1] === 'number' ? subresult[1] : offset + step\n          }\n        }\n      }\n\n      return result\n    }\n  }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n *   Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n *   Clean result.\n */\nfunction toResult(value) {\n  if (Array.isArray(value)) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value]\n  }\n\n  return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate<Check, Value> extends Value\n *     ? Predicate<Check, Value>\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends Array<any>\n *   ? MatchesOne<Value, Check[keyof Check]>\n *   : MatchesOne<Value, Check>\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array<infer Children>}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent<Node, Child>\n *     | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn’t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform `parent`.\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of `parent` still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n *   Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n *   Parent of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n *   Build a typed `Visitor` function from a node and all possible parents.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n *   Node type.\n * @template {UnistParent} Ancestor\n *   Parent type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromMatch<\n *     Matches<Descendant, Check>,\n *     Extract<Descendant, UnistParent>\n *   >\n * )} BuildVisitorFromDescendants\n *   Build a typed `Visitor` function from a list of descendants and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n *   Node type.\n * @template {Test} Check\n *   Test type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromDescendants<\n *     InclusiveDescendant<Tree>,\n *     Check\n *   >\n * )} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Node type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n *   `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n *   Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n  /** @type {boolean | null | undefined} */\n  let reverse\n  /** @type {Test} */\n  let test\n  /** @type {Visitor} */\n  let visitor\n\n  if (\n    typeof testOrVisitor === 'function' &&\n    typeof visitorOrReverse !== 'function'\n  ) {\n    test = undefined\n    visitor = testOrVisitor\n    reverse = visitorOrReverse\n  } else {\n    // @ts-expect-error: assume the overload with test was given.\n    test = testOrVisitor\n    // @ts-expect-error: assume the overload with test was given.\n    visitor = visitorOrReverse\n    reverse = maybeReverse\n  }\n\n  visitParents(tree, test, overload, reverse)\n\n  /**\n   * @param {UnistNode} node\n   * @param {Array<UnistParent>} parents\n   */\n  function overload(node, parents) {\n    const parent = parents[parents.length - 1]\n    const index = parent ? parent.children.indexOf(node) : undefined\n    return visitor(node, index, parent)\n  }\n}\n","import { unified } from 'unified';\nimport remarkParse from 'remark-parse';\nimport type { Root, RootContent, List, ListItem } from 'mdast';\nimport type { ASTNode, SourceLocation } from '../types/ast';\nimport { LLMXMLError } from '../errors';\nimport logger from '../utils/logger';\nimport { visit } from 'unist-util-visit';\n\n// Helper function to convert remark Position to our SourceLocation\nfunction convertPosition(pos: any): SourceLocation | undefined {\n  if (!pos) return undefined;\n  return {\n    start: {\n      offset: pos.start.offset || 0,\n      line: pos.start.line || 1,\n      column: pos.start.column || 1\n    },\n    end: {\n      offset: pos.end.offset || 0,\n      line: pos.end.line || 1,\n      column: pos.end.column || 1\n    }\n  };\n}\n\n/**\n * Custom remark plugin to capture emphasis markers\n */\nfunction remarkEmphasisMarkers() {\n  return (tree: Root) => {\n    visit(tree, ['emphasis', 'strong'], (node: any) => {\n      // Check the raw source text to determine the marker used\n      const raw = node.position?.source?.value?.slice(\n        node.position.start.offset,\n        node.position.end.offset\n      );\n      if (raw) {\n        const marker = raw.startsWith('_') ? '_' : '*';\n        node.data = node.data || {};\n        node.data.marker = marker.repeat(node.type === 'strong' ? 2 : 1);\n      }\n    });\n  };\n}\n\n/**\n * Markdown parser implementation\n */\nexport class MarkdownParser {\n  /**\n   * Parse Markdown content into an AST\n   * \n   * @param input - The Markdown content to parse\n   * @returns The parsed AST\n   */\n  public async parseToAST(input: string): Promise<ASTNode[]> {\n    try {\n      const mdast = await unified()\n        .use(remarkParse)\n        .use(remarkEmphasisMarkers)\n        .parse(input);\n\n      // Validate the AST for unclosed code blocks\n      this.validateAST(mdast);\n\n      return this.transformNodes(mdast.children);\n    } catch (error) {\n      logger.error('Failed to parse Markdown', { error });\n      throw new LLMXMLError(\n        'Failed to parse Markdown',\n        'PARSE_ERROR',\n        { error }\n      );\n    }\n  }\n\n  /**\n   * Validate the Markdown AST for common issues\n   */\n  private validateAST(root: Root): void {\n    const validate = (node: any) => {\n      if (node.type === 'code' && !node.value) {\n        throw new LLMXMLError(\n          'Unclosed code block',\n          'PARSE_ERROR',\n          { node }\n        );\n      }\n\n      if (Array.isArray(node.children)) {\n        node.children.forEach(validate);\n      }\n    };\n\n    root.children.forEach(validate);\n  }\n\n  /**\n   * Transform remark AST nodes into our AST format\n   * \n   * @param nodes - Array of remark AST nodes\n   * @returns Array of transformed AST nodes\n   */\n  private transformNodes(nodes: RootContent[]): ASTNode[] {\n    return nodes.map(node => this.transformNode(node)).filter(Boolean) as ASTNode[];\n  }\n\n  /**\n   * Transform a single remark AST node into our AST format\n   * \n   * @param node - The remark AST node to transform\n   * @returns The transformed AST node\n   */\n  private transformNode(node: RootContent): ASTNode | null {\n    switch (node.type) {\n      case 'heading':\n        return {\n          type: 'heading',\n          text: this.getNodeText(node),\n          depth: node.depth,\n          children: [],\n          location: convertPosition(node.position)\n        };\n      case 'text':\n        return {\n          type: 'text',\n          value: node.value,\n          location: convertPosition(node.position)\n        };\n      case 'code':\n        return {\n          type: 'code',\n          value: node.value,\n          lang: node.lang || undefined,\n          location: convertPosition(node.position)\n        };\n      case 'list':\n        return {\n          type: 'list',\n          ordered: node.ordered || false,\n          children: this.transformNodes(node.children),\n          location: convertPosition(node.position)\n        };\n      case 'listItem':\n        return {\n          type: 'listItem',\n          children: this.transformNodes(node.children),\n          location: convertPosition(node.position)\n        };\n      case 'paragraph':\n        return {\n          type: 'paragraph',\n          children: this.transformNodes(node.children),\n          location: convertPosition(node.position)\n        };\n      case 'link':\n        return {\n          type: 'link',\n          url: node.url,\n          children: this.transformNodes(node.children),\n          location: convertPosition(node.position)\n        };\n      case 'emphasis':\n        return {\n          type: 'emphasis',\n          marker: (node as any).data?.marker || '*',\n          children: this.transformNodes(node.children),\n          location: convertPosition(node.position)\n        };\n      case 'strong':\n        return {\n          type: 'strong',\n          marker: (node as any).data?.marker || '**',\n          children: this.transformNodes(node.children),\n          location: convertPosition(node.position)\n        };\n      default:\n        logger.warn('Unknown node type during transformation', { type: node.type });\n        return null;\n    }\n  }\n\n  /**\n   * Get the text content of a node\n   */\n  private getNodeText(node: RootContent): string {\n    if ('value' in node) {\n      return node.value;\n    }\n    if ('children' in node) {\n      return node.children.map(child => this.getNodeText(child)).join('');\n    }\n    return '';\n  }\n\n  /**\n   * Serialize a list node to text\n   */\n  private serializeList(node: List, indent: string = ''): string {\n    if (!Array.isArray(node.children)) {\n      return '';\n    }\n\n    return node.children\n      .map((item: ListItem, index: number) => {\n        const marker = node.ordered ? `${index + 1}.` : '-';\n        const itemText = this.serializeListItem(item, `${indent}  `);\n        return itemText ? `${indent}${marker} ${itemText}` : '';\n      })\n      .filter(Boolean)\n      .join('\\n');\n  }\n\n  /**\n   * Serialize a list item node to text\n   */\n  private serializeListItem(node: ListItem, indent: string): string {\n    if (!Array.isArray(node.children)) {\n      return '';\n    }\n\n    return node.children\n      .map(child => {\n        if (child.type === 'list') {\n          return '\\n' + this.serializeList(child as List, indent);\n        }\n        if (child.type === 'paragraph') {\n          return this.getNodeText(child);\n        }\n        return '';\n      })\n      .filter(Boolean)\n      .join('');\n  }\n}\n\n// Export a singleton instance\nexport const markdownParser = new MarkdownParser(); ","import peggy from 'peggy';\nimport { readFileSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimport type {\n  ParseOptions,\n  ParseResult,\n  ASTNode,\n  TagNode,\n  TextNode,\n  SourceLocation\n} from '../types/ast';\nimport { ParseError } from '../types/ast';\nimport logger from '../utils/logger';\n\n// ESM path resolution\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n// Load and compile grammar\nconst grammarPaths = [\n  join(__dirname, 'grammar', 'llmxml.pegjs'),\n  join(__dirname, '..', 'grammar', 'llmxml.pegjs'),\n  join(__dirname, '..', '..', 'grammar', 'llmxml.pegjs')\n];\n\nlet grammar: string | undefined;\n\nfor (const path of grammarPaths) {\n  try {\n    grammar = readFileSync(path, 'utf-8');\n    break;\n  } catch (error) {\n    // Continue to next path\n  }\n}\n\nif (!grammar) {\n  throw new Error('Failed to load grammar file. This might be a build configuration issue.');\n}\n\n// Node creation utilities\nfunction createNode(\n  type: 'tag' | 'text',\n  data: Partial<TagNode | TextNode>,\n  location: SourceLocation\n): ASTNode {\n  return {\n    type,\n    location,\n    ...data\n  } as ASTNode;\n}\n\n// Generate parser with createNode function\nconst parser = peggy.generate(grammar, {\n  allowedStartRules: ['Document']\n} as peggy.ParserBuildOptions);\n\n// Main parse function\nexport function parse(input: string, options: ParseOptions = {}): ParseResult {\n  const errors: ParseError[] = [];\n  let ast: ASTNode[];\n  \n  try {\n    ast = parser.parse(input, {\n      grammarSource: options.filename,\n      createNode // Pass createNode as a parse option\n    }) as ASTNode[];\n  } catch (error) {\n    if (error instanceof Error) {\n      // Extract location information if available\n      const location = (error as any).location || {\n        start: { offset: 0, line: 1, column: 1 },\n        end: { offset: input.length, line: 1, column: input.length + 1 }\n      };\n\n      // Create more descriptive error message\n      let errorMessage = error.message;\n      if (error.message.includes('end of input')) {\n        const lastTagMatch = input.match(/<([A-Z][A-Za-z0-9]*)(?:\\s+[^>]*)?>/);\n        if (lastTagMatch) {\n          errorMessage = `Mismatched tags: unclosed tag <${lastTagMatch[1]}>`;\n        } else {\n          errorMessage = 'Unexpected end of input while parsing tag structure';\n        }\n      }\n\n      const parseError = new ParseError(errorMessage, location);\n      errors.push(parseError);\n      logger.error('Parse error', { error: parseError });\n\n      // Handle different error cases\n      if (error.message.includes('end of input') && input.includes('<') && !input.includes('</')) {\n        // Unclosed tag case - preserve content as text\n        ast = [createNode('text', { value: input }, location)];\n      } else {\n        // For other errors, create empty AST but preserve error information\n        ast = [];\n      }\n    } else {\n      throw error;\n    }\n  }\n\n  return { ast, errors };\n}\n\n// Export a singleton instance\nexport const llmParser = { \n  parse,\n  parseToAST: async (input: string, options: ParseOptions = {}) => {\n    const { ast, errors } = parse(input, options);\n    if (errors.length > 0) {\n      throw errors[0];\n    }\n    return ast;\n  }\n}; ","export interface SourceLocation {\n  start: {\n    offset: number;\n    line: number;\n    column: number;\n  };\n  end: {\n    offset: number;\n    line: number;\n    column: number;\n  };\n}\n\nexport interface ParseOptions {\n  filename?: string;\n}\n\nexport interface ParseResult {\n  ast: ASTNode[];\n  errors: ParseError[];\n}\n\nexport class ParseError extends Error {\n  constructor(\n    message: string,\n    public location: SourceLocation\n  ) {\n    super(message);\n    this.name = 'ParseError';\n  }\n}\n\nexport interface BaseNode {\n  type: string;\n  location?: SourceLocation;\n}\n\nexport interface TagNode extends BaseNode {\n  type: 'tag';\n  name: string;\n  attributes: Record<string, string>;\n  children?: ASTNode[];\n  text?: string;\n  depth?: number;\n}\n\nexport interface TextNode extends BaseNode {\n  type: 'text';\n  value: string;\n  textType?: 'code';\n  language?: string;\n}\n\nexport interface HeadingNode extends BaseNode {\n  type: 'heading';\n  text: string;\n  depth: number;\n  children: ASTNode[];\n}\n\nexport interface CodeBlockNode extends BaseNode {\n  type: 'code';\n  value: string;\n  lang?: string;\n}\n\nexport interface ListNode extends BaseNode {\n  type: 'list';\n  ordered?: boolean;\n  children: ASTNode[];\n}\n\nexport interface ListItemNode extends BaseNode {\n  type: 'listItem';\n  children: ASTNode[];\n}\n\nexport interface ParagraphNode extends BaseNode {\n  type: 'paragraph';\n  children: ASTNode[];\n}\n\nexport interface EmphasisNode extends BaseNode {\n  type: 'emphasis' | 'strong';\n  marker?: string;\n  children: ASTNode[];\n}\n\nexport interface LinkNode extends BaseNode {\n  type: 'link';\n  url: string;\n  children: ASTNode[];\n}\n\nexport type ASTNode = TagNode | TextNode | HeadingNode | CodeBlockNode | ListNode | ListItemNode | ParagraphNode | EmphasisNode | LinkNode; ","import type { ASTNode, TagNode, TextNode, SourceLocation } from '../types/ast';\nimport logger from '../utils/logger';\n\ninterface ExtendedASTNode {\n  type: string;\n  location?: SourceLocation;\n  depth?: number;\n  text?: string;\n  lang?: string;\n  value?: string;\n  children?: ExtendedASTNode[];\n  ordered?: boolean;\n  url?: string;\n}\n\n/**\n * Transforms our internal Markdown AST into LLM-XML AST format\n */\nexport class MarkdownToLLMTransformer {\n  /**\n   * Convert a Markdown AST to LLM-XML AST\n   *\n   * @param nodes - Array of Markdown AST nodes\n   * @returns Array of LLM-XML AST nodes\n   */\n  public transform(nodes: ASTNode[]): ASTNode[] {\n    const result: ASTNode[] = [];\n    // Stack of parent sections, from root to current\n    const sectionStack: ExtendedASTNode[] = [];\n    \n    for (const node of nodes) {\n      if (node.type === 'heading') {\n        const tagNode = this.createTagNode(node as ExtendedASTNode);\n        const currentLevel = (node as ExtendedASTNode).depth || 1;\n\n        // Pop stack until we find the appropriate parent level\n        while (\n          sectionStack.length > 0 &&\n          (sectionStack[sectionStack.length - 1] as any).depth! >= currentLevel\n        ) {\n          sectionStack.pop();\n        }\n\n        // Add to parent if we have one, otherwise to root\n        if (sectionStack.length > 0) {\n          const parent = sectionStack[sectionStack.length - 1] as TagNode;\n          parent.children = parent.children || [];\n          parent.children.push(tagNode);\n        } else {\n          result.push(tagNode);\n        }\n\n        // Push this section onto the stack\n        sectionStack.push(tagNode);\n      } else {\n        // For non-heading content, add it to the most recently seen section\n        if (sectionStack.length > 0) {\n          const lastSection = sectionStack[sectionStack.length - 1] as TagNode;\n          lastSection.children = lastSection.children || [];\n          lastSection.children.push(this.transformContent(node as ExtendedASTNode));\n        } else {\n          // No sections yet, add to root\n          result.push(this.transformContent(node as ExtendedASTNode));\n        }\n      }\n    }\n\n    return result;\n  }\n\n  /**\n   * Create a tag node from a heading node\n   *\n   * @param heading - The heading node to convert\n   * @returns A new tag node\n   */\n  private createTagNode(heading: ExtendedASTNode): TagNode {\n    const name = this.generateTagName(heading.text || '');\n    logger.debug('Creating tag node', { text: heading.text, name });\n\n    return {\n      type: 'tag',\n      name,\n      attributes: {\n        title: heading.text || name,\n        hlevel: String(heading.depth || 1),\n      },\n      children: [],\n      depth: heading.depth || 1, // Keep track of depth for nesting\n      location: heading.location\n    } as TagNode;\n  }\n\n  /**\n   * Transform non-heading content into text nodes\n   */\n  private transformContent(node: ExtendedASTNode): TextNode {\n    switch (node.type) {\n      case 'code':\n        return {\n          type: 'text',\n          value: '```' + (node.lang || '') + '\\n' + node.value + '\\n```',\n          textType: 'code',\n          language: node.lang,\n          location: node.location\n        } as TextNode;\n      case 'list':\n        return {\n          type: 'text',\n          value: this.serializeList(node),\n          location: node.location\n        } as TextNode;\n      case 'paragraph':\n        return {\n          type: 'text',\n          value: this.serializeParagraph(node),\n          location: node.location\n        } as TextNode;\n      case 'text':\n        return {\n          type: 'text',\n          value: node.value || '',\n          location: node.location\n        } as TextNode;\n      default:\n        logger.warn('Unknown node type during content transformation', { type: node.type });\n        return {\n          type: 'text',\n          value: '',\n          location: node.location\n        } as TextNode;\n    }\n  }\n\n  /**\n   * Generate a valid tag name from heading text\n   *\n   * @param text - The heading text\n   * @returns A camelCase tag name\n   */\n  private generateTagName(text: string): string {\n    // Remove special characters and convert to camelCase\n    return text\n      // Remove markdown formatting\n      .replace(/[`*_\\[\\]]/g, '')\n      // Split on non-word characters\n      .split(/[^a-zA-Z0-9]+/)\n      // Filter out empty strings\n      .filter(Boolean)\n      // Convert to camelCase\n      .map((word) => {\n        const normalized = word.toLowerCase();\n        return normalized.charAt(0).toUpperCase() + normalized.slice(1);\n      })\n      .join('');\n  }\n\n  /**\n   * Serialize a list node to text\n   */\n  private serializeList(node: ExtendedASTNode): string {\n    if (!Array.isArray(node.children)) {\n      return '';\n    }\n\n    const ordered = (node as any).ordered || false;\n    return node.children\n      .map((item: ExtendedASTNode, index: number) => {\n        const marker = ordered ? `${index + 1}.` : '-';\n        const itemText = this.serializeListItem(item);\n        return itemText ? `${marker} ${itemText}` : '';\n      })\n      .filter(Boolean)\n      .join('\\n');\n  }\n\n  /**\n   * Serialize a list item node to text\n   */\n  private serializeListItem(node: ExtendedASTNode): string {\n    if (!Array.isArray(node.children)) {\n      return '';\n    }\n\n    return node.children\n      .map((child: ExtendedASTNode) => {\n        if (child.type === 'list') {\n          return '\\n' + this.serializeList(child);\n        }\n        if (child.type === 'paragraph') {\n          return this.serializeParagraph(child);\n        }\n        return '';\n      })\n      .filter(Boolean)\n      .join('');\n  }\n\n  /**\n   * Serialize a paragraph node to text\n   */\n  private serializeParagraph(node: ExtendedASTNode): string {\n    if (!Array.isArray(node.children)) {\n      return '';\n    }\n\n    return node.children\n      .map((child: ExtendedASTNode) => {\n        switch (child.type) {\n          case 'text':\n            return child.value || '';\n          case 'emphasis':\n            return `*${this.serializeParagraph(child)}*`;\n          case 'strong':\n            return `**${this.serializeParagraph(child)}**`;\n          case 'link':\n            return `[${this.serializeParagraph(child)}](${(child as any).url})`;\n          default:\n            return '';\n        }\n      })\n      .join('');\n  }\n}\n\n// Export a singleton instance\nexport const markdownToLLM = new MarkdownToLLMTransformer(); ","import { ASTNode, TagNode, TextNode, HeadingNode } from '../types';\nimport logger from '../utils/logger';\n\n/**\n * Transforms LLM-XML AST back into Markdown AST format\n */\nexport class LLMToMarkdownTransformer {\n  /**\n   * Convert LLM-XML AST to Markdown AST\n   * \n   * @param nodes - Array of LLM-XML AST nodes\n   * @returns Array of Markdown AST nodes\n   */\n  public transform(nodes: ASTNode[]): ASTNode[] {\n    const result: ASTNode[] = [];\n    \n    for (const node of nodes) {\n      const converted = this.convertNode(node);\n      if (Array.isArray(converted)) {\n        result.push(...converted);\n      } else if (converted) {\n        result.push(converted);\n      }\n    }\n\n    return result;\n  }\n\n  /**\n   * Convert a single LLM-XML AST node to Markdown AST node(s)\n   * \n   * @param node - LLM-XML AST node\n   * @returns Single node, array of nodes, or null if node should be skipped\n   */\n  private convertNode(node: ASTNode): ASTNode | ASTNode[] | null {\n    switch (node.type) {\n      case 'tag':\n        return this.convertTagNode(node as TagNode);\n      case 'text':\n        return this.convertTextNode(node as TextNode);\n      default:\n        logger.warn('Unknown node type', { type: node.type });\n        return null;\n    }\n  }\n\n  /**\n   * Convert a tag node to Markdown AST nodes\n   * \n   * @param node - LLM-XML tag node\n   * @returns Array of Markdown AST nodes\n   */\n  private convertTagNode(node: TagNode): ASTNode[] {\n    const result: ASTNode[] = [];\n\n    // Create heading from tag\n    const heading: HeadingNode = {\n      type: 'heading',\n      depth: parseInt(node.attributes?.hlevel || '1', 10),\n      text: node.attributes?.title || node.name,\n      children: [],\n    };\n    result.push(heading);\n\n    // Convert children\n    if (node.children?.length) {\n      for (const child of node.children) {\n        if (child.type === 'tag') {\n          // For tag nodes, ensure they have the correct heading level\n          const tagNode = child as TagNode;\n          if (!tagNode.attributes) {\n            tagNode.attributes = {};\n          }\n          // If hlevel is not set, use parent's level + 1\n          if (!tagNode.attributes.hlevel) {\n            tagNode.attributes.hlevel = String(heading.depth + 1);\n          }\n        }\n        const converted = this.convertNode(child);\n        if (Array.isArray(converted)) {\n          result.push(...converted);\n        } else if (converted) {\n          result.push(converted);\n        }\n      }\n    }\n\n    return result;\n  }\n\n  /**\n   * Convert a text node to Markdown AST node\n   * \n   * @param node - LLM-XML text node\n   * @returns Text node\n   */\n  private convertTextNode(node: TextNode): TextNode {\n    return {\n      type: 'text',\n      value: node.value || '',\n    };\n  }\n}\n\n// Export a singleton instance\nexport const llmToMarkdown = new LLMToMarkdownTransformer(); ","export const ERROR_MESSAGES = {\n  SECTION_NOT_FOUND: 'Section not found',\n  SECTION_NOT_FOUND_WITH_SUGGESTIONS: 'Section not found. Here are the closest matches:',\n  PARSE_ERROR: 'Failed to parse document',\n  INVALID_FORMAT: 'Invalid document format',\n  INVALID_LEVEL: 'Invalid header level',\n  INVALID_SECTION_OPTIONS: 'Invalid section extraction options',\n  AMBIGUOUS_MATCH: 'Multiple potential matches found for section'\n} as const;\n\nexport type ErrorCode = keyof typeof ERROR_MESSAGES; ","import { ASTNode, TagNode } from '../types';\nimport { LLMXMLError } from '../errors';\nimport logger from '../utils/logger';\nimport { ERROR_MESSAGES } from '../constants';\n\ninterface ExtractOptions {\n  /** Title to search for */\n  title: string;\n  /** Optional heading level to match */\n  level?: number;\n  /** Fuzzy match threshold (0-1) */\n  threshold?: number;\n  /** Whether to include subsections */\n  includeSubsections?: boolean;\n  /** Whether to return fuzzy matches */\n  fuzzyMatches?: boolean;\n}\n\ninterface MatchScore {\n  /** Whether this is a case-insensitive exact match */\n  exactMatch: boolean;\n  /** Fuzzy match score (0-1) */\n  fuzzyScore: number;\n  /** Whether this title appears in a higher level section */\n  isContainedInHigherLevel: boolean;\n  /** Whether this section has more specific child sections */\n  hasMoreSpecificChild: boolean;\n  /** Heading level (1-6) */\n  level: number;\n  /** Position in document (0-based) */\n  position: number;\n  /** Score adjusted based on context */\n  contextualScore: number;\n}\n\ninterface Match {\n  /** The matched node */\n  node: TagNode;\n  /** Detailed scoring information */\n  score: MatchScore;\n  /** Parent node if any */\n  parent?: TagNode;\n}\n\n/**\n * Results from heading similarity calculation\n */\nexport interface MatchResult {\n  /** Title of the heading */\n  title: string;\n  /** Heading level (1-6) */\n  level: number;\n  /** Match similarity score (0-1) */\n  similarity: number;\n}\n\n/**\n * Extracts sections from AST based on fuzzy title matching\n */\nexport class SectionExtractor {\n  /**\n   * Find sections matching the given criteria\n   * \n   * @param ast - The AST to search\n   * @param options - Search options\n   * @returns Matching sections\n   * @throws {LLMXMLError} If no matches found\n   */\n  public findSections(ast: ASTNode[], options: ExtractOptions): TagNode[] {\n    const matches: Match[] = [];\n    const threshold = options.threshold || 0.7;\n    \n    // First pass: collect all potential matches with their context\n    this.findMatches(ast, options, matches);\n\n    if (matches.length === 0) {\n      throw new LLMXMLError(\n        ERROR_MESSAGES.SECTION_NOT_FOUND,\n        'SECTION_NOT_FOUND',\n        { title: options.title }\n      );\n    }\n\n    // Second pass: analyze relationships and adjust scores\n    this.analyzeRelationships(matches);\n\n    // Filter by threshold and sort by final score\n    const validMatches = matches\n      .filter(m => m.score.contextualScore >= threshold)\n      .sort((a, b) => {\n        // First by exact match\n        if (a.score.exactMatch !== b.score.exactMatch) {\n          return b.score.exactMatch ? 1 : -1;\n        }\n\n        // Then by contextual score\n        const scoreDiff = b.score.contextualScore - a.score.contextualScore;\n        if (scoreDiff !== 0) return scoreDiff;\n\n        // Then by level (prefer more specific)\n        const levelDiff = a.score.level - b.score.level;\n        if (levelDiff !== 0) return levelDiff;\n\n        // Finally by position\n        return a.score.position - b.score.position;\n      });\n\n    if (validMatches.length === 0) {\n      throw new LLMXMLError(\n        ERROR_MESSAGES.SECTION_NOT_FOUND,\n        'SECTION_NOT_FOUND',\n        { title: options.title }\n      );\n    }\n\n    // Check for ambiguous matches\n    if (validMatches.length > 1 && \n        !validMatches[0].score.exactMatch &&\n        Math.abs(validMatches[0].score.contextualScore - validMatches[1].score.contextualScore) < 0.1) {\n      logger.warn('Ambiguous match', {\n        title: options.title,\n        matches: validMatches.map(m => ({\n          title: m.node.attributes.title,\n          score: m.score,\n        })),\n        code: 'AMBIGUOUS_MATCH',\n      });\n    }\n\n    // Return only the best match if:\n    // 1. Fuzzy matches are disabled\n    // 2. We have an exact match\n    // 3. The best match is significantly better than others\n    // 4. The matches are not clearly related sections at the same level\n    if (options.fuzzyMatches === false || \n        validMatches[0].score.exactMatch ||\n        (validMatches.length > 1 && \n         Math.abs(validMatches[0].score.contextualScore - validMatches[1].score.contextualScore) >= 0.2) ||\n        (validMatches.length > 1 && \n         validMatches[0].score.level !== validMatches[1].score.level)) {\n      return [validMatches[0].node];\n    }\n\n    // For fuzzy matches with similar scores, return all matches at the same level\n    const bestScore = validMatches[0].score.contextualScore;\n    const bestLevel = validMatches[0].score.level;\n    \n    // If we have matches at different levels and a higher level contains the search term,\n    // prefer the more specific (lower level) matches\n    const hasHigherLevelMatch = validMatches.some(m => \n      m.score.level < bestLevel && \n      options.title.toLowerCase().split(/\\s+/).some(word => \n        m.node.attributes.title.toLowerCase().includes(word)\n      )\n    );\n\n    const closeMatches = validMatches.filter(m => {\n      // Must be within score threshold\n      const scoreClose = Math.abs(m.score.contextualScore - bestScore) < 0.2;\n      \n      // If we have a higher level match containing the search term,\n      // only include matches at the most specific level\n      if (hasHigherLevelMatch) {\n        return scoreClose && m.score.level === bestLevel;\n      }\n      \n      // Otherwise include all close matches that contain the search term\n      return scoreClose && options.title.toLowerCase().split(/\\s+/).some(word => \n        m.node.attributes.title.toLowerCase().includes(word)\n      );\n    });\n\n    // Return all close matches, including subsections if requested\n    const result = closeMatches.map(m => m.node);\n    if (options.includeSubsections) {\n      // For each match, include all its children\n      closeMatches.forEach(match => {\n        const collectChildren = (node: TagNode) => {\n          if (!node.children) return;\n          node.children.forEach(child => {\n            if (child.type === 'tag') {\n              result.push(child as TagNode);\n              collectChildren(child as TagNode);\n            }\n          });\n        };\n        collectChildren(match.node);\n      });\n    }\n\n    return result;\n  }\n\n  /**\n   * Recursively find matching sections\n   */\n  private findMatches(\n    nodes: ASTNode[], \n    options: ExtractOptions,\n    matches: Match[],\n    parent?: TagNode,\n    position: number = 0\n  ): number {\n    let currentPosition = position;\n\n    for (const node of nodes) {\n      if (node.type === 'tag') {\n        const tagNode = node as TagNode;\n        const initialScore = this.calculateInitialScore(tagNode, options, currentPosition);\n\n        if (initialScore.fuzzyScore > 0) {\n          matches.push({\n            node: tagNode,\n            score: initialScore,\n            parent,\n          });\n        }\n\n        if (node.children) {\n          currentPosition = this.findMatches(\n            node.children,\n            options,\n            matches,\n            tagNode,\n            currentPosition + 1\n          );\n        }\n      }\n      currentPosition++;\n    }\n\n    return currentPosition;\n  }\n\n  /**\n   * Calculate similarity score between section and search criteria\n   */\n  private calculateInitialScore(node: TagNode, options: ExtractOptions, position: number): MatchScore {\n    const nodeTitle = node.attributes.title.toLowerCase();\n    const searchTitle = options.title.toLowerCase();\n    const level = Number(node.attributes.hlevel);\n    \n    // Start with base score\n    const score: MatchScore = {\n      exactMatch: nodeTitle === searchTitle,\n      fuzzyScore: 0,\n      isContainedInHigherLevel: false,\n      hasMoreSpecificChild: false,\n      level,\n      position,\n      contextualScore: 0,\n    };\n\n    // Exact match\n    if (score.exactMatch) {\n      score.fuzzyScore = 1.0;\n      // Adjust if level constraint doesn't match\n      if (options.level && level !== options.level) {\n        score.fuzzyScore = 0.8;\n      }\n    }\n    // Word boundary match (case insensitive)\n    else if (nodeTitle.match(new RegExp(`\\\\b${searchTitle}\\\\b`, 'i'))) {\n      score.fuzzyScore = 0.95;\n    }\n    // Contains match (case insensitive)\n    else if (nodeTitle.includes(searchTitle)) {\n      score.fuzzyScore = 0.85;\n    }\n    // Partial word matches\n    else {\n      const nodeWords = nodeTitle.split(/\\s+/);\n      const searchWords = searchTitle.split(/\\s+/);\n      \n      // Calculate word-by-word match scores\n      const wordScores = searchWords.map(searchWord => {\n        let bestScore = 0;\n        nodeWords.forEach(nodeWord => {\n          // Exact word match\n          if (nodeWord === searchWord) {\n            bestScore = Math.max(bestScore, 1.0);\n          }\n          // Word boundary match\n          else if (nodeWord.match(new RegExp(`\\\\b${searchWord}\\\\b`, 'i'))) {\n            bestScore = Math.max(bestScore, 0.9);\n          }\n          // Starts with match\n          else if (nodeWord.startsWith(searchWord) || searchWord.startsWith(nodeWord)) {\n            bestScore = Math.max(bestScore, 0.8);\n          }\n          // Significant substring match\n          else if (searchWord.length > 3 && nodeWord.includes(searchWord)) {\n            bestScore = Math.max(bestScore, 0.7);\n          }\n          // Partial word match with high similarity\n          else if (searchWord.length > 2 && (\n            nodeWord.includes(searchWord) || \n            searchWord.includes(nodeWord) ||\n            this.calculateLevenshteinRatio(searchWord, nodeWord) > 0.8\n          )) {\n            bestScore = Math.max(bestScore, 0.6);\n          }\n        });\n        return bestScore;\n      });\n\n      // Calculate overall score based on word matches\n      if (wordScores.length > 0) {\n        // Average of word scores\n        const avgScore = wordScores.reduce((sum, score) => sum + score, 0) / wordScores.length;\n        \n        // Boost if all words have some match\n        const allWordsMatch = wordScores.every(score => score > 0);\n        \n        // Final fuzzy score\n        score.fuzzyScore = avgScore * (allWordsMatch ? 1.2 : 1.0);\n        \n        // Cap at 0.95 to ensure exact matches still win\n        score.fuzzyScore = Math.min(0.95, score.fuzzyScore);\n      }\n    }\n\n    // Start with fuzzy score as contextual score\n    score.contextualScore = score.fuzzyScore;\n    return score;\n  }\n\n  private calculateLevenshteinRatio(s1: string, s2: string): number {\n    const track = Array(s2.length + 1).fill(null).map(() =>\n      Array(s1.length + 1).fill(null));\n    for (let i = 0; i <= s1.length; i += 1) {\n      track[0][i] = i;\n    }\n    for (let j = 0; j <= s2.length; j += 1) {\n      track[j][0] = j;\n    }\n    for (let j = 1; j <= s2.length; j += 1) {\n      for (let i = 1; i <= s1.length; i += 1) {\n        const indicator = s1[i - 1] === s2[j - 1] ? 0 : 1;\n        track[j][i] = Math.min(\n          track[j][i - 1] + 1, // deletion\n          track[j - 1][i] + 1, // insertion\n          track[j - 1][i - 1] + indicator // substitution\n        );\n      }\n    }\n    const distance = track[s2.length][s1.length];\n    const maxLength = Math.max(s1.length, s2.length);\n    return 1 - distance / maxLength;\n  }\n\n  private analyzeRelationships(matches: Match[]): void {\n    // First pass: mark containment relationships\n    for (const match of matches) {\n      const title = match.node.attributes.title.toLowerCase();\n      \n      // Check if this title is contained in any higher level sections\n      match.score.isContainedInHigherLevel = matches.some(other => \n        other.score.level < match.score.level &&\n        other.node.attributes.title.toLowerCase().includes(title)\n      );\n\n      // Check if this section has more specific children\n      match.score.hasMoreSpecificChild = matches.some(other =>\n        other.score.level > match.score.level &&\n        other.parent === match.node\n      );\n    }\n\n    // Second pass: adjust contextual scores\n    for (const match of matches) {\n      let contextualScore = match.score.fuzzyScore;\n\n      // Exact matches get highest priority\n      if (match.score.exactMatch) {\n        contextualScore = 1.0;\n      } else {\n        // For fuzzy matches, boost scores based on word boundaries and order\n        const nodeTitle = match.node.attributes.title.toLowerCase();\n        const nodeWords = nodeTitle.split(/\\s+/);\n        const searchTitle = match.node.attributes.title.toLowerCase();\n        const searchWords = searchTitle.split(/\\s+/);\n\n        // Check for complete word matches in the right order\n        const hasOrderedWordMatch = searchWords.some(word => {\n          const wordIndex = nodeWords.indexOf(word);\n          if (wordIndex === -1) return false;\n          \n          // Check if surrounding words also match in order\n          const prevWord = searchWords[searchWords.indexOf(word) - 1];\n          const nextWord = searchWords[searchWords.indexOf(word) + 1];\n          \n          return (!prevWord || nodeWords[wordIndex - 1] === prevWord) &&\n                 (!nextWord || nodeWords[wordIndex + 1] === nextWord);\n        });\n\n        if (hasOrderedWordMatch) {\n          contextualScore *= 1.2;\n        }\n\n        // Boost more specific matches when they contain all search terms in order\n        const searchTerms = searchTitle.split(/\\s+/);\n        let lastFoundIndex = -1;\n        const containsAllTermsInOrder = searchTerms.every(term => {\n          const index = nodeWords.findIndex((word, i) => i > lastFoundIndex && word.includes(term));\n          if (index === -1) return false;\n          lastFoundIndex = index;\n          return true;\n        });\n\n        if (containsAllTermsInOrder && match.score.level > 1) {\n          contextualScore *= 1.3;\n        }\n\n        // Penalize higher levels when same term appears in children\n        if (matches.some(other => \n          other.score.level > match.score.level &&\n          other.score.fuzzyScore >= match.score.fuzzyScore\n        )) {\n          contextualScore *= 0.8;\n        }\n      }\n\n      match.score.contextualScore = Math.min(1, contextualScore);\n    }\n  }\n\n  /**\n   * Find closest matching headings for a search term\n   * \n   * @param searchTitle - Title to search for\n   * @param headings - Available headings to search within\n   * @param threshold - Minimum similarity threshold (0-1)\n   * @returns Array of closest matches with similarity scores\n   */\n  public findClosestMatches(\n    searchTitle: string,\n    headings: Array<{ title: string; level: number }>,\n    threshold: number = 0.7\n  ): MatchResult[] {\n    const searchTitleLower = searchTitle.toLowerCase();\n    const searchWords = searchTitleLower.split(/\\s+/);\n    \n    // Calculate similarity for each heading\n    const matches = headings.map(heading => {\n      const titleLower = heading.title.toLowerCase();\n      let similarity = 0;\n      \n      // Exact match\n      if (titleLower === searchTitleLower) {\n        similarity = 1.0;\n      }\n      // Word boundary match\n      else if (titleLower.match(new RegExp(`\\\\b${searchTitleLower}\\\\b`, 'i'))) {\n        similarity = 0.95;\n      }\n      // Contains match\n      else if (titleLower.includes(searchTitleLower)) {\n        similarity = 0.85;\n      }\n      // Partial word matches\n      else {\n        const titleWords = titleLower.split(/\\s+/);\n        \n        // Calculate word-by-word match scores\n        const wordScores = searchWords.map(searchWord => {\n          let bestScore = 0;\n          titleWords.forEach(titleWord => {\n            // Exact word match\n            if (titleWord === searchWord) {\n              bestScore = Math.max(bestScore, 1.0);\n            }\n            // Word boundary match\n            else if (titleWord.match(new RegExp(`\\\\b${searchWord}\\\\b`, 'i'))) {\n              bestScore = Math.max(bestScore, 0.9);\n            }\n            // Starts with match\n            else if (titleWord.startsWith(searchWord) || searchWord.startsWith(titleWord)) {\n              bestScore = Math.max(bestScore, 0.8);\n            }\n            // Significant substring match\n            else if (searchWord.length > 3 && titleWord.includes(searchWord)) {\n              bestScore = Math.max(bestScore, 0.7);\n            }\n            // Partial word match with high similarity\n            else if (searchWord.length > 2 && (\n              titleWord.includes(searchWord) || \n              searchWord.includes(titleWord) ||\n              this.calculateLevenshteinRatio(searchWord, titleWord) > 0.8\n            )) {\n              bestScore = Math.max(bestScore, 0.6);\n            }\n          });\n          return bestScore;\n        });\n\n        if (wordScores.length > 0) {\n          // Average of word scores\n          const avgScore = wordScores.reduce((sum, score) => sum + score, 0) / wordScores.length;\n          \n          // Boost if all words have some match\n          const allWordsMatch = wordScores.every(score => score > 0);\n          \n          // Final similarity score\n          similarity = avgScore * (allWordsMatch ? 1.2 : 1.0);\n          \n          // Cap at 0.95 to ensure exact matches still win\n          similarity = Math.min(0.95, similarity);\n        }\n      }\n      \n      return {\n        title: heading.title,\n        level: heading.level,\n        similarity\n      };\n    });\n    \n    // Filter by threshold and sort by similarity\n    return matches\n      .filter(match => match.similarity >= threshold)\n      .sort((a, b) => b.similarity - a.similarity);\n  }\n}\n\n// Export a singleton instance\nexport const sectionExtractor = new SectionExtractor(); ","import { ASTNode, HeadingNode, TextNode, CodeBlockNode, ListNode, ListItemNode, ParagraphNode, EmphasisNode, LinkNode } from '../types';\nimport logger from '../utils/logger';\n\n/**\n * Serializes Markdown AST back to text\n */\nexport class MarkdownSerializer {\n  /**\n   * Convert AST to Markdown text\n   */\n  public serialize(ast: ASTNode[]): string {\n    // Filter out null/undefined nodes\n    const validNodes = ast.filter((node): node is ASTNode => node != null);\n    \n    // Join nodes with a single blank line between them (two newlines)\n    // This ensures proper markdown formatting with consistent spacing\n    let markdown = validNodes.map(node => this.serializeNode(node)).filter(Boolean).join('\\n\\n');\n    \n    // Normalize any multiple blank lines (more than one) down to a single blank line\n    markdown = markdown.replace(/\\n{3,}/g, '\\n\\n');\n    \n    return markdown;\n  }\n\n  private serializeNode(node: ASTNode): string {\n    try {\n      switch (node.type) {\n        case 'heading':\n          return this.serializeHeading(node as HeadingNode);\n        case 'text':\n          return this.serializeText(node as TextNode);\n        case 'code':\n          return this.serializeCode(node as CodeBlockNode);\n        case 'list':\n          return this.serializeList(node as ListNode);\n        case 'paragraph':\n          return this.serializeParagraph(node as ParagraphNode);\n        case 'emphasis':\n        case 'strong':\n          return this.serializeEmphasis(node as EmphasisNode);\n        case 'link':\n          return this.serializeLink(node as LinkNode);\n        default:\n          logger.warn('Unknown node type during serialization', { type: node.type });\n          return '';\n      }\n    } catch (error) {\n      logger.error('Error serializing node', { node, error });\n      return '';\n    }\n  }\n\n  private serializeHeading(node: HeadingNode): string {\n    const { depth = 1, text = '' } = node;\n    return '#'.repeat(depth) + ' ' + text;\n  }\n\n  private serializeText(node: TextNode): string {\n    return node.value || '';\n  }\n\n  private serializeCode(node: CodeBlockNode): string {\n    if (!node.value) {\n      logger.warn('Empty code block', { node });\n      return '';\n    }\n    return `\\`\\`\\`${node.lang || ''}\\n${node.value}\\n\\`\\`\\``;\n  }\n\n  private serializeList(node: ListNode, indent: string = ''): string {\n    if (!Array.isArray(node.children)) {\n      logger.warn('Malformed list node', { node });\n      return '';\n    }\n\n    return node.children\n      .map((item: ListItemNode, index: number) => {\n        try {\n          const marker = node.ordered ? `${index + 1}.` : '-';\n          const itemText = this.serializeListItem(item, `${indent}  `);\n          return itemText ? `${indent}${marker} ${itemText}` : '';\n        } catch (error) {\n          logger.error('Error serializing list item', { item, error });\n          return '';\n        }\n      })\n      .filter(Boolean)\n      .join('\\n');\n  }\n\n  private serializeListItem(node: ListItemNode, indent: string): string {\n    if (!Array.isArray(node.children)) {\n      logger.warn('Malformed list item', { node });\n      return '';\n    }\n\n    return node.children\n      .map(child => {\n        try {\n          if (child.type === 'list') {\n            return '\\n\\n' + this.serializeList(child as ListNode, indent);\n          }\n          return this.serializeNode(child);\n        } catch (error) {\n          logger.error('Error serializing list item child', { child, error });\n          return '';\n        }\n      })\n      .filter(Boolean)\n      .join('\\n')\n      .replace(/\\n/g, '\\n' + indent);\n  }\n\n  private serializeParagraph(node: ParagraphNode): string {\n    if (!Array.isArray(node.children)) {\n      logger.warn('Malformed paragraph node', { node });\n      return '';\n    }\n\n    return node.children\n      .map(child => {\n        try {\n          switch (child.type) {\n            case 'text':\n              return (child as TextNode).value || '';\n            case 'emphasis':\n            case 'strong':\n              return this.serializeEmphasis(child as EmphasisNode);\n            case 'link':\n              return this.serializeLink(child as LinkNode);\n            default:\n              return '';\n          }\n        } catch (error) {\n          logger.error('Error serializing paragraph child', { child, error });\n          return '';\n        }\n      })\n      .filter(Boolean)\n      .join('');\n  }\n\n  private serializeEmphasis(node: EmphasisNode): string {\n    if (!Array.isArray(node.children)) {\n      logger.warn('Malformed emphasis node', { node });\n      return '';\n    }\n\n    // Use the original marker if available, otherwise fall back to * for emphasis and ** for strong\n    const defaultMarker = node.type === 'emphasis' ? '*' : '**';\n    const marker = (node as any).marker ?? defaultMarker;\n    const content = node.children\n      .map(child => (child as TextNode).value || '')\n      .filter(Boolean)\n      .join('');\n    \n    return content ? `${marker}${content}${marker}` : '';\n  }\n\n  private serializeLink(node: LinkNode): string {\n    if (!Array.isArray(node.children) || !node.url) {\n      logger.warn('Malformed link node', { node });\n      return '';\n    }\n\n    const text = node.children\n      .map(child => (child as TextNode).value || '')\n      .filter(Boolean)\n      .join('');\n    \n    return text ? `[${text}](${node.url})` : '';\n  }\n}\n\n// Export a singleton instance\nexport const markdownSerializer = new MarkdownSerializer(); ","import { ASTNode, TagNode, TextNode, ParagraphNode, ListNode, ListItemNode, CodeBlockNode } from '../types';\nimport logger from '../utils/logger';\n\n/**\n * Serializes LLM-XML AST back to text\n */\nexport class LLMSerializer {\n  constructor(private options: LLMXMLOptions = {}) {\n    this.options = {\n      includeTitle: false,\n      includeHlevel: false,\n      verbose: false,\n      ...options\n    };\n  }\n\n  private formatTagName(name: string): string {\n    if (!name) return '';\n\n    // Split into words and clean up\n    const words = name\n      .replace(/[`*_\\[\\]]/g, '') // Remove markdown formatting\n      .replace(/([a-z])([A-Z])/g, '$1 $2') // Split camelCase\n      .split(/[^a-zA-Z0-9]+/) // Split on non-word chars\n      .filter(Boolean)\n      .map(word => word.toLowerCase());\n\n    if (words.length === 0) return '';\n\n    switch (this.options.tagFormat) {\n      case 'snake_case':\n        return words.join('_');\n      case 'SCREAMING_SNAKE':\n        return words.join('_').toUpperCase();\n      case 'camelCase':\n        return words[0] + words.slice(1).map(w => w.charAt(0).toUpperCase() + w.slice(1)).join('');\n      case 'UPPERCASE':\n        return words.join('').toUpperCase();\n      case 'PascalCase':\n      default:\n        return words.map(w => w.charAt(0).toUpperCase() + w.slice(1)).join('');\n    }\n  }\n\n  /**\n   * Convert AST to LLM-XML text\n   */\n  public serialize(ast: ASTNode[]): string {\n    // Filter out null/undefined nodes\n    const validNodes = ast.filter((node): node is ASTNode => node != null);\n    return validNodes.map(node => this.serializeNode(node)).filter(Boolean).join('\\n\\n');\n  }\n\n  private serializeNode(node: ASTNode, indent: string = ''): string {\n    try {\n      switch (node.type) {\n        case 'tag':\n          return this.serializeTag(node as TagNode, indent);\n        case 'text':\n          return this.serializeText(node as TextNode, indent);\n        case 'paragraph':\n          return this.serializeParagraph(node as ParagraphNode, indent);\n        case 'list':\n          return this.serializeList(node as ListNode, indent);\n        case 'code':\n          return this.serializeCode(node as CodeBlockNode, indent);\n        default:\n          logger.warn('Unknown node type during serialization', { type: node.type });\n          return '';\n      }\n    } catch (error) {\n      logger.error('Error serializing node', { node, error });\n      return '';\n    }\n  }\n\n  private serializeTag(node: TagNode, indent: string): string {\n    try {\n      const { name, attributes = {}, children = [] } = node;\n      \n      // Build opening tag with attributes\n      const formattedName = this.formatTagName(name);\n      let tag = `${indent}<${this.escapeXml(formattedName)}`;\n      \n      // Include attributes based on options\n      const shouldIncludeTitle = this.options.verbose || this.options.includeTitle;\n      const shouldIncludeHlevel = this.options.verbose || this.options.includeHlevel;\n      \n      if (shouldIncludeTitle && attributes.title) {\n        tag += ` title=\"${this.escapeXml(attributes.title)}\"`;\n      }\n      if (shouldIncludeHlevel && attributes.hlevel && attributes.hlevel !== '1') {\n        tag += ` hlevel=\"${this.escapeXml(attributes.hlevel)}\"`;\n      }\n      tag += '>';\n\n      // Add children with proper indentation\n      if (children.length > 0) {\n        const childIndent = indent + '  ';\n        const validChildren = children\n          .filter((child): child is ASTNode => child != null)\n          .map(child => this.serializeNode(child, childIndent))\n          .filter(Boolean);\n\n        if (validChildren.length > 0) {\n          tag += '\\n' + validChildren.join('\\n').trimEnd();\n          if (!validChildren[validChildren.length - 1].endsWith('\\n')) {\n            tag += '\\n' + indent;\n          } else {\n            tag += indent;\n          }\n        }\n      }\n\n      // Add closing tag\n      return tag + `</${this.escapeXml(formattedName)}>`;\n    } catch (error) {\n      logger.error('Error serializing tag', { node, error });\n      return '';\n    }\n  }\n\n  private serializeText(node: TextNode, indent: string): string {\n    if (!node.value) return '';\n    \n    // Skip JSON detection for code blocks - preserve them exactly as is\n    if (node.textType === 'code') {\n      return node.value;\n    }\n    \n    // Always preserve and pretty-print JSON structures in regular text\n    return this.preserveJsonInText(node.value.trimEnd());\n  }\n\n  /**\n   * Preserves JSON structures within text content and pretty-prints them\n   * @param text The text content that may contain JSON structures\n   * @returns Text with JSON structures preserved and pretty-printed\n   */\n  private preserveJsonInText(text: string): string {\n    // Regular expression to find potential JSON objects or arrays\n    const jsonPattern = /({[\\s\\S]*?}|\\[[\\s\\S]*?\\])/g;\n    \n    // If no potential JSON structures, return as is\n    if (!jsonPattern.test(text)) {\n      return this.escapeXml(text);\n    }\n    \n    // Process text to preserve JSON structures\n    return text.replace(jsonPattern, (match) => {\n      try {\n        // Verify this is valid JSON by attempting to parse it\n        const parsed = JSON.parse(match);\n        // If it's valid JSON, return it pretty-printed with 2-space indentation\n        return JSON.stringify(parsed, null, 2);\n      } catch (error) {\n        // If it's not valid JSON, escape it like normal text\n        return this.escapeXml(match);\n      }\n    });\n  }\n\n  private serializeParagraph(node: ParagraphNode, indent: string): string {\n    if (!Array.isArray(node.children)) {\n      logger.warn('Malformed paragraph node', { node });\n      return '';\n    }\n    return indent + node.children\n      .map(child => this.serializeNode(child, ''))\n      .filter(Boolean)\n      .join('');\n  }\n\n  private serializeList(node: ListNode, indent: string): string {\n    if (!Array.isArray(node.children)) {\n      logger.warn('Malformed list node', { node });\n      return '';\n    }\n    return node.children\n      .map((item: ListItemNode, index: number) => {\n        const marker = node.ordered ? `${index + 1}.` : '-';\n        const itemText = this.serializeListItem(item, `${indent}  `);\n        return itemText ? `${indent}${marker} ${itemText}` : '';\n      })\n      .filter(Boolean)\n      .join('\\n');\n  }\n\n  private serializeListItem(node: ListItemNode, indent: string): string {\n    if (!Array.isArray(node.children)) {\n      logger.warn('Malformed list item', { node });\n      return '';\n    }\n    return node.children\n      .map(child => {\n        if (child.type === 'list') {\n          return '\\n' + this.serializeList(child as ListNode, indent);\n        }\n        return this.serializeNode(child, '');\n      })\n      .filter(Boolean)\n      .join('');\n  }\n\n  private serializeCode(node: CodeBlockNode, indent: string): string {\n    const { lang = '', value = '' } = node;\n    if (!value) {\n      logger.warn('Empty code block', { node });\n      return '';\n    }\n    return `${indent}\\`\\`\\`${lang}\\n${value}\\`\\`\\``;\n  }\n\n  private escapeXml(str: string): string {\n    return str\n      .replace(/&/g, '&amp;')\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;')\n      .replace(/\"/g, '&quot;')\n      .replace(/'/g, '&apos;');\n  }\n}\n\n// Export a singleton instance\nexport const llmSerializer = new LLMSerializer({\n  includeTitle: true,\n  includeHlevel: true\n}); ","import type { Warning, LLMXMLOptions } from './types';\nimport { markdownParser } from './parser/markdown';\nimport { llmParser } from './parser/llm';\nimport { markdownToLLM } from './transformer/md-to-llm';\nimport { llmToMarkdown } from './transformer/llm-to-md';\nimport { sectionExtractor } from './extractor';\nimport logger, { events, configureLogger } from './utils/logger';\nimport { markdownSerializer } from './serializer/markdown';\nimport { LLMXMLError } from './errors';\nimport type { ASTNode, TagNode } from './types/ast';\nimport { LLMSerializer } from './serializer/llm';\n\n/**\n * Options for section extraction\n */\nexport interface GetSectionOptions {\n  /** Only match headers at this level */\n  level?: number;\n  /** Require exact matches */\n  exact?: boolean;\n  /** Include subsections in result */\n  includeNested?: boolean;\n  /** Minimum fuzzy match score (0-1) */\n  fuzzyThreshold?: number;\n}\n\n/**\n * Heading information from document\n */\nexport interface HeadingInfo {\n  /** Heading title */\n  title: string;\n  /** Heading level (1-6) */\n  level: number;\n  /** Hierarchical path to this heading */\n  path: string[];\n}\n\n/**\n * Main LLMXML class for converting between Markdown and LLM-friendly pseudo-XML\n */\nexport class LLMXML {\n  private options: LLMXMLOptions;\n  private llmSerializer: LLMSerializer;\n  private warningHandlers: ((warning: Warning) => void)[] = [];\n\n  /**\n   * Creates a new LLMXML instance\n   * \n   * @param options - Configuration options\n   */\n  constructor(options: LLMXMLOptions = {}) {\n    this.options = {\n      defaultFuzzyThreshold: 0.7,\n      warningLevel: 'all',\n      includeHlevel: false,\n      includeTitle: false,\n      verbose: false,\n      tagFormat: 'PascalCase',\n      ...options,\n    };\n    this.llmSerializer = new LLMSerializer(this.options);\n    \n    // Configure logger based on options\n    configureLogger(this.options);\n    \n    // Log initialization only when not silenced\n    if (this.options.warningLevel !== 'none' && this.options.verbose) {\n      logger.info('LLMXML instance created', { options: this.options });\n    }\n    \n    // Register warning handler\n    events.on('warning', (warning: Warning) => {\n      if (this.options.warningLevel === 'none') return;\n      if (this.options.warningLevel === 'ambiguous-only' && warning.code !== 'AMBIGUOUS_MATCH') return;\n      this.warningHandlers.forEach(handler => handler(warning));\n    });\n  }\n\n  /**\n   * Convert Markdown to LLM-XML format\n   */\n  public async toXML(markdown: string): Promise<string> {\n    const mdAst = await markdownParser.parseToAST(markdown);\n    logger.debug('Parsed Markdown AST', { ast: mdAst });\n\n    const xmlAst = markdownToLLM.transform(mdAst);\n    logger.debug('Transformed to LLM-XML AST', { ast: xmlAst });\n\n    return this.llmSerializer.serialize(xmlAst);\n  }\n\n  /**\n   * Convert LLM-XML to Markdown format\n   */\n  public async toMarkdown(xml: string): Promise<string> {\n    const xmlAst = await llmParser.parseToAST(xml);\n    logger.debug('Parsed LLM-XML AST', { ast: xmlAst });\n\n    const mdAst = llmToMarkdown.transform(xmlAst);\n    logger.debug('Transformed to Markdown AST', { ast: mdAst });\n\n    return markdownSerializer.serialize(mdAst);\n  }\n\n  /**\n   * Extract a single section from the document\n   */\n  public async getSection(\n    content: string,\n    title: string,\n    options: GetSectionOptions = {}\n  ): Promise<string> {\n    try {\n      const sections = await this.getSections(content, title, options);\n      return sections[0];\n    } catch (error) {\n      if (error instanceof LLMXMLError && error.code === 'SECTION_NOT_FOUND') {\n        // Enhance error with available headings\n        const headings = await this.getHeadings(content);\n        throw new LLMXMLError(\n          `Section \"${title}\" not found in document`,\n          'SECTION_NOT_FOUND',\n          { \n            title,\n            availableHeadings: headings,\n            closestMatches: sectionExtractor.findClosestMatches(title, headings, options.fuzzyThreshold || this.options.defaultFuzzyThreshold)\n          }\n        );\n      }\n      throw error;\n    }\n  }\n\n  /**\n   * Extract multiple matching sections from the document\n   */\n  public async getSections(\n    content: string,\n    title: string,\n    options: GetSectionOptions = {}\n  ): Promise<string[]> {\n    // Validate section options\n    if (options.level !== undefined && (options.level < 1 || options.level > 6)) {\n      throw new LLMXMLError(\n        'Invalid heading level. Must be between 1 and 6.',\n        'INVALID_LEVEL',\n        { level: options.level }\n      );\n    }\n\n    let ast: ASTNode[];\n    const isXML = content.trim().startsWith('<');\n\n    if (isXML) {\n      ast = await llmParser.parseToAST(content);\n    } else {\n      const mdAst = await markdownParser.parseToAST(content);\n      ast = markdownToLLM.transform(mdAst);\n    }\n\n    // Register warning handler for section extraction\n    const warnings: Warning[] = [];\n    const warningHandler = (warning: Warning) => {\n      warnings.push(warning);\n      this.emitWarning(warning);\n    };\n    events.on('warning', warningHandler);\n\n    try {\n      const matches = sectionExtractor.findSections(ast, {\n        title,\n        level: options.level,\n        threshold: options.fuzzyThreshold || this.options.defaultFuzzyThreshold,\n        fuzzyMatches: !options.exact,\n        includeSubsections: options.includeNested\n      });\n\n      // If we have multiple matches with similar scores, emit an ambiguous match warning\n      if (matches.length > 1) {\n        const warning: Warning = {\n          code: 'AMBIGUOUS_MATCH',\n          message: `Multiple potential matches found for section \"${title}\"`,\n          details: {\n            matches: matches.map(match => ({\n              title: match.attributes.title,\n              score: match.attributes.score\n            }))\n          }\n        };\n        warningHandler(warning);\n      }\n\n      // Convert matches back to original format\n      return matches.map(match => {\n        if (isXML) {\n          return this.llmSerializer.serialize([match]);\n        } else {\n          return markdownSerializer.serialize(llmToMarkdown.transform([match]));\n        }\n      });\n    } catch (error) {\n      if (error instanceof LLMXMLError && error.code === 'SECTION_NOT_FOUND') {\n        // Enhance error with available headings\n        const headings = this.extractHeadingsFromAST(ast);\n        error.details = { \n          availableHeadings: headings,\n          closestMatches: sectionExtractor.findClosestMatches(title, \n            headings.map(h => ({ title: h.title, level: h.level })), \n            options.fuzzyThreshold || this.options.defaultFuzzyThreshold),\n          ...(error.details as Record<string, unknown> || {})\n        };\n      }\n      throw error;\n    } finally {\n      // Clean up warning handler\n      events.off('warning', warningHandler);\n    }\n  }\n\n  /**\n   * Extract all headings from the document\n   * \n   * @param content - Markdown or LLM-XML content\n   * @returns Array of heading information\n   */\n  public async getHeadings(content: string): Promise<HeadingInfo[]> {\n    let ast: ASTNode[];\n    const isXML = content.trim().startsWith('<');\n\n    if (isXML) {\n      ast = await llmParser.parseToAST(content);\n    } else {\n      const mdAst = await markdownParser.parseToAST(content);\n      ast = markdownToLLM.transform(mdAst);\n    }\n\n    return this.extractHeadingsFromAST(ast);\n  }\n\n  /**\n   * Extract headings from AST\n   * \n   * @private\n   * @param ast - Document AST\n   * @returns Array of heading information\n   */\n  private extractHeadingsFromAST(ast: ASTNode[]): HeadingInfo[] {\n    const headings: HeadingInfo[] = [];\n    \n    const traverse = (nodes: ASTNode[], currentPath: string[] = []) => {\n      for (const node of nodes) {\n        if (node.type === 'tag') {\n          const tagNode = node as TagNode;\n          const level = parseInt(tagNode.attributes.hlevel || '1', 10);\n          const title = tagNode.attributes.title || tagNode.name;\n          \n          // Adjust current path based on level\n          while (currentPath.length >= level) {\n            currentPath.pop();\n          }\n          \n          // Add this node to the path\n          currentPath.push(title);\n          \n          // Record heading\n          headings.push({\n            title,\n            level,\n            path: [...currentPath]\n          });\n          \n          // Process children with updated path\n          if (tagNode.children) {\n            traverse(tagNode.children, [...currentPath]);\n          }\n        }\n      }\n    };\n    \n    traverse(ast);\n    return headings;\n  }\n\n  /**\n   * Register a warning handler\n   */\n  public onWarning(handler: (warning: Warning) => void): void {\n    this.warningHandlers.push(handler);\n  }\n\n  /**\n   * Remove a previously registered warning handler\n   * \n   * @param event - The event type ('warning')\n   * @param handler - The handler to remove\n   */\n  public off(_event: 'warning', handler: (warning: Warning) => void): void {\n    this.warningHandlers = this.warningHandlers.filter(h => h !== handler);\n  }\n\n  /**\n   * Emit a warning to all registered handlers\n   * \n   * @param warning - The warning to emit\n   */\n  protected emitWarning(warning: Warning): void {\n    if (\n      this.options.warningLevel === 'none' ||\n      (this.options.warningLevel === 'ambiguous-only' && warning.code !== 'AMBIGUOUS_MATCH')\n    ) {\n      return;\n    }\n\n    for (const handler of this.warningHandlers) {\n      handler(warning);\n    }\n  }\n\n  /**\n   * Convert Markdown to XML and back to Markdown, preserving all structure\n   */\n  public async roundTrip(markdown: string): Promise<string> {\n    const mdAst = await markdownParser.parseToAST(markdown);\n    logger.debug('Parsed Markdown AST', { ast: mdAst });\n\n    const xmlAst = markdownToLLM.transform(mdAst);\n    logger.debug('Transformed to LLM-XML AST', { ast: xmlAst });\n\n    // Create a new serializer with hlevel enabled to preserve heading levels\n    const serializer = new LLMSerializer({\n      ...this.options,\n      includeHlevel: true\n    });\n    const xml = serializer.serialize(xmlAst);\n    return this.toMarkdown(xml);\n  }\n\n  /**\n   * Normalize markdown formatting with consistent spacing\n   * \n   * @param markdown - The markdown content to normalize\n   * @returns Normalized markdown with consistent spacing\n   */\n  public async normalizeMarkdown(markdown: string): Promise<string> {\n    // Parse the markdown into an AST\n    const mdAst = await markdownParser.parseToAST(markdown);\n    logger.debug('Parsed Markdown AST for normalization', { ast: mdAst });\n    \n    // Serialize it back to markdown with proper spacing\n    return markdownSerializer.serialize(mdAst);\n  }\n}\n\n/**\n * Create a new LLMXML instance with the given options\n * \n * @param options - Configuration options\n * @returns A new LLMXML instance\n */\nexport function createLLMXML(options?: LLMXMLOptions): LLMXML {\n  return new LLMXML(options);\n}\n\nexport * from './types';\nexport * from './errors'; "]}