@jixo/cli 0.25.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/assets/bundle/google-aistudio.browser.js +562 -2433
  2. package/assets/bundle/google-aistudio.jixo.js +63655 -0
  3. package/assets/prompt.json +1 -1
  4. package/assets/tools.json +1 -0
  5. package/bundle/{acorn-CU7YmuGp.js → acorn-BJF4qA9z.js} +17 -39
  6. package/bundle/acorn-BJF4qA9z.js.map +1 -0
  7. package/bundle/{angular-BZFEnvyh.js → angular-Cu7-vCtW.js} +44 -207
  8. package/bundle/angular-Cu7-vCtW.js.map +1 -0
  9. package/bundle/{babel-BC5Ty8sN.js → babel-ZTOL0_x6.js} +109 -125
  10. package/bundle/babel-ZTOL0_x6.js.map +1 -0
  11. package/bundle/{estree-DZTSfOv_.js → estree-5JRlNokb.js} +9 -10
  12. package/bundle/estree-5JRlNokb.js.map +1 -0
  13. package/bundle/file-replacer-CQZSjZXb.js +3 -0
  14. package/bundle/{file-replacer-cUUAxJ6b.js → file-replacer-CZhq6MJJ.js} +1543 -1127
  15. package/bundle/file-replacer-CZhq6MJJ.js.map +1 -0
  16. package/bundle/{flow-CNTeHoxv.js → flow-Cd3L1dMY.js} +482 -680
  17. package/bundle/flow-Cd3L1dMY.js.map +1 -0
  18. package/bundle/{gen-prompt-qt1W8jAy.js → gen-prompt-3bZp8K__.js} +5610 -526
  19. package/bundle/gen-prompt-3bZp8K__.js.map +1 -0
  20. package/bundle/gen-prompt-IINGP6mf.js +4 -0
  21. package/bundle/{glimmer-DYkbcawC.js → glimmer-N8tyHqy2.js} +29 -47
  22. package/bundle/glimmer-N8tyHqy2.js.map +1 -0
  23. package/bundle/{graphql-fCaNVuM0.js → graphql-BsfPfzVT.js} +8 -8
  24. package/bundle/graphql-BsfPfzVT.js.map +1 -0
  25. package/bundle/{html-Bb8ztcZq.js → html-CV8zEM7F.js} +8 -10
  26. package/bundle/html-CV8zEM7F.js.map +1 -0
  27. package/bundle/index.js +16415 -7240
  28. package/bundle/index.js.map +1 -0
  29. package/bundle/{markdown-ChusAllR.js → markdown-Cq8CRcxA.js} +5 -89
  30. package/bundle/markdown-Cq8CRcxA.js.map +1 -0
  31. package/bundle/{meriyah-9NeL3We4.js → meriyah-f8qRdfjZ.js} +10 -16
  32. package/bundle/meriyah-f8qRdfjZ.js.map +1 -0
  33. package/bundle/{postcss-DXCUuMfC.js → postcss-CtnQb9ad.js} +69 -159
  34. package/bundle/postcss-CtnQb9ad.js.map +1 -0
  35. package/bundle/{typescript-C2HFEnMP.js → typescript-BQw1QTVg.js} +55 -106
  36. package/bundle/typescript-BQw1QTVg.js.map +1 -0
  37. package/bundle/{yaml-ByEZ6gmG.js → yaml-B5kqwurc.js} +55 -127
  38. package/bundle/yaml-B5kqwurc.js.map +1 -0
  39. package/dist/commands/google-aistudio.d.ts.map +1 -1
  40. package/dist/commands/google-aistudio.js +6 -16
  41. package/dist/commands/google-aistudio.js.map +1 -1
  42. package/dist/commands/groq.js +1 -1
  43. package/dist/commands/groq.js.map +1 -1
  44. package/dist/prompts.json +2 -14
  45. package/dist/runCli.js +3 -3
  46. package/dist/runCli.js.map +1 -1
  47. package/package.json +9 -8
  48. package/assets/bundle/groq.browser.js +0 -3714
  49. package/bundle/external-CS43xY0F.js +0 -285
  50. package/bundle/file-replacer-nbB4NnrU.js +0 -3
  51. package/bundle/gen-prompt-BxI7DHUD.js +0 -4
  52. package/dist/cli.d.ts +0 -2
  53. package/dist/cli.d.ts.map +0 -1
  54. package/dist/cli.js +0 -83
  55. package/dist/cli.js.map +0 -1
  56. package/dist/commands/daemon.d.ts +0 -5
  57. package/dist/commands/daemon.d.ts.map +0 -1
  58. package/dist/commands/daemon.js +0 -20
  59. package/dist/commands/daemon.js.map +0 -1
  60. package/dist/commands/doctor/config.d.ts +0 -3
  61. package/dist/commands/doctor/config.d.ts.map +0 -1
  62. package/dist/commands/doctor/config.js +0 -17
  63. package/dist/commands/doctor/config.js.map +0 -1
  64. package/dist/commands/doctor/doctor.d.ts +0 -3
  65. package/dist/commands/doctor/doctor.d.ts.map +0 -1
  66. package/dist/commands/doctor/doctor.js +0 -158
  67. package/dist/commands/doctor/doctor.js.map +0 -1
  68. package/dist/commands/doctor/doctor.test.d.ts +0 -2
  69. package/dist/commands/doctor/doctor.test.d.ts.map +0 -1
  70. package/dist/commands/doctor/doctor.test.js +0 -14
  71. package/dist/commands/doctor/doctor.test.js.map +0 -1
  72. package/dist/commands/doctor/index.d.ts +0 -2
  73. package/dist/commands/doctor/index.d.ts.map +0 -1
  74. package/dist/commands/doctor/index.js +0 -8
  75. package/dist/commands/doctor/index.js.map +0 -1
  76. package/dist/commands/doctor/types.d.ts +0 -45
  77. package/dist/commands/doctor/types.d.ts.map +0 -1
  78. package/dist/commands/doctor/types.js +0 -3
  79. package/dist/commands/doctor/types.js.map +0 -1
  80. package/dist/commands/init.d.ts +0 -2
  81. package/dist/commands/init.d.ts.map +0 -1
  82. package/dist/commands/init.js +0 -40
  83. package/dist/commands/init.js.map +0 -1
  84. package/dist/commands/tasks/run.d.ts +0 -10
  85. package/dist/commands/tasks/run.d.ts.map +0 -1
  86. package/dist/commands/tasks/run.js +0 -44
  87. package/dist/commands/tasks/run.js.map +0 -1
  88. package/dist/config.d.ts +0 -15
  89. package/dist/config.d.ts.map +0 -1
  90. package/dist/config.js +0 -23
  91. package/dist/config.js.map +0 -1
  92. package/dist/env.d.ts +0 -6
  93. package/dist/env.d.ts.map +0 -1
  94. package/dist/env.js +0 -16
  95. package/dist/env.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gen-prompt-3bZp8K__.js","names":["dntShim.dntGlobalThis","code","toString","isBuffer","isObject","extend","i","typeOf","extend","sections","content","i","index","string","YAMLException","toString","common","Mark","position","toString","YAMLException","Type","common","YAMLException","Type","index","Schema","definition","Type","Type","Type","Schema","Type","Type","common","Type","index","common","Type","Schema","Schema","Type","Type","Type","code","Type","_hasOwnProperty","_toString","index","Type","_toString","index","Type","_hasOwnProperty","Schema","Type","Type","module","exports","parse","node","parser","code","i","text","index","list","Reader","previous","check","common","YAMLException","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","_hasOwnProperty","State","index","index","string","position","i","yaml","engines","parse","typeOf","engines","utils","typeOf","getEngine","defaults","matter","defaults","stringify","utils","defaults","fs","parse","matter","path","exists","__export","deferred","__require","all","path","index","FOLDER","i","Buffer2","text","parse","spawn","log","code","isError","path","code","path","fs","path","pathJoin","fs","content","match","match","P","filecontent","micromatch","index","own","list","remove","all","index","extension","code","list","code","code","check","code","ok","previous","code","code","point","index","ok","code","index","constructs","index","text","attentionMarkers","previous","code","ok","code","ok","code","ok","code","ok","code","ok","code","ok","code","ok","start","effects","nok","code","ok","furtherStart","index","code","ok","index","index","previous","start","content","previous","code","ok","code","ok","code","ok","code","ok","code","ok","code","ok","titleBefore","code","ok","content","text","code","ok","index","code","ok","index","code","ok","index","text","code","ok","code","ok","code","ok","code","ok","code","ok","code","ok","index","content","text","definition","code","ok","content","code","createResolver","constructs","text","code","list","index","document","flow","string","text","resolveText","point","code","exit","constructs","all","list","ok","from","index","parser","defaultConstructs","code","point","blockQuote","codeText","definition","list","thematicBreak","index","listItem","node","exit","data","text","string","extension","index","check","all","node","check","node","visit","index","index","node","node","position","i","match","P","i","once"],"sources":["../../../node_modules/.pnpm/@gaubee+nodekit@0.12.0_@gaubee+node@0.4.0_@gaubee+util@0.35.1__@gaubee+util@0.35.1_@types+node@24.1.0/node_modules/@gaubee/nodekit/esm/_dnt.shims.js","../../../node_modules/.pnpm/@gaubee+nodekit@0.12.0_@gaubee+node@0.4.0_@gaubee+util@0.35.1__@gaubee+util@0.35.1_@types+node@24.1.0/node_modules/@gaubee/nodekit/esm/deps/jsr.io/@std/fmt/1.0.8/colors.js","../../../node_modules/.pnpm/kind-of@6.0.3/node_modules/kind-of/index.js","../../../node_modules/.pnpm/is-extendable@0.1.1/node_modules/is-extendable/index.js","../../../node_modules/.pnpm/extend-shallow@2.0.1/node_modules/extend-shallow/index.js","../../../node_modules/.pnpm/section-matter@1.0.0/node_modules/section-matter/index.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/common.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/exception.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/mark.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/schema.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type/str.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type/seq.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type/map.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type/null.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type/bool.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type/int.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type/float.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/schema/json.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/schema/core.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type/merge.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type/binary.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type/omap.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type/pairs.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type/set.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../../../node_modules/.pnpm/esprima@4.0.1/node_modules/esprima/dist/esprima.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/type/js/function.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/loader.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/dumper.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml.js","../../../node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/index.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/engines.js","../../../node_modules/.pnpm/strip-bom-string@1.0.0/node_modules/strip-bom-string/index.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/utils.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/defaults.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/engine.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/stringify.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/excerpt.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/to-file.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/parse.js","../../../node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/index.js","../../../node_modules/.pnpm/@gaubee+nodekit@0.12.0_@gaubee+node@0.4.0_@gaubee+util@0.35.1__@gaubee+util@0.35.1_@types+node@24.1.0/node_modules/@gaubee/nodekit/esm/markdown_file.js","../../../node_modules/.pnpm/@kwsites+file-exists@1.1.1/node_modules/@kwsites/file-exists/dist/src/index.js","../../../node_modules/.pnpm/@kwsites+file-exists@1.1.1/node_modules/@kwsites/file-exists/dist/index.js","../../../node_modules/.pnpm/@kwsites+promise-deferred@1.1.1/node_modules/@kwsites/promise-deferred/dist/index.js","../../../node_modules/.pnpm/simple-git@3.28.0/node_modules/simple-git/dist/esm/index.js","../../dev/dist/git-helper/gitCommitContents.js","../../dev/dist/git-helper/easyExec.js","../../dev/dist/git-helper/parseNameStatus.js","../../dev/dist/git-helper/simplifyDiffForAI.js","../../dev/dist/git-helper/gitCommitDiffs.js","../../dev/dist/git-helper/getWorkingFiles.js","../../dev/dist/git-helper/gitWorkingContents.js","../../dev/dist/git-helper/gitWorkingDiffs.js","../../dev/dist/git-helper/types.js","../../dev/dist/gen-prompt/replacers/git-replacer.js","../../../node_modules/.pnpm/mdast-util-to-string@4.0.0/node_modules/mdast-util-to-string/lib/index.js","../../../node_modules/.pnpm/character-entities@2.0.2/node_modules/character-entities/index.js","../../../node_modules/.pnpm/decode-named-character-reference@1.2.0/node_modules/decode-named-character-reference/index.js","../../../node_modules/.pnpm/micromark-util-chunked@2.0.1/node_modules/micromark-util-chunked/index.js","../../../node_modules/.pnpm/micromark-util-combine-extensions@2.0.1/node_modules/micromark-util-combine-extensions/index.js","../../../node_modules/.pnpm/micromark-util-decode-numeric-character-reference@2.0.2/node_modules/micromark-util-decode-numeric-character-reference/index.js","../../../node_modules/.pnpm/micromark-util-normalize-identifier@2.0.1/node_modules/micromark-util-normalize-identifier/index.js","../../../node_modules/.pnpm/micromark-util-character@2.1.1/node_modules/micromark-util-character/index.js","../../../node_modules/.pnpm/micromark-factory-space@2.0.1/node_modules/micromark-factory-space/index.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/initialize/content.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/initialize/document.js","../../../node_modules/.pnpm/micromark-util-classify-character@2.0.1/node_modules/micromark-util-classify-character/index.js","../../../node_modules/.pnpm/micromark-util-resolve-all@2.0.1/node_modules/micromark-util-resolve-all/index.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/attention.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/autolink.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/blank-line.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/block-quote.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/character-escape.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/character-reference.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/code-fenced.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/code-indented.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/code-text.js","../../../node_modules/.pnpm/micromark-util-subtokenize@2.1.0/node_modules/micromark-util-subtokenize/lib/splice-buffer.js","../../../node_modules/.pnpm/micromark-util-subtokenize@2.1.0/node_modules/micromark-util-subtokenize/index.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/content.js","../../../node_modules/.pnpm/micromark-factory-destination@2.0.1/node_modules/micromark-factory-destination/index.js","../../../node_modules/.pnpm/micromark-factory-label@2.0.1/node_modules/micromark-factory-label/index.js","../../../node_modules/.pnpm/micromark-factory-title@2.0.1/node_modules/micromark-factory-title/index.js","../../../node_modules/.pnpm/micromark-factory-whitespace@2.0.1/node_modules/micromark-factory-whitespace/index.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/definition.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/heading-atx.js","../../../node_modules/.pnpm/micromark-util-html-tag-name@2.0.1/node_modules/micromark-util-html-tag-name/index.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/html-flow.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/html-text.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/label-end.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/label-start-image.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/label-start-link.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/line-ending.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/thematic-break.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/list.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/setext-underline.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/initialize/flow.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/initialize/text.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/constructs.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/create-tokenizer.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/parse.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/postprocess.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/preprocess.js","../../../node_modules/.pnpm/micromark-util-decode-string@2.0.1/node_modules/micromark-util-decode-string/index.js","../../../node_modules/.pnpm/unist-util-stringify-position@4.0.0/node_modules/unist-util-stringify-position/lib/index.js","../../../node_modules/.pnpm/mdast-util-from-markdown@2.0.2/node_modules/mdast-util-from-markdown/lib/index.js","../../../node_modules/.pnpm/unist-util-is@6.0.0/node_modules/unist-util-is/lib/index.js","../../../node_modules/.pnpm/unist-util-visit-parents@6.0.1/node_modules/unist-util-visit-parents/lib/color.node.js","../../../node_modules/.pnpm/unist-util-visit-parents@6.0.1/node_modules/unist-util-visit-parents/lib/index.js","../../../node_modules/.pnpm/unist-util-visit@5.0.0/node_modules/unist-util-visit/lib/index.js","../../dev/dist/utils/markdown-remove-comment.js","../../dev/dist/gen-prompt.js"],"sourcesContent":["const dntGlobals = {};\nexport const dntGlobalThis = createMergeProxy(globalThis, dntGlobals);\nfunction createMergeProxy(baseObj, extObj) {\n return new Proxy(baseObj, {\n get(_target, prop, _receiver) {\n if (prop in extObj) {\n return extObj[prop];\n }\n else {\n return baseObj[prop];\n }\n },\n set(_target, prop, value) {\n if (prop in extObj) {\n delete extObj[prop];\n }\n baseObj[prop] = value;\n return true;\n },\n deleteProperty(_target, prop) {\n let success = false;\n if (prop in extObj) {\n delete extObj[prop];\n success = true;\n }\n if (prop in baseObj) {\n delete baseObj[prop];\n success = true;\n }\n return success;\n },\n ownKeys(_target) {\n const baseKeys = Reflect.ownKeys(baseObj);\n const extKeys = Reflect.ownKeys(extObj);\n const extKeysSet = new Set(extKeys);\n return [...baseKeys.filter((k) => !extKeysSet.has(k)), ...extKeys];\n },\n defineProperty(_target, prop, desc) {\n if (prop in extObj) {\n delete extObj[prop];\n }\n Reflect.defineProperty(baseObj, prop, desc);\n return true;\n },\n getOwnPropertyDescriptor(_target, prop) {\n if (prop in extObj) {\n return Reflect.getOwnPropertyDescriptor(extObj, prop);\n }\n else {\n return Reflect.getOwnPropertyDescriptor(baseObj, prop);\n }\n },\n has(_target, prop) {\n return prop in extObj || prop in baseObj;\n },\n });\n}\n","// Copyright 2018-2025 the Deno authors. MIT license.\n// This module is browser compatible.\n// A module to print ANSI terminal colors. Inspired by chalk, kleur, and colors\n// on npm.\n/**\n * String formatters and utilities for dealing with ANSI color codes.\n *\n * > [!IMPORTANT]\n * > If printing directly to the console, it's recommended to style console\n * > output using CSS (guide\n * > {@linkcode https://developer.mozilla.org/en-US/docs/Web/API/console#styling_console_output | here}).\n *\n * This module supports `NO_COLOR` environmental variable disabling any coloring\n * if `NO_COLOR` is set.\n *\n * ```ts no-assert\n * import {\n * bgBlue,\n * bgRgb24,\n * bgRgb8,\n * bold,\n * italic,\n * red,\n * rgb24,\n * rgb8,\n * } from \"@std/fmt/colors\";\n *\n * console.log(bgBlue(italic(red(bold(\"Hello, World!\")))));\n *\n * // also supports 8bit colors\n *\n * console.log(rgb8(\"Hello, World!\", 42));\n *\n * console.log(bgRgb8(\"Hello, World!\", 42));\n *\n * // and 24bit rgb\n *\n * console.log(rgb24(\"Hello, World!\", {\n * r: 41,\n * g: 42,\n * b: 43,\n * }));\n *\n * console.log(bgRgb24(\"Hello, World!\", {\n * r: 41,\n * g: 42,\n * b: 43,\n * }));\n * ```\n *\n * @module\n */\n// deno-lint-ignore no-explicit-any\nimport * as dntShim from \"../../../../../_dnt.shims.js\";\nconst { Deno } = dntShim.dntGlobalThis;\nconst noColor = typeof Deno?.noColor === \"boolean\"\n ? Deno.noColor\n : false;\nlet enabled = !noColor;\n/**\n * Enable or disable text color when styling.\n *\n * `@std/fmt/colors` automatically detects NO_COLOR environmental variable\n * and disables text color. Use this API only when the automatic detection\n * doesn't work.\n *\n * @example Usage\n * ```ts no-assert\n * import { setColorEnabled } from \"@std/fmt/colors\";\n *\n * // Disable text color\n * setColorEnabled(false);\n *\n * // Enable text color\n * setColorEnabled(true);\n * ```\n *\n * @param value The boolean value to enable or disable text color\n */\nexport function setColorEnabled(value) {\n if (Deno?.noColor) {\n return;\n }\n enabled = value;\n}\n/**\n * Get whether text color change is enabled or disabled.\n *\n * @example Usage\n * ```ts no-assert\n * import { getColorEnabled } from \"@std/fmt/colors\";\n *\n * console.log(getColorEnabled()); // true if enabled, false if disabled\n * ```\n * @returns `true` if text color is enabled, `false` otherwise\n */\nexport function getColorEnabled() {\n return enabled;\n}\n/**\n * Builds color code\n * @param open\n * @param close\n */\nfunction code(open, close) {\n return {\n open: `\\x1b[${open.join(\";\")}m`,\n close: `\\x1b[${close}m`,\n regexp: new RegExp(`\\\\x1b\\\\[${close}m`, \"g\"),\n };\n}\n/**\n * Applies color and background based on color code and its associated text\n * @param str The text to apply color settings to\n * @param code The color code to apply\n */\nfunction run(str, code) {\n return enabled\n ? `${code.open}${str.replace(code.regexp, code.open)}${code.close}`\n : str;\n}\n/**\n * Reset the text modified.\n *\n * @example Usage\n * ```ts no-assert\n * import { reset } from \"@std/fmt/colors\";\n *\n * console.log(reset(\"Hello, world!\"));\n * ```\n *\n * @param str The text to reset\n * @returns The text with reset color\n */\nexport function reset(str) {\n return run(str, code([0], 0));\n}\n/**\n * Make the text bold.\n *\n * @example Usage\n * ```ts no-assert\n * import { bold } from \"@std/fmt/colors\";\n *\n * console.log(bold(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make bold\n * @returns The bold text\n */\nexport function bold(str) {\n return run(str, code([1], 22));\n}\n/**\n * The text emits only a small amount of light.\n *\n * @example Usage\n * ```ts no-assert\n * import { dim } from \"@std/fmt/colors\";\n *\n * console.log(dim(\"Hello, world!\"));\n * ```\n *\n * @param str The text to dim\n * @returns The dimmed text\n *\n * Warning: Not all terminal emulators support `dim`.\n * For compatibility across all terminals, use {@linkcode gray} or {@linkcode brightBlack} instead.\n */\nexport function dim(str) {\n return run(str, code([2], 22));\n}\n/**\n * Make the text italic.\n *\n * @example Usage\n * ```ts no-assert\n * import { italic } from \"@std/fmt/colors\";\n *\n * console.log(italic(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make italic\n * @returns The italic text\n */\nexport function italic(str) {\n return run(str, code([3], 23));\n}\n/**\n * Make the text underline.\n *\n * @example Usage\n * ```ts no-assert\n * import { underline } from \"@std/fmt/colors\";\n *\n * console.log(underline(\"Hello, world!\"));\n * ```\n *\n * @param str The text to underline\n * @returns The underlined text\n */\nexport function underline(str) {\n return run(str, code([4], 24));\n}\n/**\n * Invert background color and text color.\n *\n * @example Usage\n * ```ts no-assert\n * import { inverse } from \"@std/fmt/colors\";\n *\n * console.log(inverse(\"Hello, world!\"));\n * ```\n *\n * @param str The text to invert its color\n * @returns The inverted text\n */\nexport function inverse(str) {\n return run(str, code([7], 27));\n}\n/**\n * Make the text hidden.\n *\n * @example Usage\n * ```ts no-assert\n * import { hidden } from \"@std/fmt/colors\";\n *\n * console.log(hidden(\"Hello, world!\"));\n * ```\n *\n * @param str The text to hide\n * @returns The hidden text\n */\nexport function hidden(str) {\n return run(str, code([8], 28));\n}\n/**\n * Put horizontal line through the center of the text.\n *\n * @example Usage\n * ```ts no-assert\n * import { strikethrough } from \"@std/fmt/colors\";\n *\n * console.log(strikethrough(\"Hello, world!\"));\n * ```\n *\n * @param str The text to strike through\n * @returns The text with horizontal line through the center\n */\nexport function strikethrough(str) {\n return run(str, code([9], 29));\n}\n/**\n * Set text color to black.\n *\n * @example Usage\n * ```ts no-assert\n * import { black } from \"@std/fmt/colors\";\n *\n * console.log(black(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make black\n * @returns The black text\n */\nexport function black(str) {\n return run(str, code([30], 39));\n}\n/**\n * Set text color to red.\n *\n * @example Usage\n * ```ts no-assert\n * import { red } from \"@std/fmt/colors\";\n *\n * console.log(red(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make red\n * @returns The red text\n */\nexport function red(str) {\n return run(str, code([31], 39));\n}\n/**\n * Set text color to green.\n *\n * @example Usage\n * ```ts no-assert\n * import { green } from \"@std/fmt/colors\";\n *\n * console.log(green(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make green\n * @returns The green text\n */\nexport function green(str) {\n return run(str, code([32], 39));\n}\n/**\n * Set text color to yellow.\n *\n * @example Usage\n * ```ts no-assert\n * import { yellow } from \"@std/fmt/colors\";\n *\n * console.log(yellow(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make yellow\n * @returns The yellow text\n */\nexport function yellow(str) {\n return run(str, code([33], 39));\n}\n/**\n * Set text color to blue.\n *\n * @example Usage\n * ```ts no-assert\n * import { blue } from \"@std/fmt/colors\";\n *\n * console.log(blue(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make blue\n * @returns The blue text\n */\nexport function blue(str) {\n return run(str, code([34], 39));\n}\n/**\n * Set text color to magenta.\n *\n * @example Usage\n * ```ts no-assert\n * import { magenta } from \"@std/fmt/colors\";\n *\n * console.log(magenta(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make magenta\n * @returns The magenta text\n */\nexport function magenta(str) {\n return run(str, code([35], 39));\n}\n/**\n * Set text color to cyan.\n *\n * @example Usage\n * ```ts no-assert\n * import { cyan } from \"@std/fmt/colors\";\n *\n * console.log(cyan(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make cyan\n * @returns The cyan text\n */\nexport function cyan(str) {\n return run(str, code([36], 39));\n}\n/**\n * Set text color to white.\n *\n * @example Usage\n * ```ts no-assert\n * import { white } from \"@std/fmt/colors\";\n *\n * console.log(white(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make white\n * @returns The white text\n */\nexport function white(str) {\n return run(str, code([37], 39));\n}\n/**\n * Set text color to gray.\n *\n * @example Usage\n * ```ts no-assert\n * import { gray } from \"@std/fmt/colors\";\n *\n * console.log(gray(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make gray\n * @returns The gray text\n */\nexport function gray(str) {\n return brightBlack(str);\n}\n/**\n * Set text color to bright black.\n *\n * @example Usage\n * ```ts no-assert\n * import { brightBlack } from \"@std/fmt/colors\";\n *\n * console.log(brightBlack(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make bright black\n * @returns The bright black text\n */\nexport function brightBlack(str) {\n return run(str, code([90], 39));\n}\n/**\n * Set text color to bright red.\n *\n * @example Usage\n * ```ts no-assert\n * import { brightRed } from \"@std/fmt/colors\";\n *\n * console.log(brightRed(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make bright red\n * @returns The bright red text\n */\nexport function brightRed(str) {\n return run(str, code([91], 39));\n}\n/**\n * Set text color to bright green.\n *\n * @example Usage\n * ```ts no-assert\n * import { brightGreen } from \"@std/fmt/colors\";\n *\n * console.log(brightGreen(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make bright green\n * @returns The bright green text\n */\nexport function brightGreen(str) {\n return run(str, code([92], 39));\n}\n/**\n * Set text color to bright yellow.\n *\n * @example Usage\n * ```ts no-assert\n * import { brightYellow } from \"@std/fmt/colors\";\n *\n * console.log(brightYellow(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make bright yellow\n * @returns The bright yellow text\n */\nexport function brightYellow(str) {\n return run(str, code([93], 39));\n}\n/**\n * Set text color to bright blue.\n *\n * @example Usage\n * ```ts no-assert\n * import { brightBlue } from \"@std/fmt/colors\";\n *\n * console.log(brightBlue(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make bright blue\n * @returns The bright blue text\n */\nexport function brightBlue(str) {\n return run(str, code([94], 39));\n}\n/**\n * Set text color to bright magenta.\n *\n * @example Usage\n * ```ts no-assert\n * import { brightMagenta } from \"@std/fmt/colors\";\n *\n * console.log(brightMagenta(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make bright magenta\n * @returns The bright magenta text\n */\nexport function brightMagenta(str) {\n return run(str, code([95], 39));\n}\n/**\n * Set text color to bright cyan.\n *\n * @example Usage\n * ```ts no-assert\n * import { brightCyan } from \"@std/fmt/colors\";\n *\n * console.log(brightCyan(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make bright cyan\n * @returns The bright cyan text\n */\nexport function brightCyan(str) {\n return run(str, code([96], 39));\n}\n/**\n * Set text color to bright white.\n *\n * @example Usage\n * ```ts no-assert\n * import { brightWhite } from \"@std/fmt/colors\";\n *\n * console.log(brightWhite(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make bright white\n * @returns The bright white text\n */\nexport function brightWhite(str) {\n return run(str, code([97], 39));\n}\n/**\n * Set background color to black.\n *\n * @example Usage\n * ```ts no-assert\n * import { bgBlack } from \"@std/fmt/colors\";\n *\n * console.log(bgBlack(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make its background black\n * @returns The text with black background\n */\nexport function bgBlack(str) {\n return run(str, code([40], 49));\n}\n/**\n * Set background color to red.\n *\n * @example Usage\n * ```ts no-assert\n * import { bgRed } from \"@std/fmt/colors\";\n *\n * console.log(bgRed(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make its background red\n * @returns The text with red background\n */\nexport function bgRed(str) {\n return run(str, code([41], 49));\n}\n/**\n * Set background color to green.\n *\n * @example Usage\n * ```ts no-assert\n * import { bgGreen } from \"@std/fmt/colors\";\n *\n * console.log(bgGreen(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make its background green\n * @returns The text with green background\n */\nexport function bgGreen(str) {\n return run(str, code([42], 49));\n}\n/**\n * Set background color to yellow.\n *\n * @example Usage\n * ```ts no-assert\n * import { bgYellow } from \"@std/fmt/colors\";\n *\n * console.log(bgYellow(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make its background yellow\n * @returns The text with yellow background\n */\nexport function bgYellow(str) {\n return run(str, code([43], 49));\n}\n/**\n * Set background color to blue.\n *\n * @example Usage\n * ```ts no-assert\n * import { bgBlue } from \"@std/fmt/colors\";\n *\n * console.log(bgBlue(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make its background blue\n * @returns The text with blue background\n */\nexport function bgBlue(str) {\n return run(str, code([44], 49));\n}\n/**\n * Set background color to magenta.\n *\n * @example Usage\n * ```ts no-assert\n * import { bgMagenta } from \"@std/fmt/colors\";\n *\n * console.log(bgMagenta(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make its background magenta\n * @returns The text with magenta background\n */\nexport function bgMagenta(str) {\n return run(str, code([45], 49));\n}\n/**\n * Set background color to cyan.\n *\n * @example Usage\n * ```ts no-assert\n * import { bgCyan } from \"@std/fmt/colors\";\n *\n * console.log(bgCyan(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make its background cyan\n * @returns The text with cyan background\n */\nexport function bgCyan(str) {\n return run(str, code([46], 49));\n}\n/**\n * Set background color to white.\n *\n * @example Usage\n * ```ts no-assert\n * import { bgWhite } from \"@std/fmt/colors\";\n *\n * console.log(bgWhite(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make its background white\n * @returns The text with white background\n */\nexport function bgWhite(str) {\n return run(str, code([47], 49));\n}\n/**\n * Set background color to bright black.\n *\n * @example Usage\n * ```ts no-assert\n * import { bgBrightBlack } from \"@std/fmt/colors\";\n *\n * console.log(bgBrightBlack(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make its background bright black\n * @returns The text with bright black background\n */\nexport function bgBrightBlack(str) {\n return run(str, code([100], 49));\n}\n/**\n * Set background color to bright red.\n *\n * @example Usage\n * ```ts no-assert\n * import { bgBrightRed } from \"@std/fmt/colors\";\n *\n * console.log(bgBrightRed(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make its background bright red\n * @returns The text with bright red background\n */\nexport function bgBrightRed(str) {\n return run(str, code([101], 49));\n}\n/**\n * Set background color to bright green.\n *\n * @example Usage\n * ```ts no-assert\n * import { bgBrightGreen } from \"@std/fmt/colors\";\n *\n * console.log(bgBrightGreen(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make its background bright green\n * @returns The text with bright green background\n */\nexport function bgBrightGreen(str) {\n return run(str, code([102], 49));\n}\n/**\n * Set background color to bright yellow.\n *\n * @example Usage\n * ```ts no-assert\n * import { bgBrightYellow } from \"@std/fmt/colors\";\n *\n * console.log(bgBrightYellow(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make its background bright yellow\n * @returns The text with bright yellow background\n */\nexport function bgBrightYellow(str) {\n return run(str, code([103], 49));\n}\n/**\n * Set background color to bright blue.\n *\n * @example Usage\n * ```ts no-assert\n * import { bgBrightBlue } from \"@std/fmt/colors\";\n *\n * console.log(bgBrightBlue(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make its background bright blue\n * @returns The text with bright blue background\n */\nexport function bgBrightBlue(str) {\n return run(str, code([104], 49));\n}\n/**\n * Set background color to bright magenta.\n *\n * @example Usage\n * ```ts no-assert\n * import { bgBrightMagenta } from \"@std/fmt/colors\";\n *\n * console.log(bgBrightMagenta(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make its background bright magenta\n * @returns The text with bright magenta background\n */\nexport function bgBrightMagenta(str) {\n return run(str, code([105], 49));\n}\n/**\n * Set background color to bright cyan.\n *\n * @example Usage\n * ```ts no-assert\n * import { bgBrightCyan } from \"@std/fmt/colors\";\n *\n * console.log(bgBrightCyan(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make its background bright cyan\n * @returns The text with bright cyan background\n */\nexport function bgBrightCyan(str) {\n return run(str, code([106], 49));\n}\n/**\n * Set background color to bright white.\n *\n * @example Usage\n * ```ts no-assert\n * import { bgBrightWhite } from \"@std/fmt/colors\";\n *\n * console.log(bgBrightWhite(\"Hello, world!\"));\n * ```\n *\n * @param str The text to make its background bright white\n * @returns The text with bright white background\n */\nexport function bgBrightWhite(str) {\n return run(str, code([107], 49));\n}\n/* Special Color Sequences */\n/**\n * Clam and truncate color codes\n * @param n The input number\n * @param max The number to truncate to\n * @param min The number to truncate from\n */\nfunction clampAndTruncate(n, max = 255, min = 0) {\n return Math.trunc(Math.max(Math.min(n, max), min));\n}\n/**\n * Set text color using paletted 8bit colors.\n * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit\n *\n * @example Usage\n * ```ts no-assert\n * import { rgb8 } from \"@std/fmt/colors\";\n *\n * console.log(rgb8(\"Hello, world!\", 42));\n * ```\n *\n * @param str The text color to apply paletted 8bit colors to\n * @param color The color code\n * @returns The text with paletted 8bit color\n */\nexport function rgb8(str, color) {\n return run(str, code([38, 5, clampAndTruncate(color)], 39));\n}\n/**\n * Set background color using paletted 8bit colors.\n * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit\n *\n * @example Usage\n * ```ts no-assert\n * import { bgRgb8 } from \"@std/fmt/colors\";\n *\n * console.log(bgRgb8(\"Hello, world!\", 42));\n * ```\n *\n * @param str The text color to apply paletted 8bit background colors to\n * @param color code\n * @returns The text with paletted 8bit background color\n */\nexport function bgRgb8(str, color) {\n return run(str, code([48, 5, clampAndTruncate(color)], 49));\n}\n/**\n * Set text color using 24bit rgb.\n * `color` can be a number in range `0x000000` to `0xffffff` or\n * an `Rgb`.\n *\n * @example To produce the color magenta:\n * ```ts no-assert\n * import { rgb24 } from \"@std/fmt/colors\";\n *\n * rgb24(\"foo\", 0xff00ff);\n * rgb24(\"foo\", {r: 255, g: 0, b: 255});\n * ```\n * @param str The text color to apply 24bit rgb to\n * @param color The color code\n * @returns The text with 24bit rgb color\n */\nexport function rgb24(str, color) {\n if (typeof color === \"number\") {\n return run(str, code([38, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], 39));\n }\n return run(str, code([\n 38,\n 2,\n clampAndTruncate(color.r),\n clampAndTruncate(color.g),\n clampAndTruncate(color.b),\n ], 39));\n}\n/**\n * Set background color using 24bit rgb.\n * `color` can be a number in range `0x000000` to `0xffffff` or\n * an `Rgb`.\n *\n * @example To produce the color magenta:\n * ```ts no-assert\n * import { bgRgb24 } from \"@std/fmt/colors\";\n *\n * bgRgb24(\"foo\", 0xff00ff);\n * bgRgb24(\"foo\", {r: 255, g: 0, b: 255});\n * ```\n * @param str The text color to apply 24bit rgb to\n * @param color The color code\n * @returns The text with 24bit rgb color\n */\nexport function bgRgb24(str, color) {\n if (typeof color === \"number\") {\n return run(str, code([48, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], 49));\n }\n return run(str, code([\n 48,\n 2,\n clampAndTruncate(color.r),\n clampAndTruncate(color.g),\n clampAndTruncate(color.b),\n ], 49));\n}\n// https://github.com/chalk/ansi-regex/blob/02fa893d619d3da85411acc8fd4e2eea0e95a9d9/index.js\nconst ANSI_PATTERN = new RegExp([\n \"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\",\n \"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TXZcf-nq-uy=><~]))\",\n].join(\"|\"), \"g\");\n/**\n * Remove ANSI escape codes from the string.\n *\n * @example Usage\n * ```ts no-assert\n * import { stripAnsiCode, red } from \"@std/fmt/colors\";\n *\n * console.log(stripAnsiCode(red(\"Hello, world!\")));\n * ```\n *\n * @param string The text to remove ANSI escape codes from\n * @returns The text without ANSI escape codes\n */\nexport function stripAnsiCode(string) {\n return string.replace(ANSI_PATTERN, \"\");\n}\n","var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","/*!\n * is-extendable <https://github.com/jonschlinkert/is-extendable>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isExtendable(val) {\n return typeof val !== 'undefined' && val !== null\n && (typeof val === 'object' || typeof val === 'function');\n};\n","'use strict';\n\nvar isObject = require('is-extendable');\n\nmodule.exports = function extend(o/*, objects*/) {\n if (!isObject(o)) { o = {}; }\n\n var len = arguments.length;\n for (var i = 1; i < len; i++) {\n var obj = arguments[i];\n\n if (isObject(obj)) {\n assign(o, obj);\n }\n }\n return o;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n","'use strict';\n\nvar typeOf = require('kind-of');\nvar extend = require('extend-shallow');\n\n/**\n * Parse sections in `input` with the given `options`.\n *\n * ```js\n * var sections = require('{%= name %}');\n * var result = sections(input, options);\n * // { content: 'Content before sections', sections: [] }\n * ```\n * @param {String|Buffer|Object} `input` If input is an object, it's `content` property must be a string or buffer.\n * @param {Object} options\n * @return {Object} Returns an object with a `content` string and an array of `sections` objects.\n * @api public\n */\n\nmodule.exports = function(input, options) {\n if (typeof options === 'function') {\n options = { parse: options };\n }\n\n var file = toObject(input);\n var defaults = {section_delimiter: '---', parse: identity};\n var opts = extend({}, defaults, options);\n var delim = opts.section_delimiter;\n var lines = file.content.split(/\\r?\\n/);\n var sections = null;\n var section = createSection();\n var content = [];\n var stack = [];\n\n function initSections(val) {\n file.content = val;\n sections = [];\n content = [];\n }\n\n function closeSection(val) {\n if (stack.length) {\n section.key = getKey(stack[0], delim);\n section.content = val;\n opts.parse(section, sections);\n sections.push(section);\n section = createSection();\n content = [];\n stack = [];\n }\n }\n\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n var len = stack.length;\n var ln = line.trim();\n\n if (isDelimiter(ln, delim)) {\n if (ln.length === 3 && i !== 0) {\n if (len === 0 || len === 2) {\n content.push(line);\n continue;\n }\n stack.push(ln);\n section.data = content.join('\\n');\n content = [];\n continue;\n }\n\n if (sections === null) {\n initSections(content.join('\\n'));\n }\n\n if (len === 2) {\n closeSection(content.join('\\n'));\n }\n\n stack.push(ln);\n continue;\n }\n\n content.push(line);\n }\n\n if (sections === null) {\n initSections(content.join('\\n'));\n } else {\n closeSection(content.join('\\n'));\n }\n\n file.sections = sections;\n return file;\n};\n\nfunction isDelimiter(line, delim) {\n if (line.slice(0, delim.length) !== delim) {\n return false;\n }\n if (line.charAt(delim.length + 1) === delim.slice(-1)) {\n return false;\n }\n return true;\n}\n\nfunction toObject(input) {\n if (typeOf(input) !== 'object') {\n input = { content: input };\n }\n\n if (typeof input.content !== 'string' && !isBuffer(input.content)) {\n throw new TypeError('expected a buffer or string');\n }\n\n input.content = input.content.toString();\n input.sections = [];\n return input;\n}\n\nfunction getKey(val, delim) {\n return val ? val.slice(delim.length).trim() : '';\n}\n\nfunction createSection() {\n return { key: '', data: '', content: '' };\n}\n\nfunction identity(val) {\n return val;\n}\n\nfunction isBuffer(val) {\n if (val && val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n // base 10 (except 0) or base 60\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // 20:59\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) {\n // Support node 6.+ Buffer API when available\n return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result);\n }\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","(function webpackUniversalModuleDefinition(root, factory) {\n/* istanbul ignore next */\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n/* istanbul ignore next */\n\telse if(typeof exports === 'object')\n\t\texports[\"esprima\"] = factory();\n\telse\n\t\troot[\"esprima\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/* istanbul ignore if */\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t/*\n\t Copyright JS Foundation and other contributors, https://js.foundation/\n\n\t Redistribution and use in source and binary forms, with or without\n\t modification, are permitted provided that the following conditions are met:\n\n\t * Redistributions of source code must retain the above copyright\n\t notice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above copyright\n\t notice, this list of conditions and the following disclaimer in the\n\t documentation and/or other materials provided with the distribution.\n\n\t THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\t AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\t ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\t DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\t LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\t ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\t THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar comment_handler_1 = __webpack_require__(1);\n\tvar jsx_parser_1 = __webpack_require__(3);\n\tvar parser_1 = __webpack_require__(8);\n\tvar tokenizer_1 = __webpack_require__(15);\n\tfunction parse(code, options, delegate) {\n\t var commentHandler = null;\n\t var proxyDelegate = function (node, metadata) {\n\t if (delegate) {\n\t delegate(node, metadata);\n\t }\n\t if (commentHandler) {\n\t commentHandler.visit(node, metadata);\n\t }\n\t };\n\t var parserDelegate = (typeof delegate === 'function') ? proxyDelegate : null;\n\t var collectComment = false;\n\t if (options) {\n\t collectComment = (typeof options.comment === 'boolean' && options.comment);\n\t var attachComment = (typeof options.attachComment === 'boolean' && options.attachComment);\n\t if (collectComment || attachComment) {\n\t commentHandler = new comment_handler_1.CommentHandler();\n\t commentHandler.attach = attachComment;\n\t options.comment = true;\n\t parserDelegate = proxyDelegate;\n\t }\n\t }\n\t var isModule = false;\n\t if (options && typeof options.sourceType === 'string') {\n\t isModule = (options.sourceType === 'module');\n\t }\n\t var parser;\n\t if (options && typeof options.jsx === 'boolean' && options.jsx) {\n\t parser = new jsx_parser_1.JSXParser(code, options, parserDelegate);\n\t }\n\t else {\n\t parser = new parser_1.Parser(code, options, parserDelegate);\n\t }\n\t var program = isModule ? parser.parseModule() : parser.parseScript();\n\t var ast = program;\n\t if (collectComment && commentHandler) {\n\t ast.comments = commentHandler.comments;\n\t }\n\t if (parser.config.tokens) {\n\t ast.tokens = parser.tokens;\n\t }\n\t if (parser.config.tolerant) {\n\t ast.errors = parser.errorHandler.errors;\n\t }\n\t return ast;\n\t}\n\texports.parse = parse;\n\tfunction parseModule(code, options, delegate) {\n\t var parsingOptions = options || {};\n\t parsingOptions.sourceType = 'module';\n\t return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseModule = parseModule;\n\tfunction parseScript(code, options, delegate) {\n\t var parsingOptions = options || {};\n\t parsingOptions.sourceType = 'script';\n\t return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseScript = parseScript;\n\tfunction tokenize(code, options, delegate) {\n\t var tokenizer = new tokenizer_1.Tokenizer(code, options);\n\t var tokens;\n\t tokens = [];\n\t try {\n\t while (true) {\n\t var token = tokenizer.getNextToken();\n\t if (!token) {\n\t break;\n\t }\n\t if (delegate) {\n\t token = delegate(token);\n\t }\n\t tokens.push(token);\n\t }\n\t }\n\t catch (e) {\n\t tokenizer.errorHandler.tolerate(e);\n\t }\n\t if (tokenizer.errorHandler.tolerant) {\n\t tokens.errors = tokenizer.errors();\n\t }\n\t return tokens;\n\t}\n\texports.tokenize = tokenize;\n\tvar syntax_1 = __webpack_require__(2);\n\texports.Syntax = syntax_1.Syntax;\n\t// Sync with *.json manifests.\n\texports.version = '4.0.1';\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __webpack_require__(2);\n\tvar CommentHandler = (function () {\n\t function CommentHandler() {\n\t this.attach = false;\n\t this.comments = [];\n\t this.stack = [];\n\t this.leading = [];\n\t this.trailing = [];\n\t }\n\t CommentHandler.prototype.insertInnerComments = function (node, metadata) {\n\t // innnerComments for properties empty block\n\t // `function a() {/** comments **\\/}`\n\t if (node.type === syntax_1.Syntax.BlockStatement && node.body.length === 0) {\n\t var innerComments = [];\n\t for (var i = this.leading.length - 1; i >= 0; --i) {\n\t var entry = this.leading[i];\n\t if (metadata.end.offset >= entry.start) {\n\t innerComments.unshift(entry.comment);\n\t this.leading.splice(i, 1);\n\t this.trailing.splice(i, 1);\n\t }\n\t }\n\t if (innerComments.length) {\n\t node.innerComments = innerComments;\n\t }\n\t }\n\t };\n\t CommentHandler.prototype.findTrailingComments = function (metadata) {\n\t var trailingComments = [];\n\t if (this.trailing.length > 0) {\n\t for (var i = this.trailing.length - 1; i >= 0; --i) {\n\t var entry_1 = this.trailing[i];\n\t if (entry_1.start >= metadata.end.offset) {\n\t trailingComments.unshift(entry_1.comment);\n\t }\n\t }\n\t this.trailing.length = 0;\n\t return trailingComments;\n\t }\n\t var entry = this.stack[this.stack.length - 1];\n\t if (entry && entry.node.trailingComments) {\n\t var firstComment = entry.node.trailingComments[0];\n\t if (firstComment && firstComment.range[0] >= metadata.end.offset) {\n\t trailingComments = entry.node.trailingComments;\n\t delete entry.node.trailingComments;\n\t }\n\t }\n\t return trailingComments;\n\t };\n\t CommentHandler.prototype.findLeadingComments = function (metadata) {\n\t var leadingComments = [];\n\t var target;\n\t while (this.stack.length > 0) {\n\t var entry = this.stack[this.stack.length - 1];\n\t if (entry && entry.start >= metadata.start.offset) {\n\t target = entry.node;\n\t this.stack.pop();\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t if (target) {\n\t var count = target.leadingComments ? target.leadingComments.length : 0;\n\t for (var i = count - 1; i >= 0; --i) {\n\t var comment = target.leadingComments[i];\n\t if (comment.range[1] <= metadata.start.offset) {\n\t leadingComments.unshift(comment);\n\t target.leadingComments.splice(i, 1);\n\t }\n\t }\n\t if (target.leadingComments && target.leadingComments.length === 0) {\n\t delete target.leadingComments;\n\t }\n\t return leadingComments;\n\t }\n\t for (var i = this.leading.length - 1; i >= 0; --i) {\n\t var entry = this.leading[i];\n\t if (entry.start <= metadata.start.offset) {\n\t leadingComments.unshift(entry.comment);\n\t this.leading.splice(i, 1);\n\t }\n\t }\n\t return leadingComments;\n\t };\n\t CommentHandler.prototype.visitNode = function (node, metadata) {\n\t if (node.type === syntax_1.Syntax.Program && node.body.length > 0) {\n\t return;\n\t }\n\t this.insertInnerComments(node, metadata);\n\t var trailingComments = this.findTrailingComments(metadata);\n\t var leadingComments = this.findLeadingComments(metadata);\n\t if (leadingComments.length > 0) {\n\t node.leadingComments = leadingComments;\n\t }\n\t if (trailingComments.length > 0) {\n\t node.trailingComments = trailingComments;\n\t }\n\t this.stack.push({\n\t node: node,\n\t start: metadata.start.offset\n\t });\n\t };\n\t CommentHandler.prototype.visitComment = function (node, metadata) {\n\t var type = (node.type[0] === 'L') ? 'Line' : 'Block';\n\t var comment = {\n\t type: type,\n\t value: node.value\n\t };\n\t if (node.range) {\n\t comment.range = node.range;\n\t }\n\t if (node.loc) {\n\t comment.loc = node.loc;\n\t }\n\t this.comments.push(comment);\n\t if (this.attach) {\n\t var entry = {\n\t comment: {\n\t type: type,\n\t value: node.value,\n\t range: [metadata.start.offset, metadata.end.offset]\n\t },\n\t start: metadata.start.offset\n\t };\n\t if (node.loc) {\n\t entry.comment.loc = node.loc;\n\t }\n\t node.type = type;\n\t this.leading.push(entry);\n\t this.trailing.push(entry);\n\t }\n\t };\n\t CommentHandler.prototype.visit = function (node, metadata) {\n\t if (node.type === 'LineComment') {\n\t this.visitComment(node, metadata);\n\t }\n\t else if (node.type === 'BlockComment') {\n\t this.visitComment(node, metadata);\n\t }\n\t else if (this.attach) {\n\t this.visitNode(node, metadata);\n\t }\n\t };\n\t return CommentHandler;\n\t}());\n\texports.CommentHandler = CommentHandler;\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.Syntax = {\n\t AssignmentExpression: 'AssignmentExpression',\n\t AssignmentPattern: 'AssignmentPattern',\n\t ArrayExpression: 'ArrayExpression',\n\t ArrayPattern: 'ArrayPattern',\n\t ArrowFunctionExpression: 'ArrowFunctionExpression',\n\t AwaitExpression: 'AwaitExpression',\n\t BlockStatement: 'BlockStatement',\n\t BinaryExpression: 'BinaryExpression',\n\t BreakStatement: 'BreakStatement',\n\t CallExpression: 'CallExpression',\n\t CatchClause: 'CatchClause',\n\t ClassBody: 'ClassBody',\n\t ClassDeclaration: 'ClassDeclaration',\n\t ClassExpression: 'ClassExpression',\n\t ConditionalExpression: 'ConditionalExpression',\n\t ContinueStatement: 'ContinueStatement',\n\t DoWhileStatement: 'DoWhileStatement',\n\t DebuggerStatement: 'DebuggerStatement',\n\t EmptyStatement: 'EmptyStatement',\n\t ExportAllDeclaration: 'ExportAllDeclaration',\n\t ExportDefaultDeclaration: 'ExportDefaultDeclaration',\n\t ExportNamedDeclaration: 'ExportNamedDeclaration',\n\t ExportSpecifier: 'ExportSpecifier',\n\t ExpressionStatement: 'ExpressionStatement',\n\t ForStatement: 'ForStatement',\n\t ForOfStatement: 'ForOfStatement',\n\t ForInStatement: 'ForInStatement',\n\t FunctionDeclaration: 'FunctionDeclaration',\n\t FunctionExpression: 'FunctionExpression',\n\t Identifier: 'Identifier',\n\t IfStatement: 'IfStatement',\n\t ImportDeclaration: 'ImportDeclaration',\n\t ImportDefaultSpecifier: 'ImportDefaultSpecifier',\n\t ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',\n\t ImportSpecifier: 'ImportSpecifier',\n\t Literal: 'Literal',\n\t LabeledStatement: 'LabeledStatement',\n\t LogicalExpression: 'LogicalExpression',\n\t MemberExpression: 'MemberExpression',\n\t MetaProperty: 'MetaProperty',\n\t MethodDefinition: 'MethodDefinition',\n\t NewExpression: 'NewExpression',\n\t ObjectExpression: 'ObjectExpression',\n\t ObjectPattern: 'ObjectPattern',\n\t Program: 'Program',\n\t Property: 'Property',\n\t RestElement: 'RestElement',\n\t ReturnStatement: 'ReturnStatement',\n\t SequenceExpression: 'SequenceExpression',\n\t SpreadElement: 'SpreadElement',\n\t Super: 'Super',\n\t SwitchCase: 'SwitchCase',\n\t SwitchStatement: 'SwitchStatement',\n\t TaggedTemplateExpression: 'TaggedTemplateExpression',\n\t TemplateElement: 'TemplateElement',\n\t TemplateLiteral: 'TemplateLiteral',\n\t ThisExpression: 'ThisExpression',\n\t ThrowStatement: 'ThrowStatement',\n\t TryStatement: 'TryStatement',\n\t UnaryExpression: 'UnaryExpression',\n\t UpdateExpression: 'UpdateExpression',\n\t VariableDeclaration: 'VariableDeclaration',\n\t VariableDeclarator: 'VariableDeclarator',\n\t WhileStatement: 'WhileStatement',\n\t WithStatement: 'WithStatement',\n\t YieldExpression: 'YieldExpression'\n\t};\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n/* istanbul ignore next */\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar character_1 = __webpack_require__(4);\n\tvar JSXNode = __webpack_require__(5);\n\tvar jsx_syntax_1 = __webpack_require__(6);\n\tvar Node = __webpack_require__(7);\n\tvar parser_1 = __webpack_require__(8);\n\tvar token_1 = __webpack_require__(13);\n\tvar xhtml_entities_1 = __webpack_require__(14);\n\ttoken_1.TokenName[100 /* Identifier */] = 'JSXIdentifier';\n\ttoken_1.TokenName[101 /* Text */] = 'JSXText';\n\t// Fully qualified element name, e.g. <svg:path> returns \"svg:path\"\n\tfunction getQualifiedElementName(elementName) {\n\t var qualifiedName;\n\t switch (elementName.type) {\n\t case jsx_syntax_1.JSXSyntax.JSXIdentifier:\n\t var id = elementName;\n\t qualifiedName = id.name;\n\t break;\n\t case jsx_syntax_1.JSXSyntax.JSXNamespacedName:\n\t var ns = elementName;\n\t qualifiedName = getQualifiedElementName(ns.namespace) + ':' +\n\t getQualifiedElementName(ns.name);\n\t break;\n\t case jsx_syntax_1.JSXSyntax.JSXMemberExpression:\n\t var expr = elementName;\n\t qualifiedName = getQualifiedElementName(expr.object) + '.' +\n\t getQualifiedElementName(expr.property);\n\t break;\n\t /* istanbul ignore next */\n\t default:\n\t break;\n\t }\n\t return qualifiedName;\n\t}\n\tvar JSXParser = (function (_super) {\n\t __extends(JSXParser, _super);\n\t function JSXParser(code, options, delegate) {\n\t return _super.call(this, code, options, delegate) || this;\n\t }\n\t JSXParser.prototype.parsePrimaryExpression = function () {\n\t return this.match('<') ? this.parseJSXRoot() : _super.prototype.parsePrimaryExpression.call(this);\n\t };\n\t JSXParser.prototype.startJSX = function () {\n\t // Unwind the scanner before the lookahead token.\n\t this.scanner.index = this.startMarker.index;\n\t this.scanner.lineNumber = this.startMarker.line;\n\t this.scanner.lineStart = this.startMarker.index - this.startMarker.column;\n\t };\n\t JSXParser.prototype.finishJSX = function () {\n\t // Prime the next lookahead.\n\t this.nextToken();\n\t };\n\t JSXParser.prototype.reenterJSX = function () {\n\t this.startJSX();\n\t this.expectJSX('}');\n\t // Pop the closing '}' added from the lookahead.\n\t if (this.config.tokens) {\n\t this.tokens.pop();\n\t }\n\t };\n\t JSXParser.prototype.createJSXNode = function () {\n\t this.collectComments();\n\t return {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t };\n\t JSXParser.prototype.createJSXChildNode = function () {\n\t return {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t };\n\t JSXParser.prototype.scanXHTMLEntity = function (quote) {\n\t var result = '&';\n\t var valid = true;\n\t var terminated = false;\n\t var numeric = false;\n\t var hex = false;\n\t while (!this.scanner.eof() && valid && !terminated) {\n\t var ch = this.scanner.source[this.scanner.index];\n\t if (ch === quote) {\n\t break;\n\t }\n\t terminated = (ch === ';');\n\t result += ch;\n\t ++this.scanner.index;\n\t if (!terminated) {\n\t switch (result.length) {\n\t case 2:\n\t // e.g. '&#123;'\n\t numeric = (ch === '#');\n\t break;\n\t case 3:\n\t if (numeric) {\n\t // e.g. '&#x41;'\n\t hex = (ch === 'x');\n\t valid = hex || character_1.Character.isDecimalDigit(ch.charCodeAt(0));\n\t numeric = numeric && !hex;\n\t }\n\t break;\n\t default:\n\t valid = valid && !(numeric && !character_1.Character.isDecimalDigit(ch.charCodeAt(0)));\n\t valid = valid && !(hex && !character_1.Character.isHexDigit(ch.charCodeAt(0)));\n\t break;\n\t }\n\t }\n\t }\n\t if (valid && terminated && result.length > 2) {\n\t // e.g. '&#x41;' becomes just '#x41'\n\t var str = result.substr(1, result.length - 2);\n\t if (numeric && str.length > 1) {\n\t result = String.fromCharCode(parseInt(str.substr(1), 10));\n\t }\n\t else if (hex && str.length > 2) {\n\t result = String.fromCharCode(parseInt('0' + str.substr(1), 16));\n\t }\n\t else if (!numeric && !hex && xhtml_entities_1.XHTMLEntities[str]) {\n\t result = xhtml_entities_1.XHTMLEntities[str];\n\t }\n\t }\n\t return result;\n\t };\n\t // Scan the next JSX token. This replaces Scanner#lex when in JSX mode.\n\t JSXParser.prototype.lexJSX = function () {\n\t var cp = this.scanner.source.charCodeAt(this.scanner.index);\n\t // < > / : = { }\n\t if (cp === 60 || cp === 62 || cp === 47 || cp === 58 || cp === 61 || cp === 123 || cp === 125) {\n\t var value = this.scanner.source[this.scanner.index++];\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: value,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: this.scanner.index - 1,\n\t end: this.scanner.index\n\t };\n\t }\n\t // \" '\n\t if (cp === 34 || cp === 39) {\n\t var start = this.scanner.index;\n\t var quote = this.scanner.source[this.scanner.index++];\n\t var str = '';\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source[this.scanner.index++];\n\t if (ch === quote) {\n\t break;\n\t }\n\t else if (ch === '&') {\n\t str += this.scanXHTMLEntity(quote);\n\t }\n\t else {\n\t str += ch;\n\t }\n\t }\n\t return {\n\t type: 8 /* StringLiteral */,\n\t value: str,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t // ... or .\n\t if (cp === 46) {\n\t var n1 = this.scanner.source.charCodeAt(this.scanner.index + 1);\n\t var n2 = this.scanner.source.charCodeAt(this.scanner.index + 2);\n\t var value = (n1 === 46 && n2 === 46) ? '...' : '.';\n\t var start = this.scanner.index;\n\t this.scanner.index += value.length;\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: value,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t // `\n\t if (cp === 96) {\n\t // Only placeholder, since it will be rescanned as a real assignment expression.\n\t return {\n\t type: 10 /* Template */,\n\t value: '',\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: this.scanner.index,\n\t end: this.scanner.index\n\t };\n\t }\n\t // Identifer can not contain backslash (char code 92).\n\t if (character_1.Character.isIdentifierStart(cp) && (cp !== 92)) {\n\t var start = this.scanner.index;\n\t ++this.scanner.index;\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source.charCodeAt(this.scanner.index);\n\t if (character_1.Character.isIdentifierPart(ch) && (ch !== 92)) {\n\t ++this.scanner.index;\n\t }\n\t else if (ch === 45) {\n\t // Hyphen (char code 45) can be part of an identifier.\n\t ++this.scanner.index;\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t var id = this.scanner.source.slice(start, this.scanner.index);\n\t return {\n\t type: 100 /* Identifier */,\n\t value: id,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t return this.scanner.lex();\n\t };\n\t JSXParser.prototype.nextJSXToken = function () {\n\t this.collectComments();\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var token = this.lexJSX();\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t if (this.config.tokens) {\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t return token;\n\t };\n\t JSXParser.prototype.nextJSXText = function () {\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var start = this.scanner.index;\n\t var text = '';\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source[this.scanner.index];\n\t if (ch === '{' || ch === '<') {\n\t break;\n\t }\n\t ++this.scanner.index;\n\t text += ch;\n\t if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t ++this.scanner.lineNumber;\n\t if (ch === '\\r' && this.scanner.source[this.scanner.index] === '\\n') {\n\t ++this.scanner.index;\n\t }\n\t this.scanner.lineStart = this.scanner.index;\n\t }\n\t }\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var token = {\n\t type: 101 /* Text */,\n\t value: text,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t if ((text.length > 0) && this.config.tokens) {\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t return token;\n\t };\n\t JSXParser.prototype.peekJSXToken = function () {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.lexJSX();\n\t this.scanner.restoreState(state);\n\t return next;\n\t };\n\t // Expect the next JSX token to match the specified punctuator.\n\t // If not, an exception will be thrown.\n\t JSXParser.prototype.expectJSX = function (value) {\n\t var token = this.nextJSXToken();\n\t if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Return true if the next JSX token matches the specified punctuator.\n\t JSXParser.prototype.matchJSX = function (value) {\n\t var next = this.peekJSXToken();\n\t return next.type === 7 /* Punctuator */ && next.value === value;\n\t };\n\t JSXParser.prototype.parseJSXIdentifier = function () {\n\t var node = this.createJSXNode();\n\t var token = this.nextJSXToken();\n\t if (token.type !== 100 /* Identifier */) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new JSXNode.JSXIdentifier(token.value));\n\t };\n\t JSXParser.prototype.parseJSXElementName = function () {\n\t var node = this.createJSXNode();\n\t var elementName = this.parseJSXIdentifier();\n\t if (this.matchJSX(':')) {\n\t var namespace = elementName;\n\t this.expectJSX(':');\n\t var name_1 = this.parseJSXIdentifier();\n\t elementName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_1));\n\t }\n\t else if (this.matchJSX('.')) {\n\t while (this.matchJSX('.')) {\n\t var object = elementName;\n\t this.expectJSX('.');\n\t var property = this.parseJSXIdentifier();\n\t elementName = this.finalize(node, new JSXNode.JSXMemberExpression(object, property));\n\t }\n\t }\n\t return elementName;\n\t };\n\t JSXParser.prototype.parseJSXAttributeName = function () {\n\t var node = this.createJSXNode();\n\t var attributeName;\n\t var identifier = this.parseJSXIdentifier();\n\t if (this.matchJSX(':')) {\n\t var namespace = identifier;\n\t this.expectJSX(':');\n\t var name_2 = this.parseJSXIdentifier();\n\t attributeName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_2));\n\t }\n\t else {\n\t attributeName = identifier;\n\t }\n\t return attributeName;\n\t };\n\t JSXParser.prototype.parseJSXStringLiteralAttribute = function () {\n\t var node = this.createJSXNode();\n\t var token = this.nextJSXToken();\n\t if (token.type !== 8 /* StringLiteral */) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t var raw = this.getTokenRaw(token);\n\t return this.finalize(node, new Node.Literal(token.value, raw));\n\t };\n\t JSXParser.prototype.parseJSXExpressionAttribute = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t this.finishJSX();\n\t if (this.match('}')) {\n\t this.tolerateError('JSX attributes must only be assigned a non-empty expression');\n\t }\n\t var expression = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t };\n\t JSXParser.prototype.parseJSXAttributeValue = function () {\n\t return this.matchJSX('{') ? this.parseJSXExpressionAttribute() :\n\t this.matchJSX('<') ? this.parseJSXElement() : this.parseJSXStringLiteralAttribute();\n\t };\n\t JSXParser.prototype.parseJSXNameValueAttribute = function () {\n\t var node = this.createJSXNode();\n\t var name = this.parseJSXAttributeName();\n\t var value = null;\n\t if (this.matchJSX('=')) {\n\t this.expectJSX('=');\n\t value = this.parseJSXAttributeValue();\n\t }\n\t return this.finalize(node, new JSXNode.JSXAttribute(name, value));\n\t };\n\t JSXParser.prototype.parseJSXSpreadAttribute = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t this.expectJSX('...');\n\t this.finishJSX();\n\t var argument = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t return this.finalize(node, new JSXNode.JSXSpreadAttribute(argument));\n\t };\n\t JSXParser.prototype.parseJSXAttributes = function () {\n\t var attributes = [];\n\t while (!this.matchJSX('/') && !this.matchJSX('>')) {\n\t var attribute = this.matchJSX('{') ? this.parseJSXSpreadAttribute() :\n\t this.parseJSXNameValueAttribute();\n\t attributes.push(attribute);\n\t }\n\t return attributes;\n\t };\n\t JSXParser.prototype.parseJSXOpeningElement = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('<');\n\t var name = this.parseJSXElementName();\n\t var attributes = this.parseJSXAttributes();\n\t var selfClosing = this.matchJSX('/');\n\t if (selfClosing) {\n\t this.expectJSX('/');\n\t }\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t };\n\t JSXParser.prototype.parseJSXBoundaryElement = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('<');\n\t if (this.matchJSX('/')) {\n\t this.expectJSX('/');\n\t var name_3 = this.parseJSXElementName();\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXClosingElement(name_3));\n\t }\n\t var name = this.parseJSXElementName();\n\t var attributes = this.parseJSXAttributes();\n\t var selfClosing = this.matchJSX('/');\n\t if (selfClosing) {\n\t this.expectJSX('/');\n\t }\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t };\n\t JSXParser.prototype.parseJSXEmptyExpression = function () {\n\t var node = this.createJSXChildNode();\n\t this.collectComments();\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t return this.finalize(node, new JSXNode.JSXEmptyExpression());\n\t };\n\t JSXParser.prototype.parseJSXExpressionContainer = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t var expression;\n\t if (this.matchJSX('}')) {\n\t expression = this.parseJSXEmptyExpression();\n\t this.expectJSX('}');\n\t }\n\t else {\n\t this.finishJSX();\n\t expression = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t }\n\t return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t };\n\t JSXParser.prototype.parseJSXChildren = function () {\n\t var children = [];\n\t while (!this.scanner.eof()) {\n\t var node = this.createJSXChildNode();\n\t var token = this.nextJSXText();\n\t if (token.start < token.end) {\n\t var raw = this.getTokenRaw(token);\n\t var child = this.finalize(node, new JSXNode.JSXText(token.value, raw));\n\t children.push(child);\n\t }\n\t if (this.scanner.source[this.scanner.index] === '{') {\n\t var container = this.parseJSXExpressionContainer();\n\t children.push(container);\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return children;\n\t };\n\t JSXParser.prototype.parseComplexJSXElement = function (el) {\n\t var stack = [];\n\t while (!this.scanner.eof()) {\n\t el.children = el.children.concat(this.parseJSXChildren());\n\t var node = this.createJSXChildNode();\n\t var element = this.parseJSXBoundaryElement();\n\t if (element.type === jsx_syntax_1.JSXSyntax.JSXOpeningElement) {\n\t var opening = element;\n\t if (opening.selfClosing) {\n\t var child = this.finalize(node, new JSXNode.JSXElement(opening, [], null));\n\t el.children.push(child);\n\t }\n\t else {\n\t stack.push(el);\n\t el = { node: node, opening: opening, closing: null, children: [] };\n\t }\n\t }\n\t if (element.type === jsx_syntax_1.JSXSyntax.JSXClosingElement) {\n\t el.closing = element;\n\t var open_1 = getQualifiedElementName(el.opening.name);\n\t var close_1 = getQualifiedElementName(el.closing.name);\n\t if (open_1 !== close_1) {\n\t this.tolerateError('Expected corresponding JSX closing tag for %0', open_1);\n\t }\n\t if (stack.length > 0) {\n\t var child = this.finalize(el.node, new JSXNode.JSXElement(el.opening, el.children, el.closing));\n\t el = stack[stack.length - 1];\n\t el.children.push(child);\n\t stack.pop();\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t }\n\t return el;\n\t };\n\t JSXParser.prototype.parseJSXElement = function () {\n\t var node = this.createJSXNode();\n\t var opening = this.parseJSXOpeningElement();\n\t var children = [];\n\t var closing = null;\n\t if (!opening.selfClosing) {\n\t var el = this.parseComplexJSXElement({ node: node, opening: opening, closing: closing, children: children });\n\t children = el.children;\n\t closing = el.closing;\n\t }\n\t return this.finalize(node, new JSXNode.JSXElement(opening, children, closing));\n\t };\n\t JSXParser.prototype.parseJSXRoot = function () {\n\t // Pop the opening '<' added from the lookahead.\n\t if (this.config.tokens) {\n\t this.tokens.pop();\n\t }\n\t this.startJSX();\n\t var element = this.parseJSXElement();\n\t this.finishJSX();\n\t return element;\n\t };\n\t JSXParser.prototype.isStartOfExpression = function () {\n\t return _super.prototype.isStartOfExpression.call(this) || this.match('<');\n\t };\n\t return JSXParser;\n\t}(parser_1.Parser));\n\texports.JSXParser = JSXParser;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// See also tools/generate-unicode-regex.js.\n\tvar Regex = {\n\t // Unicode v8.0.0 NonAsciiIdentifierStart:\n\t NonAsciiIdentifierStart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\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-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\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\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\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\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]/,\n\t // Unicode v8.0.0 NonAsciiIdentifierPart:\n\t NonAsciiIdentifierPart: /[\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B4\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\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\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/\n\t};\n\texports.Character = {\n\t /* tslint:disable:no-bitwise */\n\t fromCodePoint: function (cp) {\n\t return (cp < 0x10000) ? String.fromCharCode(cp) :\n\t String.fromCharCode(0xD800 + ((cp - 0x10000) >> 10)) +\n\t String.fromCharCode(0xDC00 + ((cp - 0x10000) & 1023));\n\t },\n\t // https://tc39.github.io/ecma262/#sec-white-space\n\t isWhiteSpace: function (cp) {\n\t return (cp === 0x20) || (cp === 0x09) || (cp === 0x0B) || (cp === 0x0C) || (cp === 0xA0) ||\n\t (cp >= 0x1680 && [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(cp) >= 0);\n\t },\n\t // https://tc39.github.io/ecma262/#sec-line-terminators\n\t isLineTerminator: function (cp) {\n\t return (cp === 0x0A) || (cp === 0x0D) || (cp === 0x2028) || (cp === 0x2029);\n\t },\n\t // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t isIdentifierStart: function (cp) {\n\t return (cp === 0x24) || (cp === 0x5F) ||\n\t (cp >= 0x41 && cp <= 0x5A) ||\n\t (cp >= 0x61 && cp <= 0x7A) ||\n\t (cp === 0x5C) ||\n\t ((cp >= 0x80) && Regex.NonAsciiIdentifierStart.test(exports.Character.fromCodePoint(cp)));\n\t },\n\t isIdentifierPart: function (cp) {\n\t return (cp === 0x24) || (cp === 0x5F) ||\n\t (cp >= 0x41 && cp <= 0x5A) ||\n\t (cp >= 0x61 && cp <= 0x7A) ||\n\t (cp >= 0x30 && cp <= 0x39) ||\n\t (cp === 0x5C) ||\n\t ((cp >= 0x80) && Regex.NonAsciiIdentifierPart.test(exports.Character.fromCodePoint(cp)));\n\t },\n\t // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t isDecimalDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x39); // 0..9\n\t },\n\t isHexDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x39) ||\n\t (cp >= 0x41 && cp <= 0x46) ||\n\t (cp >= 0x61 && cp <= 0x66); // a..f\n\t },\n\t isOctalDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x37); // 0..7\n\t }\n\t};\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar jsx_syntax_1 = __webpack_require__(6);\n\t/* tslint:disable:max-classes-per-file */\n\tvar JSXClosingElement = (function () {\n\t function JSXClosingElement(name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXClosingElement;\n\t this.name = name;\n\t }\n\t return JSXClosingElement;\n\t}());\n\texports.JSXClosingElement = JSXClosingElement;\n\tvar JSXElement = (function () {\n\t function JSXElement(openingElement, children, closingElement) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXElement;\n\t this.openingElement = openingElement;\n\t this.children = children;\n\t this.closingElement = closingElement;\n\t }\n\t return JSXElement;\n\t}());\n\texports.JSXElement = JSXElement;\n\tvar JSXEmptyExpression = (function () {\n\t function JSXEmptyExpression() {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXEmptyExpression;\n\t }\n\t return JSXEmptyExpression;\n\t}());\n\texports.JSXEmptyExpression = JSXEmptyExpression;\n\tvar JSXExpressionContainer = (function () {\n\t function JSXExpressionContainer(expression) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXExpressionContainer;\n\t this.expression = expression;\n\t }\n\t return JSXExpressionContainer;\n\t}());\n\texports.JSXExpressionContainer = JSXExpressionContainer;\n\tvar JSXIdentifier = (function () {\n\t function JSXIdentifier(name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXIdentifier;\n\t this.name = name;\n\t }\n\t return JSXIdentifier;\n\t}());\n\texports.JSXIdentifier = JSXIdentifier;\n\tvar JSXMemberExpression = (function () {\n\t function JSXMemberExpression(object, property) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXMemberExpression;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return JSXMemberExpression;\n\t}());\n\texports.JSXMemberExpression = JSXMemberExpression;\n\tvar JSXAttribute = (function () {\n\t function JSXAttribute(name, value) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXAttribute;\n\t this.name = name;\n\t this.value = value;\n\t }\n\t return JSXAttribute;\n\t}());\n\texports.JSXAttribute = JSXAttribute;\n\tvar JSXNamespacedName = (function () {\n\t function JSXNamespacedName(namespace, name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXNamespacedName;\n\t this.namespace = namespace;\n\t this.name = name;\n\t }\n\t return JSXNamespacedName;\n\t}());\n\texports.JSXNamespacedName = JSXNamespacedName;\n\tvar JSXOpeningElement = (function () {\n\t function JSXOpeningElement(name, selfClosing, attributes) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXOpeningElement;\n\t this.name = name;\n\t this.selfClosing = selfClosing;\n\t this.attributes = attributes;\n\t }\n\t return JSXOpeningElement;\n\t}());\n\texports.JSXOpeningElement = JSXOpeningElement;\n\tvar JSXSpreadAttribute = (function () {\n\t function JSXSpreadAttribute(argument) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXSpreadAttribute;\n\t this.argument = argument;\n\t }\n\t return JSXSpreadAttribute;\n\t}());\n\texports.JSXSpreadAttribute = JSXSpreadAttribute;\n\tvar JSXText = (function () {\n\t function JSXText(value, raw) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXText;\n\t this.value = value;\n\t this.raw = raw;\n\t }\n\t return JSXText;\n\t}());\n\texports.JSXText = JSXText;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.JSXSyntax = {\n\t JSXAttribute: 'JSXAttribute',\n\t JSXClosingElement: 'JSXClosingElement',\n\t JSXElement: 'JSXElement',\n\t JSXEmptyExpression: 'JSXEmptyExpression',\n\t JSXExpressionContainer: 'JSXExpressionContainer',\n\t JSXIdentifier: 'JSXIdentifier',\n\t JSXMemberExpression: 'JSXMemberExpression',\n\t JSXNamespacedName: 'JSXNamespacedName',\n\t JSXOpeningElement: 'JSXOpeningElement',\n\t JSXSpreadAttribute: 'JSXSpreadAttribute',\n\t JSXText: 'JSXText'\n\t};\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __webpack_require__(2);\n\t/* tslint:disable:max-classes-per-file */\n\tvar ArrayExpression = (function () {\n\t function ArrayExpression(elements) {\n\t this.type = syntax_1.Syntax.ArrayExpression;\n\t this.elements = elements;\n\t }\n\t return ArrayExpression;\n\t}());\n\texports.ArrayExpression = ArrayExpression;\n\tvar ArrayPattern = (function () {\n\t function ArrayPattern(elements) {\n\t this.type = syntax_1.Syntax.ArrayPattern;\n\t this.elements = elements;\n\t }\n\t return ArrayPattern;\n\t}());\n\texports.ArrayPattern = ArrayPattern;\n\tvar ArrowFunctionExpression = (function () {\n\t function ArrowFunctionExpression(params, body, expression) {\n\t this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t this.id = null;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = expression;\n\t this.async = false;\n\t }\n\t return ArrowFunctionExpression;\n\t}());\n\texports.ArrowFunctionExpression = ArrowFunctionExpression;\n\tvar AssignmentExpression = (function () {\n\t function AssignmentExpression(operator, left, right) {\n\t this.type = syntax_1.Syntax.AssignmentExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return AssignmentExpression;\n\t}());\n\texports.AssignmentExpression = AssignmentExpression;\n\tvar AssignmentPattern = (function () {\n\t function AssignmentPattern(left, right) {\n\t this.type = syntax_1.Syntax.AssignmentPattern;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return AssignmentPattern;\n\t}());\n\texports.AssignmentPattern = AssignmentPattern;\n\tvar AsyncArrowFunctionExpression = (function () {\n\t function AsyncArrowFunctionExpression(params, body, expression) {\n\t this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t this.id = null;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = expression;\n\t this.async = true;\n\t }\n\t return AsyncArrowFunctionExpression;\n\t}());\n\texports.AsyncArrowFunctionExpression = AsyncArrowFunctionExpression;\n\tvar AsyncFunctionDeclaration = (function () {\n\t function AsyncFunctionDeclaration(id, params, body) {\n\t this.type = syntax_1.Syntax.FunctionDeclaration;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = false;\n\t this.async = true;\n\t }\n\t return AsyncFunctionDeclaration;\n\t}());\n\texports.AsyncFunctionDeclaration = AsyncFunctionDeclaration;\n\tvar AsyncFunctionExpression = (function () {\n\t function AsyncFunctionExpression(id, params, body) {\n\t this.type = syntax_1.Syntax.FunctionExpression;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = false;\n\t this.async = true;\n\t }\n\t return AsyncFunctionExpression;\n\t}());\n\texports.AsyncFunctionExpression = AsyncFunctionExpression;\n\tvar AwaitExpression = (function () {\n\t function AwaitExpression(argument) {\n\t this.type = syntax_1.Syntax.AwaitExpression;\n\t this.argument = argument;\n\t }\n\t return AwaitExpression;\n\t}());\n\texports.AwaitExpression = AwaitExpression;\n\tvar BinaryExpression = (function () {\n\t function BinaryExpression(operator, left, right) {\n\t var logical = (operator === '||' || operator === '&&');\n\t this.type = logical ? syntax_1.Syntax.LogicalExpression : syntax_1.Syntax.BinaryExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return BinaryExpression;\n\t}());\n\texports.BinaryExpression = BinaryExpression;\n\tvar BlockStatement = (function () {\n\t function BlockStatement(body) {\n\t this.type = syntax_1.Syntax.BlockStatement;\n\t this.body = body;\n\t }\n\t return BlockStatement;\n\t}());\n\texports.BlockStatement = BlockStatement;\n\tvar BreakStatement = (function () {\n\t function BreakStatement(label) {\n\t this.type = syntax_1.Syntax.BreakStatement;\n\t this.label = label;\n\t }\n\t return BreakStatement;\n\t}());\n\texports.BreakStatement = BreakStatement;\n\tvar CallExpression = (function () {\n\t function CallExpression(callee, args) {\n\t this.type = syntax_1.Syntax.CallExpression;\n\t this.callee = callee;\n\t this.arguments = args;\n\t }\n\t return CallExpression;\n\t}());\n\texports.CallExpression = CallExpression;\n\tvar CatchClause = (function () {\n\t function CatchClause(param, body) {\n\t this.type = syntax_1.Syntax.CatchClause;\n\t this.param = param;\n\t this.body = body;\n\t }\n\t return CatchClause;\n\t}());\n\texports.CatchClause = CatchClause;\n\tvar ClassBody = (function () {\n\t function ClassBody(body) {\n\t this.type = syntax_1.Syntax.ClassBody;\n\t this.body = body;\n\t }\n\t return ClassBody;\n\t}());\n\texports.ClassBody = ClassBody;\n\tvar ClassDeclaration = (function () {\n\t function ClassDeclaration(id, superClass, body) {\n\t this.type = syntax_1.Syntax.ClassDeclaration;\n\t this.id = id;\n\t this.superClass = superClass;\n\t this.body = body;\n\t }\n\t return ClassDeclaration;\n\t}());\n\texports.ClassDeclaration = ClassDeclaration;\n\tvar ClassExpression = (function () {\n\t function ClassExpression(id, superClass, body) {\n\t this.type = syntax_1.Syntax.ClassExpression;\n\t this.id = id;\n\t this.superClass = superClass;\n\t this.body = body;\n\t }\n\t return ClassExpression;\n\t}());\n\texports.ClassExpression = ClassExpression;\n\tvar ComputedMemberExpression = (function () {\n\t function ComputedMemberExpression(object, property) {\n\t this.type = syntax_1.Syntax.MemberExpression;\n\t this.computed = true;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return ComputedMemberExpression;\n\t}());\n\texports.ComputedMemberExpression = ComputedMemberExpression;\n\tvar ConditionalExpression = (function () {\n\t function ConditionalExpression(test, consequent, alternate) {\n\t this.type = syntax_1.Syntax.ConditionalExpression;\n\t this.test = test;\n\t this.consequent = consequent;\n\t this.alternate = alternate;\n\t }\n\t return ConditionalExpression;\n\t}());\n\texports.ConditionalExpression = ConditionalExpression;\n\tvar ContinueStatement = (function () {\n\t function ContinueStatement(label) {\n\t this.type = syntax_1.Syntax.ContinueStatement;\n\t this.label = label;\n\t }\n\t return ContinueStatement;\n\t}());\n\texports.ContinueStatement = ContinueStatement;\n\tvar DebuggerStatement = (function () {\n\t function DebuggerStatement() {\n\t this.type = syntax_1.Syntax.DebuggerStatement;\n\t }\n\t return DebuggerStatement;\n\t}());\n\texports.DebuggerStatement = DebuggerStatement;\n\tvar Directive = (function () {\n\t function Directive(expression, directive) {\n\t this.type = syntax_1.Syntax.ExpressionStatement;\n\t this.expression = expression;\n\t this.directive = directive;\n\t }\n\t return Directive;\n\t}());\n\texports.Directive = Directive;\n\tvar DoWhileStatement = (function () {\n\t function DoWhileStatement(body, test) {\n\t this.type = syntax_1.Syntax.DoWhileStatement;\n\t this.body = body;\n\t this.test = test;\n\t }\n\t return DoWhileStatement;\n\t}());\n\texports.DoWhileStatement = DoWhileStatement;\n\tvar EmptyStatement = (function () {\n\t function EmptyStatement() {\n\t this.type = syntax_1.Syntax.EmptyStatement;\n\t }\n\t return EmptyStatement;\n\t}());\n\texports.EmptyStatement = EmptyStatement;\n\tvar ExportAllDeclaration = (function () {\n\t function ExportAllDeclaration(source) {\n\t this.type = syntax_1.Syntax.ExportAllDeclaration;\n\t this.source = source;\n\t }\n\t return ExportAllDeclaration;\n\t}());\n\texports.ExportAllDeclaration = ExportAllDeclaration;\n\tvar ExportDefaultDeclaration = (function () {\n\t function ExportDefaultDeclaration(declaration) {\n\t this.type = syntax_1.Syntax.ExportDefaultDeclaration;\n\t this.declaration = declaration;\n\t }\n\t return ExportDefaultDeclaration;\n\t}());\n\texports.ExportDefaultDeclaration = ExportDefaultDeclaration;\n\tvar ExportNamedDeclaration = (function () {\n\t function ExportNamedDeclaration(declaration, specifiers, source) {\n\t this.type = syntax_1.Syntax.ExportNamedDeclaration;\n\t this.declaration = declaration;\n\t this.specifiers = specifiers;\n\t this.source = source;\n\t }\n\t return ExportNamedDeclaration;\n\t}());\n\texports.ExportNamedDeclaration = ExportNamedDeclaration;\n\tvar ExportSpecifier = (function () {\n\t function ExportSpecifier(local, exported) {\n\t this.type = syntax_1.Syntax.ExportSpecifier;\n\t this.exported = exported;\n\t this.local = local;\n\t }\n\t return ExportSpecifier;\n\t}());\n\texports.ExportSpecifier = ExportSpecifier;\n\tvar ExpressionStatement = (function () {\n\t function ExpressionStatement(expression) {\n\t this.type = syntax_1.Syntax.ExpressionStatement;\n\t this.expression = expression;\n\t }\n\t return ExpressionStatement;\n\t}());\n\texports.ExpressionStatement = ExpressionStatement;\n\tvar ForInStatement = (function () {\n\t function ForInStatement(left, right, body) {\n\t this.type = syntax_1.Syntax.ForInStatement;\n\t this.left = left;\n\t this.right = right;\n\t this.body = body;\n\t this.each = false;\n\t }\n\t return ForInStatement;\n\t}());\n\texports.ForInStatement = ForInStatement;\n\tvar ForOfStatement = (function () {\n\t function ForOfStatement(left, right, body) {\n\t this.type = syntax_1.Syntax.ForOfStatement;\n\t this.left = left;\n\t this.right = right;\n\t this.body = body;\n\t }\n\t return ForOfStatement;\n\t}());\n\texports.ForOfStatement = ForOfStatement;\n\tvar ForStatement = (function () {\n\t function ForStatement(init, test, update, body) {\n\t this.type = syntax_1.Syntax.ForStatement;\n\t this.init = init;\n\t this.test = test;\n\t this.update = update;\n\t this.body = body;\n\t }\n\t return ForStatement;\n\t}());\n\texports.ForStatement = ForStatement;\n\tvar FunctionDeclaration = (function () {\n\t function FunctionDeclaration(id, params, body, generator) {\n\t this.type = syntax_1.Syntax.FunctionDeclaration;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = generator;\n\t this.expression = false;\n\t this.async = false;\n\t }\n\t return FunctionDeclaration;\n\t}());\n\texports.FunctionDeclaration = FunctionDeclaration;\n\tvar FunctionExpression = (function () {\n\t function FunctionExpression(id, params, body, generator) {\n\t this.type = syntax_1.Syntax.FunctionExpression;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = generator;\n\t this.expression = false;\n\t this.async = false;\n\t }\n\t return FunctionExpression;\n\t}());\n\texports.FunctionExpression = FunctionExpression;\n\tvar Identifier = (function () {\n\t function Identifier(name) {\n\t this.type = syntax_1.Syntax.Identifier;\n\t this.name = name;\n\t }\n\t return Identifier;\n\t}());\n\texports.Identifier = Identifier;\n\tvar IfStatement = (function () {\n\t function IfStatement(test, consequent, alternate) {\n\t this.type = syntax_1.Syntax.IfStatement;\n\t this.test = test;\n\t this.consequent = consequent;\n\t this.alternate = alternate;\n\t }\n\t return IfStatement;\n\t}());\n\texports.IfStatement = IfStatement;\n\tvar ImportDeclaration = (function () {\n\t function ImportDeclaration(specifiers, source) {\n\t this.type = syntax_1.Syntax.ImportDeclaration;\n\t this.specifiers = specifiers;\n\t this.source = source;\n\t }\n\t return ImportDeclaration;\n\t}());\n\texports.ImportDeclaration = ImportDeclaration;\n\tvar ImportDefaultSpecifier = (function () {\n\t function ImportDefaultSpecifier(local) {\n\t this.type = syntax_1.Syntax.ImportDefaultSpecifier;\n\t this.local = local;\n\t }\n\t return ImportDefaultSpecifier;\n\t}());\n\texports.ImportDefaultSpecifier = ImportDefaultSpecifier;\n\tvar ImportNamespaceSpecifier = (function () {\n\t function ImportNamespaceSpecifier(local) {\n\t this.type = syntax_1.Syntax.ImportNamespaceSpecifier;\n\t this.local = local;\n\t }\n\t return ImportNamespaceSpecifier;\n\t}());\n\texports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;\n\tvar ImportSpecifier = (function () {\n\t function ImportSpecifier(local, imported) {\n\t this.type = syntax_1.Syntax.ImportSpecifier;\n\t this.local = local;\n\t this.imported = imported;\n\t }\n\t return ImportSpecifier;\n\t}());\n\texports.ImportSpecifier = ImportSpecifier;\n\tvar LabeledStatement = (function () {\n\t function LabeledStatement(label, body) {\n\t this.type = syntax_1.Syntax.LabeledStatement;\n\t this.label = label;\n\t this.body = body;\n\t }\n\t return LabeledStatement;\n\t}());\n\texports.LabeledStatement = LabeledStatement;\n\tvar Literal = (function () {\n\t function Literal(value, raw) {\n\t this.type = syntax_1.Syntax.Literal;\n\t this.value = value;\n\t this.raw = raw;\n\t }\n\t return Literal;\n\t}());\n\texports.Literal = Literal;\n\tvar MetaProperty = (function () {\n\t function MetaProperty(meta, property) {\n\t this.type = syntax_1.Syntax.MetaProperty;\n\t this.meta = meta;\n\t this.property = property;\n\t }\n\t return MetaProperty;\n\t}());\n\texports.MetaProperty = MetaProperty;\n\tvar MethodDefinition = (function () {\n\t function MethodDefinition(key, computed, value, kind, isStatic) {\n\t this.type = syntax_1.Syntax.MethodDefinition;\n\t this.key = key;\n\t this.computed = computed;\n\t this.value = value;\n\t this.kind = kind;\n\t this.static = isStatic;\n\t }\n\t return MethodDefinition;\n\t}());\n\texports.MethodDefinition = MethodDefinition;\n\tvar Module = (function () {\n\t function Module(body) {\n\t this.type = syntax_1.Syntax.Program;\n\t this.body = body;\n\t this.sourceType = 'module';\n\t }\n\t return Module;\n\t}());\n\texports.Module = Module;\n\tvar NewExpression = (function () {\n\t function NewExpression(callee, args) {\n\t this.type = syntax_1.Syntax.NewExpression;\n\t this.callee = callee;\n\t this.arguments = args;\n\t }\n\t return NewExpression;\n\t}());\n\texports.NewExpression = NewExpression;\n\tvar ObjectExpression = (function () {\n\t function ObjectExpression(properties) {\n\t this.type = syntax_1.Syntax.ObjectExpression;\n\t this.properties = properties;\n\t }\n\t return ObjectExpression;\n\t}());\n\texports.ObjectExpression = ObjectExpression;\n\tvar ObjectPattern = (function () {\n\t function ObjectPattern(properties) {\n\t this.type = syntax_1.Syntax.ObjectPattern;\n\t this.properties = properties;\n\t }\n\t return ObjectPattern;\n\t}());\n\texports.ObjectPattern = ObjectPattern;\n\tvar Property = (function () {\n\t function Property(kind, key, computed, value, method, shorthand) {\n\t this.type = syntax_1.Syntax.Property;\n\t this.key = key;\n\t this.computed = computed;\n\t this.value = value;\n\t this.kind = kind;\n\t this.method = method;\n\t this.shorthand = shorthand;\n\t }\n\t return Property;\n\t}());\n\texports.Property = Property;\n\tvar RegexLiteral = (function () {\n\t function RegexLiteral(value, raw, pattern, flags) {\n\t this.type = syntax_1.Syntax.Literal;\n\t this.value = value;\n\t this.raw = raw;\n\t this.regex = { pattern: pattern, flags: flags };\n\t }\n\t return RegexLiteral;\n\t}());\n\texports.RegexLiteral = RegexLiteral;\n\tvar RestElement = (function () {\n\t function RestElement(argument) {\n\t this.type = syntax_1.Syntax.RestElement;\n\t this.argument = argument;\n\t }\n\t return RestElement;\n\t}());\n\texports.RestElement = RestElement;\n\tvar ReturnStatement = (function () {\n\t function ReturnStatement(argument) {\n\t this.type = syntax_1.Syntax.ReturnStatement;\n\t this.argument = argument;\n\t }\n\t return ReturnStatement;\n\t}());\n\texports.ReturnStatement = ReturnStatement;\n\tvar Script = (function () {\n\t function Script(body) {\n\t this.type = syntax_1.Syntax.Program;\n\t this.body = body;\n\t this.sourceType = 'script';\n\t }\n\t return Script;\n\t}());\n\texports.Script = Script;\n\tvar SequenceExpression = (function () {\n\t function SequenceExpression(expressions) {\n\t this.type = syntax_1.Syntax.SequenceExpression;\n\t this.expressions = expressions;\n\t }\n\t return SequenceExpression;\n\t}());\n\texports.SequenceExpression = SequenceExpression;\n\tvar SpreadElement = (function () {\n\t function SpreadElement(argument) {\n\t this.type = syntax_1.Syntax.SpreadElement;\n\t this.argument = argument;\n\t }\n\t return SpreadElement;\n\t}());\n\texports.SpreadElement = SpreadElement;\n\tvar StaticMemberExpression = (function () {\n\t function StaticMemberExpression(object, property) {\n\t this.type = syntax_1.Syntax.MemberExpression;\n\t this.computed = false;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return StaticMemberExpression;\n\t}());\n\texports.StaticMemberExpression = StaticMemberExpression;\n\tvar Super = (function () {\n\t function Super() {\n\t this.type = syntax_1.Syntax.Super;\n\t }\n\t return Super;\n\t}());\n\texports.Super = Super;\n\tvar SwitchCase = (function () {\n\t function SwitchCase(test, consequent) {\n\t this.type = syntax_1.Syntax.SwitchCase;\n\t this.test = test;\n\t this.consequent = consequent;\n\t }\n\t return SwitchCase;\n\t}());\n\texports.SwitchCase = SwitchCase;\n\tvar SwitchStatement = (function () {\n\t function SwitchStatement(discriminant, cases) {\n\t this.type = syntax_1.Syntax.SwitchStatement;\n\t this.discriminant = discriminant;\n\t this.cases = cases;\n\t }\n\t return SwitchStatement;\n\t}());\n\texports.SwitchStatement = SwitchStatement;\n\tvar TaggedTemplateExpression = (function () {\n\t function TaggedTemplateExpression(tag, quasi) {\n\t this.type = syntax_1.Syntax.TaggedTemplateExpression;\n\t this.tag = tag;\n\t this.quasi = quasi;\n\t }\n\t return TaggedTemplateExpression;\n\t}());\n\texports.TaggedTemplateExpression = TaggedTemplateExpression;\n\tvar TemplateElement = (function () {\n\t function TemplateElement(value, tail) {\n\t this.type = syntax_1.Syntax.TemplateElement;\n\t this.value = value;\n\t this.tail = tail;\n\t }\n\t return TemplateElement;\n\t}());\n\texports.TemplateElement = TemplateElement;\n\tvar TemplateLiteral = (function () {\n\t function TemplateLiteral(quasis, expressions) {\n\t this.type = syntax_1.Syntax.TemplateLiteral;\n\t this.quasis = quasis;\n\t this.expressions = expressions;\n\t }\n\t return TemplateLiteral;\n\t}());\n\texports.TemplateLiteral = TemplateLiteral;\n\tvar ThisExpression = (function () {\n\t function ThisExpression() {\n\t this.type = syntax_1.Syntax.ThisExpression;\n\t }\n\t return ThisExpression;\n\t}());\n\texports.ThisExpression = ThisExpression;\n\tvar ThrowStatement = (function () {\n\t function ThrowStatement(argument) {\n\t this.type = syntax_1.Syntax.ThrowStatement;\n\t this.argument = argument;\n\t }\n\t return ThrowStatement;\n\t}());\n\texports.ThrowStatement = ThrowStatement;\n\tvar TryStatement = (function () {\n\t function TryStatement(block, handler, finalizer) {\n\t this.type = syntax_1.Syntax.TryStatement;\n\t this.block = block;\n\t this.handler = handler;\n\t this.finalizer = finalizer;\n\t }\n\t return TryStatement;\n\t}());\n\texports.TryStatement = TryStatement;\n\tvar UnaryExpression = (function () {\n\t function UnaryExpression(operator, argument) {\n\t this.type = syntax_1.Syntax.UnaryExpression;\n\t this.operator = operator;\n\t this.argument = argument;\n\t this.prefix = true;\n\t }\n\t return UnaryExpression;\n\t}());\n\texports.UnaryExpression = UnaryExpression;\n\tvar UpdateExpression = (function () {\n\t function UpdateExpression(operator, argument, prefix) {\n\t this.type = syntax_1.Syntax.UpdateExpression;\n\t this.operator = operator;\n\t this.argument = argument;\n\t this.prefix = prefix;\n\t }\n\t return UpdateExpression;\n\t}());\n\texports.UpdateExpression = UpdateExpression;\n\tvar VariableDeclaration = (function () {\n\t function VariableDeclaration(declarations, kind) {\n\t this.type = syntax_1.Syntax.VariableDeclaration;\n\t this.declarations = declarations;\n\t this.kind = kind;\n\t }\n\t return VariableDeclaration;\n\t}());\n\texports.VariableDeclaration = VariableDeclaration;\n\tvar VariableDeclarator = (function () {\n\t function VariableDeclarator(id, init) {\n\t this.type = syntax_1.Syntax.VariableDeclarator;\n\t this.id = id;\n\t this.init = init;\n\t }\n\t return VariableDeclarator;\n\t}());\n\texports.VariableDeclarator = VariableDeclarator;\n\tvar WhileStatement = (function () {\n\t function WhileStatement(test, body) {\n\t this.type = syntax_1.Syntax.WhileStatement;\n\t this.test = test;\n\t this.body = body;\n\t }\n\t return WhileStatement;\n\t}());\n\texports.WhileStatement = WhileStatement;\n\tvar WithStatement = (function () {\n\t function WithStatement(object, body) {\n\t this.type = syntax_1.Syntax.WithStatement;\n\t this.object = object;\n\t this.body = body;\n\t }\n\t return WithStatement;\n\t}());\n\texports.WithStatement = WithStatement;\n\tvar YieldExpression = (function () {\n\t function YieldExpression(argument, delegate) {\n\t this.type = syntax_1.Syntax.YieldExpression;\n\t this.argument = argument;\n\t this.delegate = delegate;\n\t }\n\t return YieldExpression;\n\t}());\n\texports.YieldExpression = YieldExpression;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __webpack_require__(9);\n\tvar error_handler_1 = __webpack_require__(10);\n\tvar messages_1 = __webpack_require__(11);\n\tvar Node = __webpack_require__(7);\n\tvar scanner_1 = __webpack_require__(12);\n\tvar syntax_1 = __webpack_require__(2);\n\tvar token_1 = __webpack_require__(13);\n\tvar ArrowParameterPlaceHolder = 'ArrowParameterPlaceHolder';\n\tvar Parser = (function () {\n\t function Parser(code, options, delegate) {\n\t if (options === void 0) { options = {}; }\n\t this.config = {\n\t range: (typeof options.range === 'boolean') && options.range,\n\t loc: (typeof options.loc === 'boolean') && options.loc,\n\t source: null,\n\t tokens: (typeof options.tokens === 'boolean') && options.tokens,\n\t comment: (typeof options.comment === 'boolean') && options.comment,\n\t tolerant: (typeof options.tolerant === 'boolean') && options.tolerant\n\t };\n\t if (this.config.loc && options.source && options.source !== null) {\n\t this.config.source = String(options.source);\n\t }\n\t this.delegate = delegate;\n\t this.errorHandler = new error_handler_1.ErrorHandler();\n\t this.errorHandler.tolerant = this.config.tolerant;\n\t this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t this.scanner.trackComment = this.config.comment;\n\t this.operatorPrecedence = {\n\t ')': 0,\n\t ';': 0,\n\t ',': 0,\n\t '=': 0,\n\t ']': 0,\n\t '||': 1,\n\t '&&': 2,\n\t '|': 3,\n\t '^': 4,\n\t '&': 5,\n\t '==': 6,\n\t '!=': 6,\n\t '===': 6,\n\t '!==': 6,\n\t '<': 7,\n\t '>': 7,\n\t '<=': 7,\n\t '>=': 7,\n\t '<<': 8,\n\t '>>': 8,\n\t '>>>': 8,\n\t '+': 9,\n\t '-': 9,\n\t '*': 11,\n\t '/': 11,\n\t '%': 11\n\t };\n\t this.lookahead = {\n\t type: 2 /* EOF */,\n\t value: '',\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: 0,\n\t start: 0,\n\t end: 0\n\t };\n\t this.hasLineTerminator = false;\n\t this.context = {\n\t isModule: false,\n\t await: false,\n\t allowIn: true,\n\t allowStrictDirective: true,\n\t allowYield: true,\n\t firstCoverInitializedNameError: null,\n\t isAssignmentTarget: false,\n\t isBindingElement: false,\n\t inFunctionBody: false,\n\t inIteration: false,\n\t inSwitch: false,\n\t labelSet: {},\n\t strict: false\n\t };\n\t this.tokens = [];\n\t this.startMarker = {\n\t index: 0,\n\t line: this.scanner.lineNumber,\n\t column: 0\n\t };\n\t this.lastMarker = {\n\t index: 0,\n\t line: this.scanner.lineNumber,\n\t column: 0\n\t };\n\t this.nextToken();\n\t this.lastMarker = {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t }\n\t Parser.prototype.throwError = function (messageFormat) {\n\t var values = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t values[_i - 1] = arguments[_i];\n\t }\n\t var args = Array.prototype.slice.call(arguments, 1);\n\t var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t return args[idx];\n\t });\n\t var index = this.lastMarker.index;\n\t var line = this.lastMarker.line;\n\t var column = this.lastMarker.column + 1;\n\t throw this.errorHandler.createError(index, line, column, msg);\n\t };\n\t Parser.prototype.tolerateError = function (messageFormat) {\n\t var values = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t values[_i - 1] = arguments[_i];\n\t }\n\t var args = Array.prototype.slice.call(arguments, 1);\n\t var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t return args[idx];\n\t });\n\t var index = this.lastMarker.index;\n\t var line = this.scanner.lineNumber;\n\t var column = this.lastMarker.column + 1;\n\t this.errorHandler.tolerateError(index, line, column, msg);\n\t };\n\t // Throw an exception because of the token.\n\t Parser.prototype.unexpectedTokenError = function (token, message) {\n\t var msg = message || messages_1.Messages.UnexpectedToken;\n\t var value;\n\t if (token) {\n\t if (!message) {\n\t msg = (token.type === 2 /* EOF */) ? messages_1.Messages.UnexpectedEOS :\n\t (token.type === 3 /* Identifier */) ? messages_1.Messages.UnexpectedIdentifier :\n\t (token.type === 6 /* NumericLiteral */) ? messages_1.Messages.UnexpectedNumber :\n\t (token.type === 8 /* StringLiteral */) ? messages_1.Messages.UnexpectedString :\n\t (token.type === 10 /* Template */) ? messages_1.Messages.UnexpectedTemplate :\n\t messages_1.Messages.UnexpectedToken;\n\t if (token.type === 4 /* Keyword */) {\n\t if (this.scanner.isFutureReservedWord(token.value)) {\n\t msg = messages_1.Messages.UnexpectedReserved;\n\t }\n\t else if (this.context.strict && this.scanner.isStrictModeReservedWord(token.value)) {\n\t msg = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t value = token.value;\n\t }\n\t else {\n\t value = 'ILLEGAL';\n\t }\n\t msg = msg.replace('%0', value);\n\t if (token && typeof token.lineNumber === 'number') {\n\t var index = token.start;\n\t var line = token.lineNumber;\n\t var lastMarkerLineStart = this.lastMarker.index - this.lastMarker.column;\n\t var column = token.start - lastMarkerLineStart + 1;\n\t return this.errorHandler.createError(index, line, column, msg);\n\t }\n\t else {\n\t var index = this.lastMarker.index;\n\t var line = this.lastMarker.line;\n\t var column = this.lastMarker.column + 1;\n\t return this.errorHandler.createError(index, line, column, msg);\n\t }\n\t };\n\t Parser.prototype.throwUnexpectedToken = function (token, message) {\n\t throw this.unexpectedTokenError(token, message);\n\t };\n\t Parser.prototype.tolerateUnexpectedToken = function (token, message) {\n\t this.errorHandler.tolerate(this.unexpectedTokenError(token, message));\n\t };\n\t Parser.prototype.collectComments = function () {\n\t if (!this.config.comment) {\n\t this.scanner.scanComments();\n\t }\n\t else {\n\t var comments = this.scanner.scanComments();\n\t if (comments.length > 0 && this.delegate) {\n\t for (var i = 0; i < comments.length; ++i) {\n\t var e = comments[i];\n\t var node = void 0;\n\t node = {\n\t type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t value: this.scanner.source.slice(e.slice[0], e.slice[1])\n\t };\n\t if (this.config.range) {\n\t node.range = e.range;\n\t }\n\t if (this.config.loc) {\n\t node.loc = e.loc;\n\t }\n\t var metadata = {\n\t start: {\n\t line: e.loc.start.line,\n\t column: e.loc.start.column,\n\t offset: e.range[0]\n\t },\n\t end: {\n\t line: e.loc.end.line,\n\t column: e.loc.end.column,\n\t offset: e.range[1]\n\t }\n\t };\n\t this.delegate(node, metadata);\n\t }\n\t }\n\t }\n\t };\n\t // From internal representation to an external structure\n\t Parser.prototype.getTokenRaw = function (token) {\n\t return this.scanner.source.slice(token.start, token.end);\n\t };\n\t Parser.prototype.convertToken = function (token) {\n\t var t = {\n\t type: token_1.TokenName[token.type],\n\t value: this.getTokenRaw(token)\n\t };\n\t if (this.config.range) {\n\t t.range = [token.start, token.end];\n\t }\n\t if (this.config.loc) {\n\t t.loc = {\n\t start: {\n\t line: this.startMarker.line,\n\t column: this.startMarker.column\n\t },\n\t end: {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t }\n\t };\n\t }\n\t if (token.type === 9 /* RegularExpression */) {\n\t var pattern = token.pattern;\n\t var flags = token.flags;\n\t t.regex = { pattern: pattern, flags: flags };\n\t }\n\t return t;\n\t };\n\t Parser.prototype.nextToken = function () {\n\t var token = this.lookahead;\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t this.collectComments();\n\t if (this.scanner.index !== this.startMarker.index) {\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t }\n\t var next = this.scanner.lex();\n\t this.hasLineTerminator = (token.lineNumber !== next.lineNumber);\n\t if (next && this.context.strict && next.type === 3 /* Identifier */) {\n\t if (this.scanner.isStrictModeReservedWord(next.value)) {\n\t next.type = 4 /* Keyword */;\n\t }\n\t }\n\t this.lookahead = next;\n\t if (this.config.tokens && next.type !== 2 /* EOF */) {\n\t this.tokens.push(this.convertToken(next));\n\t }\n\t return token;\n\t };\n\t Parser.prototype.nextRegexToken = function () {\n\t this.collectComments();\n\t var token = this.scanner.scanRegExp();\n\t if (this.config.tokens) {\n\t // Pop the previous token, '/' or '/='\n\t // This is added from the lookahead token.\n\t this.tokens.pop();\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t // Prime the next lookahead.\n\t this.lookahead = token;\n\t this.nextToken();\n\t return token;\n\t };\n\t Parser.prototype.createNode = function () {\n\t return {\n\t index: this.startMarker.index,\n\t line: this.startMarker.line,\n\t column: this.startMarker.column\n\t };\n\t };\n\t Parser.prototype.startNode = function (token, lastLineStart) {\n\t if (lastLineStart === void 0) { lastLineStart = 0; }\n\t var column = token.start - token.lineStart;\n\t var line = token.lineNumber;\n\t if (column < 0) {\n\t column += lastLineStart;\n\t line--;\n\t }\n\t return {\n\t index: token.start,\n\t line: line,\n\t column: column\n\t };\n\t };\n\t Parser.prototype.finalize = function (marker, node) {\n\t if (this.config.range) {\n\t node.range = [marker.index, this.lastMarker.index];\n\t }\n\t if (this.config.loc) {\n\t node.loc = {\n\t start: {\n\t line: marker.line,\n\t column: marker.column,\n\t },\n\t end: {\n\t line: this.lastMarker.line,\n\t column: this.lastMarker.column\n\t }\n\t };\n\t if (this.config.source) {\n\t node.loc.source = this.config.source;\n\t }\n\t }\n\t if (this.delegate) {\n\t var metadata = {\n\t start: {\n\t line: marker.line,\n\t column: marker.column,\n\t offset: marker.index\n\t },\n\t end: {\n\t line: this.lastMarker.line,\n\t column: this.lastMarker.column,\n\t offset: this.lastMarker.index\n\t }\n\t };\n\t this.delegate(node, metadata);\n\t }\n\t return node;\n\t };\n\t // Expect the next token to match the specified punctuator.\n\t // If not, an exception will be thrown.\n\t Parser.prototype.expect = function (value) {\n\t var token = this.nextToken();\n\t if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Quietly expect a comma when in tolerant mode, otherwise delegates to expect().\n\t Parser.prototype.expectCommaSeparator = function () {\n\t if (this.config.tolerant) {\n\t var token = this.lookahead;\n\t if (token.type === 7 /* Punctuator */ && token.value === ',') {\n\t this.nextToken();\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === ';') {\n\t this.nextToken();\n\t this.tolerateUnexpectedToken(token);\n\t }\n\t else {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.UnexpectedToken);\n\t }\n\t }\n\t else {\n\t this.expect(',');\n\t }\n\t };\n\t // Expect the next token to match the specified keyword.\n\t // If not, an exception will be thrown.\n\t Parser.prototype.expectKeyword = function (keyword) {\n\t var token = this.nextToken();\n\t if (token.type !== 4 /* Keyword */ || token.value !== keyword) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Return true if the next token matches the specified punctuator.\n\t Parser.prototype.match = function (value) {\n\t return this.lookahead.type === 7 /* Punctuator */ && this.lookahead.value === value;\n\t };\n\t // Return true if the next token matches the specified keyword\n\t Parser.prototype.matchKeyword = function (keyword) {\n\t return this.lookahead.type === 4 /* Keyword */ && this.lookahead.value === keyword;\n\t };\n\t // Return true if the next token matches the specified contextual keyword\n\t // (where an identifier is sometimes a keyword depending on the context)\n\t Parser.prototype.matchContextualKeyword = function (keyword) {\n\t return this.lookahead.type === 3 /* Identifier */ && this.lookahead.value === keyword;\n\t };\n\t // Return true if the next token is an assignment operator\n\t Parser.prototype.matchAssign = function () {\n\t if (this.lookahead.type !== 7 /* Punctuator */) {\n\t return false;\n\t }\n\t var op = this.lookahead.value;\n\t return op === '=' ||\n\t op === '*=' ||\n\t op === '**=' ||\n\t op === '/=' ||\n\t op === '%=' ||\n\t op === '+=' ||\n\t op === '-=' ||\n\t op === '<<=' ||\n\t op === '>>=' ||\n\t op === '>>>=' ||\n\t op === '&=' ||\n\t op === '^=' ||\n\t op === '|=';\n\t };\n\t // Cover grammar support.\n\t //\n\t // When an assignment expression position starts with an left parenthesis, the determination of the type\n\t // of the syntax is to be deferred arbitrarily long until the end of the parentheses pair (plus a lookahead)\n\t // or the first comma. This situation also defers the determination of all the expressions nested in the pair.\n\t //\n\t // There are three productions that can be parsed in a parentheses pair that needs to be determined\n\t // after the outermost pair is closed. They are:\n\t //\n\t // 1. AssignmentExpression\n\t // 2. BindingElements\n\t // 3. AssignmentTargets\n\t //\n\t // In order to avoid exponential backtracking, we use two flags to denote if the production can be\n\t // binding element or assignment target.\n\t //\n\t // The three productions have the relationship:\n\t //\n\t // BindingElements ⊆ AssignmentTargets ⊆ AssignmentExpression\n\t //\n\t // with a single exception that CoverInitializedName when used directly in an Expression, generates\n\t // an early error. Therefore, we need the third state, firstCoverInitializedNameError, to track the\n\t // first usage of CoverInitializedName and report it when we reached the end of the parentheses pair.\n\t //\n\t // isolateCoverGrammar function runs the given parser function with a new cover grammar context, and it does not\n\t // effect the current flags. This means the production the parser parses is only used as an expression. Therefore\n\t // the CoverInitializedName check is conducted.\n\t //\n\t // inheritCoverGrammar function runs the given parse function with a new cover grammar context, and it propagates\n\t // the flags outside of the parser. This means the production the parser parses is used as a part of a potential\n\t // pattern. The CoverInitializedName check is deferred.\n\t Parser.prototype.isolateCoverGrammar = function (parseFunction) {\n\t var previousIsBindingElement = this.context.isBindingElement;\n\t var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t this.context.isBindingElement = true;\n\t this.context.isAssignmentTarget = true;\n\t this.context.firstCoverInitializedNameError = null;\n\t var result = parseFunction.call(this);\n\t if (this.context.firstCoverInitializedNameError !== null) {\n\t this.throwUnexpectedToken(this.context.firstCoverInitializedNameError);\n\t }\n\t this.context.isBindingElement = previousIsBindingElement;\n\t this.context.isAssignmentTarget = previousIsAssignmentTarget;\n\t this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError;\n\t return result;\n\t };\n\t Parser.prototype.inheritCoverGrammar = function (parseFunction) {\n\t var previousIsBindingElement = this.context.isBindingElement;\n\t var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t this.context.isBindingElement = true;\n\t this.context.isAssignmentTarget = true;\n\t this.context.firstCoverInitializedNameError = null;\n\t var result = parseFunction.call(this);\n\t this.context.isBindingElement = this.context.isBindingElement && previousIsBindingElement;\n\t this.context.isAssignmentTarget = this.context.isAssignmentTarget && previousIsAssignmentTarget;\n\t this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError || this.context.firstCoverInitializedNameError;\n\t return result;\n\t };\n\t Parser.prototype.consumeSemicolon = function () {\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else if (!this.hasLineTerminator) {\n\t if (this.lookahead.type !== 2 /* EOF */ && !this.match('}')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t this.lastMarker.index = this.startMarker.index;\n\t this.lastMarker.line = this.startMarker.line;\n\t this.lastMarker.column = this.startMarker.column;\n\t }\n\t };\n\t // https://tc39.github.io/ecma262/#sec-primary-expression\n\t Parser.prototype.parsePrimaryExpression = function () {\n\t var node = this.createNode();\n\t var expr;\n\t var token, raw;\n\t switch (this.lookahead.type) {\n\t case 3 /* Identifier */:\n\t if ((this.context.isModule || this.context.await) && this.lookahead.value === 'await') {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t }\n\t expr = this.matchAsyncFunction() ? this.parseFunctionExpression() : this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t break;\n\t case 6 /* NumericLiteral */:\n\t case 8 /* StringLiteral */:\n\t if (this.context.strict && this.lookahead.octal) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(token.value, raw));\n\t break;\n\t case 1 /* BooleanLiteral */:\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(token.value === 'true', raw));\n\t break;\n\t case 5 /* NullLiteral */:\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(null, raw));\n\t break;\n\t case 10 /* Template */:\n\t expr = this.parseTemplateLiteral();\n\t break;\n\t case 7 /* Punctuator */:\n\t switch (this.lookahead.value) {\n\t case '(':\n\t this.context.isBindingElement = false;\n\t expr = this.inheritCoverGrammar(this.parseGroupExpression);\n\t break;\n\t case '[':\n\t expr = this.inheritCoverGrammar(this.parseArrayInitializer);\n\t break;\n\t case '{':\n\t expr = this.inheritCoverGrammar(this.parseObjectInitializer);\n\t break;\n\t case '/':\n\t case '/=':\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t this.scanner.index = this.startMarker.index;\n\t token = this.nextRegexToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.RegexLiteral(token.regex, raw, token.pattern, token.flags));\n\t break;\n\t default:\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t break;\n\t case 4 /* Keyword */:\n\t if (!this.context.strict && this.context.allowYield && this.matchKeyword('yield')) {\n\t expr = this.parseIdentifierName();\n\t }\n\t else if (!this.context.strict && this.matchKeyword('let')) {\n\t expr = this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t }\n\t else {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t if (this.matchKeyword('function')) {\n\t expr = this.parseFunctionExpression();\n\t }\n\t else if (this.matchKeyword('this')) {\n\t this.nextToken();\n\t expr = this.finalize(node, new Node.ThisExpression());\n\t }\n\t else if (this.matchKeyword('class')) {\n\t expr = this.parseClassExpression();\n\t }\n\t else {\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t break;\n\t default:\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-array-initializer\n\t Parser.prototype.parseSpreadElement = function () {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t return this.finalize(node, new Node.SpreadElement(arg));\n\t };\n\t Parser.prototype.parseArrayInitializer = function () {\n\t var node = this.createNode();\n\t var elements = [];\n\t this.expect('[');\n\t while (!this.match(']')) {\n\t if (this.match(',')) {\n\t this.nextToken();\n\t elements.push(null);\n\t }\n\t else if (this.match('...')) {\n\t var element = this.parseSpreadElement();\n\t if (!this.match(']')) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t this.expect(',');\n\t }\n\t elements.push(element);\n\t }\n\t else {\n\t elements.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t if (!this.match(']')) {\n\t this.expect(',');\n\t }\n\t }\n\t }\n\t this.expect(']');\n\t return this.finalize(node, new Node.ArrayExpression(elements));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-object-initializer\n\t Parser.prototype.parsePropertyMethod = function (params) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = params.simple;\n\t var body = this.isolateCoverGrammar(this.parseFunctionSourceElements);\n\t if (this.context.strict && params.firstRestricted) {\n\t this.tolerateUnexpectedToken(params.firstRestricted, params.message);\n\t }\n\t if (this.context.strict && params.stricted) {\n\t this.tolerateUnexpectedToken(params.stricted, params.message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t return body;\n\t };\n\t Parser.prototype.parsePropertyMethodFunction = function () {\n\t var isGenerator = false;\n\t var node = this.createNode();\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var params = this.parseFormalParameters();\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t };\n\t Parser.prototype.parsePropertyMethodAsyncFunction = function () {\n\t var node = this.createNode();\n\t var previousAllowYield = this.context.allowYield;\n\t var previousAwait = this.context.await;\n\t this.context.allowYield = false;\n\t this.context.await = true;\n\t var params = this.parseFormalParameters();\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t this.context.await = previousAwait;\n\t return this.finalize(node, new Node.AsyncFunctionExpression(null, params.params, method));\n\t };\n\t Parser.prototype.parseObjectPropertyKey = function () {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var key;\n\t switch (token.type) {\n\t case 8 /* StringLiteral */:\n\t case 6 /* NumericLiteral */:\n\t if (this.context.strict && token.octal) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t var raw = this.getTokenRaw(token);\n\t key = this.finalize(node, new Node.Literal(token.value, raw));\n\t break;\n\t case 3 /* Identifier */:\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 4 /* Keyword */:\n\t key = this.finalize(node, new Node.Identifier(token.value));\n\t break;\n\t case 7 /* Punctuator */:\n\t if (token.value === '[') {\n\t key = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.expect(']');\n\t }\n\t else {\n\t key = this.throwUnexpectedToken(token);\n\t }\n\t break;\n\t default:\n\t key = this.throwUnexpectedToken(token);\n\t }\n\t return key;\n\t };\n\t Parser.prototype.isPropertyKey = function (key, value) {\n\t return (key.type === syntax_1.Syntax.Identifier && key.name === value) ||\n\t (key.type === syntax_1.Syntax.Literal && key.value === value);\n\t };\n\t Parser.prototype.parseObjectProperty = function (hasProto) {\n\t var node = this.createNode();\n\t var token = this.lookahead;\n\t var kind;\n\t var key = null;\n\t var value = null;\n\t var computed = false;\n\t var method = false;\n\t var shorthand = false;\n\t var isAsync = false;\n\t if (token.type === 3 /* Identifier */) {\n\t var id = token.value;\n\t this.nextToken();\n\t computed = this.match('[');\n\t isAsync = !this.hasLineTerminator && (id === 'async') &&\n\t !this.match(':') && !this.match('(') && !this.match('*') && !this.match(',');\n\t key = isAsync ? this.parseObjectPropertyKey() : this.finalize(node, new Node.Identifier(id));\n\t }\n\t else if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t }\n\t var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'get' && lookaheadPropertyKey) {\n\t kind = 'get';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.context.allowYield = false;\n\t value = this.parseGetterMethod();\n\t }\n\t else if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'set' && lookaheadPropertyKey) {\n\t kind = 'set';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseSetterMethod();\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t kind = 'init';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseGeneratorMethod();\n\t method = true;\n\t }\n\t else {\n\t if (!key) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t kind = 'init';\n\t if (this.match(':') && !isAsync) {\n\t if (!computed && this.isPropertyKey(key, '__proto__')) {\n\t if (hasProto.value) {\n\t this.tolerateError(messages_1.Messages.DuplicateProtoProperty);\n\t }\n\t hasProto.value = true;\n\t }\n\t this.nextToken();\n\t value = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else if (this.match('(')) {\n\t value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t method = true;\n\t }\n\t else if (token.type === 3 /* Identifier */) {\n\t var id = this.finalize(node, new Node.Identifier(token.value));\n\t if (this.match('=')) {\n\t this.context.firstCoverInitializedNameError = this.lookahead;\n\t this.nextToken();\n\t shorthand = true;\n\t var init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t value = this.finalize(node, new Node.AssignmentPattern(id, init));\n\t }\n\t else {\n\t shorthand = true;\n\t value = id;\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t return this.finalize(node, new Node.Property(kind, key, computed, value, method, shorthand));\n\t };\n\t Parser.prototype.parseObjectInitializer = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var properties = [];\n\t var hasProto = { value: false };\n\t while (!this.match('}')) {\n\t properties.push(this.parseObjectProperty(hasProto));\n\t if (!this.match('}')) {\n\t this.expectCommaSeparator();\n\t }\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.ObjectExpression(properties));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-template-literals\n\t Parser.prototype.parseTemplateHead = function () {\n\t assert_1.assert(this.lookahead.head, 'Template literal must start with a template head');\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var raw = token.value;\n\t var cooked = token.cooked;\n\t return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t };\n\t Parser.prototype.parseTemplateElement = function () {\n\t if (this.lookahead.type !== 10 /* Template */) {\n\t this.throwUnexpectedToken();\n\t }\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var raw = token.value;\n\t var cooked = token.cooked;\n\t return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t };\n\t Parser.prototype.parseTemplateLiteral = function () {\n\t var node = this.createNode();\n\t var expressions = [];\n\t var quasis = [];\n\t var quasi = this.parseTemplateHead();\n\t quasis.push(quasi);\n\t while (!quasi.tail) {\n\t expressions.push(this.parseExpression());\n\t quasi = this.parseTemplateElement();\n\t quasis.push(quasi);\n\t }\n\t return this.finalize(node, new Node.TemplateLiteral(quasis, expressions));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-grouping-operator\n\t Parser.prototype.reinterpretExpressionAsPattern = function (expr) {\n\t switch (expr.type) {\n\t case syntax_1.Syntax.Identifier:\n\t case syntax_1.Syntax.MemberExpression:\n\t case syntax_1.Syntax.RestElement:\n\t case syntax_1.Syntax.AssignmentPattern:\n\t break;\n\t case syntax_1.Syntax.SpreadElement:\n\t expr.type = syntax_1.Syntax.RestElement;\n\t this.reinterpretExpressionAsPattern(expr.argument);\n\t break;\n\t case syntax_1.Syntax.ArrayExpression:\n\t expr.type = syntax_1.Syntax.ArrayPattern;\n\t for (var i = 0; i < expr.elements.length; i++) {\n\t if (expr.elements[i] !== null) {\n\t this.reinterpretExpressionAsPattern(expr.elements[i]);\n\t }\n\t }\n\t break;\n\t case syntax_1.Syntax.ObjectExpression:\n\t expr.type = syntax_1.Syntax.ObjectPattern;\n\t for (var i = 0; i < expr.properties.length; i++) {\n\t this.reinterpretExpressionAsPattern(expr.properties[i].value);\n\t }\n\t break;\n\t case syntax_1.Syntax.AssignmentExpression:\n\t expr.type = syntax_1.Syntax.AssignmentPattern;\n\t delete expr.operator;\n\t this.reinterpretExpressionAsPattern(expr.left);\n\t break;\n\t default:\n\t // Allow other node type for tolerant parsing.\n\t break;\n\t }\n\t };\n\t Parser.prototype.parseGroupExpression = function () {\n\t var expr;\n\t this.expect('(');\n\t if (this.match(')')) {\n\t this.nextToken();\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [],\n\t async: false\n\t };\n\t }\n\t else {\n\t var startToken = this.lookahead;\n\t var params = [];\n\t if (this.match('...')) {\n\t expr = this.parseRestElement(params);\n\t this.expect(')');\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [expr],\n\t async: false\n\t };\n\t }\n\t else {\n\t var arrow = false;\n\t this.context.isBindingElement = true;\n\t expr = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t if (this.match(',')) {\n\t var expressions = [];\n\t this.context.isAssignmentTarget = false;\n\t expressions.push(expr);\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (!this.match(',')) {\n\t break;\n\t }\n\t this.nextToken();\n\t if (this.match(')')) {\n\t this.nextToken();\n\t for (var i = 0; i < expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expressions[i]);\n\t }\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: expressions,\n\t async: false\n\t };\n\t }\n\t else if (this.match('...')) {\n\t if (!this.context.isBindingElement) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t expressions.push(this.parseRestElement(params));\n\t this.expect(')');\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t this.context.isBindingElement = false;\n\t for (var i = 0; i < expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expressions[i]);\n\t }\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: expressions,\n\t async: false\n\t };\n\t }\n\t else {\n\t expressions.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t if (arrow) {\n\t break;\n\t }\n\t }\n\t if (!arrow) {\n\t expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t }\n\t }\n\t if (!arrow) {\n\t this.expect(')');\n\t if (this.match('=>')) {\n\t if (expr.type === syntax_1.Syntax.Identifier && expr.name === 'yield') {\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [expr],\n\t async: false\n\t };\n\t }\n\t if (!arrow) {\n\t if (!this.context.isBindingElement) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t if (expr.type === syntax_1.Syntax.SequenceExpression) {\n\t for (var i = 0; i < expr.expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expr.expressions[i]);\n\t }\n\t }\n\t else {\n\t this.reinterpretExpressionAsPattern(expr);\n\t }\n\t var parameters = (expr.type === syntax_1.Syntax.SequenceExpression ? expr.expressions : [expr]);\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: parameters,\n\t async: false\n\t };\n\t }\n\t }\n\t this.context.isBindingElement = false;\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-left-hand-side-expressions\n\t Parser.prototype.parseArguments = function () {\n\t this.expect('(');\n\t var args = [];\n\t if (!this.match(')')) {\n\t while (true) {\n\t var expr = this.match('...') ? this.parseSpreadElement() :\n\t this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t args.push(expr);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expectCommaSeparator();\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return args;\n\t };\n\t Parser.prototype.isIdentifierName = function (token) {\n\t return token.type === 3 /* Identifier */ ||\n\t token.type === 4 /* Keyword */ ||\n\t token.type === 1 /* BooleanLiteral */ ||\n\t token.type === 5 /* NullLiteral */;\n\t };\n\t Parser.prototype.parseIdentifierName = function () {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t if (!this.isIdentifierName(token)) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new Node.Identifier(token.value));\n\t };\n\t Parser.prototype.parseNewExpression = function () {\n\t var node = this.createNode();\n\t var id = this.parseIdentifierName();\n\t assert_1.assert(id.name === 'new', 'New expression must start with `new`');\n\t var expr;\n\t if (this.match('.')) {\n\t this.nextToken();\n\t if (this.lookahead.type === 3 /* Identifier */ && this.context.inFunctionBody && this.lookahead.value === 'target') {\n\t var property = this.parseIdentifierName();\n\t expr = new Node.MetaProperty(id, property);\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t else {\n\t var callee = this.isolateCoverGrammar(this.parseLeftHandSideExpression);\n\t var args = this.match('(') ? this.parseArguments() : [];\n\t expr = new Node.NewExpression(callee, args);\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t return this.finalize(node, expr);\n\t };\n\t Parser.prototype.parseAsyncArgument = function () {\n\t var arg = this.parseAssignmentExpression();\n\t this.context.firstCoverInitializedNameError = null;\n\t return arg;\n\t };\n\t Parser.prototype.parseAsyncArguments = function () {\n\t this.expect('(');\n\t var args = [];\n\t if (!this.match(')')) {\n\t while (true) {\n\t var expr = this.match('...') ? this.parseSpreadElement() :\n\t this.isolateCoverGrammar(this.parseAsyncArgument);\n\t args.push(expr);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expectCommaSeparator();\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return args;\n\t };\n\t Parser.prototype.parseLeftHandSideExpressionAllowCall = function () {\n\t var startToken = this.lookahead;\n\t var maybeAsync = this.matchContextualKeyword('async');\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t var expr;\n\t if (this.matchKeyword('super') && this.context.inFunctionBody) {\n\t expr = this.createNode();\n\t this.nextToken();\n\t expr = this.finalize(expr, new Node.Super());\n\t if (!this.match('(') && !this.match('.') && !this.match('[')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t else {\n\t expr = this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t }\n\t while (true) {\n\t if (this.match('.')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('.');\n\t var property = this.parseIdentifierName();\n\t expr = this.finalize(this.startNode(startToken), new Node.StaticMemberExpression(expr, property));\n\t }\n\t else if (this.match('(')) {\n\t var asyncArrow = maybeAsync && (startToken.lineNumber === this.lookahead.lineNumber);\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = false;\n\t var args = asyncArrow ? this.parseAsyncArguments() : this.parseArguments();\n\t expr = this.finalize(this.startNode(startToken), new Node.CallExpression(expr, args));\n\t if (asyncArrow && this.match('=>')) {\n\t for (var i = 0; i < args.length; ++i) {\n\t this.reinterpretExpressionAsPattern(args[i]);\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: args,\n\t async: true\n\t };\n\t }\n\t }\n\t else if (this.match('[')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('[');\n\t var property = this.isolateCoverGrammar(this.parseExpression);\n\t this.expect(']');\n\t expr = this.finalize(this.startNode(startToken), new Node.ComputedMemberExpression(expr, property));\n\t }\n\t else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t var quasi = this.parseTemplateLiteral();\n\t expr = this.finalize(this.startNode(startToken), new Node.TaggedTemplateExpression(expr, quasi));\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t this.context.allowIn = previousAllowIn;\n\t return expr;\n\t };\n\t Parser.prototype.parseSuper = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('super');\n\t if (!this.match('[') && !this.match('.')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t return this.finalize(node, new Node.Super());\n\t };\n\t Parser.prototype.parseLeftHandSideExpression = function () {\n\t assert_1.assert(this.context.allowIn, 'callee of new expression always allow in keyword.');\n\t var node = this.startNode(this.lookahead);\n\t var expr = (this.matchKeyword('super') && this.context.inFunctionBody) ? this.parseSuper() :\n\t this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t while (true) {\n\t if (this.match('[')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('[');\n\t var property = this.isolateCoverGrammar(this.parseExpression);\n\t this.expect(']');\n\t expr = this.finalize(node, new Node.ComputedMemberExpression(expr, property));\n\t }\n\t else if (this.match('.')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('.');\n\t var property = this.parseIdentifierName();\n\t expr = this.finalize(node, new Node.StaticMemberExpression(expr, property));\n\t }\n\t else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t var quasi = this.parseTemplateLiteral();\n\t expr = this.finalize(node, new Node.TaggedTemplateExpression(expr, quasi));\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-update-expressions\n\t Parser.prototype.parseUpdateExpression = function () {\n\t var expr;\n\t var startToken = this.lookahead;\n\t if (this.match('++') || this.match('--')) {\n\t var node = this.startNode(startToken);\n\t var token = this.nextToken();\n\t expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t this.tolerateError(messages_1.Messages.StrictLHSPrefix);\n\t }\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t var prefix = true;\n\t expr = this.finalize(node, new Node.UpdateExpression(token.value, expr, prefix));\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else {\n\t expr = this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t if (!this.hasLineTerminator && this.lookahead.type === 7 /* Punctuator */) {\n\t if (this.match('++') || this.match('--')) {\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t this.tolerateError(messages_1.Messages.StrictLHSPostfix);\n\t }\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var operator = this.nextToken().value;\n\t var prefix = false;\n\t expr = this.finalize(this.startNode(startToken), new Node.UpdateExpression(operator, expr, prefix));\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-unary-operators\n\t Parser.prototype.parseAwaitExpression = function () {\n\t var node = this.createNode();\n\t this.nextToken();\n\t var argument = this.parseUnaryExpression();\n\t return this.finalize(node, new Node.AwaitExpression(argument));\n\t };\n\t Parser.prototype.parseUnaryExpression = function () {\n\t var expr;\n\t if (this.match('+') || this.match('-') || this.match('~') || this.match('!') ||\n\t this.matchKeyword('delete') || this.matchKeyword('void') || this.matchKeyword('typeof')) {\n\t var node = this.startNode(this.lookahead);\n\t var token = this.nextToken();\n\t expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t expr = this.finalize(node, new Node.UnaryExpression(token.value, expr));\n\t if (this.context.strict && expr.operator === 'delete' && expr.argument.type === syntax_1.Syntax.Identifier) {\n\t this.tolerateError(messages_1.Messages.StrictDelete);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else if (this.context.await && this.matchContextualKeyword('await')) {\n\t expr = this.parseAwaitExpression();\n\t }\n\t else {\n\t expr = this.parseUpdateExpression();\n\t }\n\t return expr;\n\t };\n\t Parser.prototype.parseExponentiationExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t if (expr.type !== syntax_1.Syntax.UnaryExpression && this.match('**')) {\n\t this.nextToken();\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var left = expr;\n\t var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.BinaryExpression('**', left, right));\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-exp-operator\n\t // https://tc39.github.io/ecma262/#sec-multiplicative-operators\n\t // https://tc39.github.io/ecma262/#sec-additive-operators\n\t // https://tc39.github.io/ecma262/#sec-bitwise-shift-operators\n\t // https://tc39.github.io/ecma262/#sec-relational-operators\n\t // https://tc39.github.io/ecma262/#sec-equality-operators\n\t // https://tc39.github.io/ecma262/#sec-binary-bitwise-operators\n\t // https://tc39.github.io/ecma262/#sec-binary-logical-operators\n\t Parser.prototype.binaryPrecedence = function (token) {\n\t var op = token.value;\n\t var precedence;\n\t if (token.type === 7 /* Punctuator */) {\n\t precedence = this.operatorPrecedence[op] || 0;\n\t }\n\t else if (token.type === 4 /* Keyword */) {\n\t precedence = (op === 'instanceof' || (this.context.allowIn && op === 'in')) ? 7 : 0;\n\t }\n\t else {\n\t precedence = 0;\n\t }\n\t return precedence;\n\t };\n\t Parser.prototype.parseBinaryExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseExponentiationExpression);\n\t var token = this.lookahead;\n\t var prec = this.binaryPrecedence(token);\n\t if (prec > 0) {\n\t this.nextToken();\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var markers = [startToken, this.lookahead];\n\t var left = expr;\n\t var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t var stack = [left, token.value, right];\n\t var precedences = [prec];\n\t while (true) {\n\t prec = this.binaryPrecedence(this.lookahead);\n\t if (prec <= 0) {\n\t break;\n\t }\n\t // Reduce: make a binary expression from the three topmost entries.\n\t while ((stack.length > 2) && (prec <= precedences[precedences.length - 1])) {\n\t right = stack.pop();\n\t var operator = stack.pop();\n\t precedences.pop();\n\t left = stack.pop();\n\t markers.pop();\n\t var node = this.startNode(markers[markers.length - 1]);\n\t stack.push(this.finalize(node, new Node.BinaryExpression(operator, left, right)));\n\t }\n\t // Shift.\n\t stack.push(this.nextToken().value);\n\t precedences.push(prec);\n\t markers.push(this.lookahead);\n\t stack.push(this.isolateCoverGrammar(this.parseExponentiationExpression));\n\t }\n\t // Final reduce to clean-up the stack.\n\t var i = stack.length - 1;\n\t expr = stack[i];\n\t var lastMarker = markers.pop();\n\t while (i > 1) {\n\t var marker = markers.pop();\n\t var lastLineStart = lastMarker && lastMarker.lineStart;\n\t var node = this.startNode(marker, lastLineStart);\n\t var operator = stack[i - 1];\n\t expr = this.finalize(node, new Node.BinaryExpression(operator, stack[i - 2], expr));\n\t i -= 2;\n\t lastMarker = marker;\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-conditional-operator\n\t Parser.prototype.parseConditionalExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseBinaryExpression);\n\t if (this.match('?')) {\n\t this.nextToken();\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t var consequent = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowIn = previousAllowIn;\n\t this.expect(':');\n\t var alternate = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.ConditionalExpression(expr, consequent, alternate));\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-assignment-operators\n\t Parser.prototype.checkPatternParam = function (options, param) {\n\t switch (param.type) {\n\t case syntax_1.Syntax.Identifier:\n\t this.validateParam(options, param, param.name);\n\t break;\n\t case syntax_1.Syntax.RestElement:\n\t this.checkPatternParam(options, param.argument);\n\t break;\n\t case syntax_1.Syntax.AssignmentPattern:\n\t this.checkPatternParam(options, param.left);\n\t break;\n\t case syntax_1.Syntax.ArrayPattern:\n\t for (var i = 0; i < param.elements.length; i++) {\n\t if (param.elements[i] !== null) {\n\t this.checkPatternParam(options, param.elements[i]);\n\t }\n\t }\n\t break;\n\t case syntax_1.Syntax.ObjectPattern:\n\t for (var i = 0; i < param.properties.length; i++) {\n\t this.checkPatternParam(options, param.properties[i].value);\n\t }\n\t break;\n\t default:\n\t break;\n\t }\n\t options.simple = options.simple && (param instanceof Node.Identifier);\n\t };\n\t Parser.prototype.reinterpretAsCoverFormalsList = function (expr) {\n\t var params = [expr];\n\t var options;\n\t var asyncArrow = false;\n\t switch (expr.type) {\n\t case syntax_1.Syntax.Identifier:\n\t break;\n\t case ArrowParameterPlaceHolder:\n\t params = expr.params;\n\t asyncArrow = expr.async;\n\t break;\n\t default:\n\t return null;\n\t }\n\t options = {\n\t simple: true,\n\t paramSet: {}\n\t };\n\t for (var i = 0; i < params.length; ++i) {\n\t var param = params[i];\n\t if (param.type === syntax_1.Syntax.AssignmentPattern) {\n\t if (param.right.type === syntax_1.Syntax.YieldExpression) {\n\t if (param.right.argument) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t param.right.type = syntax_1.Syntax.Identifier;\n\t param.right.name = 'yield';\n\t delete param.right.argument;\n\t delete param.right.delegate;\n\t }\n\t }\n\t else if (asyncArrow && param.type === syntax_1.Syntax.Identifier && param.name === 'await') {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t this.checkPatternParam(options, param);\n\t params[i] = param;\n\t }\n\t if (this.context.strict || !this.context.allowYield) {\n\t for (var i = 0; i < params.length; ++i) {\n\t var param = params[i];\n\t if (param.type === syntax_1.Syntax.YieldExpression) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t }\n\t if (options.message === messages_1.Messages.StrictParamDupe) {\n\t var token = this.context.strict ? options.stricted : options.firstRestricted;\n\t this.throwUnexpectedToken(token, options.message);\n\t }\n\t return {\n\t simple: options.simple,\n\t params: params,\n\t stricted: options.stricted,\n\t firstRestricted: options.firstRestricted,\n\t message: options.message\n\t };\n\t };\n\t Parser.prototype.parseAssignmentExpression = function () {\n\t var expr;\n\t if (!this.context.allowYield && this.matchKeyword('yield')) {\n\t expr = this.parseYieldExpression();\n\t }\n\t else {\n\t var startToken = this.lookahead;\n\t var token = startToken;\n\t expr = this.parseConditionalExpression();\n\t if (token.type === 3 /* Identifier */ && (token.lineNumber === this.lookahead.lineNumber) && token.value === 'async') {\n\t if (this.lookahead.type === 3 /* Identifier */ || this.matchKeyword('yield')) {\n\t var arg = this.parsePrimaryExpression();\n\t this.reinterpretExpressionAsPattern(arg);\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [arg],\n\t async: true\n\t };\n\t }\n\t }\n\t if (expr.type === ArrowParameterPlaceHolder || this.match('=>')) {\n\t // https://tc39.github.io/ecma262/#sec-arrow-function-definitions\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var isAsync = expr.async;\n\t var list = this.reinterpretAsCoverFormalsList(expr);\n\t if (list) {\n\t if (this.hasLineTerminator) {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t }\n\t this.context.firstCoverInitializedNameError = null;\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = list.simple;\n\t var previousAllowYield = this.context.allowYield;\n\t var previousAwait = this.context.await;\n\t this.context.allowYield = true;\n\t this.context.await = isAsync;\n\t var node = this.startNode(startToken);\n\t this.expect('=>');\n\t var body = void 0;\n\t if (this.match('{')) {\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t body = this.parseFunctionSourceElements();\n\t this.context.allowIn = previousAllowIn;\n\t }\n\t else {\n\t body = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t var expression = body.type !== syntax_1.Syntax.BlockStatement;\n\t if (this.context.strict && list.firstRestricted) {\n\t this.throwUnexpectedToken(list.firstRestricted, list.message);\n\t }\n\t if (this.context.strict && list.stricted) {\n\t this.tolerateUnexpectedToken(list.stricted, list.message);\n\t }\n\t expr = isAsync ? this.finalize(node, new Node.AsyncArrowFunctionExpression(list.params, body, expression)) :\n\t this.finalize(node, new Node.ArrowFunctionExpression(list.params, body, expression));\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.allowYield = previousAllowYield;\n\t this.context.await = previousAwait;\n\t }\n\t }\n\t else {\n\t if (this.matchAssign()) {\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier) {\n\t var id = expr;\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictLHSAssignment);\n\t }\n\t if (this.scanner.isStrictModeReservedWord(id.name)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t }\n\t if (!this.match('=')) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else {\n\t this.reinterpretExpressionAsPattern(expr);\n\t }\n\t token = this.nextToken();\n\t var operator = token.value;\n\t var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.AssignmentExpression(operator, expr, right));\n\t this.context.firstCoverInitializedNameError = null;\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-comma-operator\n\t Parser.prototype.parseExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t if (this.match(',')) {\n\t var expressions = [];\n\t expressions.push(expr);\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (!this.match(',')) {\n\t break;\n\t }\n\t this.nextToken();\n\t expressions.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-block\n\t Parser.prototype.parseStatementListItem = function () {\n\t var statement;\n\t this.context.isAssignmentTarget = true;\n\t this.context.isBindingElement = true;\n\t if (this.lookahead.type === 4 /* Keyword */) {\n\t switch (this.lookahead.value) {\n\t case 'export':\n\t if (!this.context.isModule) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalExportDeclaration);\n\t }\n\t statement = this.parseExportDeclaration();\n\t break;\n\t case 'import':\n\t if (!this.context.isModule) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalImportDeclaration);\n\t }\n\t statement = this.parseImportDeclaration();\n\t break;\n\t case 'const':\n\t statement = this.parseLexicalDeclaration({ inFor: false });\n\t break;\n\t case 'function':\n\t statement = this.parseFunctionDeclaration();\n\t break;\n\t case 'class':\n\t statement = this.parseClassDeclaration();\n\t break;\n\t case 'let':\n\t statement = this.isLexicalDeclaration() ? this.parseLexicalDeclaration({ inFor: false }) : this.parseStatement();\n\t break;\n\t default:\n\t statement = this.parseStatement();\n\t break;\n\t }\n\t }\n\t else {\n\t statement = this.parseStatement();\n\t }\n\t return statement;\n\t };\n\t Parser.prototype.parseBlock = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var block = [];\n\t while (true) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t block.push(this.parseStatementListItem());\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.BlockStatement(block));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-let-and-const-declarations\n\t Parser.prototype.parseLexicalBinding = function (kind, options) {\n\t var node = this.createNode();\n\t var params = [];\n\t var id = this.parsePattern(params, kind);\n\t if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateError(messages_1.Messages.StrictVarName);\n\t }\n\t }\n\t var init = null;\n\t if (kind === 'const') {\n\t if (!this.matchKeyword('in') && !this.matchContextualKeyword('of')) {\n\t if (this.match('=')) {\n\t this.nextToken();\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else {\n\t this.throwError(messages_1.Messages.DeclarationMissingInitializer, 'const');\n\t }\n\t }\n\t }\n\t else if ((!options.inFor && id.type !== syntax_1.Syntax.Identifier) || this.match('=')) {\n\t this.expect('=');\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t };\n\t Parser.prototype.parseBindingList = function (kind, options) {\n\t var list = [this.parseLexicalBinding(kind, options)];\n\t while (this.match(',')) {\n\t this.nextToken();\n\t list.push(this.parseLexicalBinding(kind, options));\n\t }\n\t return list;\n\t };\n\t Parser.prototype.isLexicalDeclaration = function () {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.scanner.lex();\n\t this.scanner.restoreState(state);\n\t return (next.type === 3 /* Identifier */) ||\n\t (next.type === 7 /* Punctuator */ && next.value === '[') ||\n\t (next.type === 7 /* Punctuator */ && next.value === '{') ||\n\t (next.type === 4 /* Keyword */ && next.value === 'let') ||\n\t (next.type === 4 /* Keyword */ && next.value === 'yield');\n\t };\n\t Parser.prototype.parseLexicalDeclaration = function (options) {\n\t var node = this.createNode();\n\t var kind = this.nextToken().value;\n\t assert_1.assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const');\n\t var declarations = this.parseBindingList(kind, options);\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.VariableDeclaration(declarations, kind));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-destructuring-binding-patterns\n\t Parser.prototype.parseBindingRestElement = function (params, kind) {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.parsePattern(params, kind);\n\t return this.finalize(node, new Node.RestElement(arg));\n\t };\n\t Parser.prototype.parseArrayPattern = function (params, kind) {\n\t var node = this.createNode();\n\t this.expect('[');\n\t var elements = [];\n\t while (!this.match(']')) {\n\t if (this.match(',')) {\n\t this.nextToken();\n\t elements.push(null);\n\t }\n\t else {\n\t if (this.match('...')) {\n\t elements.push(this.parseBindingRestElement(params, kind));\n\t break;\n\t }\n\t else {\n\t elements.push(this.parsePatternWithDefault(params, kind));\n\t }\n\t if (!this.match(']')) {\n\t this.expect(',');\n\t }\n\t }\n\t }\n\t this.expect(']');\n\t return this.finalize(node, new Node.ArrayPattern(elements));\n\t };\n\t Parser.prototype.parsePropertyPattern = function (params, kind) {\n\t var node = this.createNode();\n\t var computed = false;\n\t var shorthand = false;\n\t var method = false;\n\t var key;\n\t var value;\n\t if (this.lookahead.type === 3 /* Identifier */) {\n\t var keyToken = this.lookahead;\n\t key = this.parseVariableIdentifier();\n\t var init = this.finalize(node, new Node.Identifier(keyToken.value));\n\t if (this.match('=')) {\n\t params.push(keyToken);\n\t shorthand = true;\n\t this.nextToken();\n\t var expr = this.parseAssignmentExpression();\n\t value = this.finalize(this.startNode(keyToken), new Node.AssignmentPattern(init, expr));\n\t }\n\t else if (!this.match(':')) {\n\t params.push(keyToken);\n\t shorthand = true;\n\t value = init;\n\t }\n\t else {\n\t this.expect(':');\n\t value = this.parsePatternWithDefault(params, kind);\n\t }\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.expect(':');\n\t value = this.parsePatternWithDefault(params, kind);\n\t }\n\t return this.finalize(node, new Node.Property('init', key, computed, value, method, shorthand));\n\t };\n\t Parser.prototype.parseObjectPattern = function (params, kind) {\n\t var node = this.createNode();\n\t var properties = [];\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t properties.push(this.parsePropertyPattern(params, kind));\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.ObjectPattern(properties));\n\t };\n\t Parser.prototype.parsePattern = function (params, kind) {\n\t var pattern;\n\t if (this.match('[')) {\n\t pattern = this.parseArrayPattern(params, kind);\n\t }\n\t else if (this.match('{')) {\n\t pattern = this.parseObjectPattern(params, kind);\n\t }\n\t else {\n\t if (this.matchKeyword('let') && (kind === 'const' || kind === 'let')) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.LetInLexicalBinding);\n\t }\n\t params.push(this.lookahead);\n\t pattern = this.parseVariableIdentifier(kind);\n\t }\n\t return pattern;\n\t };\n\t Parser.prototype.parsePatternWithDefault = function (params, kind) {\n\t var startToken = this.lookahead;\n\t var pattern = this.parsePattern(params, kind);\n\t if (this.match('=')) {\n\t this.nextToken();\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowYield = previousAllowYield;\n\t pattern = this.finalize(this.startNode(startToken), new Node.AssignmentPattern(pattern, right));\n\t }\n\t return pattern;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-variable-statement\n\t Parser.prototype.parseVariableIdentifier = function (kind) {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t if (token.type === 4 /* Keyword */ && token.value === 'yield') {\n\t if (this.context.strict) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t else if (!this.context.allowYield) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t }\n\t else if (token.type !== 3 /* Identifier */) {\n\t if (this.context.strict && token.type === 4 /* Keyword */ && this.scanner.isStrictModeReservedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t else {\n\t if (this.context.strict || token.value !== 'let' || kind !== 'var') {\n\t this.throwUnexpectedToken(token);\n\t }\n\t }\n\t }\n\t else if ((this.context.isModule || this.context.await) && token.type === 3 /* Identifier */ && token.value === 'await') {\n\t this.tolerateUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new Node.Identifier(token.value));\n\t };\n\t Parser.prototype.parseVariableDeclaration = function (options) {\n\t var node = this.createNode();\n\t var params = [];\n\t var id = this.parsePattern(params, 'var');\n\t if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateError(messages_1.Messages.StrictVarName);\n\t }\n\t }\n\t var init = null;\n\t if (this.match('=')) {\n\t this.nextToken();\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else if (id.type !== syntax_1.Syntax.Identifier && !options.inFor) {\n\t this.expect('=');\n\t }\n\t return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t };\n\t Parser.prototype.parseVariableDeclarationList = function (options) {\n\t var opt = { inFor: options.inFor };\n\t var list = [];\n\t list.push(this.parseVariableDeclaration(opt));\n\t while (this.match(',')) {\n\t this.nextToken();\n\t list.push(this.parseVariableDeclaration(opt));\n\t }\n\t return list;\n\t };\n\t Parser.prototype.parseVariableStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('var');\n\t var declarations = this.parseVariableDeclarationList({ inFor: false });\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.VariableDeclaration(declarations, 'var'));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-empty-statement\n\t Parser.prototype.parseEmptyStatement = function () {\n\t var node = this.createNode();\n\t this.expect(';');\n\t return this.finalize(node, new Node.EmptyStatement());\n\t };\n\t // https://tc39.github.io/ecma262/#sec-expression-statement\n\t Parser.prototype.parseExpressionStatement = function () {\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ExpressionStatement(expr));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-if-statement\n\t Parser.prototype.parseIfClause = function () {\n\t if (this.context.strict && this.matchKeyword('function')) {\n\t this.tolerateError(messages_1.Messages.StrictFunction);\n\t }\n\t return this.parseStatement();\n\t };\n\t Parser.prototype.parseIfStatement = function () {\n\t var node = this.createNode();\n\t var consequent;\n\t var alternate = null;\n\t this.expectKeyword('if');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t consequent = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t consequent = this.parseIfClause();\n\t if (this.matchKeyword('else')) {\n\t this.nextToken();\n\t alternate = this.parseIfClause();\n\t }\n\t }\n\t return this.finalize(node, new Node.IfStatement(test, consequent, alternate));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-do-while-statement\n\t Parser.prototype.parseDoWhileStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('do');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t var body = this.parseStatement();\n\t this.context.inIteration = previousInIteration;\n\t this.expectKeyword('while');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t }\n\t else {\n\t this.expect(')');\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t }\n\t return this.finalize(node, new Node.DoWhileStatement(body, test));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-while-statement\n\t Parser.prototype.parseWhileStatement = function () {\n\t var node = this.createNode();\n\t var body;\n\t this.expectKeyword('while');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t body = this.parseStatement();\n\t this.context.inIteration = previousInIteration;\n\t }\n\t return this.finalize(node, new Node.WhileStatement(test, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-for-statement\n\t // https://tc39.github.io/ecma262/#sec-for-in-and-for-of-statements\n\t Parser.prototype.parseForStatement = function () {\n\t var init = null;\n\t var test = null;\n\t var update = null;\n\t var forIn = true;\n\t var left, right;\n\t var node = this.createNode();\n\t this.expectKeyword('for');\n\t this.expect('(');\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else {\n\t if (this.matchKeyword('var')) {\n\t init = this.createNode();\n\t this.nextToken();\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t var declarations = this.parseVariableDeclarationList({ inFor: true });\n\t this.context.allowIn = previousAllowIn;\n\t if (declarations.length === 1 && this.matchKeyword('in')) {\n\t var decl = declarations[0];\n\t if (decl.init && (decl.id.type === syntax_1.Syntax.ArrayPattern || decl.id.type === syntax_1.Syntax.ObjectPattern || this.context.strict)) {\n\t this.tolerateError(messages_1.Messages.ForInOfLoopInitializer, 'for-in');\n\t }\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.expect(';');\n\t }\n\t }\n\t else if (this.matchKeyword('const') || this.matchKeyword('let')) {\n\t init = this.createNode();\n\t var kind = this.nextToken().value;\n\t if (!this.context.strict && this.lookahead.value === 'in') {\n\t init = this.finalize(init, new Node.Identifier(kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else {\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t var declarations = this.parseBindingList(kind, { inFor: true });\n\t this.context.allowIn = previousAllowIn;\n\t if (declarations.length === 1 && declarations[0].init === null && this.matchKeyword('in')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t this.consumeSemicolon();\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t }\n\t }\n\t }\n\t else {\n\t var initStartToken = this.lookahead;\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t init = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowIn = previousAllowIn;\n\t if (this.matchKeyword('in')) {\n\t if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInForIn);\n\t }\n\t this.nextToken();\n\t this.reinterpretExpressionAsPattern(init);\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (this.matchContextualKeyword('of')) {\n\t if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInForLoop);\n\t }\n\t this.nextToken();\n\t this.reinterpretExpressionAsPattern(init);\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t if (this.match(',')) {\n\t var initSeq = [init];\n\t while (this.match(',')) {\n\t this.nextToken();\n\t initSeq.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t init = this.finalize(this.startNode(initStartToken), new Node.SequenceExpression(initSeq));\n\t }\n\t this.expect(';');\n\t }\n\t }\n\t }\n\t if (typeof left === 'undefined') {\n\t if (!this.match(';')) {\n\t test = this.parseExpression();\n\t }\n\t this.expect(';');\n\t if (!this.match(')')) {\n\t update = this.parseExpression();\n\t }\n\t }\n\t var body;\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t body = this.isolateCoverGrammar(this.parseStatement);\n\t this.context.inIteration = previousInIteration;\n\t }\n\t return (typeof left === 'undefined') ?\n\t this.finalize(node, new Node.ForStatement(init, test, update, body)) :\n\t forIn ? this.finalize(node, new Node.ForInStatement(left, right, body)) :\n\t this.finalize(node, new Node.ForOfStatement(left, right, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-continue-statement\n\t Parser.prototype.parseContinueStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('continue');\n\t var label = null;\n\t if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t var id = this.parseVariableIdentifier();\n\t label = id;\n\t var key = '$' + id.name;\n\t if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t }\n\t }\n\t this.consumeSemicolon();\n\t if (label === null && !this.context.inIteration) {\n\t this.throwError(messages_1.Messages.IllegalContinue);\n\t }\n\t return this.finalize(node, new Node.ContinueStatement(label));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-break-statement\n\t Parser.prototype.parseBreakStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('break');\n\t var label = null;\n\t if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t var id = this.parseVariableIdentifier();\n\t var key = '$' + id.name;\n\t if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t }\n\t label = id;\n\t }\n\t this.consumeSemicolon();\n\t if (label === null && !this.context.inIteration && !this.context.inSwitch) {\n\t this.throwError(messages_1.Messages.IllegalBreak);\n\t }\n\t return this.finalize(node, new Node.BreakStatement(label));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-return-statement\n\t Parser.prototype.parseReturnStatement = function () {\n\t if (!this.context.inFunctionBody) {\n\t this.tolerateError(messages_1.Messages.IllegalReturn);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('return');\n\t var hasArgument = (!this.match(';') && !this.match('}') &&\n\t !this.hasLineTerminator && this.lookahead.type !== 2 /* EOF */) ||\n\t this.lookahead.type === 8 /* StringLiteral */ ||\n\t this.lookahead.type === 10 /* Template */;\n\t var argument = hasArgument ? this.parseExpression() : null;\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ReturnStatement(argument));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-with-statement\n\t Parser.prototype.parseWithStatement = function () {\n\t if (this.context.strict) {\n\t this.tolerateError(messages_1.Messages.StrictModeWith);\n\t }\n\t var node = this.createNode();\n\t var body;\n\t this.expectKeyword('with');\n\t this.expect('(');\n\t var object = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t body = this.parseStatement();\n\t }\n\t return this.finalize(node, new Node.WithStatement(object, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-switch-statement\n\t Parser.prototype.parseSwitchCase = function () {\n\t var node = this.createNode();\n\t var test;\n\t if (this.matchKeyword('default')) {\n\t this.nextToken();\n\t test = null;\n\t }\n\t else {\n\t this.expectKeyword('case');\n\t test = this.parseExpression();\n\t }\n\t this.expect(':');\n\t var consequent = [];\n\t while (true) {\n\t if (this.match('}') || this.matchKeyword('default') || this.matchKeyword('case')) {\n\t break;\n\t }\n\t consequent.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.SwitchCase(test, consequent));\n\t };\n\t Parser.prototype.parseSwitchStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('switch');\n\t this.expect('(');\n\t var discriminant = this.parseExpression();\n\t this.expect(')');\n\t var previousInSwitch = this.context.inSwitch;\n\t this.context.inSwitch = true;\n\t var cases = [];\n\t var defaultFound = false;\n\t this.expect('{');\n\t while (true) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t var clause = this.parseSwitchCase();\n\t if (clause.test === null) {\n\t if (defaultFound) {\n\t this.throwError(messages_1.Messages.MultipleDefaultsInSwitch);\n\t }\n\t defaultFound = true;\n\t }\n\t cases.push(clause);\n\t }\n\t this.expect('}');\n\t this.context.inSwitch = previousInSwitch;\n\t return this.finalize(node, new Node.SwitchStatement(discriminant, cases));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-labelled-statements\n\t Parser.prototype.parseLabelledStatement = function () {\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t var statement;\n\t if ((expr.type === syntax_1.Syntax.Identifier) && this.match(':')) {\n\t this.nextToken();\n\t var id = expr;\n\t var key = '$' + id.name;\n\t if (Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.Redeclaration, 'Label', id.name);\n\t }\n\t this.context.labelSet[key] = true;\n\t var body = void 0;\n\t if (this.matchKeyword('class')) {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t body = this.parseClassDeclaration();\n\t }\n\t else if (this.matchKeyword('function')) {\n\t var token = this.lookahead;\n\t var declaration = this.parseFunctionDeclaration();\n\t if (this.context.strict) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunction);\n\t }\n\t else if (declaration.generator) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.GeneratorInLegacyContext);\n\t }\n\t body = declaration;\n\t }\n\t else {\n\t body = this.parseStatement();\n\t }\n\t delete this.context.labelSet[key];\n\t statement = new Node.LabeledStatement(id, body);\n\t }\n\t else {\n\t this.consumeSemicolon();\n\t statement = new Node.ExpressionStatement(expr);\n\t }\n\t return this.finalize(node, statement);\n\t };\n\t // https://tc39.github.io/ecma262/#sec-throw-statement\n\t Parser.prototype.parseThrowStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('throw');\n\t if (this.hasLineTerminator) {\n\t this.throwError(messages_1.Messages.NewlineAfterThrow);\n\t }\n\t var argument = this.parseExpression();\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ThrowStatement(argument));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-try-statement\n\t Parser.prototype.parseCatchClause = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('catch');\n\t this.expect('(');\n\t if (this.match(')')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t var params = [];\n\t var param = this.parsePattern(params);\n\t var paramMap = {};\n\t for (var i = 0; i < params.length; i++) {\n\t var key = '$' + params[i].value;\n\t if (Object.prototype.hasOwnProperty.call(paramMap, key)) {\n\t this.tolerateError(messages_1.Messages.DuplicateBinding, params[i].value);\n\t }\n\t paramMap[key] = true;\n\t }\n\t if (this.context.strict && param.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(param.name)) {\n\t this.tolerateError(messages_1.Messages.StrictCatchVariable);\n\t }\n\t }\n\t this.expect(')');\n\t var body = this.parseBlock();\n\t return this.finalize(node, new Node.CatchClause(param, body));\n\t };\n\t Parser.prototype.parseFinallyClause = function () {\n\t this.expectKeyword('finally');\n\t return this.parseBlock();\n\t };\n\t Parser.prototype.parseTryStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('try');\n\t var block = this.parseBlock();\n\t var handler = this.matchKeyword('catch') ? this.parseCatchClause() : null;\n\t var finalizer = this.matchKeyword('finally') ? this.parseFinallyClause() : null;\n\t if (!handler && !finalizer) {\n\t this.throwError(messages_1.Messages.NoCatchOrFinally);\n\t }\n\t return this.finalize(node, new Node.TryStatement(block, handler, finalizer));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-debugger-statement\n\t Parser.prototype.parseDebuggerStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('debugger');\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.DebuggerStatement());\n\t };\n\t // https://tc39.github.io/ecma262/#sec-ecmascript-language-statements-and-declarations\n\t Parser.prototype.parseStatement = function () {\n\t var statement;\n\t switch (this.lookahead.type) {\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 6 /* NumericLiteral */:\n\t case 8 /* StringLiteral */:\n\t case 10 /* Template */:\n\t case 9 /* RegularExpression */:\n\t statement = this.parseExpressionStatement();\n\t break;\n\t case 7 /* Punctuator */:\n\t var value = this.lookahead.value;\n\t if (value === '{') {\n\t statement = this.parseBlock();\n\t }\n\t else if (value === '(') {\n\t statement = this.parseExpressionStatement();\n\t }\n\t else if (value === ';') {\n\t statement = this.parseEmptyStatement();\n\t }\n\t else {\n\t statement = this.parseExpressionStatement();\n\t }\n\t break;\n\t case 3 /* Identifier */:\n\t statement = this.matchAsyncFunction() ? this.parseFunctionDeclaration() : this.parseLabelledStatement();\n\t break;\n\t case 4 /* Keyword */:\n\t switch (this.lookahead.value) {\n\t case 'break':\n\t statement = this.parseBreakStatement();\n\t break;\n\t case 'continue':\n\t statement = this.parseContinueStatement();\n\t break;\n\t case 'debugger':\n\t statement = this.parseDebuggerStatement();\n\t break;\n\t case 'do':\n\t statement = this.parseDoWhileStatement();\n\t break;\n\t case 'for':\n\t statement = this.parseForStatement();\n\t break;\n\t case 'function':\n\t statement = this.parseFunctionDeclaration();\n\t break;\n\t case 'if':\n\t statement = this.parseIfStatement();\n\t break;\n\t case 'return':\n\t statement = this.parseReturnStatement();\n\t break;\n\t case 'switch':\n\t statement = this.parseSwitchStatement();\n\t break;\n\t case 'throw':\n\t statement = this.parseThrowStatement();\n\t break;\n\t case 'try':\n\t statement = this.parseTryStatement();\n\t break;\n\t case 'var':\n\t statement = this.parseVariableStatement();\n\t break;\n\t case 'while':\n\t statement = this.parseWhileStatement();\n\t break;\n\t case 'with':\n\t statement = this.parseWithStatement();\n\t break;\n\t default:\n\t statement = this.parseExpressionStatement();\n\t break;\n\t }\n\t break;\n\t default:\n\t statement = this.throwUnexpectedToken(this.lookahead);\n\t }\n\t return statement;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-function-definitions\n\t Parser.prototype.parseFunctionSourceElements = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var body = this.parseDirectivePrologues();\n\t var previousLabelSet = this.context.labelSet;\n\t var previousInIteration = this.context.inIteration;\n\t var previousInSwitch = this.context.inSwitch;\n\t var previousInFunctionBody = this.context.inFunctionBody;\n\t this.context.labelSet = {};\n\t this.context.inIteration = false;\n\t this.context.inSwitch = false;\n\t this.context.inFunctionBody = true;\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t body.push(this.parseStatementListItem());\n\t }\n\t this.expect('}');\n\t this.context.labelSet = previousLabelSet;\n\t this.context.inIteration = previousInIteration;\n\t this.context.inSwitch = previousInSwitch;\n\t this.context.inFunctionBody = previousInFunctionBody;\n\t return this.finalize(node, new Node.BlockStatement(body));\n\t };\n\t Parser.prototype.validateParam = function (options, param, name) {\n\t var key = '$' + name;\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(name)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamName;\n\t }\n\t if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamDupe;\n\t }\n\t }\n\t else if (!options.firstRestricted) {\n\t if (this.scanner.isRestrictedWord(name)) {\n\t options.firstRestricted = param;\n\t options.message = messages_1.Messages.StrictParamName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(name)) {\n\t options.firstRestricted = param;\n\t options.message = messages_1.Messages.StrictReservedWord;\n\t }\n\t else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamDupe;\n\t }\n\t }\n\t /* istanbul ignore next */\n\t if (typeof Object.defineProperty === 'function') {\n\t Object.defineProperty(options.paramSet, key, { value: true, enumerable: true, writable: true, configurable: true });\n\t }\n\t else {\n\t options.paramSet[key] = true;\n\t }\n\t };\n\t Parser.prototype.parseRestElement = function (params) {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.parsePattern(params);\n\t if (this.match('=')) {\n\t this.throwError(messages_1.Messages.DefaultRestParameter);\n\t }\n\t if (!this.match(')')) {\n\t this.throwError(messages_1.Messages.ParameterAfterRestParameter);\n\t }\n\t return this.finalize(node, new Node.RestElement(arg));\n\t };\n\t Parser.prototype.parseFormalParameter = function (options) {\n\t var params = [];\n\t var param = this.match('...') ? this.parseRestElement(params) : this.parsePatternWithDefault(params);\n\t for (var i = 0; i < params.length; i++) {\n\t this.validateParam(options, params[i], params[i].value);\n\t }\n\t options.simple = options.simple && (param instanceof Node.Identifier);\n\t options.params.push(param);\n\t };\n\t Parser.prototype.parseFormalParameters = function (firstRestricted) {\n\t var options;\n\t options = {\n\t simple: true,\n\t params: [],\n\t firstRestricted: firstRestricted\n\t };\n\t this.expect('(');\n\t if (!this.match(')')) {\n\t options.paramSet = {};\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t this.parseFormalParameter(options);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expect(',');\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return {\n\t simple: options.simple,\n\t params: options.params,\n\t stricted: options.stricted,\n\t firstRestricted: options.firstRestricted,\n\t message: options.message\n\t };\n\t };\n\t Parser.prototype.matchAsyncFunction = function () {\n\t var match = this.matchContextualKeyword('async');\n\t if (match) {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.scanner.lex();\n\t this.scanner.restoreState(state);\n\t match = (state.lineNumber === next.lineNumber) && (next.type === 4 /* Keyword */) && (next.value === 'function');\n\t }\n\t return match;\n\t };\n\t Parser.prototype.parseFunctionDeclaration = function (identifierIsOptional) {\n\t var node = this.createNode();\n\t var isAsync = this.matchContextualKeyword('async');\n\t if (isAsync) {\n\t this.nextToken();\n\t }\n\t this.expectKeyword('function');\n\t var isGenerator = isAsync ? false : this.match('*');\n\t if (isGenerator) {\n\t this.nextToken();\n\t }\n\t var message;\n\t var id = null;\n\t var firstRestricted = null;\n\t if (!identifierIsOptional || !this.match('(')) {\n\t var token = this.lookahead;\n\t id = this.parseVariableIdentifier();\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t }\n\t }\n\t else {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictFunctionName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t var previousAllowAwait = this.context.await;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.await = isAsync;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters(firstRestricted);\n\t var params = formalParameters.params;\n\t var stricted = formalParameters.stricted;\n\t firstRestricted = formalParameters.firstRestricted;\n\t if (formalParameters.message) {\n\t message = formalParameters.message;\n\t }\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = formalParameters.simple;\n\t var body = this.parseFunctionSourceElements();\n\t if (this.context.strict && firstRestricted) {\n\t this.throwUnexpectedToken(firstRestricted, message);\n\t }\n\t if (this.context.strict && stricted) {\n\t this.tolerateUnexpectedToken(stricted, message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.await = previousAllowAwait;\n\t this.context.allowYield = previousAllowYield;\n\t return isAsync ? this.finalize(node, new Node.AsyncFunctionDeclaration(id, params, body)) :\n\t this.finalize(node, new Node.FunctionDeclaration(id, params, body, isGenerator));\n\t };\n\t Parser.prototype.parseFunctionExpression = function () {\n\t var node = this.createNode();\n\t var isAsync = this.matchContextualKeyword('async');\n\t if (isAsync) {\n\t this.nextToken();\n\t }\n\t this.expectKeyword('function');\n\t var isGenerator = isAsync ? false : this.match('*');\n\t if (isGenerator) {\n\t this.nextToken();\n\t }\n\t var message;\n\t var id = null;\n\t var firstRestricted;\n\t var previousAllowAwait = this.context.await;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.await = isAsync;\n\t this.context.allowYield = !isGenerator;\n\t if (!this.match('(')) {\n\t var token = this.lookahead;\n\t id = (!this.context.strict && !isGenerator && this.matchKeyword('yield')) ? this.parseIdentifierName() : this.parseVariableIdentifier();\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t }\n\t }\n\t else {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictFunctionName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t var formalParameters = this.parseFormalParameters(firstRestricted);\n\t var params = formalParameters.params;\n\t var stricted = formalParameters.stricted;\n\t firstRestricted = formalParameters.firstRestricted;\n\t if (formalParameters.message) {\n\t message = formalParameters.message;\n\t }\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = formalParameters.simple;\n\t var body = this.parseFunctionSourceElements();\n\t if (this.context.strict && firstRestricted) {\n\t this.throwUnexpectedToken(firstRestricted, message);\n\t }\n\t if (this.context.strict && stricted) {\n\t this.tolerateUnexpectedToken(stricted, message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.await = previousAllowAwait;\n\t this.context.allowYield = previousAllowYield;\n\t return isAsync ? this.finalize(node, new Node.AsyncFunctionExpression(id, params, body)) :\n\t this.finalize(node, new Node.FunctionExpression(id, params, body, isGenerator));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-directive-prologues-and-the-use-strict-directive\n\t Parser.prototype.parseDirective = function () {\n\t var token = this.lookahead;\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t var directive = (expr.type === syntax_1.Syntax.Literal) ? this.getTokenRaw(token).slice(1, -1) : null;\n\t this.consumeSemicolon();\n\t return this.finalize(node, directive ? new Node.Directive(expr, directive) : new Node.ExpressionStatement(expr));\n\t };\n\t Parser.prototype.parseDirectivePrologues = function () {\n\t var firstRestricted = null;\n\t var body = [];\n\t while (true) {\n\t var token = this.lookahead;\n\t if (token.type !== 8 /* StringLiteral */) {\n\t break;\n\t }\n\t var statement = this.parseDirective();\n\t body.push(statement);\n\t var directive = statement.directive;\n\t if (typeof directive !== 'string') {\n\t break;\n\t }\n\t if (directive === 'use strict') {\n\t this.context.strict = true;\n\t if (firstRestricted) {\n\t this.tolerateUnexpectedToken(firstRestricted, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t if (!this.context.allowStrictDirective) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.IllegalLanguageModeDirective);\n\t }\n\t }\n\t else {\n\t if (!firstRestricted && token.octal) {\n\t firstRestricted = token;\n\t }\n\t }\n\t }\n\t return body;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-method-definitions\n\t Parser.prototype.qualifiedPropertyName = function (token) {\n\t switch (token.type) {\n\t case 3 /* Identifier */:\n\t case 8 /* StringLiteral */:\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 6 /* NumericLiteral */:\n\t case 4 /* Keyword */:\n\t return true;\n\t case 7 /* Punctuator */:\n\t return token.value === '[';\n\t default:\n\t break;\n\t }\n\t return false;\n\t };\n\t Parser.prototype.parseGetterMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = false;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters();\n\t if (formalParameters.params.length > 0) {\n\t this.tolerateError(messages_1.Messages.BadGetterArity);\n\t }\n\t var method = this.parsePropertyMethod(formalParameters);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t };\n\t Parser.prototype.parseSetterMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = false;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters();\n\t if (formalParameters.params.length !== 1) {\n\t this.tolerateError(messages_1.Messages.BadSetterArity);\n\t }\n\t else if (formalParameters.params[0] instanceof Node.RestElement) {\n\t this.tolerateError(messages_1.Messages.BadSetterRestParameter);\n\t }\n\t var method = this.parsePropertyMethod(formalParameters);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t };\n\t Parser.prototype.parseGeneratorMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = true;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var params = this.parseFormalParameters();\n\t this.context.allowYield = false;\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-generator-function-definitions\n\t Parser.prototype.isStartOfExpression = function () {\n\t var start = true;\n\t var value = this.lookahead.value;\n\t switch (this.lookahead.type) {\n\t case 7 /* Punctuator */:\n\t start = (value === '[') || (value === '(') || (value === '{') ||\n\t (value === '+') || (value === '-') ||\n\t (value === '!') || (value === '~') ||\n\t (value === '++') || (value === '--') ||\n\t (value === '/') || (value === '/='); // regular expression literal\n\t break;\n\t case 4 /* Keyword */:\n\t start = (value === 'class') || (value === 'delete') ||\n\t (value === 'function') || (value === 'let') || (value === 'new') ||\n\t (value === 'super') || (value === 'this') || (value === 'typeof') ||\n\t (value === 'void') || (value === 'yield');\n\t break;\n\t default:\n\t break;\n\t }\n\t return start;\n\t };\n\t Parser.prototype.parseYieldExpression = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('yield');\n\t var argument = null;\n\t var delegate = false;\n\t if (!this.hasLineTerminator) {\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = false;\n\t delegate = this.match('*');\n\t if (delegate) {\n\t this.nextToken();\n\t argument = this.parseAssignmentExpression();\n\t }\n\t else if (this.isStartOfExpression()) {\n\t argument = this.parseAssignmentExpression();\n\t }\n\t this.context.allowYield = previousAllowYield;\n\t }\n\t return this.finalize(node, new Node.YieldExpression(argument, delegate));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-class-definitions\n\t Parser.prototype.parseClassElement = function (hasConstructor) {\n\t var token = this.lookahead;\n\t var node = this.createNode();\n\t var kind = '';\n\t var key = null;\n\t var value = null;\n\t var computed = false;\n\t var method = false;\n\t var isStatic = false;\n\t var isAsync = false;\n\t if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t var id = key;\n\t if (id.name === 'static' && (this.qualifiedPropertyName(this.lookahead) || this.match('*'))) {\n\t token = this.lookahead;\n\t isStatic = true;\n\t computed = this.match('[');\n\t if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t key = this.parseObjectPropertyKey();\n\t }\n\t }\n\t if ((token.type === 3 /* Identifier */) && !this.hasLineTerminator && (token.value === 'async')) {\n\t var punctuator = this.lookahead.value;\n\t if (punctuator !== ':' && punctuator !== '(' && punctuator !== '*') {\n\t isAsync = true;\n\t token = this.lookahead;\n\t key = this.parseObjectPropertyKey();\n\t if (token.type === 3 /* Identifier */ && token.value === 'constructor') {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.ConstructorIsAsync);\n\t }\n\t }\n\t }\n\t }\n\t var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t if (token.type === 3 /* Identifier */) {\n\t if (token.value === 'get' && lookaheadPropertyKey) {\n\t kind = 'get';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.context.allowYield = false;\n\t value = this.parseGetterMethod();\n\t }\n\t else if (token.value === 'set' && lookaheadPropertyKey) {\n\t kind = 'set';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseSetterMethod();\n\t }\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t kind = 'init';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseGeneratorMethod();\n\t method = true;\n\t }\n\t if (!kind && key && this.match('(')) {\n\t kind = 'init';\n\t value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t method = true;\n\t }\n\t if (!kind) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t if (kind === 'init') {\n\t kind = 'method';\n\t }\n\t if (!computed) {\n\t if (isStatic && this.isPropertyKey(key, 'prototype')) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.StaticPrototype);\n\t }\n\t if (!isStatic && this.isPropertyKey(key, 'constructor')) {\n\t if (kind !== 'method' || !method || (value && value.generator)) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.ConstructorSpecialMethod);\n\t }\n\t if (hasConstructor.value) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.DuplicateConstructor);\n\t }\n\t else {\n\t hasConstructor.value = true;\n\t }\n\t kind = 'constructor';\n\t }\n\t }\n\t return this.finalize(node, new Node.MethodDefinition(key, computed, value, kind, isStatic));\n\t };\n\t Parser.prototype.parseClassElementList = function () {\n\t var body = [];\n\t var hasConstructor = { value: false };\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else {\n\t body.push(this.parseClassElement(hasConstructor));\n\t }\n\t }\n\t this.expect('}');\n\t return body;\n\t };\n\t Parser.prototype.parseClassBody = function () {\n\t var node = this.createNode();\n\t var elementList = this.parseClassElementList();\n\t return this.finalize(node, new Node.ClassBody(elementList));\n\t };\n\t Parser.prototype.parseClassDeclaration = function (identifierIsOptional) {\n\t var node = this.createNode();\n\t var previousStrict = this.context.strict;\n\t this.context.strict = true;\n\t this.expectKeyword('class');\n\t var id = (identifierIsOptional && (this.lookahead.type !== 3 /* Identifier */)) ? null : this.parseVariableIdentifier();\n\t var superClass = null;\n\t if (this.matchKeyword('extends')) {\n\t this.nextToken();\n\t superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t }\n\t var classBody = this.parseClassBody();\n\t this.context.strict = previousStrict;\n\t return this.finalize(node, new Node.ClassDeclaration(id, superClass, classBody));\n\t };\n\t Parser.prototype.parseClassExpression = function () {\n\t var node = this.createNode();\n\t var previousStrict = this.context.strict;\n\t this.context.strict = true;\n\t this.expectKeyword('class');\n\t var id = (this.lookahead.type === 3 /* Identifier */) ? this.parseVariableIdentifier() : null;\n\t var superClass = null;\n\t if (this.matchKeyword('extends')) {\n\t this.nextToken();\n\t superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t }\n\t var classBody = this.parseClassBody();\n\t this.context.strict = previousStrict;\n\t return this.finalize(node, new Node.ClassExpression(id, superClass, classBody));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-scripts\n\t // https://tc39.github.io/ecma262/#sec-modules\n\t Parser.prototype.parseModule = function () {\n\t this.context.strict = true;\n\t this.context.isModule = true;\n\t this.scanner.isModule = true;\n\t var node = this.createNode();\n\t var body = this.parseDirectivePrologues();\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t body.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.Module(body));\n\t };\n\t Parser.prototype.parseScript = function () {\n\t var node = this.createNode();\n\t var body = this.parseDirectivePrologues();\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t body.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.Script(body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-imports\n\t Parser.prototype.parseModuleSpecifier = function () {\n\t var node = this.createNode();\n\t if (this.lookahead.type !== 8 /* StringLiteral */) {\n\t this.throwError(messages_1.Messages.InvalidModuleSpecifier);\n\t }\n\t var token = this.nextToken();\n\t var raw = this.getTokenRaw(token);\n\t return this.finalize(node, new Node.Literal(token.value, raw));\n\t };\n\t // import {<foo as bar>} ...;\n\t Parser.prototype.parseImportSpecifier = function () {\n\t var node = this.createNode();\n\t var imported;\n\t var local;\n\t if (this.lookahead.type === 3 /* Identifier */) {\n\t imported = this.parseVariableIdentifier();\n\t local = imported;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t local = this.parseVariableIdentifier();\n\t }\n\t }\n\t else {\n\t imported = this.parseIdentifierName();\n\t local = imported;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t local = this.parseVariableIdentifier();\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t return this.finalize(node, new Node.ImportSpecifier(local, imported));\n\t };\n\t // {foo, bar as bas}\n\t Parser.prototype.parseNamedImports = function () {\n\t this.expect('{');\n\t var specifiers = [];\n\t while (!this.match('}')) {\n\t specifiers.push(this.parseImportSpecifier());\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t return specifiers;\n\t };\n\t // import <foo> ...;\n\t Parser.prototype.parseImportDefaultSpecifier = function () {\n\t var node = this.createNode();\n\t var local = this.parseIdentifierName();\n\t return this.finalize(node, new Node.ImportDefaultSpecifier(local));\n\t };\n\t // import <* as foo> ...;\n\t Parser.prototype.parseImportNamespaceSpecifier = function () {\n\t var node = this.createNode();\n\t this.expect('*');\n\t if (!this.matchContextualKeyword('as')) {\n\t this.throwError(messages_1.Messages.NoAsAfterImportNamespace);\n\t }\n\t this.nextToken();\n\t var local = this.parseIdentifierName();\n\t return this.finalize(node, new Node.ImportNamespaceSpecifier(local));\n\t };\n\t Parser.prototype.parseImportDeclaration = function () {\n\t if (this.context.inFunctionBody) {\n\t this.throwError(messages_1.Messages.IllegalImportDeclaration);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('import');\n\t var src;\n\t var specifiers = [];\n\t if (this.lookahead.type === 8 /* StringLiteral */) {\n\t // import 'foo';\n\t src = this.parseModuleSpecifier();\n\t }\n\t else {\n\t if (this.match('{')) {\n\t // import {bar}\n\t specifiers = specifiers.concat(this.parseNamedImports());\n\t }\n\t else if (this.match('*')) {\n\t // import * as foo\n\t specifiers.push(this.parseImportNamespaceSpecifier());\n\t }\n\t else if (this.isIdentifierName(this.lookahead) && !this.matchKeyword('default')) {\n\t // import foo\n\t specifiers.push(this.parseImportDefaultSpecifier());\n\t if (this.match(',')) {\n\t this.nextToken();\n\t if (this.match('*')) {\n\t // import foo, * as foo\n\t specifiers.push(this.parseImportNamespaceSpecifier());\n\t }\n\t else if (this.match('{')) {\n\t // import foo, {bar}\n\t specifiers = specifiers.concat(this.parseNamedImports());\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t if (!this.matchContextualKeyword('from')) {\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t this.nextToken();\n\t src = this.parseModuleSpecifier();\n\t }\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ImportDeclaration(specifiers, src));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-exports\n\t Parser.prototype.parseExportSpecifier = function () {\n\t var node = this.createNode();\n\t var local = this.parseIdentifierName();\n\t var exported = local;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t exported = this.parseIdentifierName();\n\t }\n\t return this.finalize(node, new Node.ExportSpecifier(local, exported));\n\t };\n\t Parser.prototype.parseExportDeclaration = function () {\n\t if (this.context.inFunctionBody) {\n\t this.throwError(messages_1.Messages.IllegalExportDeclaration);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('export');\n\t var exportDeclaration;\n\t if (this.matchKeyword('default')) {\n\t // export default ...\n\t this.nextToken();\n\t if (this.matchKeyword('function')) {\n\t // export default function foo () {}\n\t // export default function () {}\n\t var declaration = this.parseFunctionDeclaration(true);\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else if (this.matchKeyword('class')) {\n\t // export default class foo {}\n\t var declaration = this.parseClassDeclaration(true);\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else if (this.matchContextualKeyword('async')) {\n\t // export default async function f () {}\n\t // export default async function () {}\n\t // export default async x => x\n\t var declaration = this.matchAsyncFunction() ? this.parseFunctionDeclaration(true) : this.parseAssignmentExpression();\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else {\n\t if (this.matchContextualKeyword('from')) {\n\t this.throwError(messages_1.Messages.UnexpectedToken, this.lookahead.value);\n\t }\n\t // export default {};\n\t // export default [];\n\t // export default (1 + 2);\n\t var declaration = this.match('{') ? this.parseObjectInitializer() :\n\t this.match('[') ? this.parseArrayInitializer() : this.parseAssignmentExpression();\n\t this.consumeSemicolon();\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t }\n\t else if (this.match('*')) {\n\t // export * from 'foo';\n\t this.nextToken();\n\t if (!this.matchContextualKeyword('from')) {\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t this.nextToken();\n\t var src = this.parseModuleSpecifier();\n\t this.consumeSemicolon();\n\t exportDeclaration = this.finalize(node, new Node.ExportAllDeclaration(src));\n\t }\n\t else if (this.lookahead.type === 4 /* Keyword */) {\n\t // export var f = 1;\n\t var declaration = void 0;\n\t switch (this.lookahead.value) {\n\t case 'let':\n\t case 'const':\n\t declaration = this.parseLexicalDeclaration({ inFor: false });\n\t break;\n\t case 'var':\n\t case 'class':\n\t case 'function':\n\t declaration = this.parseStatementListItem();\n\t break;\n\t default:\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t }\n\t else if (this.matchAsyncFunction()) {\n\t var declaration = this.parseFunctionDeclaration();\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t }\n\t else {\n\t var specifiers = [];\n\t var source = null;\n\t var isExportFromIdentifier = false;\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t isExportFromIdentifier = isExportFromIdentifier || this.matchKeyword('default');\n\t specifiers.push(this.parseExportSpecifier());\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t if (this.matchContextualKeyword('from')) {\n\t // export {default} from 'foo';\n\t // export {foo} from 'foo';\n\t this.nextToken();\n\t source = this.parseModuleSpecifier();\n\t this.consumeSemicolon();\n\t }\n\t else if (isExportFromIdentifier) {\n\t // export {default}; // missing fromClause\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t else {\n\t // export {foo};\n\t this.consumeSemicolon();\n\t }\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(null, specifiers, source));\n\t }\n\t return exportDeclaration;\n\t };\n\t return Parser;\n\t}());\n\texports.Parser = Parser;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Ensure the condition is true, otherwise throw an error.\n\t// This is only to have a better contract semantic, i.e. another safety net\n\t// to catch a logic error. The condition shall be fulfilled in normal case.\n\t// Do NOT use this to enforce a certain condition on any user input.\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tfunction assert(condition, message) {\n\t /* istanbul ignore if */\n\t if (!condition) {\n\t throw new Error('ASSERT: ' + message);\n\t }\n\t}\n\texports.assert = assert;\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t/* tslint:disable:max-classes-per-file */\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ErrorHandler = (function () {\n\t function ErrorHandler() {\n\t this.errors = [];\n\t this.tolerant = false;\n\t }\n\t ErrorHandler.prototype.recordError = function (error) {\n\t this.errors.push(error);\n\t };\n\t ErrorHandler.prototype.tolerate = function (error) {\n\t if (this.tolerant) {\n\t this.recordError(error);\n\t }\n\t else {\n\t throw error;\n\t }\n\t };\n\t ErrorHandler.prototype.constructError = function (msg, column) {\n\t var error = new Error(msg);\n\t try {\n\t throw error;\n\t }\n\t catch (base) {\n\t /* istanbul ignore else */\n\t if (Object.create && Object.defineProperty) {\n\t error = Object.create(base);\n\t Object.defineProperty(error, 'column', { value: column });\n\t }\n\t }\n\t /* istanbul ignore next */\n\t return error;\n\t };\n\t ErrorHandler.prototype.createError = function (index, line, col, description) {\n\t var msg = 'Line ' + line + ': ' + description;\n\t var error = this.constructError(msg, col);\n\t error.index = index;\n\t error.lineNumber = line;\n\t error.description = description;\n\t return error;\n\t };\n\t ErrorHandler.prototype.throwError = function (index, line, col, description) {\n\t throw this.createError(index, line, col, description);\n\t };\n\t ErrorHandler.prototype.tolerateError = function (index, line, col, description) {\n\t var error = this.createError(index, line, col, description);\n\t if (this.tolerant) {\n\t this.recordError(error);\n\t }\n\t else {\n\t throw error;\n\t }\n\t };\n\t return ErrorHandler;\n\t}());\n\texports.ErrorHandler = ErrorHandler;\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// Error messages should be identical to V8.\n\texports.Messages = {\n\t BadGetterArity: 'Getter must not have any formal parameters',\n\t BadSetterArity: 'Setter must have exactly one formal parameter',\n\t BadSetterRestParameter: 'Setter function argument must not be a rest parameter',\n\t ConstructorIsAsync: 'Class constructor may not be an async method',\n\t ConstructorSpecialMethod: 'Class constructor may not be an accessor',\n\t DeclarationMissingInitializer: 'Missing initializer in %0 declaration',\n\t DefaultRestParameter: 'Unexpected token =',\n\t DuplicateBinding: 'Duplicate binding %0',\n\t DuplicateConstructor: 'A class may only have one constructor',\n\t DuplicateProtoProperty: 'Duplicate __proto__ fields are not allowed in object literals',\n\t ForInOfLoopInitializer: '%0 loop variable declaration may not have an initializer',\n\t GeneratorInLegacyContext: 'Generator declarations are not allowed in legacy contexts',\n\t IllegalBreak: 'Illegal break statement',\n\t IllegalContinue: 'Illegal continue statement',\n\t IllegalExportDeclaration: 'Unexpected token',\n\t IllegalImportDeclaration: 'Unexpected token',\n\t IllegalLanguageModeDirective: 'Illegal \\'use strict\\' directive in function with non-simple parameter list',\n\t IllegalReturn: 'Illegal return statement',\n\t InvalidEscapedReservedWord: 'Keyword must not contain escaped characters',\n\t InvalidHexEscapeSequence: 'Invalid hexadecimal escape sequence',\n\t InvalidLHSInAssignment: 'Invalid left-hand side in assignment',\n\t InvalidLHSInForIn: 'Invalid left-hand side in for-in',\n\t InvalidLHSInForLoop: 'Invalid left-hand side in for-loop',\n\t InvalidModuleSpecifier: 'Unexpected token',\n\t InvalidRegExp: 'Invalid regular expression',\n\t LetInLexicalBinding: 'let is disallowed as a lexically bound name',\n\t MissingFromClause: 'Unexpected token',\n\t MultipleDefaultsInSwitch: 'More than one default clause in switch statement',\n\t NewlineAfterThrow: 'Illegal newline after throw',\n\t NoAsAfterImportNamespace: 'Unexpected token',\n\t NoCatchOrFinally: 'Missing catch or finally after try',\n\t ParameterAfterRestParameter: 'Rest parameter must be last formal parameter',\n\t Redeclaration: '%0 \\'%1\\' has already been declared',\n\t StaticPrototype: 'Classes may not have static property named prototype',\n\t StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',\n\t StrictDelete: 'Delete of an unqualified identifier in strict mode.',\n\t StrictFunction: 'In strict mode code, functions can only be declared at top level or inside a block',\n\t StrictFunctionName: 'Function name may not be eval or arguments in strict mode',\n\t StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',\n\t StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictModeWith: 'Strict mode code may not include a with statement',\n\t StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',\n\t StrictParamDupe: 'Strict mode function may not have duplicate parameter names',\n\t StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',\n\t StrictReservedWord: 'Use of future reserved word in strict mode',\n\t StrictVarName: 'Variable name may not be eval or arguments in strict mode',\n\t TemplateOctalLiteral: 'Octal literals are not allowed in template strings.',\n\t UnexpectedEOS: 'Unexpected end of input',\n\t UnexpectedIdentifier: 'Unexpected identifier',\n\t UnexpectedNumber: 'Unexpected number',\n\t UnexpectedReserved: 'Unexpected reserved word',\n\t UnexpectedString: 'Unexpected string',\n\t UnexpectedTemplate: 'Unexpected quasi %0',\n\t UnexpectedToken: 'Unexpected token %0',\n\t UnexpectedTokenIllegal: 'Unexpected token ILLEGAL',\n\t UnknownLabel: 'Undefined label \\'%0\\'',\n\t UnterminatedRegExp: 'Invalid regular expression: missing /'\n\t};\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __webpack_require__(9);\n\tvar character_1 = __webpack_require__(4);\n\tvar messages_1 = __webpack_require__(11);\n\tfunction hexValue(ch) {\n\t return '0123456789abcdef'.indexOf(ch.toLowerCase());\n\t}\n\tfunction octalValue(ch) {\n\t return '01234567'.indexOf(ch);\n\t}\n\tvar Scanner = (function () {\n\t function Scanner(code, handler) {\n\t this.source = code;\n\t this.errorHandler = handler;\n\t this.trackComment = false;\n\t this.isModule = false;\n\t this.length = code.length;\n\t this.index = 0;\n\t this.lineNumber = (code.length > 0) ? 1 : 0;\n\t this.lineStart = 0;\n\t this.curlyStack = [];\n\t }\n\t Scanner.prototype.saveState = function () {\n\t return {\n\t index: this.index,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart\n\t };\n\t };\n\t Scanner.prototype.restoreState = function (state) {\n\t this.index = state.index;\n\t this.lineNumber = state.lineNumber;\n\t this.lineStart = state.lineStart;\n\t };\n\t Scanner.prototype.eof = function () {\n\t return this.index >= this.length;\n\t };\n\t Scanner.prototype.throwUnexpectedToken = function (message) {\n\t if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t return this.errorHandler.throwError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t };\n\t Scanner.prototype.tolerateUnexpectedToken = function (message) {\n\t if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t this.errorHandler.tolerateError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t };\n\t // https://tc39.github.io/ecma262/#sec-comments\n\t Scanner.prototype.skipSingleLineComment = function (offset) {\n\t var comments = [];\n\t var start, loc;\n\t if (this.trackComment) {\n\t comments = [];\n\t start = this.index - offset;\n\t loc = {\n\t start: {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - offset\n\t },\n\t end: {}\n\t };\n\t }\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t ++this.index;\n\t if (character_1.Character.isLineTerminator(ch)) {\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - 1\n\t };\n\t var entry = {\n\t multiLine: false,\n\t slice: [start + offset, this.index - 1],\n\t range: [start, this.index - 1],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t if (ch === 13 && this.source.charCodeAt(this.index) === 10) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t this.lineStart = this.index;\n\t return comments;\n\t }\n\t }\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: false,\n\t slice: [start + offset, this.index],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t return comments;\n\t };\n\t Scanner.prototype.skipMultiLineComment = function () {\n\t var comments = [];\n\t var start, loc;\n\t if (this.trackComment) {\n\t comments = [];\n\t start = this.index - 2;\n\t loc = {\n\t start: {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - 2\n\t },\n\t end: {}\n\t };\n\t }\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isLineTerminator(ch)) {\n\t if (ch === 0x0D && this.source.charCodeAt(this.index + 1) === 0x0A) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t ++this.index;\n\t this.lineStart = this.index;\n\t }\n\t else if (ch === 0x2A) {\n\t // Block comment ends with '*/'.\n\t if (this.source.charCodeAt(this.index + 1) === 0x2F) {\n\t this.index += 2;\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: true,\n\t slice: [start + 2, this.index - 2],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t return comments;\n\t }\n\t ++this.index;\n\t }\n\t else {\n\t ++this.index;\n\t }\n\t }\n\t // Ran off the end of the file - the whole thing is a comment\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: true,\n\t slice: [start + 2, this.index],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t this.tolerateUnexpectedToken();\n\t return comments;\n\t };\n\t Scanner.prototype.scanComments = function () {\n\t var comments;\n\t if (this.trackComment) {\n\t comments = [];\n\t }\n\t var start = (this.index === 0);\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isWhiteSpace(ch)) {\n\t ++this.index;\n\t }\n\t else if (character_1.Character.isLineTerminator(ch)) {\n\t ++this.index;\n\t if (ch === 0x0D && this.source.charCodeAt(this.index) === 0x0A) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t this.lineStart = this.index;\n\t start = true;\n\t }\n\t else if (ch === 0x2F) {\n\t ch = this.source.charCodeAt(this.index + 1);\n\t if (ch === 0x2F) {\n\t this.index += 2;\n\t var comment = this.skipSingleLineComment(2);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t start = true;\n\t }\n\t else if (ch === 0x2A) {\n\t this.index += 2;\n\t var comment = this.skipMultiLineComment();\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else if (start && ch === 0x2D) {\n\t // U+003E is '>'\n\t if ((this.source.charCodeAt(this.index + 1) === 0x2D) && (this.source.charCodeAt(this.index + 2) === 0x3E)) {\n\t // '-->' is a single-line comment\n\t this.index += 3;\n\t var comment = this.skipSingleLineComment(3);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else if (ch === 0x3C && !this.isModule) {\n\t if (this.source.slice(this.index + 1, this.index + 4) === '!--') {\n\t this.index += 4; // `<!--`\n\t var comment = this.skipSingleLineComment(4);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return comments;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-future-reserved-words\n\t Scanner.prototype.isFutureReservedWord = function (id) {\n\t switch (id) {\n\t case 'enum':\n\t case 'export':\n\t case 'import':\n\t case 'super':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.isStrictModeReservedWord = function (id) {\n\t switch (id) {\n\t case 'implements':\n\t case 'interface':\n\t case 'package':\n\t case 'private':\n\t case 'protected':\n\t case 'public':\n\t case 'static':\n\t case 'yield':\n\t case 'let':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.isRestrictedWord = function (id) {\n\t return id === 'eval' || id === 'arguments';\n\t };\n\t // https://tc39.github.io/ecma262/#sec-keywords\n\t Scanner.prototype.isKeyword = function (id) {\n\t switch (id.length) {\n\t case 2:\n\t return (id === 'if') || (id === 'in') || (id === 'do');\n\t case 3:\n\t return (id === 'var') || (id === 'for') || (id === 'new') ||\n\t (id === 'try') || (id === 'let');\n\t case 4:\n\t return (id === 'this') || (id === 'else') || (id === 'case') ||\n\t (id === 'void') || (id === 'with') || (id === 'enum');\n\t case 5:\n\t return (id === 'while') || (id === 'break') || (id === 'catch') ||\n\t (id === 'throw') || (id === 'const') || (id === 'yield') ||\n\t (id === 'class') || (id === 'super');\n\t case 6:\n\t return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n\t (id === 'switch') || (id === 'export') || (id === 'import');\n\t case 7:\n\t return (id === 'default') || (id === 'finally') || (id === 'extends');\n\t case 8:\n\t return (id === 'function') || (id === 'continue') || (id === 'debugger');\n\t case 10:\n\t return (id === 'instanceof');\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.codePointAt = function (i) {\n\t var cp = this.source.charCodeAt(i);\n\t if (cp >= 0xD800 && cp <= 0xDBFF) {\n\t var second = this.source.charCodeAt(i + 1);\n\t if (second >= 0xDC00 && second <= 0xDFFF) {\n\t var first = cp;\n\t cp = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t }\n\t }\n\t return cp;\n\t };\n\t Scanner.prototype.scanHexEscape = function (prefix) {\n\t var len = (prefix === 'u') ? 4 : 2;\n\t var code = 0;\n\t for (var i = 0; i < len; ++i) {\n\t if (!this.eof() && character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t code = code * 16 + hexValue(this.source[this.index++]);\n\t }\n\t else {\n\t return null;\n\t }\n\t }\n\t return String.fromCharCode(code);\n\t };\n\t Scanner.prototype.scanUnicodeCodePointEscape = function () {\n\t var ch = this.source[this.index];\n\t var code = 0;\n\t // At least, one hex digit is required.\n\t if (ch === '}') {\n\t this.throwUnexpectedToken();\n\t }\n\t while (!this.eof()) {\n\t ch = this.source[this.index++];\n\t if (!character_1.Character.isHexDigit(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t code = code * 16 + hexValue(ch);\n\t }\n\t if (code > 0x10FFFF || ch !== '}') {\n\t this.throwUnexpectedToken();\n\t }\n\t return character_1.Character.fromCodePoint(code);\n\t };\n\t Scanner.prototype.getIdentifier = function () {\n\t var start = this.index++;\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (ch === 0x5C) {\n\t // Blackslash (U+005C) marks Unicode escape sequence.\n\t this.index = start;\n\t return this.getComplexIdentifier();\n\t }\n\t else if (ch >= 0xD800 && ch < 0xDFFF) {\n\t // Need to handle surrogate pairs.\n\t this.index = start;\n\t return this.getComplexIdentifier();\n\t }\n\t if (character_1.Character.isIdentifierPart(ch)) {\n\t ++this.index;\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return this.source.slice(start, this.index);\n\t };\n\t Scanner.prototype.getComplexIdentifier = function () {\n\t var cp = this.codePointAt(this.index);\n\t var id = character_1.Character.fromCodePoint(cp);\n\t this.index += id.length;\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t var ch;\n\t if (cp === 0x5C) {\n\t if (this.source.charCodeAt(this.index) !== 0x75) {\n\t this.throwUnexpectedToken();\n\t }\n\t ++this.index;\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t ch = this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t ch = this.scanHexEscape('u');\n\t if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierStart(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t id = ch;\n\t }\n\t while (!this.eof()) {\n\t cp = this.codePointAt(this.index);\n\t if (!character_1.Character.isIdentifierPart(cp)) {\n\t break;\n\t }\n\t ch = character_1.Character.fromCodePoint(cp);\n\t id += ch;\n\t this.index += ch.length;\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t if (cp === 0x5C) {\n\t id = id.substr(0, id.length - 1);\n\t if (this.source.charCodeAt(this.index) !== 0x75) {\n\t this.throwUnexpectedToken();\n\t }\n\t ++this.index;\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t ch = this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t ch = this.scanHexEscape('u');\n\t if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t id += ch;\n\t }\n\t }\n\t return id;\n\t };\n\t Scanner.prototype.octalToDecimal = function (ch) {\n\t // \\0 is not octal escape sequence\n\t var octal = (ch !== '0');\n\t var code = octalValue(ch);\n\t if (!this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t octal = true;\n\t code = code * 8 + octalValue(this.source[this.index++]);\n\t // 3 digits are only allowed when string starts\n\t // with 0, 1, 2, 3\n\t if ('0123'.indexOf(ch) >= 0 && !this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t code = code * 8 + octalValue(this.source[this.index++]);\n\t }\n\t }\n\t return {\n\t code: code,\n\t octal: octal\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t Scanner.prototype.scanIdentifier = function () {\n\t var type;\n\t var start = this.index;\n\t // Backslash (U+005C) starts an escaped character.\n\t var id = (this.source.charCodeAt(start) === 0x5C) ? this.getComplexIdentifier() : this.getIdentifier();\n\t // There is no keyword or literal with only one character.\n\t // Thus, it must be an identifier.\n\t if (id.length === 1) {\n\t type = 3 /* Identifier */;\n\t }\n\t else if (this.isKeyword(id)) {\n\t type = 4 /* Keyword */;\n\t }\n\t else if (id === 'null') {\n\t type = 5 /* NullLiteral */;\n\t }\n\t else if (id === 'true' || id === 'false') {\n\t type = 1 /* BooleanLiteral */;\n\t }\n\t else {\n\t type = 3 /* Identifier */;\n\t }\n\t if (type !== 3 /* Identifier */ && (start + id.length !== this.index)) {\n\t var restore = this.index;\n\t this.index = start;\n\t this.tolerateUnexpectedToken(messages_1.Messages.InvalidEscapedReservedWord);\n\t this.index = restore;\n\t }\n\t return {\n\t type: type,\n\t value: id,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-punctuators\n\t Scanner.prototype.scanPunctuator = function () {\n\t var start = this.index;\n\t // Check for most common single-character punctuators.\n\t var str = this.source[this.index];\n\t switch (str) {\n\t case '(':\n\t case '{':\n\t if (str === '{') {\n\t this.curlyStack.push('{');\n\t }\n\t ++this.index;\n\t break;\n\t case '.':\n\t ++this.index;\n\t if (this.source[this.index] === '.' && this.source[this.index + 1] === '.') {\n\t // Spread operator: ...\n\t this.index += 2;\n\t str = '...';\n\t }\n\t break;\n\t case '}':\n\t ++this.index;\n\t this.curlyStack.pop();\n\t break;\n\t case ')':\n\t case ';':\n\t case ',':\n\t case '[':\n\t case ']':\n\t case ':':\n\t case '?':\n\t case '~':\n\t ++this.index;\n\t break;\n\t default:\n\t // 4-character punctuator.\n\t str = this.source.substr(this.index, 4);\n\t if (str === '>>>=') {\n\t this.index += 4;\n\t }\n\t else {\n\t // 3-character punctuators.\n\t str = str.substr(0, 3);\n\t if (str === '===' || str === '!==' || str === '>>>' ||\n\t str === '<<=' || str === '>>=' || str === '**=') {\n\t this.index += 3;\n\t }\n\t else {\n\t // 2-character punctuators.\n\t str = str.substr(0, 2);\n\t if (str === '&&' || str === '||' || str === '==' || str === '!=' ||\n\t str === '+=' || str === '-=' || str === '*=' || str === '/=' ||\n\t str === '++' || str === '--' || str === '<<' || str === '>>' ||\n\t str === '&=' || str === '|=' || str === '^=' || str === '%=' ||\n\t str === '<=' || str === '>=' || str === '=>' || str === '**') {\n\t this.index += 2;\n\t }\n\t else {\n\t // 1-character punctuators.\n\t str = this.source[this.index];\n\t if ('<>=!+-*%&|^/'.indexOf(str) >= 0) {\n\t ++this.index;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t if (this.index === start) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: str,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t Scanner.prototype.scanHexLiteral = function (start) {\n\t var num = '';\n\t while (!this.eof()) {\n\t if (!character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (num.length === 0) {\n\t this.throwUnexpectedToken();\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt('0x' + num, 16),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.scanBinaryLiteral = function (start) {\n\t var num = '';\n\t var ch;\n\t while (!this.eof()) {\n\t ch = this.source[this.index];\n\t if (ch !== '0' && ch !== '1') {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (num.length === 0) {\n\t // only 0b or 0B\n\t this.throwUnexpectedToken();\n\t }\n\t if (!this.eof()) {\n\t ch = this.source.charCodeAt(this.index);\n\t /* istanbul ignore else */\n\t if (character_1.Character.isIdentifierStart(ch) || character_1.Character.isDecimalDigit(ch)) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt(num, 2),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.scanOctalLiteral = function (prefix, start) {\n\t var num = '';\n\t var octal = false;\n\t if (character_1.Character.isOctalDigit(prefix.charCodeAt(0))) {\n\t octal = true;\n\t num = '0' + this.source[this.index++];\n\t }\n\t else {\n\t ++this.index;\n\t }\n\t while (!this.eof()) {\n\t if (!character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (!octal && num.length === 0) {\n\t // only 0o or 0O\n\t this.throwUnexpectedToken();\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index)) || character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt(num, 8),\n\t octal: octal,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.isImplicitOctalLiteral = function () {\n\t // Implicit octal, unless there is a non-octal digit.\n\t // (Annex B.1.1 on Numeric Literals)\n\t for (var i = this.index + 1; i < this.length; ++i) {\n\t var ch = this.source[i];\n\t if (ch === '8' || ch === '9') {\n\t return false;\n\t }\n\t if (!character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t return true;\n\t }\n\t }\n\t return true;\n\t };\n\t Scanner.prototype.scanNumericLiteral = function () {\n\t var start = this.index;\n\t var ch = this.source[start];\n\t assert_1.assert(character_1.Character.isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), 'Numeric literal must start with a decimal digit or a decimal point');\n\t var num = '';\n\t if (ch !== '.') {\n\t num = this.source[this.index++];\n\t ch = this.source[this.index];\n\t // Hex number starts with '0x'.\n\t // Octal number starts with '0'.\n\t // Octal number in ES6 starts with '0o'.\n\t // Binary number in ES6 starts with '0b'.\n\t if (num === '0') {\n\t if (ch === 'x' || ch === 'X') {\n\t ++this.index;\n\t return this.scanHexLiteral(start);\n\t }\n\t if (ch === 'b' || ch === 'B') {\n\t ++this.index;\n\t return this.scanBinaryLiteral(start);\n\t }\n\t if (ch === 'o' || ch === 'O') {\n\t return this.scanOctalLiteral(ch, start);\n\t }\n\t if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t if (this.isImplicitOctalLiteral()) {\n\t return this.scanOctalLiteral(ch, start);\n\t }\n\t }\n\t }\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t ch = this.source[this.index];\n\t }\n\t if (ch === '.') {\n\t num += this.source[this.index++];\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t ch = this.source[this.index];\n\t }\n\t if (ch === 'e' || ch === 'E') {\n\t num += this.source[this.index++];\n\t ch = this.source[this.index];\n\t if (ch === '+' || ch === '-') {\n\t num += this.source[this.index++];\n\t }\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseFloat(num),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-string-literals\n\t Scanner.prototype.scanStringLiteral = function () {\n\t var start = this.index;\n\t var quote = this.source[start];\n\t assert_1.assert((quote === '\\'' || quote === '\"'), 'String literal must starts with a quote');\n\t ++this.index;\n\t var octal = false;\n\t var str = '';\n\t while (!this.eof()) {\n\t var ch = this.source[this.index++];\n\t if (ch === quote) {\n\t quote = '';\n\t break;\n\t }\n\t else if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t if (!ch || !character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t switch (ch) {\n\t case 'u':\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t str += this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t var unescaped_1 = this.scanHexEscape(ch);\n\t if (unescaped_1 === null) {\n\t this.throwUnexpectedToken();\n\t }\n\t str += unescaped_1;\n\t }\n\t break;\n\t case 'x':\n\t var unescaped = this.scanHexEscape(ch);\n\t if (unescaped === null) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t }\n\t str += unescaped;\n\t break;\n\t case 'n':\n\t str += '\\n';\n\t break;\n\t case 'r':\n\t str += '\\r';\n\t break;\n\t case 't':\n\t str += '\\t';\n\t break;\n\t case 'b':\n\t str += '\\b';\n\t break;\n\t case 'f':\n\t str += '\\f';\n\t break;\n\t case 'v':\n\t str += '\\x0B';\n\t break;\n\t case '8':\n\t case '9':\n\t str += ch;\n\t this.tolerateUnexpectedToken();\n\t break;\n\t default:\n\t if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t var octToDec = this.octalToDecimal(ch);\n\t octal = octToDec.octal || octal;\n\t str += String.fromCharCode(octToDec.code);\n\t }\n\t else {\n\t str += ch;\n\t }\n\t break;\n\t }\n\t }\n\t else {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t }\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t else {\n\t str += ch;\n\t }\n\t }\n\t if (quote !== '') {\n\t this.index = start;\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 8 /* StringLiteral */,\n\t value: str,\n\t octal: octal,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-template-literal-lexical-components\n\t Scanner.prototype.scanTemplate = function () {\n\t var cooked = '';\n\t var terminated = false;\n\t var start = this.index;\n\t var head = (this.source[start] === '`');\n\t var tail = false;\n\t var rawOffset = 2;\n\t ++this.index;\n\t while (!this.eof()) {\n\t var ch = this.source[this.index++];\n\t if (ch === '`') {\n\t rawOffset = 1;\n\t tail = true;\n\t terminated = true;\n\t break;\n\t }\n\t else if (ch === '$') {\n\t if (this.source[this.index] === '{') {\n\t this.curlyStack.push('${');\n\t ++this.index;\n\t terminated = true;\n\t break;\n\t }\n\t cooked += ch;\n\t }\n\t else if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t if (!character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t switch (ch) {\n\t case 'n':\n\t cooked += '\\n';\n\t break;\n\t case 'r':\n\t cooked += '\\r';\n\t break;\n\t case 't':\n\t cooked += '\\t';\n\t break;\n\t case 'u':\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t cooked += this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t var restore = this.index;\n\t var unescaped_2 = this.scanHexEscape(ch);\n\t if (unescaped_2 !== null) {\n\t cooked += unescaped_2;\n\t }\n\t else {\n\t this.index = restore;\n\t cooked += ch;\n\t }\n\t }\n\t break;\n\t case 'x':\n\t var unescaped = this.scanHexEscape(ch);\n\t if (unescaped === null) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t }\n\t cooked += unescaped;\n\t break;\n\t case 'b':\n\t cooked += '\\b';\n\t break;\n\t case 'f':\n\t cooked += '\\f';\n\t break;\n\t case 'v':\n\t cooked += '\\v';\n\t break;\n\t default:\n\t if (ch === '0') {\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t // Illegal: \\01 \\02 and so on\n\t this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t }\n\t cooked += '\\0';\n\t }\n\t else if (character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t // Illegal: \\1 \\2\n\t this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t }\n\t else {\n\t cooked += ch;\n\t }\n\t break;\n\t }\n\t }\n\t else {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t }\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t cooked += '\\n';\n\t }\n\t else {\n\t cooked += ch;\n\t }\n\t }\n\t if (!terminated) {\n\t this.throwUnexpectedToken();\n\t }\n\t if (!head) {\n\t this.curlyStack.pop();\n\t }\n\t return {\n\t type: 10 /* Template */,\n\t value: this.source.slice(start + 1, this.index - rawOffset),\n\t cooked: cooked,\n\t head: head,\n\t tail: tail,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t Scanner.prototype.testRegExp = function (pattern, flags) {\n\t // The BMP character to use as a replacement for astral symbols when\n\t // translating an ES6 \"u\"-flagged pattern to an ES5-compatible\n\t // approximation.\n\t // Note: replacing with '\\uFFFF' enables false positives in unlikely\n\t // scenarios. For example, `[\\u{1044f}-\\u{10440}]` is an invalid\n\t // pattern that would not be detected by this substitution.\n\t var astralSubstitute = '\\uFFFF';\n\t var tmp = pattern;\n\t var self = this;\n\t if (flags.indexOf('u') >= 0) {\n\t tmp = tmp\n\t .replace(/\\\\u\\{([0-9a-fA-F]+)\\}|\\\\u([a-fA-F0-9]{4})/g, function ($0, $1, $2) {\n\t var codePoint = parseInt($1 || $2, 16);\n\t if (codePoint > 0x10FFFF) {\n\t self.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t }\n\t if (codePoint <= 0xFFFF) {\n\t return String.fromCharCode(codePoint);\n\t }\n\t return astralSubstitute;\n\t })\n\t .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, astralSubstitute);\n\t }\n\t // First, detect invalid regular expressions.\n\t try {\n\t RegExp(tmp);\n\t }\n\t catch (e) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t }\n\t // Return a regular expression object for this pattern-flag pair, or\n\t // `null` in case the current environment doesn't support the flags it\n\t // uses.\n\t try {\n\t return new RegExp(pattern, flags);\n\t }\n\t catch (exception) {\n\t /* istanbul ignore next */\n\t return null;\n\t }\n\t };\n\t Scanner.prototype.scanRegExpBody = function () {\n\t var ch = this.source[this.index];\n\t assert_1.assert(ch === '/', 'Regular expression literal must start with a slash');\n\t var str = this.source[this.index++];\n\t var classMarker = false;\n\t var terminated = false;\n\t while (!this.eof()) {\n\t ch = this.source[this.index++];\n\t str += ch;\n\t if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t str += ch;\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t else if (classMarker) {\n\t if (ch === ']') {\n\t classMarker = false;\n\t }\n\t }\n\t else {\n\t if (ch === '/') {\n\t terminated = true;\n\t break;\n\t }\n\t else if (ch === '[') {\n\t classMarker = true;\n\t }\n\t }\n\t }\n\t if (!terminated) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t // Exclude leading and trailing slash.\n\t return str.substr(1, str.length - 2);\n\t };\n\t Scanner.prototype.scanRegExpFlags = function () {\n\t var str = '';\n\t var flags = '';\n\t while (!this.eof()) {\n\t var ch = this.source[this.index];\n\t if (!character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t ++this.index;\n\t if (ch === '\\\\' && !this.eof()) {\n\t ch = this.source[this.index];\n\t if (ch === 'u') {\n\t ++this.index;\n\t var restore = this.index;\n\t var char = this.scanHexEscape('u');\n\t if (char !== null) {\n\t flags += char;\n\t for (str += '\\\\u'; restore < this.index; ++restore) {\n\t str += this.source[restore];\n\t }\n\t }\n\t else {\n\t this.index = restore;\n\t flags += 'u';\n\t str += '\\\\u';\n\t }\n\t this.tolerateUnexpectedToken();\n\t }\n\t else {\n\t str += '\\\\';\n\t this.tolerateUnexpectedToken();\n\t }\n\t }\n\t else {\n\t flags += ch;\n\t str += ch;\n\t }\n\t }\n\t return flags;\n\t };\n\t Scanner.prototype.scanRegExp = function () {\n\t var start = this.index;\n\t var pattern = this.scanRegExpBody();\n\t var flags = this.scanRegExpFlags();\n\t var value = this.testRegExp(pattern, flags);\n\t return {\n\t type: 9 /* RegularExpression */,\n\t value: '',\n\t pattern: pattern,\n\t flags: flags,\n\t regex: value,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.lex = function () {\n\t if (this.eof()) {\n\t return {\n\t type: 2 /* EOF */,\n\t value: '',\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: this.index,\n\t end: this.index\n\t };\n\t }\n\t var cp = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isIdentifierStart(cp)) {\n\t return this.scanIdentifier();\n\t }\n\t // Very common: ( and ) and ;\n\t if (cp === 0x28 || cp === 0x29 || cp === 0x3B) {\n\t return this.scanPunctuator();\n\t }\n\t // String literal starts with single quote (U+0027) or double quote (U+0022).\n\t if (cp === 0x27 || cp === 0x22) {\n\t return this.scanStringLiteral();\n\t }\n\t // Dot (.) U+002E can also start a floating-point number, hence the need\n\t // to check the next character.\n\t if (cp === 0x2E) {\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index + 1))) {\n\t return this.scanNumericLiteral();\n\t }\n\t return this.scanPunctuator();\n\t }\n\t if (character_1.Character.isDecimalDigit(cp)) {\n\t return this.scanNumericLiteral();\n\t }\n\t // Template literals start with ` (U+0060) for template head\n\t // or } (U+007D) for template middle or template tail.\n\t if (cp === 0x60 || (cp === 0x7D && this.curlyStack[this.curlyStack.length - 1] === '${')) {\n\t return this.scanTemplate();\n\t }\n\t // Possible identifier start in a surrogate pair.\n\t if (cp >= 0xD800 && cp < 0xDFFF) {\n\t if (character_1.Character.isIdentifierStart(this.codePointAt(this.index))) {\n\t return this.scanIdentifier();\n\t }\n\t }\n\t return this.scanPunctuator();\n\t };\n\t return Scanner;\n\t}());\n\texports.Scanner = Scanner;\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.TokenName = {};\n\texports.TokenName[1 /* BooleanLiteral */] = 'Boolean';\n\texports.TokenName[2 /* EOF */] = '<end>';\n\texports.TokenName[3 /* Identifier */] = 'Identifier';\n\texports.TokenName[4 /* Keyword */] = 'Keyword';\n\texports.TokenName[5 /* NullLiteral */] = 'Null';\n\texports.TokenName[6 /* NumericLiteral */] = 'Numeric';\n\texports.TokenName[7 /* Punctuator */] = 'Punctuator';\n\texports.TokenName[8 /* StringLiteral */] = 'String';\n\texports.TokenName[9 /* RegularExpression */] = 'RegularExpression';\n\texports.TokenName[10 /* Template */] = 'Template';\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Generated by generate-xhtml-entities.js. DO NOT MODIFY!\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.XHTMLEntities = {\n\t quot: '\\u0022',\n\t amp: '\\u0026',\n\t apos: '\\u0027',\n\t gt: '\\u003E',\n\t nbsp: '\\u00A0',\n\t iexcl: '\\u00A1',\n\t cent: '\\u00A2',\n\t pound: '\\u00A3',\n\t curren: '\\u00A4',\n\t yen: '\\u00A5',\n\t brvbar: '\\u00A6',\n\t sect: '\\u00A7',\n\t uml: '\\u00A8',\n\t copy: '\\u00A9',\n\t ordf: '\\u00AA',\n\t laquo: '\\u00AB',\n\t not: '\\u00AC',\n\t shy: '\\u00AD',\n\t reg: '\\u00AE',\n\t macr: '\\u00AF',\n\t deg: '\\u00B0',\n\t plusmn: '\\u00B1',\n\t sup2: '\\u00B2',\n\t sup3: '\\u00B3',\n\t acute: '\\u00B4',\n\t micro: '\\u00B5',\n\t para: '\\u00B6',\n\t middot: '\\u00B7',\n\t cedil: '\\u00B8',\n\t sup1: '\\u00B9',\n\t ordm: '\\u00BA',\n\t raquo: '\\u00BB',\n\t frac14: '\\u00BC',\n\t frac12: '\\u00BD',\n\t frac34: '\\u00BE',\n\t iquest: '\\u00BF',\n\t Agrave: '\\u00C0',\n\t Aacute: '\\u00C1',\n\t Acirc: '\\u00C2',\n\t Atilde: '\\u00C3',\n\t Auml: '\\u00C4',\n\t Aring: '\\u00C5',\n\t AElig: '\\u00C6',\n\t Ccedil: '\\u00C7',\n\t Egrave: '\\u00C8',\n\t Eacute: '\\u00C9',\n\t Ecirc: '\\u00CA',\n\t Euml: '\\u00CB',\n\t Igrave: '\\u00CC',\n\t Iacute: '\\u00CD',\n\t Icirc: '\\u00CE',\n\t Iuml: '\\u00CF',\n\t ETH: '\\u00D0',\n\t Ntilde: '\\u00D1',\n\t Ograve: '\\u00D2',\n\t Oacute: '\\u00D3',\n\t Ocirc: '\\u00D4',\n\t Otilde: '\\u00D5',\n\t Ouml: '\\u00D6',\n\t times: '\\u00D7',\n\t Oslash: '\\u00D8',\n\t Ugrave: '\\u00D9',\n\t Uacute: '\\u00DA',\n\t Ucirc: '\\u00DB',\n\t Uuml: '\\u00DC',\n\t Yacute: '\\u00DD',\n\t THORN: '\\u00DE',\n\t szlig: '\\u00DF',\n\t agrave: '\\u00E0',\n\t aacute: '\\u00E1',\n\t acirc: '\\u00E2',\n\t atilde: '\\u00E3',\n\t auml: '\\u00E4',\n\t aring: '\\u00E5',\n\t aelig: '\\u00E6',\n\t ccedil: '\\u00E7',\n\t egrave: '\\u00E8',\n\t eacute: '\\u00E9',\n\t ecirc: '\\u00EA',\n\t euml: '\\u00EB',\n\t igrave: '\\u00EC',\n\t iacute: '\\u00ED',\n\t icirc: '\\u00EE',\n\t iuml: '\\u00EF',\n\t eth: '\\u00F0',\n\t ntilde: '\\u00F1',\n\t ograve: '\\u00F2',\n\t oacute: '\\u00F3',\n\t ocirc: '\\u00F4',\n\t otilde: '\\u00F5',\n\t ouml: '\\u00F6',\n\t divide: '\\u00F7',\n\t oslash: '\\u00F8',\n\t ugrave: '\\u00F9',\n\t uacute: '\\u00FA',\n\t ucirc: '\\u00FB',\n\t uuml: '\\u00FC',\n\t yacute: '\\u00FD',\n\t thorn: '\\u00FE',\n\t yuml: '\\u00FF',\n\t OElig: '\\u0152',\n\t oelig: '\\u0153',\n\t Scaron: '\\u0160',\n\t scaron: '\\u0161',\n\t Yuml: '\\u0178',\n\t fnof: '\\u0192',\n\t circ: '\\u02C6',\n\t tilde: '\\u02DC',\n\t Alpha: '\\u0391',\n\t Beta: '\\u0392',\n\t Gamma: '\\u0393',\n\t Delta: '\\u0394',\n\t Epsilon: '\\u0395',\n\t Zeta: '\\u0396',\n\t Eta: '\\u0397',\n\t Theta: '\\u0398',\n\t Iota: '\\u0399',\n\t Kappa: '\\u039A',\n\t Lambda: '\\u039B',\n\t Mu: '\\u039C',\n\t Nu: '\\u039D',\n\t Xi: '\\u039E',\n\t Omicron: '\\u039F',\n\t Pi: '\\u03A0',\n\t Rho: '\\u03A1',\n\t Sigma: '\\u03A3',\n\t Tau: '\\u03A4',\n\t Upsilon: '\\u03A5',\n\t Phi: '\\u03A6',\n\t Chi: '\\u03A7',\n\t Psi: '\\u03A8',\n\t Omega: '\\u03A9',\n\t alpha: '\\u03B1',\n\t beta: '\\u03B2',\n\t gamma: '\\u03B3',\n\t delta: '\\u03B4',\n\t epsilon: '\\u03B5',\n\t zeta: '\\u03B6',\n\t eta: '\\u03B7',\n\t theta: '\\u03B8',\n\t iota: '\\u03B9',\n\t kappa: '\\u03BA',\n\t lambda: '\\u03BB',\n\t mu: '\\u03BC',\n\t nu: '\\u03BD',\n\t xi: '\\u03BE',\n\t omicron: '\\u03BF',\n\t pi: '\\u03C0',\n\t rho: '\\u03C1',\n\t sigmaf: '\\u03C2',\n\t sigma: '\\u03C3',\n\t tau: '\\u03C4',\n\t upsilon: '\\u03C5',\n\t phi: '\\u03C6',\n\t chi: '\\u03C7',\n\t psi: '\\u03C8',\n\t omega: '\\u03C9',\n\t thetasym: '\\u03D1',\n\t upsih: '\\u03D2',\n\t piv: '\\u03D6',\n\t ensp: '\\u2002',\n\t emsp: '\\u2003',\n\t thinsp: '\\u2009',\n\t zwnj: '\\u200C',\n\t zwj: '\\u200D',\n\t lrm: '\\u200E',\n\t rlm: '\\u200F',\n\t ndash: '\\u2013',\n\t mdash: '\\u2014',\n\t lsquo: '\\u2018',\n\t rsquo: '\\u2019',\n\t sbquo: '\\u201A',\n\t ldquo: '\\u201C',\n\t rdquo: '\\u201D',\n\t bdquo: '\\u201E',\n\t dagger: '\\u2020',\n\t Dagger: '\\u2021',\n\t bull: '\\u2022',\n\t hellip: '\\u2026',\n\t permil: '\\u2030',\n\t prime: '\\u2032',\n\t Prime: '\\u2033',\n\t lsaquo: '\\u2039',\n\t rsaquo: '\\u203A',\n\t oline: '\\u203E',\n\t frasl: '\\u2044',\n\t euro: '\\u20AC',\n\t image: '\\u2111',\n\t weierp: '\\u2118',\n\t real: '\\u211C',\n\t trade: '\\u2122',\n\t alefsym: '\\u2135',\n\t larr: '\\u2190',\n\t uarr: '\\u2191',\n\t rarr: '\\u2192',\n\t darr: '\\u2193',\n\t harr: '\\u2194',\n\t crarr: '\\u21B5',\n\t lArr: '\\u21D0',\n\t uArr: '\\u21D1',\n\t rArr: '\\u21D2',\n\t dArr: '\\u21D3',\n\t hArr: '\\u21D4',\n\t forall: '\\u2200',\n\t part: '\\u2202',\n\t exist: '\\u2203',\n\t empty: '\\u2205',\n\t nabla: '\\u2207',\n\t isin: '\\u2208',\n\t notin: '\\u2209',\n\t ni: '\\u220B',\n\t prod: '\\u220F',\n\t sum: '\\u2211',\n\t minus: '\\u2212',\n\t lowast: '\\u2217',\n\t radic: '\\u221A',\n\t prop: '\\u221D',\n\t infin: '\\u221E',\n\t ang: '\\u2220',\n\t and: '\\u2227',\n\t or: '\\u2228',\n\t cap: '\\u2229',\n\t cup: '\\u222A',\n\t int: '\\u222B',\n\t there4: '\\u2234',\n\t sim: '\\u223C',\n\t cong: '\\u2245',\n\t asymp: '\\u2248',\n\t ne: '\\u2260',\n\t equiv: '\\u2261',\n\t le: '\\u2264',\n\t ge: '\\u2265',\n\t sub: '\\u2282',\n\t sup: '\\u2283',\n\t nsub: '\\u2284',\n\t sube: '\\u2286',\n\t supe: '\\u2287',\n\t oplus: '\\u2295',\n\t otimes: '\\u2297',\n\t perp: '\\u22A5',\n\t sdot: '\\u22C5',\n\t lceil: '\\u2308',\n\t rceil: '\\u2309',\n\t lfloor: '\\u230A',\n\t rfloor: '\\u230B',\n\t loz: '\\u25CA',\n\t spades: '\\u2660',\n\t clubs: '\\u2663',\n\t hearts: '\\u2665',\n\t diams: '\\u2666',\n\t lang: '\\u27E8',\n\t rang: '\\u27E9'\n\t};\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar error_handler_1 = __webpack_require__(10);\n\tvar scanner_1 = __webpack_require__(12);\n\tvar token_1 = __webpack_require__(13);\n\tvar Reader = (function () {\n\t function Reader() {\n\t this.values = [];\n\t this.curly = this.paren = -1;\n\t }\n\t // A function following one of those tokens is an expression.\n\t Reader.prototype.beforeFunctionExpression = function (t) {\n\t return ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new',\n\t 'return', 'case', 'delete', 'throw', 'void',\n\t // assignment operators\n\t '=', '+=', '-=', '*=', '**=', '/=', '%=', '<<=', '>>=', '>>>=',\n\t '&=', '|=', '^=', ',',\n\t // binary/unary operators\n\t '+', '-', '*', '**', '/', '%', '++', '--', '<<', '>>', '>>>', '&',\n\t '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=',\n\t '<=', '<', '>', '!=', '!=='].indexOf(t) >= 0;\n\t };\n\t // Determine if forward slash (/) is an operator or part of a regular expression\n\t // https://github.com/mozilla/sweet.js/wiki/design\n\t Reader.prototype.isRegexStart = function () {\n\t var previous = this.values[this.values.length - 1];\n\t var regex = (previous !== null);\n\t switch (previous) {\n\t case 'this':\n\t case ']':\n\t regex = false;\n\t break;\n\t case ')':\n\t var keyword = this.values[this.paren - 1];\n\t regex = (keyword === 'if' || keyword === 'while' || keyword === 'for' || keyword === 'with');\n\t break;\n\t case '}':\n\t // Dividing a function by anything makes little sense,\n\t // but we have to check for that.\n\t regex = false;\n\t if (this.values[this.curly - 3] === 'function') {\n\t // Anonymous function, e.g. function(){} /42\n\t var check = this.values[this.curly - 4];\n\t regex = check ? !this.beforeFunctionExpression(check) : false;\n\t }\n\t else if (this.values[this.curly - 4] === 'function') {\n\t // Named function, e.g. function f(){} /42/\n\t var check = this.values[this.curly - 5];\n\t regex = check ? !this.beforeFunctionExpression(check) : true;\n\t }\n\t break;\n\t default:\n\t break;\n\t }\n\t return regex;\n\t };\n\t Reader.prototype.push = function (token) {\n\t if (token.type === 7 /* Punctuator */ || token.type === 4 /* Keyword */) {\n\t if (token.value === '{') {\n\t this.curly = this.values.length;\n\t }\n\t else if (token.value === '(') {\n\t this.paren = this.values.length;\n\t }\n\t this.values.push(token.value);\n\t }\n\t else {\n\t this.values.push(null);\n\t }\n\t };\n\t return Reader;\n\t}());\n\tvar Tokenizer = (function () {\n\t function Tokenizer(code, config) {\n\t this.errorHandler = new error_handler_1.ErrorHandler();\n\t this.errorHandler.tolerant = config ? (typeof config.tolerant === 'boolean' && config.tolerant) : false;\n\t this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t this.scanner.trackComment = config ? (typeof config.comment === 'boolean' && config.comment) : false;\n\t this.trackRange = config ? (typeof config.range === 'boolean' && config.range) : false;\n\t this.trackLoc = config ? (typeof config.loc === 'boolean' && config.loc) : false;\n\t this.buffer = [];\n\t this.reader = new Reader();\n\t }\n\t Tokenizer.prototype.errors = function () {\n\t return this.errorHandler.errors;\n\t };\n\t Tokenizer.prototype.getNextToken = function () {\n\t if (this.buffer.length === 0) {\n\t var comments = this.scanner.scanComments();\n\t if (this.scanner.trackComment) {\n\t for (var i = 0; i < comments.length; ++i) {\n\t var e = comments[i];\n\t var value = this.scanner.source.slice(e.slice[0], e.slice[1]);\n\t var comment = {\n\t type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t value: value\n\t };\n\t if (this.trackRange) {\n\t comment.range = e.range;\n\t }\n\t if (this.trackLoc) {\n\t comment.loc = e.loc;\n\t }\n\t this.buffer.push(comment);\n\t }\n\t }\n\t if (!this.scanner.eof()) {\n\t var loc = void 0;\n\t if (this.trackLoc) {\n\t loc = {\n\t start: {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t },\n\t end: {}\n\t };\n\t }\n\t var startRegex = (this.scanner.source[this.scanner.index] === '/') && this.reader.isRegexStart();\n\t var token = startRegex ? this.scanner.scanRegExp() : this.scanner.lex();\n\t this.reader.push(token);\n\t var entry = {\n\t type: token_1.TokenName[token.type],\n\t value: this.scanner.source.slice(token.start, token.end)\n\t };\n\t if (this.trackRange) {\n\t entry.range = [token.start, token.end];\n\t }\n\t if (this.trackLoc) {\n\t loc.end = {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t entry.loc = loc;\n\t }\n\t if (token.type === 9 /* RegularExpression */) {\n\t var pattern = token.pattern;\n\t var flags = token.flags;\n\t entry.regex = { pattern: pattern, flags: flags };\n\t }\n\t this.buffer.push(entry);\n\t }\n\t }\n\t return this.buffer.shift();\n\t };\n\t return Tokenizer;\n\t}());\n\texports.Tokenizer = Tokenizer;\n\n\n/***/ }\n/******/ ])\n});\n;","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /* eslint-disable no-redeclare */\n /* global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n if (ast.body[0].expression.body.type === 'BlockStatement') {\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n }\n // ES6 arrow functions can omit the BlockStatement. In that case, just return\n // the body.\n /*eslint-disable no-new-func*/\n return new Function(params, 'return ' + source.slice(body[0], body[1]));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) {\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _pos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n _pos = state.position;\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!_hasOwnProperty.call(state.anchorMap, alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent\n atNewLine = false,\n hasContent = false,\n typeIndex,\n typeQuantity,\n type,\n flowIndent,\n blockIndent;\n\n if (state.listener !== null) {\n state.listener('open', state);\n }\n\n state.tag = null;\n state.anchor = null;\n state.kind = null;\n state.result = null;\n\n allowBlockStyles = allowBlockScalars = allowBlockCollections =\n CONTEXT_BLOCK_OUT === nodeContext ||\n CONTEXT_BLOCK_IN === nodeContext;\n\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"!<?> [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, iterator, options) {\n if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// [24] b-line-feed ::= #xA /* LF */\n// [25] b-carriage-return ::= #xD /* CR */\n// [3] c-byte-order-mark ::= #xFEFF\nfunction isNsChar(c) {\n return isPrintable(c) && !isWhitespace(c)\n // byte-order-mark\n && c !== 0xFEFF\n // b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c, prev) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n // /* An ns-char preceding */ \"#\"\n && c !== CHAR_COLON\n && ((c !== CHAR_SHARP) || (prev && isNsChar(prev)));\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char, prev_char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char, nextChar;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n // Check for surrogate pairs (reference Unicode 3.0 section \"3.7 Surrogates\").\n if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) {\n nextChar = string.charCodeAt(i + 1);\n if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) {\n // Combine the surrogate pair and store it escaped.\n result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000);\n // Advance index one extra since we already used that char here.\n i++; continue;\n }\n }\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (index !== 0) pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level;\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, arrayLevel, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, arrayLevel, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","'use strict';\n\nconst yaml = require('js-yaml');\n\n/**\n * Default engines\n */\n\nconst engines = exports = module.exports;\n\n/**\n * YAML\n */\n\nengines.yaml = {\n parse: yaml.safeLoad.bind(yaml),\n stringify: yaml.safeDump.bind(yaml)\n};\n\n/**\n * JSON\n */\n\nengines.json = {\n parse: JSON.parse.bind(JSON),\n stringify: function(obj, options) {\n const opts = Object.assign({replacer: null, space: 2}, options);\n return JSON.stringify(obj, opts.replacer, opts.space);\n }\n};\n\n/**\n * JavaScript\n */\n\nengines.javascript = {\n parse: function parse(str, options, wrap) {\n /* eslint no-eval: 0 */\n try {\n if (wrap !== false) {\n str = '(function() {\\nreturn ' + str.trim() + ';\\n}());';\n }\n return eval(str) || {};\n } catch (err) {\n if (wrap !== false && /(unexpected|identifier)/i.test(err.message)) {\n return parse(str, options, false);\n }\n throw new SyntaxError(err);\n }\n },\n stringify: function() {\n throw new Error('stringifying JavaScript is not supported');\n }\n};\n","/*!\n * strip-bom-string <https://github.com/jonschlinkert/strip-bom-string>\n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(str) {\n if (typeof str === 'string' && str.charAt(0) === '\\ufeff') {\n return str.slice(1);\n }\n return str;\n};\n","'use strict';\n\nconst stripBom = require('strip-bom-string');\nconst typeOf = require('kind-of');\n\nexports.define = function(obj, key, val) {\n Reflect.defineProperty(obj, key, {\n enumerable: false,\n configurable: true,\n writable: true,\n value: val\n });\n};\n\n/**\n * Returns true if `val` is a buffer\n */\n\nexports.isBuffer = function(val) {\n return typeOf(val) === 'buffer';\n};\n\n/**\n * Returns true if `val` is an object\n */\n\nexports.isObject = function(val) {\n return typeOf(val) === 'object';\n};\n\n/**\n * Cast `input` to a buffer\n */\n\nexports.toBuffer = function(input) {\n return typeof input === 'string' ? Buffer.from(input) : input;\n};\n\n/**\n * Cast `val` to a string.\n */\n\nexports.toString = function(input) {\n if (exports.isBuffer(input)) return stripBom(String(input));\n if (typeof input !== 'string') {\n throw new TypeError('expected input to be a string or buffer');\n }\n return stripBom(input);\n};\n\n/**\n * Cast `val` to an array.\n */\n\nexports.arrayify = function(val) {\n return val ? (Array.isArray(val) ? val : [val]) : [];\n};\n\n/**\n * Returns true if `str` starts with `substr`.\n */\n\nexports.startsWith = function(str, substr, len) {\n if (typeof len !== 'number') len = substr.length;\n return str.slice(0, len) === substr;\n};\n","'use strict';\n\nconst engines = require('./engines');\nconst utils = require('./utils');\n\nmodule.exports = function(options) {\n const opts = Object.assign({}, options);\n\n // ensure that delimiters are an array\n opts.delimiters = utils.arrayify(opts.delims || opts.delimiters || '---');\n if (opts.delimiters.length === 1) {\n opts.delimiters.push(opts.delimiters[0]);\n }\n\n opts.language = (opts.language || opts.lang || 'yaml').toLowerCase();\n opts.engines = Object.assign({}, engines, opts.parsers, opts.engines);\n return opts;\n};\n","'use strict';\n\nmodule.exports = function(name, options) {\n let engine = options.engines[name] || options.engines[aliase(name)];\n if (typeof engine === 'undefined') {\n throw new Error('gray-matter engine \"' + name + '\" is not registered');\n }\n if (typeof engine === 'function') {\n engine = { parse: engine };\n }\n return engine;\n};\n\nfunction aliase(name) {\n switch (name.toLowerCase()) {\n case 'js':\n case 'javascript':\n return 'javascript';\n case 'coffee':\n case 'coffeescript':\n case 'cson':\n return 'coffee';\n case 'yaml':\n case 'yml':\n return 'yaml';\n default: {\n return name;\n }\n }\n}\n","'use strict';\n\nconst typeOf = require('kind-of');\nconst getEngine = require('./engine');\nconst defaults = require('./defaults');\n\nmodule.exports = function(file, data, options) {\n if (data == null && options == null) {\n switch (typeOf(file)) {\n case 'object':\n data = file.data;\n options = {};\n break;\n case 'string':\n return file;\n default: {\n throw new TypeError('expected file to be a string or object');\n }\n }\n }\n\n const str = file.content;\n const opts = defaults(options);\n if (data == null) {\n if (!opts.data) return file;\n data = opts.data;\n }\n\n const language = file.language || opts.language;\n const engine = getEngine(language, opts);\n if (typeof engine.stringify !== 'function') {\n throw new TypeError('expected \"' + language + '.stringify\" to be a function');\n }\n\n data = Object.assign({}, file.data, data);\n const open = opts.delimiters[0];\n const close = opts.delimiters[1];\n const matter = engine.stringify(data, options).trim();\n let buf = '';\n\n if (matter !== '{}') {\n buf = newline(open) + newline(matter) + newline(close);\n }\n\n if (typeof file.excerpt === 'string' && file.excerpt !== '') {\n if (str.indexOf(file.excerpt.trim()) === -1) {\n buf += newline(file.excerpt) + newline(close);\n }\n }\n\n return buf + newline(str);\n};\n\nfunction newline(str) {\n return str.slice(-1) !== '\\n' ? str + '\\n' : str;\n}\n","'use strict';\n\nconst defaults = require('./defaults');\n\nmodule.exports = function(file, options) {\n const opts = defaults(options);\n\n if (file.data == null) {\n file.data = {};\n }\n\n if (typeof opts.excerpt === 'function') {\n return opts.excerpt(file, opts);\n }\n\n const sep = file.data.excerpt_separator || opts.excerpt_separator;\n if (sep == null && (opts.excerpt === false || opts.excerpt == null)) {\n return file;\n }\n\n const delimiter = typeof opts.excerpt === 'string'\n ? opts.excerpt\n : (sep || opts.delimiters[0]);\n\n // if enabled, get the excerpt defined after front-matter\n const idx = file.content.indexOf(delimiter);\n if (idx !== -1) {\n file.excerpt = file.content.slice(0, idx);\n }\n\n return file;\n};\n","'use strict';\n\nconst typeOf = require('kind-of');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\n/**\n * Normalize the given value to ensure an object is returned\n * with the expected properties.\n */\n\nmodule.exports = function(file) {\n if (typeOf(file) !== 'object') {\n file = { content: file };\n }\n\n if (typeOf(file.data) !== 'object') {\n file.data = {};\n }\n\n // if file was passed as an object, ensure that\n // \"file.content\" is set\n if (file.contents && file.content == null) {\n file.content = file.contents;\n }\n\n // set non-enumerable properties on the file object\n utils.define(file, 'orig', utils.toBuffer(file.content));\n utils.define(file, 'language', file.language || '');\n utils.define(file, 'matter', file.matter || '');\n utils.define(file, 'stringify', function(data, options) {\n if (options && options.language) {\n file.language = options.language;\n }\n return stringify(file, data, options);\n });\n\n // strip BOM and ensure that \"file.content\" is a string\n file.content = utils.toString(file.content);\n file.isEmpty = false;\n file.excerpt = '';\n return file;\n};\n","'use strict';\n\nconst getEngine = require('./engine');\nconst defaults = require('./defaults');\n\nmodule.exports = function(language, str, options) {\n const opts = defaults(options);\n const engine = getEngine(language, opts);\n if (typeof engine.parse !== 'function') {\n throw new TypeError('expected \"' + language + '.parse\" to be a function');\n }\n return engine.parse(str, opts);\n};\n","'use strict';\n\nconst fs = require('fs');\nconst sections = require('section-matter');\nconst defaults = require('./lib/defaults');\nconst stringify = require('./lib/stringify');\nconst excerpt = require('./lib/excerpt');\nconst engines = require('./lib/engines');\nconst toFile = require('./lib/to-file');\nconst parse = require('./lib/parse');\nconst utils = require('./lib/utils');\n\n/**\n * Takes a string or object with `content` property, extracts\n * and parses front-matter from the string, then returns an object\n * with `data`, `content` and other [useful properties](#returned-object).\n *\n * ```js\n * const matter = require('gray-matter');\n * console.log(matter('---\\ntitle: Home\\n---\\nOther stuff'));\n * //=> { data: { title: 'Home'}, content: 'Other stuff' }\n * ```\n * @param {Object|String} `input` String, or object with `content` string\n * @param {Object} `options`\n * @return {Object}\n * @api public\n */\n\nfunction matter(input, options) {\n if (input === '') {\n return { data: {}, content: input, excerpt: '', orig: input };\n }\n\n let file = toFile(input);\n const cached = matter.cache[file.content];\n\n if (!options) {\n if (cached) {\n file = Object.assign({}, cached);\n file.orig = cached.orig;\n return file;\n }\n\n // only cache if there are no options passed. if we cache when options\n // are passed, we would need to also cache options values, which would\n // negate any performance benefits of caching\n matter.cache[file.content] = file;\n }\n\n return parseMatter(file, options);\n}\n\n/**\n * Parse front matter\n */\n\nfunction parseMatter(file, options) {\n const opts = defaults(options);\n const open = opts.delimiters[0];\n const close = '\\n' + opts.delimiters[1];\n let str = file.content;\n\n if (opts.language) {\n file.language = opts.language;\n }\n\n // get the length of the opening delimiter\n const openLen = open.length;\n if (!utils.startsWith(str, open, openLen)) {\n excerpt(file, opts);\n return file;\n }\n\n // if the next character after the opening delimiter is\n // a character from the delimiter, then it's not a front-\n // matter delimiter\n if (str.charAt(openLen) === open.slice(-1)) {\n return file;\n }\n\n // strip the opening delimiter\n str = str.slice(openLen);\n const len = str.length;\n\n // use the language defined after first delimiter, if it exists\n const language = matter.language(str, opts);\n if (language.name) {\n file.language = language.name;\n str = str.slice(language.raw.length);\n }\n\n // get the index of the closing delimiter\n let closeIndex = str.indexOf(close);\n if (closeIndex === -1) {\n closeIndex = len;\n }\n\n // get the raw front-matter block\n file.matter = str.slice(0, closeIndex);\n\n const block = file.matter.replace(/^\\s*#[^\\n]+/gm, '').trim();\n if (block === '') {\n file.isEmpty = true;\n file.empty = file.content;\n file.data = {};\n } else {\n\n // create file.data by parsing the raw file.matter block\n file.data = parse(file.language, file.matter, opts);\n }\n\n // update file.content\n if (closeIndex === len) {\n file.content = '';\n } else {\n file.content = str.slice(closeIndex + close.length);\n if (file.content[0] === '\\r') {\n file.content = file.content.slice(1);\n }\n if (file.content[0] === '\\n') {\n file.content = file.content.slice(1);\n }\n }\n\n excerpt(file, opts);\n\n if (opts.sections === true || typeof opts.section === 'function') {\n sections(file, opts.section);\n }\n return file;\n}\n\n/**\n * Expose engines\n */\n\nmatter.engines = engines;\n\n/**\n * Stringify an object to YAML or the specified language, and\n * append it to the given string. By default, only YAML and JSON\n * can be stringified. See the [engines](#engines) section to learn\n * how to stringify other languages.\n *\n * ```js\n * console.log(matter.stringify('foo bar baz', {title: 'Home'}));\n * // results in:\n * // ---\n * // title: Home\n * // ---\n * // foo bar baz\n * ```\n * @param {String|Object} `file` The content string to append to stringified front-matter, or a file object with `file.content` string.\n * @param {Object} `data` Front matter to stringify.\n * @param {Object} `options` [Options](#options) to pass to gray-matter and [js-yaml].\n * @return {String} Returns a string created by wrapping stringified yaml with delimiters, and appending that to the given string.\n * @api public\n */\n\nmatter.stringify = function(file, data, options) {\n if (typeof file === 'string') file = matter(file, options);\n return stringify(file, data, options);\n};\n\n/**\n * Synchronously read a file from the file system and parse\n * front matter. Returns the same object as the [main function](#matter).\n *\n * ```js\n * const file = matter.read('./content/blog-post.md');\n * ```\n * @param {String} `filepath` file path of the file to read.\n * @param {Object} `options` [Options](#options) to pass to gray-matter.\n * @return {Object} Returns [an object](#returned-object) with `data` and `content`\n * @api public\n */\n\nmatter.read = function(filepath, options) {\n const str = fs.readFileSync(filepath, 'utf8');\n const file = matter(str, options);\n file.path = filepath;\n return file;\n};\n\n/**\n * Returns true if the given `string` has front matter.\n * @param {String} `string`\n * @param {Object} `options`\n * @return {Boolean} True if front matter exists.\n * @api public\n */\n\nmatter.test = function(str, options) {\n return utils.startsWith(str, defaults(options).delimiters[0]);\n};\n\n/**\n * Detect the language to use, if one is defined after the\n * first front-matter delimiter.\n * @param {String} `string`\n * @param {Object} `options`\n * @return {Object} Object with `raw` (actual language string), and `name`, the language with whitespace trimmed\n */\n\nmatter.language = function(str, options) {\n const opts = defaults(options);\n const open = opts.delimiters[0];\n\n if (matter.test(str)) {\n str = str.slice(open.length);\n }\n\n const language = str.slice(0, str.search(/\\r?\\n/));\n return {\n raw: language,\n name: language ? language.trim() : ''\n };\n};\n\n/**\n * Expose `matter`\n */\n\nmatter.cache = {};\nmatter.clearCache = function() {\n matter.cache = {};\n};\nmodule.exports = matter;\n","import \"./_dnt.polyfills.js\";\nimport { normalizeFilePath } from \"@gaubee/node\";\nimport matter from \"gray-matter\";\nimport fs from \"node:fs\";\nexport { matter };\n/**\n * read markdown file\n */\nexport const readMarkdown = (path, options) => {\n return matter(fs.readFileSync(normalizeFilePath(path), options?.encoding));\n};\n/**\n * write markdown file\n */\nexport const writeMarkdown = (path, content, data, options) => {\n fs.writeFileSync(normalizeFilePath(path), data ? matter.stringify(content, data, options) : content, options?.encoding);\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs_1 = require(\"fs\");\nconst debug_1 = __importDefault(require(\"debug\"));\nconst log = debug_1.default('@kwsites/file-exists');\nfunction check(path, isFile, isDirectory) {\n log(`checking %s`, path);\n try {\n const stat = fs_1.statSync(path);\n if (stat.isFile() && isFile) {\n log(`[OK] path represents a file`);\n return true;\n }\n if (stat.isDirectory() && isDirectory) {\n log(`[OK] path represents a directory`);\n return true;\n }\n log(`[FAIL] path represents something other than a file or directory`);\n return false;\n }\n catch (e) {\n if (e.code === 'ENOENT') {\n log(`[FAIL] path is not accessible: %o`, e);\n return false;\n }\n log(`[FATAL] %o`, e);\n throw e;\n }\n}\n/**\n * Synchronous validation of a path existing either as a file or as a directory.\n *\n * @param {string} path The path to check\n * @param {number} type One or both of the exported numeric constants\n */\nfunction exists(path, type = exports.READABLE) {\n return check(path, (type & exports.FILE) > 0, (type & exports.FOLDER) > 0);\n}\nexports.exists = exists;\n/**\n * Constant representing a file\n */\nexports.FILE = 1;\n/**\n * Constant representing a folder\n */\nexports.FOLDER = 2;\n/**\n * Constant representing either a file or a folder\n */\nexports.READABLE = exports.FILE + exports.FOLDER;\n//# sourceMappingURL=index.js.map","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./src\"));\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDeferred = exports.deferred = void 0;\n/**\n * Creates a new `DeferredPromise`\n *\n * ```typescript\n import {deferred} from '@kwsites/promise-deferred`;\n ```\n */\nfunction deferred() {\n let done;\n let fail;\n let status = 'pending';\n const promise = new Promise((_done, _fail) => {\n done = _done;\n fail = _fail;\n });\n return {\n promise,\n done(result) {\n if (status === 'pending') {\n status = 'resolved';\n done(result);\n }\n },\n fail(error) {\n if (status === 'pending') {\n status = 'rejected';\n fail(error);\n }\n },\n get fulfilled() {\n return status !== 'pending';\n },\n get status() {\n return status;\n },\n };\n}\nexports.deferred = deferred;\n/**\n * Alias of the exported `deferred` function, to help consumers wanting to use `deferred` as the\n * local variable name rather than the factory import name, without needing to rename on import.\n *\n * ```typescript\n import {createDeferred} from '@kwsites/promise-deferred`;\n ```\n */\nexports.createDeferred = deferred;\n/**\n * Default export allows use as:\n *\n * ```typescript\n import deferred from '@kwsites/promise-deferred`;\n ```\n */\nexports.default = deferred;\n//# sourceMappingURL=index.js.map","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/lib/args/pathspec.ts\nfunction pathspec(...paths) {\n const key = new String(paths);\n cache.set(key, paths);\n return key;\n}\nfunction isPathSpec(path) {\n return path instanceof String && cache.has(path);\n}\nfunction toPaths(pathSpec) {\n return cache.get(pathSpec) || [];\n}\nvar cache;\nvar init_pathspec = __esm({\n \"src/lib/args/pathspec.ts\"() {\n \"use strict\";\n cache = /* @__PURE__ */ new WeakMap();\n }\n});\n\n// src/lib/errors/git-error.ts\nvar GitError;\nvar init_git_error = __esm({\n \"src/lib/errors/git-error.ts\"() {\n \"use strict\";\n GitError = class extends Error {\n constructor(task, message) {\n super(message);\n this.task = task;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n };\n }\n});\n\n// src/lib/errors/git-response-error.ts\nvar GitResponseError;\nvar init_git_response_error = __esm({\n \"src/lib/errors/git-response-error.ts\"() {\n \"use strict\";\n init_git_error();\n GitResponseError = class extends GitError {\n constructor(git, message) {\n super(void 0, message || String(git));\n this.git = git;\n }\n };\n }\n});\n\n// src/lib/errors/task-configuration-error.ts\nvar TaskConfigurationError;\nvar init_task_configuration_error = __esm({\n \"src/lib/errors/task-configuration-error.ts\"() {\n \"use strict\";\n init_git_error();\n TaskConfigurationError = class extends GitError {\n constructor(message) {\n super(void 0, message);\n }\n };\n }\n});\n\n// src/lib/utils/util.ts\nimport { Buffer as Buffer2 } from \"node:buffer\";\nimport { exists, FOLDER } from \"@kwsites/file-exists\";\nfunction asFunction(source) {\n if (typeof source !== \"function\") {\n return NOOP;\n }\n return source;\n}\nfunction isUserFunction(source) {\n return typeof source === \"function\" && source !== NOOP;\n}\nfunction splitOn(input, char) {\n const index = input.indexOf(char);\n if (index <= 0) {\n return [input, \"\"];\n }\n return [input.substr(0, index), input.substr(index + 1)];\n}\nfunction first(input, offset = 0) {\n return isArrayLike(input) && input.length > offset ? input[offset] : void 0;\n}\nfunction last(input, offset = 0) {\n if (isArrayLike(input) && input.length > offset) {\n return input[input.length - 1 - offset];\n }\n}\nfunction isArrayLike(input) {\n return !!(input && typeof input.length === \"number\");\n}\nfunction toLinesWithContent(input = \"\", trimmed2 = true, separator = \"\\n\") {\n return input.split(separator).reduce((output, line) => {\n const lineContent = trimmed2 ? line.trim() : line;\n if (lineContent) {\n output.push(lineContent);\n }\n return output;\n }, []);\n}\nfunction forEachLineWithContent(input, callback) {\n return toLinesWithContent(input, true).map((line) => callback(line));\n}\nfunction folderExists(path) {\n return exists(path, FOLDER);\n}\nfunction append(target, item) {\n if (Array.isArray(target)) {\n if (!target.includes(item)) {\n target.push(item);\n }\n } else {\n target.add(item);\n }\n return item;\n}\nfunction including(target, item) {\n if (Array.isArray(target) && !target.includes(item)) {\n target.push(item);\n }\n return target;\n}\nfunction remove(target, item) {\n if (Array.isArray(target)) {\n const index = target.indexOf(item);\n if (index >= 0) {\n target.splice(index, 1);\n }\n } else {\n target.delete(item);\n }\n return item;\n}\nfunction asArray(source) {\n return Array.isArray(source) ? source : [source];\n}\nfunction asCamelCase(str) {\n return str.replace(/[\\s-]+(.)/g, (_all, chr) => {\n return chr.toUpperCase();\n });\n}\nfunction asStringArray(source) {\n return asArray(source).map(String);\n}\nfunction asNumber(source, onNaN = 0) {\n if (source == null) {\n return onNaN;\n }\n const num = parseInt(source, 10);\n return isNaN(num) ? onNaN : num;\n}\nfunction prefixedArray(input, prefix) {\n const output = [];\n for (let i = 0, max = input.length; i < max; i++) {\n output.push(prefix, input[i]);\n }\n return output;\n}\nfunction bufferToString(input) {\n return (Array.isArray(input) ? Buffer2.concat(input) : input).toString(\"utf-8\");\n}\nfunction pick(source, properties) {\n return Object.assign(\n {},\n ...properties.map((property) => property in source ? { [property]: source[property] } : {})\n );\n}\nfunction delay(duration = 0) {\n return new Promise((done) => setTimeout(done, duration));\n}\nfunction orVoid(input) {\n if (input === false) {\n return void 0;\n }\n return input;\n}\nvar NULL, NOOP, objectToString;\nvar init_util = __esm({\n \"src/lib/utils/util.ts\"() {\n \"use strict\";\n NULL = \"\\0\";\n NOOP = () => {\n };\n objectToString = Object.prototype.toString.call.bind(Object.prototype.toString);\n }\n});\n\n// src/lib/utils/argument-filters.ts\nfunction filterType(input, filter, def) {\n if (filter(input)) {\n return input;\n }\n return arguments.length > 2 ? def : void 0;\n}\nfunction filterPrimitives(input, omit) {\n const type = isPathSpec(input) ? \"string\" : typeof input;\n return /number|string|boolean/.test(type) && (!omit || !omit.includes(type));\n}\nfunction filterPlainObject(input) {\n return !!input && objectToString(input) === \"[object Object]\";\n}\nfunction filterFunction(input) {\n return typeof input === \"function\";\n}\nvar filterArray, filterString, filterStringArray, filterStringOrStringArray, filterHasLength;\nvar init_argument_filters = __esm({\n \"src/lib/utils/argument-filters.ts\"() {\n \"use strict\";\n init_util();\n init_pathspec();\n filterArray = (input) => {\n return Array.isArray(input);\n };\n filterString = (input) => {\n return typeof input === \"string\";\n };\n filterStringArray = (input) => {\n return Array.isArray(input) && input.every(filterString);\n };\n filterStringOrStringArray = (input) => {\n return filterString(input) || Array.isArray(input) && input.every(filterString);\n };\n filterHasLength = (input) => {\n if (input == null || \"number|boolean|function\".includes(typeof input)) {\n return false;\n }\n return Array.isArray(input) || typeof input === \"string\" || typeof input.length === \"number\";\n };\n }\n});\n\n// src/lib/utils/exit-codes.ts\nvar ExitCodes;\nvar init_exit_codes = __esm({\n \"src/lib/utils/exit-codes.ts\"() {\n \"use strict\";\n ExitCodes = /* @__PURE__ */ ((ExitCodes2) => {\n ExitCodes2[ExitCodes2[\"SUCCESS\"] = 0] = \"SUCCESS\";\n ExitCodes2[ExitCodes2[\"ERROR\"] = 1] = \"ERROR\";\n ExitCodes2[ExitCodes2[\"NOT_FOUND\"] = -2] = \"NOT_FOUND\";\n ExitCodes2[ExitCodes2[\"UNCLEAN\"] = 128] = \"UNCLEAN\";\n return ExitCodes2;\n })(ExitCodes || {});\n }\n});\n\n// src/lib/utils/git-output-streams.ts\nvar GitOutputStreams;\nvar init_git_output_streams = __esm({\n \"src/lib/utils/git-output-streams.ts\"() {\n \"use strict\";\n GitOutputStreams = class _GitOutputStreams {\n constructor(stdOut, stdErr) {\n this.stdOut = stdOut;\n this.stdErr = stdErr;\n }\n asStrings() {\n return new _GitOutputStreams(this.stdOut.toString(\"utf8\"), this.stdErr.toString(\"utf8\"));\n }\n };\n }\n});\n\n// src/lib/utils/line-parser.ts\nvar LineParser, RemoteLineParser;\nvar init_line_parser = __esm({\n \"src/lib/utils/line-parser.ts\"() {\n \"use strict\";\n LineParser = class {\n constructor(regExp, useMatches) {\n this.matches = [];\n this.parse = (line, target) => {\n this.resetMatches();\n if (!this._regExp.every((reg, index) => this.addMatch(reg, index, line(index)))) {\n return false;\n }\n return this.useMatches(target, this.prepareMatches()) !== false;\n };\n this._regExp = Array.isArray(regExp) ? regExp : [regExp];\n if (useMatches) {\n this.useMatches = useMatches;\n }\n }\n // @ts-ignore\n useMatches(target, match) {\n throw new Error(`LineParser:useMatches not implemented`);\n }\n resetMatches() {\n this.matches.length = 0;\n }\n prepareMatches() {\n return this.matches;\n }\n addMatch(reg, index, line) {\n const matched = line && reg.exec(line);\n if (matched) {\n this.pushMatch(index, matched);\n }\n return !!matched;\n }\n pushMatch(_index, matched) {\n this.matches.push(...matched.slice(1));\n }\n };\n RemoteLineParser = class extends LineParser {\n addMatch(reg, index, line) {\n return /^remote:\\s/.test(String(line)) && super.addMatch(reg, index, line);\n }\n pushMatch(index, matched) {\n if (index > 0 || matched.length > 1) {\n super.pushMatch(index, matched);\n }\n }\n };\n }\n});\n\n// src/lib/utils/simple-git-options.ts\nfunction createInstanceConfig(...options) {\n const baseDir = process.cwd();\n const config = Object.assign(\n { baseDir, ...defaultOptions },\n ...options.filter((o) => typeof o === \"object\" && o)\n );\n config.baseDir = config.baseDir || baseDir;\n config.trimmed = config.trimmed === true;\n return config;\n}\nvar defaultOptions;\nvar init_simple_git_options = __esm({\n \"src/lib/utils/simple-git-options.ts\"() {\n \"use strict\";\n defaultOptions = {\n binary: \"git\",\n maxConcurrentProcesses: 5,\n config: [],\n trimmed: false\n };\n }\n});\n\n// src/lib/utils/task-options.ts\nfunction appendTaskOptions(options, commands = []) {\n if (!filterPlainObject(options)) {\n return commands;\n }\n return Object.keys(options).reduce((commands2, key) => {\n const value = options[key];\n if (isPathSpec(value)) {\n commands2.push(value);\n } else if (filterPrimitives(value, [\"boolean\"])) {\n commands2.push(key + \"=\" + value);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n if (!filterPrimitives(v, [\"string\", \"number\"])) {\n commands2.push(key + \"=\" + v);\n }\n }\n } else {\n commands2.push(key);\n }\n return commands2;\n }, commands);\n}\nfunction getTrailingOptions(args, initialPrimitive = 0, objectOnly = false) {\n const command = [];\n for (let i = 0, max = initialPrimitive < 0 ? args.length : initialPrimitive; i < max; i++) {\n if (\"string|number\".includes(typeof args[i])) {\n command.push(String(args[i]));\n }\n }\n appendTaskOptions(trailingOptionsArgument(args), command);\n if (!objectOnly) {\n command.push(...trailingArrayArgument(args));\n }\n return command;\n}\nfunction trailingArrayArgument(args) {\n const hasTrailingCallback = typeof last(args) === \"function\";\n return filterType(last(args, hasTrailingCallback ? 1 : 0), filterArray, []);\n}\nfunction trailingOptionsArgument(args) {\n const hasTrailingCallback = filterFunction(last(args));\n return filterType(last(args, hasTrailingCallback ? 1 : 0), filterPlainObject);\n}\nfunction trailingFunctionArgument(args, includeNoop = true) {\n const callback = asFunction(last(args));\n return includeNoop || isUserFunction(callback) ? callback : void 0;\n}\nvar init_task_options = __esm({\n \"src/lib/utils/task-options.ts\"() {\n \"use strict\";\n init_argument_filters();\n init_util();\n init_pathspec();\n }\n});\n\n// src/lib/utils/task-parser.ts\nfunction callTaskParser(parser4, streams) {\n return parser4(streams.stdOut, streams.stdErr);\n}\nfunction parseStringResponse(result, parsers12, texts, trim = true) {\n asArray(texts).forEach((text) => {\n for (let lines = toLinesWithContent(text, trim), i = 0, max = lines.length; i < max; i++) {\n const line = (offset = 0) => {\n if (i + offset >= max) {\n return;\n }\n return lines[i + offset];\n };\n parsers12.some(({ parse }) => parse(line, result));\n }\n });\n return result;\n}\nvar init_task_parser = __esm({\n \"src/lib/utils/task-parser.ts\"() {\n \"use strict\";\n init_util();\n }\n});\n\n// src/lib/utils/index.ts\nvar utils_exports = {};\n__export(utils_exports, {\n ExitCodes: () => ExitCodes,\n GitOutputStreams: () => GitOutputStreams,\n LineParser: () => LineParser,\n NOOP: () => NOOP,\n NULL: () => NULL,\n RemoteLineParser: () => RemoteLineParser,\n append: () => append,\n appendTaskOptions: () => appendTaskOptions,\n asArray: () => asArray,\n asCamelCase: () => asCamelCase,\n asFunction: () => asFunction,\n asNumber: () => asNumber,\n asStringArray: () => asStringArray,\n bufferToString: () => bufferToString,\n callTaskParser: () => callTaskParser,\n createInstanceConfig: () => createInstanceConfig,\n delay: () => delay,\n filterArray: () => filterArray,\n filterFunction: () => filterFunction,\n filterHasLength: () => filterHasLength,\n filterPlainObject: () => filterPlainObject,\n filterPrimitives: () => filterPrimitives,\n filterString: () => filterString,\n filterStringArray: () => filterStringArray,\n filterStringOrStringArray: () => filterStringOrStringArray,\n filterType: () => filterType,\n first: () => first,\n folderExists: () => folderExists,\n forEachLineWithContent: () => forEachLineWithContent,\n getTrailingOptions: () => getTrailingOptions,\n including: () => including,\n isUserFunction: () => isUserFunction,\n last: () => last,\n objectToString: () => objectToString,\n orVoid: () => orVoid,\n parseStringResponse: () => parseStringResponse,\n pick: () => pick,\n prefixedArray: () => prefixedArray,\n remove: () => remove,\n splitOn: () => splitOn,\n toLinesWithContent: () => toLinesWithContent,\n trailingFunctionArgument: () => trailingFunctionArgument,\n trailingOptionsArgument: () => trailingOptionsArgument\n});\nvar init_utils = __esm({\n \"src/lib/utils/index.ts\"() {\n \"use strict\";\n init_argument_filters();\n init_exit_codes();\n init_git_output_streams();\n init_line_parser();\n init_simple_git_options();\n init_task_options();\n init_task_parser();\n init_util();\n }\n});\n\n// src/lib/tasks/check-is-repo.ts\nvar check_is_repo_exports = {};\n__export(check_is_repo_exports, {\n CheckRepoActions: () => CheckRepoActions,\n checkIsBareRepoTask: () => checkIsBareRepoTask,\n checkIsRepoRootTask: () => checkIsRepoRootTask,\n checkIsRepoTask: () => checkIsRepoTask\n});\nfunction checkIsRepoTask(action) {\n switch (action) {\n case \"bare\" /* BARE */:\n return checkIsBareRepoTask();\n case \"root\" /* IS_REPO_ROOT */:\n return checkIsRepoRootTask();\n }\n const commands = [\"rev-parse\", \"--is-inside-work-tree\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser\n };\n}\nfunction checkIsRepoRootTask() {\n const commands = [\"rev-parse\", \"--git-dir\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser(path) {\n return /^\\.(git)?$/.test(path.trim());\n }\n };\n}\nfunction checkIsBareRepoTask() {\n const commands = [\"rev-parse\", \"--is-bare-repository\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser\n };\n}\nfunction isNotRepoMessage(error) {\n return /(Not a git repository|Kein Git-Repository)/i.test(String(error));\n}\nvar CheckRepoActions, onError, parser;\nvar init_check_is_repo = __esm({\n \"src/lib/tasks/check-is-repo.ts\"() {\n \"use strict\";\n init_utils();\n CheckRepoActions = /* @__PURE__ */ ((CheckRepoActions2) => {\n CheckRepoActions2[\"BARE\"] = \"bare\";\n CheckRepoActions2[\"IN_TREE\"] = \"tree\";\n CheckRepoActions2[\"IS_REPO_ROOT\"] = \"root\";\n return CheckRepoActions2;\n })(CheckRepoActions || {});\n onError = ({ exitCode }, error, done, fail) => {\n if (exitCode === 128 /* UNCLEAN */ && isNotRepoMessage(error)) {\n return done(Buffer.from(\"false\"));\n }\n fail(error);\n };\n parser = (text) => {\n return text.trim() === \"true\";\n };\n }\n});\n\n// src/lib/responses/CleanSummary.ts\nfunction cleanSummaryParser(dryRun, text) {\n const summary = new CleanResponse(dryRun);\n const regexp = dryRun ? dryRunRemovalRegexp : removalRegexp;\n toLinesWithContent(text).forEach((line) => {\n const removed = line.replace(regexp, \"\");\n summary.paths.push(removed);\n (isFolderRegexp.test(removed) ? summary.folders : summary.files).push(removed);\n });\n return summary;\n}\nvar CleanResponse, removalRegexp, dryRunRemovalRegexp, isFolderRegexp;\nvar init_CleanSummary = __esm({\n \"src/lib/responses/CleanSummary.ts\"() {\n \"use strict\";\n init_utils();\n CleanResponse = class {\n constructor(dryRun) {\n this.dryRun = dryRun;\n this.paths = [];\n this.files = [];\n this.folders = [];\n }\n };\n removalRegexp = /^[a-z]+\\s*/i;\n dryRunRemovalRegexp = /^[a-z]+\\s+[a-z]+\\s*/i;\n isFolderRegexp = /\\/$/;\n }\n});\n\n// src/lib/tasks/task.ts\nvar task_exports = {};\n__export(task_exports, {\n EMPTY_COMMANDS: () => EMPTY_COMMANDS,\n adhocExecTask: () => adhocExecTask,\n configurationErrorTask: () => configurationErrorTask,\n isBufferTask: () => isBufferTask,\n isEmptyTask: () => isEmptyTask,\n straightThroughBufferTask: () => straightThroughBufferTask,\n straightThroughStringTask: () => straightThroughStringTask\n});\nfunction adhocExecTask(parser4) {\n return {\n commands: EMPTY_COMMANDS,\n format: \"empty\",\n parser: parser4\n };\n}\nfunction configurationErrorTask(error) {\n return {\n commands: EMPTY_COMMANDS,\n format: \"empty\",\n parser() {\n throw typeof error === \"string\" ? new TaskConfigurationError(error) : error;\n }\n };\n}\nfunction straightThroughStringTask(commands, trimmed2 = false) {\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return trimmed2 ? String(text).trim() : text;\n }\n };\n}\nfunction straightThroughBufferTask(commands) {\n return {\n commands,\n format: \"buffer\",\n parser(buffer) {\n return buffer;\n }\n };\n}\nfunction isBufferTask(task) {\n return task.format === \"buffer\";\n}\nfunction isEmptyTask(task) {\n return task.format === \"empty\" || !task.commands.length;\n}\nvar EMPTY_COMMANDS;\nvar init_task = __esm({\n \"src/lib/tasks/task.ts\"() {\n \"use strict\";\n init_task_configuration_error();\n EMPTY_COMMANDS = [];\n }\n});\n\n// src/lib/tasks/clean.ts\nvar clean_exports = {};\n__export(clean_exports, {\n CONFIG_ERROR_INTERACTIVE_MODE: () => CONFIG_ERROR_INTERACTIVE_MODE,\n CONFIG_ERROR_MODE_REQUIRED: () => CONFIG_ERROR_MODE_REQUIRED,\n CONFIG_ERROR_UNKNOWN_OPTION: () => CONFIG_ERROR_UNKNOWN_OPTION,\n CleanOptions: () => CleanOptions,\n cleanTask: () => cleanTask,\n cleanWithOptionsTask: () => cleanWithOptionsTask,\n isCleanOptionsArray: () => isCleanOptionsArray\n});\nfunction cleanWithOptionsTask(mode, customArgs) {\n const { cleanMode, options, valid } = getCleanOptions(mode);\n if (!cleanMode) {\n return configurationErrorTask(CONFIG_ERROR_MODE_REQUIRED);\n }\n if (!valid.options) {\n return configurationErrorTask(CONFIG_ERROR_UNKNOWN_OPTION + JSON.stringify(mode));\n }\n options.push(...customArgs);\n if (options.some(isInteractiveMode)) {\n return configurationErrorTask(CONFIG_ERROR_INTERACTIVE_MODE);\n }\n return cleanTask(cleanMode, options);\n}\nfunction cleanTask(mode, customArgs) {\n const commands = [\"clean\", `-${mode}`, ...customArgs];\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return cleanSummaryParser(mode === \"n\" /* DRY_RUN */, text);\n }\n };\n}\nfunction isCleanOptionsArray(input) {\n return Array.isArray(input) && input.every((test) => CleanOptionValues.has(test));\n}\nfunction getCleanOptions(input) {\n let cleanMode;\n let options = [];\n let valid = { cleanMode: false, options: true };\n input.replace(/[^a-z]i/g, \"\").split(\"\").forEach((char) => {\n if (isCleanMode(char)) {\n cleanMode = char;\n valid.cleanMode = true;\n } else {\n valid.options = valid.options && isKnownOption(options[options.length] = `-${char}`);\n }\n });\n return {\n cleanMode,\n options,\n valid\n };\n}\nfunction isCleanMode(cleanMode) {\n return cleanMode === \"f\" /* FORCE */ || cleanMode === \"n\" /* DRY_RUN */;\n}\nfunction isKnownOption(option) {\n return /^-[a-z]$/i.test(option) && CleanOptionValues.has(option.charAt(1));\n}\nfunction isInteractiveMode(option) {\n if (/^-[^\\-]/.test(option)) {\n return option.indexOf(\"i\") > 0;\n }\n return option === \"--interactive\";\n}\nvar CONFIG_ERROR_INTERACTIVE_MODE, CONFIG_ERROR_MODE_REQUIRED, CONFIG_ERROR_UNKNOWN_OPTION, CleanOptions, CleanOptionValues;\nvar init_clean = __esm({\n \"src/lib/tasks/clean.ts\"() {\n \"use strict\";\n init_CleanSummary();\n init_utils();\n init_task();\n CONFIG_ERROR_INTERACTIVE_MODE = \"Git clean interactive mode is not supported\";\n CONFIG_ERROR_MODE_REQUIRED = 'Git clean mode parameter (\"n\" or \"f\") is required';\n CONFIG_ERROR_UNKNOWN_OPTION = \"Git clean unknown option found in: \";\n CleanOptions = /* @__PURE__ */ ((CleanOptions2) => {\n CleanOptions2[\"DRY_RUN\"] = \"n\";\n CleanOptions2[\"FORCE\"] = \"f\";\n CleanOptions2[\"IGNORED_INCLUDED\"] = \"x\";\n CleanOptions2[\"IGNORED_ONLY\"] = \"X\";\n CleanOptions2[\"EXCLUDING\"] = \"e\";\n CleanOptions2[\"QUIET\"] = \"q\";\n CleanOptions2[\"RECURSIVE\"] = \"d\";\n return CleanOptions2;\n })(CleanOptions || {});\n CleanOptionValues = /* @__PURE__ */ new Set([\n \"i\",\n ...asStringArray(Object.values(CleanOptions))\n ]);\n }\n});\n\n// src/lib/responses/ConfigList.ts\nfunction configListParser(text) {\n const config = new ConfigList();\n for (const item of configParser(text)) {\n config.addValue(item.file, String(item.key), item.value);\n }\n return config;\n}\nfunction configGetParser(text, key) {\n let value = null;\n const values = [];\n const scopes = /* @__PURE__ */ new Map();\n for (const item of configParser(text, key)) {\n if (item.key !== key) {\n continue;\n }\n values.push(value = item.value);\n if (!scopes.has(item.file)) {\n scopes.set(item.file, []);\n }\n scopes.get(item.file).push(value);\n }\n return {\n key,\n paths: Array.from(scopes.keys()),\n scopes,\n value,\n values\n };\n}\nfunction configFilePath(filePath) {\n return filePath.replace(/^(file):/, \"\");\n}\nfunction* configParser(text, requestedKey = null) {\n const lines = text.split(\"\\0\");\n for (let i = 0, max = lines.length - 1; i < max; ) {\n const file = configFilePath(lines[i++]);\n let value = lines[i++];\n let key = requestedKey;\n if (value.includes(\"\\n\")) {\n const line = splitOn(value, \"\\n\");\n key = line[0];\n value = line[1];\n }\n yield { file, key, value };\n }\n}\nvar ConfigList;\nvar init_ConfigList = __esm({\n \"src/lib/responses/ConfigList.ts\"() {\n \"use strict\";\n init_utils();\n ConfigList = class {\n constructor() {\n this.files = [];\n this.values = /* @__PURE__ */ Object.create(null);\n }\n get all() {\n if (!this._all) {\n this._all = this.files.reduce((all, file) => {\n return Object.assign(all, this.values[file]);\n }, {});\n }\n return this._all;\n }\n addFile(file) {\n if (!(file in this.values)) {\n const latest = last(this.files);\n this.values[file] = latest ? Object.create(this.values[latest]) : {};\n this.files.push(file);\n }\n return this.values[file];\n }\n addValue(file, key, value) {\n const values = this.addFile(file);\n if (!values.hasOwnProperty(key)) {\n values[key] = value;\n } else if (Array.isArray(values[key])) {\n values[key].push(value);\n } else {\n values[key] = [values[key], value];\n }\n this._all = void 0;\n }\n };\n }\n});\n\n// src/lib/tasks/config.ts\nfunction asConfigScope(scope, fallback) {\n if (typeof scope === \"string\" && GitConfigScope.hasOwnProperty(scope)) {\n return scope;\n }\n return fallback;\n}\nfunction addConfigTask(key, value, append2, scope) {\n const commands = [\"config\", `--${scope}`];\n if (append2) {\n commands.push(\"--add\");\n }\n commands.push(key, value);\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return text;\n }\n };\n}\nfunction getConfigTask(key, scope) {\n const commands = [\"config\", \"--null\", \"--show-origin\", \"--get-all\", key];\n if (scope) {\n commands.splice(1, 0, `--${scope}`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return configGetParser(text, key);\n }\n };\n}\nfunction listConfigTask(scope) {\n const commands = [\"config\", \"--list\", \"--show-origin\", \"--null\"];\n if (scope) {\n commands.push(`--${scope}`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return configListParser(text);\n }\n };\n}\nfunction config_default() {\n return {\n addConfig(key, value, ...rest) {\n return this._runTask(\n addConfigTask(\n key,\n value,\n rest[0] === true,\n asConfigScope(rest[1], \"local\" /* local */)\n ),\n trailingFunctionArgument(arguments)\n );\n },\n getConfig(key, scope) {\n return this._runTask(\n getConfigTask(key, asConfigScope(scope, void 0)),\n trailingFunctionArgument(arguments)\n );\n },\n listConfig(...rest) {\n return this._runTask(\n listConfigTask(asConfigScope(rest[0], void 0)),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar GitConfigScope;\nvar init_config = __esm({\n \"src/lib/tasks/config.ts\"() {\n \"use strict\";\n init_ConfigList();\n init_utils();\n GitConfigScope = /* @__PURE__ */ ((GitConfigScope2) => {\n GitConfigScope2[\"system\"] = \"system\";\n GitConfigScope2[\"global\"] = \"global\";\n GitConfigScope2[\"local\"] = \"local\";\n GitConfigScope2[\"worktree\"] = \"worktree\";\n return GitConfigScope2;\n })(GitConfigScope || {});\n }\n});\n\n// src/lib/tasks/diff-name-status.ts\nfunction isDiffNameStatus(input) {\n return diffNameStatus.has(input);\n}\nvar DiffNameStatus, diffNameStatus;\nvar init_diff_name_status = __esm({\n \"src/lib/tasks/diff-name-status.ts\"() {\n \"use strict\";\n DiffNameStatus = /* @__PURE__ */ ((DiffNameStatus2) => {\n DiffNameStatus2[\"ADDED\"] = \"A\";\n DiffNameStatus2[\"COPIED\"] = \"C\";\n DiffNameStatus2[\"DELETED\"] = \"D\";\n DiffNameStatus2[\"MODIFIED\"] = \"M\";\n DiffNameStatus2[\"RENAMED\"] = \"R\";\n DiffNameStatus2[\"CHANGED\"] = \"T\";\n DiffNameStatus2[\"UNMERGED\"] = \"U\";\n DiffNameStatus2[\"UNKNOWN\"] = \"X\";\n DiffNameStatus2[\"BROKEN\"] = \"B\";\n return DiffNameStatus2;\n })(DiffNameStatus || {});\n diffNameStatus = new Set(Object.values(DiffNameStatus));\n }\n});\n\n// src/lib/tasks/grep.ts\nfunction grepQueryBuilder(...params) {\n return new GrepQuery().param(...params);\n}\nfunction parseGrep(grep) {\n const paths = /* @__PURE__ */ new Set();\n const results = {};\n forEachLineWithContent(grep, (input) => {\n const [path, line, preview] = input.split(NULL);\n paths.add(path);\n (results[path] = results[path] || []).push({\n line: asNumber(line),\n path,\n preview\n });\n });\n return {\n paths,\n results\n };\n}\nfunction grep_default() {\n return {\n grep(searchTerm) {\n const then = trailingFunctionArgument(arguments);\n const options = getTrailingOptions(arguments);\n for (const option of disallowedOptions) {\n if (options.includes(option)) {\n return this._runTask(\n configurationErrorTask(`git.grep: use of \"${option}\" is not supported.`),\n then\n );\n }\n }\n if (typeof searchTerm === \"string\") {\n searchTerm = grepQueryBuilder().param(searchTerm);\n }\n const commands = [\"grep\", \"--null\", \"-n\", \"--full-name\", ...options, ...searchTerm];\n return this._runTask(\n {\n commands,\n format: \"utf-8\",\n parser(stdOut) {\n return parseGrep(stdOut);\n }\n },\n then\n );\n }\n };\n}\nvar disallowedOptions, Query, _a, GrepQuery;\nvar init_grep = __esm({\n \"src/lib/tasks/grep.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n disallowedOptions = [\"-h\"];\n Query = Symbol(\"grepQuery\");\n GrepQuery = class {\n constructor() {\n this[_a] = [];\n }\n *[(_a = Query, Symbol.iterator)]() {\n for (const query of this[Query]) {\n yield query;\n }\n }\n and(...and) {\n and.length && this[Query].push(\"--and\", \"(\", ...prefixedArray(and, \"-e\"), \")\");\n return this;\n }\n param(...param) {\n this[Query].push(...prefixedArray(param, \"-e\"));\n return this;\n }\n };\n }\n});\n\n// src/lib/tasks/reset.ts\nvar reset_exports = {};\n__export(reset_exports, {\n ResetMode: () => ResetMode,\n getResetMode: () => getResetMode,\n resetTask: () => resetTask\n});\nfunction resetTask(mode, customArgs) {\n const commands = [\"reset\"];\n if (isValidResetMode(mode)) {\n commands.push(`--${mode}`);\n }\n commands.push(...customArgs);\n return straightThroughStringTask(commands);\n}\nfunction getResetMode(mode) {\n if (isValidResetMode(mode)) {\n return mode;\n }\n switch (typeof mode) {\n case \"string\":\n case \"undefined\":\n return \"soft\" /* SOFT */;\n }\n return;\n}\nfunction isValidResetMode(mode) {\n return ResetModes.includes(mode);\n}\nvar ResetMode, ResetModes;\nvar init_reset = __esm({\n \"src/lib/tasks/reset.ts\"() {\n \"use strict\";\n init_task();\n ResetMode = /* @__PURE__ */ ((ResetMode2) => {\n ResetMode2[\"MIXED\"] = \"mixed\";\n ResetMode2[\"SOFT\"] = \"soft\";\n ResetMode2[\"HARD\"] = \"hard\";\n ResetMode2[\"MERGE\"] = \"merge\";\n ResetMode2[\"KEEP\"] = \"keep\";\n return ResetMode2;\n })(ResetMode || {});\n ResetModes = Array.from(Object.values(ResetMode));\n }\n});\n\n// src/lib/git-logger.ts\nimport debug from \"debug\";\nfunction createLog() {\n return debug(\"simple-git\");\n}\nfunction prefixedLogger(to, prefix, forward) {\n if (!prefix || !String(prefix).replace(/\\s*/, \"\")) {\n return !forward ? to : (message, ...args) => {\n to(message, ...args);\n forward(message, ...args);\n };\n }\n return (message, ...args) => {\n to(`%s ${message}`, prefix, ...args);\n if (forward) {\n forward(message, ...args);\n }\n };\n}\nfunction childLoggerName(name, childDebugger, { namespace: parentNamespace }) {\n if (typeof name === \"string\") {\n return name;\n }\n const childNamespace = childDebugger && childDebugger.namespace || \"\";\n if (childNamespace.startsWith(parentNamespace)) {\n return childNamespace.substr(parentNamespace.length + 1);\n }\n return childNamespace || parentNamespace;\n}\nfunction createLogger(label, verbose, initialStep, infoDebugger = createLog()) {\n const labelPrefix = label && `[${label}]` || \"\";\n const spawned = [];\n const debugDebugger = typeof verbose === \"string\" ? infoDebugger.extend(verbose) : verbose;\n const key = childLoggerName(filterType(verbose, filterString), debugDebugger, infoDebugger);\n return step(initialStep);\n function sibling(name, initial) {\n return append(\n spawned,\n createLogger(label, key.replace(/^[^:]+/, name), initial, infoDebugger)\n );\n }\n function step(phase) {\n const stepPrefix = phase && `[${phase}]` || \"\";\n const debug2 = debugDebugger && prefixedLogger(debugDebugger, stepPrefix) || NOOP;\n const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug2);\n return Object.assign(debugDebugger ? debug2 : info, {\n label,\n sibling,\n info,\n step\n });\n }\n}\nvar init_git_logger = __esm({\n \"src/lib/git-logger.ts\"() {\n \"use strict\";\n init_utils();\n debug.formatters.L = (value) => String(filterHasLength(value) ? value.length : \"-\");\n debug.formatters.B = (value) => {\n if (Buffer.isBuffer(value)) {\n return value.toString(\"utf8\");\n }\n return objectToString(value);\n };\n }\n});\n\n// src/lib/runners/tasks-pending-queue.ts\nvar TasksPendingQueue;\nvar init_tasks_pending_queue = __esm({\n \"src/lib/runners/tasks-pending-queue.ts\"() {\n \"use strict\";\n init_git_error();\n init_git_logger();\n TasksPendingQueue = class _TasksPendingQueue {\n constructor(logLabel = \"GitExecutor\") {\n this.logLabel = logLabel;\n this._queue = /* @__PURE__ */ new Map();\n }\n withProgress(task) {\n return this._queue.get(task);\n }\n createProgress(task) {\n const name = _TasksPendingQueue.getName(task.commands[0]);\n const logger = createLogger(this.logLabel, name);\n return {\n task,\n logger,\n name\n };\n }\n push(task) {\n const progress = this.createProgress(task);\n progress.logger(\"Adding task to the queue, commands = %o\", task.commands);\n this._queue.set(task, progress);\n return progress;\n }\n fatal(err) {\n for (const [task, { logger }] of Array.from(this._queue.entries())) {\n if (task === err.task) {\n logger.info(`Failed %o`, err);\n logger(\n `Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`\n );\n } else {\n logger.info(\n `A fatal exception occurred in a previous task, the queue has been purged: %o`,\n err.message\n );\n }\n this.complete(task);\n }\n if (this._queue.size !== 0) {\n throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`);\n }\n }\n complete(task) {\n const progress = this.withProgress(task);\n if (progress) {\n this._queue.delete(task);\n }\n }\n attempt(task) {\n const progress = this.withProgress(task);\n if (!progress) {\n throw new GitError(void 0, \"TasksPendingQueue: attempt called for an unknown task\");\n }\n progress.logger(\"Starting task\");\n return progress;\n }\n static getName(name = \"empty\") {\n return `task:${name}:${++_TasksPendingQueue.counter}`;\n }\n static {\n this.counter = 0;\n }\n };\n }\n});\n\n// src/lib/runners/git-executor-chain.ts\nimport { spawn } from \"child_process\";\nfunction pluginContext(task, commands) {\n return {\n method: first(task.commands) || \"\",\n commands\n };\n}\nfunction onErrorReceived(target, logger) {\n return (err) => {\n logger(`[ERROR] child process exception %o`, err);\n target.push(Buffer.from(String(err.stack), \"ascii\"));\n };\n}\nfunction onDataReceived(target, name, logger, output) {\n return (buffer) => {\n logger(`%s received %L bytes`, name, buffer);\n output(`%B`, buffer);\n target.push(buffer);\n };\n}\nvar GitExecutorChain;\nvar init_git_executor_chain = __esm({\n \"src/lib/runners/git-executor-chain.ts\"() {\n \"use strict\";\n init_git_error();\n init_task();\n init_utils();\n init_tasks_pending_queue();\n GitExecutorChain = class {\n constructor(_executor, _scheduler, _plugins) {\n this._executor = _executor;\n this._scheduler = _scheduler;\n this._plugins = _plugins;\n this._chain = Promise.resolve();\n this._queue = new TasksPendingQueue();\n }\n get cwd() {\n return this._cwd || this._executor.cwd;\n }\n set cwd(cwd) {\n this._cwd = cwd;\n }\n get env() {\n return this._executor.env;\n }\n get outputHandler() {\n return this._executor.outputHandler;\n }\n chain() {\n return this;\n }\n push(task) {\n this._queue.push(task);\n return this._chain = this._chain.then(() => this.attemptTask(task));\n }\n async attemptTask(task) {\n const onScheduleComplete = await this._scheduler.next();\n const onQueueComplete = () => this._queue.complete(task);\n try {\n const { logger } = this._queue.attempt(task);\n return await (isEmptyTask(task) ? this.attemptEmptyTask(task, logger) : this.attemptRemoteTask(task, logger));\n } catch (e) {\n throw this.onFatalException(task, e);\n } finally {\n onQueueComplete();\n onScheduleComplete();\n }\n }\n onFatalException(task, e) {\n const gitError = e instanceof GitError ? Object.assign(e, { task }) : new GitError(task, e && String(e));\n this._chain = Promise.resolve();\n this._queue.fatal(gitError);\n return gitError;\n }\n async attemptRemoteTask(task, logger) {\n const binary = this._plugins.exec(\"spawn.binary\", \"\", pluginContext(task, task.commands));\n const args = this._plugins.exec(\n \"spawn.args\",\n [...task.commands],\n pluginContext(task, task.commands)\n );\n const raw = await this.gitResponse(\n task,\n binary,\n args,\n this.outputHandler,\n logger.step(\"SPAWN\")\n );\n const outputStreams = await this.handleTaskData(task, args, raw, logger.step(\"HANDLE\"));\n logger(`passing response to task's parser as a %s`, task.format);\n if (isBufferTask(task)) {\n return callTaskParser(task.parser, outputStreams);\n }\n return callTaskParser(task.parser, outputStreams.asStrings());\n }\n async attemptEmptyTask(task, logger) {\n logger(`empty task bypassing child process to call to task's parser`);\n return task.parser(this);\n }\n handleTaskData(task, args, result, logger) {\n const { exitCode, rejection, stdOut, stdErr } = result;\n return new Promise((done, fail) => {\n logger(`Preparing to handle process response exitCode=%d stdOut=`, exitCode);\n const { error } = this._plugins.exec(\n \"task.error\",\n { error: rejection },\n {\n ...pluginContext(task, args),\n ...result\n }\n );\n if (error && task.onError) {\n logger.info(`exitCode=%s handling with custom error handler`);\n return task.onError(\n result,\n error,\n (newStdOut) => {\n logger.info(`custom error handler treated as success`);\n logger(`custom error returned a %s`, objectToString(newStdOut));\n done(\n new GitOutputStreams(\n Array.isArray(newStdOut) ? Buffer.concat(newStdOut) : newStdOut,\n Buffer.concat(stdErr)\n )\n );\n },\n fail\n );\n }\n if (error) {\n logger.info(\n `handling as error: exitCode=%s stdErr=%s rejection=%o`,\n exitCode,\n stdErr.length,\n rejection\n );\n return fail(error);\n }\n logger.info(`retrieving task output complete`);\n done(new GitOutputStreams(Buffer.concat(stdOut), Buffer.concat(stdErr)));\n });\n }\n async gitResponse(task, command, args, outputHandler, logger) {\n const outputLogger = logger.sibling(\"output\");\n const spawnOptions = this._plugins.exec(\n \"spawn.options\",\n {\n cwd: this.cwd,\n env: this.env,\n windowsHide: true\n },\n pluginContext(task, task.commands)\n );\n return new Promise((done) => {\n const stdOut = [];\n const stdErr = [];\n logger.info(`%s %o`, command, args);\n logger(\"%O\", spawnOptions);\n let rejection = this._beforeSpawn(task, args);\n if (rejection) {\n return done({\n stdOut,\n stdErr,\n exitCode: 9901,\n rejection\n });\n }\n this._plugins.exec(\"spawn.before\", void 0, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n }\n });\n const spawned = spawn(command, args, spawnOptions);\n spawned.stdout.on(\n \"data\",\n onDataReceived(stdOut, \"stdOut\", logger, outputLogger.step(\"stdOut\"))\n );\n spawned.stderr.on(\n \"data\",\n onDataReceived(stdErr, \"stdErr\", logger, outputLogger.step(\"stdErr\"))\n );\n spawned.on(\"error\", onErrorReceived(stdErr, logger));\n if (outputHandler) {\n logger(`Passing child process stdOut/stdErr to custom outputHandler`);\n outputHandler(command, spawned.stdout, spawned.stderr, [...args]);\n }\n this._plugins.exec(\"spawn.after\", void 0, {\n ...pluginContext(task, args),\n spawned,\n close(exitCode, reason) {\n done({\n stdOut,\n stdErr,\n exitCode,\n rejection: rejection || reason\n });\n },\n kill(reason) {\n if (spawned.killed) {\n return;\n }\n rejection = reason;\n spawned.kill(\"SIGINT\");\n }\n });\n });\n }\n _beforeSpawn(task, args) {\n let rejection;\n this._plugins.exec(\"spawn.before\", void 0, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n }\n });\n return rejection;\n }\n };\n }\n});\n\n// src/lib/runners/git-executor.ts\nvar git_executor_exports = {};\n__export(git_executor_exports, {\n GitExecutor: () => GitExecutor\n});\nvar GitExecutor;\nvar init_git_executor = __esm({\n \"src/lib/runners/git-executor.ts\"() {\n \"use strict\";\n init_git_executor_chain();\n GitExecutor = class {\n constructor(cwd, _scheduler, _plugins) {\n this.cwd = cwd;\n this._scheduler = _scheduler;\n this._plugins = _plugins;\n this._chain = new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n chain() {\n return new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n push(task) {\n return this._chain.push(task);\n }\n };\n }\n});\n\n// src/lib/task-callback.ts\nfunction taskCallback(task, response, callback = NOOP) {\n const onSuccess = (data) => {\n callback(null, data);\n };\n const onError2 = (err) => {\n if (err?.task === task) {\n callback(\n err instanceof GitResponseError ? addDeprecationNoticeToError(err) : err,\n void 0\n );\n }\n };\n response.then(onSuccess, onError2);\n}\nfunction addDeprecationNoticeToError(err) {\n let log = (name) => {\n console.warn(\n `simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}, this will no longer be available in version 3`\n );\n log = NOOP;\n };\n return Object.create(err, Object.getOwnPropertyNames(err.git).reduce(descriptorReducer, {}));\n function descriptorReducer(all, name) {\n if (name in err) {\n return all;\n }\n all[name] = {\n enumerable: false,\n configurable: false,\n get() {\n log(name);\n return err.git[name];\n }\n };\n return all;\n }\n}\nvar init_task_callback = __esm({\n \"src/lib/task-callback.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_utils();\n }\n});\n\n// src/lib/tasks/change-working-directory.ts\nfunction changeWorkingDirectoryTask(directory, root) {\n return adhocExecTask((instance) => {\n if (!folderExists(directory)) {\n throw new Error(`Git.cwd: cannot change to non-directory \"${directory}\"`);\n }\n return (root || instance).cwd = directory;\n });\n}\nvar init_change_working_directory = __esm({\n \"src/lib/tasks/change-working-directory.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/checkout.ts\nfunction checkoutTask(args) {\n const commands = [\"checkout\", ...args];\n if (commands[1] === \"-b\" && commands.includes(\"-B\")) {\n commands[1] = remove(commands, \"-B\");\n }\n return straightThroughStringTask(commands);\n}\nfunction checkout_default() {\n return {\n checkout() {\n return this._runTask(\n checkoutTask(getTrailingOptions(arguments, 1)),\n trailingFunctionArgument(arguments)\n );\n },\n checkoutBranch(branchName, startPoint) {\n return this._runTask(\n checkoutTask([\"-b\", branchName, startPoint, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n },\n checkoutLocalBranch(branchName) {\n return this._runTask(\n checkoutTask([\"-b\", branchName, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_checkout = __esm({\n \"src/lib/tasks/checkout.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/count-objects.ts\nfunction countObjectsResponse() {\n return {\n count: 0,\n garbage: 0,\n inPack: 0,\n packs: 0,\n prunePackable: 0,\n size: 0,\n sizeGarbage: 0,\n sizePack: 0\n };\n}\nfunction count_objects_default() {\n return {\n countObjects() {\n return this._runTask({\n commands: [\"count-objects\", \"--verbose\"],\n format: \"utf-8\",\n parser(stdOut) {\n return parseStringResponse(countObjectsResponse(), [parser2], stdOut);\n }\n });\n }\n };\n}\nvar parser2;\nvar init_count_objects = __esm({\n \"src/lib/tasks/count-objects.ts\"() {\n \"use strict\";\n init_utils();\n parser2 = new LineParser(\n /([a-z-]+): (\\d+)$/,\n (result, [key, value]) => {\n const property = asCamelCase(key);\n if (result.hasOwnProperty(property)) {\n result[property] = asNumber(value);\n }\n }\n );\n }\n});\n\n// src/lib/parsers/parse-commit.ts\nfunction parseCommitResult(stdOut) {\n const result = {\n author: null,\n branch: \"\",\n commit: \"\",\n root: false,\n summary: {\n changes: 0,\n insertions: 0,\n deletions: 0\n }\n };\n return parseStringResponse(result, parsers, stdOut);\n}\nvar parsers;\nvar init_parse_commit = __esm({\n \"src/lib/parsers/parse-commit.ts\"() {\n \"use strict\";\n init_utils();\n parsers = [\n new LineParser(/^\\[([^\\s]+)( \\([^)]+\\))? ([^\\]]+)/, (result, [branch, root, commit]) => {\n result.branch = branch;\n result.commit = commit;\n result.root = !!root;\n }),\n new LineParser(/\\s*Author:\\s(.+)/i, (result, [author]) => {\n const parts = author.split(\"<\");\n const email = parts.pop();\n if (!email || !email.includes(\"@\")) {\n return;\n }\n result.author = {\n email: email.substr(0, email.length - 1),\n name: parts.join(\"<\").trim()\n };\n }),\n new LineParser(\n /(\\d+)[^,]*(?:,\\s*(\\d+)[^,]*)(?:,\\s*(\\d+))/g,\n (result, [changes, insertions, deletions]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n result.summary.insertions = parseInt(insertions, 10) || 0;\n result.summary.deletions = parseInt(deletions, 10) || 0;\n }\n ),\n new LineParser(\n /^(\\d+)[^,]*(?:,\\s*(\\d+)[^(]+\\(([+-]))?/,\n (result, [changes, lines, direction]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n const count = parseInt(lines, 10) || 0;\n if (direction === \"-\") {\n result.summary.deletions = count;\n } else if (direction === \"+\") {\n result.summary.insertions = count;\n }\n }\n )\n ];\n }\n});\n\n// src/lib/tasks/commit.ts\nfunction commitTask(message, files, customArgs) {\n const commands = [\n \"-c\",\n \"core.abbrev=40\",\n \"commit\",\n ...prefixedArray(message, \"-m\"),\n ...files,\n ...customArgs\n ];\n return {\n commands,\n format: \"utf-8\",\n parser: parseCommitResult\n };\n}\nfunction commit_default() {\n return {\n commit(message, ...rest) {\n const next = trailingFunctionArgument(arguments);\n const task = rejectDeprecatedSignatures(message) || commitTask(\n asArray(message),\n asArray(filterType(rest[0], filterStringOrStringArray, [])),\n [...filterType(rest[1], filterArray, []), ...getTrailingOptions(arguments, 0, true)]\n );\n return this._runTask(task, next);\n }\n };\n function rejectDeprecatedSignatures(message) {\n return !filterStringOrStringArray(message) && configurationErrorTask(\n `git.commit: requires the commit message to be supplied as a string/string[]`\n );\n }\n}\nvar init_commit = __esm({\n \"src/lib/tasks/commit.ts\"() {\n \"use strict\";\n init_parse_commit();\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/first-commit.ts\nfunction first_commit_default() {\n return {\n firstCommit() {\n return this._runTask(\n straightThroughStringTask([\"rev-list\", \"--max-parents=0\", \"HEAD\"], true),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_first_commit = __esm({\n \"src/lib/tasks/first-commit.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/hash-object.ts\nfunction hashObjectTask(filePath, write) {\n const commands = [\"hash-object\", filePath];\n if (write) {\n commands.push(\"-w\");\n }\n return straightThroughStringTask(commands, true);\n}\nvar init_hash_object = __esm({\n \"src/lib/tasks/hash-object.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/InitSummary.ts\nfunction parseInit(bare, path, text) {\n const response = String(text).trim();\n let result;\n if (result = initResponseRegex.exec(response)) {\n return new InitSummary(bare, path, false, result[1]);\n }\n if (result = reInitResponseRegex.exec(response)) {\n return new InitSummary(bare, path, true, result[1]);\n }\n let gitDir = \"\";\n const tokens = response.split(\" \");\n while (tokens.length) {\n const token = tokens.shift();\n if (token === \"in\") {\n gitDir = tokens.join(\" \");\n break;\n }\n }\n return new InitSummary(bare, path, /^re/i.test(response), gitDir);\n}\nvar InitSummary, initResponseRegex, reInitResponseRegex;\nvar init_InitSummary = __esm({\n \"src/lib/responses/InitSummary.ts\"() {\n \"use strict\";\n InitSummary = class {\n constructor(bare, path, existing, gitDir) {\n this.bare = bare;\n this.path = path;\n this.existing = existing;\n this.gitDir = gitDir;\n }\n };\n initResponseRegex = /^Init.+ repository in (.+)$/;\n reInitResponseRegex = /^Rein.+ in (.+)$/;\n }\n});\n\n// src/lib/tasks/init.ts\nfunction hasBareCommand(command) {\n return command.includes(bareCommand);\n}\nfunction initTask(bare = false, path, customArgs) {\n const commands = [\"init\", ...customArgs];\n if (bare && !hasBareCommand(commands)) {\n commands.splice(1, 0, bareCommand);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return parseInit(commands.includes(\"--bare\"), path, text);\n }\n };\n}\nvar bareCommand;\nvar init_init = __esm({\n \"src/lib/tasks/init.ts\"() {\n \"use strict\";\n init_InitSummary();\n bareCommand = \"--bare\";\n }\n});\n\n// src/lib/args/log-format.ts\nfunction logFormatFromCommand(customArgs) {\n for (let i = 0; i < customArgs.length; i++) {\n const format = logFormatRegex.exec(customArgs[i]);\n if (format) {\n return `--${format[1]}`;\n }\n }\n return \"\" /* NONE */;\n}\nfunction isLogFormat(customArg) {\n return logFormatRegex.test(customArg);\n}\nvar logFormatRegex;\nvar init_log_format = __esm({\n \"src/lib/args/log-format.ts\"() {\n \"use strict\";\n logFormatRegex = /^--(stat|numstat|name-only|name-status)(=|$)/;\n }\n});\n\n// src/lib/responses/DiffSummary.ts\nvar DiffSummary;\nvar init_DiffSummary = __esm({\n \"src/lib/responses/DiffSummary.ts\"() {\n \"use strict\";\n DiffSummary = class {\n constructor() {\n this.changed = 0;\n this.deletions = 0;\n this.insertions = 0;\n this.files = [];\n }\n };\n }\n});\n\n// src/lib/parsers/parse-diff-summary.ts\nfunction getDiffParser(format = \"\" /* NONE */) {\n const parser4 = diffSummaryParsers[format];\n return (stdOut) => parseStringResponse(new DiffSummary(), parser4, stdOut, false);\n}\nvar statParser, numStatParser, nameOnlyParser, nameStatusParser, diffSummaryParsers;\nvar init_parse_diff_summary = __esm({\n \"src/lib/parsers/parse-diff-summary.ts\"() {\n \"use strict\";\n init_log_format();\n init_DiffSummary();\n init_diff_name_status();\n init_utils();\n statParser = [\n new LineParser(\n /^(.+)\\s+\\|\\s+(\\d+)(\\s+[+\\-]+)?$/,\n (result, [file, changes, alterations = \"\"]) => {\n result.files.push({\n file: file.trim(),\n changes: asNumber(changes),\n insertions: alterations.replace(/[^+]/g, \"\").length,\n deletions: alterations.replace(/[^-]/g, \"\").length,\n binary: false\n });\n }\n ),\n new LineParser(\n /^(.+) \\|\\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/,\n (result, [file, before, after]) => {\n result.files.push({\n file: file.trim(),\n before: asNumber(before),\n after: asNumber(after),\n binary: true\n });\n }\n ),\n new LineParser(\n /(\\d+) files? changed\\s*((?:, \\d+ [^,]+){0,2})/,\n (result, [changed, summary]) => {\n const inserted = /(\\d+) i/.exec(summary);\n const deleted = /(\\d+) d/.exec(summary);\n result.changed = asNumber(changed);\n result.insertions = asNumber(inserted?.[1]);\n result.deletions = asNumber(deleted?.[1]);\n }\n )\n ];\n numStatParser = [\n new LineParser(\n /(\\d+)\\t(\\d+)\\t(.+)$/,\n (result, [changesInsert, changesDelete, file]) => {\n const insertions = asNumber(changesInsert);\n const deletions = asNumber(changesDelete);\n result.changed++;\n result.insertions += insertions;\n result.deletions += deletions;\n result.files.push({\n file,\n changes: insertions + deletions,\n insertions,\n deletions,\n binary: false\n });\n }\n ),\n new LineParser(/-\\t-\\t(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n after: 0,\n before: 0,\n binary: true\n });\n })\n ];\n nameOnlyParser = [\n new LineParser(/(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false\n });\n })\n ];\n nameStatusParser = [\n new LineParser(\n /([ACDMRTUXB])([0-9]{0,3})\\t(.[^\\t]*)(\\t(.[^\\t]*))?$/,\n (result, [status, similarity, from, _to, to]) => {\n result.changed++;\n result.files.push({\n file: to ?? from,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false,\n status: orVoid(isDiffNameStatus(status) && status),\n from: orVoid(!!to && from !== to && from),\n similarity: asNumber(similarity)\n });\n }\n )\n ];\n diffSummaryParsers = {\n [\"\" /* NONE */]: statParser,\n [\"--stat\" /* STAT */]: statParser,\n [\"--numstat\" /* NUM_STAT */]: numStatParser,\n [\"--name-status\" /* NAME_STATUS */]: nameStatusParser,\n [\"--name-only\" /* NAME_ONLY */]: nameOnlyParser\n };\n }\n});\n\n// src/lib/parsers/parse-list-log-summary.ts\nfunction lineBuilder(tokens, fields) {\n return fields.reduce(\n (line, field, index) => {\n line[field] = tokens[index] || \"\";\n return line;\n },\n /* @__PURE__ */ Object.create({ diff: null })\n );\n}\nfunction createListLogSummaryParser(splitter = SPLITTER, fields = defaultFieldNames, logFormat = \"\" /* NONE */) {\n const parseDiffResult = getDiffParser(logFormat);\n return function(stdOut) {\n const all = toLinesWithContent(\n stdOut.trim(),\n false,\n START_BOUNDARY\n ).map(function(item) {\n const lineDetail = item.split(COMMIT_BOUNDARY);\n const listLogLine = lineBuilder(lineDetail[0].split(splitter), fields);\n if (lineDetail.length > 1 && !!lineDetail[1].trim()) {\n listLogLine.diff = parseDiffResult(lineDetail[1]);\n }\n return listLogLine;\n });\n return {\n all,\n latest: all.length && all[0] || null,\n total: all.length\n };\n };\n}\nvar START_BOUNDARY, COMMIT_BOUNDARY, SPLITTER, defaultFieldNames;\nvar init_parse_list_log_summary = __esm({\n \"src/lib/parsers/parse-list-log-summary.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_diff_summary();\n init_log_format();\n START_BOUNDARY = \"\\xF2\\xF2\\xF2\\xF2\\xF2\\xF2 \";\n COMMIT_BOUNDARY = \" \\xF2\\xF2\";\n SPLITTER = \" \\xF2 \";\n defaultFieldNames = [\"hash\", \"date\", \"message\", \"refs\", \"author_name\", \"author_email\"];\n }\n});\n\n// src/lib/tasks/diff.ts\nvar diff_exports = {};\n__export(diff_exports, {\n diffSummaryTask: () => diffSummaryTask,\n validateLogFormatConfig: () => validateLogFormatConfig\n});\nfunction diffSummaryTask(customArgs) {\n let logFormat = logFormatFromCommand(customArgs);\n const commands = [\"diff\"];\n if (logFormat === \"\" /* NONE */) {\n logFormat = \"--stat\" /* STAT */;\n commands.push(\"--stat=4096\");\n }\n commands.push(...customArgs);\n return validateLogFormatConfig(commands) || {\n commands,\n format: \"utf-8\",\n parser: getDiffParser(logFormat)\n };\n}\nfunction validateLogFormatConfig(customArgs) {\n const flags = customArgs.filter(isLogFormat);\n if (flags.length > 1) {\n return configurationErrorTask(\n `Summary flags are mutually exclusive - pick one of ${flags.join(\",\")}`\n );\n }\n if (flags.length && customArgs.includes(\"-z\")) {\n return configurationErrorTask(\n `Summary flag ${flags} parsing is not compatible with null termination option '-z'`\n );\n }\n}\nvar init_diff = __esm({\n \"src/lib/tasks/diff.ts\"() {\n \"use strict\";\n init_log_format();\n init_parse_diff_summary();\n init_task();\n }\n});\n\n// src/lib/tasks/log.ts\nfunction prettyFormat(format, splitter) {\n const fields = [];\n const formatStr = [];\n Object.keys(format).forEach((field) => {\n fields.push(field);\n formatStr.push(String(format[field]));\n });\n return [fields, formatStr.join(splitter)];\n}\nfunction userOptions(input) {\n return Object.keys(input).reduce((out, key) => {\n if (!(key in excludeOptions)) {\n out[key] = input[key];\n }\n return out;\n }, {});\n}\nfunction parseLogOptions(opt = {}, customArgs = []) {\n const splitter = filterType(opt.splitter, filterString, SPLITTER);\n const format = filterPlainObject(opt.format) ? opt.format : {\n hash: \"%H\",\n date: opt.strictDate === false ? \"%ai\" : \"%aI\",\n message: \"%s\",\n refs: \"%D\",\n body: opt.multiLine ? \"%B\" : \"%b\",\n author_name: opt.mailMap !== false ? \"%aN\" : \"%an\",\n author_email: opt.mailMap !== false ? \"%aE\" : \"%ae\"\n };\n const [fields, formatStr] = prettyFormat(format, splitter);\n const suffix = [];\n const command = [\n `--pretty=format:${START_BOUNDARY}${formatStr}${COMMIT_BOUNDARY}`,\n ...customArgs\n ];\n const maxCount = opt.n || opt[\"max-count\"] || opt.maxCount;\n if (maxCount) {\n command.push(`--max-count=${maxCount}`);\n }\n if (opt.from || opt.to) {\n const rangeOperator = opt.symmetric !== false ? \"...\" : \"..\";\n suffix.push(`${opt.from || \"\"}${rangeOperator}${opt.to || \"\"}`);\n }\n if (filterString(opt.file)) {\n command.push(\"--follow\", pathspec(opt.file));\n }\n appendTaskOptions(userOptions(opt), command);\n return {\n fields,\n splitter,\n commands: [...command, ...suffix]\n };\n}\nfunction logTask(splitter, fields, customArgs) {\n const parser4 = createListLogSummaryParser(splitter, fields, logFormatFromCommand(customArgs));\n return {\n commands: [\"log\", ...customArgs],\n format: \"utf-8\",\n parser: parser4\n };\n}\nfunction log_default() {\n return {\n log(...rest) {\n const next = trailingFunctionArgument(arguments);\n const options = parseLogOptions(\n trailingOptionsArgument(arguments),\n filterType(arguments[0], filterArray)\n );\n const task = rejectDeprecatedSignatures(...rest) || validateLogFormatConfig(options.commands) || createLogTask(options);\n return this._runTask(task, next);\n }\n };\n function createLogTask(options) {\n return logTask(options.splitter, options.fields, options.commands);\n }\n function rejectDeprecatedSignatures(from, to) {\n return filterString(from) && filterString(to) && configurationErrorTask(\n `git.log(string, string) should be replaced with git.log({ from: string, to: string })`\n );\n }\n}\nvar excludeOptions;\nvar init_log = __esm({\n \"src/lib/tasks/log.ts\"() {\n \"use strict\";\n init_log_format();\n init_pathspec();\n init_parse_list_log_summary();\n init_utils();\n init_task();\n init_diff();\n excludeOptions = /* @__PURE__ */ ((excludeOptions2) => {\n excludeOptions2[excludeOptions2[\"--pretty\"] = 0] = \"--pretty\";\n excludeOptions2[excludeOptions2[\"max-count\"] = 1] = \"max-count\";\n excludeOptions2[excludeOptions2[\"maxCount\"] = 2] = \"maxCount\";\n excludeOptions2[excludeOptions2[\"n\"] = 3] = \"n\";\n excludeOptions2[excludeOptions2[\"file\"] = 4] = \"file\";\n excludeOptions2[excludeOptions2[\"format\"] = 5] = \"format\";\n excludeOptions2[excludeOptions2[\"from\"] = 6] = \"from\";\n excludeOptions2[excludeOptions2[\"to\"] = 7] = \"to\";\n excludeOptions2[excludeOptions2[\"splitter\"] = 8] = \"splitter\";\n excludeOptions2[excludeOptions2[\"symmetric\"] = 9] = \"symmetric\";\n excludeOptions2[excludeOptions2[\"mailMap\"] = 10] = \"mailMap\";\n excludeOptions2[excludeOptions2[\"multiLine\"] = 11] = \"multiLine\";\n excludeOptions2[excludeOptions2[\"strictDate\"] = 12] = \"strictDate\";\n return excludeOptions2;\n })(excludeOptions || {});\n }\n});\n\n// src/lib/responses/MergeSummary.ts\nvar MergeSummaryConflict, MergeSummaryDetail;\nvar init_MergeSummary = __esm({\n \"src/lib/responses/MergeSummary.ts\"() {\n \"use strict\";\n MergeSummaryConflict = class {\n constructor(reason, file = null, meta) {\n this.reason = reason;\n this.file = file;\n this.meta = meta;\n }\n toString() {\n return `${this.file}:${this.reason}`;\n }\n };\n MergeSummaryDetail = class {\n constructor() {\n this.conflicts = [];\n this.merges = [];\n this.result = \"success\";\n }\n get failed() {\n return this.conflicts.length > 0;\n }\n get reason() {\n return this.result;\n }\n toString() {\n if (this.conflicts.length) {\n return `CONFLICTS: ${this.conflicts.join(\", \")}`;\n }\n return \"OK\";\n }\n };\n }\n});\n\n// src/lib/responses/PullSummary.ts\nvar PullSummary, PullFailedSummary;\nvar init_PullSummary = __esm({\n \"src/lib/responses/PullSummary.ts\"() {\n \"use strict\";\n PullSummary = class {\n constructor() {\n this.remoteMessages = {\n all: []\n };\n this.created = [];\n this.deleted = [];\n this.files = [];\n this.deletions = {};\n this.insertions = {};\n this.summary = {\n changes: 0,\n deletions: 0,\n insertions: 0\n };\n }\n };\n PullFailedSummary = class {\n constructor() {\n this.remote = \"\";\n this.hash = {\n local: \"\",\n remote: \"\"\n };\n this.branch = {\n local: \"\",\n remote: \"\"\n };\n this.message = \"\";\n }\n toString() {\n return this.message;\n }\n };\n }\n});\n\n// src/lib/parsers/parse-remote-objects.ts\nfunction objectEnumerationResult(remoteMessages) {\n return remoteMessages.objects = remoteMessages.objects || {\n compressing: 0,\n counting: 0,\n enumerating: 0,\n packReused: 0,\n reused: { count: 0, delta: 0 },\n total: { count: 0, delta: 0 }\n };\n}\nfunction asObjectCount(source) {\n const count = /^\\s*(\\d+)/.exec(source);\n const delta = /delta (\\d+)/i.exec(source);\n return {\n count: asNumber(count && count[1] || \"0\"),\n delta: asNumber(delta && delta[1] || \"0\")\n };\n}\nvar remoteMessagesObjectParsers;\nvar init_parse_remote_objects = __esm({\n \"src/lib/parsers/parse-remote-objects.ts\"() {\n \"use strict\";\n init_utils();\n remoteMessagesObjectParsers = [\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: (\\d+),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: \\d+% \\(\\d+\\/(\\d+)\\),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /total ([^,]+), reused ([^,]+), pack-reused (\\d+)/i,\n (result, [total, reused, packReused]) => {\n const objects = objectEnumerationResult(result.remoteMessages);\n objects.total = asObjectCount(total);\n objects.reused = asObjectCount(reused);\n objects.packReused = asNumber(packReused);\n }\n )\n ];\n }\n});\n\n// src/lib/parsers/parse-remote-messages.ts\nfunction parseRemoteMessages(_stdOut, stdErr) {\n return parseStringResponse({ remoteMessages: new RemoteMessageSummary() }, parsers2, stdErr);\n}\nvar parsers2, RemoteMessageSummary;\nvar init_parse_remote_messages = __esm({\n \"src/lib/parsers/parse-remote-messages.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_remote_objects();\n parsers2 = [\n new RemoteLineParser(/^remote:\\s*(.+)$/, (result, [text]) => {\n result.remoteMessages.all.push(text.trim());\n return false;\n }),\n ...remoteMessagesObjectParsers,\n new RemoteLineParser(\n [/create a (?:pull|merge) request/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [pullRequestUrl]) => {\n result.remoteMessages.pullRequestUrl = pullRequestUrl;\n }\n ),\n new RemoteLineParser(\n [/found (\\d+) vulnerabilities.+\\(([^)]+)\\)/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [count, summary, url]) => {\n result.remoteMessages.vulnerabilities = {\n count: asNumber(count),\n summary,\n url\n };\n }\n )\n ];\n RemoteMessageSummary = class {\n constructor() {\n this.all = [];\n }\n };\n }\n});\n\n// src/lib/parsers/parse-pull.ts\nfunction parsePullErrorResult(stdOut, stdErr) {\n const pullError = parseStringResponse(new PullFailedSummary(), errorParsers, [stdOut, stdErr]);\n return pullError.message && pullError;\n}\nvar FILE_UPDATE_REGEX, SUMMARY_REGEX, ACTION_REGEX, parsers3, errorParsers, parsePullDetail, parsePullResult;\nvar init_parse_pull = __esm({\n \"src/lib/parsers/parse-pull.ts\"() {\n \"use strict\";\n init_PullSummary();\n init_utils();\n init_parse_remote_messages();\n FILE_UPDATE_REGEX = /^\\s*(.+?)\\s+\\|\\s+\\d+\\s*(\\+*)(-*)/;\n SUMMARY_REGEX = /(\\d+)\\D+((\\d+)\\D+\\(\\+\\))?(\\D+(\\d+)\\D+\\(-\\))?/;\n ACTION_REGEX = /^(create|delete) mode \\d+ (.+)/;\n parsers3 = [\n new LineParser(FILE_UPDATE_REGEX, (result, [file, insertions, deletions]) => {\n result.files.push(file);\n if (insertions) {\n result.insertions[file] = insertions.length;\n }\n if (deletions) {\n result.deletions[file] = deletions.length;\n }\n }),\n new LineParser(SUMMARY_REGEX, (result, [changes, , insertions, , deletions]) => {\n if (insertions !== void 0 || deletions !== void 0) {\n result.summary.changes = +changes || 0;\n result.summary.insertions = +insertions || 0;\n result.summary.deletions = +deletions || 0;\n return true;\n }\n return false;\n }),\n new LineParser(ACTION_REGEX, (result, [action, file]) => {\n append(result.files, file);\n append(action === \"create\" ? result.created : result.deleted, file);\n })\n ];\n errorParsers = [\n new LineParser(/^from\\s(.+)$/i, (result, [remote]) => void (result.remote = remote)),\n new LineParser(/^fatal:\\s(.+)$/, (result, [message]) => void (result.message = message)),\n new LineParser(\n /([a-z0-9]+)\\.\\.([a-z0-9]+)\\s+(\\S+)\\s+->\\s+(\\S+)$/,\n (result, [hashLocal, hashRemote, branchLocal, branchRemote]) => {\n result.branch.local = branchLocal;\n result.hash.local = hashLocal;\n result.branch.remote = branchRemote;\n result.hash.remote = hashRemote;\n }\n )\n ];\n parsePullDetail = (stdOut, stdErr) => {\n return parseStringResponse(new PullSummary(), parsers3, [stdOut, stdErr]);\n };\n parsePullResult = (stdOut, stdErr) => {\n return Object.assign(\n new PullSummary(),\n parsePullDetail(stdOut, stdErr),\n parseRemoteMessages(stdOut, stdErr)\n );\n };\n }\n});\n\n// src/lib/parsers/parse-merge.ts\nvar parsers4, parseMergeResult, parseMergeDetail;\nvar init_parse_merge = __esm({\n \"src/lib/parsers/parse-merge.ts\"() {\n \"use strict\";\n init_MergeSummary();\n init_utils();\n init_parse_pull();\n parsers4 = [\n new LineParser(/^Auto-merging\\s+(.+)$/, (summary, [autoMerge]) => {\n summary.merges.push(autoMerge);\n }),\n new LineParser(/^CONFLICT\\s+\\((.+)\\): Merge conflict in (.+)$/, (summary, [reason, file]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file));\n }),\n new LineParser(\n /^CONFLICT\\s+\\((.+\\/delete)\\): (.+) deleted in (.+) and/,\n (summary, [reason, file, deleteRef]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file, { deleteRef }));\n }\n ),\n new LineParser(/^CONFLICT\\s+\\((.+)\\):/, (summary, [reason]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, null));\n }),\n new LineParser(/^Automatic merge failed;\\s+(.+)$/, (summary, [result]) => {\n summary.result = result;\n })\n ];\n parseMergeResult = (stdOut, stdErr) => {\n return Object.assign(parseMergeDetail(stdOut, stdErr), parsePullResult(stdOut, stdErr));\n };\n parseMergeDetail = (stdOut) => {\n return parseStringResponse(new MergeSummaryDetail(), parsers4, stdOut);\n };\n }\n});\n\n// src/lib/tasks/merge.ts\nfunction mergeTask(customArgs) {\n if (!customArgs.length) {\n return configurationErrorTask(\"Git.merge requires at least one option\");\n }\n return {\n commands: [\"merge\", ...customArgs],\n format: \"utf-8\",\n parser(stdOut, stdErr) {\n const merge = parseMergeResult(stdOut, stdErr);\n if (merge.failed) {\n throw new GitResponseError(merge);\n }\n return merge;\n }\n };\n}\nvar init_merge = __esm({\n \"src/lib/tasks/merge.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_merge();\n init_task();\n }\n});\n\n// src/lib/parsers/parse-push.ts\nfunction pushResultPushedItem(local, remote, status) {\n const deleted = status.includes(\"deleted\");\n const tag = status.includes(\"tag\") || /^refs\\/tags/.test(local);\n const alreadyUpdated = !status.includes(\"new\");\n return {\n deleted,\n tag,\n branch: !tag,\n new: !alreadyUpdated,\n alreadyUpdated,\n local,\n remote\n };\n}\nvar parsers5, parsePushResult, parsePushDetail;\nvar init_parse_push = __esm({\n \"src/lib/parsers/parse-push.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_remote_messages();\n parsers5 = [\n new LineParser(/^Pushing to (.+)$/, (result, [repo]) => {\n result.repo = repo;\n }),\n new LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => {\n result.ref = {\n ...result.ref || {},\n local\n };\n }),\n new LineParser(/^[=*-]\\s+([^:]+):(\\S+)\\s+\\[(.+)]$/, (result, [local, remote, type]) => {\n result.pushed.push(pushResultPushedItem(local, remote, type));\n }),\n new LineParser(\n /^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/,\n (result, [local, remote, remoteName]) => {\n result.branch = {\n ...result.branch || {},\n local,\n remote,\n remoteName\n };\n }\n ),\n new LineParser(\n /^([^:]+):(\\S+)\\s+([a-z0-9]+)\\.\\.([a-z0-9]+)$/,\n (result, [local, remote, from, to]) => {\n result.update = {\n head: {\n local,\n remote\n },\n hash: {\n from,\n to\n }\n };\n }\n )\n ];\n parsePushResult = (stdOut, stdErr) => {\n const pushDetail = parsePushDetail(stdOut, stdErr);\n const responseDetail = parseRemoteMessages(stdOut, stdErr);\n return {\n ...pushDetail,\n ...responseDetail\n };\n };\n parsePushDetail = (stdOut, stdErr) => {\n return parseStringResponse({ pushed: [] }, parsers5, [stdOut, stdErr]);\n };\n }\n});\n\n// src/lib/tasks/push.ts\nvar push_exports = {};\n__export(push_exports, {\n pushTagsTask: () => pushTagsTask,\n pushTask: () => pushTask\n});\nfunction pushTagsTask(ref = {}, customArgs) {\n append(customArgs, \"--tags\");\n return pushTask(ref, customArgs);\n}\nfunction pushTask(ref = {}, customArgs) {\n const commands = [\"push\", ...customArgs];\n if (ref.branch) {\n commands.splice(1, 0, ref.branch);\n }\n if (ref.remote) {\n commands.splice(1, 0, ref.remote);\n }\n remove(commands, \"-v\");\n append(commands, \"--verbose\");\n append(commands, \"--porcelain\");\n return {\n commands,\n format: \"utf-8\",\n parser: parsePushResult\n };\n}\nvar init_push = __esm({\n \"src/lib/tasks/push.ts\"() {\n \"use strict\";\n init_parse_push();\n init_utils();\n }\n});\n\n// src/lib/tasks/show.ts\nfunction show_default() {\n return {\n showBuffer() {\n const commands = [\"show\", ...getTrailingOptions(arguments, 1)];\n if (!commands.includes(\"--binary\")) {\n commands.splice(1, 0, \"--binary\");\n }\n return this._runTask(\n straightThroughBufferTask(commands),\n trailingFunctionArgument(arguments)\n );\n },\n show() {\n const commands = [\"show\", ...getTrailingOptions(arguments, 1)];\n return this._runTask(\n straightThroughStringTask(commands),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_show = __esm({\n \"src/lib/tasks/show.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/responses/FileStatusSummary.ts\nvar fromPathRegex, FileStatusSummary;\nvar init_FileStatusSummary = __esm({\n \"src/lib/responses/FileStatusSummary.ts\"() {\n \"use strict\";\n fromPathRegex = /^(.+)\\0(.+)$/;\n FileStatusSummary = class {\n constructor(path, index, working_dir) {\n this.path = path;\n this.index = index;\n this.working_dir = working_dir;\n if (index === \"R\" || working_dir === \"R\") {\n const detail = fromPathRegex.exec(path) || [null, path, path];\n this.from = detail[2] || \"\";\n this.path = detail[1] || \"\";\n }\n }\n };\n }\n});\n\n// src/lib/responses/StatusSummary.ts\nfunction renamedFile(line) {\n const [to, from] = line.split(NULL);\n return {\n from: from || to,\n to\n };\n}\nfunction parser3(indexX, indexY, handler) {\n return [`${indexX}${indexY}`, handler];\n}\nfunction conflicts(indexX, ...indexY) {\n return indexY.map((y) => parser3(indexX, y, (result, file) => append(result.conflicted, file)));\n}\nfunction splitLine(result, lineStr) {\n const trimmed2 = lineStr.trim();\n switch (\" \") {\n case trimmed2.charAt(2):\n return data(trimmed2.charAt(0), trimmed2.charAt(1), trimmed2.substr(3));\n case trimmed2.charAt(1):\n return data(\" \" /* NONE */, trimmed2.charAt(0), trimmed2.substr(2));\n default:\n return;\n }\n function data(index, workingDir, path) {\n const raw = `${index}${workingDir}`;\n const handler = parsers6.get(raw);\n if (handler) {\n handler(result, path);\n }\n if (raw !== \"##\" && raw !== \"!!\") {\n result.files.push(new FileStatusSummary(path, index, workingDir));\n }\n }\n}\nvar StatusSummary, parsers6, parseStatusSummary;\nvar init_StatusSummary = __esm({\n \"src/lib/responses/StatusSummary.ts\"() {\n \"use strict\";\n init_utils();\n init_FileStatusSummary();\n StatusSummary = class {\n constructor() {\n this.not_added = [];\n this.conflicted = [];\n this.created = [];\n this.deleted = [];\n this.ignored = void 0;\n this.modified = [];\n this.renamed = [];\n this.files = [];\n this.staged = [];\n this.ahead = 0;\n this.behind = 0;\n this.current = null;\n this.tracking = null;\n this.detached = false;\n this.isClean = () => {\n return !this.files.length;\n };\n }\n };\n parsers6 = new Map([\n parser3(\n \" \" /* NONE */,\n \"A\" /* ADDED */,\n (result, file) => append(result.created, file)\n ),\n parser3(\n \" \" /* NONE */,\n \"D\" /* DELETED */,\n (result, file) => append(result.deleted, file)\n ),\n parser3(\n \" \" /* NONE */,\n \"M\" /* MODIFIED */,\n (result, file) => append(result.modified, file)\n ),\n parser3(\n \"A\" /* ADDED */,\n \" \" /* NONE */,\n (result, file) => append(result.created, file) && append(result.staged, file)\n ),\n parser3(\n \"A\" /* ADDED */,\n \"M\" /* MODIFIED */,\n (result, file) => append(result.created, file) && append(result.staged, file) && append(result.modified, file)\n ),\n parser3(\n \"D\" /* DELETED */,\n \" \" /* NONE */,\n (result, file) => append(result.deleted, file) && append(result.staged, file)\n ),\n parser3(\n \"M\" /* MODIFIED */,\n \" \" /* NONE */,\n (result, file) => append(result.modified, file) && append(result.staged, file)\n ),\n parser3(\n \"M\" /* MODIFIED */,\n \"M\" /* MODIFIED */,\n (result, file) => append(result.modified, file) && append(result.staged, file)\n ),\n parser3(\"R\" /* RENAMED */, \" \" /* NONE */, (result, file) => {\n append(result.renamed, renamedFile(file));\n }),\n parser3(\"R\" /* RENAMED */, \"M\" /* MODIFIED */, (result, file) => {\n const renamed = renamedFile(file);\n append(result.renamed, renamed);\n append(result.modified, renamed.to);\n }),\n parser3(\"!\" /* IGNORED */, \"!\" /* IGNORED */, (_result, _file) => {\n append(_result.ignored = _result.ignored || [], _file);\n }),\n parser3(\n \"?\" /* UNTRACKED */,\n \"?\" /* UNTRACKED */,\n (result, file) => append(result.not_added, file)\n ),\n ...conflicts(\"A\" /* ADDED */, \"A\" /* ADDED */, \"U\" /* UNMERGED */),\n ...conflicts(\n \"D\" /* DELETED */,\n \"D\" /* DELETED */,\n \"U\" /* UNMERGED */\n ),\n ...conflicts(\n \"U\" /* UNMERGED */,\n \"A\" /* ADDED */,\n \"D\" /* DELETED */,\n \"U\" /* UNMERGED */\n ),\n [\n \"##\",\n (result, line) => {\n const aheadReg = /ahead (\\d+)/;\n const behindReg = /behind (\\d+)/;\n const currentReg = /^(.+?(?=(?:\\.{3}|\\s|$)))/;\n const trackingReg = /\\.{3}(\\S*)/;\n const onEmptyBranchReg = /\\son\\s([\\S]+)$/;\n let regexResult;\n regexResult = aheadReg.exec(line);\n result.ahead = regexResult && +regexResult[1] || 0;\n regexResult = behindReg.exec(line);\n result.behind = regexResult && +regexResult[1] || 0;\n regexResult = currentReg.exec(line);\n result.current = regexResult && regexResult[1];\n regexResult = trackingReg.exec(line);\n result.tracking = regexResult && regexResult[1];\n regexResult = onEmptyBranchReg.exec(line);\n result.current = regexResult && regexResult[1] || result.current;\n result.detached = /\\(no branch\\)/.test(line);\n }\n ]\n ]);\n parseStatusSummary = function(text) {\n const lines = text.split(NULL);\n const status = new StatusSummary();\n for (let i = 0, l = lines.length; i < l; ) {\n let line = lines[i++].trim();\n if (!line) {\n continue;\n }\n if (line.charAt(0) === \"R\" /* RENAMED */) {\n line += NULL + (lines[i++] || \"\");\n }\n splitLine(status, line);\n }\n return status;\n };\n }\n});\n\n// src/lib/tasks/status.ts\nfunction statusTask(customArgs) {\n const commands = [\n \"status\",\n \"--porcelain\",\n \"-b\",\n \"-u\",\n \"--null\",\n ...customArgs.filter((arg) => !ignoredOptions.includes(arg))\n ];\n return {\n format: \"utf-8\",\n commands,\n parser(text) {\n return parseStatusSummary(text);\n }\n };\n}\nvar ignoredOptions;\nvar init_status = __esm({\n \"src/lib/tasks/status.ts\"() {\n \"use strict\";\n init_StatusSummary();\n ignoredOptions = [\"--null\", \"-z\"];\n }\n});\n\n// src/lib/tasks/version.ts\nfunction versionResponse(major = 0, minor = 0, patch = 0, agent = \"\", installed = true) {\n return Object.defineProperty(\n {\n major,\n minor,\n patch,\n agent,\n installed\n },\n \"toString\",\n {\n value() {\n return `${this.major}.${this.minor}.${this.patch}`;\n },\n configurable: false,\n enumerable: false\n }\n );\n}\nfunction notInstalledResponse() {\n return versionResponse(0, 0, 0, \"\", false);\n}\nfunction version_default() {\n return {\n version() {\n return this._runTask({\n commands: [\"--version\"],\n format: \"utf-8\",\n parser: versionParser,\n onError(result, error, done, fail) {\n if (result.exitCode === -2 /* NOT_FOUND */) {\n return done(Buffer.from(NOT_INSTALLED));\n }\n fail(error);\n }\n });\n }\n };\n}\nfunction versionParser(stdOut) {\n if (stdOut === NOT_INSTALLED) {\n return notInstalledResponse();\n }\n return parseStringResponse(versionResponse(0, 0, 0, stdOut), parsers7, stdOut);\n}\nvar NOT_INSTALLED, parsers7;\nvar init_version = __esm({\n \"src/lib/tasks/version.ts\"() {\n \"use strict\";\n init_utils();\n NOT_INSTALLED = \"installed=false\";\n parsers7 = [\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\d+)(?:\\s*\\((.+)\\))?/,\n (result, [major, minor, patch, agent = \"\"]) => {\n Object.assign(\n result,\n versionResponse(asNumber(major), asNumber(minor), asNumber(patch), agent)\n );\n }\n ),\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\D+)(.+)?$/,\n (result, [major, minor, patch, agent = \"\"]) => {\n Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent));\n }\n )\n ];\n }\n});\n\n// src/lib/simple-git-api.ts\nvar simple_git_api_exports = {};\n__export(simple_git_api_exports, {\n SimpleGitApi: () => SimpleGitApi\n});\nvar SimpleGitApi;\nvar init_simple_git_api = __esm({\n \"src/lib/simple-git-api.ts\"() {\n \"use strict\";\n init_task_callback();\n init_change_working_directory();\n init_checkout();\n init_count_objects();\n init_commit();\n init_config();\n init_first_commit();\n init_grep();\n init_hash_object();\n init_init();\n init_log();\n init_merge();\n init_push();\n init_show();\n init_status();\n init_task();\n init_version();\n init_utils();\n SimpleGitApi = class {\n constructor(_executor) {\n this._executor = _executor;\n }\n _runTask(task, then) {\n const chain = this._executor.chain();\n const promise = chain.push(task);\n if (then) {\n taskCallback(task, promise, then);\n }\n return Object.create(this, {\n then: { value: promise.then.bind(promise) },\n catch: { value: promise.catch.bind(promise) },\n _executor: { value: chain }\n });\n }\n add(files) {\n return this._runTask(\n straightThroughStringTask([\"add\", ...asArray(files)]),\n trailingFunctionArgument(arguments)\n );\n }\n cwd(directory) {\n const next = trailingFunctionArgument(arguments);\n if (typeof directory === \"string\") {\n return this._runTask(changeWorkingDirectoryTask(directory, this._executor), next);\n }\n if (typeof directory?.path === \"string\") {\n return this._runTask(\n changeWorkingDirectoryTask(\n directory.path,\n directory.root && this._executor || void 0\n ),\n next\n );\n }\n return this._runTask(\n configurationErrorTask(\"Git.cwd: workingDirectory must be supplied as a string\"),\n next\n );\n }\n hashObject(path, write) {\n return this._runTask(\n hashObjectTask(path, write === true),\n trailingFunctionArgument(arguments)\n );\n }\n init(bare) {\n return this._runTask(\n initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n merge() {\n return this._runTask(\n mergeTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n mergeFromTo(remote, branch) {\n if (!(filterString(remote) && filterString(branch))) {\n return this._runTask(\n configurationErrorTask(\n `Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`\n )\n );\n }\n return this._runTask(\n mergeTask([remote, branch, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments, false)\n );\n }\n outputHandler(handler) {\n this._executor.outputHandler = handler;\n return this;\n }\n push() {\n const task = pushTask(\n {\n remote: filterType(arguments[0], filterString),\n branch: filterType(arguments[1], filterString)\n },\n getTrailingOptions(arguments)\n );\n return this._runTask(task, trailingFunctionArgument(arguments));\n }\n stash() {\n return this._runTask(\n straightThroughStringTask([\"stash\", ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n status() {\n return this._runTask(\n statusTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n };\n Object.assign(\n SimpleGitApi.prototype,\n checkout_default(),\n commit_default(),\n config_default(),\n count_objects_default(),\n first_commit_default(),\n grep_default(),\n log_default(),\n show_default(),\n version_default()\n );\n }\n});\n\n// src/lib/runners/scheduler.ts\nvar scheduler_exports = {};\n__export(scheduler_exports, {\n Scheduler: () => Scheduler\n});\nimport { createDeferred } from \"@kwsites/promise-deferred\";\nvar createScheduledTask, Scheduler;\nvar init_scheduler = __esm({\n \"src/lib/runners/scheduler.ts\"() {\n \"use strict\";\n init_utils();\n init_git_logger();\n createScheduledTask = /* @__PURE__ */ (() => {\n let id = 0;\n return () => {\n id++;\n const { promise, done } = createDeferred();\n return {\n promise,\n done,\n id\n };\n };\n })();\n Scheduler = class {\n constructor(concurrency = 2) {\n this.concurrency = concurrency;\n this.logger = createLogger(\"\", \"scheduler\");\n this.pending = [];\n this.running = [];\n this.logger(`Constructed, concurrency=%s`, concurrency);\n }\n schedule() {\n if (!this.pending.length || this.running.length >= this.concurrency) {\n this.logger(\n `Schedule attempt ignored, pending=%s running=%s concurrency=%s`,\n this.pending.length,\n this.running.length,\n this.concurrency\n );\n return;\n }\n const task = append(this.running, this.pending.shift());\n this.logger(`Attempting id=%s`, task.id);\n task.done(() => {\n this.logger(`Completing id=`, task.id);\n remove(this.running, task);\n this.schedule();\n });\n }\n next() {\n const { promise, id } = append(this.pending, createScheduledTask());\n this.logger(`Scheduling id=%s`, id);\n this.schedule();\n return promise;\n }\n };\n }\n});\n\n// src/lib/tasks/apply-patch.ts\nvar apply_patch_exports = {};\n__export(apply_patch_exports, {\n applyPatchTask: () => applyPatchTask\n});\nfunction applyPatchTask(patches, customArgs) {\n return straightThroughStringTask([\"apply\", ...customArgs, ...patches]);\n}\nvar init_apply_patch = __esm({\n \"src/lib/tasks/apply-patch.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/BranchDeleteSummary.ts\nfunction branchDeletionSuccess(branch, hash) {\n return {\n branch,\n hash,\n success: true\n };\n}\nfunction branchDeletionFailure(branch) {\n return {\n branch,\n hash: null,\n success: false\n };\n}\nvar BranchDeletionBatch;\nvar init_BranchDeleteSummary = __esm({\n \"src/lib/responses/BranchDeleteSummary.ts\"() {\n \"use strict\";\n BranchDeletionBatch = class {\n constructor() {\n this.all = [];\n this.branches = {};\n this.errors = [];\n }\n get success() {\n return !this.errors.length;\n }\n };\n }\n});\n\n// src/lib/parsers/parse-branch-delete.ts\nfunction hasBranchDeletionError(data, processExitCode) {\n return processExitCode === 1 /* ERROR */ && deleteErrorRegex.test(data);\n}\nvar deleteSuccessRegex, deleteErrorRegex, parsers8, parseBranchDeletions;\nvar init_parse_branch_delete = __esm({\n \"src/lib/parsers/parse-branch-delete.ts\"() {\n \"use strict\";\n init_BranchDeleteSummary();\n init_utils();\n deleteSuccessRegex = /(\\S+)\\s+\\(\\S+\\s([^)]+)\\)/;\n deleteErrorRegex = /^error[^']+'([^']+)'/m;\n parsers8 = [\n new LineParser(deleteSuccessRegex, (result, [branch, hash]) => {\n const deletion = branchDeletionSuccess(branch, hash);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n }),\n new LineParser(deleteErrorRegex, (result, [branch]) => {\n const deletion = branchDeletionFailure(branch);\n result.errors.push(deletion);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n })\n ];\n parseBranchDeletions = (stdOut, stdErr) => {\n return parseStringResponse(new BranchDeletionBatch(), parsers8, [stdOut, stdErr]);\n };\n }\n});\n\n// src/lib/responses/BranchSummary.ts\nvar BranchSummaryResult;\nvar init_BranchSummary = __esm({\n \"src/lib/responses/BranchSummary.ts\"() {\n \"use strict\";\n BranchSummaryResult = class {\n constructor() {\n this.all = [];\n this.branches = {};\n this.current = \"\";\n this.detached = false;\n }\n push(status, detached, name, commit, label) {\n if (status === \"*\" /* CURRENT */) {\n this.detached = detached;\n this.current = name;\n }\n this.all.push(name);\n this.branches[name] = {\n current: status === \"*\" /* CURRENT */,\n linkedWorkTree: status === \"+\" /* LINKED */,\n name,\n commit,\n label\n };\n }\n };\n }\n});\n\n// src/lib/parsers/parse-branch.ts\nfunction branchStatus(input) {\n return input ? input.charAt(0) : \"\";\n}\nfunction parseBranchSummary(stdOut) {\n return parseStringResponse(new BranchSummaryResult(), parsers9, stdOut);\n}\nvar parsers9;\nvar init_parse_branch = __esm({\n \"src/lib/parsers/parse-branch.ts\"() {\n \"use strict\";\n init_BranchSummary();\n init_utils();\n parsers9 = [\n new LineParser(\n /^([*+]\\s)?\\((?:HEAD )?detached (?:from|at) (\\S+)\\)\\s+([a-z0-9]+)\\s(.*)$/,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), true, name, commit, label);\n }\n ),\n new LineParser(\n /^([*+]\\s)?(\\S+)\\s+([a-z0-9]+)\\s?(.*)$/s,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), false, name, commit, label);\n }\n )\n ];\n }\n});\n\n// src/lib/tasks/branch.ts\nvar branch_exports = {};\n__export(branch_exports, {\n branchLocalTask: () => branchLocalTask,\n branchTask: () => branchTask,\n containsDeleteBranchCommand: () => containsDeleteBranchCommand,\n deleteBranchTask: () => deleteBranchTask,\n deleteBranchesTask: () => deleteBranchesTask\n});\nfunction containsDeleteBranchCommand(commands) {\n const deleteCommands = [\"-d\", \"-D\", \"--delete\"];\n return commands.some((command) => deleteCommands.includes(command));\n}\nfunction branchTask(customArgs) {\n const isDelete = containsDeleteBranchCommand(customArgs);\n const commands = [\"branch\", ...customArgs];\n if (commands.length === 1) {\n commands.push(\"-a\");\n }\n if (!commands.includes(\"-v\")) {\n commands.splice(1, 0, \"-v\");\n }\n return {\n format: \"utf-8\",\n commands,\n parser(stdOut, stdErr) {\n if (isDelete) {\n return parseBranchDeletions(stdOut, stdErr).all[0];\n }\n return parseBranchSummary(stdOut);\n }\n };\n}\nfunction branchLocalTask() {\n const parser4 = parseBranchSummary;\n return {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\"],\n parser: parser4\n };\n}\nfunction deleteBranchesTask(branches, forceDelete = false) {\n return {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\", forceDelete ? \"-D\" : \"-d\", ...branches],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr);\n },\n onError({ exitCode, stdOut }, error, done, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n done(stdOut);\n }\n };\n}\nfunction deleteBranchTask(branch, forceDelete = false) {\n const task = {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\", forceDelete ? \"-D\" : \"-d\", branch],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr).branches[branch];\n },\n onError({ exitCode, stdErr, stdOut }, error, _, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n throw new GitResponseError(\n task.parser(bufferToString(stdOut), bufferToString(stdErr)),\n String(error)\n );\n }\n };\n return task;\n}\nvar init_branch = __esm({\n \"src/lib/tasks/branch.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_branch_delete();\n init_parse_branch();\n init_utils();\n }\n});\n\n// src/lib/responses/CheckIgnore.ts\nvar parseCheckIgnore;\nvar init_CheckIgnore = __esm({\n \"src/lib/responses/CheckIgnore.ts\"() {\n \"use strict\";\n parseCheckIgnore = (text) => {\n return text.split(/\\n/g).map((line) => line.trim()).filter((file) => !!file);\n };\n }\n});\n\n// src/lib/tasks/check-ignore.ts\nvar check_ignore_exports = {};\n__export(check_ignore_exports, {\n checkIgnoreTask: () => checkIgnoreTask\n});\nfunction checkIgnoreTask(paths) {\n return {\n commands: [\"check-ignore\", ...paths],\n format: \"utf-8\",\n parser: parseCheckIgnore\n };\n}\nvar init_check_ignore = __esm({\n \"src/lib/tasks/check-ignore.ts\"() {\n \"use strict\";\n init_CheckIgnore();\n }\n});\n\n// src/lib/tasks/clone.ts\nvar clone_exports = {};\n__export(clone_exports, {\n cloneMirrorTask: () => cloneMirrorTask,\n cloneTask: () => cloneTask\n});\nfunction disallowedCommand(command) {\n return /^--upload-pack(=|$)/.test(command);\n}\nfunction cloneTask(repo, directory, customArgs) {\n const commands = [\"clone\", ...customArgs];\n filterString(repo) && commands.push(repo);\n filterString(directory) && commands.push(directory);\n const banned = commands.find(disallowedCommand);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n return straightThroughStringTask(commands);\n}\nfunction cloneMirrorTask(repo, directory, customArgs) {\n append(customArgs, \"--mirror\");\n return cloneTask(repo, directory, customArgs);\n}\nvar init_clone = __esm({\n \"src/lib/tasks/clone.ts\"() {\n \"use strict\";\n init_task();\n init_utils();\n }\n});\n\n// src/lib/parsers/parse-fetch.ts\nfunction parseFetchResult(stdOut, stdErr) {\n const result = {\n raw: stdOut,\n remote: null,\n branches: [],\n tags: [],\n updated: [],\n deleted: []\n };\n return parseStringResponse(result, parsers10, [stdOut, stdErr]);\n}\nvar parsers10;\nvar init_parse_fetch = __esm({\n \"src/lib/parsers/parse-fetch.ts\"() {\n \"use strict\";\n init_utils();\n parsers10 = [\n new LineParser(/From (.+)$/, (result, [remote]) => {\n result.remote = remote;\n }),\n new LineParser(/\\* \\[new branch]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.branches.push({\n name,\n tracking\n });\n }),\n new LineParser(/\\* \\[new tag]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.tags.push({\n name,\n tracking\n });\n }),\n new LineParser(/- \\[deleted]\\s+\\S+\\s*-> (.+)$/, (result, [tracking]) => {\n result.deleted.push({\n tracking\n });\n }),\n new LineParser(\n /\\s*([^.]+)\\.\\.(\\S+)\\s+(\\S+)\\s*-> (.+)$/,\n (result, [from, to, name, tracking]) => {\n result.updated.push({\n name,\n tracking,\n to,\n from\n });\n }\n )\n ];\n }\n});\n\n// src/lib/tasks/fetch.ts\nvar fetch_exports = {};\n__export(fetch_exports, {\n fetchTask: () => fetchTask\n});\nfunction disallowedCommand2(command) {\n return /^--upload-pack(=|$)/.test(command);\n}\nfunction fetchTask(remote, branch, customArgs) {\n const commands = [\"fetch\", ...customArgs];\n if (remote && branch) {\n commands.push(remote, branch);\n }\n const banned = commands.find(disallowedCommand2);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser: parseFetchResult\n };\n}\nvar init_fetch = __esm({\n \"src/lib/tasks/fetch.ts\"() {\n \"use strict\";\n init_parse_fetch();\n init_task();\n }\n});\n\n// src/lib/parsers/parse-move.ts\nfunction parseMoveResult(stdOut) {\n return parseStringResponse({ moves: [] }, parsers11, stdOut);\n}\nvar parsers11;\nvar init_parse_move = __esm({\n \"src/lib/parsers/parse-move.ts\"() {\n \"use strict\";\n init_utils();\n parsers11 = [\n new LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => {\n result.moves.push({ from, to });\n })\n ];\n }\n});\n\n// src/lib/tasks/move.ts\nvar move_exports = {};\n__export(move_exports, {\n moveTask: () => moveTask\n});\nfunction moveTask(from, to) {\n return {\n commands: [\"mv\", \"-v\", ...asArray(from), to],\n format: \"utf-8\",\n parser: parseMoveResult\n };\n}\nvar init_move = __esm({\n \"src/lib/tasks/move.ts\"() {\n \"use strict\";\n init_parse_move();\n init_utils();\n }\n});\n\n// src/lib/tasks/pull.ts\nvar pull_exports = {};\n__export(pull_exports, {\n pullTask: () => pullTask\n});\nfunction pullTask(remote, branch, customArgs) {\n const commands = [\"pull\", ...customArgs];\n if (remote && branch) {\n commands.splice(1, 0, remote, branch);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(stdOut, stdErr) {\n return parsePullResult(stdOut, stdErr);\n },\n onError(result, _error, _done, fail) {\n const pullError = parsePullErrorResult(\n bufferToString(result.stdOut),\n bufferToString(result.stdErr)\n );\n if (pullError) {\n return fail(new GitResponseError(pullError));\n }\n fail(_error);\n }\n };\n}\nvar init_pull = __esm({\n \"src/lib/tasks/pull.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_pull();\n init_utils();\n }\n});\n\n// src/lib/responses/GetRemoteSummary.ts\nfunction parseGetRemotes(text) {\n const remotes = {};\n forEach(text, ([name]) => remotes[name] = { name });\n return Object.values(remotes);\n}\nfunction parseGetRemotesVerbose(text) {\n const remotes = {};\n forEach(text, ([name, url, purpose]) => {\n if (!remotes.hasOwnProperty(name)) {\n remotes[name] = {\n name,\n refs: { fetch: \"\", push: \"\" }\n };\n }\n if (purpose && url) {\n remotes[name].refs[purpose.replace(/[^a-z]/g, \"\")] = url;\n }\n });\n return Object.values(remotes);\n}\nfunction forEach(text, handler) {\n forEachLineWithContent(text, (line) => handler(line.split(/\\s+/)));\n}\nvar init_GetRemoteSummary = __esm({\n \"src/lib/responses/GetRemoteSummary.ts\"() {\n \"use strict\";\n init_utils();\n }\n});\n\n// src/lib/tasks/remote.ts\nvar remote_exports = {};\n__export(remote_exports, {\n addRemoteTask: () => addRemoteTask,\n getRemotesTask: () => getRemotesTask,\n listRemotesTask: () => listRemotesTask,\n remoteTask: () => remoteTask,\n removeRemoteTask: () => removeRemoteTask\n});\nfunction addRemoteTask(remoteName, remoteRepo, customArgs) {\n return straightThroughStringTask([\"remote\", \"add\", ...customArgs, remoteName, remoteRepo]);\n}\nfunction getRemotesTask(verbose) {\n const commands = [\"remote\"];\n if (verbose) {\n commands.push(\"-v\");\n }\n return {\n commands,\n format: \"utf-8\",\n parser: verbose ? parseGetRemotesVerbose : parseGetRemotes\n };\n}\nfunction listRemotesTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"ls-remote\") {\n commands.unshift(\"ls-remote\");\n }\n return straightThroughStringTask(commands);\n}\nfunction remoteTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"remote\") {\n commands.unshift(\"remote\");\n }\n return straightThroughStringTask(commands);\n}\nfunction removeRemoteTask(remoteName) {\n return straightThroughStringTask([\"remote\", \"remove\", remoteName]);\n}\nvar init_remote = __esm({\n \"src/lib/tasks/remote.ts\"() {\n \"use strict\";\n init_GetRemoteSummary();\n init_task();\n }\n});\n\n// src/lib/tasks/stash-list.ts\nvar stash_list_exports = {};\n__export(stash_list_exports, {\n stashListTask: () => stashListTask\n});\nfunction stashListTask(opt = {}, customArgs) {\n const options = parseLogOptions(opt);\n const commands = [\"stash\", \"list\", ...options.commands, ...customArgs];\n const parser4 = createListLogSummaryParser(\n options.splitter,\n options.fields,\n logFormatFromCommand(commands)\n );\n return validateLogFormatConfig(commands) || {\n commands,\n format: \"utf-8\",\n parser: parser4\n };\n}\nvar init_stash_list = __esm({\n \"src/lib/tasks/stash-list.ts\"() {\n \"use strict\";\n init_log_format();\n init_parse_list_log_summary();\n init_diff();\n init_log();\n }\n});\n\n// src/lib/tasks/sub-module.ts\nvar sub_module_exports = {};\n__export(sub_module_exports, {\n addSubModuleTask: () => addSubModuleTask,\n initSubModuleTask: () => initSubModuleTask,\n subModuleTask: () => subModuleTask,\n updateSubModuleTask: () => updateSubModuleTask\n});\nfunction addSubModuleTask(repo, path) {\n return subModuleTask([\"add\", repo, path]);\n}\nfunction initSubModuleTask(customArgs) {\n return subModuleTask([\"init\", ...customArgs]);\n}\nfunction subModuleTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"submodule\") {\n commands.unshift(\"submodule\");\n }\n return straightThroughStringTask(commands);\n}\nfunction updateSubModuleTask(customArgs) {\n return subModuleTask([\"update\", ...customArgs]);\n}\nvar init_sub_module = __esm({\n \"src/lib/tasks/sub-module.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/TagList.ts\nfunction singleSorted(a, b) {\n const aIsNum = isNaN(a);\n const bIsNum = isNaN(b);\n if (aIsNum !== bIsNum) {\n return aIsNum ? 1 : -1;\n }\n return aIsNum ? sorted(a, b) : 0;\n}\nfunction sorted(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction trimmed(input) {\n return input.trim();\n}\nfunction toNumber(input) {\n if (typeof input === \"string\") {\n return parseInt(input.replace(/^\\D+/g, \"\"), 10) || 0;\n }\n return 0;\n}\nvar TagList, parseTagList;\nvar init_TagList = __esm({\n \"src/lib/responses/TagList.ts\"() {\n \"use strict\";\n TagList = class {\n constructor(all, latest) {\n this.all = all;\n this.latest = latest;\n }\n };\n parseTagList = function(data, customSort = false) {\n const tags = data.split(\"\\n\").map(trimmed).filter(Boolean);\n if (!customSort) {\n tags.sort(function(tagA, tagB) {\n const partsA = tagA.split(\".\");\n const partsB = tagB.split(\".\");\n if (partsA.length === 1 || partsB.length === 1) {\n return singleSorted(toNumber(partsA[0]), toNumber(partsB[0]));\n }\n for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) {\n const diff = sorted(toNumber(partsA[i]), toNumber(partsB[i]));\n if (diff) {\n return diff;\n }\n }\n return 0;\n });\n }\n const latest = customSort ? tags[0] : [...tags].reverse().find((tag) => tag.indexOf(\".\") >= 0);\n return new TagList(tags, latest);\n };\n }\n});\n\n// src/lib/tasks/tag.ts\nvar tag_exports = {};\n__export(tag_exports, {\n addAnnotatedTagTask: () => addAnnotatedTagTask,\n addTagTask: () => addTagTask,\n tagListTask: () => tagListTask\n});\nfunction tagListTask(customArgs = []) {\n const hasCustomSort = customArgs.some((option) => /^--sort=/.test(option));\n return {\n format: \"utf-8\",\n commands: [\"tag\", \"-l\", ...customArgs],\n parser(text) {\n return parseTagList(text, hasCustomSort);\n }\n };\n}\nfunction addTagTask(name) {\n return {\n format: \"utf-8\",\n commands: [\"tag\", name],\n parser() {\n return { name };\n }\n };\n}\nfunction addAnnotatedTagTask(name, tagMessage) {\n return {\n format: \"utf-8\",\n commands: [\"tag\", \"-a\", \"-m\", tagMessage, name],\n parser() {\n return { name };\n }\n };\n}\nvar init_tag = __esm({\n \"src/lib/tasks/tag.ts\"() {\n \"use strict\";\n init_TagList();\n }\n});\n\n// src/git.js\nvar require_git = __commonJS({\n \"src/git.js\"(exports, module) {\n \"use strict\";\n var { GitExecutor: GitExecutor2 } = (init_git_executor(), __toCommonJS(git_executor_exports));\n var { SimpleGitApi: SimpleGitApi2 } = (init_simple_git_api(), __toCommonJS(simple_git_api_exports));\n var { Scheduler: Scheduler2 } = (init_scheduler(), __toCommonJS(scheduler_exports));\n var { configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS(task_exports));\n var {\n asArray: asArray2,\n filterArray: filterArray2,\n filterPrimitives: filterPrimitives2,\n filterString: filterString2,\n filterStringOrStringArray: filterStringOrStringArray2,\n filterType: filterType2,\n getTrailingOptions: getTrailingOptions2,\n trailingFunctionArgument: trailingFunctionArgument2,\n trailingOptionsArgument: trailingOptionsArgument2\n } = (init_utils(), __toCommonJS(utils_exports));\n var { applyPatchTask: applyPatchTask2 } = (init_apply_patch(), __toCommonJS(apply_patch_exports));\n var {\n branchTask: branchTask2,\n branchLocalTask: branchLocalTask2,\n deleteBranchesTask: deleteBranchesTask2,\n deleteBranchTask: deleteBranchTask2\n } = (init_branch(), __toCommonJS(branch_exports));\n var { checkIgnoreTask: checkIgnoreTask2 } = (init_check_ignore(), __toCommonJS(check_ignore_exports));\n var { checkIsRepoTask: checkIsRepoTask2 } = (init_check_is_repo(), __toCommonJS(check_is_repo_exports));\n var { cloneTask: cloneTask2, cloneMirrorTask: cloneMirrorTask2 } = (init_clone(), __toCommonJS(clone_exports));\n var { cleanWithOptionsTask: cleanWithOptionsTask2, isCleanOptionsArray: isCleanOptionsArray2 } = (init_clean(), __toCommonJS(clean_exports));\n var { diffSummaryTask: diffSummaryTask2 } = (init_diff(), __toCommonJS(diff_exports));\n var { fetchTask: fetchTask2 } = (init_fetch(), __toCommonJS(fetch_exports));\n var { moveTask: moveTask2 } = (init_move(), __toCommonJS(move_exports));\n var { pullTask: pullTask2 } = (init_pull(), __toCommonJS(pull_exports));\n var { pushTagsTask: pushTagsTask2 } = (init_push(), __toCommonJS(push_exports));\n var {\n addRemoteTask: addRemoteTask2,\n getRemotesTask: getRemotesTask2,\n listRemotesTask: listRemotesTask2,\n remoteTask: remoteTask2,\n removeRemoteTask: removeRemoteTask2\n } = (init_remote(), __toCommonJS(remote_exports));\n var { getResetMode: getResetMode2, resetTask: resetTask2 } = (init_reset(), __toCommonJS(reset_exports));\n var { stashListTask: stashListTask2 } = (init_stash_list(), __toCommonJS(stash_list_exports));\n var {\n addSubModuleTask: addSubModuleTask2,\n initSubModuleTask: initSubModuleTask2,\n subModuleTask: subModuleTask2,\n updateSubModuleTask: updateSubModuleTask2\n } = (init_sub_module(), __toCommonJS(sub_module_exports));\n var { addAnnotatedTagTask: addAnnotatedTagTask2, addTagTask: addTagTask2, tagListTask: tagListTask2 } = (init_tag(), __toCommonJS(tag_exports));\n var { straightThroughBufferTask: straightThroughBufferTask2, straightThroughStringTask: straightThroughStringTask2 } = (init_task(), __toCommonJS(task_exports));\n function Git2(options, plugins) {\n this._plugins = plugins;\n this._executor = new GitExecutor2(\n options.baseDir,\n new Scheduler2(options.maxConcurrentProcesses),\n plugins\n );\n this._trimmed = options.trimmed;\n }\n (Git2.prototype = Object.create(SimpleGitApi2.prototype)).constructor = Git2;\n Git2.prototype.customBinary = function(command) {\n this._plugins.reconfigure(\"binary\", command);\n return this;\n };\n Git2.prototype.env = function(name, value) {\n if (arguments.length === 1 && typeof name === \"object\") {\n this._executor.env = name;\n } else {\n (this._executor.env = this._executor.env || {})[name] = value;\n }\n return this;\n };\n Git2.prototype.stashList = function(options) {\n return this._runTask(\n stashListTask2(\n trailingOptionsArgument2(arguments) || {},\n filterArray2(options) && options || []\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n function createCloneTask(api, task, repoPath, localPath) {\n if (typeof repoPath !== \"string\") {\n return configurationErrorTask2(`git.${api}() requires a string 'repoPath'`);\n }\n return task(repoPath, filterType2(localPath, filterString2), getTrailingOptions2(arguments));\n }\n Git2.prototype.clone = function() {\n return this._runTask(\n createCloneTask(\"clone\", cloneTask2, ...arguments),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.mirror = function() {\n return this._runTask(\n createCloneTask(\"mirror\", cloneMirrorTask2, ...arguments),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.mv = function(from, to) {\n return this._runTask(moveTask2(from, to), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.checkoutLatestTag = function(then) {\n var git = this;\n return this.pull(function() {\n git.tags(function(err, tags) {\n git.checkout(tags.latest, then);\n });\n });\n };\n Git2.prototype.pull = function(remote, branch, options, then) {\n return this._runTask(\n pullTask2(\n filterType2(remote, filterString2),\n filterType2(branch, filterString2),\n getTrailingOptions2(arguments)\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.fetch = function(remote, branch) {\n return this._runTask(\n fetchTask2(\n filterType2(remote, filterString2),\n filterType2(branch, filterString2),\n getTrailingOptions2(arguments)\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.silent = function(silence) {\n console.warn(\n \"simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this will be an error in version 3\"\n );\n return this;\n };\n Git2.prototype.tags = function(options, then) {\n return this._runTask(\n tagListTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.rebase = function() {\n return this._runTask(\n straightThroughStringTask2([\"rebase\", ...getTrailingOptions2(arguments)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.reset = function(mode) {\n return this._runTask(\n resetTask2(getResetMode2(mode), getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.revert = function(commit) {\n const next = trailingFunctionArgument2(arguments);\n if (typeof commit !== \"string\") {\n return this._runTask(configurationErrorTask2(\"Commit must be a string\"), next);\n }\n return this._runTask(\n straightThroughStringTask2([\"revert\", ...getTrailingOptions2(arguments, 0, true), commit]),\n next\n );\n };\n Git2.prototype.addTag = function(name) {\n const task = typeof name === \"string\" ? addTagTask2(name) : configurationErrorTask2(\"Git.addTag requires a tag name\");\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.addAnnotatedTag = function(tagName, tagMessage) {\n return this._runTask(\n addAnnotatedTagTask2(tagName, tagMessage),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.deleteLocalBranch = function(branchName, forceDelete, then) {\n return this._runTask(\n deleteBranchTask2(branchName, typeof forceDelete === \"boolean\" ? forceDelete : false),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.deleteLocalBranches = function(branchNames, forceDelete, then) {\n return this._runTask(\n deleteBranchesTask2(branchNames, typeof forceDelete === \"boolean\" ? forceDelete : false),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.branch = function(options, then) {\n return this._runTask(\n branchTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.branchLocal = function(then) {\n return this._runTask(branchLocalTask2(), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.raw = function(commands) {\n const createRestCommands = !Array.isArray(commands);\n const command = [].slice.call(createRestCommands ? arguments : commands, 0);\n for (let i = 0; i < command.length && createRestCommands; i++) {\n if (!filterPrimitives2(command[i])) {\n command.splice(i, command.length - i);\n break;\n }\n }\n command.push(...getTrailingOptions2(arguments, 0, true));\n var next = trailingFunctionArgument2(arguments);\n if (!command.length) {\n return this._runTask(\n configurationErrorTask2(\"Raw: must supply one or more command to execute\"),\n next\n );\n }\n return this._runTask(straightThroughStringTask2(command, this._trimmed), next);\n };\n Git2.prototype.submoduleAdd = function(repo, path, then) {\n return this._runTask(addSubModuleTask2(repo, path), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.submoduleUpdate = function(args, then) {\n return this._runTask(\n updateSubModuleTask2(getTrailingOptions2(arguments, true)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.submoduleInit = function(args, then) {\n return this._runTask(\n initSubModuleTask2(getTrailingOptions2(arguments, true)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.subModule = function(options, then) {\n return this._runTask(\n subModuleTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.listRemote = function() {\n return this._runTask(\n listRemotesTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.addRemote = function(remoteName, remoteRepo, then) {\n return this._runTask(\n addRemoteTask2(remoteName, remoteRepo, getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.removeRemote = function(remoteName, then) {\n return this._runTask(removeRemoteTask2(remoteName), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.getRemotes = function(verbose, then) {\n return this._runTask(getRemotesTask2(verbose === true), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.remote = function(options, then) {\n return this._runTask(\n remoteTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.tag = function(options, then) {\n const command = getTrailingOptions2(arguments);\n if (command[0] !== \"tag\") {\n command.unshift(\"tag\");\n }\n return this._runTask(straightThroughStringTask2(command), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.updateServerInfo = function(then) {\n return this._runTask(\n straightThroughStringTask2([\"update-server-info\"]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.pushTags = function(remote, then) {\n const task = pushTagsTask2(\n { remote: filterType2(remote, filterString2) },\n getTrailingOptions2(arguments)\n );\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.rm = function(files) {\n return this._runTask(\n straightThroughStringTask2([\"rm\", \"-f\", ...asArray2(files)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.rmKeepLocal = function(files) {\n return this._runTask(\n straightThroughStringTask2([\"rm\", \"--cached\", ...asArray2(files)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.catFile = function(options, then) {\n return this._catFile(\"utf-8\", arguments);\n };\n Git2.prototype.binaryCatFile = function() {\n return this._catFile(\"buffer\", arguments);\n };\n Git2.prototype._catFile = function(format, args) {\n var handler = trailingFunctionArgument2(args);\n var command = [\"cat-file\"];\n var options = args[0];\n if (typeof options === \"string\") {\n return this._runTask(\n configurationErrorTask2(\"Git.catFile: options must be supplied as an array of strings\"),\n handler\n );\n }\n if (Array.isArray(options)) {\n command.push.apply(command, options);\n }\n const task = format === \"buffer\" ? straightThroughBufferTask2(command) : straightThroughStringTask2(command);\n return this._runTask(task, handler);\n };\n Git2.prototype.diff = function(options, then) {\n const task = filterString2(options) ? configurationErrorTask2(\n \"git.diff: supplying options as a single string is no longer supported, switch to an array of strings\"\n ) : straightThroughStringTask2([\"diff\", ...getTrailingOptions2(arguments)]);\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.diffSummary = function() {\n return this._runTask(\n diffSummaryTask2(getTrailingOptions2(arguments, 1)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.applyPatch = function(patches) {\n const task = !filterStringOrStringArray2(patches) ? configurationErrorTask2(\n `git.applyPatch requires one or more string patches as the first argument`\n ) : applyPatchTask2(asArray2(patches), getTrailingOptions2([].slice.call(arguments, 1)));\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.revparse = function() {\n const commands = [\"rev-parse\", ...getTrailingOptions2(arguments, true)];\n return this._runTask(\n straightThroughStringTask2(commands, true),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.clean = function(mode, options, then) {\n const usingCleanOptionsArray = isCleanOptionsArray2(mode);\n const cleanMode = usingCleanOptionsArray && mode.join(\"\") || filterType2(mode, filterString2) || \"\";\n const customArgs = getTrailingOptions2([].slice.call(arguments, usingCleanOptionsArray ? 1 : 0));\n return this._runTask(\n cleanWithOptionsTask2(cleanMode, customArgs),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.exec = function(then) {\n const task = {\n commands: [],\n format: \"utf-8\",\n parser() {\n if (typeof then === \"function\") {\n then();\n }\n }\n };\n return this._runTask(task);\n };\n Git2.prototype.clearQueue = function() {\n return this;\n };\n Git2.prototype.checkIgnore = function(pathnames, then) {\n return this._runTask(\n checkIgnoreTask2(asArray2(filterType2(pathnames, filterStringOrStringArray2, []))),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.checkIsRepo = function(checkType, then) {\n return this._runTask(\n checkIsRepoTask2(filterType2(checkType, filterString2)),\n trailingFunctionArgument2(arguments)\n );\n };\n module.exports = Git2;\n }\n});\n\n// src/lib/api.ts\ninit_pathspec();\n\n// src/lib/errors/git-construct-error.ts\ninit_git_error();\nvar GitConstructError = class extends GitError {\n constructor(config, message) {\n super(void 0, message);\n this.config = config;\n }\n};\n\n// src/lib/api.ts\ninit_git_error();\n\n// src/lib/errors/git-plugin-error.ts\ninit_git_error();\nvar GitPluginError = class extends GitError {\n constructor(task, plugin, message) {\n super(task, message);\n this.task = task;\n this.plugin = plugin;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n};\n\n// src/lib/api.ts\ninit_git_response_error();\ninit_task_configuration_error();\ninit_check_is_repo();\ninit_clean();\ninit_config();\ninit_diff_name_status();\ninit_grep();\ninit_reset();\n\n// src/lib/plugins/abort-plugin.ts\nfunction abortPlugin(signal) {\n if (!signal) {\n return;\n }\n const onSpawnAfter = {\n type: \"spawn.after\",\n action(_data, context) {\n function kill() {\n context.kill(new GitPluginError(void 0, \"abort\", \"Abort signal received\"));\n }\n signal.addEventListener(\"abort\", kill);\n context.spawned.on(\"close\", () => signal.removeEventListener(\"abort\", kill));\n }\n };\n const onSpawnBefore = {\n type: \"spawn.before\",\n action(_data, context) {\n if (signal.aborted) {\n context.kill(new GitPluginError(void 0, \"abort\", \"Abort already signaled\"));\n }\n }\n };\n return [onSpawnBefore, onSpawnAfter];\n}\n\n// src/lib/plugins/block-unsafe-operations-plugin.ts\nfunction isConfigSwitch(arg) {\n return typeof arg === \"string\" && arg.trim().toLowerCase() === \"-c\";\n}\nfunction preventProtocolOverride(arg, next) {\n if (!isConfigSwitch(arg)) {\n return;\n }\n if (!/^\\s*protocol(.[a-z]+)?.allow/.test(next)) {\n return;\n }\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n \"Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol\"\n );\n}\nfunction preventUploadPack(arg, method) {\n if (/^\\s*--(upload|receive)-pack/.test(arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`\n );\n }\n if (method === \"clone\" && /^\\s*-u\\b/.test(arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of clone with option -u is not permitted without enabling allowUnsafePack`\n );\n }\n if (method === \"push\" && /^\\s*--exec\\b/.test(arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of push with option --exec is not permitted without enabling allowUnsafePack`\n );\n }\n}\nfunction blockUnsafeOperationsPlugin({\n allowUnsafeProtocolOverride = false,\n allowUnsafePack = false\n} = {}) {\n return {\n type: \"spawn.args\",\n action(args, context) {\n args.forEach((current, index) => {\n const next = index < args.length ? args[index + 1] : \"\";\n allowUnsafeProtocolOverride || preventProtocolOverride(current, next);\n allowUnsafePack || preventUploadPack(current, context.method);\n });\n return args;\n }\n };\n}\n\n// src/lib/plugins/command-config-prefixing-plugin.ts\ninit_utils();\nfunction commandConfigPrefixingPlugin(configuration) {\n const prefix = prefixedArray(configuration, \"-c\");\n return {\n type: \"spawn.args\",\n action(data) {\n return [...prefix, ...data];\n }\n };\n}\n\n// src/lib/plugins/completion-detection.plugin.ts\ninit_utils();\nimport { deferred } from \"@kwsites/promise-deferred\";\nvar never = deferred().promise;\nfunction completionDetectionPlugin({\n onClose = true,\n onExit = 50\n} = {}) {\n function createEvents() {\n let exitCode = -1;\n const events = {\n close: deferred(),\n closeTimeout: deferred(),\n exit: deferred(),\n exitTimeout: deferred()\n };\n const result = Promise.race([\n onClose === false ? never : events.closeTimeout.promise,\n onExit === false ? never : events.exitTimeout.promise\n ]);\n configureTimeout(onClose, events.close, events.closeTimeout);\n configureTimeout(onExit, events.exit, events.exitTimeout);\n return {\n close(code) {\n exitCode = code;\n events.close.done();\n },\n exit(code) {\n exitCode = code;\n events.exit.done();\n },\n get exitCode() {\n return exitCode;\n },\n result\n };\n }\n function configureTimeout(flag, event, timeout) {\n if (flag === false) {\n return;\n }\n (flag === true ? event.promise : event.promise.then(() => delay(flag))).then(timeout.done);\n }\n return {\n type: \"spawn.after\",\n async action(_data, { spawned, close }) {\n const events = createEvents();\n let deferClose = true;\n let quickClose = () => void (deferClose = false);\n spawned.stdout?.on(\"data\", quickClose);\n spawned.stderr?.on(\"data\", quickClose);\n spawned.on(\"error\", quickClose);\n spawned.on(\"close\", (code) => events.close(code));\n spawned.on(\"exit\", (code) => events.exit(code));\n try {\n await events.result;\n if (deferClose) {\n await delay(50);\n }\n close(events.exitCode);\n } catch (err) {\n close(events.exitCode, err);\n }\n }\n };\n}\n\n// src/lib/plugins/custom-binary.plugin.ts\ninit_utils();\nvar WRONG_NUMBER_ERR = `Invalid value supplied for custom binary, requires a single string or an array containing either one or two strings`;\nvar WRONG_CHARS_ERR = `Invalid value supplied for custom binary, restricted characters must be removed or supply the unsafe.allowUnsafeCustomBinary option`;\nfunction isBadArgument(arg) {\n return !arg || !/^([a-z]:)?([a-z0-9/.\\\\_-]+)$/i.test(arg);\n}\nfunction toBinaryConfig(input, allowUnsafe) {\n if (input.length < 1 || input.length > 2) {\n throw new GitPluginError(void 0, \"binary\", WRONG_NUMBER_ERR);\n }\n const isBad = input.some(isBadArgument);\n if (isBad) {\n if (allowUnsafe) {\n console.warn(WRONG_CHARS_ERR);\n } else {\n throw new GitPluginError(void 0, \"binary\", WRONG_CHARS_ERR);\n }\n }\n const [binary, prefix] = input;\n return {\n binary,\n prefix\n };\n}\nfunction customBinaryPlugin(plugins, input = [\"git\"], allowUnsafe = false) {\n let config = toBinaryConfig(asArray(input), allowUnsafe);\n plugins.on(\"binary\", (input2) => {\n config = toBinaryConfig(asArray(input2), allowUnsafe);\n });\n plugins.append(\"spawn.binary\", () => {\n return config.binary;\n });\n plugins.append(\"spawn.args\", (data) => {\n return config.prefix ? [config.prefix, ...data] : data;\n });\n}\n\n// src/lib/plugins/error-detection.plugin.ts\ninit_git_error();\nfunction isTaskError(result) {\n return !!(result.exitCode && result.stdErr.length);\n}\nfunction getErrorMessage(result) {\n return Buffer.concat([...result.stdOut, ...result.stdErr]);\n}\nfunction errorDetectionHandler(overwrite = false, isError = isTaskError, errorMessage = getErrorMessage) {\n return (error, result) => {\n if (!overwrite && error || !isError(result)) {\n return error;\n }\n return errorMessage(result);\n };\n}\nfunction errorDetectionPlugin(config) {\n return {\n type: \"task.error\",\n action(data, context) {\n const error = config(data.error, {\n stdErr: context.stdErr,\n stdOut: context.stdOut,\n exitCode: context.exitCode\n });\n if (Buffer.isBuffer(error)) {\n return { error: new GitError(void 0, error.toString(\"utf-8\")) };\n }\n return {\n error\n };\n }\n };\n}\n\n// src/lib/plugins/plugin-store.ts\ninit_utils();\nimport { EventEmitter } from \"node:events\";\nvar PluginStore = class {\n constructor() {\n this.plugins = /* @__PURE__ */ new Set();\n this.events = new EventEmitter();\n }\n on(type, listener) {\n this.events.on(type, listener);\n }\n reconfigure(type, data) {\n this.events.emit(type, data);\n }\n append(type, action) {\n const plugin = append(this.plugins, { type, action });\n return () => this.plugins.delete(plugin);\n }\n add(plugin) {\n const plugins = [];\n asArray(plugin).forEach((plugin2) => plugin2 && this.plugins.add(append(plugins, plugin2)));\n return () => {\n plugins.forEach((plugin2) => this.plugins.delete(plugin2));\n };\n }\n exec(type, data, context) {\n let output = data;\n const contextual = Object.freeze(Object.create(context));\n for (const plugin of this.plugins) {\n if (plugin.type === type) {\n output = plugin.action(output, contextual);\n }\n }\n return output;\n }\n};\n\n// src/lib/plugins/progress-monitor-plugin.ts\ninit_utils();\nfunction progressMonitorPlugin(progress) {\n const progressCommand = \"--progress\";\n const progressMethods = [\"checkout\", \"clone\", \"fetch\", \"pull\", \"push\"];\n const onProgress = {\n type: \"spawn.after\",\n action(_data, context) {\n if (!context.commands.includes(progressCommand)) {\n return;\n }\n context.spawned.stderr?.on(\"data\", (chunk) => {\n const message = /^([\\s\\S]+?):\\s*(\\d+)% \\((\\d+)\\/(\\d+)\\)/.exec(chunk.toString(\"utf8\"));\n if (!message) {\n return;\n }\n progress({\n method: context.method,\n stage: progressEventStage(message[1]),\n progress: asNumber(message[2]),\n processed: asNumber(message[3]),\n total: asNumber(message[4])\n });\n });\n }\n };\n const onArgs = {\n type: \"spawn.args\",\n action(args, context) {\n if (!progressMethods.includes(context.method)) {\n return args;\n }\n return including(args, progressCommand);\n }\n };\n return [onArgs, onProgress];\n}\nfunction progressEventStage(input) {\n return String(input.toLowerCase().split(\" \", 1)) || \"unknown\";\n}\n\n// src/lib/plugins/spawn-options-plugin.ts\ninit_utils();\nfunction spawnOptionsPlugin(spawnOptions) {\n const options = pick(spawnOptions, [\"uid\", \"gid\"]);\n return {\n type: \"spawn.options\",\n action(data) {\n return { ...options, ...data };\n }\n };\n}\n\n// src/lib/plugins/timout-plugin.ts\nfunction timeoutPlugin({\n block,\n stdErr = true,\n stdOut = true\n}) {\n if (block > 0) {\n return {\n type: \"spawn.after\",\n action(_data, context) {\n let timeout;\n function wait() {\n timeout && clearTimeout(timeout);\n timeout = setTimeout(kill, block);\n }\n function stop() {\n context.spawned.stdout?.off(\"data\", wait);\n context.spawned.stderr?.off(\"data\", wait);\n context.spawned.off(\"exit\", stop);\n context.spawned.off(\"close\", stop);\n timeout && clearTimeout(timeout);\n }\n function kill() {\n stop();\n context.kill(new GitPluginError(void 0, \"timeout\", `block timeout reached`));\n }\n stdOut && context.spawned.stdout?.on(\"data\", wait);\n stdErr && context.spawned.stderr?.on(\"data\", wait);\n context.spawned.on(\"exit\", stop);\n context.spawned.on(\"close\", stop);\n wait();\n }\n };\n }\n}\n\n// src/lib/plugins/suffix-paths.plugin.ts\ninit_pathspec();\nfunction suffixPathsPlugin() {\n return {\n type: \"spawn.args\",\n action(data) {\n const prefix = [];\n let suffix;\n function append2(args) {\n (suffix = suffix || []).push(...args);\n }\n for (let i = 0; i < data.length; i++) {\n const param = data[i];\n if (isPathSpec(param)) {\n append2(toPaths(param));\n continue;\n }\n if (param === \"--\") {\n append2(\n data.slice(i + 1).flatMap((item) => isPathSpec(item) && toPaths(item) || item)\n );\n break;\n }\n prefix.push(param);\n }\n return !suffix ? prefix : [...prefix, \"--\", ...suffix.map(String)];\n }\n };\n}\n\n// src/lib/git-factory.ts\ninit_utils();\nvar Git = require_git();\nfunction gitInstanceFactory(baseDir, options) {\n const plugins = new PluginStore();\n const config = createInstanceConfig(\n baseDir && (typeof baseDir === \"string\" ? { baseDir } : baseDir) || {},\n options\n );\n if (!folderExists(config.baseDir)) {\n throw new GitConstructError(\n config,\n `Cannot use simple-git on a directory that does not exist`\n );\n }\n if (Array.isArray(config.config)) {\n plugins.add(commandConfigPrefixingPlugin(config.config));\n }\n plugins.add(blockUnsafeOperationsPlugin(config.unsafe));\n plugins.add(suffixPathsPlugin());\n plugins.add(completionDetectionPlugin(config.completion));\n config.abort && plugins.add(abortPlugin(config.abort));\n config.progress && plugins.add(progressMonitorPlugin(config.progress));\n config.timeout && plugins.add(timeoutPlugin(config.timeout));\n config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions));\n plugins.add(errorDetectionPlugin(errorDetectionHandler(true)));\n config.errors && plugins.add(errorDetectionPlugin(config.errors));\n customBinaryPlugin(plugins, config.binary, config.unsafe?.allowUnsafeCustomBinary);\n return new Git(config, plugins);\n}\n\n// src/lib/runners/promise-wrapped.ts\ninit_git_response_error();\nvar functionNamesBuilderApi = [\"customBinary\", \"env\", \"outputHandler\", \"silent\"];\nvar functionNamesPromiseApi = [\n \"add\",\n \"addAnnotatedTag\",\n \"addConfig\",\n \"addRemote\",\n \"addTag\",\n \"applyPatch\",\n \"binaryCatFile\",\n \"branch\",\n \"branchLocal\",\n \"catFile\",\n \"checkIgnore\",\n \"checkIsRepo\",\n \"checkout\",\n \"checkoutBranch\",\n \"checkoutLatestTag\",\n \"checkoutLocalBranch\",\n \"clean\",\n \"clone\",\n \"commit\",\n \"cwd\",\n \"deleteLocalBranch\",\n \"deleteLocalBranches\",\n \"diff\",\n \"diffSummary\",\n \"exec\",\n \"fetch\",\n \"getRemotes\",\n \"init\",\n \"listConfig\",\n \"listRemote\",\n \"log\",\n \"merge\",\n \"mergeFromTo\",\n \"mirror\",\n \"mv\",\n \"pull\",\n \"push\",\n \"pushTags\",\n \"raw\",\n \"rebase\",\n \"remote\",\n \"removeRemote\",\n \"reset\",\n \"revert\",\n \"revparse\",\n \"rm\",\n \"rmKeepLocal\",\n \"show\",\n \"stash\",\n \"stashList\",\n \"status\",\n \"subModule\",\n \"submoduleAdd\",\n \"submoduleInit\",\n \"submoduleUpdate\",\n \"tag\",\n \"tags\",\n \"updateServerInfo\"\n];\nfunction gitP(...args) {\n let git;\n let chain = Promise.resolve();\n try {\n git = gitInstanceFactory(...args);\n } catch (e) {\n chain = Promise.reject(e);\n }\n function builderReturn() {\n return promiseApi;\n }\n function chainReturn() {\n return chain;\n }\n const promiseApi = [...functionNamesBuilderApi, ...functionNamesPromiseApi].reduce(\n (api, name) => {\n const isAsync = functionNamesPromiseApi.includes(name);\n const valid = isAsync ? asyncWrapper(name, git) : syncWrapper(name, git, api);\n const alternative = isAsync ? chainReturn : builderReturn;\n Object.defineProperty(api, name, {\n enumerable: false,\n configurable: false,\n value: git ? valid : alternative\n });\n return api;\n },\n {}\n );\n return promiseApi;\n function asyncWrapper(fn, git2) {\n return function(...args2) {\n if (typeof args2[args2.length] === \"function\") {\n throw new TypeError(\n \"Promise interface requires that handlers are not supplied inline, trailing function not allowed in call to \" + fn\n );\n }\n return chain.then(function() {\n return new Promise(function(resolve, reject) {\n const callback = (err, result) => {\n if (err) {\n return reject(toError(err));\n }\n resolve(result);\n };\n args2.push(callback);\n git2[fn].apply(git2, args2);\n });\n });\n };\n }\n function syncWrapper(fn, git2, api) {\n return (...args2) => {\n git2[fn](...args2);\n return api;\n };\n }\n}\nfunction toError(error) {\n if (error instanceof Error) {\n return error;\n }\n if (typeof error === \"string\") {\n return new Error(error);\n }\n return new GitResponseError(error);\n}\n\n// src/esm.mjs\nvar simpleGit = gitInstanceFactory;\nvar esm_default = gitInstanceFactory;\nexport {\n CheckRepoActions,\n CleanOptions,\n DiffNameStatus,\n GitConfigScope,\n GitConstructError,\n GitError,\n GitPluginError,\n GitResponseError,\n ResetMode,\n TaskConfigurationError,\n esm_default as default,\n gitP,\n grepQueryBuilder,\n pathspec,\n simpleGit\n};\n//# sourceMappingURL=index.js.map\n","import { spawn } from \"node:child_process\";\n/**\n * 使用 `git cat-file --batch` 一次性高效地获取多个文件的完整内容。\n * 这是为脚本设计的最高效的 Git 底层命令之一。\n *\n * @param repoPath git 仓库的绝对或相对路径。\n * @param commitRef 要从中读取文件的 commit 引用 (例如 'HEAD', 'main', 或一个 commit hash)。\n * @param filePaths 一个包含文件路径的数组,路径相对于仓库根目录。\n * @returns 一个 Promise,它解析为一个包含文件内容结果的数组。\n */\nexport async function gitCommitContents(repoPath, commitRef, filePaths) {\n if (filePaths.length === 0) {\n return [];\n }\n return new Promise((resolve, reject) => {\n // 最终的结果 Map\n const resultsMap = new Map(filePaths.map((path) => [path, { path, content: undefined, status: \"M\" }]));\n const gitProcess = spawn(\"git\", [\"cat-file\", \"--batch\"], { cwd: repoPath });\n // 准备写入 stdin 的数据\n const requests = filePaths.map((path) => `${commitRef}:${path}\\n`).join(\"\");\n let stdoutBuffer = Buffer.alloc(0);\n let stderrOutput = \"\";\n gitProcess.stdout.on(\"data\", (chunk) => {\n stdoutBuffer = Buffer.concat([stdoutBuffer, chunk]);\n });\n gitProcess.stderr.on(\"data\", (chunk) => {\n stderrOutput += chunk.toString();\n });\n gitProcess.on(\"error\", (err) => {\n reject(new Error(`Failed to start 'git cat-file' process: ${err.message}`));\n });\n gitProcess.on(\"close\", (code) => {\n if (code !== 0 && stdoutBuffer.length === 0) {\n return reject(new Error(`'git cat-file' process exited with code ${code}. Stderr: ${stderrOutput}`));\n }\n // 进程关闭后,一次性解析所有收到的数据\n let offset = 0;\n for (const path of filePaths) {\n if (offset >= stdoutBuffer.length)\n break;\n const newlineIndex = stdoutBuffer.indexOf(\"\\n\", offset);\n if (newlineIndex === -1)\n break;\n const header = stdoutBuffer.toString(\"utf8\", offset, newlineIndex);\n offset = newlineIndex + 1;\n const result = resultsMap.get(path);\n if (header.endsWith(\" missing\")) {\n // 文件未找到,保持 content 为 undefined\n result.status = \"D\"; // 将其视为已删除或不存在\n }\n else {\n const [, type, sizeStr] = header.split(\" \");\n const size = parseInt(sizeStr, 10);\n if (isNaN(size) || offset + size > stdoutBuffer.length) {\n // 数据不完整或格式错误,跳过\n continue;\n }\n result.content = stdoutBuffer.toString(\"utf8\", offset, offset + size);\n result.status = type === \"blob\" ? \"M\" : \"T\"; // T for Type Changed (e.g., a tree)\n // 移动偏移量,跳过内容和紧随其后的换行符\n offset += size + 1;\n }\n }\n resolve(Array.from(resultsMap.values()));\n });\n // 写入所有请求并关闭 stdin\n gitProcess.stdin.write(requests);\n gitProcess.stdin.end();\n });\n}\n//# sourceMappingURL=gitCommitContents.js.map","import { spawn } from \"node:child_process\";\n/**\n * 一个健壮的、基于 Promise 的 spawn 封装,用于执行子进程并收集其输出。\n * @param cmd 要执行的命令。\n * @param args 命令的参数数组。\n * @param options spawn 的选项,增加了 cwd 用于指定工作目录。\n * @returns 一个包含 stdout, stderr, code, signal 和任何错误的 Promise 对象。\n */\nexport const easySpawn = async (cmd, args, options) => {\n const cp = spawn(cmd, args, { cwd: options.cwd });\n // 使用 Promise.all 并行地收集 stdout, stderr 和进程退出信息\n const [stdout, stderr, closeInfo] = await Promise.all([\n (async () => {\n const out = [];\n for await (const chunk of cp.stdout) {\n out.push(chunk);\n }\n return Buffer.concat(out).toString(\"utf-8\");\n })(),\n (async () => {\n const err = [];\n for await (const chunk of cp.stderr) {\n err.push(chunk);\n }\n return Buffer.concat(err).toString(\"utf-8\");\n })(),\n new Promise((resolve, reject) => {\n // 如果进程启动失败或以非零代码退出,则抛出错误\n cp.on(\"error\", reject);\n cp.on(\"close\", (code, signal) => resolve({ code, signal }));\n }),\n ]);\n if (closeInfo.code !== 0) {\n const command = `${cmd} ${args.join(\" \")}`;\n throw new Error(`Command failed with exit code ${closeInfo.code}: ${command}\\nStderr: ${stderr}`);\n }\n return { stdout, stderr, ...closeInfo };\n};\nexport const emptyEasySpawnResult = Object.freeze({\n stdout: \"\",\n stderr: \"\",\n code: 0,\n signal: null,\n});\n//# sourceMappingURL=easyExec.js.map","// 辅助函数:解析 `git diff --name-status` 的输出\nexport const parseNameStatus = (output) => {\n if (!output.trim()) {\n return [];\n }\n return output\n .trim()\n .split(\"\\n\")\n .map((line) => {\n const parts = line.split(\"\\t\");\n const statusChar = parts[0][0].toUpperCase();\n // 重命名(R)和复制(C)的状态格式为: R100 old_path new_path\n // 我们只关心新路径和'R'或'C'状态\n const filePath = parts.length > 2 ? parts[2] : parts[1];\n return [filePath, statusChar];\n });\n};\n//# sourceMappingURL=parseNameStatus.js.map","/**\n * 简化一个标准的 diff 字符串,移除对 AI 无用的元数据以节省 token。\n * @param fullDiff - 一个完整的、标准的 git diff 输出字符串。\n * @returns 一个只包含 hunk 头和内容行的简化 diff 字符串。\n */\nexport const simplifyDiffForAI = (fullDiff) => {\n // 正则表达式匹配所有需要移除的元数据行\n const metadataPattern = /^(diff --git|index |--- |\\+\\+\\+ |(old|new|deleted) file mode )/;\n return fullDiff\n .split(\"\\n\")\n .filter((line) => !metadataPattern.test(line))\n .join(\"\\n\");\n};\n//# sourceMappingURL=simplifyDiffForAI.js.map","import { easySpawn } from \"./easyExec.js\";\nimport { parseNameStatus } from \"./parseNameStatus.js\";\nimport { simplifyDiffForAI } from \"./simplifyDiffForAI.js\";\n/**\n * 高效、安全地获取某次提交引入的变更 diff 内容。\n * 此函数是只读的,并且其输出经过优化,以最大限度地减少 AI 的 token 消耗。\n *\n * @param repoPath git 仓库的绝对路径。\n * @param commitRef 要查询的 commit 引用 (例如 'HEAD', 'main', 或一个 commit hash)。\n * @param filePaths (可选) 一个文件路径数组。如果提供,则只获取这些文件的 diff;否则获取该次提交中所有文件的 diff。\n * @returns 一个 Promise,它解析为一个包含文件 diff 信息的数组。\n */\nexport async function gitCommitDiffs(repoPath, commitRef, filePaths) {\n // --- 步骤 1: 发现变更文件 ---\n // 使用 `git diff-tree`,这是发现一个 commit 变更最快、最精确的底层命令。\n // 其输出格式与 `git diff --name-status` 兼容,可复用解析逻辑。\n const fileArgs = filePaths && filePaths.length > 0 ? [\"--\", ...filePaths] : [];\n const discoveryArgs = [\n \"diff-tree\",\n \"--no-commit-id\", // 省略 commit hash 输出\n \"--name-status\", // 输出文件状态和路径\n \"-r\", // 递归到子目录\n commitRef,\n ...fileArgs,\n ];\n const discoveryResult = await easySpawn(\"git\", discoveryArgs, { cwd: repoPath });\n const changedFiles = parseNameStatus(discoveryResult.stdout);\n if (changedFiles.length === 0) {\n return [];\n }\n // --- 步骤 2: 批量获取并简化 Diff ---\n // 使用一次 `git show` 调用,高效地获取所有变更文件的 diff 内容。\n const changedFilePaths = Array.from(changedFiles, (v) => v[0]);\n const showArgs = [\n \"show\",\n commitRef,\n \"-M\", // 开启 rename detection\n \"-C\", // 开启 copy detection\n \"--\", // 分隔符,确保文件名不会被误解为参数\n ...changedFilePaths,\n ];\n const diffResult = await easySpawn(\"git\", showArgs, { cwd: repoPath });\n // --- 步骤 3: 解析并组装结果 ---\n const diffs = [];\n const diffChunks = diffResult.stdout.trim().split(\"\\ndiff --git \");\n // 跳过第一个元素,因为它通常是 commit 信息\n const changedFilesMap = new Map(changedFiles);\n for (const chunk of diffChunks.slice(1)) {\n const fullDiff = \"diff --git \" + chunk;\n const firstLine = fullDiff.substring(0, fullDiff.indexOf(\"\\n\"));\n // 使用更健壮的正则来匹配文件名\n const pathMatch = firstLine.match(/ b\\/(.*)$/s);\n if (pathMatch) {\n const path = pathMatch[1].trim();\n const status = changedFilesMap.get(path);\n if (status) {\n diffs.push({\n path,\n status,\n diff: simplifyDiffForAI(fullDiff),\n });\n }\n }\n }\n return diffs;\n}\n//# sourceMappingURL=gitCommitDiffs.js.map","import { easySpawn, emptyEasySpawnResult } from \"./easyExec.js\";\nimport { parseNameStatus } from \"./parseNameStatus.js\";\nexport const getWorkingFiles = async (repoPath, options) => {\n const fileArgs = options.filePaths && options.filePaths.length > 0 ? [\"--\", ...options.filePaths] : [];\n const stagedOnly = !!options.staged;\n // --- 步骤 1: 并行发现所有变更文件 ---\n const [stagedResult, unstagedResult, untrackedResult] = await Promise.all([\n easySpawn(\"git\", [\"diff\", \"--staged\", \"--name-status\", ...fileArgs], { cwd: repoPath }),\n stagedOnly ? emptyEasySpawnResult : easySpawn(\"git\", [\"diff\", \"--name-status\", ...fileArgs], { cwd: repoPath }),\n stagedOnly ? emptyEasySpawnResult : easySpawn(\"git\", [\"ls-files\", \"--others\", \"--exclude-standard\", ...fileArgs], { cwd: repoPath }),\n ]);\n // --- 步骤 2: 解析和合并文件列表 ---\n const trackedChanges = new Map([\n ...parseNameStatus(stagedResult.stdout),\n // 如果是 stagedOnly,unstagedResult.stdout 会是空字符串,无副作用\n ...parseNameStatus(unstagedResult.stdout),\n ]);\n const untrackedFiles = untrackedResult.stdout.trim().split(\"\\n\").filter(Boolean);\n return {\n stagedOnly,\n trackedChanges,\n untrackedFiles,\n };\n};\nexport const hasGitHead = async (repoPath, verify = \"HEAD\") => {\n const headExistsResult = await easySpawn(\"git\", [\"rev-parse\", \"--verify\", verify], { cwd: repoPath }).catch(() => ({ code: 1 }));\n return headExistsResult.code === 0;\n};\n//# sourceMappingURL=getWorkingFiles.js.map","import { func_parallel_limit } from \"@gaubee/util\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { getWorkingFiles } from \"./getWorkingFiles.js\";\n/**\n * 内部辅助函数:使用 `git cat-file --batch` 从暂存区读取多个文件。\n * 注意:这里的实现与之前的 `getMultipleFileContents` 非常相似,但查询的是暂存区对象。\n */\nexport async function gitWorkingContents(repoPath, options) {\n const { trackedChanges, untrackedFiles } = await getWorkingFiles(repoPath, options);\n const results = new Map();\n await func_parallel_limit([...trackedChanges.entries(), ...untrackedFiles.map((filepath) => [filepath, \"A\"])].map(([filepath, status]) => {\n return async () => {\n results.set(filepath, {\n path: filepath,\n content: status === \"D\" ? undefined : await fs.readFile(path.join(repoPath, filepath), \"utf-8\"),\n status,\n });\n };\n }), 10);\n return [...results.values()];\n}\n//# sourceMappingURL=gitWorkingContents.js.map","import { promises as fs } from \"node:fs\";\nimport { join as pathJoin } from \"node:path\";\nimport { easySpawn } from \"./easyExec.js\";\nimport { getWorkingFiles, hasGitHead } from \"./getWorkingFiles.js\";\nimport { simplifyDiffForAI } from \"./simplifyDiffForAI.js\";\n/**\n * 高效、安全地获取工作区中所有或仅暂存的变更 diff 内容。\n * 此函数是只读的,不会修改 Git 仓库的任何状态。\n *\n * @param repoPath git 仓库的绝对路径。\n * @param options (可选) 配置对象。\n * @param options.filePaths (可选) 一个文件路径数组。如果提供,则只获取这些文件的 diff。\n * @param options.staged (可选) 如果为 true,则仅获取暂存区的变更。默认为 false (获取所有变更)。\n * @returns 一个 Promise,它解析为一个包含所有文件 diff 信息的数组。\n */\nexport async function gitWorkingDiffs(repoPath, options) {\n const { stagedOnly, trackedChanges, untrackedFiles } = await getWorkingFiles(repoPath, options);\n const diffPromises = [];\n // --- 步骤 3: 为不同类型的变更生成 Diff ---\n // A. 为所有已跟踪的文件批量生成 Diff\n if (trackedChanges.size > 0) {\n const trackedFilesPaths = [...trackedChanges.keys()];\n // FIX: 根据 stagedOnly 标志选择正确的 diff 命令\n let diffArgs;\n if (stagedOnly) {\n // 如果只看暂存区,必须使用 'git diff --staged'\n diffArgs = [\"diff\", \"--staged\", \"-M\", \"-C\", \"--\", ...trackedFilesPaths];\n }\n else {\n const hasHead = await hasGitHead(repoPath);\n // 如果看所有变更,则统一比较工作区和 HEAD\n const diffCmd = hasHead ? \"diff\" : \"diff --staged\";\n const diffBase = hasHead ? \"HEAD\" : \"\";\n // 避免当 diffBase 为空时,向参数列表添加一个空字符串\n diffArgs = diffBase ? [diffCmd, diffBase, \"-M\", \"-C\", \"--\", ...trackedFilesPaths] : [diffCmd, \"--\", ...trackedFilesPaths];\n }\n const promise = easySpawn(\"git\", diffArgs, { cwd: repoPath }).then((result) => {\n const diffs = [];\n const diffChunks = result.stdout.trim().split(\"\\ndiff --git \");\n for (const chunk of diffChunks.filter(Boolean)) {\n const fullDiff = chunk.startsWith(\"diff --git \") ? chunk : \"diff --git \" + chunk;\n const firstLine = fullDiff.substring(0, fullDiff.indexOf(\"\\n\"));\n const pathMatch = firstLine.match(/ b\\/(.*)$/s);\n if (pathMatch) {\n const path = pathMatch[1].trim();\n const status = trackedChanges.get(path);\n if (status) {\n diffs.push({ path, status, diff: simplifyDiffForAI(fullDiff) });\n }\n }\n }\n return diffs;\n });\n diffPromises.push(promise);\n }\n // B. 为新增的未跟踪文件并行、高效地生成极简 Diff (使用 fs.readFile)\n untrackedFiles.forEach((path) => {\n const absolutePath = pathJoin(repoPath, path);\n const promise = fs.readFile(absolutePath, \"utf-8\").then((content) => {\n // 手动创建一个最基本的 diff 结构,然后简化它\n const lines = content.split(\"\\n\");\n const hunkHeader = `@@ -0,0 +1,${lines.length} @@`;\n const diffBody = lines.map((line) => `+${line}`).join(\"\\n\");\n const simplifiedDiff = `${hunkHeader}\\n${diffBody}`;\n return {\n path,\n status: \"A\",\n diff: simplifiedDiff,\n };\n });\n diffPromises.push(promise);\n });\n // --- 步骤 4: 合并所有结果 ---\n const results = await Promise.all(diffPromises);\n return results.flat();\n}\n//# sourceMappingURL=gitWorkingDiffs.js.map","import { match } from \"ts-pattern\";\nexport const humanfiyedGitFileStatus = (status) => {\n return match(status)\n .with(\"A\", () => \"Added\")\n .with(\"M\", () => \"Modified\")\n .with(\"D\", () => \"Deleted\")\n .with(\"R\", () => \"Renamed\")\n .with(\"U\", () => \"Unmerged\")\n .with(\"T\", () => \"Type Changed\")\n .otherwise((v) => v);\n};\n//# sourceMappingURL=types.js.map","import micromatch from \"micromatch\";\nimport { cpus } from \"node:os\";\nimport path from \"node:path\";\nimport { simpleGit } from \"simple-git\";\nimport { match, P } from \"ts-pattern\";\nimport { gitCommitContents } from \"../../git-helper/gitCommitContents.js\";\nimport { gitCommitDiffs } from \"../../git-helper/gitCommitDiffs.js\";\nimport { gitWorkingContents } from \"../../git-helper/gitWorkingContents.js\";\nimport { gitWorkingDiffs } from \"../../git-helper/gitWorkingDiffs.js\";\nimport { humanfiyedGitFileStatus } from \"../../git-helper/types.js\";\nfunction useFileOrInject(mode, filepath, filecontent, opts = {}) {\n const lines = [];\n const prefixStr = match(opts.prefix)\n .with(P.number, (len) => \" \".repeat(len))\n .with(P.string, (str) => str)\n .otherwise(() => \"\");\n const contentLines = (filecontent) => (prefixStr.length ? filecontent.split(\"\\n\").map((line) => prefixStr + line) : [filecontent]);\n if (mode === \"FILE\") {\n const split = filecontent?.includes(\"```\") ? \"````\" : \"```\";\n const ext = path.parse(filepath).ext.slice(1);\n lines.push(`${prefixStr}\\`${filepath}\\``, \"\");\n if (filecontent) {\n lines.push(prefixStr +\n split +\n match(opts.lang)\n .with(P.string, (v) => v)\n .otherwise(() => ext), ...contentLines(filecontent), prefixStr + split, \"\");\n }\n }\n else if (mode === \"INJECT\") {\n if (filecontent) {\n lines.push(...contentLines(filecontent));\n }\n }\n else {\n lines.push(`<!-- unknown mode ${mode} -->`);\n }\n return lines.join(\"\\n\");\n}\nexport const handleGitReplacement = async ({ globOrFilepath, mode, params, baseDir }) => {\n const git = simpleGit({ baseDir, maxConcurrentProcesses: cpus().length });\n let commitHash;\n let filePattern;\n const parts = globOrFilepath.split(\":\");\n if (parts.length > 1) {\n commitHash = parts.at(0);\n filePattern = parts.slice(1).join(\":\").split(/\\s*,\\s*/);\n }\n else {\n filePattern = globOrFilepath.split(/\\s*,\\s*/);\n }\n filePattern = filePattern.map(p => p.trim());\n try {\n let filesToProcess = [];\n if (commitHash) {\n filesToProcess = (await git.show([commitHash, \"-M\", \"-C\", \"--pretty=\", \"--name-only\", \"--\", ...filePattern])).split(\"\\n\").filter(Boolean);\n }\n else {\n const statusResult = await git.status();\n const uncommittedFiles = statusResult.files.filter((f) => f.index !== \" \" || f.working_dir !== \" \").map((f) => f.path);\n filesToProcess = micromatch.match(uncommittedFiles, filePattern);\n }\n const ignorePattern = match(params.ignore)\n .with(P.string, (v) => [v])\n .with(P.array(P.string), (v) => v)\n .otherwise(() => undefined);\n if (ignorePattern && ignorePattern.length > 0) {\n const fileToIgnore = micromatch.match(filesToProcess, ignorePattern);\n if (fileToIgnore.length > 0) {\n const ignoreFiles = new Set(fileToIgnore);\n filesToProcess = filesToProcess.filter((file) => !ignoreFiles.has(file));\n }\n }\n if (filesToProcess.length === 0) {\n return `<!-- No files found for pattern: ${filePattern} ${commitHash ? `at commit ${commitHash}` : \"in working directory\"} -->`;\n }\n const lines = [];\n if (mode === \"GIT_FILE\") {\n const result = commitHash\n ? await gitCommitContents(baseDir, commitHash, filesToProcess)\n : await gitWorkingContents(baseDir, {\n filePaths: filesToProcess,\n staged: typeof params.staged === \"boolean\" ? params.staged : undefined,\n });\n for (const item of result) {\n const ext = path.parse(item.path).ext.slice(1);\n lines.push(useFileOrInject(\"FILE\", `${item.path} (${humanfiyedGitFileStatus(item.status)})`, item.content, {\n prefix: params.prefix,\n lang: params[`map_ext_${ext}_lang`] ?? params.lang,\n }));\n }\n }\n else if (mode === \"GIT_DIFF\") {\n const result = commitHash\n ? await gitCommitDiffs(baseDir, commitHash, filesToProcess)\n : await gitWorkingDiffs(baseDir, {\n staged: typeof params.staged === \"boolean\" ? params.staged : undefined,\n filePaths: filesToProcess,\n });\n for (const item of result) {\n lines.push(useFileOrInject(\"FILE\", `${item.path} (${humanfiyedGitFileStatus(item.status)})`, item.diff, { prefix: params.prefix, lang: \"diff\" }));\n }\n }\n return lines.join(\"\\n\");\n }\n catch (error) {\n console.error(`Error processing GIT mode for ${globOrFilepath}:`, error);\n return `<!-- Error processing GIT mode for ${globOrFilepath}: ${error.message} -->`;\n }\n};\n//# sourceMappingURL=git-replacer.js.map","/**\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: 'IJ',\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: 'ffi',\n fflig: 'ff',\n ffllig: 'ffl',\n ffr: '𝔣',\n filig: 'fi',\n fjlig: 'fj',\n flat: '♭',\n fllig: 'fl',\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: 'ij',\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',\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\n// To do: next major: use `Object.hasOwn`.\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\" || otherEvent[1].type === \"listItemIndent\") {\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 let tokenizer = token._tokenizer;\n if (!tokenizer) {\n tokenizer = context.parser[token.contentType](token.start);\n if (token._contentTypeTextTrailing) {\n tokenizer._contentTypeTextTrailing = true;\n }\n }\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[content][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\n // Allow final trailing whitespace.\n if (context._contentTypeTextTrailing && eventIndex === events.length) {\n size = 0;\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 /* c8 ignore next 4 -- used to be used, no longer */\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 * @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 * @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('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 { fromMarkdown } from 'mdast-util-from-markdown';\nimport { visit } from 'unist-util-visit';\n/**\n * Surgically removes HTML-style comments from a Markdown string\n * without reformatting the rest of the content.\n *\n * @param markdownContent The original Markdown string.\n * @returns Markdown string with only comments removed.\n */\nexport function removeMarkdownComments(markdownContent) {\n if (!markdownContent) {\n return '';\n }\n // 1. 解析 Markdown 获取带位置信息的 AST\n // 我们使用更底层的 fromMarkdown,因为它默认就提供位置信息\n const tree = fromMarkdown(markdownContent);\n const commentIntervals = [];\n // 2. 遍历 AST,收集所有注释节点的位置\n visit(tree, 'html', (node) => {\n if (node.value.startsWith('<!--')) {\n const position = node.position;\n if (position?.start?.offset !== undefined && position?.end?.offset !== undefined) {\n commentIntervals.push({\n start: position.start.offset,\n end: position.end.offset,\n });\n }\n }\n });\n if (commentIntervals.length === 0) {\n return markdownContent;\n }\n // 3. 从后往前,根据位置信息从原始字符串中移除注释\n // 从后往前操作是为了避免前面的删除操作影响后面区间的索引\n let result = markdownContent;\n for (let i = commentIntervals.length - 1; i >= 0; i--) {\n const { start, end } = commentIntervals[i];\n result = result.slice(0, start) + result.slice(end);\n }\n return result;\n}\n//# sourceMappingURL=markdown-remove-comment.js.map","process.removeAllListeners(\"warning\");\nimport { blue, createResolver, createResolverByRootFile, gray, green, matter, normalizeFilePath } from \"@gaubee/nodekit\";\nimport { defaultParseSearch } from \"@tanstack/router-core\";\nimport Debug from \"debug\";\nimport { globbySync, isDynamicPattern } from \"globby\";\nimport fs, { mkdirSync, writeFileSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { match, P } from \"ts-pattern\";\nimport { handleFileReplacement } from \"./gen-prompt/replacers/file-replacer.js\";\nimport { handleGitReplacement } from \"./gen-prompt/replacers/git-replacer.js\";\nimport { reactiveFs } from \"./reactive-fs/reactive-fs.js\";\nimport { removeMarkdownComments } from \"./utils/markdown-remove-comment.js\";\nexport const debug = Debug(\"gen-prompt\");\nasync function processReplacement(codeName, globOrFilepath, mode, paramString, rootResolver, baseDir) {\n if (globOrFilepath.startsWith(\"`\") && globOrFilepath.endsWith(\"`\")) {\n globOrFilepath = globOrFilepath.replace(/^`+(.*)`+$/, \"$1\");\n }\n globOrFilepath = normalizeFilePath(globOrFilepath);\n const normalizedMode = mode.toUpperCase().replaceAll(\"-\", \"_\").trim();\n const params = defaultParseSearch(paramString || \"\");\n const options = { codeName, globOrFilepath, mode: normalizedMode, params, rootResolver, baseDir };\n debug(\"Dispatching replacement for:\", { globOrFilepath, mode: normalizedMode, params });\n // Dispatch to the appropriate replacer based on the mode prefix.\n if (mode.startsWith(\"GIT\")) {\n return handleGitReplacement(options);\n }\n // Default to file replacer for FILE, FILE_TREE, INJECT, etc.\n return handleFileReplacement(options);\n}\nexport async function gen_prompt(input, _output, cwd) {\n console.log(blue(\"gen_prompt\"), input);\n const inputSource = reactiveFs.readFile(input);\n const codeName = path.parse(input).name;\n let { data: inputData, content: inputContent } = matter(inputSource);\n inputContent = removeMarkdownComments(inputContent).trim();\n const currentRootResolver = match(cwd)\n .with(P.string, (c) => createResolver(c))\n .otherwise(() => match(inputData.cwd)\n .with(P.when((p) => p && path.isAbsolute(p)), (p) => createResolver(p))\n .with(P.string, (p) => createResolver(path.resolve(path.dirname(input), p)))\n .otherwise(() => createResolverByRootFile(input, \".git\", () => path.dirname(input))));\n const output = currentRootResolver(_output ??\n match(inputData.output)\n .with(P.string, (v) => v)\n .otherwise(() => input.replace(/\\.md$/, \".gen.md\")));\n const outputContent = await _gen_content(codeName, inputContent, currentRootResolver);\n mkdirSync(path.dirname(output), { recursive: true });\n writeFileSync(output, outputContent);\n console.log(blue(new Date().toLocaleTimeString()), green(`✅ ${path.parse(output).name} updated`));\n}\nexport async function _gen_content(codeName, inputContent, rootResolver) {\n const regex = /\\[(.+?)\\]\\(@([\\w-_:]+)(\\?.+)?\\)/g;\n const matches = [...inputContent.matchAll(regex)];\n const replacementPromises = matches.map((match) => {\n const [_, globOrFilepath, mode, paramString] = match;\n return processReplacement(codeName, globOrFilepath, mode, paramString, rootResolver, rootResolver.dirname);\n });\n const replacements = await Promise.all(replacementPromises);\n let outputContent = inputContent;\n for (let i = matches.length - 1; i >= 0; i--) {\n const match = matches[i];\n const replacement = replacements[i];\n if (match.index !== undefined) {\n outputContent = outputContent.substring(0, match.index) + replacement + outputContent.substring(match.index + match[0].length);\n }\n }\n return outputContent;\n}\nexport const doGenPrompts = async (argv) => {\n const once = !argv.watch;\n const CWD = argv.cwd || process.cwd();\n if (argv.watch) {\n console.log(gray(\"\\nWatching for file changes... Press Ctrl+C to exit.\"));\n }\n await reactiveFs.use(async () => {\n for (const input of argv.inputs) {\n const resolvedInput = path.resolve(CWD, input);\n if (isDynamicPattern(input)) {\n const files = globbySync(input, { cwd: CWD });\n console.log(`Glob pattern '${input}' matched ${files.length} files.`);\n for (const file of files) {\n await gen_prompt(file, undefined, CWD);\n }\n }\n else if (fs.existsSync(resolvedInput)) {\n const stat = fs.statSync(resolvedInput);\n if (stat.isFile()) {\n gen_prompt(resolvedInput, argv.outFile, CWD);\n }\n else if (stat.isDirectory()) {\n console.log(`Processing directory '${input}' with glob '${argv.glob}'...`);\n for (const filename of reactiveFs.readDirByGlob(resolvedInput, argv.glob)) {\n gen_prompt(path.join(resolvedInput, filename), undefined, CWD);\n }\n }\n }\n else {\n console.warn(`Warning: Input path does not exist, but treating as a potential glob: ${input}`);\n const files = reactiveFs.readDirByGlob(CWD, input);\n if (files.length > 0) {\n for (const file of files) {\n await gen_prompt(file, undefined, CWD);\n }\n }\n else {\n console.error(`Error: Input '${input}' not found and did not match any files.`);\n }\n }\n }\n }, { once });\n};\n//# sourceMappingURL=gen-prompt.js.map"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117],"mappings":"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"}