@podlite/markdown 0.0.5 → 0.0.6
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.
- package/CHANGELOG.md +14 -0
- package/README.md +31 -5
- package/index.js +1 -1
- package/jest.config.js +0 -1
- package/jest.tsconfig.json +1 -1
- package/lib/{index.js → index.cjs} +19 -19
- package/lib/index.cjs.map +7 -0
- package/lib/index.esm.js +30171 -0
- package/lib/index.esm.js.map +7 -0
- package/package.json +9 -9
- package/scripts/build.ts +6 -6
- package/scripts/build_esm.ts +12 -9
- package/src/index.tsx +20 -24
- package/src/tools.ts +180 -135
- package/t/parse.test.ts +120 -123
- package/t/plugin.test.tsx +39 -47
- package/tsconfig-esm.json +6 -0
- package/tsconfig.json +2 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/esm/index.d.ts +0 -6
- package/esm/index.js +0 -39
- package/esm/index.js.map +0 -7
- package/esm/tools.d.ts +0 -6
- package/lib/index.js.map +0 -7
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../node_modules/ajv/lib/compile/rules.ts", "../../../node_modules/ajv/lib/compile/validate/applicability.ts", "../../../node_modules/ajv/lib/compile/codegen/code.ts", "../../../node_modules/ajv/lib/compile/codegen/scope.ts", "../../../node_modules/ajv/lib/compile/codegen/index.ts", "../../../node_modules/ajv/lib/compile/names.ts", "../../../node_modules/ajv/lib/compile/errors.ts", "../../../node_modules/ajv/lib/compile/validate/boolSchema.ts", "../../../node_modules/ajv/lib/compile/validate/defaults.ts", "../../../node_modules/ajv/lib/compile/subschema.ts", "../../../node_modules/ajv/lib/vocabularies/code.ts", "../../../node_modules/ajv/lib/compile/validate/keyword.ts", "../../../node_modules/ajv/lib/compile/validate/iterate.ts", "../../../node_modules/fast-deep-equal/index.js", "../../../node_modules/ajv/node_modules/json-schema-traverse/index.js", "../../../node_modules/uri-js/src/index.ts", "../../../node_modules/uri-js/src/schemes/urn-uuid.ts", "../../../node_modules/uri-js/src/schemes/urn.ts", "../../../node_modules/uri-js/src/schemes/mailto.ts", "../../../node_modules/uri-js/src/schemes/wss.ts", "../../../node_modules/uri-js/src/schemes/ws.ts", "../../../node_modules/uri-js/src/schemes/https.ts", "../../../node_modules/uri-js/src/schemes/http.ts", "../../../node_modules/uri-js/src/uri.ts", "../../../node_modules/uri-js/node_modules/punycode/punycode.es6.js", "../../../node_modules/uri-js/src/regexps-iri.ts", "../../../node_modules/uri-js/src/regexps-uri.ts", "../../../node_modules/uri-js/src/util.ts", "../../../node_modules/ajv/lib/compile/resolve.ts", "../../../node_modules/ajv/lib/compile/validate/index.ts", "../../../node_modules/ajv/lib/compile/util.ts", "../../../node_modules/ajv/lib/compile/validate/dataType.ts", "../../../node_modules/ajv/lib/compile/context.ts", "../../../node_modules/ajv/lib/compile/error_classes.ts", "../../../node_modules/ajv/lib/compile/index.ts", "../../../node_modules/ajv/lib/core.ts", "../../../node_modules/ajv/lib/vocabularies/core/id.ts", "../../../node_modules/ajv/lib/vocabularies/core/ref.ts", "../../../node_modules/ajv/lib/vocabularies/core/index.ts", "../../../node_modules/ajv/lib/vocabularies/validation/limitNumber.ts", "../../../node_modules/ajv/lib/vocabularies/validation/multipleOf.ts", "../../../node_modules/ajv/lib/compile/ucs2length.ts", "../../../node_modules/ajv/lib/vocabularies/validation/limitLength.ts", "../../../node_modules/ajv/lib/vocabularies/validation/pattern.ts", "../../../node_modules/ajv/lib/vocabularies/validation/limitProperties.ts", "../../../node_modules/ajv/lib/vocabularies/validation/required.ts", "../../../node_modules/ajv/lib/vocabularies/validation/limitItems.ts", "../../../node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts", "../../../node_modules/ajv/lib/vocabularies/validation/const.ts", "../../../node_modules/ajv/lib/vocabularies/validation/enum.ts", "../../../node_modules/ajv/lib/vocabularies/validation/index.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/items.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/contains.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/dependencies.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/properties.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/not.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/anyOf.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/oneOf.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/allOf.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/if.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/thenElse.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/index.ts", "../../../node_modules/ajv/lib/vocabularies/format/format.ts", "../../../node_modules/ajv/lib/vocabularies/format/index.ts", "../../../node_modules/ajv/lib/vocabularies/metadata.ts", "../../../node_modules/ajv/lib/vocabularies/draft7.ts", "../../../node_modules/ajv/lib/ajv.ts", "../../../node_modules/foreach/index.js", "../../../node_modules/json-pointer/index.js", "../../podlite-schema/schema/index.js", "../../podlite-schema/src/grammar.js", "../../podlite-schema/src/grammarfc.js", "../../../node_modules/unified/node_modules/is-buffer/index.js", "../../../node_modules/extend/index.js", "../../../node_modules/vfile/node_modules/is-buffer/index.js", "../src/index.tsx", "../../podlite-schema/src/index.ts", "../../podlite-schema/src/helpers/makeQuery.ts", "../../../node_modules/nanoid/index.js", "../../../node_modules/nanoid/url-alphabet/index.js", "../../podlite-schema/src/blocks-helpers.ts", "../../podlite-schema/src/helpers/config.ts", "../../podlite-schema/src/ast-helpers.ts", "../../podlite-schema/src/helpers/makeInterator.ts", "../../podlite-schema/src/helpers/handlers.ts", "../../podlite-schema/src/helpers/makeTransformer.ts", "../../podlite-schema/src/writer.ts", "../../podlite-schema/src/exportAny.ts", "../../podlite-schema/src/plugin-clean-location.ts", "../../podlite-schema/src/plugin-vmargin.ts", "../../podlite-schema/src/plugin-formatting-codes.ts", "../../podlite-schema/src/plugin-items.ts", "../../podlite-schema/src/plugin-heading.ts", "../../podlite-schema/src/plugin-group-defn.ts", "../../podlite-schema/src/plugin-group-items.ts", "../../podlite-schema/src/plugin-defn-fill-term.ts", "../../podlite-schema/src/plugin-tables.ts", "../../podlite-schema/src/exportHtml.ts", "../../../node_modules/bail/index.js", "../../../node_modules/unified/lib/index.js", "../../../node_modules/unified/node_modules/is-plain-obj/index.js", "../../../node_modules/trough/index.js", "../../../node_modules/vfile/lib/index.js", "../../../node_modules/unist-util-stringify-position/index.js", "../../../node_modules/vfile-message/index.js", "../../../node_modules/vfile/lib/minpath.js", "../../../node_modules/vfile/lib/minproc.js", "../../../node_modules/vfile/lib/minurl.js", "../../../node_modules/vfile/lib/minurl.shared.js", "../../../node_modules/mdast-util-to-string/index.js", "../../../node_modules/micromark-util-chunked/index.js", "../../../node_modules/micromark-util-combine-extensions/index.js", "../../../node_modules/micromark-util-character/lib/unicode-punctuation-regex.js", "../../../node_modules/micromark-util-character/index.js", "../../../node_modules/micromark-factory-space/index.js", "../../../node_modules/micromark/lib/initialize/content.js", "../../../node_modules/micromark/lib/initialize/document.js", "../../../node_modules/micromark-util-classify-character/index.js", "../../../node_modules/micromark-util-resolve-all/index.js", "../../../node_modules/micromark-core-commonmark/lib/attention.js", "../../../node_modules/micromark-core-commonmark/lib/autolink.js", "../../../node_modules/micromark-core-commonmark/lib/blank-line.js", "../../../node_modules/micromark-core-commonmark/lib/block-quote.js", "../../../node_modules/micromark-core-commonmark/lib/character-escape.js", "../../../node_modules/character-entities/index.js", "../../../node_modules/decode-named-character-reference/index.js", "../../../node_modules/micromark-core-commonmark/lib/character-reference.js", "../../../node_modules/micromark-core-commonmark/lib/code-fenced.js", "../../../node_modules/micromark-core-commonmark/lib/code-indented.js", "../../../node_modules/micromark-core-commonmark/lib/code-text.js", "../../../node_modules/micromark-util-subtokenize/index.js", "../../../node_modules/micromark-core-commonmark/lib/content.js", "../../../node_modules/micromark-factory-destination/index.js", "../../../node_modules/micromark-factory-label/index.js", "../../../node_modules/micromark-factory-title/index.js", "../../../node_modules/micromark-factory-whitespace/index.js", "../../../node_modules/micromark-util-normalize-identifier/index.js", "../../../node_modules/micromark-core-commonmark/lib/definition.js", "../../../node_modules/micromark-core-commonmark/lib/hard-break-escape.js", "../../../node_modules/micromark-core-commonmark/lib/heading-atx.js", "../../../node_modules/micromark-util-html-tag-name/index.js", "../../../node_modules/micromark-core-commonmark/lib/html-flow.js", "../../../node_modules/micromark-core-commonmark/lib/html-text.js", "../../../node_modules/micromark-core-commonmark/lib/label-end.js", "../../../node_modules/micromark-core-commonmark/lib/label-start-image.js", "../../../node_modules/micromark-core-commonmark/lib/label-start-link.js", "../../../node_modules/micromark-core-commonmark/lib/line-ending.js", "../../../node_modules/micromark-core-commonmark/lib/thematic-break.js", "../../../node_modules/micromark-core-commonmark/lib/list.js", "../../../node_modules/micromark-core-commonmark/lib/setext-underline.js", "../../../node_modules/micromark/lib/initialize/flow.js", "../../../node_modules/micromark/lib/initialize/text.js", "../../../node_modules/micromark/lib/create-tokenizer.js", "../../../node_modules/micromark/lib/constructs.js", "../../../node_modules/micromark/lib/parse.js", "../../../node_modules/micromark/lib/preprocess.js", "../../../node_modules/micromark/lib/postprocess.js", "../../../node_modules/micromark-util-decode-numeric-character-reference/index.js", "../../../node_modules/micromark-util-decode-string/index.js", "../../../node_modules/mdast-util-from-markdown/lib/index.js", "../../../node_modules/remark-parse/lib/index.js", "../../../node_modules/remark-parse/index.js", "../../../node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js", "../../../node_modules/micromark-extension-gfm-footnote/lib/syntax.js", "../../../node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js", "../../../node_modules/micromark-extension-gfm-table/lib/syntax.js", "../../../node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js", "../../../node_modules/micromark-extension-gfm/index.js", "../../../node_modules/ccount/index.js", "../../../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js", "../../../node_modules/unist-util-is/index.js", "../../../node_modules/unist-util-visit-parents/color.js", "../../../node_modules/unist-util-visit-parents/index.js", "../../../node_modules/mdast-util-find-and-replace/lib/index.js", "../../../node_modules/mdast-util-gfm-autolink-literal/index.js", "../../../node_modules/mdast-util-to-markdown/lib/util/association.js", "../../../node_modules/mdast-util-to-markdown/lib/util/track.js", "../../../node_modules/mdast-util-to-markdown/lib/util/container-flow.js", "../../../node_modules/mdast-util-to-markdown/lib/util/indent-lines.js", "../../../node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js", "../../../node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js", "../../../node_modules/mdast-util-to-markdown/lib/util/safe.js", "../../../node_modules/mdast-util-gfm-footnote/index.js", "../../../node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js", "../../../node_modules/mdast-util-gfm-strikethrough/index.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js", "../../../node_modules/markdown-table/index.js", "../../../node_modules/mdast-util-gfm-table/lib/index.js", "../../../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js", "../../../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/list-item.js", "../../../node_modules/mdast-util-gfm-task-list-item/index.js", "../../../node_modules/mdast-util-gfm/lib/index.js", "../../../node_modules/remark-gfm/index.js", "../src/tools.ts"],
|
|
4
|
+
"sourcesContent": [null, null, null, null, null, null, null, null, null, null, null, null, null, "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n", "'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n", "import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport ws from \"./schemes/ws\";\nSCHEMES[ws.scheme] = ws;\n\nimport wss from \"./schemes/wss\";\nSCHEMES[wss.scheme] = wss;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler<UUIDComponents, URIOptions, URNComponents> = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler<URNComponents,URNOptions> = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array<string>,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\"; //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler<MailtoComponents> = {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport ws from \"./ws\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"wss\",\n\tdomainHost : ws.domainHost,\n\tparse : ws.parse,\n\tserialize : ws.serialize\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nexport interface WSComponents extends URIComponents {\n\tresourceName?: string;\n\tsecure?: boolean;\n}\n\nfunction isSecure(wsComponents:WSComponents):boolean {\n\treturn typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === \"wss\";\n}\n\n//RFC 6455\nconst handler:URISchemeHandler = {\n\tscheme : \"ws\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):WSComponents {\n\t\tconst wsComponents = components as WSComponents;\n\n\t\t//indicate if the secure flag is set\n\t\twsComponents.secure = isSecure(wsComponents);\n\n\t\t//construct resouce name\n\t\twsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');\n\t\twsComponents.path = undefined;\n\t\twsComponents.query = undefined;\n\n\t\treturn wsComponents;\n\t},\n\n\tserialize : function (wsComponents:WSComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === \"\") {\n\t\t\twsComponents.port = undefined;\n\t\t}\n\n\t\t//ensure scheme matches secure flag\n\t\tif (typeof wsComponents.secure === 'boolean') {\n\t\t\twsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws');\n\t\t\twsComponents.secure = undefined;\n\t\t}\n\n\t\t//reconstruct path from resource name\n\t\tif (wsComponents.resourceName) {\n\t\t\tconst [path, query] = wsComponents.resourceName.split('?');\n\t\t\twsComponents.path = (path && path !== '/' ? path : undefined);\n\t\t\twsComponents.query = query;\n\t\t\twsComponents.resourceName = undefined;\n\t\t}\n\n\t\t//forbid fragment component\n\t\twsComponents.fragment = undefined;\n\n\t\treturn wsComponents;\n\t}\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\tconst secure = String(components.scheme).toLowerCase() === \"https\";\n\n\t\t//normalize the default port\n\t\tif (components.port === (secure ? 443 : 80) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;", "/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler<Components extends URIComponents = URIComponents, Options extends URIOptions = URIOptions, ParentComponents extends URIComponents = URIComponents> {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array<string>(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce<Array<{index:number,length:number}>>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = (<RegExpMatchArray>(\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else { //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\" || typeof components.port === \"string\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(String(components.port));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array<string> = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\"); //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options); //normalize base components\n\t\trelative = parse(serialize(relative, options), options); //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(<URIComponents>uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(<URIComponents>uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(<URIComponents>uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n", "'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n", "import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n", "import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"), //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\", //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\", //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$), //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp( subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), // 6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp( \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), // \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp( H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\" h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\" ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"), //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$), //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$), //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"), //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"), //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n", "export function merge(...sets:Array<string>):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array<any> {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\n}", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n", "'use strict';\n\nvar each = require('foreach');\nmodule.exports = api;\n\n\n/**\n * Convenience wrapper around the api.\n * Calls `.get` when called with an `object` and a `pointer`.\n * Calls `.set` when also called with `value`.\n * If only supplied `object`, returns a partially applied function, mapped to the object.\n *\n * @param {Object} obj\n * @param {String|Array} pointer\n * @param value\n * @returns {*}\n */\n\nfunction api (obj, pointer, value) {\n // .set()\n if (arguments.length === 3) {\n return api.set(obj, pointer, value);\n }\n // .get()\n if (arguments.length === 2) {\n return api.get(obj, pointer);\n }\n // Return a partially applied function on `obj`.\n var wrapped = api.bind(api, obj);\n\n // Support for oo style\n for (var name in api) {\n if (api.hasOwnProperty(name)) {\n wrapped[name] = api[name].bind(wrapped, obj);\n }\n }\n return wrapped;\n}\n\n\n/**\n * Lookup a json pointer in an object\n *\n * @param {Object} obj\n * @param {String|Array} pointer\n * @returns {*}\n */\napi.get = function get (obj, pointer) {\n var refTokens = Array.isArray(pointer) ? pointer : api.parse(pointer);\n\n for (var i = 0; i < refTokens.length; ++i) {\n var tok = refTokens[i];\n if (!(typeof obj == 'object' && tok in obj)) {\n throw new Error('Invalid reference token: ' + tok);\n }\n obj = obj[tok];\n }\n return obj;\n};\n\n/**\n * Sets a value on an object\n *\n * @param {Object} obj\n * @param {String|Array} pointer\n * @param value\n */\napi.set = function set (obj, pointer, value) {\n var refTokens = Array.isArray(pointer) ? pointer : api.parse(pointer),\n nextTok = refTokens[0];\n\n if (refTokens.length === 0) {\n throw Error('Can not set the root object');\n }\n\n for (var i = 0; i < refTokens.length - 1; ++i) {\n var tok = refTokens[i];\n if (tok === \"__proto__\" || tok === \"constructor\" || tok === \"prototype\") {\n continue\n }\n if (tok === '-' && Array.isArray(obj)) {\n tok = obj.length;\n }\n nextTok = refTokens[i + 1];\n\n if (!(tok in obj)) {\n if (nextTok.match(/^(\\d+|-)$/)) {\n obj[tok] = [];\n } else {\n obj[tok] = {};\n }\n }\n obj = obj[tok];\n }\n if (nextTok === '-' && Array.isArray(obj)) {\n nextTok = obj.length;\n }\n obj[nextTok] = value;\n return this;\n};\n\n/**\n * Removes an attribute\n *\n * @param {Object} obj\n * @param {String|Array} pointer\n */\napi.remove = function (obj, pointer) {\n var refTokens = Array.isArray(pointer) ? pointer : api.parse(pointer);\n var finalToken = refTokens[refTokens.length -1];\n if (finalToken === undefined) {\n throw new Error('Invalid JSON pointer for remove: \"' + pointer + '\"');\n }\n\n var parent = api.get(obj, refTokens.slice(0, -1));\n if (Array.isArray(parent)) {\n var index = +finalToken;\n if (finalToken === '' && isNaN(index)) {\n throw new Error('Invalid array index: \"' + finalToken + '\"');\n }\n\n Array.prototype.splice.call(parent, index, 1);\n } else {\n delete parent[finalToken];\n }\n};\n\n/**\n * Returns a (pointer -> value) dictionary for an object\n *\n * @param obj\n * @param {function} descend\n * @returns {}\n */\napi.dict = function dict (obj, descend) {\n var results = {};\n api.walk(obj, function (value, pointer) {\n results[pointer] = value;\n }, descend);\n return results;\n};\n\n/**\n * Iterates over an object\n * Iterator: function (value, pointer) {}\n *\n * @param obj\n * @param {function} iterator\n * @param {function} descend\n */\napi.walk = function walk (obj, iterator, descend) {\n var refTokens = [];\n\n descend = descend || function (value) {\n var type = Object.prototype.toString.call(value);\n return type === '[object Object]' || type === '[object Array]';\n };\n\n (function next (cur) {\n each(cur, function (value, key) {\n refTokens.push(String(key));\n if (descend(value)) {\n next(value);\n } else {\n iterator(value, api.compile(refTokens));\n }\n refTokens.pop();\n });\n }(obj));\n};\n\n/**\n * Tests if an object has a value for a json pointer\n *\n * @param obj\n * @param pointer\n * @returns {boolean}\n */\napi.has = function has (obj, pointer) {\n try {\n api.get(obj, pointer);\n } catch (e) {\n return false;\n }\n return true;\n};\n\n/**\n * Escapes a reference token\n *\n * @param str\n * @returns {string}\n */\napi.escape = function escape (str) {\n return str.toString().replace(/~/g, '~0').replace(/\\//g, '~1');\n};\n\n/**\n * Unescapes a reference token\n *\n * @param str\n * @returns {string}\n */\napi.unescape = function unescape (str) {\n return str.replace(/~1/g, '/').replace(/~0/g, '~');\n};\n\n/**\n * Converts a json pointer into a array of reference tokens\n *\n * @param pointer\n * @returns {Array}\n */\napi.parse = function parse (pointer) {\n if (pointer === '') { return []; }\n if (pointer.charAt(0) !== '/') { throw new Error('Invalid JSON pointer: ' + pointer); }\n return pointer.substring(1).split(/\\//).map(api.unescape);\n};\n\n/**\n * Builds a json pointer from a array of reference tokens\n *\n * @param refTokens\n * @returns {string}\n */\napi.compile = function compile (refTokens) {\n if (refTokens.length === 0) { return ''; }\n return '/' + refTokens.map(api.escape).join('/');\n};\n", "// this an autogenerated file ( do not edit it)\nexports.Test = require('./Test.json');\nexports.AstTree = require('./AstTree.json');\nexports.PodliteDocument = require('./PodliteDocument.json')\n", "/*\n * Generated by PEG.js 0.10.0.\n *\n * http://pegjs.org/\n */\n\n\"use strict\";\n\nfunction peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, peg$SyntaxError);\n }\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function(expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n\n \"class\": function(expectation) {\n var escapedParts = \"\",\n i;\n\n for (i = 0; i < expectation.parts.length; i++) {\n escapedParts += expectation.parts[i] instanceof Array\n ? classEscape(expectation.parts[i][0]) + \"-\" + classEscape(expectation.parts[i][1])\n : classEscape(expectation.parts[i]);\n }\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n },\n\n any: function(expectation) {\n return \"any character\";\n },\n\n end: function(expectation) {\n return \"end of input\";\n },\n\n other: function(expectation) {\n return expectation.description;\n }\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x' + hex(ch); });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\]/g, '\\\\]')\n .replace(/\\^/g, '\\\\^')\n .replace(/-/g, '\\\\-')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x' + hex(ch); });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = new Array(expected.length),\n i, j;\n\n for (i = 0; i < expected.length; i++) {\n descriptions[i] = describeExpectation(expected[i]);\n }\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n options = options !== void 0 ? options : {};\n\n var peg$FAILED = {},\n\n peg$startRuleFunctions = { Document: peg$parseDocument },\n peg$startRuleFunction = peg$parseDocument,\n\n peg$c0 = function(nodes) { return nodes },\n peg$c1 = function() { return !!options.podMode === true },\n peg$c2 = function(n) { return n },\n peg$c3 = peg$anyExpectation(),\n peg$c4 = function() { return {\n text:text(),\n type:'ambient',\n location:location()\n }\n },\n peg$c5 = /^[ \\xA0\\u2001\\t\\f\\u2008]/,\n peg$c6 = peg$classExpectation([\" \", \"\\xA0\", \"\\u2001\", \"\\t\", \"\\f\", \"\\u2008\"], false, false),\n peg$c7 = /^[ \\t\\f]/,\n peg$c8 = peg$classExpectation([\" \", \"\\t\", \"\\f\"], false, false),\n peg$c9 = /^[\\n\\r]/,\n peg$c10 = peg$classExpectation([\"\\n\", \"\\r\"], false, false),\n peg$c11 = function(text) { return text },\n peg$c12 = /^[^\\n\\r]/,\n peg$c13 = peg$classExpectation([\"\\n\", \"\\r\"], true, false),\n peg$c14 = \"\\n\",\n peg$c15 = peg$literalExpectation(\"\\n\", false),\n peg$c16 = \"\\r\",\n peg$c17 = peg$literalExpectation(\"\\r\", false),\n peg$c18 = function() { return { type:'blankline' } },\n peg$c19 = \"=begin \",\n peg$c20 = peg$literalExpectation(\"=begin \", false),\n peg$c21 = \"=end \",\n peg$c22 = peg$literalExpectation(\"=end \", false),\n peg$c23 = \"=for \",\n peg$c24 = peg$literalExpectation(\"=for \", false),\n peg$c25 = \"=config\",\n peg$c26 = peg$literalExpectation(\"=config\", false),\n peg$c27 = \"=alias\",\n peg$c28 = peg$literalExpectation(\"=alias\", false),\n peg$c29 = function(name) { return isSupportedBlockName(name)},\n peg$c30 = function(name) { return name },\n peg$c31 = \"=\",\n peg$c32 = peg$literalExpectation(\"=\", false),\n peg$c33 = peg$otherExpectation(\"text\"),\n peg$c34 = function() {return text()},\n peg$c35 = function() { return { type:\"para\", value:text(), error:true, location:location()}},\n peg$c36 = function(code, codes) {return flattenDeep([code,codes])},\n peg$c37 = function(code) { return [code] },\n peg$c38 = \",\",\n peg$c39 = peg$literalExpectation(\",\", false),\n peg$c40 = function(code, codes) { return flattenDeep([ code, codes ]) },\n peg$c41 = /^[a-zA-Z0-9]/,\n peg$c42 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"]], false, false),\n peg$c43 = /^[a-zA-Z0-9_\\-]/,\n peg$c44 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"_\", \"-\"], false, false),\n peg$c45 = \"=>\",\n peg$c46 = peg$literalExpectation(\"=>\", false),\n peg$c47 = function(name, value) { return { [name]: value } },\n peg$c48 = function(pair, pairs) { return { ...pair, ...pairs } },\n peg$c49 = function(code) { return code },\n peg$c50 = \":\",\n peg$c51 = peg$literalExpectation(\":\", false),\n peg$c52 = \"allow\",\n peg$c53 = peg$literalExpectation(\"allow\", false),\n peg$c54 = \"<\",\n peg$c55 = peg$literalExpectation(\"<\", false),\n peg$c56 = \">\",\n peg$c57 = peg$literalExpectation(\">\", false),\n peg$c58 = function(key, array) { return { value:array, type:\"array\"}},\n peg$c59 = function(key, value) {return { name:'allow', ...value}},\n peg$c60 = function(i) {return i},\n peg$c61 = function(all) { return all },\n peg$c62 = function(res) {return [res]},\n peg$c63 = function() {return []},\n peg$c64 = /^[!]/,\n peg$c65 = peg$classExpectation([\"!\"], false, false),\n peg$c66 = \"{\",\n peg$c67 = peg$literalExpectation(\"{\", false),\n peg$c68 = \"}\",\n peg$c69 = peg$literalExpectation(\"}\", false),\n peg$c70 = function(isFalse, key, hash) { return { value:hash } },\n peg$c71 = \"[\",\n peg$c72 = peg$literalExpectation(\"[\", false),\n peg$c73 = function(isFalse, key, array) { return array },\n peg$c74 = \"]\",\n peg$c75 = peg$literalExpectation(\"]\", false),\n peg$c76 = function(isFalse, key) {return [text()]},\n peg$c77 = function(isFalse, key, array) { return { \n value:array,\n type:\"array\"\n } \n },\n peg$c78 = function(isFalse, key, array) { return { value:array, type:\"array\" } },\n peg$c79 = function(isFalse, key, array) { return { value:array, type:\"string\" } },\n peg$c80 = \"(\",\n peg$c81 = peg$literalExpectation(\"(\", false),\n peg$c82 = function(isFalse, key, array) {\n // if one element (23) set type to 'value' \n return (array.length > 1)\n ? { type:'array', value:array }\n : { type:'value', value:array[0] };\n },\n peg$c83 = \")\",\n peg$c84 = peg$literalExpectation(\")\", false),\n peg$c85 = function(isFalse, key) {return { value:text() } },\n peg$c86 = function(isFalse, key, res) {\n return { \n type:\"value\", \n ...res\n }\n },\n peg$c87 = function(isFalse, key) { return { \n value:!isFalse,\n type:\"boolean\"\n }\n },\n peg$c88 = function(isFalse, key, value) {return { name:key, ...value}},\n peg$c89 = function(first, rest) {return rest },\n peg$c90 = function(first, cont) {return flattenDeep([...first, ...cont])},\n peg$c91 = /^[^'\"]/,\n peg$c92 = peg$classExpectation([\"'\", \"\\\"\"], true, false),\n peg$c93 = function(text) { return text},\n peg$c94 = /^[0-9]/,\n peg$c95 = peg$classExpectation([[\"0\", \"9\"]], false, false),\n peg$c96 = /^[\\-+]/,\n peg$c97 = peg$classExpectation([\"-\", \"+\"], false, false),\n peg$c98 = \"True\",\n peg$c99 = peg$literalExpectation(\"True\", false),\n peg$c100 = function() {return true},\n peg$c101 = \"False\",\n peg$c102 = peg$literalExpectation(\"False\", false),\n peg$c103 = function() {return false},\n peg$c104 = \".\",\n peg$c105 = peg$literalExpectation(\".\", false),\n peg$c106 = /^[eE]/,\n peg$c107 = peg$classExpectation([\"e\", \"E\"], false, false),\n peg$c108 = /^[\"]/,\n peg$c109 = peg$classExpectation([\"\\\"\"], false, false),\n peg$c110 = /^[^\"]/,\n peg$c111 = peg$classExpectation([\"\\\"\"], true, false),\n peg$c112 = /^[']/,\n peg$c113 = peg$classExpectation([\"'\"], false, false),\n peg$c114 = /^[^']/,\n peg$c115 = peg$classExpectation([\"'\"], true, false),\n peg$c116 = function(numberFloat) { return parseFloat(numberFloat) },\n peg$c117 = function(number) { return parseInt(number,10) },\n peg$c118 = function(vmargin, name, config) { \n return ( \n (name.match(/code|comment|output|input|data/))\n || \n isNamedBlock(name)\n )\n },\n peg$c119 = function(vmargin, name, config, margins, ename) { return vmargin.length === margins.length && name === ename },\n peg$c120 = function(vmargin, name, config, margins, line) { return exludeVMargin(vmargin, `${margins}${line}`) },\n peg$c121 = function(vmargin, name, config, content, vmargin2, ename) { return name === ename },\n peg$c122 = function(vmargin, name, config, content, vmargin2, ename) { \n const type = 'block';\n return {\n type:type,\n content: content === \"\" ? [] : [{ type:'verbatim', value:content.join('') }],\n name,\n margin:vmargin\n }\n },\n peg$c123 = function(vmargin, name, config, content, vmargin2, res) {return true || vmargin === vmargin2},\n peg$c124 = function(vmargin, name, config, content, vmargin2, res) { return {\n ...res,\n text:text(),\n config,\n location:location()\n }},\n peg$c125 = /^[+-=_|]/,\n peg$c126 = peg$classExpectation([[\"+\", \"=\"], \"_\", \"|\"], false, false),\n peg$c127 = function() { return { type: 'separator', text:text() } },\n peg$c128 = function() { return options.isDelimited },\n peg$c129 = function() { return { \n type:'separator',\n text:text()\n }\n },\n peg$c130 = function(t) { return { name:'row', type:'text', value:t } },\n peg$c131 = function() { \n // reset separator count and its accum\n options.separators = []\n return true \n },\n peg$c132 = function(head, t) { // save separator\n options.separators.push(t.text)\n return t},\n peg$c133 = function(head, separator, rowtext, t) { // save separator\n options.separators.push(t.text)\n return t},\n peg$c134 = function(head, separator, rowtext, bseparator) {\n return [ \n { \n name:'row',\n type:'text',\n value:rowtext\n },\n bseparator \n ] \n },\n peg$c135 = function(head, separator, singleRow) { return [singleRow] },\n peg$c136 = function(head, separator, rest) { // check at this point if this table have header\n // if more then 1 separator and it equal - table doesn't have header\n if ( options.separators.length > 1 ) {\n // check if separators equal (for table without header)\n return !options.separators.every( val => val === options.separators[0] )\n }\n return true\n },\n peg$c137 = function(head, separator, rest) { return [\n {\n name:'head',\n type:'text',\n value:head\n },\n separator,\n ...flattenDeep(rest) \n ]\n },\n peg$c138 = function(rowtest, bseparator) {\n return [ \n { \n name:'row',\n type:'text',\n value:rowtest\n },\n bseparator \n ] \n },\n peg$c139 = function(rest) {\n return [...flattenDeep(rest) ]\n },\n peg$c140 = function(vmargin, name, config) { return name === 'table' },\n peg$c141 = function(vmargin, name, config) { options.isDelimited = true; return true },\n peg$c142 = function(vmargin, name, config, t) {return t},\n peg$c143 = function(vmargin, name, config, content, vmargin2, ename) { \n return {\n type:'block',\n content:content,\n name,\n margin:vmargin\n }\n },\n peg$c144 = function(vmargin, name, config, content, vmargin2, res) {return {\n ...res,\n text:text(),\n config,\n location:location()\n }},\n peg$c145 = function(vmargin, name, config, nodes) { return nodes},\n peg$c146 = function(vmargin, name, config, tvmargin, text) {\n const type = name.match(/pod|nested|item|code|defn/) \n && \n (tvmargin.length - vmargin.length) > 0 ? 'code' : 'para'\n return {\n text,\n margin:tvmargin,\n type,\n content: [\n {\n type: type === 'code' ? 'verbatim' : 'text',\n value:text\n }\n ],\n location:location(),\n }\n },\n peg$c147 = function(vmargin, name, config, content, vmargin2, ename) { \n return { \n type:'block',\n content,\n name,\n margin:vmargin,\n }\n },\n peg$c148 = function(vmargin, name, config, content, vmargin2, res) { \n return { \n ...res,\n config,\n location:location(),\n }\n },\n peg$c149 = function() {\n return { \n text: text(),\n type:'para',\n margin: '',\n content:[ \n {\n type:'text',\n value:text()\n }\n ],\n location:location(),\n }\n },\n peg$c150 = function() { return {empty:1}},\n peg$c151 = /^[s]/,\n peg$c152 = peg$classExpectation([\"s\"], false, false),\n peg$c153 = function(line) { return { text: text(), type: \"ambient1\"}},\n peg$c154 = function(vmargin, name) { \n return ( \n (name.match(/code|comment|output|input|data/))\n || \n isNamedBlock(name)\n )\n },\n peg$c155 = function(vmargin, name, content) { \n return {\n margin:vmargin,\n type: 'block',\n content: content === \"\" ? [] : [{ type:'verbatim', value:content}],\n name,\n config:[],\n location:location()\n }\n },\n peg$c156 = function(vmargin, name) { return name === 'table' },\n peg$c157 = function(vmargin, name) { options.isDelimited = false; return true },\n peg$c158 = function(vmargin, name, content) { \n return {\n margin:vmargin,\n type: 'block',\n content: content === \"\" ? [] \n : content,\n name,\n config:[],\n location:location()\n }\n },\n peg$c159 = function(vmargin, name, content) { \n return {\n margin:vmargin,\n type:'block',\n content: content === \"\" ? [] \n : [\n {\n type:'para',\n text:content,\n margin: '',\n content:[ \n {\n type:'text',\n value:content\n }\n ],\n location:location(),\n }\n ],\n name,\n location:location()\n }\n },\n peg$c160 = \"= \",\n peg$c161 = peg$literalExpectation(\"= \", false),\n peg$c162 = function(vmargin, marker, name, replacement) {\n return {\n name,\n type:'alias',\n replacement,\n margin:vmargin\n }\n },\n peg$c163 = /^[A-Z]/,\n peg$c164 = peg$classExpectation([[\"A\", \"Z\"]], false, false),\n peg$c165 = \"<>\",\n peg$c166 = peg$literalExpectation(\"<>\", false),\n peg$c167 = function(vmargin, marker, name, config) {\n return {\n name,\n type:'config',\n config,\n margin:vmargin\n }\n },\n peg$c168 = function(vmargin, marker, name, config) { \n return ( \n (name.match(/code|comment|output|input|data/))\n || \n isNamedBlock(name)\n )\n },\n peg$c169 = function(vmargin, marker, name, config, content) { \n return { \n type: 'block',\n content: content === \"\" ? [] : [{ type:'verbatim', value:content}],\n name,\n margin:vmargin,\n config,\n location:location()\n }\n },\n peg$c170 = function(vmargin, marker, name, config) { return name === 'table' },\n peg$c171 = function(vmargin, marker, name, config) { options.isDelimited = false; return true },\n peg$c172 = function(vmargin, marker, name, config, content) { \n return { \n type: 'block',\n content: content === \"\" ? [] : content,\n name,\n margin:vmargin,\n config,\n location:location()\n }\n },\n peg$c173 = function(vmargin, marker, name, config, content) { \n return { \n type:'block',\n content: content === \"\" ? [] \n : [\n {\n type:'para',\n content:[ \n {\n type:'text',\n value:content\n }\n ],\n margin:vmargin,\n text:content,\n location:location(),\n }\n ],\n name,\n margin:vmargin,\n config,\n location:location()\n }\n },\n peg$c174 = /^[a-zA-Z]/,\n peg$c175 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"]], false, false),\n peg$c176 = peg$otherExpectation(\"whitespace\"),\n peg$c177 = /^[\\r\\n \\t\\f]/,\n peg$c178 = peg$classExpectation([\"\\r\", \"\\n\", \" \", \"\\t\", \"\\f\"], false, false),\n peg$c179 = peg$otherExpectation(\"space characters\"),\n\n peg$currPos = 0,\n peg$savedPos = 0,\n peg$posDetailsCache = [{ line: 1, column: 1 }],\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location\n );\n }\n\n function error(message, location) {\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos], p;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos),\n endPosDetails = peg$computePosDetails(endPos);\n\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parseDocument() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseElement();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseElement();\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$parsedelimitedBlockRaw();\n if (s0 === peg$FAILED) {\n s0 = peg$parsedelimitedBlockTable();\n if (s0 === peg$FAILED) {\n s0 = peg$parsedelimitedBlock();\n if (s0 === peg$FAILED) {\n s0 = peg$parseparagraphBlockRaw();\n if (s0 === peg$FAILED) {\n s0 = peg$parseparagraphBlockTable();\n if (s0 === peg$FAILED) {\n s0 = peg$parseparagraphBlock();\n if (s0 === peg$FAILED) {\n s0 = peg$parsealiasDirective();\n if (s0 === peg$FAILED) {\n s0 = peg$parseconfigDirective();\n if (s0 === peg$FAILED) {\n s0 = peg$parseabbreviatedBlockRaw();\n if (s0 === peg$FAILED) {\n s0 = peg$parseabbreviatedBlockTable();\n if (s0 === peg$FAILED) {\n s0 = peg$parseabbreviatedBlock();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c1();\n if (s1) {\n s1 = void 0;\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsetextBlock();\n if (s2 === peg$FAILED) {\n s2 = peg$parseblankline();\n if (s2 === peg$FAILED) {\n s2 = peg$parseerror_para();\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c2(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$currPos;\n s6 = peg$parsemarkers();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsestrictIdentifier();\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$parsemarkerAbbreviatedBlock();\n }\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$currPos;\n s6 = peg$parsemarkers();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsestrictIdentifier();\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$parsemarkerAbbreviatedBlock();\n }\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c4();\n }\n s0 = s1;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsehs() {\n var s0;\n\n if (peg$c5.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1;\n\n s0 = [];\n if (peg$c7.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$c7.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n }\n\n return s0;\n }\n\n function peg$parseEndline() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$parsehs();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsehs();\n }\n if (s2 !== peg$FAILED) {\n if (peg$c9.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseLineOfText() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$parsechar();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsechar();\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseEOL();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c11(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsechar() {\n var s0;\n\n if (peg$c12.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n\n return s0;\n }\n\n function peg$parsenewline() {\n var s0, s1, s2;\n\n if (input.charCodeAt(peg$currPos) === 10) {\n s0 = peg$c14;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 13) {\n s1 = peg$c16;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 10) {\n s2 = peg$c14;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseEOL() {\n var s0, s1;\n\n s0 = peg$parsenewline();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n peg$silentFails++;\n if (input.length > peg$currPos) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n peg$silentFails--;\n if (s1 === peg$FAILED) {\n s0 = void 0;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseemptyline() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$parsehs();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsehs();\n }\n if (s2 !== peg$FAILED) {\n if (peg$c9.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseblankline() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$currPos;\n s3 = [];\n s4 = peg$parsehs();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsehs();\n }\n if (s3 !== peg$FAILED) {\n if (peg$c9.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c18();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsemarkerBegin() {\n var s0;\n\n if (input.substr(peg$currPos, 7) === peg$c19) {\n s0 = peg$c19;\n peg$currPos += 7;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c20); }\n }\n\n return s0;\n }\n\n function peg$parsemarkerEnd() {\n var s0;\n\n if (input.substr(peg$currPos, 5) === peg$c21) {\n s0 = peg$c21;\n peg$currPos += 5;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n\n return s0;\n }\n\n function peg$parsemarkerFor() {\n var s0;\n\n if (input.substr(peg$currPos, 5) === peg$c23) {\n s0 = peg$c23;\n peg$currPos += 5;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c24); }\n }\n\n return s0;\n }\n\n function peg$parsemarkerConfig() {\n var s0;\n\n if (input.substr(peg$currPos, 7) === peg$c25) {\n s0 = peg$c25;\n peg$currPos += 7;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c26); }\n }\n\n return s0;\n }\n\n function peg$parsemarkerAlias() {\n var s0;\n\n if (input.substr(peg$currPos, 6) === peg$c27) {\n s0 = peg$c27;\n peg$currPos += 6;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n\n return s0;\n }\n\n function peg$parsestrictIdentifier() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseidentifier();\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c29(s1);\n if (s2) {\n s2 = void 0;\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c30(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsemarkerAbbreviatedBlock() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s1 = peg$c31;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsestrictIdentifier();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c30(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsemarkers() {\n var s0;\n\n s0 = peg$parsemarkerBegin();\n if (s0 === peg$FAILED) {\n s0 = peg$parsemarkerEnd();\n if (s0 === peg$FAILED) {\n s0 = peg$parsemarkerFor();\n if (s0 === peg$FAILED) {\n s0 = peg$parsemarkerConfig();\n if (s0 === peg$FAILED) {\n s0 = peg$parsemarkerAlias();\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseText() {\n var s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsechar();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsechar();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c33); }\n }\n\n return s0;\n }\n\n function peg$parsetext_content() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n s5 = peg$parsemarkers();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsestrictIdentifier();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 === peg$FAILED) {\n s4 = peg$parsemarkerAbbreviatedBlock();\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = peg$parseblankline();\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = void 0;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = [];\n s4 = peg$parseText();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseText();\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = input.substring(s2, peg$currPos);\n } else {\n s2 = s3;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseEOL();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c34();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseerror_para() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseEOL();\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseEOL();\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseEOL();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c35();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsearray_codes() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseFCode();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsehs();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsehs();\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsearray_codes();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c36(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseFCode();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c37(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseFCode() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsechar();\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsearray_items() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseitem();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsehs();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsehs();\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s4 = peg$c38;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsearray_items();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c40(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseitem();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c37(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseidentifierKey() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n if (peg$c41.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c41.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c43.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c44); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c43.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c44); }\n }\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsepair_item() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseidentifierKey();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c38;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s3 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c45) {\n s3 = peg$c45;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseitem();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c47(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsearray_pairs() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parsepair_item();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c38;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsearray_pairs();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c48(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsepair_item();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c49(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseallow_attribute() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s2 = peg$c50;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\n }\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c52) {\n s3 = peg$c52;\n peg$currPos += 5;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c53); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 60) {\n s5 = peg$c54;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsearray_codes();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s9 = peg$c56;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c57); }\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s4;\n s5 = peg$c58(s3, s7);\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c59(s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsearray_sp() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseitem();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c60(s4);\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseitem();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c60(s4);\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c61(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseitem();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c62(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c63();\n }\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parseattributes() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\n s0 = peg$parseallow_attribute();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s2 = peg$c50;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\n }\n if (s2 !== peg$FAILED) {\n if (peg$c64.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c65); }\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseidentifier();\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s6 = peg$c66;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c67); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n s8 = peg$parsearray_pairs();\n if (s8 !== peg$FAILED) {\n s9 = peg$parse_();\n if (s9 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s10 = peg$c68;\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c69); }\n }\n if (s10 !== peg$FAILED) {\n peg$savedPos = s5;\n s6 = peg$c70(s3, s4, s8);\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s6 = peg$c71;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c72); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n s8 = peg$currPos;\n s9 = peg$parsearray_items();\n if (s9 !== peg$FAILED) {\n peg$savedPos = s8;\n s9 = peg$c73(s3, s4, s9);\n }\n s8 = s9;\n if (s8 === peg$FAILED) {\n s8 = peg$currPos;\n s9 = peg$currPos;\n s10 = [];\n s11 = peg$currPos;\n s12 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 93) {\n s13 = peg$c74;\n peg$currPos++;\n } else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c75); }\n }\n if (s13 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 91) {\n s13 = peg$c71;\n peg$currPos++;\n } else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c72); }\n }\n }\n peg$silentFails--;\n if (s13 === peg$FAILED) {\n s12 = void 0;\n } else {\n peg$currPos = s12;\n s12 = peg$FAILED;\n }\n if (s12 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s13 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s13 !== peg$FAILED) {\n s12 = [s12, s13];\n s11 = s12;\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n if (s11 !== peg$FAILED) {\n while (s11 !== peg$FAILED) {\n s10.push(s11);\n s11 = peg$currPos;\n s12 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 93) {\n s13 = peg$c74;\n peg$currPos++;\n } else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c75); }\n }\n if (s13 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 91) {\n s13 = peg$c71;\n peg$currPos++;\n } else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c72); }\n }\n }\n peg$silentFails--;\n if (s13 === peg$FAILED) {\n s12 = void 0;\n } else {\n peg$currPos = s12;\n s12 = peg$FAILED;\n }\n if (s12 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s13 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s13 !== peg$FAILED) {\n s12 = [s12, s13];\n s11 = s12;\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n }\n } else {\n s10 = peg$FAILED;\n }\n if (s10 !== peg$FAILED) {\n s9 = input.substring(s9, peg$currPos);\n } else {\n s9 = s10;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s8;\n s9 = peg$c76(s3, s4);\n }\n s8 = s9;\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$parse_();\n if (s9 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s10 = peg$c74;\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c75); }\n }\n if (s10 !== peg$FAILED) {\n peg$savedPos = s5;\n s6 = peg$c77(s3, s4, s8);\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 60) {\n s6 = peg$c54;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n s8 = peg$parsearray_items();\n if (s8 !== peg$FAILED) {\n s9 = peg$parse_();\n if (s9 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s10 = peg$c56;\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c57); }\n }\n if (s10 !== peg$FAILED) {\n peg$savedPos = s5;\n s6 = peg$c78(s3, s4, s8);\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 60) {\n s6 = peg$c54;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n s8 = peg$currPos;\n s9 = [];\n s10 = peg$currPos;\n s11 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 60) {\n s12 = peg$c54;\n peg$currPos++;\n } else {\n s12 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n if (s12 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s12 = peg$c56;\n peg$currPos++;\n } else {\n s12 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c57); }\n }\n }\n peg$silentFails--;\n if (s12 === peg$FAILED) {\n s11 = void 0;\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n if (s11 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s12 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s12 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s12 !== peg$FAILED) {\n s11 = [s11, s12];\n s10 = s11;\n } else {\n peg$currPos = s10;\n s10 = peg$FAILED;\n }\n } else {\n peg$currPos = s10;\n s10 = peg$FAILED;\n }\n if (s10 !== peg$FAILED) {\n while (s10 !== peg$FAILED) {\n s9.push(s10);\n s10 = peg$currPos;\n s11 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 60) {\n s12 = peg$c54;\n peg$currPos++;\n } else {\n s12 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n if (s12 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s12 = peg$c56;\n peg$currPos++;\n } else {\n s12 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c57); }\n }\n }\n peg$silentFails--;\n if (s12 === peg$FAILED) {\n s11 = void 0;\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n if (s11 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s12 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s12 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s12 !== peg$FAILED) {\n s11 = [s11, s12];\n s10 = s11;\n } else {\n peg$currPos = s10;\n s10 = peg$FAILED;\n }\n } else {\n peg$currPos = s10;\n s10 = peg$FAILED;\n }\n }\n } else {\n s9 = peg$FAILED;\n }\n if (s9 !== peg$FAILED) {\n s8 = input.substring(s8, peg$currPos);\n } else {\n s8 = s9;\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$parse_();\n if (s9 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s10 = peg$c56;\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c57); }\n }\n if (s10 !== peg$FAILED) {\n peg$savedPos = s5;\n s6 = peg$c79(s3, s4, s8);\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s6 = peg$c80;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c81); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n s8 = peg$currPos;\n s9 = peg$parsearray_items();\n if (s9 !== peg$FAILED) {\n peg$savedPos = s8;\n s9 = peg$c82(s3, s4, s9);\n }\n s8 = s9;\n if (s8 === peg$FAILED) {\n s8 = peg$currPos;\n s9 = peg$currPos;\n s10 = [];\n s11 = peg$currPos;\n s12 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 41) {\n s13 = peg$c83;\n peg$currPos++;\n } else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c84); }\n }\n if (s13 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s13 = peg$c80;\n peg$currPos++;\n } else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c81); }\n }\n }\n peg$silentFails--;\n if (s13 === peg$FAILED) {\n s12 = void 0;\n } else {\n peg$currPos = s12;\n s12 = peg$FAILED;\n }\n if (s12 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s13 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s13 !== peg$FAILED) {\n s12 = [s12, s13];\n s11 = s12;\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n if (s11 !== peg$FAILED) {\n while (s11 !== peg$FAILED) {\n s10.push(s11);\n s11 = peg$currPos;\n s12 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 41) {\n s13 = peg$c83;\n peg$currPos++;\n } else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c84); }\n }\n if (s13 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s13 = peg$c80;\n peg$currPos++;\n } else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c81); }\n }\n }\n peg$silentFails--;\n if (s13 === peg$FAILED) {\n s12 = void 0;\n } else {\n peg$currPos = s12;\n s12 = peg$FAILED;\n }\n if (s12 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s13 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s13 !== peg$FAILED) {\n s12 = [s12, s13];\n s11 = s12;\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n }\n } else {\n s10 = peg$FAILED;\n }\n if (s10 !== peg$FAILED) {\n s9 = input.substring(s9, peg$currPos);\n } else {\n s9 = s10;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s8;\n s9 = peg$c85(s3, s4);\n }\n s8 = s9;\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$parse_();\n if (s9 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s10 = peg$c83;\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c84); }\n }\n if (s10 !== peg$FAILED) {\n peg$savedPos = s5;\n s6 = peg$c86(s3, s4, s8);\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n peg$savedPos = s5;\n s6 = peg$c87(s3, s4);\n }\n s5 = s6;\n }\n }\n }\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c88(s3, s4, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsepod_configuration() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseattributes();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseattributes();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenewline();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s5 = peg$c31;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n s7 = [];\n s8 = peg$parseattributes();\n if (s8 !== peg$FAILED) {\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parseattributes();\n }\n } else {\n s7 = peg$FAILED;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsenewline();\n if (s9 !== peg$FAILED) {\n peg$savedPos = s4;\n s5 = peg$c89(s1, s7);\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s5 = peg$c31;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n s7 = [];\n s8 = peg$parseattributes();\n if (s8 !== peg$FAILED) {\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parseattributes();\n }\n } else {\n s7 = peg$FAILED;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsenewline();\n if (s9 !== peg$FAILED) {\n peg$savedPos = s4;\n s5 = peg$c89(s1, s7);\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c90(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsestring() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n if (peg$c91.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c92); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c91.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c92); }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c93(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsedigits() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c94.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c95); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c94.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c95); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (peg$c96.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c97); }\n }\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c94.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c95); }\n }\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c94.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c95); }\n }\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseBoolean() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4) === peg$c98) {\n s1 = peg$c98;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c99); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c100();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c101) {\n s1 = peg$c101;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c102); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c103();\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsefloatNumber() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c104;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c105); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsedigits();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n if (peg$c106.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c107); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s2 = [s2, s3, s4, s5];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s3 = peg$c104;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c105); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parsedigits();\n if (s4 !== peg$FAILED) {\n s2 = [s2, s3, s4];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parseitem() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n if (peg$c108.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c109); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = [];\n if (peg$c110.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c111); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c110.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c111); }\n }\n }\n if (s3 !== peg$FAILED) {\n s2 = input.substring(s2, peg$currPos);\n } else {\n s2 = s3;\n }\n if (s2 !== peg$FAILED) {\n if (peg$c108.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c109); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c93(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (peg$c112.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = [];\n if (peg$c114.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c115); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c114.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c115); }\n }\n }\n if (s3 !== peg$FAILED) {\n s2 = input.substring(s2, peg$currPos);\n } else {\n s2 = s3;\n }\n if (s2 !== peg$FAILED) {\n if (peg$c112.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c93(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseBoolean();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsefloatNumber();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c116(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsenumber();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c117(s1);\n }\n s0 = s1;\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsedelimitedBlockRaw() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemarkerBegin();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsestrictIdentifier();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepod_configuration();\n if (s5 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s6 = peg$c118(s1, s3, s5);\n if (s6) {\n s6 = void 0;\n } else {\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s7 = [];\n s8 = peg$currPos;\n s9 = peg$currPos;\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n s9 = input.substring(s9, peg$currPos);\n } else {\n s9 = s10;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$currPos;\n s11 = peg$parseEndline();\n if (s11 === peg$FAILED) {\n s11 = peg$currPos;\n s12 = peg$currPos;\n peg$silentFails++;\n s13 = peg$parsemarkers();\n peg$silentFails--;\n if (s13 === peg$FAILED) {\n s12 = void 0;\n } else {\n peg$currPos = s12;\n s12 = peg$FAILED;\n }\n if (s12 === peg$FAILED) {\n s12 = peg$currPos;\n peg$silentFails++;\n s13 = peg$currPos;\n s14 = peg$parsemarkerEnd();\n if (s14 !== peg$FAILED) {\n s15 = peg$parsestrictIdentifier();\n if (s15 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s16 = peg$c119(s1, s3, s5, s9, s15);\n if (s16) {\n s16 = void 0;\n } else {\n s16 = peg$FAILED;\n }\n if (s16 !== peg$FAILED) {\n s14 = [s14, s15, s16];\n s13 = s14;\n } else {\n peg$currPos = s13;\n s13 = peg$FAILED;\n }\n } else {\n peg$currPos = s13;\n s13 = peg$FAILED;\n }\n } else {\n peg$currPos = s13;\n s13 = peg$FAILED;\n }\n peg$silentFails--;\n if (s13 === peg$FAILED) {\n s12 = void 0;\n } else {\n peg$currPos = s12;\n s12 = peg$FAILED;\n }\n }\n if (s12 !== peg$FAILED) {\n s13 = peg$parseText();\n if (s13 !== peg$FAILED) {\n s14 = peg$parseEndline();\n if (s14 === peg$FAILED) {\n s14 = null;\n }\n if (s14 !== peg$FAILED) {\n s12 = [s12, s13, s14];\n s11 = s12;\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n }\n if (s11 !== peg$FAILED) {\n s10 = input.substring(s10, peg$currPos);\n } else {\n s10 = s11;\n }\n if (s10 !== peg$FAILED) {\n peg$savedPos = s8;\n s9 = peg$c120(s1, s3, s5, s9, s10);\n s8 = s9;\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n if (s8 !== peg$FAILED) {\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$currPos;\n s9 = peg$currPos;\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n s9 = input.substring(s9, peg$currPos);\n } else {\n s9 = s10;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$currPos;\n s11 = peg$parseEndline();\n if (s11 === peg$FAILED) {\n s11 = peg$currPos;\n s12 = peg$currPos;\n peg$silentFails++;\n s13 = peg$parsemarkers();\n peg$silentFails--;\n if (s13 === peg$FAILED) {\n s12 = void 0;\n } else {\n peg$currPos = s12;\n s12 = peg$FAILED;\n }\n if (s12 === peg$FAILED) {\n s12 = peg$currPos;\n peg$silentFails++;\n s13 = peg$currPos;\n s14 = peg$parsemarkerEnd();\n if (s14 !== peg$FAILED) {\n s15 = peg$parsestrictIdentifier();\n if (s15 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s16 = peg$c119(s1, s3, s5, s9, s15);\n if (s16) {\n s16 = void 0;\n } else {\n s16 = peg$FAILED;\n }\n if (s16 !== peg$FAILED) {\n s14 = [s14, s15, s16];\n s13 = s14;\n } else {\n peg$currPos = s13;\n s13 = peg$FAILED;\n }\n } else {\n peg$currPos = s13;\n s13 = peg$FAILED;\n }\n } else {\n peg$currPos = s13;\n s13 = peg$FAILED;\n }\n peg$silentFails--;\n if (s13 === peg$FAILED) {\n s12 = void 0;\n } else {\n peg$currPos = s12;\n s12 = peg$FAILED;\n }\n }\n if (s12 !== peg$FAILED) {\n s13 = peg$parseText();\n if (s13 !== peg$FAILED) {\n s14 = peg$parseEndline();\n if (s14 === peg$FAILED) {\n s14 = null;\n }\n if (s14 !== peg$FAILED) {\n s12 = [s12, s13, s14];\n s11 = s12;\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n }\n if (s11 !== peg$FAILED) {\n s10 = input.substring(s10, peg$currPos);\n } else {\n s10 = s11;\n }\n if (s10 !== peg$FAILED) {\n peg$savedPos = s8;\n s9 = peg$c120(s1, s3, s5, s9, s10);\n s8 = s9;\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n }\n } else {\n s7 = peg$FAILED;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$currPos;\n s9 = peg$parse_();\n if (s9 !== peg$FAILED) {\n s8 = input.substring(s8, peg$currPos);\n } else {\n s8 = s9;\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$currPos;\n s10 = peg$parsemarkerEnd();\n if (s10 !== peg$FAILED) {\n s11 = peg$parsestrictIdentifier();\n if (s11 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s12 = peg$c121(s1, s3, s5, s7, s8, s11);\n if (s12) {\n s12 = void 0;\n } else {\n s12 = peg$FAILED;\n }\n if (s12 !== peg$FAILED) {\n s13 = peg$parseEndline();\n if (s13 === peg$FAILED) {\n s13 = null;\n }\n if (s13 !== peg$FAILED) {\n peg$savedPos = s9;\n s10 = peg$c122(s1, s3, s5, s7, s8, s11);\n s9 = s10;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s10 = peg$c123(s1, s3, s5, s7, s8, s9);\n if (s10) {\n s10 = void 0;\n } else {\n s10 = peg$FAILED;\n }\n if (s10 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c124(s1, s3, s5, s7, s8, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetableHeadSeparator() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsemarkers();\n if (s4 === peg$FAILED) {\n s4 = peg$parsemarkerAbbreviatedBlock();\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = peg$parseblankline();\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = void 0;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsehs();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsehs();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = [];\n s5 = peg$currPos;\n if (peg$c125.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c126); }\n }\n if (s6 !== peg$FAILED) {\n s7 = [];\n s8 = peg$parsehs();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsehs();\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$currPos;\n if (peg$c125.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c126); }\n }\n if (s6 !== peg$FAILED) {\n s7 = [];\n s8 = peg$parsehs();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsehs();\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n } else {\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n } else {\n s3 = s4;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseEOL();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c127();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetableBodyRowSeparator() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsetableHeadSeparator();\n if (s2 === peg$FAILED) {\n s2 = peg$currPos;\n peg$savedPos = peg$currPos;\n s3 = peg$c128();\n if (s3) {\n s3 = void 0;\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseblankline();\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c129();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsetableRow() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsetext_content();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c130(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsetableContents() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c131();\n if (s1) {\n s1 = void 0;\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = [];\n s4 = peg$currPos;\n s5 = peg$currPos;\n peg$silentFails++;\n s6 = peg$parsetableHeadSeparator();\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = void 0;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsetableRow();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$currPos;\n s5 = peg$currPos;\n peg$silentFails++;\n s6 = peg$parsetableHeadSeparator();\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = void 0;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsetableRow();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = input.substring(s2, peg$currPos);\n } else {\n s2 = s3;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = peg$parsetableHeadSeparator();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s3;\n s4 = peg$c132(s2, s4);\n }\n s3 = s4;\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$currPos;\n s6 = peg$currPos;\n s7 = [];\n s8 = peg$currPos;\n s9 = peg$currPos;\n peg$silentFails++;\n s10 = peg$parsetableBodyRowSeparator();\n peg$silentFails--;\n if (s10 === peg$FAILED) {\n s9 = void 0;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parsetableRow();\n if (s10 !== peg$FAILED) {\n s9 = [s9, s10];\n s8 = s9;\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n if (s8 !== peg$FAILED) {\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$currPos;\n s9 = peg$currPos;\n peg$silentFails++;\n s10 = peg$parsetableBodyRowSeparator();\n peg$silentFails--;\n if (s10 === peg$FAILED) {\n s9 = void 0;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parsetableRow();\n if (s10 !== peg$FAILED) {\n s9 = [s9, s10];\n s8 = s9;\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n }\n } else {\n s7 = peg$FAILED;\n }\n if (s7 !== peg$FAILED) {\n s6 = input.substring(s6, peg$currPos);\n } else {\n s6 = s7;\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$currPos;\n s8 = peg$parsetableBodyRowSeparator();\n if (s8 !== peg$FAILED) {\n peg$savedPos = s7;\n s8 = peg$c133(s2, s3, s6, s8);\n }\n s7 = s8;\n if (s7 !== peg$FAILED) {\n peg$savedPos = s5;\n s6 = peg$c134(s2, s3, s6, s7);\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$currPos;\n peg$silentFails++;\n s7 = peg$parsetableHeadSeparator();\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = void 0;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$currPos;\n peg$silentFails++;\n s8 = peg$parsetableBodyRowSeparator();\n peg$silentFails--;\n if (s8 === peg$FAILED) {\n s7 = void 0;\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parsetableRow();\n if (s8 !== peg$FAILED) {\n peg$savedPos = s5;\n s6 = peg$c135(s2, s3, s8);\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n if (s5 !== peg$FAILED) {\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$currPos;\n s6 = peg$currPos;\n s7 = [];\n s8 = peg$currPos;\n s9 = peg$currPos;\n peg$silentFails++;\n s10 = peg$parsetableBodyRowSeparator();\n peg$silentFails--;\n if (s10 === peg$FAILED) {\n s9 = void 0;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parsetableRow();\n if (s10 !== peg$FAILED) {\n s9 = [s9, s10];\n s8 = s9;\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n if (s8 !== peg$FAILED) {\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$currPos;\n s9 = peg$currPos;\n peg$silentFails++;\n s10 = peg$parsetableBodyRowSeparator();\n peg$silentFails--;\n if (s10 === peg$FAILED) {\n s9 = void 0;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parsetableRow();\n if (s10 !== peg$FAILED) {\n s9 = [s9, s10];\n s8 = s9;\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n }\n } else {\n s7 = peg$FAILED;\n }\n if (s7 !== peg$FAILED) {\n s6 = input.substring(s6, peg$currPos);\n } else {\n s6 = s7;\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$currPos;\n s8 = peg$parsetableBodyRowSeparator();\n if (s8 !== peg$FAILED) {\n peg$savedPos = s7;\n s8 = peg$c133(s2, s3, s6, s8);\n }\n s7 = s8;\n if (s7 !== peg$FAILED) {\n peg$savedPos = s5;\n s6 = peg$c134(s2, s3, s6, s7);\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$currPos;\n peg$silentFails++;\n s7 = peg$parsetableHeadSeparator();\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = void 0;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$currPos;\n peg$silentFails++;\n s8 = peg$parsetableBodyRowSeparator();\n peg$silentFails--;\n if (s8 === peg$FAILED) {\n s7 = void 0;\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parsetableRow();\n if (s8 !== peg$FAILED) {\n peg$savedPos = s5;\n s6 = peg$c135(s2, s3, s8);\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n }\n } else {\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s5 = peg$c136(s2, s3, s4);\n if (s5) {\n s5 = void 0;\n } else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c137(s2, s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$currPos;\n s4 = peg$currPos;\n s5 = peg$currPos;\n peg$silentFails++;\n s6 = peg$parsetableBodyRowSeparator();\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = void 0;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsetableRow();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n } else {\n s3 = s4;\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsetableBodyRowSeparator();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsetableBodyRowSeparator();\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c138(s3, s4);\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$currPos;\n s4 = peg$currPos;\n s5 = peg$currPos;\n peg$silentFails++;\n s6 = peg$parsetableBodyRowSeparator();\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = void 0;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsetableRow();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n } else {\n s3 = s4;\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsetableBodyRowSeparator();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsetableBodyRowSeparator();\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c138(s3, s4);\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c139(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = [];\n s1 = peg$parsetableRow();\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsetableRow();\n }\n } else {\n s0 = peg$FAILED;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsedelimitedBlockTable() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemarkerBegin();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsestrictIdentifier();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepod_configuration();\n if (s5 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s6 = peg$c140(s1, s3, s5);\n if (s6) {\n s6 = void 0;\n } else {\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s7 = peg$c141(s1, s3, s5);\n if (s7) {\n s7 = void 0;\n } else {\n s7 = peg$FAILED;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$currPos;\n s9 = [];\n s10 = peg$parseblankline();\n while (s10 !== peg$FAILED) {\n s9.push(s10);\n s10 = peg$parseblankline();\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parsetableContents();\n if (s10 !== peg$FAILED) {\n s11 = [];\n s12 = peg$parseblankline();\n while (s12 !== peg$FAILED) {\n s11.push(s12);\n s12 = peg$parseblankline();\n }\n if (s11 !== peg$FAILED) {\n peg$savedPos = s8;\n s9 = peg$c142(s1, s3, s5, s10);\n s8 = s9;\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$currPos;\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n s9 = input.substring(s9, peg$currPos);\n } else {\n s9 = s10;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$currPos;\n s11 = peg$parsemarkerEnd();\n if (s11 !== peg$FAILED) {\n s12 = peg$parsestrictIdentifier();\n if (s12 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s13 = peg$c121(s1, s3, s5, s8, s9, s12);\n if (s13) {\n s13 = void 0;\n } else {\n s13 = peg$FAILED;\n }\n if (s13 !== peg$FAILED) {\n s14 = peg$parseEndline();\n if (s14 === peg$FAILED) {\n s14 = null;\n }\n if (s14 !== peg$FAILED) {\n peg$savedPos = s10;\n s11 = peg$c143(s1, s3, s5, s8, s9, s12);\n s10 = s11;\n } else {\n peg$currPos = s10;\n s10 = peg$FAILED;\n }\n } else {\n peg$currPos = s10;\n s10 = peg$FAILED;\n }\n } else {\n peg$currPos = s10;\n s10 = peg$FAILED;\n }\n } else {\n peg$currPos = s10;\n s10 = peg$FAILED;\n }\n if (s10 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s11 = peg$c123(s1, s3, s5, s8, s9, s10);\n if (s11) {\n s11 = void 0;\n } else {\n s11 = peg$FAILED;\n }\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c144(s1, s3, s5, s8, s9, s10);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsedelimitedBlock() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemarkerBegin();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsestrictIdentifier();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepod_configuration();\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = peg$currPos;\n s8 = peg$parseblankline();\n if (s8 === peg$FAILED) {\n s8 = peg$parsedelimitedBlockRaw();\n if (s8 === peg$FAILED) {\n s8 = peg$parsedelimitedBlockTable();\n if (s8 === peg$FAILED) {\n s8 = peg$parsedelimitedBlock();\n if (s8 === peg$FAILED) {\n s8 = peg$parseparagraphBlockRaw();\n if (s8 === peg$FAILED) {\n s8 = peg$parseparagraphBlockTable();\n if (s8 === peg$FAILED) {\n s8 = peg$parseparagraphBlock();\n if (s8 === peg$FAILED) {\n s8 = peg$parsealiasDirective();\n if (s8 === peg$FAILED) {\n s8 = peg$parseconfigDirective();\n if (s8 === peg$FAILED) {\n s8 = peg$parseabbreviatedBlockRaw();\n if (s8 === peg$FAILED) {\n s8 = peg$parseabbreviatedBlockTable();\n if (s8 === peg$FAILED) {\n s8 = peg$parseabbreviatedBlock();\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s7;\n s8 = peg$c145(s1, s3, s5, s8);\n }\n s7 = s8;\n if (s7 === peg$FAILED) {\n s7 = peg$currPos;\n s8 = peg$currPos;\n s9 = [];\n s10 = peg$parsehs();\n while (s10 !== peg$FAILED) {\n s9.push(s10);\n s10 = peg$parsehs();\n }\n if (s9 !== peg$FAILED) {\n s8 = input.substring(s8, peg$currPos);\n } else {\n s8 = s9;\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$currPos;\n s10 = [];\n s11 = peg$parsetext_content();\n if (s11 !== peg$FAILED) {\n while (s11 !== peg$FAILED) {\n s10.push(s11);\n s11 = peg$parsetext_content();\n }\n } else {\n s10 = peg$FAILED;\n }\n if (s10 !== peg$FAILED) {\n s9 = input.substring(s9, peg$currPos);\n } else {\n s9 = s10;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s7;\n s8 = peg$c146(s1, s3, s5, s8, s9);\n s7 = s8;\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n }\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$currPos;\n s8 = peg$parseblankline();\n if (s8 === peg$FAILED) {\n s8 = peg$parsedelimitedBlockRaw();\n if (s8 === peg$FAILED) {\n s8 = peg$parsedelimitedBlockTable();\n if (s8 === peg$FAILED) {\n s8 = peg$parsedelimitedBlock();\n if (s8 === peg$FAILED) {\n s8 = peg$parseparagraphBlockRaw();\n if (s8 === peg$FAILED) {\n s8 = peg$parseparagraphBlockTable();\n if (s8 === peg$FAILED) {\n s8 = peg$parseparagraphBlock();\n if (s8 === peg$FAILED) {\n s8 = peg$parsealiasDirective();\n if (s8 === peg$FAILED) {\n s8 = peg$parseconfigDirective();\n if (s8 === peg$FAILED) {\n s8 = peg$parseabbreviatedBlockRaw();\n if (s8 === peg$FAILED) {\n s8 = peg$parseabbreviatedBlockTable();\n if (s8 === peg$FAILED) {\n s8 = peg$parseabbreviatedBlock();\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s7;\n s8 = peg$c145(s1, s3, s5, s8);\n }\n s7 = s8;\n if (s7 === peg$FAILED) {\n s7 = peg$currPos;\n s8 = peg$currPos;\n s9 = [];\n s10 = peg$parsehs();\n while (s10 !== peg$FAILED) {\n s9.push(s10);\n s10 = peg$parsehs();\n }\n if (s9 !== peg$FAILED) {\n s8 = input.substring(s8, peg$currPos);\n } else {\n s8 = s9;\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$currPos;\n s10 = [];\n s11 = peg$parsetext_content();\n if (s11 !== peg$FAILED) {\n while (s11 !== peg$FAILED) {\n s10.push(s11);\n s11 = peg$parsetext_content();\n }\n } else {\n s10 = peg$FAILED;\n }\n if (s10 !== peg$FAILED) {\n s9 = input.substring(s9, peg$currPos);\n } else {\n s9 = s10;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s7;\n s8 = peg$c146(s1, s3, s5, s8, s9);\n s7 = s8;\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$currPos;\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n s7 = input.substring(s7, peg$currPos);\n } else {\n s7 = s8;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$currPos;\n s9 = peg$parsemarkerEnd();\n if (s9 !== peg$FAILED) {\n s10 = peg$parsestrictIdentifier();\n if (s10 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s11 = peg$c121(s1, s3, s5, s6, s7, s10);\n if (s11) {\n s11 = void 0;\n } else {\n s11 = peg$FAILED;\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parseEndline();\n if (s12 === peg$FAILED) {\n s12 = null;\n }\n if (s12 !== peg$FAILED) {\n peg$savedPos = s8;\n s9 = peg$c147(s1, s3, s5, s6, s7, s10);\n s8 = s9;\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s9 = peg$c123(s1, s3, s5, s6, s7, s8);\n if (s9) {\n s9 = void 0;\n } else {\n s9 = peg$FAILED;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c148(s1, s3, s5, s6, s7, s8);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetextBlock() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsetext_content();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsetext_content();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c149();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseambientBlock() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$parseemptyline();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c150();\n }\n s2 = s3;\n if (s2 === peg$FAILED) {\n s2 = [];\n if (peg$c151.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c152); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c151.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c152); }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = peg$parsetext_content();\n }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$parseemptyline();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c150();\n }\n s2 = s3;\n if (s2 === peg$FAILED) {\n s2 = [];\n if (peg$c151.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c152); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c151.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c152); }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = peg$parsetext_content();\n }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c153(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseabbreviatedBlockRaw() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parsemarkers();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsemarkerAbbreviatedBlock();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseemptyline();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s6 = peg$c154(s1, s3);\n if (s6) {\n s6 = void 0;\n } else {\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$currPos;\n s8 = [];\n s9 = peg$currPos;\n s10 = peg$currPos;\n peg$silentFails++;\n s11 = peg$parseemptyline();\n peg$silentFails--;\n if (s11 === peg$FAILED) {\n s10 = void 0;\n } else {\n peg$currPos = s10;\n s10 = peg$FAILED;\n }\n if (s10 !== peg$FAILED) {\n s11 = peg$parsetext_content();\n if (s11 !== peg$FAILED) {\n s10 = [s10, s11];\n s9 = s10;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n while (s9 !== peg$FAILED) {\n s8.push(s9);\n s9 = peg$currPos;\n s10 = peg$currPos;\n peg$silentFails++;\n s11 = peg$parseemptyline();\n peg$silentFails--;\n if (s11 === peg$FAILED) {\n s10 = void 0;\n } else {\n peg$currPos = s10;\n s10 = peg$FAILED;\n }\n if (s10 !== peg$FAILED) {\n s11 = peg$parsetext_content();\n if (s11 !== peg$FAILED) {\n s10 = [s10, s11];\n s9 = s10;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n }\n if (s8 !== peg$FAILED) {\n s7 = input.substring(s7, peg$currPos);\n } else {\n s7 = s8;\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c155(s1, s3, s7);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseabbreviatedBlockTable() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parsemarkers();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsemarkerAbbreviatedBlock();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseemptyline();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s6 = peg$c156(s1, s3);\n if (s6) {\n s6 = void 0;\n } else {\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s7 = peg$c157(s1, s3);\n if (s7) {\n s7 = void 0;\n } else {\n s7 = peg$FAILED;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parsetableContents();\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c158(s1, s3, s8);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseabbreviatedBlock() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parsemarkers();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsemarkerAbbreviatedBlock();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseemptyline();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$currPos;\n s7 = [];\n s8 = peg$currPos;\n s9 = peg$currPos;\n peg$silentFails++;\n s10 = peg$parseemptyline();\n peg$silentFails--;\n if (s10 === peg$FAILED) {\n s9 = void 0;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parsetext_content();\n if (s10 !== peg$FAILED) {\n s9 = [s9, s10];\n s8 = s9;\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$currPos;\n s9 = peg$currPos;\n peg$silentFails++;\n s10 = peg$parseemptyline();\n peg$silentFails--;\n if (s10 === peg$FAILED) {\n s9 = void 0;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parsetext_content();\n if (s10 !== peg$FAILED) {\n s9 = [s9, s10];\n s8 = s9;\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n }\n if (s7 !== peg$FAILED) {\n s6 = input.substring(s6, peg$currPos);\n } else {\n s6 = s7;\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c159(s1, s3, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsealias_replacement_text() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseText();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseText();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenewline();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$currPos;\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c160) {\n s6 = peg$c160;\n peg$currPos += 2;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c161); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n s8 = [];\n s9 = peg$parseText();\n if (s9 !== peg$FAILED) {\n while (s9 !== peg$FAILED) {\n s8.push(s9);\n s9 = peg$parseText();\n }\n } else {\n s8 = peg$FAILED;\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$parse_();\n if (s9 !== peg$FAILED) {\n s10 = peg$parsenewline();\n if (s10 !== peg$FAILED) {\n peg$savedPos = s4;\n s5 = peg$c89(s1, s8);\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$currPos;\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c160) {\n s6 = peg$c160;\n peg$currPos += 2;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c161); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n s8 = [];\n s9 = peg$parseText();\n if (s9 !== peg$FAILED) {\n while (s9 !== peg$FAILED) {\n s8.push(s9);\n s9 = peg$parseText();\n }\n } else {\n s8 = peg$FAILED;\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$parse_();\n if (s9 !== peg$FAILED) {\n s10 = peg$parsenewline();\n if (s10 !== peg$FAILED) {\n peg$savedPos = s4;\n s5 = peg$c89(s1, s8);\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c90(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsealiasDirective() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c27) {\n s2 = peg$c27;\n peg$currPos += 6;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n s5 = peg$parseidentifier();\n if (s5 !== peg$FAILED) {\n s4 = input.substring(s4, peg$currPos);\n } else {\n s4 = s5;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsealias_replacement_text();\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c162(s1, s2, s4, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseconfigDirective() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 7) === peg$c25) {\n s2 = peg$c25;\n peg$currPos += 7;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c26); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n s5 = peg$parsestrictIdentifier();\n if (s5 === peg$FAILED) {\n s5 = peg$currPos;\n if (peg$c163.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c164); }\n }\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c165) {\n s7 = peg$c165;\n peg$currPos += 2;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c166); }\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n if (s5 !== peg$FAILED) {\n s4 = input.substring(s4, peg$currPos);\n } else {\n s4 = s5;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsepod_configuration();\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c167(s1, s2, s4, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseparagraphBlockRaw() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemarkerFor();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsestrictIdentifier();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepod_configuration();\n if (s5 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s6 = peg$c168(s1, s2, s3, s5);\n if (s6) {\n s6 = void 0;\n } else {\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$currPos;\n s8 = [];\n s9 = peg$currPos;\n s10 = peg$currPos;\n peg$silentFails++;\n s11 = peg$parseemptyline();\n peg$silentFails--;\n if (s11 === peg$FAILED) {\n s10 = void 0;\n } else {\n peg$currPos = s10;\n s10 = peg$FAILED;\n }\n if (s10 !== peg$FAILED) {\n s11 = peg$parsetext_content();\n if (s11 !== peg$FAILED) {\n s10 = [s10, s11];\n s9 = s10;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n while (s9 !== peg$FAILED) {\n s8.push(s9);\n s9 = peg$currPos;\n s10 = peg$currPos;\n peg$silentFails++;\n s11 = peg$parseemptyline();\n peg$silentFails--;\n if (s11 === peg$FAILED) {\n s10 = void 0;\n } else {\n peg$currPos = s10;\n s10 = peg$FAILED;\n }\n if (s10 !== peg$FAILED) {\n s11 = peg$parsetext_content();\n if (s11 !== peg$FAILED) {\n s10 = [s10, s11];\n s9 = s10;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n }\n if (s8 !== peg$FAILED) {\n s7 = input.substring(s7, peg$currPos);\n } else {\n s7 = s8;\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c169(s1, s2, s3, s5, s7);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseparagraphBlockTable() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemarkerFor();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsestrictIdentifier();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepod_configuration();\n if (s5 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s6 = peg$c170(s1, s2, s3, s5);\n if (s6) {\n s6 = void 0;\n } else {\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s7 = peg$c171(s1, s2, s3, s5);\n if (s7) {\n s7 = void 0;\n } else {\n s7 = peg$FAILED;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parsetableContents();\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c172(s1, s2, s3, s5, s8);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseparagraphBlock() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemarkerFor();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsestrictIdentifier();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepod_configuration();\n if (s5 !== peg$FAILED) {\n s6 = peg$currPos;\n s7 = [];\n s8 = peg$currPos;\n s9 = peg$currPos;\n peg$silentFails++;\n s10 = peg$parseemptyline();\n peg$silentFails--;\n if (s10 === peg$FAILED) {\n s9 = void 0;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parsetext_content();\n if (s10 !== peg$FAILED) {\n s9 = [s9, s10];\n s8 = s9;\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$currPos;\n s9 = peg$currPos;\n peg$silentFails++;\n s10 = peg$parseemptyline();\n peg$silentFails--;\n if (s10 === peg$FAILED) {\n s9 = void 0;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parsetext_content();\n if (s10 !== peg$FAILED) {\n s9 = [s9, s10];\n s8 = s9;\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n }\n if (s7 !== peg$FAILED) {\n s6 = input.substring(s6, peg$currPos);\n } else {\n s6 = s7;\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c173(s1, s2, s3, s5, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseidentifier() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (peg$c174.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c175); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c43.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c44); }\n }\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c43.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c44); }\n }\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parse___() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = [];\n if (peg$c177.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c178); }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$c177.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c178); }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c176); }\n }\n\n return s0;\n }\n\n function peg$parse__() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = [];\n if (peg$c177.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c178); }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$c177.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c178); }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c179); }\n }\n\n return s0;\n }\n\n\n // the following names: MyBlock, myBlock are use for extending pod6\n function isNamedBlock(name) {\n return (\n name !== name.toLowerCase() \n && \n name !== name.toUpperCase() \n )\n }\n\n // the following names: =AUTHOR =DESCRIPTION are reserved\n function isSemanticBlock(name) {\n return name === name.toUpperCase()\n }\n\n function flattenDeep(arr) {\n return arr.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), []);\n }\n\n function isSupportedBlockName(name) {\n return [\n 'code', \n 'comment',\n 'data',\n 'defn',\n 'head',\n 'input',\n 'item', \n 'nested',\n 'output',\n 'para', \n 'pod',\n 'table',\n ].includes(name) \n || \n isSemanticBlock(name) \n ||\n // TODO: move detect headers/items level to parser\n name.match(/^(head|item)\\d+$/)\n ||\n isNamedBlock(name)\n }\n\n function exludeVMargin( vmargin, string) {\n if (vmargin.length == 0 ) return string\n if (string.indexOf(vmargin) == 0 ) {\n return string.replace(vmargin, '')\n }\n return string.replace(/^\\s+/, '')\n }\n\n\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n}\n\nmodule.exports = {\n SyntaxError: peg$SyntaxError,\n parse: peg$parse\n};\n", "/*\n * Generated by PEG.js 0.10.0.\n *\n * http://pegjs.org/\n */\n\n\"use strict\";\n\nfunction peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, peg$SyntaxError);\n }\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function(expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n\n \"class\": function(expectation) {\n var escapedParts = \"\",\n i;\n\n for (i = 0; i < expectation.parts.length; i++) {\n escapedParts += expectation.parts[i] instanceof Array\n ? classEscape(expectation.parts[i][0]) + \"-\" + classEscape(expectation.parts[i][1])\n : classEscape(expectation.parts[i]);\n }\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n },\n\n any: function(expectation) {\n return \"any character\";\n },\n\n end: function(expectation) {\n return \"end of input\";\n },\n\n other: function(expectation) {\n return expectation.description;\n }\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x' + hex(ch); });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\]/g, '\\\\]')\n .replace(/\\^/g, '\\\\^')\n .replace(/-/g, '\\\\-')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x' + hex(ch); });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = new Array(expected.length),\n i, j;\n\n for (i = 0; i < expected.length; i++) {\n descriptions[i] = describeExpectation(expected[i]);\n }\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n options = options !== void 0 ? options : {};\n\n var peg$FAILED = {},\n\n peg$startRuleFunctions = { Expression: peg$parseExpression },\n peg$startRuleFunction = peg$parseExpression,\n\n peg$c0 = \"A\",\n peg$c1 = peg$literalExpectation(\"A\", false),\n peg$c2 = \"V\",\n peg$c3 = peg$literalExpectation(\"V\", false),\n peg$c4 = \"R\",\n peg$c5 = peg$literalExpectation(\"R\", false),\n peg$c6 = \"B\",\n peg$c7 = peg$literalExpectation(\"B\", false),\n peg$c8 = \"I\",\n peg$c9 = peg$literalExpectation(\"I\", false),\n peg$c10 = \"C\",\n peg$c11 = peg$literalExpectation(\"C\", false),\n peg$c12 = \"D\",\n peg$c13 = peg$literalExpectation(\"D\", false),\n peg$c14 = \"E\",\n peg$c15 = peg$literalExpectation(\"E\", false),\n peg$c16 = \"K\",\n peg$c17 = peg$literalExpectation(\"K\", false),\n peg$c18 = \"L\",\n peg$c19 = peg$literalExpectation(\"L\", false),\n peg$c20 = \"S\",\n peg$c21 = peg$literalExpectation(\"S\", false),\n peg$c22 = \"T\",\n peg$c23 = peg$literalExpectation(\"T\", false),\n peg$c24 = \"U\",\n peg$c25 = peg$literalExpectation(\"U\", false),\n peg$c26 = \"Z\",\n peg$c27 = peg$literalExpectation(\"Z\", false),\n peg$c28 = \"N\",\n peg$c29 = peg$literalExpectation(\"N\", false),\n peg$c30 = \"X\",\n peg$c31 = peg$literalExpectation(\"X\", false),\n peg$c32 = /^[a-zA-Z]/,\n peg$c33 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"]], false, false),\n peg$c34 = /^[a-zA-Z0-9_\\-]/,\n peg$c35 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"_\", \"-\"], false, false),\n peg$c36 = /^[ \\t\\f]/,\n peg$c37 = peg$classExpectation([\" \", \"\\t\", \"\\f\"], false, false),\n peg$c38 = function(char) { return !(options.allowed || [] ).length //allow all formatting codes by default\n || \n (options.allowed || [] ).includes(char)\n },\n peg$c39 = peg$anyExpectation(),\n peg$c40 = function(id) { return id },\n peg$c41 = function(name) {return name === \"A\"},\n peg$c42 = function(name, content) {\n return { \n content,\n 'type':\"fcode\",\n name,\n }\n },\n peg$c43 = function(name) {return name === \"D\"},\n peg$c44 = function(name, content, t) { return flattenDeep(t) },\n peg$c45 = function(name, content, synonyms) {\n return { \n content,\n 'type':\"fcode\",\n name,\n synonyms \n }\n },\n peg$c46 = function(name) {return name === \"V\"},\n peg$c47 = function(name, content) { \n return { \n content,\n 'type':\"fcode\",\n name,\n }\n },\n peg$c48 = \"<\",\n peg$c49 = peg$literalExpectation(\"<\", false),\n peg$c50 = \">\",\n peg$c51 = peg$literalExpectation(\">\", false),\n peg$c52 = function() {return text()},\n peg$c53 = function(text) {return text},\n peg$c54 = function(name) {return name === \"C\"},\n peg$c55 = \"|\",\n peg$c56 = peg$literalExpectation(\"|\", false),\n peg$c57 = function(name) {return name === \"L\"},\n peg$c58 = function(name, content, t) { return t },\n peg$c59 = function(name, content, meta) {\n return { \n content,\n 'type':\"fcode\",\n name,\n meta\n }\n },\n peg$c60 = \";\",\n peg$c61 = peg$literalExpectation(\";\", false),\n peg$c62 = /^[ \\xA0\\u2001\\t\\f\\u2008]/,\n peg$c63 = peg$classExpectation([\" \", \"\\xA0\", \"\\u2001\", \"\\t\", \"\\f\", \"\\u2008\"], false, false),\n peg$c64 = function(code, codes) { return flattenDeep([ code, codes ]) },\n peg$c65 = function(code) { return [code] },\n peg$c66 = function(name) {return name === \"X\"},\n peg$c67 = function(name, content, entry) {\n return { \n content,\n 'type':\"fcode\",\n name,\n entry\n }\n },\n peg$c68 = function(name) {return name === \"S\"},\n peg$c69 = function(name) {return name === \"Z\"},\n peg$c70 = /^[0-9]/,\n peg$c71 = peg$classExpectation([[\"0\", \"9\"]], false, false),\n peg$c72 = \"0d\",\n peg$c73 = peg$literalExpectation(\"0d\", false),\n peg$c74 = function(number) { return parseInt(number,10) },\n peg$c75 = \"0o\",\n peg$c76 = peg$literalExpectation(\"0o\", false),\n peg$c77 = function(number) { return parseInt(number,8) },\n peg$c78 = \"0b\",\n peg$c79 = peg$literalExpectation(\"0b\", false),\n peg$c80 = function(number) { return parseInt(number,2) },\n peg$c81 = \"0x\",\n peg$c82 = peg$literalExpectation(\"0x\", false),\n peg$c83 = /^[0-9A-Fa-f]/,\n peg$c84 = peg$classExpectation([[\"0\", \"9\"], [\"A\", \"F\"], [\"a\", \"f\"]], false, false),\n peg$c85 = function() { return parseInt(text()) },\n peg$c86 = function(number) { return { type: 'number', value:parseInt(number,10)}},\n peg$c87 = function(name) {return name === \"E\"},\n peg$c88 = function(name, t) { return flattenDeep(t) },\n peg$c89 = function(name, content) {\n return { \n content: content ? content : [],\n 'type':\"fcode\",\n name\n }\n },\n peg$c90 = function(name) { return name },\n peg$c91 = function(name) { return name !== 'C' },\n peg$c92 = function(name, content) { return {content, type:'fcode', name}},\n\n peg$currPos = 0,\n peg$savedPos = 0,\n peg$posDetailsCache = [{ line: 1, column: 1 }],\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location\n );\n }\n\n function error(message, location) {\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos], p;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos),\n endPosDetails = peg$computePosDetails(endPos);\n\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parseExpression() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parseallowed_rules();\n if (s1 === peg$FAILED) {\n s1 = peg$parsecode();\n if (s1 === peg$FAILED) {\n s1 = peg$parsetext();\n if (s1 === peg$FAILED) {\n s1 = peg$parseraw_text();\n }\n }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseallowed_rules();\n if (s1 === peg$FAILED) {\n s1 = peg$parsecode();\n if (s1 === peg$FAILED) {\n s1 = peg$parsetext();\n if (s1 === peg$FAILED) {\n s1 = peg$parseraw_text();\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseallowed_rules() {\n var s0;\n\n s0 = peg$parsecode_A();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecode_S();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecode_C();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecode_D();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecode_E();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecode_V();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecode_L();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecode_X();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecode_Z();\n }\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseallpossible_codes() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 65) {\n s0 = peg$c0;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 86) {\n s0 = peg$c2;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 82) {\n s0 = peg$c4;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 66) {\n s0 = peg$c6;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 73) {\n s0 = peg$c8;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 67) {\n s0 = peg$c10;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 68) {\n s0 = peg$c12;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 69) {\n s0 = peg$c14;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 75) {\n s0 = peg$c16;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 76) {\n s0 = peg$c18;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 83) {\n s0 = peg$c20;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 84) {\n s0 = peg$c22;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c23); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 85) {\n s0 = peg$c24;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 90) {\n s0 = peg$c26;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c27); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 78) {\n s0 = peg$c28;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 88) {\n s0 = peg$c30;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseidentifier() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (peg$c32.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c33); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c34.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c34.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1;\n\n s0 = [];\n if (peg$c36.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$c36.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n }\n\n return s0;\n }\n\n function peg$parseallowed_code() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseallpossible_codes();\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c38(s1);\n if (s2) {\n s2 = void 0;\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseraw_text() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.length > peg$currPos) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsecontent_A() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n s2 = peg$parseend_code();\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = void 0;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = peg$parseidentifier();\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n } else {\n s3 = s4;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c40(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = null;\n }\n\n return s0;\n }\n\n function peg$parsecode_A() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parsestart_code();\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c41(s1);\n if (s2) {\n s2 = void 0;\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecontent_A();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseend_code();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c42(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecode_D() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsestart_code();\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c43(s1);\n if (s2) {\n s2 = void 0;\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsetext_L();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsetext_L();\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n s5 = peg$parseseparator();\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = peg$parsearray_items();\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$parsearray_items();\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s4;\n s5 = peg$c44(s1, s3, s6);\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseend_code();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c45(s1, s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecode_V() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parsestart_code();\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c46(s1);\n if (s2) {\n s2 = void 0;\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = [];\n s5 = peg$parsetext_C();\n if (s5 !== peg$FAILED) {\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsetext_C();\n }\n } else {\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n } else {\n s3 = s4;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseend_code();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c47(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseallowed_code_C() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 66) {\n s0 = peg$c6;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n\n return s0;\n }\n\n function peg$parselooks_like_code_C() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseallowed_code_C();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 60) {\n s2 = peg$c48;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenot_code();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s4 = peg$c50;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c52();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetext_C() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$currPos;\n s5 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 60) {\n s6 = peg$c48;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = void 0;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 60) {\n s5 = peg$c48;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsetext_C();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s7 = peg$c50;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\n }\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = peg$parselooks_like_code_C();\n if (s3 === peg$FAILED) {\n s3 = peg$parsenot_code();\n }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$currPos;\n s5 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 60) {\n s6 = peg$c48;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = void 0;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 60) {\n s5 = peg$c48;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsetext_C();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s7 = peg$c50;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\n }\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = peg$parselooks_like_code_C();\n if (s3 === peg$FAILED) {\n s3 = peg$parsenot_code();\n }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c53(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsecode_C() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parsestart_code();\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c54(s1);\n if (s2) {\n s2 = void 0;\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsetext_C();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsetext_C();\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseend_code();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c42(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseseparator() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 124) {\n s0 = peg$c55;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c56); }\n }\n\n return s0;\n }\n\n function peg$parsetext_L() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 60) {\n s5 = peg$c48;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 60) {\n s4 = peg$c48;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsetext_L();\n if (s5 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s6 = peg$c50;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\n }\n if (s6 !== peg$FAILED) {\n s3 = [s3, s4, s5, s6];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parseseparator();\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = void 0;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseend_code();\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n peg$silentFails++;\n s6 = peg$parsestart_code();\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = void 0;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$currPos;\n peg$silentFails++;\n s7 = peg$parselooks_like_code();\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = void 0;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s7 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s7 !== peg$FAILED) {\n s3 = [s3, s4, s5, s6, s7];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 60) {\n s5 = peg$c48;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 60) {\n s4 = peg$c48;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsetext_L();\n if (s5 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s6 = peg$c50;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\n }\n if (s6 !== peg$FAILED) {\n s3 = [s3, s4, s5, s6];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parseseparator();\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = void 0;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseend_code();\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n peg$silentFails++;\n s6 = peg$parsestart_code();\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = void 0;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$currPos;\n peg$silentFails++;\n s7 = peg$parselooks_like_code();\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = void 0;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s7 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s7 !== peg$FAILED) {\n s3 = [s3, s4, s5, s6, s7];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsecode_L() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n s0 = peg$currPos;\n s1 = peg$parsestart_code();\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c57(s1);\n if (s2) {\n s2 = void 0;\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsecode_C();\n if (s4 === peg$FAILED) {\n s4 = peg$parsetext_L();\n }\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsecode_C();\n if (s4 === peg$FAILED) {\n s4 = peg$parsetext_L();\n }\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n s5 = peg$parseseparator();\n if (s5 !== peg$FAILED) {\n s6 = peg$currPos;\n s7 = [];\n s8 = peg$currPos;\n s9 = peg$currPos;\n peg$silentFails++;\n s10 = peg$parseend_code();\n peg$silentFails--;\n if (s10 === peg$FAILED) {\n s9 = void 0;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s10 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s10 !== peg$FAILED) {\n s9 = [s9, s10];\n s8 = s9;\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$currPos;\n s9 = peg$currPos;\n peg$silentFails++;\n s10 = peg$parseend_code();\n peg$silentFails--;\n if (s10 === peg$FAILED) {\n s9 = void 0;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s10 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s10 !== peg$FAILED) {\n s9 = [s9, s10];\n s8 = s9;\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n } else {\n peg$currPos = s8;\n s8 = peg$FAILED;\n }\n }\n if (s7 !== peg$FAILED) {\n s6 = input.substring(s6, peg$currPos);\n } else {\n s6 = s7;\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s4;\n s5 = peg$c58(s1, s3, s6);\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseend_code();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c59(s1, s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseitem() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 59) {\n s4 = peg$c60;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c61); }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = void 0;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseend_code();\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 59) {\n s4 = peg$c60;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c61); }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = void 0;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseend_code();\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsehs() {\n var s0;\n\n if (peg$c62.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c63); }\n }\n\n return s0;\n }\n\n function peg$parsearray_items() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseitem();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsehs();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsehs();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 59) {\n s3 = peg$c60;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c61); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsehs();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsehs();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsearray_items();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c64(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseitem();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c65(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsecode_X() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsestart_code();\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c66(s1);\n if (s2) {\n s2 = void 0;\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsetext_L();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsetext_L();\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n s5 = peg$parseseparator();\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = peg$parsearray_items();\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$parsearray_items();\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s4;\n s5 = peg$c44(s1, s3, s6);\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseend_code();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c67(s1, s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecode_S() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsestart_code();\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c68(s1);\n if (s2) {\n s2 = void 0;\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = [];\n s5 = peg$currPos;\n s6 = peg$currPos;\n peg$silentFails++;\n s7 = peg$parseend_code();\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = void 0;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s7 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$currPos;\n s6 = peg$currPos;\n peg$silentFails++;\n s7 = peg$parseend_code();\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = void 0;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s7 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n } else {\n s3 = s4;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseend_code();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c42(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecode_Z() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsestart_code();\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c69(s1);\n if (s2) {\n s2 = void 0;\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = [];\n s5 = peg$currPos;\n s6 = peg$currPos;\n peg$silentFails++;\n s7 = peg$parseend_code();\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = void 0;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s7 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$currPos;\n s6 = peg$currPos;\n peg$silentFails++;\n s7 = peg$parseend_code();\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = void 0;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s7 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n } else {\n s3 = s4;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseend_code();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c42(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c70.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c71); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c70.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c71); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsedecimalNumber() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c72) {\n s1 = peg$c72;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c74(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseoctalNumber() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c75) {\n s1 = peg$c75;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c76); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c77(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsebinaryNumber() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c78) {\n s1 = peg$c78;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c79); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c80(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsehexadecimalNumber() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c81) {\n s3 = peg$c81;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c82); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n if (peg$c83.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c84); }\n }\n if (s5 !== peg$FAILED) {\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (peg$c83.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c84); }\n }\n }\n } else {\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c85();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseitem_E() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseoctalNumber();\n if (s2 === peg$FAILED) {\n s2 = peg$parsedecimalNumber();\n if (s2 === peg$FAILED) {\n s2 = peg$parsebinaryNumber();\n if (s2 === peg$FAILED) {\n s2 = peg$parsehexadecimalNumber();\n if (s2 === peg$FAILED) {\n s2 = peg$parsenumber();\n }\n }\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c86(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsearray_E_items() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseitem_E();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsehs();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsehs();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 59) {\n s3 = peg$c60;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c61); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsehs();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsehs();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsearray_E_items();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c64(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseitem_E();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c65(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsecode_E() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parsestart_code();\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c87(s1);\n if (s2) {\n s2 = void 0;\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = peg$parsearray_E_items();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s3;\n s4 = peg$c88(s1, s4);\n }\n s3 = s4;\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseend_code();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c89(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsestart_code() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseallowed_code();\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 60) {\n s2 = peg$c48;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c90(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseend_code() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 62) {\n s0 = peg$c50;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\n }\n\n return s0;\n }\n\n function peg$parsecode() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parsestart_code();\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c91(s1);\n if (s2) {\n s2 = void 0;\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseallowed_rules();\n if (s4 === peg$FAILED) {\n s4 = peg$parsecode();\n if (s4 === peg$FAILED) {\n s4 = peg$parsetext();\n }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseallowed_rules();\n if (s4 === peg$FAILED) {\n s4 = peg$parsecode();\n if (s4 === peg$FAILED) {\n s4 = peg$parsetext();\n }\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseend_code();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c92(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseempty() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parseend_code();\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = void 0;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parseend_code();\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = void 0;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsetext() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 60) {\n s4 = peg$c48;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsetext();\n if (s5 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s6 = peg$c50;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\n }\n if (s6 !== peg$FAILED) {\n s4 = [s4, s5, s6];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = peg$parselooks_like_code();\n if (s3 === peg$FAILED) {\n s3 = peg$parsenot_code();\n }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 60) {\n s4 = peg$c48;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsetext();\n if (s5 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s6 = peg$c50;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\n }\n if (s6 !== peg$FAILED) {\n s4 = [s4, s5, s6];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = peg$parselooks_like_code();\n if (s3 === peg$FAILED) {\n s3 = peg$parsenot_code();\n }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c53(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsenot_code() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseend_code();\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n peg$silentFails++;\n s6 = peg$parsestart_code();\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = void 0;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$currPos;\n peg$silentFails++;\n s7 = peg$parselooks_like_code();\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = void 0;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s7 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseend_code();\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n peg$silentFails++;\n s6 = peg$parsestart_code();\n peg$silentFails--;\n if (s6 === peg$FAILED) {\n s5 = void 0;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$currPos;\n peg$silentFails++;\n s7 = peg$parselooks_like_code();\n peg$silentFails--;\n if (s7 === peg$FAILED) {\n s6 = void 0;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s7 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c53(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parselooks_like_code() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseallowed_code();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 60) {\n s2 = peg$c48;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenot_code();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s4 = peg$c50;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c52();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n\n function flattenDeep(arr) {\n return arr.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), []);\n }\n\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n}\n\nmodule.exports = {\n SyntaxError: peg$SyntaxError,\n parse: peg$parse\n};\n", "/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n", "'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n", "/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n", "import { content as nodeContent, Plugins } from '@podlite/schema'\nimport { Plugin } from '@podlite/schema'\nimport { md2ast } from './tools'\n\nexport const plugin: Plugin = {\n toAst: (_, processor) => (node, ctx) => {\n if (typeof node !== 'string' && 'type' in node && 'content' in node && node.type === 'block') {\n const content = node.content[0]\n if (content && typeof content !== 'string' && 'location' in node && 'value' in content) {\n const lineOffset = node.location.start.line\n return { ...node, content: md2ast(content, { lineOffset }) }\n }\n return node\n }\n },\n toJSX: helper => {\n return nodeContent\n },\n}\nexport const PluginRegister: Plugins = {\n Markdown: plugin,\n}\n\nexport { md2ast as parseMd } from './tools'\nexport default plugin\n", "import Ajv, { ErrorObject, JSONSchemaType } from 'ajv'\nimport * as pointer from 'json-pointer'\nimport { AstTree, PodNode, PodliteDocument } from './types'\nexport { PodliteDocument } from './types'\nimport * as jsonShemes from '../schema'\nimport { makeInterator } from './ast-inerator'\nexport { AstTree } from './types'\nexport * from './types'\nexport * from './blocks-helpers'\nexport * from './query-helpers'\nexport * from './ast-helpers'\nexport * from './helpers/handlers'\n\nexport { makeInterator } from './ast-inerator'\nexport { makeTransformer, isNamedBlock, isSemanticBlock } from './helpers/makeTransformer'\nexport { toAny } from './exportAny'\nexport { makeAttrs } from './helpers/config'\nexport { pluginCleanLocation } from './plugin-clean-location'\nexport { toAnyRules } from './helpers/plugins'\n\nexport { podlitePluggable, Podlite, PodliteExport, cleanIds, frozenIds } from './pluggableParser'\n\nimport * as parser from './grammar'\nimport vmargin_plug from './plugin-vmargin'\nimport formattingCodes_plug from './plugin-formatting-codes'\nimport itemsNumbering_plug from './plugin-items'\nimport heading_plug from './plugin-heading'\nimport defnGroup_plug from './plugin-group-defn'\nimport itemsGroup_plug from './plugin-group-items'\nimport defnTerms_plug from './plugin-defn-fill-term'\nimport table_plug from './plugin-tables'\n\nexport function toAst() {\n return {}\n}\n\nexport type SchemaValidationError = ErrorObject<string, Record<string, any>>\nconst ajv = new Ajv({ strict: true, allowUnionTypes: true })\n\nexport function getTextContentFromNode(node: PodNode) {\n let text = ''\n const rules = {\n ':text': node => {\n text += node.value\n },\n ':verbatim': node => {\n text += node.value\n },\n }\n const transformer = makeInterator(rules)\n const res = transformer(node, {})\n return text\n}\n\nexport function validatePodliteAst(data: unknown): SchemaValidationError[] {\n return validateAst(data, 'PodliteDocument')\n}\nexport function validateAstTree(data: unknown): SchemaValidationError[] {\n return validateAst(data, 'AstTree')\n}\n\nexport function validateAst(data: unknown, Name: string = 'AstTree'): SchemaValidationError[] {\n const AstTreeSchema: JSONSchemaType<AstTree> = jsonShemes[Name]\n if (!AstTreeSchema) {\n console.warn(`[validateAst] Can't exists ${Name} scheme.`)\n }\n\n const validate = ajv.compile<AstTree>(AstTreeSchema)\n if (validate(data)) {\n return []\n }\n return validate.errors || []\n}\n\nexport function isValidateError(result: SchemaValidationError[], src: any): any {\n if (result.length > 0) {\n // get most erorred dataPath\n let errors_by_path = {}\n const reducer = (acc, value) => {\n acc[value.dataPath] = (acc[value.dataPath] || 0) + 1\n return acc\n }\n const pathMap = result.reduce(reducer, errors_by_path)\n const mostlyError = (Object.keys(pathMap).sort((a, b) => pathMap[b] - pathMap[a]) || [])[0]\n return pointer.get(src, mostlyError)\n }\n return undefined\n}\nexport interface Test {\n ters: string\n}\n\nexport interface nBlock {\n type: 'block'\n name: 'pod'\n content: AST\n margin: string\n // [name : string]:string,\n}\nexport interface nCode {\n type: 'code'\n content: []\n name: string\n margin: string\n config: []\n text: string\n}\n\nexport interface nText {\n type: 'text'\n content: []\n name: string\n margin: string\n config: []\n value: string\n}\n\nexport interface nPara {\n type: 'para'\n content: []\n name: string\n margin: string\n config: []\n}\n\nexport interface nVerbatim {\n type: 'verbatim'\n value: string\n margin: string\n text: string\n}\nexport type Node = nBlock | nCode | nText | nPara | nVerbatim\nexport type AST = Array<Node>\nexport type ParserPlugin = (opt: { skipChain: number; podMode: number }) => (param: AST) => AST\nfunction makeTree() {\n var plugins: Array<ParserPlugin> = []\n chain.use = use\n chain.parse = parse\n chain.use(vmargin_plug)\n chain.use(itemsNumbering_plug)\n chain.use(heading_plug)\n chain.use(defnTerms_plug)\n chain.use(table_plug)\n chain.use(formattingCodes_plug)\n\n // save order for the next two plugins\n chain.use(itemsGroup_plug)\n chain.use(defnGroup_plug)\n return chain\n\n function chain() {\n return\n }\n\n function use(plugin: ParserPlugin) {\n if (!['function'].includes(typeof plugin)) {\n throw plugin\n }\n\n plugins.push(plugin)\n return chain\n }\n\n function parse(src: string, opt = { skipChain: 0, podMode: 1 }) {\n let tree: AST = parser.parse(src, { podMode: opt.podMode })\n if (!opt.skipChain) {\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i]\n // init\n const visitor = plugin(opt)\n // process tree\n tree = visitor(tree)\n }\n }\n return tree\n }\n}\n\nexport { makeTree as toTree }\nconst parse: Function = makeTree().parse\nexport { parse as parse }\nexport { default as toHtml } from './exportHtml'\nexport { default as Writer } from './writer'\n// Cannot be `import` as it's not under TS root dir\n// https://stackoverflow.com/questions/51070138/how-to-import-package-json-into-typescript-file-without-including-it-in-the-comp\n\nconst { version: VERSION } = require('../package.json')\n// const {version: VERSION} = {version:'0.1.0'};\nexport { VERSION as version }\n", "import Writer from '../writer'\n\n/**\nsample | type | name\n----------------------------------\n'C<>', \n'C:fcode' fcode C\n'<>' fcode any name, or /.+/\n'name' block 'name'\n':blankline' blankline any name, or /.+/\n'C:fcode' fcode C\n'*:*', '*' any type any name\n\n*/\n\nexport interface RuleHandler<T = any> {\n (writer: Writer, processor): (node: T, ctx, interator) => void\n}\nexport type RuleObject = {\n [name: string]: RuleHandler\n}\nexport type Filter = { name: string; type?: string } | { name?: any; type: 'block' | any } | {}\n\nexport interface GetQuery {\n (k: string): Filter\n}\n\nconst getQuery: GetQuery = function (k) {\n if (k === '*:*' || k === '*') {\n return {}\n }\n if (k === '<>') {\n return { type: 'fcode' }\n }\n // try to split 'name:type'\n let [name, type] = k.split(':')\n if (name && type) {\n return { name, type }\n }\n if (!name) {\n return { type }\n }\n if (!type) {\n // check C<>\n const re = name.match(/(.+)\\<\\>/)\n if (re) {\n return { type: 'fcode', name: re[1] }\n }\n return { name, type: 'block' }\n }\n return { name, type }\n}\n\nexport const makePlug = (k: string) => {\n const res = getQuery(k)\n // @ts-ignores\n let { name, type } = res\n if (type && type === '*') {\n return { name }\n }\n if (name && name === '*') {\n return { type }\n }\n return res\n}\n\n// is - check if node have handler\nexport function is(query, node) {\n function isEmpty(obj) {\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) return false\n }\n return true\n }\n // check if query empty\n if (isEmpty(query)) return true\n for (var prop in query) {\n if (query === undefined) {\n console.warn('[pod6] undefined key!!!')\n }\n if (query.hasOwnProperty(prop)) {\n if (node === undefined) {\n console.warn('[pod6] undefined node!!!')\n }\n if (node && node.hasOwnProperty(prop)) {\n if (query[prop] !== node[prop]) {\n return false\n }\n } else {\n return false\n }\n }\n }\n return true\n}\n\nexport interface Rule {\n (): {}\n isFor(): void\n fn(): void\n}\nexport const makeRule = (query, fn) => {\n rule.rule = query\n rule.isFor = isFor\n rule.fn = fn\n return rule\n\n function rule() {}\n\n function isFor(node) {\n if ('string' === typeof node) return false\n return is(query, node)\n }\n}\n\ninterface MakeRulesArray {\n (key: RuleObject | Array<RuleObject>, fn?: Function): Array<any>\n}\nexport const makeRulesArray: MakeRulesArray = (key: RuleObject | Array<RuleObject>, fn) => {\n if (key instanceof Array) {\n return key.reduce((acc, item) => {\n acc.push(...makeRulesArray(item))\n return acc\n }, [])\n }\n\n if (key instanceof Object) {\n let rules = []\n for (var prop in key) {\n if (key.hasOwnProperty(prop)) {\n rules.push(makeRule(makePlug(prop), key[prop]))\n }\n }\n return rules\n }\n return [makeRule(makePlug(key), fn)]\n}\n", "import crypto from 'crypto'\nimport { urlAlphabet } from './url-alphabet/index.js'\nconst POOL_SIZE_MULTIPLIER = 128\nlet pool, poolOffset\nlet fillPool = bytes => {\n if (!pool || pool.length < bytes) {\n pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER)\n crypto.randomFillSync(pool)\n poolOffset = 0\n } else if (poolOffset + bytes > pool.length) {\n crypto.randomFillSync(pool)\n poolOffset = 0\n }\n poolOffset += bytes\n}\nlet random = bytes => {\n fillPool(bytes)\n return pool.subarray(poolOffset - bytes, poolOffset)\n}\nlet customRandom = (alphabet, size, getRandom) => {\n let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1\n let step = Math.ceil((1.6 * mask * size) / alphabet.length)\n return () => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let i = step\n while (i--) {\n id += alphabet[bytes[i] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nlet customAlphabet = (alphabet, size) => customRandom(alphabet, size, random)\nlet nanoid = (size = 21) => {\n fillPool(size)\n let id = ''\n for (let i = poolOffset - size; i < poolOffset; i++) {\n id += urlAlphabet[pool[i] & 63]\n }\n return id\n}\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n", "let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nexport { urlAlphabet }\n", "import {\n AstTree,\n BlockCaption,\n BlockItem,\n Location,\n PodNode,\n RootBlock,\n Toc,\n TocItem,\n TocList,\n Node,\n Image,\n} from './types'\nimport { nanoid } from 'nanoid'\n\nexport const mkNode = <P extends Record<string, any>>(attr: P): P => {\n return { ...attr }\n}\n\nexport const filterNulls = content => {\n if (Array.isArray(content)) {\n return content.filter(i => i)\n }\n console.warn('[podlite-schema] filterNulls got not array as content')\n}\nexport const mkBlock = (attrs, content) => {\n const type = 'block'\n const name = attrs.name\n const attributes = { id: nanoid(), margin: '', ...attrs }\n var result = mkNode({ type, ...attributes, content: filterNulls(content) })\n return result\n}\n\nexport const mkBlankline = () => {\n return mkNode({ type: 'blankline' })\n}\n\nexport const mkFomattingCode = (attrs, content) => {\n return mkNode({ type: 'fcode', ...attrs, content })\n}\n\nexport const mkFomattingCodeL = (attrs, content) => {\n let res = mkNode({ ...attrs, type: 'fcode', name: 'L', content: filterNulls(content) })\n return res\n}\n\nexport const mkFomattingCodeDelete = content => {\n let res = mkNode({ type: 'fcode', name: 'Delete', content: filterNulls(content) })\n return res\n}\n\nexport const mkVerbatim = text => {\n return mkNode({ type: 'verbatim', value: text })\n}\n\n// Table of contents helpers\nexport const mkToc = (content: TocList, title?: string): Toc => {\n return mkNode({ type: 'toc', title, content })\n}\nexport const mkTocList = (content: Array<TocItem | TocList>, level: number): TocList => {\n return mkNode({ type: 'toc-list', level, content })\n}\nexport const mkTocItem = (content: PodNode): TocItem => {\n return mkNode({ type: 'toc-item', node: content, content: [content] })\n}\n\nexport const mkCaption = (content: Array<Node>): BlockCaption => {\n return {\n type: 'block',\n name: 'caption',\n content,\n }\n}\nexport const mkImage = (src: string, alt?: string): Image => {\n return {\n type: 'image',\n src,\n alt,\n }\n}\n\nexport const mkRootBlock = ({ margin = '' }, content): RootBlock => {\n return mkBlock({ name: 'root', margin }, content)\n}\nexport interface mkBlockItemParams {\n level: number\n location: Location\n margin: string\n}\n\nexport const mkItemBlock = ({ level, location, margin }: mkBlockItemParams, content: AstTree): BlockItem => {\n return mkBlock({ name: 'item', level, margin, location }, content)\n}\n", "export type Context = {\n config?: any\n}\nexport interface Attr {\n getAllValues: (name: any) => any\n getFirstValue: (name: any) => any\n asHash: () => {}\n (): {}\n exists(name: string): boolean\n}\n\nexport const makeAttrs = (node, ctx: Context = {}): Attr => {\n const config = node.config instanceof Array ? node.config : []\n // add config's from ctx\n let configured = []\n if (ctx.config && ctx.config.hasOwnProperty(node.name)) {\n configured = ctx.config[node.name]\n }\n let result = {}\n ;[...config, ...configured].map(a => {\n if (!result.hasOwnProperty(a.name)) {\n result[a.name] = []\n }\n if (a.type === 'array') {\n result[a.name].push(...a.value)\n } else {\n result[a.name].push(a.value)\n }\n })\n let resfn = function () {} as Attr\n /**\n * check if prop exists\n *\n * for example: attrs.exists('caption')\n */\n resfn.exists = name => result.hasOwnProperty(name)\n\n /**\n * return array for prop\n *\n * for example: attrs.getAllValues('caption')\n */\n resfn.getAllValues = name => {\n return resfn.exists(name) ? result[name] : []\n }\n\n /**\n * return first value or undefined if prop don't exists\n *\n * for example: attrs.exists('caption')\n */\n resfn.getFirstValue = name => {\n return resfn.exists(name) ? resfn.getAllValues(name)[0] : undefined\n }\n\n /**\n * return key: val\n *\n * for example: attrs.asHash()\n */\n resfn.asHash = () => result\n\n return resfn\n}\nexport default makeAttrs\n", "import { getTextContentFromNode } from '.'\nimport makeAttrsPod from './helpers/config'\n\nexport const getNodeId = (node, ctx) => {\n const conf = makeAttrsPod(node, ctx)\n if (conf.exists('id')) {\n return conf.getFirstValue('id')\n }\n return node.id\n}\nexport const makeAttrs = makeAttrsPod\n", "function flattenDeep(arr) {\n if (!Array.isArray(arr)) {\n return arr\n }\n return arr.reduce((acc, val) => (Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val)), [])\n}\nfunction thisFunc(rules) {\n function interator(node, context) {\n if (node instanceof Array) {\n // filter null and undefined nodes\n return flattenDeep(node.map(item => interator(item, context))).filter(Boolean)\n }\n if ('string' === typeof node) {\n // convert string to lex node with type\n return interator({ type: 'text', value: node }, context)\n }\n // get first rule for this node\n const reversed = rules.slice()\n reversed.reverse()\n const ruleIndex = reversed.findIndex(rule => rule.isFor(node))\n if (ruleIndex !== -1) {\n // try to find next rule\n const nextRuleSet = reversed.slice(ruleIndex + 1)\n const nextRuleIndex = nextRuleSet.findIndex(rule => rule.isFor(node))\n const defaultFn = (n = node, ctx = context, localInterator = interator) => {\n if (nextRuleIndex !== -1) {\n nextRuleSet[nextRuleIndex].fn(n, ctx, localInterator, () => {\n /* empty default action */\n })\n } else {\n return\n }\n }\n\n if (typeof reversed[ruleIndex].fn !== 'function') {\n console.warn('[pod6] bad fn for ' + JSON.stringify(node, null, 2))\n }\n return reversed[ruleIndex].fn(node, context, interator, defaultFn)\n } else {\n // not found rule\n const newNode = { ...node }\n if (newNode.hasOwnProperty('content')) {\n return interator(newNode.content, context)\n }\n }\n }\n interator.rules = rules\n return interator\n}\nexport default thisFunc\n", "import { makeRule, makeRulesArray, RuleObject, RuleHandler } from './makeQuery'\nimport makeInterator from './makeInterator'\nimport makeAttrs from './config'\n\n/**\n * wrap content by open and closed tags\n */\nexport const wrapContent =\n (pre, post): RuleHandler =>\n (writer, processor) =>\n (node, ctx, interator) => {\n writer.writeRaw(pre)\n if (node.content) interator(node.content, ctx)\n writer.writeRaw(post)\n }\n/**\n * emptyContent - skip any child node\n */\nexport const emptyContent = (): RuleHandler => () => () => {}\n/**\n * content - process childs as regular content\n */\nexport const content: RuleHandler = (writer, processor) => (node, ctx, interator) => {\n if (node.content) {\n return interator(node.content, ctx)\n }\n}\n\n/** \n\nSet hander after call with node\n\n':para':setFn((node,ctx) => (ctx.parents || [] ).includes('head') ? content : wrapContent('<p>','</p>'),\n\n*/\nexport const setFn =\n (check): RuleHandler =>\n (writer, processor) => {\n return (node, ctx, interator) => {\n return check(node, ctx)(writer, processor)(node, ctx, interator)\n }\n }\n\n/** \n\nSet new context for handler \n\n const parents = (ctx.parents || [])\n parents.push('head')\n const {level} = node\n return setContext( { ...ctx, parents }, wrapContent(`<h${level}>`,`</h${level}>`))\n\n*/\n\nexport const setContext =\n (ctx, fn): RuleHandler =>\n (writer, processor) => {\n return (node, _, interator) => {\n return fn(writer, processor)(node, ctx, interator)\n }\n }\n\n/**\n * Select handler from already inited wrappers\n *\n * @param {*} check\n * @param {...any} fns\n */\nconst IfNode =\n (check, ...fns): RuleHandler =>\n (writer, processor) => {\n return (node, ctx, interator) => {\n check(node, ctx, ...fns.map(i => i(writer, processor)))(node, ctx, interator)\n }\n }\n\n/**\n * Make subset of rules for processing\n *\n * @param {*} rules\n * @param {*} processNode\n */\nexport const subUse = (rules: RuleObject | Array<RuleObject>, processNode): RuleHandler => {\n const newFns = makeRulesArray(rules).reverse()\n return (writer, processor) => {\n // init new rules\n const inited = newFns.map(item => makeRule(item.rule, item.fn(writer, processor))).reverse()\n const processNodeInited = processNode(writer, processor)\n let subInterator\n return (node, ctx, interator) => {\n if (!subInterator) subInterator = makeInterator([...interator.rules, ...inited])\n return processNodeInited(node, ctx, subInterator)\n }\n }\n}\n\n/**\n * Add support nesting\n *\n * @param {*} rules\n * @param {*} implicitLevel - default level of nesting\n *\n */\n\nexport const handleNested = (defaultHandler: RuleHandler, implicitLevel?: number): RuleHandler => {\n return (writer, processor) => {\n const defaultHandlerInited = defaultHandler(writer, processor)\n\n return (node, ctx, interator) => {\n const nesting = makeAttrs(node, ctx).getFirstValue('nested') || implicitLevel\n\n // add nesting level\n if (nesting !== undefined) {\n writer.addLevel(nesting)\n }\n\n defaultHandlerInited(node, ctx, interator)\n\n // remove nesting level\n if (nesting !== undefined) {\n writer.removeLevel(nesting)\n }\n }\n }\n}\n", "import { makeRule, makePlug } from './makeQuery'\n// the following names: MyBlock, myBlock are use for extending pod6\nexport function isNamedBlock(name) {\n return name && name !== name.toLowerCase() && name !== name.toUpperCase()\n}\n\n// skip warnings for semantic blocks\nexport function isSemanticBlock(node) {\n const name = node.name || ''\n const isTypeBlock = (node.type || '') === 'block'\n return isTypeBlock && name === name.toUpperCase()\n}\n\nfunction flattenDeep(arr) {\n return arr.reduce((acc, val) => (Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val)), [])\n}\n\nexport const makeTransformer = rule => {\n let rules = []\n function use(key, fn?: any) {\n if (key instanceof Array) {\n console.warn(`[pod] Unsupported param for ${key}`)\n }\n\n if (key instanceof Object) {\n for (var prop in key) {\n if (key.hasOwnProperty(prop)) {\n use(prop, key[prop])\n }\n }\n return []\n }\n rules.push(makeRule(makePlug(key), fn))\n }\n\n function visiter(node, context: any = {}) {\n if (node instanceof Array) {\n return flattenDeep(node.map(item => visiter(item, context)))\n }\n if ('string' === typeof node) {\n // convert string to lex node with type\n //return visiter({type:'text', value:node}, context)\n return node\n }\n // get first rule for this node\n const reversed = rules.slice()\n reversed.reverse()\n const ruleIndex = reversed.findIndex(rule => rule.isFor(node))\n if (ruleIndex !== -1) {\n return reversed[ruleIndex].fn(node, context, visiter)\n } else {\n // not found rule\n const newNode = { ...node }\n if (newNode.hasOwnProperty('content')) {\n newNode.content = visiter(newNode.content, context)\n }\n return newNode\n }\n }\n use(rule)\n visiter.rules = rules\n return visiter\n}\nexport default makeTransformer\n", "/**\n * Default writer\n */\n\nimport * as Events from 'events'\n\nclass Writer extends Events.EventEmitter {\n INDEXTERMS: any[]\n FOOTNOTES: any[]\n output: any\n errors: any\n out: any\n ons: any[]\n // write: (p: any) => void;\n // getStr: () => { errors: any; toString: () => any; valueOf: () => any; };\n // errors: any;\n // out: any;\n // startWrite: () => void;\n // ons: any[];\n // endWrite: () => void;\n\n constructor(output?) {\n super()\n // save X<> entries\n this.INDEXTERMS = []\n // save N<> annotates\n this.FOOTNOTES = []\n this.output = output\n this.ons = []\n this.emit('ready')\n }\n // escape function for output\n escape(p) {\n return p\n }\n // write with escape special symbols\n write(p) {\n return this.writeRaw(this.escape(p))\n }\n // raw write as is\n writeRaw(str) {\n if ('function' === typeof this.output) {\n this.output(str)\n } else {\n console.log(str)\n }\n }\n getStr() {\n return {\n errors: this.errors,\n toString: () => this.out,\n valueOf: () => this.out,\n }\n }\n startWrite(tree: any) {\n // setup events\n ;(this.ons || []).map(a =>\n //@ts-ignore\n super.on(...a),\n )\n this.emit('start', tree)\n this.addListener('errors', err => {\n this.errors = this.errors || []\n this.errors.push(err)\n })\n }\n on(...params) {\n // overload 'on' method for reverse setup handlers\n this.ons = this.ons || []\n this.ons.unshift([...params])\n return this\n }\n endWrite = () => {\n this.emit('end')\n }\n\n // nesting methods\n\n _add_nesting(n: number) {}\n _remove_nesting(n: number) {}\n\n addLevel(n: number) {\n this._add_nesting(n)\n }\n\n removeLevel(n: number) {\n this._remove_nesting(n)\n }\n}\n\nexport default Writer\n", "import { makeRule, makePlug } from './helpers/makeQuery'\nimport makeInterator from './helpers/makeInterator'\nimport Writer from './writer'\nimport { parse } from './'\n// const parse = require('.').parse\n\nexport type Options = {\n processor?: any\n writer?: any\n}\n\nexport const toAny = (options: Options = {}, plugins = []) => {\n let fns = plugins\n // setup pod6 processor\n const processor = options.processor || parse\n const _writer = options.writer\n chain.use = use\n chain.run = run\n chain.getPlugins = () => fns\n return chain\n function chain(root) {}\n\n function use(key, fn?) {\n if (key instanceof Array) {\n return toAny(options, [...fns, ...fn])\n }\n\n if (key instanceof Object) {\n for (var prop in key) {\n if (key.hasOwnProperty(prop)) {\n use(prop, key[prop])\n }\n }\n return chain\n }\n fns.push(makeRule(makePlug(key), fn))\n return chain\n }\n\n function run(src, opt_writer?) {\n let res = ''\n const _tmp_writer =\n opt_writer ||\n _writer ||\n new Writer(s => {\n res = res + s\n })\n const writer =\n 'function' === typeof _tmp_writer\n ? new _tmp_writer(s => {\n res = res + s\n })\n : _tmp_writer\n\n // src may be preparsed tree\n const tree = 'string' === typeof src ? processor(src) : src\n\n // make new instance of HTML with initialized plugins\n // reverse init\n let newFns = fns.slice()\n newFns.reverse()\n const interator = makeInterator(newFns.map(rule => makeRule(rule.rule, rule.fn(writer, processor, tree))).reverse())\n const context = {}\n writer.startWrite(tree)\n const result = interator(tree, context)\n writer.endWrite()\n return {\n errors: writer.errors,\n toString: () => res,\n valueOf: () => res,\n indexingTerms: writer.INDEXTERMS,\n annotations: writer.FOOTNOTES,\n defenitions: writer.DEFINITIONS,\n interator: result,\n }\n }\n}\n\nexport default toAny\n", "/**\n * Delete location attribute\n * use in test suite\n */\nimport makeTransformer from './helpers/makeTransformer'\n\nexport const pluginCleanLocation = () => tree => {\n const transformer = makeTransformer({\n '*': (node, ctx, visiter) => {\n if (node.content) {\n node.content = visiter(node.content, ctx, visiter)\n }\n delete node.location\n return node\n },\n })\n return transformer(tree, {})\n}\nexport default pluginCleanLocation\n", "import { ParserPlugin, Node, nPara } from './'\n\nconst middle: ParserPlugin = () => tree => {\n const visit_node = (node: Node, context: { margin?: string; nest?: any } = {}) => {\n // if( (node.type || \"\").match(/(code|text)/) ) {\n if (node.type == 'code' || node.type == 'text') {\n if (node.margin && context.margin && context.margin.length > 0 && context.margin.length == node.margin.length) {\n ;(node as any).type = 'para'\n }\n if (node.type === 'code') {\n // remove parent margin\n var regex = new RegExp(`^[ \\t]{0,${node.margin.length}}`, 'gm')\n node.text = node.text.replace(regex, '')\n }\n }\n\n if (node.type === 'block') {\n context.margin = typeof node.margin !== 'string' ? '' : node.margin\n let newctx = { ...context }\n newctx.nest = (newctx.nest || 0) + 1\n node.content.map(n => {\n visit_node(n, context)\n })\n }\n }\n var ctx = {}\n tree.forEach(n => visit_node(n, ctx))\n return tree\n}\nexport default middle\n", "import * as fcparser from './grammarfc'\nimport makeTransformer from './helpers/makeTransformer'\nimport { isNamedBlock } from './helpers/makeTransformer'\nimport makeAttrs from './helpers/config'\nimport { ParserPlugin, Node, nPara, AST, nText, nVerbatim } from './'\n\n/**\n * Main transforms\n */\ninterface MakeTransformerParams {\n [name: string]: (n: Node, ctx: any, visiter?: any) => any\n}\n\nconst middle: ParserPlugin = () => tree => {\n const transformerBlocks = makeTransformer({\n ':para': (n, ctx, visiter) => {\n return makeTransformer({\n ':text': (n: nText, ctx) => {\n return fcparser.parse(n.value)\n },\n ':verbatim': (n: nVerbatim, ctx) => {\n return fcparser.parse(n.value)\n },\n })(n, { ...ctx })\n return n\n },\n ':block': (n, ctx, visiter) => {\n // only =pod may have childs blocks\n if ('name' in n && n.name === 'pod')\n return {\n ...n,\n content: visiter(n.content, ctx, visiter),\n }\n const conf = makeAttrs(n, ctx)\n const isCodeBlock = 'name' in n && n.name === 'code'\n const isDataBlock = 'name' in n && n.name === 'data'\n const allowValues = conf.getAllValues('allow')\n // for code block not parse content by default\n if ((isCodeBlock || isDataBlock) && allowValues.length == 0) return n\n const allowed = allowValues.sort()\n\n const transformer = makeTransformer({\n ':verbatim': (n: nVerbatim, ctx) => {\n return fcparser.parse(n.value, { allowed })\n },\n ':text': (n: nText, ctx) => {\n return fcparser.parse(n.value, { allowed })\n },\n ':block': (n, ctx) => {\n if (isNamedBlock(n.name)) return n\n return { ...n, content: transformer(n.content, { ...ctx }) }\n },\n })\n return transformer(n, { ...ctx })\n },\n })\n return transformerBlocks(tree, {})\n}\nexport default middle\n", "export default () => tree => {\n const visit = node => {\n if (Array.isArray(node)) {\n node.forEach(i => {\n visit(i)\n })\n } else {\n if (node && node.type === 'block') {\n const matchItem = /^item(\\d+)?/.exec(node.name)\n if (matchItem) {\n node.name = 'item'\n node.level = matchItem[1] || 1\n if (node.content[0]) {\n const startText = node.content[0]\n if (startText.text) {\n let re = /^(\\s*#\\s*)/\n const match = re.exec(startText.text)\n if (match) {\n startText.text = startText.text.replace(re, '')\n if (startText.type === 'para') {\n startText.content = [startText.text]\n }\n node.config = node.config || []\n node.config.push({\n name: 'numbered',\n value: true,\n type: 'boolean',\n })\n }\n }\n }\n }\n visit(node.content)\n }\n }\n }\n visit(tree)\n return tree\n}\n", "export default () => tree => {\n const visit = node => {\n if (Array.isArray(node)) {\n node.forEach(i => {\n visit(i)\n })\n } else {\n if (node && node.type === 'block') {\n const matchHead = /^head(\\d+)?/.exec(node.name)\n if (matchHead) {\n node.name = 'head'\n node.level = matchHead[1] || 1\n if (node.content[0]) {\n const startText = node.content[0]\n if (startText.text) {\n let re = /(\\s*#\\s*)/\n const match = re.exec(startText.text)\n if (match) {\n startText.text = startText.text.replace(re, '')\n node.config = { ...node.config, ...{ numbered: true } }\n }\n }\n }\n }\n visit(node.content)\n }\n }\n }\n visit(tree)\n return tree\n}\n", "export default () => tree => {\n const isNodesEqual = (n1, n2) =>\n // if nodes items\n (n1.name === 'item' || n1.name === 'defn') &&\n n2.name === n1.name &&\n n1['level'] === n2.level &&\n isNumbered(n1) === isNumbered(n2)\n\n const isNumbered = node => Boolean(node.config && node.config.numbered)\n\n const group = a => {\n let lastItem = {}\n let result = a.reduce((a, i) => {\n if (i.name === 'defn') {\n if (isNodesEqual(lastItem, i)) {\n // group items into arrays\n a[a.length - 1].push(i)\n } else {\n // group items into arrays\n a.push([i])\n }\n } else {\n // save not 'item' elements as is\n a.push(i)\n }\n lastItem = i\n return a\n }, [])\n // convert grouped items into object 'itemlist'\n /**\n * { type = 'list',\n * ordered = [true, false]\n * content = [ .... ]\n * list = ['ordered', 'variable', 'itemized']\n */\n return result.map(item => {\n if (item instanceof Array) {\n if (item[0].name !== 'defn') {\n return item\n }\n // get type of list\n const list = item[0].name === 'defn' ? 'variable' : isNumbered(item[0]) ? 'ordered' : 'itemized'\n // create items container\n return {\n type: 'list',\n list,\n level: 1, // defn always have level 1\n content: [...item],\n }\n }\n if (item.content && item.type !== 'fcode') {\n item.content = group(item.content)\n }\n return item\n })\n }\n const visit = node => {\n if (Array.isArray(node)) {\n return group(node)\n } else {\n if (node.type === 'block' && node.name !== 'table') {\n node.content = group(node.content)\n }\n }\n return node\n }\n tree = visit(tree)\n return tree\n}\n", "import makeAttrs from './helpers/config'\nexport default () => tree => {\n const isNodesEqual = (n1, n2) =>\n // if nodes items\n (n1.name === 'item' || n1.name === 'defn') &&\n n2.name === n1.name &&\n n1['level'] === n2.level &&\n isNumbered(n1) === isNumbered(n2)\n\n const isNumbered = node => Boolean(makeAttrs(node, {}).exists('numbered'))\n\n const group = (a, level = 1) => {\n const isInListMode = a => {\n return a.length > 0 && a[a.length - 1].type === 'list'\n }\n const getList = a => {\n if (isInListMode(a)) return a[a.length - 1]\n }\n const isInsertableToList = (l, i) =>\n (i.name && i.name === 'item' && i.type && i.type === 'block') || i.type === 'blankline'\n let lastItem = {}\n\n let result = a.reduce((a, i) => {\n // skip items out of level\n if (i.name === 'item' && i.type === 'block' && i.level < level) {\n return [...a, i]\n }\n if (\n i.name === 'item' &&\n i.type === 'block' &&\n (!isInListMode(a) ||\n // different type of list and item\n // at the same level\n (i.level === level && getList(a).list !== (isNumbered(i) ? 'ordered' : 'itemized')))\n ) {\n // create empty list\n // list = ['ordered', 'variable', 'itemized']\n a.push({\n type: 'list',\n level: i.level,\n content: [],\n list: isNumbered(i) ? 'ordered' : 'itemized',\n })\n }\n // main logic\n if (isInListMode(a) && isInsertableToList(getList(a), i)) {\n // getlist and push item to them\n getList(a).content.push(i)\n } else {\n a.push(i)\n }\n return a\n }, [])\n // convert grouped items into object 'itemlist'\n /**\n * { type = 'list',\n * ordered = [true, false]\n * content = [ .... ]\n * list = ['ordered', 'variable', 'itemized']\n */\n return result.map(item => {\n // process any item with content ( except formatting codes)\n if (item.content && item.type !== 'fcode') {\n item.content = group(item.content, item.level + 1)\n }\n return item\n })\n }\n const visit = node => {\n if (Array.isArray(node)) {\n node = group(node)\n } else {\n if (node.type === 'block' && node.name !== 'table') {\n node.content = group(node.content)\n }\n }\n return node\n }\n tree = visit(tree)\n return tree\n}\n", "/**\n * Plugin for fill term's for defn. From S26:\n * The first non-blank line of content is treated as a term being defined,\n * and the remaining content is treated as the definition for the term.\n */\nimport makeTransformer from './helpers/makeTransformer'\nexport default () => tree => {\n const transformer = makeTransformer({\n defn: node => {\n // get first non blank block\n const content = node.content\n\n // skip all blank blocks\n const count = content.length\n let newContent = []\n let isFirstParaProcessed = false\n for (let i = 0; i < count; i++) {\n const item = content[i]\n if (item.type === 'para' && !isFirstParaProcessed) {\n // get text content\n const textNode = item.content[0]\n const text = textNode.value\n // split text by lines\n // get first line\n const splited = text.split('\\n')\n const term = splited.shift()\n const newTermPara = {\n type: 'para',\n name: 'term',\n text: term,\n content: [{ type: 'text', value: term }],\n }\n newContent.push(newTermPara)\n if (!(splited.length == 1 && splited[0] === '')) {\n textNode.value = splited.join('\\n')\n item.text = textNode.value\n newContent.push(item)\n }\n isFirstParaProcessed = true\n } else {\n newContent.push(item)\n }\n }\n node.content = newContent\n return node\n },\n })\n return transformer(tree, {})\n}\n", "/**\n * Plugin for fill term's for defn. From S26:\n * The first non-blank line of content is treated as a term being defined,\n * and the remaining content is treated as the definition for the term.\n */\nimport makeTransformer from './helpers/makeTransformer'\nfunction flattenDeep(arr) {\n return arr.reduce((acc, val) => (Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val)), [])\n}\n/**\n * Helpers section\n */\n\n// run cb in symbols pair\nconst strbin = (str1, str2, cb) => {\n let res = []\n for (let i = 0; str1.length > i; i++) {\n res.push(cb(parseInt(str1[i], 10), parseInt(str2[i], 10)))\n }\n return res.join('')\n}\n\n// Create mask for extract columns\nconst makeMask = (lines, separators) => {\n // calculate template length\n const tmplLength = Math.max(...[...lines, ...separators].map(s => s.length))\n // make bin mask for each string\n const masks = lines.map(str => {\n /** make mask for each line\n ' The Shoveller | Eddie Stevens | King Arthur\\'s singing shovel',\u2008\n '0000000011111111111110001111111111111000001111111111111111111111111111' ]\u2008\n then not(mask) ... then & masks\n */\n // enlarge string to tmplLength\n let tstr = str + ' '.repeat(tmplLength - str.length)\n let mask = []\n const re = /\\s+[+|\\s]\\s/g\n let match\n while ((match = re.exec(tstr)) != null) {\n const tmpMask = '1'.repeat(match.index) + '0'.repeat(match[0].length)\n mask.push(tmpMask + '1'.repeat(tmplLength - tmpMask.length))\n }\n return mask.reduce((a, b) => {\n return strbin(a, b, (i1, i2) => i1 & i2)\n }, '1'.repeat(tmplLength))\n })\n // make result mask\n const inverted = masks.map(m => strbin(m, '', i1 => (i1 == 0 ? 1 : 0)))\n const columnTemplate = inverted.reduce((a, b) => {\n return strbin(a, b, (i1, i2) => i1 & i2)\n }, '1'.repeat(tmplLength))\n return columnTemplate\n}\n\nconst extractColumnsByTemplate = (text, template) => {\n const lines = flattenDeep(\n text\n .split(/\\n/) // split each row by eol\n .filter(str => str.length > 0), // filter empty strings ( after slit )\n )\n const cols = lines.map(line => {\n const re = /((1+|0+))/g\n let columns = []\n let match\n while ((match = re.exec(template)) != null) {\n if (match[0][0] == 1) continue\n const s = line.substring(match.index, match.index + match[0].length)\n columns.push(s)\n }\n return columns\n })\n let result = []\n result = cols.reduce((a, b) => {\n for (let i = 0; i < b.length; i++) {\n a[i] = (a[i] === undefined ? '' : a[i]) + ' ' + b[i]\n }\n return a\n }, [])\n return result\n}\n\n/**\n * Main transforms\n */\n\nexport default () => tree => {\n const transformer = makeTransformer({\n table: node => {\n let rows = []\n const collectValues = row => {\n rows.push(row.value)\n }\n // collect separators for calculate max length of rows\n let seps = []\n makeTransformer({\n 'row:text': collectValues,\n 'head:text': collectValues,\n ':separator': sep => {\n seps.push(sep.text)\n },\n })(node)\n // add table-caption\n // if table empty return node as is\n if (!rows.length) return node\n\n const splitToLines = row =>\n row\n .split(/\\n/) // split each row by eol\n .filter(str => str.length > 0) // filter empty strings ( after slit )\n\n // split each row into lines\n const lines = flattenDeep(rows.map(splitToLines))\n const separators = flattenDeep(seps.map(splitToLines))\n\n // collect text rows\n let textRows = []\n makeTransformer({\n 'row:text': row => {\n textRows.push(row.value)\n },\n })(node)\n\n const columnTemplate = makeMask(lines, separators)\n const makeBlock = (name, content, ...attr) => {\n return { ...attr, name, type: 'block', content: Array.isArray(content) ? content : [content] }\n }\n // make columns\n const res = makeTransformer({\n 'row:text': row => {\n if (textRows.length == 1) {\n // split each text row into lines\n const textRowsLines = flattenDeep([row.value].map(splitToLines))\n return textRowsLines.map(rowValue => {\n const res = extractColumnsByTemplate(rowValue, columnTemplate)\n return makeBlock(\n 'table_row',\n res.map(col => makeBlock('table_cell', { type: 'text', value: col })),\n )\n })\n }\n const res = extractColumnsByTemplate(row.value, columnTemplate)\n return makeBlock(\n 'table_row',\n res.map(col => makeBlock('table_cell', { type: 'text', value: col })),\n )\n },\n 'head:text': head => {\n const res = extractColumnsByTemplate(head.value, columnTemplate)\n return makeBlock(\n 'table_head',\n res.map(col => makeBlock('table_cell', { type: 'text', value: col })),\n )\n },\n })(node)\n\n return res\n },\n })\n return transformer(tree, {})\n}\n", "import toAny from './exportAny'\nimport { subUse, wrapContent, emptyContent, content, setFn, handleNested } from './helpers/handlers'\nimport { isNamedBlock } from './helpers/makeTransformer'\nimport makeAttrs from './helpers/config'\nimport htmlWriter from './writerHtml'\nimport clean_plugin from './plugin-clean-location'\nimport { getNodeId } from './ast-helpers'\nconst rules = {\n ':text': (writer, processor) => (node, ctx, interator) => {\n // handle text with content\n if (node.value) {\n writer.write(node.value)\n } else {\n interator(node.content, ctx)\n }\n },\n\n // Formatting codes\n 'A<>': (writer, processor) => (node, ctx, interator) => {\n //get replacement text\n if (!(ctx.alias && ctx.alias.hasOwnProperty(node.content))) {\n writer.write(`A<${node.content}>`)\n } else {\n const src = ctx.alias[node.content].join('\\n')\n const tree_1 = processor(src)\n // now clean locations\n const tree = clean_plugin()(tree_1)\n if (tree[0].type === 'para') {\n interator(tree[0].content, ctx)\n } else {\n interator(tree, ctx)\n }\n }\n },\n 'C<>': wrapContent('<code>', '</code>'),\n 'D<>': (writer, processor) => (node, ctx, interator) => {\n // @ts-ignore\n let synonyms: Array<any> = { node }\n let definition: string[] = [node.content[0]]\n if (synonyms) {\n definition = synonyms\n }\n\n if (!writer.hasOwnProperty('DEFINITIONS')) {\n writer.DEFINITIONS = []\n }\n writer.DEFINITIONS.push({ definition })\n\n writer.writeRaw('<dfn>')\n interator(node.content, ctx)\n writer.writeRaw('</dfn>')\n },\n 'B<>': wrapContent('<strong>', '</strong>'),\n 'I<>': wrapContent('<em>', '</em>'),\n 'R<>': wrapContent('<var>', '</var>'),\n 'K<>': wrapContent('<kbd>', '</kbd>'),\n 'L<>': setFn((node, ctx) => {\n let { meta } = node\n if (meta === null) {\n meta = node.content\n }\n return wrapContent(`<a href=\"${meta}\">`, `</a>`)\n }),\n\n /**\n * CSS rules for footnotes\n \n .footnote a {\n text-decoration: none;\n }\n .footnotes {\n border-top-style: solid;\n border-top-width: 1px;\n border-top-color: #eee;\n }\n */\n 'N<>': (writer, processor) => {\n writer.addListener('end', () => {\n if (!writer.hasOwnProperty('FOOTNOTES')) {\n return\n }\n const footnotes = writer.FOOTNOTES\n if (footnotes.length < 1) {\n return\n } // if empty footnotes\n writer.writeRaw(`<div class=\"footnotes\">`)\n footnotes.map(footnote => {\n writer.writeRaw(\n `<p><sup id=\"${footnote.fnId}\" class=\"footnote\"><a href=\"#${footnote.fnRefId}\">[${footnote.gid}]</a></sup> `,\n )\n footnote.make()\n writer.writeRaw(`</p>`)\n })\n writer.writeRaw(`</div>`)\n })\n return (node, ctx, interator) => {\n // skip empty notes\n if (node.content.length < 1) {\n return\n }\n if (!writer.hasOwnProperty('gid')) {\n writer.gid = 1\n }\n // get foot note id\n const gid = writer.gid++\n const fnRefId = `fnref:${gid}`\n const fnId = `fn:${gid}`\n writer.writeRaw(`<sup id=\"${fnRefId}\" class=\"footnote\"><a href=\"#${fnId}\">[${gid}]</a></sup>`)\n if (!writer.hasOwnProperty('FOOTNOTES')) {\n writer.FOOTNOTES = []\n }\n writer.FOOTNOTES.push({\n gid,\n fnRefId,\n fnId,\n make: () => {\n interator(node.content, ctx)\n },\n })\n }\n },\n 'S<>': (writer, processor) => (node, ctx, interator) => {\n const content = node.content || ''\n const spaces = content.replace(/ /g, ' ')\n const newFeed = spaces.replace(/\\n/g, '</br>')\n writer.writeRaw(newFeed)\n },\n 'T<>': wrapContent('<samp>', '</samp>'),\n 'U<>': wrapContent('<u>', '</u>'),\n 'V<>': content,\n 'X<>': (writer, processor) => (node, ctx, interator) => {\n interator(node.content, ctx)\n let { entry } = node\n if (entry === null && node.content.length > 0) {\n //@ts-ignore\n entry = [node.content[0]]\n } else {\n return\n }\n if (!writer.hasOwnProperty('INDEXTERMS')) {\n writer.INDEXTERMS = []\n }\n writer.INDEXTERMS.push({\n entry,\n })\n },\n 'Z<>': emptyContent,\n\n pod: content,\n ':code': wrapContent('<pre><code>', '</code></pre>'),\n code: handleNested(wrapContent('<pre><code>', '</code></pre>')),\n data: emptyContent,\n ':verbatim': (writer, processor) => (node, ctx, interator) => {\n if (node.error) {\n writer.emit('errors', node.location)\n }\n interator(node.value)\n },\n ':blankline': emptyContent,\n ':ambient': emptyContent,\n // Directives\n ':config': setFn((node, ctx) => {\n // setup context\n if (!ctx.hasOwnProperty('config')) ctx.config = {}\n //collect configs in context\n ctx.config[node.name] = node.config\n return emptyContent\n }),\n ':alias': setFn((node, ctx) => {\n // set alias\n if (!ctx.hasOwnProperty('alias')) ctx.alias = {}\n //collect configs in context\n ctx.alias[node.name] = node.replacement\n return emptyContent\n }),\n\n // block =para\n para: handleNested(content),\n ':para': wrapContent('<p>', '</p>'),\n 'head:block': subUse(\n {\n // inside head don't wrap into <p>\n ':para': content,\n },\n setFn((node, ctx) => {\n const { level } = node\n const id = getNodeId(node, ctx)\n return wrapContent(`<h${level}${id ? ` id=\"${id}\"` : ''}>`, `</h${level}>`)\n }),\n ),\n ':list': setFn((node, ctx) =>\n node.list === 'ordered'\n ? wrapContent('<ol>', '</ol>')\n : node.list === 'variable'\n ? wrapContent('<dl>', '</dl>')\n : wrapContent('<ul>', '</ul>'),\n ),\n 'item:block': (writer, processor) => (node, ctx, interator) => {\n // make text from first para\n if (!(node.content instanceof Array)) {\n console.error('[pod6] item:block : Error in content of ' + JSON.stringify(node))\n }\n const [firstPara, ...other] = node.content\n writer.writeRaw('<li>')\n // TODO: get cases for handle first para in items\n // interator([...firstPara.content, ...other], ctx)\n interator(node.content, ctx)\n writer.writeRaw('</li>')\n },\n 'comment:block': emptyContent,\n defn: wrapContent('', '</dd>'),\n 'term:para': wrapContent('<dt>', '</dt><dd>'),\n nested: handleNested(content, 1),\n output: handleNested(wrapContent('<pre><samp>', '</samp></pre>'), 1),\n input: handleNested(wrapContent('<pre><kbd>', '</kbd></pre>'), 1),\n // table section\n 'table:block': handleNested((writer, processor) => (node, ctx, interator) => {\n const conf = makeAttrs(node, ctx)\n writer.writeRaw('<table>')\n if (conf.exists('caption')) {\n writer.writeRaw('<caption>')\n writer.write(conf.getFirstValue('caption'))\n writer.writeRaw('</caption>')\n }\n interator(node.content, ctx)\n writer.writeRaw('</table>')\n }),\n ':separator': emptyContent,\n table_row: wrapContent('<tr>', '</tr>'),\n table_cell: wrapContent('<td>', '</td>'),\n table_head: subUse(\n {\n table_cell: wrapContent('<th>', '</th>'),\n },\n wrapContent('<tr>', '</tr>'),\n ),\n // Toc\n ':toc': (writer, processor) => (node, ctx, interator) => {\n writer.writeRaw('<div className=\"toc\">')\n // get toc title\n const conf = makeAttrs(node, ctx)\n if (conf.exists('title')) {\n const title = conf.getFirstValue('title')\n writer.writeRaw('<div className=\"toctitle\">')\n writer.write(title)\n writer.writeRaw('</div>')\n }\n interator(node.content, ctx)\n writer.writeRaw('</div>')\n },\n ':toc-list': setFn((node, ctx) => wrapContent(`<ul class=\"toc-list listlevel${node.level}\">`, '</ul>')),\n ':toc-item': setFn((node, ctx) => wrapContent('<li class=\"toc-item\">', '</li>')),\n ':image': (writer, processor) => (node, ctx, interator) => {\n writer.writeRaw(`<img src=\"${node.src}\" alt=\"${node.alt}\"/>`)\n },\n}\n\nconst toHtml = opt =>\n toAny({ writer: htmlWriter, ...opt })\n .use('*', (writer, processor) => {\n return (node, ctx, interator) => {\n // skip warnings for semantic blocks\n const isSemanticBlock = node => {\n const name = node.name || ''\n const isTypeBlock = (node.type || '') === 'block'\n return isTypeBlock && name === name.toUpperCase()\n }\n\n //Named blocks for which no explicit class has been defined or loaded are\n //usually not rendered by the standard renderers.\n if (isNamedBlock(node.name)) {\n return true\n }\n\n if (isSemanticBlock(node)) {\n const name = node.name\n writer.writeRaw('<h1 class=\"')\n writer.write(name)\n writer.writeRaw('\">')\n writer.write(name)\n writer.writeRaw('</h1>')\n } else {\n console.warn('[pod6] Unhandled node' + JSON.stringify(node, null, 2))\n }\n if (node.hasOwnProperty('content')) {\n interator(node.content, ctx)\n }\n }\n })\n .use(rules)\n\nexport default toHtml\n", "/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n", "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('vfile').VFileCompatible} VFileCompatible\n * @typedef {import('vfile').VFileValue} VFileValue\n * @typedef {import('..').Processor} Processor\n * @typedef {import('..').Plugin} Plugin\n * @typedef {import('..').Preset} Preset\n * @typedef {import('..').Pluggable} Pluggable\n * @typedef {import('..').PluggableList} PluggableList\n * @typedef {import('..').Transformer} Transformer\n * @typedef {import('..').Parser} Parser\n * @typedef {import('..').Compiler} Compiler\n * @typedef {import('..').RunCallback} RunCallback\n * @typedef {import('..').ProcessCallback} ProcessCallback\n *\n * @typedef Context\n * @property {Node} tree\n * @property {VFile} file\n */\n\nimport {bail} from 'bail'\nimport isBuffer from 'is-buffer'\nimport extend from 'extend'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\n\n// Expose a frozen processor.\nexport const unified = base().freeze()\n\nconst own = {}.hasOwnProperty\n\n// Function to create the first processor.\n/**\n * @returns {Processor}\n */\nfunction base() {\n const transformers = trough()\n /** @type {Processor['attachers']} */\n const attachers = []\n /** @type {Record<string, unknown>} */\n let namespace = {}\n /** @type {boolean|undefined} */\n let frozen\n let freezeIndex = -1\n\n // Data management.\n // @ts-expect-error: overloads are handled.\n processor.data = data\n processor.Parser = undefined\n processor.Compiler = undefined\n\n // Lock.\n processor.freeze = freeze\n\n // Plugins.\n processor.attachers = attachers\n // @ts-expect-error: overloads are handled.\n processor.use = use\n\n // API.\n processor.parse = parse\n processor.stringify = stringify\n // @ts-expect-error: overloads are handled.\n processor.run = run\n processor.runSync = runSync\n // @ts-expect-error: overloads are handled.\n processor.process = process\n processor.processSync = processSync\n\n // Expose.\n return processor\n\n // Create a new processor based on the processor in the current scope.\n /** @type {Processor} */\n function processor() {\n const destination = base()\n let index = -1\n\n while (++index < attachers.length) {\n destination.use(...attachers[index])\n }\n\n destination.data(extend(true, {}, namespace))\n\n return destination\n }\n\n /**\n * @param {string|Record<string, unknown>} [key]\n * @param {unknown} [value]\n * @returns {unknown}\n */\n function data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen)\n namespace[key] = value\n return processor\n }\n\n // Get `key`.\n return (own.call(namespace, key) && namespace[key]) || null\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', frozen)\n namespace = key\n return processor\n }\n\n // Get space.\n return namespace\n }\n\n /** @type {Processor['freeze']} */\n function freeze() {\n if (frozen) {\n return processor\n }\n\n while (++freezeIndex < attachers.length) {\n const [attacher, ...options] = attachers[freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n /** @type {Transformer|void} */\n const transformer = attacher.call(processor, ...options)\n\n if (typeof transformer === 'function') {\n transformers.use(transformer)\n }\n }\n\n frozen = true\n freezeIndex = Number.POSITIVE_INFINITY\n\n return processor\n }\n\n /**\n * @param {Pluggable|null|undefined} [value]\n * @param {...unknown} options\n * @returns {Processor}\n */\n function use(value, ...options) {\n /** @type {Record<string, unknown>|undefined} */\n let settings\n\n assertUnfrozen('use', frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, ...options)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n if (settings) {\n namespace.settings = Object.assign(namespace.settings || {}, settings)\n }\n\n return processor\n\n /**\n * @param {import('..').Pluggable<unknown[]>} value\n * @returns {void}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...options] = value\n addPlugin(plugin, ...options)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {void}\n */\n function addPreset(result) {\n addList(result.plugins)\n\n if (result.settings) {\n settings = Object.assign(settings || {}, result.settings)\n }\n }\n\n /**\n * @param {PluggableList|null|undefined} [plugins]\n * @returns {void}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {...unknown} [value]\n * @returns {void}\n */\n function addPlugin(plugin, value) {\n let index = -1\n /** @type {Processor['attachers'][number]|undefined} */\n let entry\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entry = attachers[index]\n break\n }\n }\n\n if (entry) {\n if (isPlainObj(entry[1]) && isPlainObj(value)) {\n value = extend(true, entry[1], value)\n }\n\n entry[1] = value\n } else {\n // @ts-expect-error: fine.\n attachers.push([...arguments])\n }\n }\n }\n\n /** @type {Processor['parse']} */\n function parse(doc) {\n processor.freeze()\n const file = vfile(doc)\n const Parser = processor.Parser\n assertParser('parse', Parser)\n\n if (newable(Parser, 'parse')) {\n // @ts-expect-error: `newable` checks this.\n return new Parser(String(file), file).parse()\n }\n\n // @ts-expect-error: `newable` checks this.\n return Parser(String(file), file) // eslint-disable-line new-cap\n }\n\n /** @type {Processor['stringify']} */\n function stringify(node, doc) {\n processor.freeze()\n const file = vfile(doc)\n const Compiler = processor.Compiler\n assertCompiler('stringify', Compiler)\n assertNode(node)\n\n if (newable(Compiler, 'compile')) {\n // @ts-expect-error: `newable` checks this.\n return new Compiler(node, file).compile()\n }\n\n // @ts-expect-error: `newable` checks this.\n return Compiler(node, file) // eslint-disable-line new-cap\n }\n\n /**\n * @param {Node} node\n * @param {VFileCompatible|RunCallback} [doc]\n * @param {RunCallback} [callback]\n * @returns {Promise<Node>|void}\n */\n function run(node, doc, callback) {\n assertNode(node)\n processor.freeze()\n\n if (!callback && typeof doc === 'function') {\n callback = doc\n doc = undefined\n }\n\n if (!callback) {\n return new Promise(executor)\n }\n\n executor(null, callback)\n\n /**\n * @param {null|((node: Node) => void)} resolve\n * @param {(error: Error) => void} reject\n * @returns {void}\n */\n function executor(resolve, reject) {\n // @ts-expect-error: `doc` can\u2019t be a callback anymore, we checked.\n transformers.run(node, vfile(doc), done)\n\n /**\n * @param {Error|null} error\n * @param {Node} tree\n * @param {VFile} file\n * @returns {void}\n */\n function done(error, tree, file) {\n tree = tree || node\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(tree)\n } else {\n // @ts-expect-error: `callback` is defined if `resolve` is not.\n callback(null, tree, file)\n }\n }\n }\n }\n\n /** @type {Processor['runSync']} */\n function runSync(node, file) {\n /** @type {Node|undefined} */\n let result\n /** @type {boolean|undefined} */\n let complete\n\n processor.run(node, file, done)\n\n assertDone('runSync', 'run', complete)\n\n // @ts-expect-error: we either bailed on an error or have a tree.\n return result\n\n /**\n * @param {Error|null} [error]\n * @param {Node} [tree]\n * @returns {void}\n */\n function done(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * @param {VFileCompatible} doc\n * @param {ProcessCallback} [callback]\n * @returns {Promise<VFile>|undefined}\n */\n function process(doc, callback) {\n processor.freeze()\n assertParser('process', processor.Parser)\n assertCompiler('process', processor.Compiler)\n\n if (!callback) {\n return new Promise(executor)\n }\n\n executor(null, callback)\n\n /**\n * @param {null|((file: VFile) => void)} resolve\n * @param {(error?: Error|null|undefined) => void} reject\n * @returns {void}\n */\n function executor(resolve, reject) {\n const file = vfile(doc)\n\n processor.run(processor.parse(file), file, (error, tree, file) => {\n if (error || !tree || !file) {\n done(error)\n } else {\n /** @type {unknown} */\n const result = processor.stringify(tree, file)\n\n if (result === undefined || result === null) {\n // Empty.\n } else if (looksLikeAVFileValue(result)) {\n file.value = result\n } else {\n file.result = result\n }\n\n done(error, file)\n }\n })\n\n /**\n * @param {Error|null|undefined} [error]\n * @param {VFile|undefined} [file]\n * @returns {void}\n */\n function done(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n // @ts-expect-error: `callback` is defined if `resolve` is not.\n callback(null, file)\n }\n }\n }\n }\n\n /** @type {Processor['processSync']} */\n function processSync(doc) {\n /** @type {boolean|undefined} */\n let complete\n\n processor.freeze()\n assertParser('processSync', processor.Parser)\n assertCompiler('processSync', processor.Compiler)\n\n const file = vfile(doc)\n\n processor.process(file, done)\n\n assertDone('processSync', 'process', complete)\n\n return file\n\n /**\n * @param {Error|null|undefined} [error]\n * @returns {void}\n */\n function done(error) {\n complete = true\n bail(error)\n }\n }\n}\n\n/**\n * Check if `value` is a constructor.\n *\n * @param {unknown} value\n * @param {string} name\n * @returns {boolean}\n */\nfunction newable(value, name) {\n return (\n typeof value === 'function' &&\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n value.prototype &&\n // A function with keys in its prototype is probably a constructor.\n // Classes\u2019 prototype methods are not enumerable, so we check if some value\n // exists in the prototype.\n // type-coverage:ignore-next-line\n (keys(value.prototype) || name in value.prototype)\n )\n}\n\n/**\n * Check if `value` is an object with keys.\n *\n * @param {Record<string, unknown>} value\n * @returns {boolean}\n */\nfunction keys(value) {\n /** @type {string} */\n let key\n\n for (key in value) {\n if (own.call(value, key)) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `Parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `Compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is VFileValue}\n */\nfunction looksLikeAVFileValue(value) {\n return typeof value === 'string' || isBuffer(value)\n}\n", "export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n", "/**\n * @typedef {(error?: Error|null|undefined, ...output: Array<any>) => void} Callback\n * @typedef {(...input: Array<any>) => any} Middleware\n *\n * @typedef {(...input: Array<any>) => void} Run\n * Call all middleware.\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add `fn` (middleware) to the list.\n * @typedef {{run: Run, use: Use}} Pipeline\n * Middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n */\nexport function trough() {\n /** @type {Array<Middleware>} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we\u2019re done.\n *\n * @param {Error|null|undefined} error\n * @param {Array<any>} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware`.\n * Can be sync or async; return a promise, receive a callback, or return new\n * values and errors.\n *\n * @param {Middleware} middleware\n * @param {Callback} callback\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array<any>} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result instanceof Promise) {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n", "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {Record<string, unknown> & {type: string, position?: Position|undefined}} NodeLike\n * @typedef {import('./minurl.shared.js').URL} URL\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n *\n * @typedef {'ascii'|'utf8'|'utf-8'|'utf16le'|'ucs2'|'ucs-2'|'base64'|'base64url'|'latin1'|'binary'|'hex'} BufferEncoding\n * Encodings supported by the buffer class.\n * This is a copy of the typing from Node, copied to prevent Node globals from\n * being needed.\n * Copied from: <https://github.com/DefinitelyTyped/DefinitelyTyped/blob/90a4ec8/types/node/buffer.d.ts#L170>\n *\n * @typedef {Value|Options|VFile|URL} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * @property {Value} [value]\n * @property {string} [cwd]\n * @property {Array<string>} [history]\n * @property {string|URL} [path]\n * @property {string} [basename]\n * @property {string} [stem]\n * @property {string} [extname]\n * @property {string} [dirname]\n * @property {Data} [data]\n *\n * @typedef Map\n * Raw source map, see:\n * <https://github.com/mozilla/source-map/blob/58819f0/source-map.d.ts#L15-L23>.\n * @property {number} version\n * @property {Array<string>} sources\n * @property {Array<string>} names\n * @property {string|undefined} [sourceRoot]\n * @property {Array<string>|undefined} [sourcesContent]\n * @property {string} mappings\n * @property {string} file\n *\n * @typedef {{[key: string]: unknown} & VFileCoreOptions} Options\n * Configuration: a bunch of keys that will be shallow copied over to the new\n * file.\n *\n * @typedef {Record<string, unknown>} ReporterSettings\n * @typedef {<T = ReporterSettings>(files: Array<VFile>, options: T) => string} Reporter\n */\n\nimport buffer from 'is-buffer'\nimport {VFileMessage} from 'vfile-message'\nimport {path} from './minpath.js'\nimport {proc} from './minproc.js'\nimport {urlToPath, isUrl} from './minurl.js'\n\n// Order of setting (least specific to most), we need this because otherwise\n// `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n// stem can be set.\nconst order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * If `options` is `string` or `Buffer`, it\u2019s treated as `{value: options}`.\n * If `options` is a `URL`, it\u2019s treated as `{path: options}`.\n * If `options` is a `VFile`, shallow copies its data over to the new file.\n * All fields in `options` are set on the newly created `VFile`.\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * It\u2019s not possible to set either `dirname` or `extname` without setting\n * either `history`, `path`, `basename`, or `stem` as well.\n *\n * @param {Compatible} [value]\n */\n constructor(value) {\n /** @type {Options} */\n let options\n\n if (!value) {\n options = {}\n } else if (typeof value === 'string' || buffer(value)) {\n // @ts-expect-error Looks like a buffer.\n options = {value}\n } else if (isUrl(value)) {\n options = {path: value}\n } else {\n // @ts-expect-error Looks like file or options.\n options = value\n }\n\n /**\n * Place to store custom information (default: `{}`).\n * It\u2019s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of messages associated with the file.\n * @type {Array<VFileMessage>}\n */\n this.messages = []\n\n /**\n * List of filepaths the file moved between.\n * The first is the original path and the last is the current path.\n * @type {Array<string>}\n */\n this.history = []\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /* eslint-disable no-unused-expressions */\n /**\n * Raw value.\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are \u201Cwell-known\u201D.\n // As in, used in several tools.\n\n /**\n * Whether a file was saved to disk.\n * This is used by vfile reporters.\n * @type {boolean}\n */\n this.stored\n\n /**\n * Sometimes files have a non-string, compiled, representation.\n * This can be stored in the `result` field.\n * One example is when turning markdown into React nodes.\n * This is used by unified to store non-string results.\n * @type {unknown}\n */\n this.result\n\n /**\n * Sometimes files have a source map associated with them.\n * This can be stored in the `map` field.\n * This should be a `Map` type, which is equivalent to the `RawSourceMap`\n * type from the `source-map` module.\n * @type {Map|undefined}\n */\n this.map\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (prop in options && options[prop] !== undefined) {\n // @ts-expect-error: TS is confused by the different types for `history`.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) this[prop] = options[prop]\n }\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n * @returns {string}\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n * @param {string|URL} path\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the parent path (example: `'~'`).\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n * Cannot be set if there\u2019s no `path` yet.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there\u2019s no `path` yet.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.charCodeAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n /**\n * Serialize the file.\n *\n * @param {BufferEncoding} [encoding='utf8']\n * When `value` is a `Buffer`, `encoding` is a character encoding to\n * understand it as (default: `'utf8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n return (this.value || '').toString(encoding)\n }\n\n /**\n * Constructs a new `VFileMessage`, where `fatal` is set to `false`, and\n * associates it with the file by adding it to `vfile.messages` and setting\n * `message.file` to the current filepath.\n *\n * @param {string|Error} reason\n * Human readable reason for the message, uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place]\n * Place where the message occurred in the file.\n * @param {string} [origin]\n * Computer readable reason for the message\n * @returns {VFileMessage}\n * Message.\n */\n message(reason, place, origin) {\n const message = new VFileMessage(reason, place, origin)\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Like `VFile#message()`, but associates an informational message where\n * `fatal` is set to `null`.\n *\n * @param {string|Error} reason\n * Human readable reason for the message, uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place]\n * Place where the message occurred in the file.\n * @param {string} [origin]\n * Computer readable reason for the message\n * @returns {VFileMessage}\n * Message.\n */\n info(reason, place, origin) {\n const message = this.message(reason, place, origin)\n\n message.fatal = null\n\n return message\n }\n\n /**\n * Like `VFile#message()`, but associates a fatal message where `fatal` is\n * set to `true`, and then immediately throws it.\n *\n * > \uD83D\uDC49 **Note**: a fatal error means that a file is no longer processable.\n *\n * @param {string|Error} reason\n * Human readable reason for the message, uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place]\n * Place where the message occurred in the file.\n * @param {string} [origin]\n * Computer readable reason for the message\n * @returns {never}\n * Message.\n */\n fail(reason, place, origin) {\n const message = this.message(reason, place, origin)\n\n message.fatal = true\n\n throw message\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string|undefined} part\n * @param {string} name\n * @returns {void}\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string|undefined} part\n * @param {string} name\n * @returns {asserts part is string}\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string|undefined} path\n * @param {string} name\n * @returns {asserts path is string}\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n", "/**\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {object & {type: string, position?: Position|undefined}} NodeLike\n */\n\n/**\n * Stringify one point, a position (start and end points), or a node\u2019s\n * positional information.\n *\n * @param {Node|NodeLike|Position|Point|null} [value]\n * @returns {string}\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|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|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|undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n", "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {object & {type: string, position?: Position|undefined}} NodeLike\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\nexport class VFileMessage extends Error {\n /**\n * Constructor of a message for `reason` at `place` from `origin`.\n * When an error is passed in as `reason`, copies the `stack`.\n *\n * @param {string|Error} reason Reason for message (`string` or `Error`). Uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place] Place at which the message occurred in a file (`Node`, `Position`, or `Point`, optional).\n * @param {string} [origin] Place in code the message originates from (`string`, optional).\n */\n constructor(reason, place, origin) {\n /** @type {[string|null, string|null]} */\n const parts = [null, null]\n /** @type {Position} */\n let position = {\n // @ts-expect-error: we always follows the structure of `position`.\n start: {line: null, column: null},\n // @ts-expect-error: \"\n end: {line: null, column: null}\n }\n\n super()\n\n if (typeof place === 'string') {\n origin = place\n place = undefined\n }\n\n if (typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n parts[1] = origin\n } else {\n parts[0] = origin.slice(0, index)\n parts[1] = origin.slice(index + 1)\n }\n }\n\n if (place) {\n // Node.\n if ('type' in place || 'position' in place) {\n if (place.position) {\n position = place.position\n }\n }\n // Position.\n else if ('start' in place || 'end' in place) {\n position = place\n }\n // Point.\n else if ('line' in place || 'column' in place) {\n position.start = place\n }\n }\n\n // Fields from `Error`\n this.name = stringifyPosition(place) || '1:1'\n this.message = typeof reason === 'object' ? reason.message : reason\n this.stack = typeof reason === 'object' ? reason.stack : ''\n\n /**\n * Reason for message.\n * @type {string}\n */\n this.reason = this.message\n /**\n * If true, marks associated file as no longer processable.\n * @type {boolean?}\n */\n // eslint-disable-next-line no-unused-expressions\n this.fatal\n /**\n * Starting line of error.\n * @type {number?}\n */\n this.line = position.start.line\n /**\n * Starting column of error.\n * @type {number?}\n */\n this.column = position.start.column\n /**\n * Namespace of warning.\n * @type {string?}\n */\n this.source = parts[0]\n /**\n * Category of message.\n * @type {string?}\n */\n this.ruleId = parts[1]\n /**\n * Full range information, when available.\n * Has start and end properties, both set to an object with line and column, set to number?.\n * @type {Position?}\n */\n this.position = position\n\n // The following fields are \u201Cwell known\u201D.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /* eslint-disable no-unused-expressions */\n /**\n * You can use this to specify the source value that\u2019s being reported, which\n * is deemed incorrect.\n * @type {string?}\n */\n this.actual\n /**\n * You can use this to suggest values that should be used instead of\n * `actual`, one or more values that are deemed as acceptable.\n * @type {Array<string>?}\n */\n this.expected\n /**\n * You may add a file property with a path of a file (used throughout the VFile ecosystem).\n * @type {string?}\n */\n this.file\n /**\n * You may add a url property with a link to documentation for the message.\n * @type {string?}\n */\n this.url\n /**\n * You may add a note property with a long form description of the message (supported by vfile-reporter).\n * @type {string?}\n */\n this.note\n /* eslint-enable no-unused-expressions */\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.fatal = null\nVFileMessage.prototype.column = null\nVFileMessage.prototype.line = null\nVFileMessage.prototype.source = null\nVFileMessage.prototype.ruleId = null\nVFileMessage.prototype.position = null\n", "export {default as path} from 'path'\n", "export {default as proc} from 'process'\n", "export {fileURLToPath as urlToPath} from 'url'\nexport {isUrl} from './minurl.shared.js'\n", "/**\n * @typedef URL\n * @property {string} hash\n * @property {string} host\n * @property {string} hostname\n * @property {string} href\n * @property {string} origin\n * @property {string} password\n * @property {string} pathname\n * @property {string} port\n * @property {string} protocol\n * @property {string} search\n * @property {any} searchParams\n * @property {string} username\n * @property {() => string} toString\n * @property {() => string} toJSON\n */\n\n/**\n * @param {unknown} fileURLOrPath\n * @returns {fileURLOrPath is URL}\n */\n// From: <https://github.com/nodejs/node/blob/fcf8ba4/lib/internal/url.js#L1501>\nexport function isUrl(fileURLOrPath) {\n return (\n fileURLOrPath !== null &&\n typeof fileURLOrPath === 'object' &&\n // @ts-expect-error: indexable.\n fileURLOrPath.href &&\n // @ts-expect-error: indexable.\n fileURLOrPath.origin\n )\n}\n", "/**\n * @typedef Options\n * @property {boolean} [includeImageAlt=true]\n */\n\n/**\n * Get the text content of a node.\n * Prefer the node\u2019s plain-text fields, otherwise serialize its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} node\n * @param {Options} [options]\n * @returns {string}\n */\nexport function toString(node, options) {\n var {includeImageAlt = true} = options || {}\n return one(node, includeImageAlt)\n}\n\n/**\n * @param {unknown} node\n * @param {boolean} includeImageAlt\n * @returns {string}\n */\nfunction one(node, includeImageAlt) {\n return (\n (node &&\n typeof node === 'object' &&\n // @ts-ignore looks like a literal.\n (node.value ||\n // @ts-ignore looks like an image.\n (includeImageAlt ? node.alt : '') ||\n // @ts-ignore looks like a parent.\n ('children' in node && all(node.children, includeImageAlt)) ||\n (Array.isArray(node) && all(node, includeImageAlt)))) ||\n ''\n )\n}\n\n/**\n * @param {Array.<unknown>} values\n * @param {boolean} includeImageAlt\n * @returns {string}\n */\nfunction all(values, includeImageAlt) {\n /** @type {Array.<string>} */\n var result = []\n var index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt)\n }\n\n return result.join('')\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 * @param {T[]} list\n * @param {number} start\n * @param {number} remove\n * @param {T[]} items\n * @returns {void}\n */\nexport function splice(list, start, remove, items) {\n const end = list.length\n let chunkStart = 0\n /** @type {unknown[]} */\n\n let parameters // Make start between zero and `end` (included).\n\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n\n remove = remove > 0 ? remove : 0 // No need to chunk the items if there\u2019s only a couple (10k) items.\n\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove) // @ts-expect-error Hush, it\u2019s fine.\n ;[].splice.apply(list, parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) [].splice.apply(list, [start, remove]) // Insert the items in chunks to not cause stack overflows.\n\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000)\n parameters.unshift(start, 0) // @ts-expect-error Hush, it\u2019s fine.\n ;[].splice.apply(list, parameters)\n chunkStart += 10000\n start += 10000\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 * @param {T[]} list\n * @param {T[]} items\n * @returns {T[]}\n */\n\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items)\n return list\n }\n\n return items\n}\n", "/**\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine several syntax extensions into one.\n *\n * @param {Extension[]} extensions List of syntax extensions.\n * @returns {NormalizedExtension} 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 Extension to merge into.\n * @param {Extension} extension Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n /** @type {string} */\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 {string} */\n let code\n\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 * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {unknown[]} existing\n * @param {unknown[]} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {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 several HTML extensions into one.\n *\n * @param {HtmlExtension[]} htmlExtensions List of HTML extensions.\n * @returns {HtmlExtension} A single combined 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 Extension to merge into.\n * @param {HtmlExtension} extension Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n /** @type {string} */\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 {string} */\n let type\n\n if (right) {\n for (type in right) {\n left[type] = right[type]\n }\n }\n }\n}\n", "// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\nexport const unicodePunctuationRegex =\n /[!-/:-@[-`{-~\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n", "/**\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js'\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\nexport const asciiAlpha = regexCheck(/[A-Za-z]/)\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\nexport const asciiDigit = regexCheck(/\\d/)\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\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\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\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\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\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\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\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\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 * @returns {code is number}\n */\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 * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32)\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 * @returns {code is number}\n */\n\nexport function markdownLineEnding(code) {\n return code !== null && code < -2\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 * @returns {code is number}\n */\n\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\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\nexport const unicodeWhitespace = regexCheck(/\\s/)\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// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n\nexport const unicodePunctuation = regexCheck(unicodePunctuationRegex)\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => code is number}\n */\n\nfunction regexCheck(regex) {\n return check\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code Character code\n * @returns {code is number} Whether the character code matches the bound regex\n */\n\n function check(code) {\n return code !== null && regex.test(String.fromCharCode(code))\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownSpace} from 'micromark-util-character'\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {string} type\n * @param {number} [max=Infinity]\n * @returns {State}\n */\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 /** @type {State} */\n\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type)\n return prefix(code)\n }\n\n return ok(code)\n }\n /** @type {State} */\n\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n\n effects.exit(type)\n return ok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n}\n/** @type {Initializer} */\n\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n /** @type {Token} */\n\n let previous\n return contentStart\n /** @type {State} */\n\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n /** @type {State} */\n\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n /** @type {State} */\n\n function lineStart(code) {\n const token = effects.enter('chunkText', {\n contentType: 'text',\n previous\n })\n\n if (previous) {\n previous.next = token\n }\n\n previous = token\n return data(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n } // Data.\n\n effects.consume(code)\n return data\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Point} Point\n */\n\n/**\n * @typedef {Record<string, unknown>} StackState\n * @typedef {[Construct, StackState]} StackItem\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {InitialConstruct} */\n\nexport const document = {\n tokenize: initializeDocument\n}\n/** @type {Construct} */\n\nconst containerConstruct = {\n tokenize: tokenizeContainer\n}\n/** @type {Initializer} */\n\nfunction initializeDocument(effects) {\n const self = this\n /** @type {StackItem[]} */\n\n const stack = []\n let continued = 0\n /** @type {TokenizeContext|undefined} */\n\n let childFlow\n /** @type {Token|undefined} */\n\n let childToken\n /** @type {number} */\n\n let lineStartOffset\n return start\n /** @type {State} */\n\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(\n item[0].continuation,\n documentContinue,\n checkNewContainers\n )(code)\n } // Done.\n\n return checkNewContainers(code)\n }\n /** @type {State} */\n\n function documentContinue(code) {\n continued++ // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it\u2019s already used in the wild by\n // extensions.\n\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined\n\n if (childFlow) {\n closeFlow()\n } // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {Point|undefined} */\n\n let point // Find the flow chunk.\n\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n }\n\n exitContainers(continued) // Fix positions.\n\n let index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n } // Inject the exits earlier (they\u2019re still also at the end).\n\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n ) // Discard the duplicate exits.\n\n self.events.length = index\n return checkNewContainers(code)\n }\n\n return start(code)\n }\n /** @type {State} */\n\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\u2019s 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 } // If we have concrete content, such as block HTML or fenced code,\n // we can\u2019t have containers \u201Cpierce\u201D into them, so we can immediately\n // start.\n\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code)\n } // If we do have flow, it could still be a blank line,\n // but we\u2019d be interrupting it w/ a new container if there\u2019s a current\n // construct.\n\n self.interrupt = Boolean(\n childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n )\n } // Check if there is a new container.\n\n self.containerState = {}\n return effects.check(\n containerConstruct,\n thereIsANewContainer,\n thereIsNoNewContainer\n )(code)\n }\n /** @type {State} */\n\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow()\n exitContainers(continued)\n return documentContinued(code)\n }\n /** @type {State} */\n\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 /** @type {State} */\n\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n /** @type {State} */\n\n function containerContinue(code) {\n continued++\n stack.push([self.currentConstruct, self.containerState]) // Try another.\n\n return documentContinued(code)\n }\n /** @type {State} */\n\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow()\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n })\n return flowContinue(code)\n }\n /** @type {State} */\n\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\n if (markdownLineEnding(code)) {\n effects.consume(code)\n writeToChild(effects.exit('chunkFlow')) // Get ready for the next line.\n\n continued = 0\n self.interrupt = undefined\n return start\n }\n\n effects.consume(code)\n return flowContinue\n }\n /**\n * @param {Token} token\n * @param {boolean} [eof]\n * @returns {void}\n */\n\n function writeToChild(token, eof) {\n const stream = self.sliceStream(token)\n if (eof) 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) // 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\u2019t \u201Cunmake\u201D 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 \u201Cunmakes\u201D the first line\n // and turns the whole into one content block.\n //\n // We\u2019ve 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\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length\n\n while (index--) {\n if (\n // The token starts before the line ending\u2026\n childFlow.events[index][1].start.offset < lineStartOffset && // \u2026and either is not ended yet\u2026\n (!childFlow.events[index][1].end || // \u2026or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)\n ) {\n // Exit: there\u2019s still something open, which means it\u2019s a lazy line\n // part of something.\n return\n }\n } // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {boolean|undefined} */\n\n let seen\n /** @type {Point|undefined} */\n\n let point // Find the previous chunk (the one before the lazy line).\n\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n\n seen = true\n }\n }\n\n exitContainers(continued) // Fix positions.\n\n index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n } // Inject the exits earlier (they\u2019re still also at the end).\n\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n ) // Discard the duplicate exits.\n\n self.events.length = index\n }\n }\n /**\n * @param {number} size\n * @returns {void}\n */\n\n function exitContainers(size) {\n let index = stack.length // Exit open containers.\n\n while (index-- > size) {\n const entry = stack[index]\n self.containerState = entry[1]\n entry[0].exit.call(self, effects)\n }\n\n stack.length = size\n }\n\n function closeFlow() {\n childFlow.write([null])\n childToken = undefined\n childFlow = undefined\n self.containerState._closeFlow = undefined\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContainer(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n", "/**\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n\n/**\n * Classify whether a character code represents whitespace, punctuation, or\n * something 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 that eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * @returns {number|undefined}\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {{resolveAll?: Resolver}[]} constructs\n * @param {Event[]} events\n * @param {TokenizeContext} context\n * @returns {Event[]}\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {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 * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Point} Point\n */\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n\n let open\n /** @type {Token} */\n\n let group\n /** @type {Token} */\n\n let text\n /** @type {Token} */\n\n let openingSequence\n /** @type {Token} */\n\n let closingSequence\n /** @type {number} */\n\n let use\n /** @type {Event[]} */\n\n let nextEvents\n /** @type {number} */\n\n let offset // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it\u2019s\n // a bottleneck for malicious stuff.\n\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index // Now walk back to find an opener.\n\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open && // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\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\u2019t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n } // Number of markers to use from the sequence.\n\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = [] // If there are more markers in the opening, add them before.\n\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n } // Opening.\n\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ]) // Between.\n\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n ) // Closing.\n\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ]) // If there are more markers in the closing, add them after.\n\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n } // Remove remaining sequences.\n\n index = -1\n\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n\n return events\n}\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 /** @type {NonNullable<Code>} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('attentionSequence')\n marker = code\n return sequence(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n return sequence\n }\n\n const token = effects.exit('attentionSequence')\n const after = classifyCharacter(code)\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !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 * Move a point a bit.\n *\n * Note: `move` only works inside lines! It\u2019s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\n\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 1\n return start\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 /** @type {State} */\n\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n\n return asciiAtext(code) ? emailAtext(code) : nok(code)\n }\n /** @type {State} */\n\n function schemeOrEmailAtext(code) {\n return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n ? schemeInsideOrEmailAtext(code)\n : emailAtext(code)\n }\n /** @type {State} */\n\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n return urlInside\n }\n\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n\n return emailAtext(code)\n }\n /** @type {State} */\n\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n return end(code)\n }\n\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return urlInside\n }\n /** @type {State} */\n\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\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\n if (code === 62) {\n // Exit, then change the type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n return end(code)\n }\n\n return emailValue(code)\n }\n /** @type {State} */\n\n function emailValue(code) {\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n effects.consume(code)\n return code === 45 ? emailValue : emailLabel\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function end(code) {\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlankLine(effects, ok, nok) {\n return factorySpace(effects, afterWhitespace, 'linePrefix')\n /** @type {State} */\n\n function afterWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n if (code === 62) {\n const state = self.containerState\n\n if (!state.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n state.open = true\n }\n\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n\n return nok(code)\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\n effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(blockQuote, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n/** @type {Exiter} */\n\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {asciiPunctuation} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\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 open\n }\n /** @type {State} */\n\n function open(code) {\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\n return nok(code)\n }\n}\n", "/**\n * Map of named character references.\n *\n * @type {Record<string, string>}\n */\nexport const characterEntities = {\n AElig: '\u00C6',\n AMP: '&',\n Aacute: '\u00C1',\n Abreve: '\u0102',\n Acirc: '\u00C2',\n Acy: '\u0410',\n Afr: '\uD835\uDD04',\n Agrave: '\u00C0',\n Alpha: '\u0391',\n Amacr: '\u0100',\n And: '\u2A53',\n Aogon: '\u0104',\n Aopf: '\uD835\uDD38',\n ApplyFunction: '\u2061',\n Aring: '\u00C5',\n Ascr: '\uD835\uDC9C',\n Assign: '\u2254',\n Atilde: '\u00C3',\n Auml: '\u00C4',\n Backslash: '\u2216',\n Barv: '\u2AE7',\n Barwed: '\u2306',\n Bcy: '\u0411',\n Because: '\u2235',\n Bernoullis: '\u212C',\n Beta: '\u0392',\n Bfr: '\uD835\uDD05',\n Bopf: '\uD835\uDD39',\n Breve: '\u02D8',\n Bscr: '\u212C',\n Bumpeq: '\u224E',\n CHcy: '\u0427',\n COPY: '\u00A9',\n Cacute: '\u0106',\n Cap: '\u22D2',\n CapitalDifferentialD: '\u2145',\n Cayleys: '\u212D',\n Ccaron: '\u010C',\n Ccedil: '\u00C7',\n Ccirc: '\u0108',\n Cconint: '\u2230',\n Cdot: '\u010A',\n Cedilla: '\u00B8',\n CenterDot: '\u00B7',\n Cfr: '\u212D',\n Chi: '\u03A7',\n CircleDot: '\u2299',\n CircleMinus: '\u2296',\n CirclePlus: '\u2295',\n CircleTimes: '\u2297',\n ClockwiseContourIntegral: '\u2232',\n CloseCurlyDoubleQuote: '\u201D',\n CloseCurlyQuote: '\u2019',\n Colon: '\u2237',\n Colone: '\u2A74',\n Congruent: '\u2261',\n Conint: '\u222F',\n ContourIntegral: '\u222E',\n Copf: '\u2102',\n Coproduct: '\u2210',\n CounterClockwiseContourIntegral: '\u2233',\n Cross: '\u2A2F',\n Cscr: '\uD835\uDC9E',\n Cup: '\u22D3',\n CupCap: '\u224D',\n DD: '\u2145',\n DDotrahd: '\u2911',\n DJcy: '\u0402',\n DScy: '\u0405',\n DZcy: '\u040F',\n Dagger: '\u2021',\n Darr: '\u21A1',\n Dashv: '\u2AE4',\n Dcaron: '\u010E',\n Dcy: '\u0414',\n Del: '\u2207',\n Delta: '\u0394',\n Dfr: '\uD835\uDD07',\n DiacriticalAcute: '\u00B4',\n DiacriticalDot: '\u02D9',\n DiacriticalDoubleAcute: '\u02DD',\n DiacriticalGrave: '`',\n DiacriticalTilde: '\u02DC',\n Diamond: '\u22C4',\n DifferentialD: '\u2146',\n Dopf: '\uD835\uDD3B',\n Dot: '\u00A8',\n DotDot: '\u20DC',\n DotEqual: '\u2250',\n DoubleContourIntegral: '\u222F',\n DoubleDot: '\u00A8',\n DoubleDownArrow: '\u21D3',\n DoubleLeftArrow: '\u21D0',\n DoubleLeftRightArrow: '\u21D4',\n DoubleLeftTee: '\u2AE4',\n DoubleLongLeftArrow: '\u27F8',\n DoubleLongLeftRightArrow: '\u27FA',\n DoubleLongRightArrow: '\u27F9',\n DoubleRightArrow: '\u21D2',\n DoubleRightTee: '\u22A8',\n DoubleUpArrow: '\u21D1',\n DoubleUpDownArrow: '\u21D5',\n DoubleVerticalBar: '\u2225',\n DownArrow: '\u2193',\n DownArrowBar: '\u2913',\n DownArrowUpArrow: '\u21F5',\n DownBreve: '\u0311',\n DownLeftRightVector: '\u2950',\n DownLeftTeeVector: '\u295E',\n DownLeftVector: '\u21BD',\n DownLeftVectorBar: '\u2956',\n DownRightTeeVector: '\u295F',\n DownRightVector: '\u21C1',\n DownRightVectorBar: '\u2957',\n DownTee: '\u22A4',\n DownTeeArrow: '\u21A7',\n Downarrow: '\u21D3',\n Dscr: '\uD835\uDC9F',\n Dstrok: '\u0110',\n ENG: '\u014A',\n ETH: '\u00D0',\n Eacute: '\u00C9',\n Ecaron: '\u011A',\n Ecirc: '\u00CA',\n Ecy: '\u042D',\n Edot: '\u0116',\n Efr: '\uD835\uDD08',\n Egrave: '\u00C8',\n Element: '\u2208',\n Emacr: '\u0112',\n EmptySmallSquare: '\u25FB',\n EmptyVerySmallSquare: '\u25AB',\n Eogon: '\u0118',\n Eopf: '\uD835\uDD3C',\n Epsilon: '\u0395',\n Equal: '\u2A75',\n EqualTilde: '\u2242',\n Equilibrium: '\u21CC',\n Escr: '\u2130',\n Esim: '\u2A73',\n Eta: '\u0397',\n Euml: '\u00CB',\n Exists: '\u2203',\n ExponentialE: '\u2147',\n Fcy: '\u0424',\n Ffr: '\uD835\uDD09',\n FilledSmallSquare: '\u25FC',\n FilledVerySmallSquare: '\u25AA',\n Fopf: '\uD835\uDD3D',\n ForAll: '\u2200',\n Fouriertrf: '\u2131',\n Fscr: '\u2131',\n GJcy: '\u0403',\n GT: '>',\n Gamma: '\u0393',\n Gammad: '\u03DC',\n Gbreve: '\u011E',\n Gcedil: '\u0122',\n Gcirc: '\u011C',\n Gcy: '\u0413',\n Gdot: '\u0120',\n Gfr: '\uD835\uDD0A',\n Gg: '\u22D9',\n Gopf: '\uD835\uDD3E',\n GreaterEqual: '\u2265',\n GreaterEqualLess: '\u22DB',\n GreaterFullEqual: '\u2267',\n GreaterGreater: '\u2AA2',\n GreaterLess: '\u2277',\n GreaterSlantEqual: '\u2A7E',\n GreaterTilde: '\u2273',\n Gscr: '\uD835\uDCA2',\n Gt: '\u226B',\n HARDcy: '\u042A',\n Hacek: '\u02C7',\n Hat: '^',\n Hcirc: '\u0124',\n Hfr: '\u210C',\n HilbertSpace: '\u210B',\n Hopf: '\u210D',\n HorizontalLine: '\u2500',\n Hscr: '\u210B',\n Hstrok: '\u0126',\n HumpDownHump: '\u224E',\n HumpEqual: '\u224F',\n IEcy: '\u0415',\n IJlig: '\u0132',\n IOcy: '\u0401',\n Iacute: '\u00CD',\n Icirc: '\u00CE',\n Icy: '\u0418',\n Idot: '\u0130',\n Ifr: '\u2111',\n Igrave: '\u00CC',\n Im: '\u2111',\n Imacr: '\u012A',\n ImaginaryI: '\u2148',\n Implies: '\u21D2',\n Int: '\u222C',\n Integral: '\u222B',\n Intersection: '\u22C2',\n InvisibleComma: '\u2063',\n InvisibleTimes: '\u2062',\n Iogon: '\u012E',\n Iopf: '\uD835\uDD40',\n Iota: '\u0399',\n Iscr: '\u2110',\n Itilde: '\u0128',\n Iukcy: '\u0406',\n Iuml: '\u00CF',\n Jcirc: '\u0134',\n Jcy: '\u0419',\n Jfr: '\uD835\uDD0D',\n Jopf: '\uD835\uDD41',\n Jscr: '\uD835\uDCA5',\n Jsercy: '\u0408',\n Jukcy: '\u0404',\n KHcy: '\u0425',\n KJcy: '\u040C',\n Kappa: '\u039A',\n Kcedil: '\u0136',\n Kcy: '\u041A',\n Kfr: '\uD835\uDD0E',\n Kopf: '\uD835\uDD42',\n Kscr: '\uD835\uDCA6',\n LJcy: '\u0409',\n LT: '<',\n Lacute: '\u0139',\n Lambda: '\u039B',\n Lang: '\u27EA',\n Laplacetrf: '\u2112',\n Larr: '\u219E',\n Lcaron: '\u013D',\n Lcedil: '\u013B',\n Lcy: '\u041B',\n LeftAngleBracket: '\u27E8',\n LeftArrow: '\u2190',\n LeftArrowBar: '\u21E4',\n LeftArrowRightArrow: '\u21C6',\n LeftCeiling: '\u2308',\n LeftDoubleBracket: '\u27E6',\n LeftDownTeeVector: '\u2961',\n LeftDownVector: '\u21C3',\n LeftDownVectorBar: '\u2959',\n LeftFloor: '\u230A',\n LeftRightArrow: '\u2194',\n LeftRightVector: '\u294E',\n LeftTee: '\u22A3',\n LeftTeeArrow: '\u21A4',\n LeftTeeVector: '\u295A',\n LeftTriangle: '\u22B2',\n LeftTriangleBar: '\u29CF',\n LeftTriangleEqual: '\u22B4',\n LeftUpDownVector: '\u2951',\n LeftUpTeeVector: '\u2960',\n LeftUpVector: '\u21BF',\n LeftUpVectorBar: '\u2958',\n LeftVector: '\u21BC',\n LeftVectorBar: '\u2952',\n Leftarrow: '\u21D0',\n Leftrightarrow: '\u21D4',\n LessEqualGreater: '\u22DA',\n LessFullEqual: '\u2266',\n LessGreater: '\u2276',\n LessLess: '\u2AA1',\n LessSlantEqual: '\u2A7D',\n LessTilde: '\u2272',\n Lfr: '\uD835\uDD0F',\n Ll: '\u22D8',\n Lleftarrow: '\u21DA',\n Lmidot: '\u013F',\n LongLeftArrow: '\u27F5',\n LongLeftRightArrow: '\u27F7',\n LongRightArrow: '\u27F6',\n Longleftarrow: '\u27F8',\n Longleftrightarrow: '\u27FA',\n Longrightarrow: '\u27F9',\n Lopf: '\uD835\uDD43',\n LowerLeftArrow: '\u2199',\n LowerRightArrow: '\u2198',\n Lscr: '\u2112',\n Lsh: '\u21B0',\n Lstrok: '\u0141',\n Lt: '\u226A',\n Map: '\u2905',\n Mcy: '\u041C',\n MediumSpace: '\u205F',\n Mellintrf: '\u2133',\n Mfr: '\uD835\uDD10',\n MinusPlus: '\u2213',\n Mopf: '\uD835\uDD44',\n Mscr: '\u2133',\n Mu: '\u039C',\n NJcy: '\u040A',\n Nacute: '\u0143',\n Ncaron: '\u0147',\n Ncedil: '\u0145',\n Ncy: '\u041D',\n NegativeMediumSpace: '\u200B',\n NegativeThickSpace: '\u200B',\n NegativeThinSpace: '\u200B',\n NegativeVeryThinSpace: '\u200B',\n NestedGreaterGreater: '\u226B',\n NestedLessLess: '\u226A',\n NewLine: '\\n',\n Nfr: '\uD835\uDD11',\n NoBreak: '\u2060',\n NonBreakingSpace: '\u00A0',\n Nopf: '\u2115',\n Not: '\u2AEC',\n NotCongruent: '\u2262',\n NotCupCap: '\u226D',\n NotDoubleVerticalBar: '\u2226',\n NotElement: '\u2209',\n NotEqual: '\u2260',\n NotEqualTilde: '\u2242\u0338',\n NotExists: '\u2204',\n NotGreater: '\u226F',\n NotGreaterEqual: '\u2271',\n NotGreaterFullEqual: '\u2267\u0338',\n NotGreaterGreater: '\u226B\u0338',\n NotGreaterLess: '\u2279',\n NotGreaterSlantEqual: '\u2A7E\u0338',\n NotGreaterTilde: '\u2275',\n NotHumpDownHump: '\u224E\u0338',\n NotHumpEqual: '\u224F\u0338',\n NotLeftTriangle: '\u22EA',\n NotLeftTriangleBar: '\u29CF\u0338',\n NotLeftTriangleEqual: '\u22EC',\n NotLess: '\u226E',\n NotLessEqual: '\u2270',\n NotLessGreater: '\u2278',\n NotLessLess: '\u226A\u0338',\n NotLessSlantEqual: '\u2A7D\u0338',\n NotLessTilde: '\u2274',\n NotNestedGreaterGreater: '\u2AA2\u0338',\n NotNestedLessLess: '\u2AA1\u0338',\n NotPrecedes: '\u2280',\n NotPrecedesEqual: '\u2AAF\u0338',\n NotPrecedesSlantEqual: '\u22E0',\n NotReverseElement: '\u220C',\n NotRightTriangle: '\u22EB',\n NotRightTriangleBar: '\u29D0\u0338',\n NotRightTriangleEqual: '\u22ED',\n NotSquareSubset: '\u228F\u0338',\n NotSquareSubsetEqual: '\u22E2',\n NotSquareSuperset: '\u2290\u0338',\n NotSquareSupersetEqual: '\u22E3',\n NotSubset: '\u2282\u20D2',\n NotSubsetEqual: '\u2288',\n NotSucceeds: '\u2281',\n NotSucceedsEqual: '\u2AB0\u0338',\n NotSucceedsSlantEqual: '\u22E1',\n NotSucceedsTilde: '\u227F\u0338',\n NotSuperset: '\u2283\u20D2',\n NotSupersetEqual: '\u2289',\n NotTilde: '\u2241',\n NotTildeEqual: '\u2244',\n NotTildeFullEqual: '\u2247',\n NotTildeTilde: '\u2249',\n NotVerticalBar: '\u2224',\n Nscr: '\uD835\uDCA9',\n Ntilde: '\u00D1',\n Nu: '\u039D',\n OElig: '\u0152',\n Oacute: '\u00D3',\n Ocirc: '\u00D4',\n Ocy: '\u041E',\n Odblac: '\u0150',\n Ofr: '\uD835\uDD12',\n Ograve: '\u00D2',\n Omacr: '\u014C',\n Omega: '\u03A9',\n Omicron: '\u039F',\n Oopf: '\uD835\uDD46',\n OpenCurlyDoubleQuote: '\u201C',\n OpenCurlyQuote: '\u2018',\n Or: '\u2A54',\n Oscr: '\uD835\uDCAA',\n Oslash: '\u00D8',\n Otilde: '\u00D5',\n Otimes: '\u2A37',\n Ouml: '\u00D6',\n OverBar: '\u203E',\n OverBrace: '\u23DE',\n OverBracket: '\u23B4',\n OverParenthesis: '\u23DC',\n PartialD: '\u2202',\n Pcy: '\u041F',\n Pfr: '\uD835\uDD13',\n Phi: '\u03A6',\n Pi: '\u03A0',\n PlusMinus: '\u00B1',\n Poincareplane: '\u210C',\n Popf: '\u2119',\n Pr: '\u2ABB',\n Precedes: '\u227A',\n PrecedesEqual: '\u2AAF',\n PrecedesSlantEqual: '\u227C',\n PrecedesTilde: '\u227E',\n Prime: '\u2033',\n Product: '\u220F',\n Proportion: '\u2237',\n Proportional: '\u221D',\n Pscr: '\uD835\uDCAB',\n Psi: '\u03A8',\n QUOT: '\"',\n Qfr: '\uD835\uDD14',\n Qopf: '\u211A',\n Qscr: '\uD835\uDCAC',\n RBarr: '\u2910',\n REG: '\u00AE',\n Racute: '\u0154',\n Rang: '\u27EB',\n Rarr: '\u21A0',\n Rarrtl: '\u2916',\n Rcaron: '\u0158',\n Rcedil: '\u0156',\n Rcy: '\u0420',\n Re: '\u211C',\n ReverseElement: '\u220B',\n ReverseEquilibrium: '\u21CB',\n ReverseUpEquilibrium: '\u296F',\n Rfr: '\u211C',\n Rho: '\u03A1',\n RightAngleBracket: '\u27E9',\n RightArrow: '\u2192',\n RightArrowBar: '\u21E5',\n RightArrowLeftArrow: '\u21C4',\n RightCeiling: '\u2309',\n RightDoubleBracket: '\u27E7',\n RightDownTeeVector: '\u295D',\n RightDownVector: '\u21C2',\n RightDownVectorBar: '\u2955',\n RightFloor: '\u230B',\n RightTee: '\u22A2',\n RightTeeArrow: '\u21A6',\n RightTeeVector: '\u295B',\n RightTriangle: '\u22B3',\n RightTriangleBar: '\u29D0',\n RightTriangleEqual: '\u22B5',\n RightUpDownVector: '\u294F',\n RightUpTeeVector: '\u295C',\n RightUpVector: '\u21BE',\n RightUpVectorBar: '\u2954',\n RightVector: '\u21C0',\n RightVectorBar: '\u2953',\n Rightarrow: '\u21D2',\n Ropf: '\u211D',\n RoundImplies: '\u2970',\n Rrightarrow: '\u21DB',\n Rscr: '\u211B',\n Rsh: '\u21B1',\n RuleDelayed: '\u29F4',\n SHCHcy: '\u0429',\n SHcy: '\u0428',\n SOFTcy: '\u042C',\n Sacute: '\u015A',\n Sc: '\u2ABC',\n Scaron: '\u0160',\n Scedil: '\u015E',\n Scirc: '\u015C',\n Scy: '\u0421',\n Sfr: '\uD835\uDD16',\n ShortDownArrow: '\u2193',\n ShortLeftArrow: '\u2190',\n ShortRightArrow: '\u2192',\n ShortUpArrow: '\u2191',\n Sigma: '\u03A3',\n SmallCircle: '\u2218',\n Sopf: '\uD835\uDD4A',\n Sqrt: '\u221A',\n Square: '\u25A1',\n SquareIntersection: '\u2293',\n SquareSubset: '\u228F',\n SquareSubsetEqual: '\u2291',\n SquareSuperset: '\u2290',\n SquareSupersetEqual: '\u2292',\n SquareUnion: '\u2294',\n Sscr: '\uD835\uDCAE',\n Star: '\u22C6',\n Sub: '\u22D0',\n Subset: '\u22D0',\n SubsetEqual: '\u2286',\n Succeeds: '\u227B',\n SucceedsEqual: '\u2AB0',\n SucceedsSlantEqual: '\u227D',\n SucceedsTilde: '\u227F',\n SuchThat: '\u220B',\n Sum: '\u2211',\n Sup: '\u22D1',\n Superset: '\u2283',\n SupersetEqual: '\u2287',\n Supset: '\u22D1',\n THORN: '\u00DE',\n TRADE: '\u2122',\n TSHcy: '\u040B',\n TScy: '\u0426',\n Tab: '\\t',\n Tau: '\u03A4',\n Tcaron: '\u0164',\n Tcedil: '\u0162',\n Tcy: '\u0422',\n Tfr: '\uD835\uDD17',\n Therefore: '\u2234',\n Theta: '\u0398',\n ThickSpace: '\u205F\u200A',\n ThinSpace: '\u2009',\n Tilde: '\u223C',\n TildeEqual: '\u2243',\n TildeFullEqual: '\u2245',\n TildeTilde: '\u2248',\n Topf: '\uD835\uDD4B',\n TripleDot: '\u20DB',\n Tscr: '\uD835\uDCAF',\n Tstrok: '\u0166',\n Uacute: '\u00DA',\n Uarr: '\u219F',\n Uarrocir: '\u2949',\n Ubrcy: '\u040E',\n Ubreve: '\u016C',\n Ucirc: '\u00DB',\n Ucy: '\u0423',\n Udblac: '\u0170',\n Ufr: '\uD835\uDD18',\n Ugrave: '\u00D9',\n Umacr: '\u016A',\n UnderBar: '_',\n UnderBrace: '\u23DF',\n UnderBracket: '\u23B5',\n UnderParenthesis: '\u23DD',\n Union: '\u22C3',\n UnionPlus: '\u228E',\n Uogon: '\u0172',\n Uopf: '\uD835\uDD4C',\n UpArrow: '\u2191',\n UpArrowBar: '\u2912',\n UpArrowDownArrow: '\u21C5',\n UpDownArrow: '\u2195',\n UpEquilibrium: '\u296E',\n UpTee: '\u22A5',\n UpTeeArrow: '\u21A5',\n Uparrow: '\u21D1',\n Updownarrow: '\u21D5',\n UpperLeftArrow: '\u2196',\n UpperRightArrow: '\u2197',\n Upsi: '\u03D2',\n Upsilon: '\u03A5',\n Uring: '\u016E',\n Uscr: '\uD835\uDCB0',\n Utilde: '\u0168',\n Uuml: '\u00DC',\n VDash: '\u22AB',\n Vbar: '\u2AEB',\n Vcy: '\u0412',\n Vdash: '\u22A9',\n Vdashl: '\u2AE6',\n Vee: '\u22C1',\n Verbar: '\u2016',\n Vert: '\u2016',\n VerticalBar: '\u2223',\n VerticalLine: '|',\n VerticalSeparator: '\u2758',\n VerticalTilde: '\u2240',\n VeryThinSpace: '\u200A',\n Vfr: '\uD835\uDD19',\n Vopf: '\uD835\uDD4D',\n Vscr: '\uD835\uDCB1',\n Vvdash: '\u22AA',\n Wcirc: '\u0174',\n Wedge: '\u22C0',\n Wfr: '\uD835\uDD1A',\n Wopf: '\uD835\uDD4E',\n Wscr: '\uD835\uDCB2',\n Xfr: '\uD835\uDD1B',\n Xi: '\u039E',\n Xopf: '\uD835\uDD4F',\n Xscr: '\uD835\uDCB3',\n YAcy: '\u042F',\n YIcy: '\u0407',\n YUcy: '\u042E',\n Yacute: '\u00DD',\n Ycirc: '\u0176',\n Ycy: '\u042B',\n Yfr: '\uD835\uDD1C',\n Yopf: '\uD835\uDD50',\n Yscr: '\uD835\uDCB4',\n Yuml: '\u0178',\n ZHcy: '\u0416',\n Zacute: '\u0179',\n Zcaron: '\u017D',\n Zcy: '\u0417',\n Zdot: '\u017B',\n ZeroWidthSpace: '\u200B',\n Zeta: '\u0396',\n Zfr: '\u2128',\n Zopf: '\u2124',\n Zscr: '\uD835\uDCB5',\n aacute: '\u00E1',\n abreve: '\u0103',\n ac: '\u223E',\n acE: '\u223E\u0333',\n acd: '\u223F',\n acirc: '\u00E2',\n acute: '\u00B4',\n acy: '\u0430',\n aelig: '\u00E6',\n af: '\u2061',\n afr: '\uD835\uDD1E',\n agrave: '\u00E0',\n alefsym: '\u2135',\n aleph: '\u2135',\n alpha: '\u03B1',\n amacr: '\u0101',\n amalg: '\u2A3F',\n amp: '&',\n and: '\u2227',\n andand: '\u2A55',\n andd: '\u2A5C',\n andslope: '\u2A58',\n andv: '\u2A5A',\n ang: '\u2220',\n ange: '\u29A4',\n angle: '\u2220',\n angmsd: '\u2221',\n angmsdaa: '\u29A8',\n angmsdab: '\u29A9',\n angmsdac: '\u29AA',\n angmsdad: '\u29AB',\n angmsdae: '\u29AC',\n angmsdaf: '\u29AD',\n angmsdag: '\u29AE',\n angmsdah: '\u29AF',\n angrt: '\u221F',\n angrtvb: '\u22BE',\n angrtvbd: '\u299D',\n angsph: '\u2222',\n angst: '\u00C5',\n angzarr: '\u237C',\n aogon: '\u0105',\n aopf: '\uD835\uDD52',\n ap: '\u2248',\n apE: '\u2A70',\n apacir: '\u2A6F',\n ape: '\u224A',\n apid: '\u224B',\n apos: \"'\",\n approx: '\u2248',\n approxeq: '\u224A',\n aring: '\u00E5',\n ascr: '\uD835\uDCB6',\n ast: '*',\n asymp: '\u2248',\n asympeq: '\u224D',\n atilde: '\u00E3',\n auml: '\u00E4',\n awconint: '\u2233',\n awint: '\u2A11',\n bNot: '\u2AED',\n backcong: '\u224C',\n backepsilon: '\u03F6',\n backprime: '\u2035',\n backsim: '\u223D',\n backsimeq: '\u22CD',\n barvee: '\u22BD',\n barwed: '\u2305',\n barwedge: '\u2305',\n bbrk: '\u23B5',\n bbrktbrk: '\u23B6',\n bcong: '\u224C',\n bcy: '\u0431',\n bdquo: '\u201E',\n becaus: '\u2235',\n because: '\u2235',\n bemptyv: '\u29B0',\n bepsi: '\u03F6',\n bernou: '\u212C',\n beta: '\u03B2',\n beth: '\u2136',\n between: '\u226C',\n bfr: '\uD835\uDD1F',\n bigcap: '\u22C2',\n bigcirc: '\u25EF',\n bigcup: '\u22C3',\n bigodot: '\u2A00',\n bigoplus: '\u2A01',\n bigotimes: '\u2A02',\n bigsqcup: '\u2A06',\n bigstar: '\u2605',\n bigtriangledown: '\u25BD',\n bigtriangleup: '\u25B3',\n biguplus: '\u2A04',\n bigvee: '\u22C1',\n bigwedge: '\u22C0',\n bkarow: '\u290D',\n blacklozenge: '\u29EB',\n blacksquare: '\u25AA',\n blacktriangle: '\u25B4',\n blacktriangledown: '\u25BE',\n blacktriangleleft: '\u25C2',\n blacktriangleright: '\u25B8',\n blank: '\u2423',\n blk12: '\u2592',\n blk14: '\u2591',\n blk34: '\u2593',\n block: '\u2588',\n bne: '=\u20E5',\n bnequiv: '\u2261\u20E5',\n bnot: '\u2310',\n bopf: '\uD835\uDD53',\n bot: '\u22A5',\n bottom: '\u22A5',\n bowtie: '\u22C8',\n boxDL: '\u2557',\n boxDR: '\u2554',\n boxDl: '\u2556',\n boxDr: '\u2553',\n boxH: '\u2550',\n boxHD: '\u2566',\n boxHU: '\u2569',\n boxHd: '\u2564',\n boxHu: '\u2567',\n boxUL: '\u255D',\n boxUR: '\u255A',\n boxUl: '\u255C',\n boxUr: '\u2559',\n boxV: '\u2551',\n boxVH: '\u256C',\n boxVL: '\u2563',\n boxVR: '\u2560',\n boxVh: '\u256B',\n boxVl: '\u2562',\n boxVr: '\u255F',\n boxbox: '\u29C9',\n boxdL: '\u2555',\n boxdR: '\u2552',\n boxdl: '\u2510',\n boxdr: '\u250C',\n boxh: '\u2500',\n boxhD: '\u2565',\n boxhU: '\u2568',\n boxhd: '\u252C',\n boxhu: '\u2534',\n boxminus: '\u229F',\n boxplus: '\u229E',\n boxtimes: '\u22A0',\n boxuL: '\u255B',\n boxuR: '\u2558',\n boxul: '\u2518',\n boxur: '\u2514',\n boxv: '\u2502',\n boxvH: '\u256A',\n boxvL: '\u2561',\n boxvR: '\u255E',\n boxvh: '\u253C',\n boxvl: '\u2524',\n boxvr: '\u251C',\n bprime: '\u2035',\n breve: '\u02D8',\n brvbar: '\u00A6',\n bscr: '\uD835\uDCB7',\n bsemi: '\u204F',\n bsim: '\u223D',\n bsime: '\u22CD',\n bsol: '\\\\',\n bsolb: '\u29C5',\n bsolhsub: '\u27C8',\n bull: '\u2022',\n bullet: '\u2022',\n bump: '\u224E',\n bumpE: '\u2AAE',\n bumpe: '\u224F',\n bumpeq: '\u224F',\n cacute: '\u0107',\n cap: '\u2229',\n capand: '\u2A44',\n capbrcup: '\u2A49',\n capcap: '\u2A4B',\n capcup: '\u2A47',\n capdot: '\u2A40',\n caps: '\u2229\uFE00',\n caret: '\u2041',\n caron: '\u02C7',\n ccaps: '\u2A4D',\n ccaron: '\u010D',\n ccedil: '\u00E7',\n ccirc: '\u0109',\n ccups: '\u2A4C',\n ccupssm: '\u2A50',\n cdot: '\u010B',\n cedil: '\u00B8',\n cemptyv: '\u29B2',\n cent: '\u00A2',\n centerdot: '\u00B7',\n cfr: '\uD835\uDD20',\n chcy: '\u0447',\n check: '\u2713',\n checkmark: '\u2713',\n chi: '\u03C7',\n cir: '\u25CB',\n cirE: '\u29C3',\n circ: '\u02C6',\n circeq: '\u2257',\n circlearrowleft: '\u21BA',\n circlearrowright: '\u21BB',\n circledR: '\u00AE',\n circledS: '\u24C8',\n circledast: '\u229B',\n circledcirc: '\u229A',\n circleddash: '\u229D',\n cire: '\u2257',\n cirfnint: '\u2A10',\n cirmid: '\u2AEF',\n cirscir: '\u29C2',\n clubs: '\u2663',\n clubsuit: '\u2663',\n colon: ':',\n colone: '\u2254',\n coloneq: '\u2254',\n comma: ',',\n commat: '@',\n comp: '\u2201',\n compfn: '\u2218',\n complement: '\u2201',\n complexes: '\u2102',\n cong: '\u2245',\n congdot: '\u2A6D',\n conint: '\u222E',\n copf: '\uD835\uDD54',\n coprod: '\u2210',\n copy: '\u00A9',\n copysr: '\u2117',\n crarr: '\u21B5',\n cross: '\u2717',\n cscr: '\uD835\uDCB8',\n csub: '\u2ACF',\n csube: '\u2AD1',\n csup: '\u2AD0',\n csupe: '\u2AD2',\n ctdot: '\u22EF',\n cudarrl: '\u2938',\n cudarrr: '\u2935',\n cuepr: '\u22DE',\n cuesc: '\u22DF',\n cularr: '\u21B6',\n cularrp: '\u293D',\n cup: '\u222A',\n cupbrcap: '\u2A48',\n cupcap: '\u2A46',\n cupcup: '\u2A4A',\n cupdot: '\u228D',\n cupor: '\u2A45',\n cups: '\u222A\uFE00',\n curarr: '\u21B7',\n curarrm: '\u293C',\n curlyeqprec: '\u22DE',\n curlyeqsucc: '\u22DF',\n curlyvee: '\u22CE',\n curlywedge: '\u22CF',\n curren: '\u00A4',\n curvearrowleft: '\u21B6',\n curvearrowright: '\u21B7',\n cuvee: '\u22CE',\n cuwed: '\u22CF',\n cwconint: '\u2232',\n cwint: '\u2231',\n cylcty: '\u232D',\n dArr: '\u21D3',\n dHar: '\u2965',\n dagger: '\u2020',\n daleth: '\u2138',\n darr: '\u2193',\n dash: '\u2010',\n dashv: '\u22A3',\n dbkarow: '\u290F',\n dblac: '\u02DD',\n dcaron: '\u010F',\n dcy: '\u0434',\n dd: '\u2146',\n ddagger: '\u2021',\n ddarr: '\u21CA',\n ddotseq: '\u2A77',\n deg: '\u00B0',\n delta: '\u03B4',\n demptyv: '\u29B1',\n dfisht: '\u297F',\n dfr: '\uD835\uDD21',\n dharl: '\u21C3',\n dharr: '\u21C2',\n diam: '\u22C4',\n diamond: '\u22C4',\n diamondsuit: '\u2666',\n diams: '\u2666',\n die: '\u00A8',\n digamma: '\u03DD',\n disin: '\u22F2',\n div: '\u00F7',\n divide: '\u00F7',\n divideontimes: '\u22C7',\n divonx: '\u22C7',\n djcy: '\u0452',\n dlcorn: '\u231E',\n dlcrop: '\u230D',\n dollar: '$',\n dopf: '\uD835\uDD55',\n dot: '\u02D9',\n doteq: '\u2250',\n doteqdot: '\u2251',\n dotminus: '\u2238',\n dotplus: '\u2214',\n dotsquare: '\u22A1',\n doublebarwedge: '\u2306',\n downarrow: '\u2193',\n downdownarrows: '\u21CA',\n downharpoonleft: '\u21C3',\n downharpoonright: '\u21C2',\n drbkarow: '\u2910',\n drcorn: '\u231F',\n drcrop: '\u230C',\n dscr: '\uD835\uDCB9',\n dscy: '\u0455',\n dsol: '\u29F6',\n dstrok: '\u0111',\n dtdot: '\u22F1',\n dtri: '\u25BF',\n dtrif: '\u25BE',\n duarr: '\u21F5',\n duhar: '\u296F',\n dwangle: '\u29A6',\n dzcy: '\u045F',\n dzigrarr: '\u27FF',\n eDDot: '\u2A77',\n eDot: '\u2251',\n eacute: '\u00E9',\n easter: '\u2A6E',\n ecaron: '\u011B',\n ecir: '\u2256',\n ecirc: '\u00EA',\n ecolon: '\u2255',\n ecy: '\u044D',\n edot: '\u0117',\n ee: '\u2147',\n efDot: '\u2252',\n efr: '\uD835\uDD22',\n eg: '\u2A9A',\n egrave: '\u00E8',\n egs: '\u2A96',\n egsdot: '\u2A98',\n el: '\u2A99',\n elinters: '\u23E7',\n ell: '\u2113',\n els: '\u2A95',\n elsdot: '\u2A97',\n emacr: '\u0113',\n empty: '\u2205',\n emptyset: '\u2205',\n emptyv: '\u2205',\n emsp13: '\u2004',\n emsp14: '\u2005',\n emsp: '\u2003',\n eng: '\u014B',\n ensp: '\u2002',\n eogon: '\u0119',\n eopf: '\uD835\uDD56',\n epar: '\u22D5',\n eparsl: '\u29E3',\n eplus: '\u2A71',\n epsi: '\u03B5',\n epsilon: '\u03B5',\n epsiv: '\u03F5',\n eqcirc: '\u2256',\n eqcolon: '\u2255',\n eqsim: '\u2242',\n eqslantgtr: '\u2A96',\n eqslantless: '\u2A95',\n equals: '=',\n equest: '\u225F',\n equiv: '\u2261',\n equivDD: '\u2A78',\n eqvparsl: '\u29E5',\n erDot: '\u2253',\n erarr: '\u2971',\n escr: '\u212F',\n esdot: '\u2250',\n esim: '\u2242',\n eta: '\u03B7',\n eth: '\u00F0',\n euml: '\u00EB',\n euro: '\u20AC',\n excl: '!',\n exist: '\u2203',\n expectation: '\u2130',\n exponentiale: '\u2147',\n fallingdotseq: '\u2252',\n fcy: '\u0444',\n female: '\u2640',\n ffilig: '\uFB03',\n fflig: '\uFB00',\n ffllig: '\uFB04',\n ffr: '\uD835\uDD23',\n filig: '\uFB01',\n fjlig: 'fj',\n flat: '\u266D',\n fllig: '\uFB02',\n fltns: '\u25B1',\n fnof: '\u0192',\n fopf: '\uD835\uDD57',\n forall: '\u2200',\n fork: '\u22D4',\n forkv: '\u2AD9',\n fpartint: '\u2A0D',\n frac12: '\u00BD',\n frac13: '\u2153',\n frac14: '\u00BC',\n frac15: '\u2155',\n frac16: '\u2159',\n frac18: '\u215B',\n frac23: '\u2154',\n frac25: '\u2156',\n frac34: '\u00BE',\n frac35: '\u2157',\n frac38: '\u215C',\n frac45: '\u2158',\n frac56: '\u215A',\n frac58: '\u215D',\n frac78: '\u215E',\n frasl: '\u2044',\n frown: '\u2322',\n fscr: '\uD835\uDCBB',\n gE: '\u2267',\n gEl: '\u2A8C',\n gacute: '\u01F5',\n gamma: '\u03B3',\n gammad: '\u03DD',\n gap: '\u2A86',\n gbreve: '\u011F',\n gcirc: '\u011D',\n gcy: '\u0433',\n gdot: '\u0121',\n ge: '\u2265',\n gel: '\u22DB',\n geq: '\u2265',\n geqq: '\u2267',\n geqslant: '\u2A7E',\n ges: '\u2A7E',\n gescc: '\u2AA9',\n gesdot: '\u2A80',\n gesdoto: '\u2A82',\n gesdotol: '\u2A84',\n gesl: '\u22DB\uFE00',\n gesles: '\u2A94',\n gfr: '\uD835\uDD24',\n gg: '\u226B',\n ggg: '\u22D9',\n gimel: '\u2137',\n gjcy: '\u0453',\n gl: '\u2277',\n glE: '\u2A92',\n gla: '\u2AA5',\n glj: '\u2AA4',\n gnE: '\u2269',\n gnap: '\u2A8A',\n gnapprox: '\u2A8A',\n gne: '\u2A88',\n gneq: '\u2A88',\n gneqq: '\u2269',\n gnsim: '\u22E7',\n gopf: '\uD835\uDD58',\n grave: '`',\n gscr: '\u210A',\n gsim: '\u2273',\n gsime: '\u2A8E',\n gsiml: '\u2A90',\n gt: '>',\n gtcc: '\u2AA7',\n gtcir: '\u2A7A',\n gtdot: '\u22D7',\n gtlPar: '\u2995',\n gtquest: '\u2A7C',\n gtrapprox: '\u2A86',\n gtrarr: '\u2978',\n gtrdot: '\u22D7',\n gtreqless: '\u22DB',\n gtreqqless: '\u2A8C',\n gtrless: '\u2277',\n gtrsim: '\u2273',\n gvertneqq: '\u2269\uFE00',\n gvnE: '\u2269\uFE00',\n hArr: '\u21D4',\n hairsp: '\u200A',\n half: '\u00BD',\n hamilt: '\u210B',\n hardcy: '\u044A',\n harr: '\u2194',\n harrcir: '\u2948',\n harrw: '\u21AD',\n hbar: '\u210F',\n hcirc: '\u0125',\n hearts: '\u2665',\n heartsuit: '\u2665',\n hellip: '\u2026',\n hercon: '\u22B9',\n hfr: '\uD835\uDD25',\n hksearow: '\u2925',\n hkswarow: '\u2926',\n hoarr: '\u21FF',\n homtht: '\u223B',\n hookleftarrow: '\u21A9',\n hookrightarrow: '\u21AA',\n hopf: '\uD835\uDD59',\n horbar: '\u2015',\n hscr: '\uD835\uDCBD',\n hslash: '\u210F',\n hstrok: '\u0127',\n hybull: '\u2043',\n hyphen: '\u2010',\n iacute: '\u00ED',\n ic: '\u2063',\n icirc: '\u00EE',\n icy: '\u0438',\n iecy: '\u0435',\n iexcl: '\u00A1',\n iff: '\u21D4',\n ifr: '\uD835\uDD26',\n igrave: '\u00EC',\n ii: '\u2148',\n iiiint: '\u2A0C',\n iiint: '\u222D',\n iinfin: '\u29DC',\n iiota: '\u2129',\n ijlig: '\u0133',\n imacr: '\u012B',\n image: '\u2111',\n imagline: '\u2110',\n imagpart: '\u2111',\n imath: '\u0131',\n imof: '\u22B7',\n imped: '\u01B5',\n in: '\u2208',\n incare: '\u2105',\n infin: '\u221E',\n infintie: '\u29DD',\n inodot: '\u0131',\n int: '\u222B',\n intcal: '\u22BA',\n integers: '\u2124',\n intercal: '\u22BA',\n intlarhk: '\u2A17',\n intprod: '\u2A3C',\n iocy: '\u0451',\n iogon: '\u012F',\n iopf: '\uD835\uDD5A',\n iota: '\u03B9',\n iprod: '\u2A3C',\n iquest: '\u00BF',\n iscr: '\uD835\uDCBE',\n isin: '\u2208',\n isinE: '\u22F9',\n isindot: '\u22F5',\n isins: '\u22F4',\n isinsv: '\u22F3',\n isinv: '\u2208',\n it: '\u2062',\n itilde: '\u0129',\n iukcy: '\u0456',\n iuml: '\u00EF',\n jcirc: '\u0135',\n jcy: '\u0439',\n jfr: '\uD835\uDD27',\n jmath: '\u0237',\n jopf: '\uD835\uDD5B',\n jscr: '\uD835\uDCBF',\n jsercy: '\u0458',\n jukcy: '\u0454',\n kappa: '\u03BA',\n kappav: '\u03F0',\n kcedil: '\u0137',\n kcy: '\u043A',\n kfr: '\uD835\uDD28',\n kgreen: '\u0138',\n khcy: '\u0445',\n kjcy: '\u045C',\n kopf: '\uD835\uDD5C',\n kscr: '\uD835\uDCC0',\n lAarr: '\u21DA',\n lArr: '\u21D0',\n lAtail: '\u291B',\n lBarr: '\u290E',\n lE: '\u2266',\n lEg: '\u2A8B',\n lHar: '\u2962',\n lacute: '\u013A',\n laemptyv: '\u29B4',\n lagran: '\u2112',\n lambda: '\u03BB',\n lang: '\u27E8',\n langd: '\u2991',\n langle: '\u27E8',\n lap: '\u2A85',\n laquo: '\u00AB',\n larr: '\u2190',\n larrb: '\u21E4',\n larrbfs: '\u291F',\n larrfs: '\u291D',\n larrhk: '\u21A9',\n larrlp: '\u21AB',\n larrpl: '\u2939',\n larrsim: '\u2973',\n larrtl: '\u21A2',\n lat: '\u2AAB',\n latail: '\u2919',\n late: '\u2AAD',\n lates: '\u2AAD\uFE00',\n lbarr: '\u290C',\n lbbrk: '\u2772',\n lbrace: '{',\n lbrack: '[',\n lbrke: '\u298B',\n lbrksld: '\u298F',\n lbrkslu: '\u298D',\n lcaron: '\u013E',\n lcedil: '\u013C',\n lceil: '\u2308',\n lcub: '{',\n lcy: '\u043B',\n ldca: '\u2936',\n ldquo: '\u201C',\n ldquor: '\u201E',\n ldrdhar: '\u2967',\n ldrushar: '\u294B',\n ldsh: '\u21B2',\n le: '\u2264',\n leftarrow: '\u2190',\n leftarrowtail: '\u21A2',\n leftharpoondown: '\u21BD',\n leftharpoonup: '\u21BC',\n leftleftarrows: '\u21C7',\n leftrightarrow: '\u2194',\n leftrightarrows: '\u21C6',\n leftrightharpoons: '\u21CB',\n leftrightsquigarrow: '\u21AD',\n leftthreetimes: '\u22CB',\n leg: '\u22DA',\n leq: '\u2264',\n leqq: '\u2266',\n leqslant: '\u2A7D',\n les: '\u2A7D',\n lescc: '\u2AA8',\n lesdot: '\u2A7F',\n lesdoto: '\u2A81',\n lesdotor: '\u2A83',\n lesg: '\u22DA\uFE00',\n lesges: '\u2A93',\n lessapprox: '\u2A85',\n lessdot: '\u22D6',\n lesseqgtr: '\u22DA',\n lesseqqgtr: '\u2A8B',\n lessgtr: '\u2276',\n lesssim: '\u2272',\n lfisht: '\u297C',\n lfloor: '\u230A',\n lfr: '\uD835\uDD29',\n lg: '\u2276',\n lgE: '\u2A91',\n lhard: '\u21BD',\n lharu: '\u21BC',\n lharul: '\u296A',\n lhblk: '\u2584',\n ljcy: '\u0459',\n ll: '\u226A',\n llarr: '\u21C7',\n llcorner: '\u231E',\n llhard: '\u296B',\n lltri: '\u25FA',\n lmidot: '\u0140',\n lmoust: '\u23B0',\n lmoustache: '\u23B0',\n lnE: '\u2268',\n lnap: '\u2A89',\n lnapprox: '\u2A89',\n lne: '\u2A87',\n lneq: '\u2A87',\n lneqq: '\u2268',\n lnsim: '\u22E6',\n loang: '\u27EC',\n loarr: '\u21FD',\n lobrk: '\u27E6',\n longleftarrow: '\u27F5',\n longleftrightarrow: '\u27F7',\n longmapsto: '\u27FC',\n longrightarrow: '\u27F6',\n looparrowleft: '\u21AB',\n looparrowright: '\u21AC',\n lopar: '\u2985',\n lopf: '\uD835\uDD5D',\n loplus: '\u2A2D',\n lotimes: '\u2A34',\n lowast: '\u2217',\n lowbar: '_',\n loz: '\u25CA',\n lozenge: '\u25CA',\n lozf: '\u29EB',\n lpar: '(',\n lparlt: '\u2993',\n lrarr: '\u21C6',\n lrcorner: '\u231F',\n lrhar: '\u21CB',\n lrhard: '\u296D',\n lrm: '\u200E',\n lrtri: '\u22BF',\n lsaquo: '\u2039',\n lscr: '\uD835\uDCC1',\n lsh: '\u21B0',\n lsim: '\u2272',\n lsime: '\u2A8D',\n lsimg: '\u2A8F',\n lsqb: '[',\n lsquo: '\u2018',\n lsquor: '\u201A',\n lstrok: '\u0142',\n lt: '<',\n ltcc: '\u2AA6',\n ltcir: '\u2A79',\n ltdot: '\u22D6',\n lthree: '\u22CB',\n ltimes: '\u22C9',\n ltlarr: '\u2976',\n ltquest: '\u2A7B',\n ltrPar: '\u2996',\n ltri: '\u25C3',\n ltrie: '\u22B4',\n ltrif: '\u25C2',\n lurdshar: '\u294A',\n luruhar: '\u2966',\n lvertneqq: '\u2268\uFE00',\n lvnE: '\u2268\uFE00',\n mDDot: '\u223A',\n macr: '\u00AF',\n male: '\u2642',\n malt: '\u2720',\n maltese: '\u2720',\n map: '\u21A6',\n mapsto: '\u21A6',\n mapstodown: '\u21A7',\n mapstoleft: '\u21A4',\n mapstoup: '\u21A5',\n marker: '\u25AE',\n mcomma: '\u2A29',\n mcy: '\u043C',\n mdash: '\u2014',\n measuredangle: '\u2221',\n mfr: '\uD835\uDD2A',\n mho: '\u2127',\n micro: '\u00B5',\n mid: '\u2223',\n midast: '*',\n midcir: '\u2AF0',\n middot: '\u00B7',\n minus: '\u2212',\n minusb: '\u229F',\n minusd: '\u2238',\n minusdu: '\u2A2A',\n mlcp: '\u2ADB',\n mldr: '\u2026',\n mnplus: '\u2213',\n models: '\u22A7',\n mopf: '\uD835\uDD5E',\n mp: '\u2213',\n mscr: '\uD835\uDCC2',\n mstpos: '\u223E',\n mu: '\u03BC',\n multimap: '\u22B8',\n mumap: '\u22B8',\n nGg: '\u22D9\u0338',\n nGt: '\u226B\u20D2',\n nGtv: '\u226B\u0338',\n nLeftarrow: '\u21CD',\n nLeftrightarrow: '\u21CE',\n nLl: '\u22D8\u0338',\n nLt: '\u226A\u20D2',\n nLtv: '\u226A\u0338',\n nRightarrow: '\u21CF',\n nVDash: '\u22AF',\n nVdash: '\u22AE',\n nabla: '\u2207',\n nacute: '\u0144',\n nang: '\u2220\u20D2',\n nap: '\u2249',\n napE: '\u2A70\u0338',\n napid: '\u224B\u0338',\n napos: '\u0149',\n napprox: '\u2249',\n natur: '\u266E',\n natural: '\u266E',\n naturals: '\u2115',\n nbsp: '\u00A0',\n nbump: '\u224E\u0338',\n nbumpe: '\u224F\u0338',\n ncap: '\u2A43',\n ncaron: '\u0148',\n ncedil: '\u0146',\n ncong: '\u2247',\n ncongdot: '\u2A6D\u0338',\n ncup: '\u2A42',\n ncy: '\u043D',\n ndash: '\u2013',\n ne: '\u2260',\n neArr: '\u21D7',\n nearhk: '\u2924',\n nearr: '\u2197',\n nearrow: '\u2197',\n nedot: '\u2250\u0338',\n nequiv: '\u2262',\n nesear: '\u2928',\n nesim: '\u2242\u0338',\n nexist: '\u2204',\n nexists: '\u2204',\n nfr: '\uD835\uDD2B',\n ngE: '\u2267\u0338',\n nge: '\u2271',\n ngeq: '\u2271',\n ngeqq: '\u2267\u0338',\n ngeqslant: '\u2A7E\u0338',\n nges: '\u2A7E\u0338',\n ngsim: '\u2275',\n ngt: '\u226F',\n ngtr: '\u226F',\n nhArr: '\u21CE',\n nharr: '\u21AE',\n nhpar: '\u2AF2',\n ni: '\u220B',\n nis: '\u22FC',\n nisd: '\u22FA',\n niv: '\u220B',\n njcy: '\u045A',\n nlArr: '\u21CD',\n nlE: '\u2266\u0338',\n nlarr: '\u219A',\n nldr: '\u2025',\n nle: '\u2270',\n nleftarrow: '\u219A',\n nleftrightarrow: '\u21AE',\n nleq: '\u2270',\n nleqq: '\u2266\u0338',\n nleqslant: '\u2A7D\u0338',\n nles: '\u2A7D\u0338',\n nless: '\u226E',\n nlsim: '\u2274',\n nlt: '\u226E',\n nltri: '\u22EA',\n nltrie: '\u22EC',\n nmid: '\u2224',\n nopf: '\uD835\uDD5F',\n not: '\u00AC',\n notin: '\u2209',\n notinE: '\u22F9\u0338',\n notindot: '\u22F5\u0338',\n notinva: '\u2209',\n notinvb: '\u22F7',\n notinvc: '\u22F6',\n notni: '\u220C',\n notniva: '\u220C',\n notnivb: '\u22FE',\n notnivc: '\u22FD',\n npar: '\u2226',\n nparallel: '\u2226',\n nparsl: '\u2AFD\u20E5',\n npart: '\u2202\u0338',\n npolint: '\u2A14',\n npr: '\u2280',\n nprcue: '\u22E0',\n npre: '\u2AAF\u0338',\n nprec: '\u2280',\n npreceq: '\u2AAF\u0338',\n nrArr: '\u21CF',\n nrarr: '\u219B',\n nrarrc: '\u2933\u0338',\n nrarrw: '\u219D\u0338',\n nrightarrow: '\u219B',\n nrtri: '\u22EB',\n nrtrie: '\u22ED',\n nsc: '\u2281',\n nsccue: '\u22E1',\n nsce: '\u2AB0\u0338',\n nscr: '\uD835\uDCC3',\n nshortmid: '\u2224',\n nshortparallel: '\u2226',\n nsim: '\u2241',\n nsime: '\u2244',\n nsimeq: '\u2244',\n nsmid: '\u2224',\n nspar: '\u2226',\n nsqsube: '\u22E2',\n nsqsupe: '\u22E3',\n nsub: '\u2284',\n nsubE: '\u2AC5\u0338',\n nsube: '\u2288',\n nsubset: '\u2282\u20D2',\n nsubseteq: '\u2288',\n nsubseteqq: '\u2AC5\u0338',\n nsucc: '\u2281',\n nsucceq: '\u2AB0\u0338',\n nsup: '\u2285',\n nsupE: '\u2AC6\u0338',\n nsupe: '\u2289',\n nsupset: '\u2283\u20D2',\n nsupseteq: '\u2289',\n nsupseteqq: '\u2AC6\u0338',\n ntgl: '\u2279',\n ntilde: '\u00F1',\n ntlg: '\u2278',\n ntriangleleft: '\u22EA',\n ntrianglelefteq: '\u22EC',\n ntriangleright: '\u22EB',\n ntrianglerighteq: '\u22ED',\n nu: '\u03BD',\n num: '#',\n numero: '\u2116',\n numsp: '\u2007',\n nvDash: '\u22AD',\n nvHarr: '\u2904',\n nvap: '\u224D\u20D2',\n nvdash: '\u22AC',\n nvge: '\u2265\u20D2',\n nvgt: '>\u20D2',\n nvinfin: '\u29DE',\n nvlArr: '\u2902',\n nvle: '\u2264\u20D2',\n nvlt: '<\u20D2',\n nvltrie: '\u22B4\u20D2',\n nvrArr: '\u2903',\n nvrtrie: '\u22B5\u20D2',\n nvsim: '\u223C\u20D2',\n nwArr: '\u21D6',\n nwarhk: '\u2923',\n nwarr: '\u2196',\n nwarrow: '\u2196',\n nwnear: '\u2927',\n oS: '\u24C8',\n oacute: '\u00F3',\n oast: '\u229B',\n ocir: '\u229A',\n ocirc: '\u00F4',\n ocy: '\u043E',\n odash: '\u229D',\n odblac: '\u0151',\n odiv: '\u2A38',\n odot: '\u2299',\n odsold: '\u29BC',\n oelig: '\u0153',\n ofcir: '\u29BF',\n ofr: '\uD835\uDD2C',\n ogon: '\u02DB',\n ograve: '\u00F2',\n ogt: '\u29C1',\n ohbar: '\u29B5',\n ohm: '\u03A9',\n oint: '\u222E',\n olarr: '\u21BA',\n olcir: '\u29BE',\n olcross: '\u29BB',\n oline: '\u203E',\n olt: '\u29C0',\n omacr: '\u014D',\n omega: '\u03C9',\n omicron: '\u03BF',\n omid: '\u29B6',\n ominus: '\u2296',\n oopf: '\uD835\uDD60',\n opar: '\u29B7',\n operp: '\u29B9',\n oplus: '\u2295',\n or: '\u2228',\n orarr: '\u21BB',\n ord: '\u2A5D',\n order: '\u2134',\n orderof: '\u2134',\n ordf: '\u00AA',\n ordm: '\u00BA',\n origof: '\u22B6',\n oror: '\u2A56',\n orslope: '\u2A57',\n orv: '\u2A5B',\n oscr: '\u2134',\n oslash: '\u00F8',\n osol: '\u2298',\n otilde: '\u00F5',\n otimes: '\u2297',\n otimesas: '\u2A36',\n ouml: '\u00F6',\n ovbar: '\u233D',\n par: '\u2225',\n para: '\u00B6',\n parallel: '\u2225',\n parsim: '\u2AF3',\n parsl: '\u2AFD',\n part: '\u2202',\n pcy: '\u043F',\n percnt: '%',\n period: '.',\n permil: '\u2030',\n perp: '\u22A5',\n pertenk: '\u2031',\n pfr: '\uD835\uDD2D',\n phi: '\u03C6',\n phiv: '\u03D5',\n phmmat: '\u2133',\n phone: '\u260E',\n pi: '\u03C0',\n pitchfork: '\u22D4',\n piv: '\u03D6',\n planck: '\u210F',\n planckh: '\u210E',\n plankv: '\u210F',\n plus: '+',\n plusacir: '\u2A23',\n plusb: '\u229E',\n pluscir: '\u2A22',\n plusdo: '\u2214',\n plusdu: '\u2A25',\n pluse: '\u2A72',\n plusmn: '\u00B1',\n plussim: '\u2A26',\n plustwo: '\u2A27',\n pm: '\u00B1',\n pointint: '\u2A15',\n popf: '\uD835\uDD61',\n pound: '\u00A3',\n pr: '\u227A',\n prE: '\u2AB3',\n prap: '\u2AB7',\n prcue: '\u227C',\n pre: '\u2AAF',\n prec: '\u227A',\n precapprox: '\u2AB7',\n preccurlyeq: '\u227C',\n preceq: '\u2AAF',\n precnapprox: '\u2AB9',\n precneqq: '\u2AB5',\n precnsim: '\u22E8',\n precsim: '\u227E',\n prime: '\u2032',\n primes: '\u2119',\n prnE: '\u2AB5',\n prnap: '\u2AB9',\n prnsim: '\u22E8',\n prod: '\u220F',\n profalar: '\u232E',\n profline: '\u2312',\n profsurf: '\u2313',\n prop: '\u221D',\n propto: '\u221D',\n prsim: '\u227E',\n prurel: '\u22B0',\n pscr: '\uD835\uDCC5',\n psi: '\u03C8',\n puncsp: '\u2008',\n qfr: '\uD835\uDD2E',\n qint: '\u2A0C',\n qopf: '\uD835\uDD62',\n qprime: '\u2057',\n qscr: '\uD835\uDCC6',\n quaternions: '\u210D',\n quatint: '\u2A16',\n quest: '?',\n questeq: '\u225F',\n quot: '\"',\n rAarr: '\u21DB',\n rArr: '\u21D2',\n rAtail: '\u291C',\n rBarr: '\u290F',\n rHar: '\u2964',\n race: '\u223D\u0331',\n racute: '\u0155',\n radic: '\u221A',\n raemptyv: '\u29B3',\n rang: '\u27E9',\n rangd: '\u2992',\n range: '\u29A5',\n rangle: '\u27E9',\n raquo: '\u00BB',\n rarr: '\u2192',\n rarrap: '\u2975',\n rarrb: '\u21E5',\n rarrbfs: '\u2920',\n rarrc: '\u2933',\n rarrfs: '\u291E',\n rarrhk: '\u21AA',\n rarrlp: '\u21AC',\n rarrpl: '\u2945',\n rarrsim: '\u2974',\n rarrtl: '\u21A3',\n rarrw: '\u219D',\n ratail: '\u291A',\n ratio: '\u2236',\n rationals: '\u211A',\n rbarr: '\u290D',\n rbbrk: '\u2773',\n rbrace: '}',\n rbrack: ']',\n rbrke: '\u298C',\n rbrksld: '\u298E',\n rbrkslu: '\u2990',\n rcaron: '\u0159',\n rcedil: '\u0157',\n rceil: '\u2309',\n rcub: '}',\n rcy: '\u0440',\n rdca: '\u2937',\n rdldhar: '\u2969',\n rdquo: '\u201D',\n rdquor: '\u201D',\n rdsh: '\u21B3',\n real: '\u211C',\n realine: '\u211B',\n realpart: '\u211C',\n reals: '\u211D',\n rect: '\u25AD',\n reg: '\u00AE',\n rfisht: '\u297D',\n rfloor: '\u230B',\n rfr: '\uD835\uDD2F',\n rhard: '\u21C1',\n rharu: '\u21C0',\n rharul: '\u296C',\n rho: '\u03C1',\n rhov: '\u03F1',\n rightarrow: '\u2192',\n rightarrowtail: '\u21A3',\n rightharpoondown: '\u21C1',\n rightharpoonup: '\u21C0',\n rightleftarrows: '\u21C4',\n rightleftharpoons: '\u21CC',\n rightrightarrows: '\u21C9',\n rightsquigarrow: '\u219D',\n rightthreetimes: '\u22CC',\n ring: '\u02DA',\n risingdotseq: '\u2253',\n rlarr: '\u21C4',\n rlhar: '\u21CC',\n rlm: '\u200F',\n rmoust: '\u23B1',\n rmoustache: '\u23B1',\n rnmid: '\u2AEE',\n roang: '\u27ED',\n roarr: '\u21FE',\n robrk: '\u27E7',\n ropar: '\u2986',\n ropf: '\uD835\uDD63',\n roplus: '\u2A2E',\n rotimes: '\u2A35',\n rpar: ')',\n rpargt: '\u2994',\n rppolint: '\u2A12',\n rrarr: '\u21C9',\n rsaquo: '\u203A',\n rscr: '\uD835\uDCC7',\n rsh: '\u21B1',\n rsqb: ']',\n rsquo: '\u2019',\n rsquor: '\u2019',\n rthree: '\u22CC',\n rtimes: '\u22CA',\n rtri: '\u25B9',\n rtrie: '\u22B5',\n rtrif: '\u25B8',\n rtriltri: '\u29CE',\n ruluhar: '\u2968',\n rx: '\u211E',\n sacute: '\u015B',\n sbquo: '\u201A',\n sc: '\u227B',\n scE: '\u2AB4',\n scap: '\u2AB8',\n scaron: '\u0161',\n sccue: '\u227D',\n sce: '\u2AB0',\n scedil: '\u015F',\n scirc: '\u015D',\n scnE: '\u2AB6',\n scnap: '\u2ABA',\n scnsim: '\u22E9',\n scpolint: '\u2A13',\n scsim: '\u227F',\n scy: '\u0441',\n sdot: '\u22C5',\n sdotb: '\u22A1',\n sdote: '\u2A66',\n seArr: '\u21D8',\n searhk: '\u2925',\n searr: '\u2198',\n searrow: '\u2198',\n sect: '\u00A7',\n semi: ';',\n seswar: '\u2929',\n setminus: '\u2216',\n setmn: '\u2216',\n sext: '\u2736',\n sfr: '\uD835\uDD30',\n sfrown: '\u2322',\n sharp: '\u266F',\n shchcy: '\u0449',\n shcy: '\u0448',\n shortmid: '\u2223',\n shortparallel: '\u2225',\n shy: '\u00AD',\n sigma: '\u03C3',\n sigmaf: '\u03C2',\n sigmav: '\u03C2',\n sim: '\u223C',\n simdot: '\u2A6A',\n sime: '\u2243',\n simeq: '\u2243',\n simg: '\u2A9E',\n simgE: '\u2AA0',\n siml: '\u2A9D',\n simlE: '\u2A9F',\n simne: '\u2246',\n simplus: '\u2A24',\n simrarr: '\u2972',\n slarr: '\u2190',\n smallsetminus: '\u2216',\n smashp: '\u2A33',\n smeparsl: '\u29E4',\n smid: '\u2223',\n smile: '\u2323',\n smt: '\u2AAA',\n smte: '\u2AAC',\n smtes: '\u2AAC\uFE00',\n softcy: '\u044C',\n sol: '/',\n solb: '\u29C4',\n solbar: '\u233F',\n sopf: '\uD835\uDD64',\n spades: '\u2660',\n spadesuit: '\u2660',\n spar: '\u2225',\n sqcap: '\u2293',\n sqcaps: '\u2293\uFE00',\n sqcup: '\u2294',\n sqcups: '\u2294\uFE00',\n sqsub: '\u228F',\n sqsube: '\u2291',\n sqsubset: '\u228F',\n sqsubseteq: '\u2291',\n sqsup: '\u2290',\n sqsupe: '\u2292',\n sqsupset: '\u2290',\n sqsupseteq: '\u2292',\n squ: '\u25A1',\n square: '\u25A1',\n squarf: '\u25AA',\n squf: '\u25AA',\n srarr: '\u2192',\n sscr: '\uD835\uDCC8',\n ssetmn: '\u2216',\n ssmile: '\u2323',\n sstarf: '\u22C6',\n star: '\u2606',\n starf: '\u2605',\n straightepsilon: '\u03F5',\n straightphi: '\u03D5',\n strns: '\u00AF',\n sub: '\u2282',\n subE: '\u2AC5',\n subdot: '\u2ABD',\n sube: '\u2286',\n subedot: '\u2AC3',\n submult: '\u2AC1',\n subnE: '\u2ACB',\n subne: '\u228A',\n subplus: '\u2ABF',\n subrarr: '\u2979',\n subset: '\u2282',\n subseteq: '\u2286',\n subseteqq: '\u2AC5',\n subsetneq: '\u228A',\n subsetneqq: '\u2ACB',\n subsim: '\u2AC7',\n subsub: '\u2AD5',\n subsup: '\u2AD3',\n succ: '\u227B',\n succapprox: '\u2AB8',\n succcurlyeq: '\u227D',\n succeq: '\u2AB0',\n succnapprox: '\u2ABA',\n succneqq: '\u2AB6',\n succnsim: '\u22E9',\n succsim: '\u227F',\n sum: '\u2211',\n sung: '\u266A',\n sup1: '\u00B9',\n sup2: '\u00B2',\n sup3: '\u00B3',\n sup: '\u2283',\n supE: '\u2AC6',\n supdot: '\u2ABE',\n supdsub: '\u2AD8',\n supe: '\u2287',\n supedot: '\u2AC4',\n suphsol: '\u27C9',\n suphsub: '\u2AD7',\n suplarr: '\u297B',\n supmult: '\u2AC2',\n supnE: '\u2ACC',\n supne: '\u228B',\n supplus: '\u2AC0',\n supset: '\u2283',\n supseteq: '\u2287',\n supseteqq: '\u2AC6',\n supsetneq: '\u228B',\n supsetneqq: '\u2ACC',\n supsim: '\u2AC8',\n supsub: '\u2AD4',\n supsup: '\u2AD6',\n swArr: '\u21D9',\n swarhk: '\u2926',\n swarr: '\u2199',\n swarrow: '\u2199',\n swnwar: '\u292A',\n szlig: '\u00DF',\n target: '\u2316',\n tau: '\u03C4',\n tbrk: '\u23B4',\n tcaron: '\u0165',\n tcedil: '\u0163',\n tcy: '\u0442',\n tdot: '\u20DB',\n telrec: '\u2315',\n tfr: '\uD835\uDD31',\n there4: '\u2234',\n therefore: '\u2234',\n theta: '\u03B8',\n thetasym: '\u03D1',\n thetav: '\u03D1',\n thickapprox: '\u2248',\n thicksim: '\u223C',\n thinsp: '\u2009',\n thkap: '\u2248',\n thksim: '\u223C',\n thorn: '\u00FE',\n tilde: '\u02DC',\n times: '\u00D7',\n timesb: '\u22A0',\n timesbar: '\u2A31',\n timesd: '\u2A30',\n tint: '\u222D',\n toea: '\u2928',\n top: '\u22A4',\n topbot: '\u2336',\n topcir: '\u2AF1',\n topf: '\uD835\uDD65',\n topfork: '\u2ADA',\n tosa: '\u2929',\n tprime: '\u2034',\n trade: '\u2122',\n triangle: '\u25B5',\n triangledown: '\u25BF',\n triangleleft: '\u25C3',\n trianglelefteq: '\u22B4',\n triangleq: '\u225C',\n triangleright: '\u25B9',\n trianglerighteq: '\u22B5',\n tridot: '\u25EC',\n trie: '\u225C',\n triminus: '\u2A3A',\n triplus: '\u2A39',\n trisb: '\u29CD',\n tritime: '\u2A3B',\n trpezium: '\u23E2',\n tscr: '\uD835\uDCC9',\n tscy: '\u0446',\n tshcy: '\u045B',\n tstrok: '\u0167',\n twixt: '\u226C',\n twoheadleftarrow: '\u219E',\n twoheadrightarrow: '\u21A0',\n uArr: '\u21D1',\n uHar: '\u2963',\n uacute: '\u00FA',\n uarr: '\u2191',\n ubrcy: '\u045E',\n ubreve: '\u016D',\n ucirc: '\u00FB',\n ucy: '\u0443',\n udarr: '\u21C5',\n udblac: '\u0171',\n udhar: '\u296E',\n ufisht: '\u297E',\n ufr: '\uD835\uDD32',\n ugrave: '\u00F9',\n uharl: '\u21BF',\n uharr: '\u21BE',\n uhblk: '\u2580',\n ulcorn: '\u231C',\n ulcorner: '\u231C',\n ulcrop: '\u230F',\n ultri: '\u25F8',\n umacr: '\u016B',\n uml: '\u00A8',\n uogon: '\u0173',\n uopf: '\uD835\uDD66',\n uparrow: '\u2191',\n updownarrow: '\u2195',\n upharpoonleft: '\u21BF',\n upharpoonright: '\u21BE',\n uplus: '\u228E',\n upsi: '\u03C5',\n upsih: '\u03D2',\n upsilon: '\u03C5',\n upuparrows: '\u21C8',\n urcorn: '\u231D',\n urcorner: '\u231D',\n urcrop: '\u230E',\n uring: '\u016F',\n urtri: '\u25F9',\n uscr: '\uD835\uDCCA',\n utdot: '\u22F0',\n utilde: '\u0169',\n utri: '\u25B5',\n utrif: '\u25B4',\n uuarr: '\u21C8',\n uuml: '\u00FC',\n uwangle: '\u29A7',\n vArr: '\u21D5',\n vBar: '\u2AE8',\n vBarv: '\u2AE9',\n vDash: '\u22A8',\n vangrt: '\u299C',\n varepsilon: '\u03F5',\n varkappa: '\u03F0',\n varnothing: '\u2205',\n varphi: '\u03D5',\n varpi: '\u03D6',\n varpropto: '\u221D',\n varr: '\u2195',\n varrho: '\u03F1',\n varsigma: '\u03C2',\n varsubsetneq: '\u228A\uFE00',\n varsubsetneqq: '\u2ACB\uFE00',\n varsupsetneq: '\u228B\uFE00',\n varsupsetneqq: '\u2ACC\uFE00',\n vartheta: '\u03D1',\n vartriangleleft: '\u22B2',\n vartriangleright: '\u22B3',\n vcy: '\u0432',\n vdash: '\u22A2',\n vee: '\u2228',\n veebar: '\u22BB',\n veeeq: '\u225A',\n vellip: '\u22EE',\n verbar: '|',\n vert: '|',\n vfr: '\uD835\uDD33',\n vltri: '\u22B2',\n vnsub: '\u2282\u20D2',\n vnsup: '\u2283\u20D2',\n vopf: '\uD835\uDD67',\n vprop: '\u221D',\n vrtri: '\u22B3',\n vscr: '\uD835\uDCCB',\n vsubnE: '\u2ACB\uFE00',\n vsubne: '\u228A\uFE00',\n vsupnE: '\u2ACC\uFE00',\n vsupne: '\u228B\uFE00',\n vzigzag: '\u299A',\n wcirc: '\u0175',\n wedbar: '\u2A5F',\n wedge: '\u2227',\n wedgeq: '\u2259',\n weierp: '\u2118',\n wfr: '\uD835\uDD34',\n wopf: '\uD835\uDD68',\n wp: '\u2118',\n wr: '\u2240',\n wreath: '\u2240',\n wscr: '\uD835\uDCCC',\n xcap: '\u22C2',\n xcirc: '\u25EF',\n xcup: '\u22C3',\n xdtri: '\u25BD',\n xfr: '\uD835\uDD35',\n xhArr: '\u27FA',\n xharr: '\u27F7',\n xi: '\u03BE',\n xlArr: '\u27F8',\n xlarr: '\u27F5',\n xmap: '\u27FC',\n xnis: '\u22FB',\n xodot: '\u2A00',\n xopf: '\uD835\uDD69',\n xoplus: '\u2A01',\n xotime: '\u2A02',\n xrArr: '\u27F9',\n xrarr: '\u27F6',\n xscr: '\uD835\uDCCD',\n xsqcup: '\u2A06',\n xuplus: '\u2A04',\n xutri: '\u25B3',\n xvee: '\u22C1',\n xwedge: '\u22C0',\n yacute: '\u00FD',\n yacy: '\u044F',\n ycirc: '\u0177',\n ycy: '\u044B',\n yen: '\u00A5',\n yfr: '\uD835\uDD36',\n yicy: '\u0457',\n yopf: '\uD835\uDD6A',\n yscr: '\uD835\uDCCE',\n yucy: '\u044E',\n yuml: '\u00FF',\n zacute: '\u017A',\n zcaron: '\u017E',\n zcy: '\u0437',\n zdot: '\u017C',\n zeetrf: '\u2128',\n zeta: '\u03B6',\n zfr: '\uD835\uDD37',\n zhcy: '\u0436',\n zigrarr: '\u21DD',\n zopf: '\uD835\uDD6B',\n zscr: '\uD835\uDCCF',\n zwj: '\u200D',\n zwnj: '\u200C'\n}\n", "import {characterEntities} from 'character-entities'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Decode a single character reference (without the `&` or `;`).\n * You probably only need this when you\u2019re 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 * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n\n let max\n /** @type {(code: Code) => code is number} */\n\n let test\n return start\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 /** @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\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\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\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n /** @type {State} */\n\n function value(code) {\n /** @type {Token} */\n let token\n\n if (code === 59 && size) {\n token = effects.exit('characterReferenceValue')\n\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n\n return nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n\n const closingFenceConstruct = {\n tokenize: tokenizeClosingFence,\n partial: true\n }\n /** @type {Construct} */\n\n const nonLazyLine = {\n tokenize: tokenizeNonLazyLine,\n partial: true\n }\n const tail = this.events[this.events.length - 1]\n const initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let sizeOpen = 0\n /** @type {NonNullable<Code>} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n marker = code\n return sequenceOpen(code)\n }\n /** @type {State} */\n\n function sequenceOpen(code) {\n if (code === marker) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n\n effects.exit('codeFencedFenceSequence')\n return sizeOpen < 3\n ? nok(code)\n : factorySpace(effects, infoOpen, 'whitespace')(code)\n }\n /** @type {State} */\n\n function infoOpen(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n /** @type {State} */\n\n function info(code) {\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, infoAfter, 'whitespace')(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return info\n }\n /** @type {State} */\n\n function infoAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\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 openAfter(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return meta\n }\n /** @type {State} */\n\n function openAfter(code) {\n effects.exit('codeFencedFence')\n return self.interrupt ? ok(code) : contentStart(code)\n }\n /** @type {State} */\n\n function contentStart(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(\n nonLazyLine,\n effects.attempt(\n closingFenceConstruct,\n after,\n initialPrefix\n ? factorySpace(\n effects,\n contentStart,\n 'linePrefix',\n initialPrefix + 1\n )\n : contentStart\n ),\n after\n )(code)\n }\n\n effects.enter('codeFlowValue')\n return contentContinue(code)\n }\n /** @type {State} */\n\n function contentContinue(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return contentStart(code)\n }\n\n effects.consume(code)\n return contentContinue\n }\n /** @type {State} */\n\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n /** @type {Tokenizer} */\n\n function tokenizeNonLazyLine(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n /** @type {State} */\n\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n }\n /** @type {Tokenizer} */\n\n function tokenizeClosingFence(effects, ok, nok) {\n let size = 0\n return factorySpace(\n effects,\n closingSequenceStart,\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n /** @type {State} */\n\n function closingSequenceStart(code) {\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return closingSequence(code)\n }\n /** @type {State} */\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return closingSequence\n }\n\n if (size < sizeOpen) return nok(code)\n effects.exit('codeFencedFenceSequence')\n return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n }\n /** @type {State} */\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n\n return nok(code)\n }\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n}\n/** @type {Construct} */\n\nconst indentedContent = {\n tokenize: tokenizeIndentedContent,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeIndented')\n return factorySpace(effects, afterStartPrefix, 'linePrefix', 4 + 1)(code)\n }\n /** @type {State} */\n\n function afterStartPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? afterPrefix(code)\n : nok(code)\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(indentedContent, afterPrefix, after)(code)\n }\n\n effects.enter('codeFlowValue')\n return content(code)\n }\n /** @type {State} */\n\n function content(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return afterPrefix(code)\n }\n\n effects.consume(code)\n return content\n }\n /** @type {State} */\n\n function after(code) {\n effects.exit('codeIndented')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n // If this is a lazy line, it can\u2019t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? ok(code)\n : markdownLineEnding(code)\n ? start(code)\n : nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n/** @type {Resolver} */\n\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n\n let index\n /** @type {number|undefined} */\n\n let enter // If we start and end with an EOL or a space.\n\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex // And we have data.\n\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 } // Merge adjacent spaces and data.\n\n index = headEnterIndex - 1\n tailExitIndex++\n\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n\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\n enter = undefined\n }\n }\n\n return events\n}\n/** @type {Previous} */\n\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n\n let size\n /** @type {Token} */\n\n let token\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return openingSequence(code)\n }\n /** @type {State} */\n\n function openingSequence(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return openingSequence\n }\n\n effects.exit('codeTextSequence')\n return gap(code)\n }\n /** @type {State} */\n\n function gap(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n } // Closing fence?\n // Could also be data.\n\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return closingSequence(code)\n } // Tabs don\u2019t work, and virtual spaces don\u2019t make sense.\n\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return gap\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return gap\n } // Data.\n\n effects.enter('codeTextData')\n return data(code)\n } // In code.\n\n /** @type {State} */\n\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return gap(code)\n }\n\n effects.consume(code)\n return data\n } // Closing fence.\n\n /** @type {State} */\n\n function closingSequence(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return closingSequence\n } // Done!\n\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n } // More or less accents: mark as data.\n\n token.type = 'codeTextData'\n return data(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {splice} from 'micromark-util-chunked'\n\n/**\n * Tokenize subcontent.\n *\n * @param {Event[]} events\n * @returns {boolean}\n */\nexport function subtokenize(events) {\n /** @type {Record<string, number>} */\n const jumps = {}\n let index = -1\n /** @type {Event} */\n\n let event\n /** @type {number|undefined} */\n\n let lineIndex\n /** @type {number} */\n\n let otherIndex\n /** @type {Event} */\n\n let otherEvent\n /** @type {Event[]} */\n\n let parameters\n /** @type {Event[]} */\n\n let subevents\n /** @type {boolean|undefined} */\n\n let more\n\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n\n event = events[index] // 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\n if (\n index &&\n event[1].type === 'chunkFlow' &&\n events[index - 1][1].type === 'listItemPrefix'\n ) {\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'lineEndingBlank'\n ) {\n otherIndex += 2\n }\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'content'\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break\n }\n\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n } // Enter.\n\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 } // Exit.\n else if (event[1]._container) {\n otherIndex = index\n lineIndex = undefined\n\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n\n if (\n otherEvent[1].type === 'lineEnding' ||\n otherEvent[1].type === 'lineEndingBlank'\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n }\n\n otherEvent[1].type = 'lineEnding'\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n\n if (lineIndex) {\n // Fix position.\n event[1].end = Object.assign({}, events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n splice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n\n return !more\n}\n/**\n * Tokenize embedded tokens.\n *\n * @param {Event[]} events\n * @param {number} eventIndex\n * @returns {Record<string, number>}\n */\n\nfunction subcontent(events, eventIndex) {\n const token = events[eventIndex][1]\n const context = events[eventIndex][2]\n let startPosition = eventIndex - 1\n /** @type {number[]} */\n\n const startPositions = []\n const tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n const childEvents = tokenizer.events\n /** @type {[number, number][]} */\n\n const jumps = []\n /** @type {Record<string, number>} */\n\n const gaps = {}\n /** @type {Chunk[]} */\n\n let stream\n /** @type {Token|undefined} */\n\n let previous\n let index = -1\n /** @type {Token|undefined} */\n\n let current = token\n let adjust = 0\n let start = 0\n const breaks = [start] // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n\n while (current) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== current) {\n // Empty.\n }\n\n startPositions.push(startPosition)\n\n if (!current._tokenizer) {\n stream = context.sliceStream(current)\n\n if (!current.next) {\n stream.push(null)\n }\n\n if (previous) {\n tokenizer.defineSkip(current.start)\n }\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n\n tokenizer.write(stream)\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n } // Unravel the next token.\n\n previous = current\n current = current.next\n } // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n\n current = token\n\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' &&\n childEvents[index - 1][0] === 'enter' &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n start = index + 1\n breaks.push(start) // Help GC.\n\n current._tokenizer = undefined\n current.previous = undefined\n current = current.next\n }\n } // Help GC.\n\n tokenizer.events = [] // If there\u2019s one more token (which is the cases for lines that end in an\n // EOF), that\u2019s perfect: the last point we found starts it.\n // If there isn\u2019t then make sure any remaining content is added to it.\n\n if (current) {\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n } else {\n breaks.pop()\n } // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren\u2019t affected.\n\n index = breaks.length\n\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1])\n const start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n splice(events, start, 2, slice)\n }\n\n index = -1\n\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\n return gaps\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n tokenize: tokenizeContent,\n resolve: resolveContent\n}\n/** @type {Construct} */\n\nconst continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n}\n/**\n * Content is transparent: it\u2019s 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 */\n\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContent(effects, ok) {\n /** @type {Token} */\n let previous\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return data(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null) {\n return contentEnd(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.check(\n continuationConstruct,\n contentContinue,\n contentEnd\n )(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n /** @type {State} */\n\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\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 data\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this\n return startLookahead\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 /** @type {State} */\n\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n const tail = self.events[self.events.length - 1]\n\n if (\n !self.parser.constructs.disable.null.includes('codeIndented') &&\n tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ) {\n return ok(code)\n }\n\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n asciiControl,\n markdownLineEndingOrSpace,\n markdownLineEnding\n} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} literalType\n * @param {string} literalMarkerType\n * @param {string} rawType\n * @param {string} stringType\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryDestination(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n const limit = max || Number.POSITIVE_INFINITY\n let balance = 0\n return start\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 destinationEnclosedBefore\n }\n\n if (code === null || code === 41 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationRaw(code)\n }\n /** @type {State} */\n\n function destinationEnclosedBefore(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\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationEnclosed(code)\n }\n /** @type {State} */\n\n function destinationEnclosed(code) {\n if (code === 62) {\n effects.exit('chunkString')\n effects.exit(stringType)\n return destinationEnclosedBefore(code)\n }\n\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return code === 92 ? destinationEnclosedEscape : destinationEnclosed\n }\n /** @type {State} */\n\n function destinationEnclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code)\n return destinationEnclosed\n }\n\n return destinationEnclosed(code)\n }\n /** @type {State} */\n\n function destinationRaw(code) {\n if (code === 40) {\n if (++balance > limit) return nok(code)\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === 41) {\n if (!balance--) {\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n if (balance) return nok(code)\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n if (asciiControl(code)) return nok(code)\n effects.consume(code)\n return code === 92 ? destinationRawEscape : destinationRaw\n }\n /** @type {State} */\n\n function destinationRawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code)\n return destinationRaw\n }\n\n return destinationRaw(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @this {TokenizeContext}\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this\n let size = 0\n /** @type {boolean} */\n\n let data\n return start\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 /** @type {State} */\n\n function atBreak(code) {\n if (\n code === null ||\n code === 91 ||\n (code === 93 && !data) ||\n /* To do: remove in the future once we\u2019ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn\u2019t need this */\n\n /* Hidden footnotes hook */\n\n /* c8 ignore next 3 */\n (code === 94 &&\n !size &&\n '_hiddenFootnoteSupport' in self.parser.constructs) ||\n size > 999\n ) {\n return nok(code)\n }\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 if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return atBreak\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return label(code)\n }\n /** @type {State} */\n\n function label(code) {\n if (\n code === null ||\n code === 91 ||\n code === 93 ||\n markdownLineEnding(code) ||\n size++ > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n\n effects.consume(code)\n data = data || !markdownSpace(code)\n return code === 92 ? labelEscape : label\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 label\n }\n\n return label(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable<Code>} */\n let marker\n return start\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 marker = code === 40 ? 41 : code\n return atFirstTitleBreak\n }\n /** @type {State} */\n\n function atFirstTitleBreak(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\n effects.enter(stringType)\n return atTitleBreak(code)\n }\n /** @type {State} */\n\n function atTitleBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return atFirstTitleBreak(marker)\n }\n\n if (code === null) {\n return nok(code)\n } // Note: blank lines can\u2019t exist in content.\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, atTitleBreak, 'linePrefix')\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return title(code)\n }\n /** @type {State} */\n\n function title(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atTitleBreak(code)\n }\n\n effects.consume(code)\n return code === 92 ? titleEscape : title\n }\n /** @type {State} */\n\n function titleEscape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return title\n }\n\n return title(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen\n return start\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 seen = true\n return start\n }\n\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n\n return ok(code)\n }\n}\n", "/**\n * Normalize an identifier (such as used in definitions).\n *\n * @param {string} value\n * @returns {string}\n */\nexport function normalizeIdentifier(value) {\n return (\n value // Collapse Markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n .replace(/^ | $/g, '') // Some characters are considered \u201Cuppercase\u201D, 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()\n .toUpperCase()\n )\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\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 {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\n/** @type {Construct} */\n\nconst titleConstruct = {\n tokenize: tokenizeTitle,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this\n /** @type {string} */\n\n let identifier\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('definition')\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n /** @type {State} */\n\n function labelAfter(code) {\n identifier = normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker') // Note: blank lines can\u2019t exist in content.\n\n return factoryWhitespace(\n effects,\n factoryDestination(\n effects,\n effects.attempt(\n titleConstruct,\n factorySpace(effects, after, 'whitespace'),\n factorySpace(effects, after, 'whitespace')\n ),\n nok,\n 'definitionDestination',\n 'definitionDestinationLiteral',\n 'definitionDestinationLiteralMarker',\n 'definitionDestinationRaw',\n 'definitionDestinationString'\n )\n )\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n if (!self.parser.defined.includes(identifier)) {\n self.parser.defined.push(identifier)\n }\n\n return ok(code)\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeTitle(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, before)(code)\n : nok(code)\n }\n /** @type {State} */\n\n function before(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factorySpace(effects, after, 'whitespace'),\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (markdownLineEnding(code)) {\n effects.exit('escapeMarker')\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n/** @type {Resolver} */\n\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2\n let contentStart = 3\n /** @type {Token} */\n\n let content\n /** @type {Token} */\n\n let text // Prefix whitespace, part of the opening.\n\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n } // Suffix whitespace, part of the closing.\n\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\n }\n\n if (\n events[contentEnd][1].type === 'atxHeadingSequence' &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === 'whitespace'))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\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 // @ts-expect-error Constants are fine to assign.\n contentType: 'text'\n }\n splice(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n const self = this\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('atxHeading')\n effects.enter('atxHeadingSequence')\n return fenceOpenInside(code)\n }\n /** @type {State} */\n\n function fenceOpenInside(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return fenceOpenInside\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return self.interrupt ? ok(code) : headingBreak(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function headingBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequence(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n return ok(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, headingBreak, 'whitespace')(code)\n }\n\n effects.enter('atxHeadingText')\n return data(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === 35) {\n effects.consume(code)\n return sequence\n }\n\n effects.exit('atxHeadingSequence')\n return headingBreak(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return headingBreak(code)\n }\n\n effects.consume(code)\n return data\n }\n}\n", "/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result\n * in more relaxed rules (condition 6): because they are known blocks, the\n * HTML-like syntax doesn\u2019t have to be 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 */\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 '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 tag names which when parsing HTML (flow), result in\n * HTML that can include lines w/o exiting, until a closing tag also in this\n * list is found (condition 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * Note that `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {htmlBlockNames, htmlRawNames} from 'micromark-util-html-tag-name'\nimport {blankLine} from './blank-line.js'\n/** @type {Construct} */\n\nexport const htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\n/** @type {Construct} */\n\nconst nextBlankConstruct = {\n tokenize: tokenizeNextBlank,\n partial: true\n}\n/** @type {Resolver} */\n\nfunction resolveToHtmlFlow(events) {\n let index = events.length\n\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break\n }\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 // Add the prefix start to the HTML line token.\n\n events[index + 1][1].start = events[index - 2][1].start // Remove the line prefix.\n\n events.splice(index - 2, 2)\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this\n /** @type {number} */\n\n let kind\n /** @type {boolean} */\n\n let startTag\n /** @type {string} */\n\n let buffer\n /** @type {number} */\n\n let index\n /** @type {Code} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationStart\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n kind = 3 // While we\u2019re in an instruction instead of a declaration, we\u2019re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = String.fromCharCode(code)\n startTag = true\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function declarationStart(code) {\n if (code === 45) {\n effects.consume(code)\n kind = 2\n return commentOpenInside\n }\n\n if (code === 91) {\n effects.consume(code)\n kind = 5\n buffer = 'CDATA['\n index = 0\n return cdataOpenInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n kind = 4\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function cdataOpenInside(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length\n ? self.interrupt\n ? ok\n : continuation\n : cdataOpenInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagName(code) {\n if (\n code === null ||\n code === 47 ||\n code === 62 ||\n markdownLineEndingOrSpace(code)\n ) {\n if (\n code !== 47 &&\n startTag &&\n htmlRawNames.includes(buffer.toLowerCase())\n ) {\n kind = 1\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n kind = 6\n\n if (code === 47) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n kind = 7 // Do not support complete HTML when interrupting\n\n return self.interrupt && !self.parser.lazy[self.now().line]\n ? nok(code)\n : startTag\n ? completeAttributeNameBefore(code)\n : completeClosingTagAfter(code)\n }\n\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code)\n return self.interrupt ? ok : continuation\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n\n return completeEnd(code)\n }\n /** @type {State} */\n\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code)\n return completeEnd\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n\n return completeEnd(code)\n }\n /** @type {State} */\n\n function completeAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return completeAttributeName\n }\n\n return completeAttributeNameAfter(code)\n }\n /** @type {State} */\n\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n\n return completeAttributeNameBefore(code)\n }\n /** @type {State} */\n\n function completeAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return completeAttributeValueQuoted\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n marker = null\n return completeAttributeValueUnquoted(code)\n }\n /** @type {State} */\n\n function completeAttributeValueQuoted(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n if (code === marker) {\n effects.consume(code)\n return completeAttributeValueQuotedAfter\n }\n\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n /** @type {State} */\n\n function completeAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n markdownLineEndingOrSpace(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n /** @type {State} */\n\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAfter\n }\n\n return code === null || markdownLineEnding(code)\n ? continuation(code)\n : nok(code)\n }\n /** @type {State} */\n\n function continuation(code) {\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationCommentInside\n }\n\n if (code === 60 && kind === 1) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n\n if (code === 62 && kind === 4) {\n effects.consume(code)\n return continuationClose\n }\n\n if (code === 63 && kind === 3) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n if (code === 93 && kind === 5) {\n effects.consume(code)\n return continuationCharacterDataInside\n }\n\n if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {\n return effects.check(\n nextBlankConstruct,\n continuationClose,\n continuationAtLineEnding\n )(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n return continuationAtLineEnding(code)\n }\n\n effects.consume(code)\n return continuation\n }\n /** @type {State} */\n\n function continuationAtLineEnding(code) {\n effects.exit('htmlFlowData')\n return htmlContinueStart(code)\n }\n /** @type {State} */\n\n function htmlContinueStart(code) {\n if (code === null) {\n return done(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(\n {\n tokenize: htmlLineEnd,\n partial: true\n },\n htmlContinueStart,\n done\n )(code)\n }\n\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n /** @type {Tokenizer} */\n\n function htmlLineEnd(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n /** @type {State} */\n\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n }\n /** @type {State} */\n\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationRawEndTag(code) {\n if (code === 62 && htmlRawNames.includes(buffer.toLowerCase())) {\n effects.consume(code)\n return continuationClose\n }\n\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationCharacterDataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n } // More dashes.\n\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return done(code)\n }\n\n effects.consume(code)\n return continuationClose\n }\n /** @type {State} */\n\n function done(code) {\n effects.exit('htmlFlow')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.exit('htmlFlowData')\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable<Code>|undefined} */\n\n let marker\n /** @type {string} */\n\n let buffer\n /** @type {number} */\n\n let index\n /** @type {State} */\n\n let returnState\n return start\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 /** @type {State} */\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpen\n }\n\n if (code === 91) {\n effects.consume(code)\n buffer = 'CDATA['\n index = 0\n return cdataOpen\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentStart\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentStart(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentStartDash\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function commentStartDash(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = comment\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return comment\n }\n /** @type {State} */\n\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return end\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function cdataOpen(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length ? cdata : cdataOpen\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = cdata\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return cdata\n }\n /** @type {State} */\n\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n /** @type {State} */\n\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n /** @type {State} */\n\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = declaration\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return declaration\n }\n /** @type {State} */\n\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = instruction\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return instruction\n }\n /** @type {State} */\n\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n /** @type {State} */\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagClose(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return tagCloseBetween(code)\n }\n /** @type {State} */\n\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function tagOpen(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n return tagOpenAttributeNameAfter(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n\n return tagOpenBetween(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueUnquoted\n }\n /** @type {State} */\n\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return tagOpenAttributeValueQuotedAfter\n }\n\n if (code === null) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n /** @type {State} */\n\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n } // We can\u2019t have blank lines in content, so no need to worry about empty\n // tokens.\n\n /** @type {State} */\n\n function atLineEnding(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(\n effects,\n afterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\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\n return nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\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\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n/** @type {Construct} */\n\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\n\nconst fullReferenceConstruct = {\n tokenize: tokenizeFullReference\n}\n/** @type {Construct} */\n\nconst collapsedReferenceConstruct = {\n tokenize: tokenizeCollapsedReference\n}\n/** @type {Resolver} */\n\nfunction resolveAllLabelEnd(events) {\n let index = -1\n /** @type {Token} */\n\n let token\n\n while (++index < events.length) {\n token = events[index][1]\n\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n\n return events\n}\n/** @type {Resolver} */\n\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n\n let token\n /** @type {number|undefined} */\n\n let open\n /** @type {number|undefined} */\n\n let close\n /** @type {Event[]} */\n\n let media // Find an opening.\n\n while (index--) {\n token = events[index][1]\n\n if (open) {\n // If we see another link, or inactive link label, we\u2019ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n } // Mark other link openings as inactive, as we can\u2019t have links in\n // links.\n\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ] // Opening marker.\n\n media = push(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n media = push(media, [['enter', text, context]]) // Between.\n\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n ) // Text close, marker close, label close.\n\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ]) // Reference, resource, or so.\n\n media = push(media, events.slice(close + 1)) // Media close.\n\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n\n let labelStart\n /** @type {boolean} */\n\n let defined // Find an opening.\n\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!labelStart) {\n return nok(code)\n } // It\u2019s a balanced bracket, but contains a link.\n\n if (labelStart._inactive) return balanced(code)\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return afterLabelEnd\n }\n /** @type {State} */\n\n function afterLabelEnd(code) {\n // Resource: `[asd](fgh)`.\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n ok,\n defined ? ok : balanced\n )(code)\n } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n if (code === 91) {\n return effects.attempt(\n fullReferenceConstruct,\n ok,\n defined\n ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n : balanced\n )(code)\n } // Shortcut reference: `[asd]`?\n\n return defined ? ok(code) : balanced(code)\n }\n /** @type {State} */\n\n function balanced(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeResource(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return factoryWhitespace(effects, open)\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 41) {\n return end(code)\n }\n\n return factoryDestination(\n effects,\n destinationAfter,\n nok,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n /** @type {State} */\n\n function destinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, between)(code)\n : end(code)\n }\n /** @type {State} */\n\n function between(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factoryWhitespace(effects, end),\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function end(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\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeFullReference(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n return factoryLabel.call(\n self,\n effects,\n afterLabel,\n nok,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n /** @type {State} */\n\n function afterLabel(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return open\n }\n /** @type {State} */\n\n function open(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\n return nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\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 /** @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\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n /* To do: remove in the future once we\u2019ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn\u2019t need this */\n\n /* Hidden footnotes hook */\n\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\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 /** @type {State} */\n\n function after(code) {\n /* To do: remove in the future once we\u2019ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn\u2019t need this */\n\n /* Hidden footnotes hook. */\n\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLineEnding(effects, ok) {\n return start\n /** @type {State} */\n\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", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0\n /** @type {NonNullable<Code>} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('thematicBreak')\n marker = code\n return atBreak(code)\n }\n /** @type {State} */\n\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n if (size < 3 || (code !== null && !markdownLineEnding(code))) {\n return nok(code)\n }\n\n effects.exit('thematicBreak')\n return ok(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n\n effects.exit('thematicBreakSequence')\n return atBreak(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @typedef {Record<string, unknown> & {marker: Code, type: string, size: number}} ListContainerState\n * @typedef {TokenizeContext & {containerState: ListContainerState}} TokenizeContextWithState\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/** @type {Construct} */\n\nexport const list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\n/** @type {Construct} */\n\nconst listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\n/** @type {Construct} */\n\nconst indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this\n const tail = self.events[self.events.length - 1]\n let initialSize =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n const kind =\n self.containerState.type ||\n (code === 42 || code === 43 || code === 45\n ? 'listUnordered'\n : 'listOrdered')\n\n if (\n kind === 'listUnordered'\n ? !self.containerState.marker || code === self.containerState.marker\n : asciiDigit(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {\n _container: true\n })\n }\n\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix')\n return code === 42 || code === 45\n ? effects.check(thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix')\n effects.enter('listItemValue')\n return inside(code)\n }\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code)\n return inside\n }\n\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === 41 || code === 46)\n ) {\n effects.exit('listItemValue')\n return atMarker(code)\n }\n\n return nok(code)\n }\n /**\n * @type {State}\n **/\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(\n blankLine, // Can\u2019t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n /** @type {State} */\n\n function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n /** @type {State} */\n\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\n return nok(code)\n }\n /** @type {State} */\n\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize +\n self.sliceSerialize(effects.exit('listItemPrefix'), true).length\n return ok(code)\n }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this\n self.containerState._closeFlow = undefined\n return effects.check(blankLine, onBlank, notBlank)\n /** @type {State} */\n\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine // We have a blank line.\n // Still, try to consume at most the items size.\n\n return factorySpace(\n effects,\n ok,\n 'listItemIndent',\n self.containerState.size + 1\n )(code)\n }\n /** @type {State} */\n\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\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n /** @type {State} */\n\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true // As we\u2019re closing flow, we\u2019re no longer interrupting.\n\n self.interrupt = undefined\n return factorySpace(\n effects,\n effects.attempt(list, ok, nok),\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'listItemIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n/**\n * @type {Exiter}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4 + 1\n )\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return !markdownSpace(code) &&\n tail &&\n tail[1].type === 'listItemPrefixWhitespace'\n ? ok(code)\n : nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n/** @type {Resolver} */\n\nfunction resolveToSetextUnderline(events, context) {\n let index = events.length\n /** @type {number|undefined} */\n\n let content\n /** @type {number|undefined} */\n\n let text\n /** @type {number|undefined} */\n\n let definition // Find the opening of the content.\n // It\u2019ll always exist: we don\u2019t tokenize if it isn\u2019t there.\n\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === 'content') {\n content = index\n break\n }\n\n if (events[index][1].type === 'paragraph') {\n text = index\n }\n } // Exit\n else {\n if (events[index][1].type === 'content') {\n // Remove the content end (if needed we\u2019ll add it later)\n events.splice(index, 1)\n }\n\n if (!definition && events[index][1].type === 'definition') {\n definition = index\n }\n }\n }\n\n const heading = {\n type: 'setextHeading',\n start: Object.assign({}, events[text][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n } // Change the paragraph to setext heading text.\n\n events[text][1].type = 'setextHeadingText' // If we have definitions in the content, we\u2019ll keep on having content,\n // but we need move it.\n\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 = Object.assign({}, events[definition][1].end)\n } else {\n events[content][1] = heading\n } // Add the heading exit at the end.\n\n events.push(['exit', heading, context])\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {NonNullable<Code>} */\n\n let marker\n /** @type {boolean} */\n\n let paragraph // Find an opening.\n\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 (\n self.events[index][1].type !== 'lineEnding' &&\n self.events[index][1].type !== 'linePrefix' &&\n self.events[index][1].type !== 'content'\n ) {\n paragraph = self.events[index][1].type === 'paragraph'\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine')\n effects.enter('setextHeadingLineSequence')\n marker = code\n return closingSequence(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n return closingSequence\n }\n\n effects.exit('setextHeadingLineSequence')\n return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code)\n }\n /** @type {State} */\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n}\n/** @type {Initializer} */\n\nfunction initializeFlow(effects) {\n const self = this\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine,\n atBlankEnding, // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n /** @type {State} */\n\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n /** @type {State} */\n\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nexport const resolver = {\n resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n/**\n * @param {'string'|'text'} field\n * @returns {InitialConstruct}\n */\n\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\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 /** @type {State} */\n\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n /** @type {State} */\n\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('data')\n effects.consume(code)\n return data\n }\n /** @type {State} */\n\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n\n function atBreak(code) {\n if (code === null) {\n return true\n }\n\n const list = constructs[code]\n let index = -1\n\n if (list) {\n while (++index < list.length) {\n const item = list[index]\n\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true\n }\n }\n }\n\n return false\n }\n }\n}\n/**\n * @param {Resolver} [extraResolver]\n * @returns {Resolver}\n */\n\nfunction createResolver(extraResolver) {\n return resolveAllText\n /** @type {Resolver} */\n\n function resolveAllText(events, context) {\n let index = -1\n /** @type {number|undefined} */\n\n let enter // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n\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\u2019t 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\n enter = undefined\n }\n }\n\n return extraResolver ? extraResolver(events, context) : events\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\u2019t 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 */\n\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0 // Skip first.\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === 'lineEnding') &&\n events[eventIndex - 1][1].type === 'data'\n ) {\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\n let tabs\n\n while (index--) {\n const chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n\n if (bufferIndex) break\n bufferIndex = -1\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 if (size) {\n const token = {\n type:\n eventIndex === events.length || tabs || size < 2\n ? 'lineSuffix'\n : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: Object.assign({}, data.end)\n }\n data.end = Object.assign({}, token.start)\n\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n\n eventIndex++\n }\n }\n\n return events\n}\n", "/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n */\n\n/**\n * @typedef Info\n * @property {() => void} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\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\u2019t 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 * @param {InitialConstruct} initialize\n * @param {Omit<Point, '_index'|'_bufferIndex'>} [from]\n * @returns {TokenizeContext}\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = Object.assign(\n from\n ? Object.assign({}, from)\n : {\n line: 1,\n column: 1,\n offset: 0\n },\n {\n _index: 0,\n _bufferIndex: -1\n }\n )\n /** @type {Record<string, number>} */\n\n const columnStart = {}\n /** @type {Construct[]} */\n\n const resolveAllConstructs = []\n /** @type {Chunk[]} */\n\n let chunks = []\n /** @type {Token[]} */\n\n let stack = []\n /** @type {boolean|undefined} */\n\n let consumed = true\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n\n const effects = {\n consume,\n enter,\n exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n }\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n\n const context = {\n previous: null,\n code: null,\n containerState: {},\n events: [],\n parser,\n sliceStream,\n sliceSerialize,\n now,\n defineSkip,\n write\n }\n /**\n * The state function.\n *\n * @type {State|void}\n */\n\n let state = initialize.tokenize.call(context, effects)\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n\n let expectedCode\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n }\n\n return context\n /** @type {TokenizeContext['write']} */\n\n function write(slice) {\n chunks = push(chunks, slice)\n main() // Exit if we\u2019re not done, resolve might change stuff.\n\n if (chunks[chunks.length - 1] !== null) {\n return []\n }\n\n addResult(initialize, 0) // Otherwise, resolve, and exit.\n\n context.events = resolveAll(resolveAllConstructs, context.events, context)\n return context.events\n } //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs)\n }\n /** @type {TokenizeContext['sliceStream']} */\n\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n /** @type {TokenizeContext['now']} */\n\n function now() {\n return Object.assign({}, point)\n }\n /** @type {TokenizeContext['defineSkip']} */\n\n function defineSkip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\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 {void}\n */\n\n function main() {\n /** @type {number} */\n let chunkIndex\n\n while (point._index < chunks.length) {\n const chunk = chunks[point._index] // If we\u2019re in a buffer chunk, loop through it.\n\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n }\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n\n function go(code) {\n consumed = undefined\n expectedCode = code\n state = state(code)\n }\n /** @type {Effects['consume']} */\n\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 } // Not in a string chunk.\n\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++ // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n } // Expose the previous character.\n\n context.previous = code // Mark as consumed.\n\n consumed = true\n }\n /** @type {Effects['enter']} */\n\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 /** @type {Effects['exit']} */\n\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 * Use results.\n *\n * @type {ReturnHandle}\n */\n\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n }\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n\n function onsuccessfulcheck(_, info) {\n info.restore()\n }\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {Record<string, unknown>} [fields]\n */\n\n function constructFactory(onreturn, fields) {\n return hook\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Construct|Construct[]|ConstructRecord} constructs\n * @param {State} returnState\n * @param {State} [bogusState]\n * @returns {State}\n */\n\n function hook(constructs, returnState, bogusState) {\n /** @type {Construct[]} */\n let listOfConstructs\n /** @type {number} */\n\n let constructIndex\n /** @type {Construct} */\n\n let currentConstruct\n /** @type {Info} */\n\n let info\n return Array.isArray(constructs)\n ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs)\n : 'tokenize' in constructs // @ts-expect-error Looks like a construct.\n ? handleListOfConstructs([constructs])\n : handleMapOfConstructs(constructs)\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n\n function handleMapOfConstructs(map) {\n return start\n /** @type {State} */\n\n function start(code) {\n const def = code !== null && map[code]\n const all = code !== null && map.null\n const list = [\n // To do: add more extension tests.\n\n /* c8 ignore next 2 */\n ...(Array.isArray(def) ? def : def ? [def] : []),\n ...(Array.isArray(all) ? all : all ? [all] : [])\n ]\n return handleListOfConstructs(list)(code)\n }\n }\n /**\n * Handle a list of construct.\n *\n * @param {Construct[]} list\n * @returns {State}\n */\n\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n\n if (list.length === 0) {\n return bogusState\n }\n\n return handleConstruct(list[constructIndex])\n }\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n\n function handleConstruct(construct) {\n return start\n /** @type {State} */\n\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn\u2019t work because `inspect` in document does a check\n // w/o a bogus, which doesn\u2019t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.includes(construct.name)\n ) {\n return nok(code)\n }\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 \u201Clive binding\u201D, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n /** @type {State} */\n\n function ok(code) {\n consumed = true\n onreturn(currentConstruct, info)\n return returnState\n }\n /** @type {State} */\n\n function nok(code) {\n consumed = true\n info.restore()\n\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n\n return bogusState\n }\n }\n }\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct)\n }\n\n if (construct.resolve) {\n splice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n /**\n * Store state.\n *\n * @returns {Info}\n */\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 restore,\n from: startEventsIndex\n }\n /**\n * Restore state.\n *\n * @returns {void}\n */\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 * Move the current point a bit forward in the line when it\u2019s on a column\n * skip.\n *\n * @returns {void}\n */\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 * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Chunk[]} chunks\n * @param {Pick<Token, 'start'|'end'>} token\n * @returns {Chunk[]}\n */\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 {Chunk[]} */\n\n let view\n\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\n if (startBufferIndex > -1) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view[0] = view[0].slice(startBufferIndex)\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\n return view\n}\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Chunk[]} chunks\n * @param {boolean} [expandTabs=false]\n * @returns {string}\n */\n\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1\n /** @type {string[]} */\n\n const result = []\n /** @type {boolean|undefined} */\n\n let atTab\n\n while (++index < chunks.length) {\n const chunk = chunks[index]\n /** @type {string} */\n\n let value\n\n if (typeof chunk === 'string') {\n value = chunk\n } else\n switch (chunk) {\n case -5: {\n value = '\\r'\n break\n }\n\n case -4: {\n value = '\\n'\n break\n }\n\n case -3: {\n value = '\\r' + '\\n'\n break\n }\n\n case -2: {\n value = expandTabs ? ' ' : '\\t'\n break\n }\n\n case -1: {\n if (!expandTabs && atTab) continue\n value = ' '\n break\n }\n\n default: {\n // Currently only replacement character.\n value = String.fromCharCode(chunk)\n }\n }\n\n atTab = chunk === -2\n result.push(value)\n }\n\n return result.join('')\n}\n", "/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n/** @type {Extension['document']} */\n\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/** @type {Extension['contentInitial']} */\n\nexport const contentInitial = {\n [91]: definition\n}\n/** @type {Extension['flowInitial']} */\n\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n/** @type {Extension['flow']} */\n\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/** @type {Extension['string']} */\n\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n/** @type {Extension['text']} */\n\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/** @type {Extension['insideSpan']} */\n\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n/** @type {Extension['attentionMarkers']} */\n\nexport const attentionMarkers = {\n null: [42, 95]\n}\n/** @type {Extension['disable']} */\n\nexport const disable = {\n null: []\n}\n", "/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Create} Create\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 {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n/**\n * @param {ParseOptions} [options]\n * @returns {ParseContext}\n */\n\nexport function parse(options = {}) {\n /** @type {FullNormalizedExtension} */\n // @ts-expect-error `defaultConstructs` is full, so the result will be too.\n const constructs = combineExtensions(\n // @ts-expect-error Same as above.\n [defaultConstructs].concat(options.extensions || [])\n )\n /** @type {ParseContext} */\n\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n /**\n * @param {InitialConstruct} initial\n */\n\n function create(initial) {\n return creator\n /** @type {Create} */\n\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding} [encoding]\n * @param {boolean} [end=false]\n * @returns {Chunk[]}\n */\nconst search = /[\\0\\t\\n\\r]/g\n/**\n * @returns {Preprocessor}\n */\n\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean|undefined} */\n\n let start = true\n /** @type {boolean|undefined} */\n\n let atCarriageReturn\n return preprocessor\n /** @type {Preprocessor} */\n\n function preprocessor(value, encoding, end) {\n /** @type {Chunk[]} */\n const chunks = []\n /** @type {RegExpMatchArray|null} */\n\n let match\n /** @type {number} */\n\n let next\n /** @type {number} */\n\n let startPosition\n /** @type {number} */\n\n let endPosition\n /** @type {Code} */\n\n let code // @ts-expect-error `Buffer` does allow an encoding.\n\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n\n if (start) {\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n\n start = undefined\n }\n\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\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\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n\n while (column++ < next) chunks.push(-1)\n\n break\n }\n\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n\n startPosition = endPosition + 1\n }\n\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n\n return chunks\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {subtokenize} from 'micromark-util-subtokenize'\n/**\n * @param {Event[]} events\n * @returns {Event[]}\n */\n\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n\n return events\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 * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n\n if (\n // C0 except for HT, LF, FF, CR, space\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.\n (code > 126 && code < 160) || // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) || // Noncharacters.\n (code > 64975 && code < 65008) ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 || // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n\n return String.fromCharCode(code)\n}\n", "import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n/**\n * Utility to decode markdown strings (which occur in places such as fenced\n * code info strings, destinations, labels, and titles).\n * The \u201Cstring\u201D content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * @returns {string}\n */\n\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\n\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n } // Reference.\n\n const head = $2.charCodeAt(0)\n\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\n return decodeNamedCharacterReference($2) || $0\n}\n", "/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {Root|Content} Node\n * @typedef {Extract<Node, UnistParent>} Parent\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {UnistParent & {type: 'fragment', children: Array<PhrasingContent>}} Fragment\n */\n\n/**\n * @typedef _CompileDataFields\n * @property {boolean|undefined} expectingFirstListItemValue\n * @property {boolean|undefined} flowCodeInside\n * @property {boolean|undefined} setextHeadingSlurpLineEnding\n * @property {boolean|undefined} atHardBreak\n * @property {'collapsed'|'full'} referenceType\n * @property {boolean|undefined} inReference\n * @property {'characterReferenceMarkerHexadecimal'|'characterReferenceMarkerNumeric'} characterReferenceType\n *\n * @typedef {Record<string, unknown> & Partial<_CompileDataFields>} CompileData\n *\n * @typedef {(tree: Root) => Root|void} Transform\n * @typedef {(this: CompileContext, token: Token) => void} Handle\n * @typedef {Record<string, Handle>} Handles\n * Token types mapping to handles\n * @typedef {Record<string, Record<string, unknown>|Array<unknown>> & {canContainEols: Array<string>, transforms: Array<Transform>, enter: Handles, exit: Handles}} NormalizedExtension\n * @typedef {Partial<NormalizedExtension>} Extension\n * An mdast extension changes how markdown tokens are turned into mdast.\n *\n * @typedef {(this: Omit<CompileContext, 'sliceSerialize'>, left: Token|undefined, right: Token) => void} OnEnterError\n * @typedef {(this: Omit<CompileContext, 'sliceSerialize'>, left: Token, right: Token) => void} OnExitError\n *\n * @typedef CompileContext\n * mdast compiler context\n * @property {Array<Node | Fragment>} stack\n * @property {Array<[Token, OnEnterError|undefined]>} tokenStack\n * @property {(key: string, value?: unknown) => void} setData\n * Set data into the key-value store.\n * @property {<K extends string>(key: K) => CompileData[K]} getData\n * Get data from the key-value store.\n * @property {(this: CompileContext) => void} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {<N extends Node>(this: CompileContext, node: N, token: Token, onError?: OnEnterError) => N} enter\n * Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n * Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {NormalizedExtension} config\n * Configuration.\n *\n * @typedef {{mdastExtensions?: Array<Extension|Array<Extension>>}} FromMarkdownOptions\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n */\nimport {toString} from 'mdast-util-to-string'\nimport {parse} from 'micromark/lib/parse.js'\nimport {preprocess} from 'micromark/lib/preprocess.js'\nimport {postprocess} from 'micromark/lib/postprocess.js'\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 * @param value Markdown to parse (`string` or `Buffer`).\n * @param [encoding] Character encoding to understand `value` as when it\u2019s a `Buffer` (`string`, default: `'utf8'`).\n * @param [options] Configuration\n */\n\nexport const fromMarkdown =\n /**\n * @type {(\n * ((value: Value, encoding: Encoding, options?: Options) => Root) &\n * ((value: Value, options?: Options) => Root)\n * )}\n */\n\n /**\n * @param {Value} value\n * @param {Encoding} [encoding]\n * @param {Options} [options]\n * @returns {Root}\n */\n function (value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n }\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options} [options]\n */\n\nfunction compiler(options = {}) {\n /** @type {NormalizedExtension} */\n // @ts-expect-error: our base has all required fields, so the result will too.\n const config = configure(\n {\n transforms: [],\n canContainEols: [\n 'emphasis',\n 'fragment',\n 'heading',\n 'paragraph',\n 'strong'\n ],\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 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 options.mdastExtensions || []\n )\n /** @type {CompileData} */\n\n const data = {}\n return compile\n /**\n * @param {Array<Event>} events\n * @returns {Root}\n */\n\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {CompileContext['stack']} */\n\n const stack = [tree]\n /** @type {CompileContext['tokenStack']} */\n\n const tokenStack = []\n /** @type {Array<number>} */\n\n const listStack = []\n /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n\n const context = {\n stack,\n tokenStack,\n config,\n enter,\n exit,\n buffer,\n resume,\n setData,\n getData\n }\n let index = -1\n\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 (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\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\n index = -1\n\n while (++index < events.length) {\n const handler = config[events[index][0]]\n\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n if (tokenStack.length > 0) {\n const tail = tokenStack[tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n } // Figure out `root` position.\n\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n index = -1\n\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n\n return tree\n }\n /**\n * @param {Array<Event>} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\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\n let listItem\n /** @type {number|undefined} */\n\n let lineIndex\n /** @type {number|undefined} */\n\n let firstBlankLineIndex\n /** @type {boolean|undefined} */\n\n let atMarker\n\n while (++index <= length) {\n const event = events[index]\n\n if (\n event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered' ||\n event[1].type === 'blockQuote'\n ) {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n\n atMarker = undefined\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n\n atMarker = undefined\n }\n } else if (\n event[1].type === 'linePrefix' ||\n event[1].type === 'listItemValue' ||\n event[1].type === 'listItemMarker' ||\n event[1].type === 'listItemPrefix' ||\n event[1].type === 'listItemPrefixWhitespace'\n ) {\n // Empty.\n } else {\n atMarker = undefined\n }\n\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n // @ts-expect-error Patched.\n listItem._spread = true\n } // Fix position.\n\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n } // Create a new list item.\n\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n // @ts-expect-error Patched\n _spread: false,\n start: Object.assign({}, event[1].start)\n } // @ts-expect-error: `listItem` is most definitely defined, TS...\n\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n } // @ts-expect-error Patched.\n\n events[start][1]._spread = listSpread\n return length\n }\n /**\n * @type {CompileContext['setData']}\n * @param [value]\n */\n\n function setData(key, value) {\n data[key] = value\n }\n /**\n * @type {CompileContext['getData']}\n * @template {string} K\n * @param {K} key\n * @returns {CompileData[K]}\n */\n\n function getData(key) {\n return data[key]\n }\n /**\n * @param {Point} d\n * @returns {Point}\n */\n\n function point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n }\n /**\n * @param {(token: Token) => Node} create\n * @param {Handle} [and]\n * @returns {Handle}\n */\n\n function opener(create, and) {\n return open\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n /** @type {CompileContext['buffer']} */\n\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n /**\n * @type {CompileContext['enter']}\n * @template {Node} N\n * @this {CompileContext}\n * @param {N} node\n * @param {Token} token\n * @param {OnEnterError} [errorHandler]\n * @returns {N}\n */\n\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n parent.children.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler]) // @ts-expect-error: `end` will be patched later.\n\n node.position = {\n start: point(token.start)\n }\n return node\n }\n /**\n * @param {Handle} [and]\n * @returns {Handle}\n */\n\n function closer(and) {\n return close\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n /**\n * @type {CompileContext['exit']}\n * @this {CompileContext}\n * @param {Token} token\n * @param {OnExitError} [onExitError]\n * @returns {Node}\n */\n\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it\u2019s not open'\n )\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\n node.position.end = point(token.end)\n return node\n }\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n\n function resume() {\n return toString(this.stack.pop())\n } //\n // Handlers.\n //\n\n /** @type {Handle} */\n\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n /** @type {Handle} */\n\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n const ancestor =\n /** @type {List} */\n this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n setData('expectingFirstListItemValue')\n }\n }\n /** @type {Handle} */\n\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.lang = data\n }\n /** @type {Handle} */\n\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.meta = data\n }\n /** @type {Handle} */\n\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return\n this.buffer()\n setData('flowCodeInside', true)\n }\n /** @type {Handle} */\n\n function onexitcodefenced() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n setData('flowCodeInside')\n }\n /** @type {Handle} */\n\n function onexitcodeindented() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n /** @type {Handle} */\n\n function onexitdefinitionlabelstring(token) {\n // Discard label, use the source content instead.\n const label = this.resume()\n const node =\n /** @type {Definition} */\n this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n /** @type {Handle} */\n\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node =\n /** @type {Definition} */\n this.stack[this.stack.length - 1]\n node.title = data\n }\n /** @type {Handle} */\n\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node =\n /** @type {Definition} */\n this.stack[this.stack.length - 1]\n node.url = data\n }\n /** @type {Handle} */\n\n function onexitatxheadingsequence(token) {\n const node =\n /** @type {Heading} */\n this.stack[this.stack.length - 1]\n\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n /** @type {Handle} */\n\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n /** @type {Handle} */\n\n function onexitsetextheadinglinesequence(token) {\n const node =\n /** @type {Heading} */\n this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n /** @type {Handle} */\n\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n /** @type {Handle} */\n\n function onenterdata(token) {\n const parent =\n /** @type {Parent} */\n this.stack[this.stack.length - 1]\n /** @type {Node} */\n\n let tail = parent.children[parent.children.length - 1]\n\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text() // @ts-expect-error: we\u2019ll add `end` later.\n\n tail.position = {\n start: point(token.start)\n } // @ts-expect-error: Assume `parent` accepts `text`.\n\n parent.children.push(tail)\n }\n\n this.stack.push(tail)\n }\n /** @type {Handle} */\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 /** @type {Handle} */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n\n // If we\u2019re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n setData('atHardBreak')\n return\n }\n\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n /** @type {Handle} */\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n /** @type {Handle} */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node =\n /** @type {HTML} */\n this.stack[this.stack.length - 1]\n node.value = data\n }\n /** @type {Handle} */\n\n function onexithtmltext() {\n const data = this.resume()\n const node =\n /** @type {HTML} */\n this.stack[this.stack.length - 1]\n node.value = data\n }\n /** @type {Handle} */\n\n function onexitcodetext() {\n const data = this.resume()\n const node =\n /** @type {InlineCode} */\n this.stack[this.stack.length - 1]\n node.value = data\n }\n /** @type {Handle} */\n\n function onexitlink() {\n const context =\n /** @type {Link & {identifier: string, label: string}} */\n this.stack[this.stack.length - 1] // To do: clean.\n\n if (getData('inReference')) {\n context.type += 'Reference' // @ts-expect-error: mutate.\n\n context.referenceType = getData('referenceType') || 'shortcut' // @ts-expect-error: mutate.\n\n delete context.url\n delete context.title\n } else {\n // @ts-expect-error: mutate.\n delete context.identifier // @ts-expect-error: mutate.\n\n delete context.label\n }\n\n setData('referenceType')\n }\n /** @type {Handle} */\n\n function onexitimage() {\n const context =\n /** @type {Image & {identifier: string, label: string}} */\n this.stack[this.stack.length - 1] // To do: clean.\n\n if (getData('inReference')) {\n context.type += 'Reference' // @ts-expect-error: mutate.\n\n context.referenceType = getData('referenceType') || 'shortcut' // @ts-expect-error: mutate.\n\n delete context.url\n delete context.title\n } else {\n // @ts-expect-error: mutate.\n delete context.identifier // @ts-expect-error: mutate.\n\n delete context.label\n }\n\n setData('referenceType')\n }\n /** @type {Handle} */\n\n function onexitlabeltext(token) {\n const ancestor =\n /** @type {(Link|Image) & {identifier: string, label: string}} */\n this.stack[this.stack.length - 2]\n const string = this.sliceSerialize(token)\n ancestor.label = decodeString(string)\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n /** @type {Handle} */\n\n function onexitlabel() {\n const fragment =\n /** @type {Fragment} */\n this.stack[this.stack.length - 1]\n const value = this.resume()\n const node =\n /** @type {(Link|Image) & {identifier: string, label: string}} */\n this.stack[this.stack.length - 1] // Assume a reference.\n\n setData('inReference', true)\n\n if (node.type === 'link') {\n // @ts-expect-error: Assume static phrasing content.\n node.children = fragment.children\n } else {\n node.alt = value\n }\n }\n /** @type {Handle} */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node =\n /** @type {Link|Image} */\n this.stack[this.stack.length - 1]\n node.url = data\n }\n /** @type {Handle} */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node =\n /** @type {Link|Image} */\n this.stack[this.stack.length - 1]\n node.title = data\n }\n /** @type {Handle} */\n\n function onexitresource() {\n setData('inReference')\n }\n /** @type {Handle} */\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n /** @type {Handle} */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node =\n /** @type {LinkReference|ImageReference} */\n this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n /** @type {Handle} */\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n /** @type {Handle} */\n\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = getData('characterReferenceType')\n /** @type {string} */\n\n let value\n\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n setData('characterReferenceType')\n } else {\n // @ts-expect-error `decodeNamedCharacterReference` can return false for\n // invalid named character references, but everything we\u2019ve tokenized is\n // valid.\n value = decodeNamedCharacterReference(data)\n }\n\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n /** @type {Handle} */\n\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node =\n /** @type {Link} */\n this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n /** @type {Handle} */\n\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node =\n /** @type {Link} */\n this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n } //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n /** @returns {Code} */\n\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n /** @returns {InlineCode} */\n\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n /** @returns {Definition} */\n\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n /** @returns {Emphasis} */\n\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n /** @returns {Heading} */\n\n function heading() {\n // @ts-expect-error `depth` will be set later.\n return {\n type: 'heading',\n depth: undefined,\n children: []\n }\n }\n /** @returns {Break} */\n\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n /** @returns {HTML} */\n\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n /** @returns {Image} */\n\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n /** @returns {Link} */\n\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n /**\n * @param {Token} token\n * @returns {List}\n */\n\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n // @ts-expect-error Patched.\n spread: token._spread,\n children: []\n }\n }\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n\n function listItem(token) {\n return {\n type: 'listItem',\n // @ts-expect-error Patched.\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n /** @returns {Paragraph} */\n\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n /** @returns {Strong} */\n\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n /** @returns {Text} */\n\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n /** @returns {ThematicBreak} */\n\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n/**\n * @param {Extension} combined\n * @param {Array<Extension|Array<Extension>>} extensions\n * @returns {Extension}\n */\n\nfunction configure(combined, extensions) {\n let index = -1\n\n while (++index < extensions.length) {\n const value = extensions[index]\n\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n\n return combined\n}\n/**\n * @param {Extension} combined\n * @param {Extension} extension\n * @returns {void}\n */\n\nfunction extension(combined, extension) {\n /** @type {string} */\n let key\n\n for (key in extension) {\n if (own.call(extension, key)) {\n const list = key === 'canContainEols' || key === 'transforms'\n const maybe = own.call(combined, key) ? combined[key] : undefined\n /* c8 ignore next */\n\n const left = maybe || (combined[key] = list ? [] : {})\n const right = extension[key]\n\n if (right) {\n if (list) {\n // @ts-expect-error: `left` is an array.\n combined[key] = [...left, ...right]\n } else {\n Object.assign(left, right)\n }\n }\n }\n }\n}\n/** @type {OnEnterError} */\n\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n", "/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/** @type {import('unified').Plugin<[Options?] | void[], string, Root>} */\nexport default function remarkParse(options) {\n /** @type {import('unified').ParserFunction<Root>} */\n const parser = (doc) => {\n // Assume options.\n const settings = /** @type {Options} */ (this.data('settings'))\n\n return fromMarkdown(\n doc,\n Object.assign({}, settings, options, {\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: this.data('micromarkExtensions') || [],\n mdastExtensions: this.data('fromMarkdownExtensions') || []\n })\n )\n }\n\n Object.assign(this, {Parser: parser})\n}\n", "import remarkParse from './lib/index.js'\n\nexport default remarkParse\n", "/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiControl,\n asciiDigit,\n markdownLineEndingOrSpace,\n markdownLineEnding,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\nconst www = {\n tokenize: tokenizeWww,\n partial: true\n}\nconst domain = {\n tokenize: tokenizeDomain,\n partial: true\n}\nconst path = {\n tokenize: tokenizePath,\n partial: true\n}\nconst punctuation = {\n tokenize: tokenizePunctuation,\n partial: true\n}\nconst namedCharacterReference = {\n tokenize: tokenizeNamedCharacterReference,\n partial: true\n}\nconst wwwAutolink = {\n tokenize: tokenizeWwwAutolink,\n previous: previousWww\n}\nconst httpAutolink = {\n tokenize: tokenizeHttpAutolink,\n previous: previousHttp\n}\nconst emailAutolink = {\n tokenize: tokenizeEmailAutolink,\n previous: previousEmail\n}\n/** @type {ConstructRecord} */\n\nconst text = {}\n/** @type {Extension} */\n\nexport const gfmAutolinkLiteral = {\n text\n}\nlet code = 48 // Add alphanumerics.\n\nwhile (code < 123) {\n text[code] = emailAutolink\n code++\n if (code === 58) code = 65\n else if (code === 91) code = 97\n}\n\ntext[43] = emailAutolink\ntext[45] = emailAutolink\ntext[46] = emailAutolink\ntext[95] = emailAutolink\ntext[72] = [emailAutolink, httpAutolink]\ntext[104] = [emailAutolink, httpAutolink]\ntext[87] = [emailAutolink, wwwAutolink]\ntext[119] = [emailAutolink, wwwAutolink]\n/** @type {Tokenizer} */\n\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n const self = this\n /** @type {boolean} */\n\n let hasDot\n /** @type {boolean|undefined} */\n\n let hasDigitInLastSegment\n return start\n /** @type {State} */\n\n function start(code) {\n if (\n !gfmAtext(code) ||\n !previousEmail(self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkEmail')\n return atext(code)\n }\n /** @type {State} */\n\n function atext(code) {\n if (gfmAtext(code)) {\n effects.consume(code)\n return atext\n }\n\n if (code === 64) {\n effects.consume(code)\n return label\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function label(code) {\n if (code === 46) {\n return effects.check(punctuation, done, dotContinuation)(code)\n }\n\n if (code === 45 || code === 95) {\n return effects.check(punctuation, nok, dashOrUnderscoreContinuation)(code)\n }\n\n if (asciiAlphanumeric(code)) {\n if (!hasDigitInLastSegment && asciiDigit(code)) {\n hasDigitInLastSegment = true\n }\n\n effects.consume(code)\n return label\n }\n\n return done(code)\n }\n /** @type {State} */\n\n function dotContinuation(code) {\n effects.consume(code)\n hasDot = true\n hasDigitInLastSegment = undefined\n return label\n }\n /** @type {State} */\n\n function dashOrUnderscoreContinuation(code) {\n effects.consume(code)\n return afterDashOrUnderscore\n }\n /** @type {State} */\n\n function afterDashOrUnderscore(code) {\n if (code === 46) {\n return effects.check(punctuation, nok, dotContinuation)(code)\n }\n\n return label(code)\n }\n /** @type {State} */\n\n function done(code) {\n if (hasDot && !hasDigitInLastSegment) {\n effects.exit('literalAutolinkEmail')\n effects.exit('literalAutolink')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n if (\n (code !== 87 && code !== 119) ||\n !previousWww(self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkWww') // For `www.` we check instead of attempt, because when it matches, GH\n // treats it as part of a domain (yes, it says a valid domain must come\n // after `www.`, but that\u2019s not how it\u2019s implemented by them).\n\n return effects.check(\n www,\n effects.attempt(domain, effects.attempt(path, done), nok),\n nok\n )(code)\n }\n /** @type {State} */\n\n function done(code) {\n effects.exit('literalAutolinkWww')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHttpAutolink(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n if (\n (code !== 72 && code !== 104) ||\n !previousHttp(self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkHttp')\n effects.consume(code)\n return t1\n }\n /** @type {State} */\n\n function t1(code) {\n if (code === 84 || code === 116) {\n effects.consume(code)\n return t2\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function t2(code) {\n if (code === 84 || code === 116) {\n effects.consume(code)\n return p\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function p(code) {\n if (code === 80 || code === 112) {\n effects.consume(code)\n return s\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function s(code) {\n if (code === 83 || code === 115) {\n effects.consume(code)\n return colon\n }\n\n return colon(code)\n }\n /** @type {State} */\n\n function colon(code) {\n if (code === 58) {\n effects.consume(code)\n return slash1\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function slash1(code) {\n if (code === 47) {\n effects.consume(code)\n return slash2\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function slash2(code) {\n if (code === 47) {\n effects.consume(code)\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n return code === null ||\n asciiControl(code) ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)\n ? nok(code)\n : effects.attempt(domain, effects.attempt(path, done), nok)(code)\n }\n /** @type {State} */\n\n function done(code) {\n effects.exit('literalAutolinkHttp')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeWww(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.consume(code)\n return w2\n }\n /** @type {State} */\n\n function w2(code) {\n if (code === 87 || code === 119) {\n effects.consume(code)\n return w3\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function w3(code) {\n if (code === 87 || code === 119) {\n effects.consume(code)\n return dot\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function dot(code) {\n if (code === 46) {\n effects.consume(code)\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? nok(code) : ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDomain(effects, ok, nok) {\n /** @type {boolean|undefined} */\n let hasUnderscoreInLastSegment\n /** @type {boolean|undefined} */\n\n let hasUnderscoreInLastLastSegment\n return domain\n /** @type {State} */\n\n function domain(code) {\n if (code === 38) {\n return effects.check(\n namedCharacterReference,\n done,\n punctuationContinuation\n )(code)\n }\n\n if (code === 46 || code === 95) {\n return effects.check(punctuation, done, punctuationContinuation)(code)\n } // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n // occur, which sounds like ASCII only, but they also support `www.\u9EDE\u770B.com`,\n // so that\u2019s Unicode.\n // Instead of some new production for Unicode alphanumerics, markdown\n // already has that for Unicode punctuation and whitespace, so use those.\n\n if (\n code === null ||\n asciiControl(code) ||\n unicodeWhitespace(code) ||\n (code !== 45 && unicodePunctuation(code))\n ) {\n return done(code)\n }\n\n effects.consume(code)\n return domain\n }\n /** @type {State} */\n\n function punctuationContinuation(code) {\n if (code === 46) {\n hasUnderscoreInLastLastSegment = hasUnderscoreInLastSegment\n hasUnderscoreInLastSegment = undefined\n effects.consume(code)\n return domain\n }\n\n if (code === 95) hasUnderscoreInLastSegment = true\n effects.consume(code)\n return domain\n }\n /** @type {State} */\n\n function done(code) {\n if (!hasUnderscoreInLastLastSegment && !hasUnderscoreInLastSegment) {\n return ok(code)\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizePath(effects, ok) {\n let balance = 0\n return inPath\n /** @type {State} */\n\n function inPath(code) {\n if (code === 38) {\n return effects.check(\n namedCharacterReference,\n ok,\n continuedPunctuation\n )(code)\n }\n\n if (code === 40) {\n balance++\n }\n\n if (code === 41) {\n return effects.check(\n punctuation,\n parenAtPathEnd,\n continuedPunctuation\n )(code)\n }\n\n if (pathEnd(code)) {\n return ok(code)\n }\n\n if (trailingPunctuation(code)) {\n return effects.check(punctuation, ok, continuedPunctuation)(code)\n }\n\n effects.consume(code)\n return inPath\n }\n /** @type {State} */\n\n function continuedPunctuation(code) {\n effects.consume(code)\n return inPath\n }\n /** @type {State} */\n\n function parenAtPathEnd(code) {\n balance--\n return balance < 0 ? ok(code) : continuedPunctuation(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeNamedCharacterReference(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.consume(code)\n return inside\n }\n /** @type {State} */\n\n function inside(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return inside\n }\n\n if (code === 59) {\n effects.consume(code)\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n // If the named character reference is followed by the end of the path, it\u2019s\n // not continued punctuation.\n return pathEnd(code) ? ok(code) : nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizePunctuation(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.consume(code)\n return after\n }\n /** @type {State} */\n\n function after(code) {\n // Check the next.\n if (trailingPunctuation(code)) {\n effects.consume(code)\n return after\n } // If the punctuation marker is followed by the end of the path, it\u2019s not\n // continued punctuation.\n\n return pathEnd(code) ? ok(code) : nok(code)\n }\n}\n/**\n * @param {Code} code\n * @returns {boolean}\n */\n\nfunction trailingPunctuation(code) {\n return (\n code === 33 ||\n code === 34 ||\n code === 39 ||\n code === 41 ||\n code === 42 ||\n code === 44 ||\n code === 46 ||\n code === 58 ||\n code === 59 ||\n code === 60 ||\n code === 63 ||\n code === 95 ||\n code === 126\n )\n}\n/**\n * @param {Code} code\n * @returns {boolean}\n */\n\nfunction pathEnd(code) {\n return code === null || code === 60 || markdownLineEndingOrSpace(code)\n}\n/**\n * @param {Code} code\n * @returns {boolean}\n */\n\nfunction gfmAtext(code) {\n return (\n code === 43 ||\n code === 45 ||\n code === 46 ||\n code === 95 ||\n asciiAlphanumeric(code)\n )\n}\n/** @type {Previous} */\n\nfunction previousWww(code) {\n return (\n code === null ||\n code === 40 ||\n code === 42 ||\n code === 95 ||\n code === 126 ||\n markdownLineEndingOrSpace(code)\n )\n}\n/** @type {Previous} */\n\nfunction previousHttp(code) {\n return code === null || !asciiAlpha(code)\n}\n/** @type {Previous} */\n\nfunction previousEmail(code) {\n return code !== 47 && previousHttp(code)\n}\n/**\n * @param {Array<Event>} events\n * @returns {boolean}\n */\n\nfunction previousUnbalanced(events) {\n let index = events.length\n let result = false\n\n while (index--) {\n const token = events[index][1]\n\n if (\n (token.type === 'labelLink' || token.type === 'labelImage') &&\n !token._balanced\n ) {\n result = true\n break\n } // @ts-expect-error If we\u2019ve seen this token, and it was marked as not\n // having any unbalanced bracket before it, we can exit.\n\n if (token._gfmAutolinkLiteralWalkedInto) {\n result = false\n break\n }\n }\n\n if (events.length > 0 && !result) {\n // @ts-expect-error Mark the last token as \u201Cwalked into\u201D w/o finding\n // anything.\n events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true\n }\n\n return result\n}\n", "/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {blankLine} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nconst indent = {\n tokenize: tokenizeIndent,\n partial: true\n}\n/**\n * @returns {Extension}\n */\n\nexport function gfmFootnote() {\n /** @type {Extension} */\n return {\n document: {\n [91]: {\n tokenize: tokenizeDefinitionStart,\n continuation: {\n tokenize: tokenizeDefinitionContinuation\n },\n exit: gfmFootnoteDefinitionEnd\n }\n },\n text: {\n [91]: {\n tokenize: tokenizeGfmFootnoteCall\n },\n [93]: {\n add: 'after',\n tokenize: tokenizePotentialGfmFootnoteCall,\n resolveTo: resolveToPotentialGfmFootnoteCall\n }\n }\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Array<string>} */\n // @ts-expect-error It\u2019s fine!\n\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n /** @type {Token} */\n\n let labelStart // Find an opening.\n\n while (index--) {\n const token = self.events[index][1]\n\n if (token.type === 'labelImage') {\n labelStart = token\n break\n } // Exit if we\u2019ve walked far enough.\n\n if (\n token.type === 'gfmFootnoteCall' ||\n token.type === 'labelLink' ||\n token.type === 'label' ||\n token.type === 'image' ||\n token.type === 'link'\n ) {\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!labelStart || !labelStart._balanced) {\n return nok(code)\n }\n\n const id = normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n\n if (id.charCodeAt(0) !== 94 || !defined.includes(id.slice(1))) {\n return nok(code)\n }\n\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n return ok(code)\n }\n}\n/** @type {Resolver} */\n\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n let index = events.length\n /** @type {Token|undefined} */\n\n let labelStart // Find an opening.\n\n while (index--) {\n if (\n events[index][1].type === 'labelImage' &&\n events[index][0] === 'enter'\n ) {\n labelStart = events[index][1]\n break\n }\n }\n\n // Change the `labelImageMarker` to a `data`.\n events[index + 1][1].type = 'data'\n events[index + 3][1].type = 'gfmFootnoteCallLabelMarker' // The whole (without `!`):\n\n const call = {\n type: 'gfmFootnoteCall',\n start: Object.assign({}, events[index + 3][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n } // The `^` marker\n\n const marker = {\n type: 'gfmFootnoteCallMarker',\n start: Object.assign({}, events[index + 3][1].end),\n end: Object.assign({}, events[index + 3][1].end)\n } // Increment the end 1 character.\n\n marker.end.column++\n marker.end.offset++\n marker.end._bufferIndex++\n const string = {\n type: 'gfmFootnoteCallString',\n start: Object.assign({}, marker.end),\n end: Object.assign({}, events[events.length - 1][1].start)\n }\n const chunk = {\n type: 'chunkString',\n contentType: 'string',\n start: Object.assign({}, string.start),\n end: Object.assign({}, string.end)\n }\n /** @type {Array<Event>} */\n\n const replacement = [\n // Take the `labelImageMarker` (now `data`, the `!`)\n events[index + 1],\n events[index + 2],\n ['enter', call, context], // The `[`\n events[index + 3],\n events[index + 4], // The `^`.\n ['enter', marker, context],\n ['exit', marker, context], // Everything in between.\n ['enter', string, context],\n ['enter', chunk, context],\n ['exit', chunk, context],\n ['exit', string, context], // The ending (`]`, properly parsed and labelled).\n events[events.length - 2],\n events[events.length - 1],\n ['exit', call, context]\n ]\n events.splice(index, events.length - index + 1, ...replacement)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n const self = this\n /** @type {Array<string>} */\n // @ts-expect-error It\u2019s fine!\n\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n let size = 0\n /** @type {boolean} */\n\n let data\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('gfmFootnoteCall')\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n return callStart\n }\n /** @type {State} */\n\n function callStart(code) {\n if (code !== 94) return nok(code)\n effects.enter('gfmFootnoteCallMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallMarker')\n effects.enter('gfmFootnoteCallString')\n effects.enter('chunkString').contentType = 'string'\n return callData\n }\n /** @type {State} */\n\n function callData(code) {\n /** @type {Token} */\n let token\n\n if (code === null || code === 91 || size++ > 999) {\n return nok(code)\n }\n\n if (code === 93) {\n if (!data) {\n return nok(code)\n }\n\n effects.exit('chunkString')\n token = effects.exit('gfmFootnoteCallString')\n return defined.includes(normalizeIdentifier(self.sliceSerialize(token)))\n ? end(code)\n : nok(code)\n }\n\n effects.consume(code)\n\n if (!markdownLineEndingOrSpace(code)) {\n data = true\n }\n\n return code === 92 ? callEscape : callData\n }\n /** @type {State} */\n\n function callEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return callData\n }\n\n return callData(code)\n }\n /** @type {State} */\n\n function end(code) {\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n effects.exit('gfmFootnoteCall')\n return ok\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n const self = this\n /** @type {Array<string>} */\n // @ts-expect-error It\u2019s fine!\n\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n /** @type {string} */\n\n let identifier\n let size = 0\n /** @type {boolean|undefined} */\n\n let data\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('gfmFootnoteDefinition')._container = true\n effects.enter('gfmFootnoteDefinitionLabel')\n effects.enter('gfmFootnoteDefinitionLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionLabelMarker')\n return labelStart\n }\n /** @type {State} */\n\n function labelStart(code) {\n if (code === 94) {\n effects.enter('gfmFootnoteDefinitionMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionMarker')\n effects.enter('gfmFootnoteDefinitionLabelString')\n return atBreak\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function atBreak(code) {\n /** @type {Token} */\n let token\n\n if (code === null || code === 91 || size > 999) {\n return nok(code)\n }\n\n if (code === 93) {\n if (!data) {\n return nok(code)\n }\n\n token = effects.exit('gfmFootnoteDefinitionLabelString')\n identifier = normalizeIdentifier(self.sliceSerialize(token))\n effects.enter('gfmFootnoteDefinitionLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionLabelMarker')\n effects.exit('gfmFootnoteDefinitionLabel')\n return labelAfter\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n size++\n return atBreak\n }\n\n effects.enter('chunkString').contentType = 'string'\n return label(code)\n }\n /** @type {State} */\n\n function label(code) {\n if (\n code === null ||\n markdownLineEnding(code) ||\n code === 91 ||\n code === 93 ||\n size > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n\n if (!markdownLineEndingOrSpace(code)) {\n data = true\n }\n\n size++\n effects.consume(code)\n return code === 92 ? labelEscape : label\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 label\n }\n\n return label(code)\n }\n /** @type {State} */\n\n function labelAfter(code) {\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker') // Any whitespace after the marker is eaten, forming indented code\n // is not possible.\n // No space is also fine, just like a block quote marker.\n\n return factorySpace(effects, done, 'gfmFootnoteDefinitionWhitespace')\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function done(code) {\n if (!defined.includes(identifier)) {\n defined.push(identifier)\n }\n\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n // Either a blank line, which is okay, or an indented thing.\n return effects.check(blankLine, ok, effects.attempt(indent, ok, nok))\n}\n/** @type {Exiter} */\n\nfunction gfmFootnoteDefinitionEnd(effects) {\n effects.exit('gfmFootnoteDefinition')\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'gfmFootnoteDefinitionIndent',\n 4 + 1\n )\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'gfmFootnoteDefinitionIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === 4\n ? ok(code)\n : nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n/**\n * @typedef Options\n * Configuration (optional).\n * @property {boolean} [singleTilde=true]\n * Whether to support strikethrough with a single tilde (`boolean`, default:\n * `true`).\n * Single tildes work on github.com, but are technically prohibited by the\n * GFM spec.\n */\nimport {splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/**\n * @param {Options} [options]\n * @returns {Extension}\n */\nexport function gfmStrikethrough(options = {}) {\n let single = options.singleTilde\n const tokenizer = {\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n }\n\n if (single === null || single === undefined) {\n single = true\n }\n\n return {\n text: {\n [126]: tokenizer\n },\n insideSpan: {\n null: [tokenizer]\n },\n attentionMarkers: {\n null: [126]\n }\n }\n /**\n * Take events and resolve strikethrough.\n *\n * @type {Resolver}\n */\n\n function resolveAllStrikethrough(events, context) {\n let index = -1 // Walk through all events.\n\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'strikethroughSequenceTemporary' &&\n events[index][1]._close\n ) {\n let open = index // Now walk back to find an opener.\n\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'strikethroughSequenceTemporary' &&\n events[open][1]._open && // If the sizes are the same:\n events[index][1].end.offset - events[index][1].start.offset ===\n events[open][1].end.offset - events[open][1].start.offset\n ) {\n events[index][1].type = 'strikethroughSequence'\n events[open][1].type = 'strikethroughSequence'\n const strikethrough = {\n type: 'strikethrough',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[index][1].end)\n }\n const text = {\n type: 'strikethroughText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n } // Opening.\n\n const nextEvents = [\n ['enter', strikethrough, context],\n ['enter', events[open][1], context],\n ['exit', events[open][1], context],\n ['enter', text, context]\n ] // Between.\n\n splice(\n nextEvents,\n nextEvents.length,\n 0,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n ) // Closing.\n\n splice(nextEvents, nextEvents.length, 0, [\n ['exit', text, context],\n ['enter', events[index][1], context],\n ['exit', events[index][1], context],\n ['exit', strikethrough, context]\n ])\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - 2\n break\n }\n }\n }\n }\n\n index = -1\n\n while (++index < events.length) {\n if (events[index][1].type === 'strikethroughSequenceTemporary') {\n events[index][1].type = 'data'\n }\n }\n\n return events\n }\n /** @type {Tokenizer} */\n\n function tokenizeStrikethrough(effects, ok, nok) {\n const previous = this.previous\n const events = this.events\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n if (\n previous === 126 &&\n events[events.length - 1][1].type !== 'characterEscape'\n ) {\n return nok(code)\n }\n\n effects.enter('strikethroughSequenceTemporary')\n return more(code)\n }\n /** @type {State} */\n\n function more(code) {\n const before = classifyCharacter(previous)\n\n if (code === 126) {\n // If this is the third marker, exit.\n if (size > 1) return nok(code)\n effects.consume(code)\n size++\n return more\n }\n\n if (size < 2 && !single) return nok(code)\n const token = effects.exit('strikethroughSequenceTemporary')\n const after = classifyCharacter(code)\n token._open = !after || (after === 2 && Boolean(before))\n token._close = !before || (before === 2 && Boolean(after))\n return ok(code)\n }\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n */\n\n/**\n * @typedef {'left'|'center'|'right'|'none'} Align\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n\n/** @type {Extension} */\nexport const gfmTable = {\n flow: {\n null: {\n tokenize: tokenizeTable,\n resolve: resolveTable\n }\n }\n}\nconst nextPrefixedOrBlank = {\n tokenize: tokenizeNextPrefixedOrBlank,\n partial: true\n}\n/** @type {Resolver} */\n\nfunction resolveTable(events, context) {\n let index = -1\n /** @type {boolean|undefined} */\n\n let inHead\n /** @type {boolean|undefined} */\n\n let inDelimiterRow\n /** @type {boolean|undefined} */\n\n let inRow\n /** @type {number|undefined} */\n\n let contentStart\n /** @type {number|undefined} */\n\n let contentEnd\n /** @type {number|undefined} */\n\n let cellStart\n /** @type {boolean|undefined} */\n\n let seenCellInRow\n\n while (++index < events.length) {\n const token = events[index][1]\n\n if (inRow) {\n if (token.type === 'temporaryTableCellContent') {\n contentStart = contentStart || index\n contentEnd = index\n }\n\n if (\n // Combine separate content parts into one.\n (token.type === 'tableCellDivider' || token.type === 'tableRow') &&\n contentEnd\n ) {\n const content = {\n type: 'tableContent',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n /** @type {Token} */\n\n const text = {\n type: 'chunkText',\n start: content.start,\n end: content.end,\n // @ts-expect-error It\u2019s fine.\n contentType: 'text'\n }\n events.splice(\n contentStart,\n contentEnd - contentStart + 1,\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n )\n index -= contentEnd - contentStart - 3\n contentStart = undefined\n contentEnd = undefined\n }\n }\n\n if (\n events[index][0] === 'exit' &&\n cellStart !== undefined &&\n cellStart + (seenCellInRow ? 0 : 1) < index &&\n (token.type === 'tableCellDivider' ||\n (token.type === 'tableRow' &&\n (cellStart + 3 < index ||\n events[cellStart][1].type !== 'whitespace')))\n ) {\n const cell = {\n type: inDelimiterRow\n ? 'tableDelimiter'\n : inHead\n ? 'tableHeader'\n : 'tableData',\n start: events[cellStart][1].start,\n end: events[index][1].end\n }\n events.splice(index + (token.type === 'tableCellDivider' ? 1 : 0), 0, [\n 'exit',\n cell,\n context\n ])\n events.splice(cellStart, 0, ['enter', cell, context])\n index += 2\n cellStart = index + 1\n seenCellInRow = true\n }\n\n if (token.type === 'tableRow') {\n inRow = events[index][0] === 'enter'\n\n if (inRow) {\n cellStart = index + 1\n seenCellInRow = false\n }\n }\n\n if (token.type === 'tableDelimiterRow') {\n inDelimiterRow = events[index][0] === 'enter'\n\n if (inDelimiterRow) {\n cellStart = index + 1\n seenCellInRow = false\n }\n }\n\n if (token.type === 'tableHead') {\n inHead = events[index][0] === 'enter'\n }\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeTable(effects, ok, nok) {\n const self = this\n /** @type {Array<Align>} */\n\n const align = []\n let tableHeaderCount = 0\n /** @type {boolean|undefined} */\n\n let seenDelimiter\n /** @type {boolean|undefined} */\n\n let hasDash\n return start\n /** @type {State} */\n\n function start(code) {\n // @ts-expect-error Custom.\n effects.enter('table')._align = align\n effects.enter('tableHead')\n effects.enter('tableRow') // If we start with a pipe, we open a cell marker.\n\n if (code === 124) {\n return cellDividerHead(code)\n }\n\n tableHeaderCount++\n effects.enter('temporaryTableCellContent') // Can\u2019t be space or eols at the start of a construct, so we\u2019re in a cell.\n\n return inCellContentHead(code)\n }\n /** @type {State} */\n\n function cellDividerHead(code) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n seenDelimiter = true\n return cellBreakHead\n }\n /** @type {State} */\n\n function cellBreakHead(code) {\n if (code === null || markdownLineEnding(code)) {\n return atRowEndHead(code)\n }\n\n if (markdownSpace(code)) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceHead\n }\n\n if (seenDelimiter) {\n seenDelimiter = undefined\n tableHeaderCount++\n }\n\n if (code === 124) {\n return cellDividerHead(code)\n } // Anything else is cell content.\n\n effects.enter('temporaryTableCellContent')\n return inCellContentHead(code)\n }\n /** @type {State} */\n\n function inWhitespaceHead(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return inWhitespaceHead\n }\n\n effects.exit('whitespace')\n return cellBreakHead(code)\n }\n /** @type {State} */\n\n function inCellContentHead(code) {\n // EOF, whitespace, pipe\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit('temporaryTableCellContent')\n return cellBreakHead(code)\n }\n\n effects.consume(code)\n return code === 92 ? inCellContentEscapeHead : inCellContentHead\n }\n /** @type {State} */\n\n function inCellContentEscapeHead(code) {\n if (code === 92 || code === 124) {\n effects.consume(code)\n return inCellContentHead\n } // Anything else.\n\n return inCellContentHead(code)\n }\n /** @type {State} */\n\n function atRowEndHead(code) {\n if (code === null) {\n return nok(code)\n }\n\n effects.exit('tableRow')\n effects.exit('tableHead')\n const originalInterrupt = self.interrupt\n self.interrupt = true\n return effects.attempt(\n {\n tokenize: tokenizeRowEnd,\n partial: true\n },\n function (code) {\n self.interrupt = originalInterrupt\n effects.enter('tableDelimiterRow')\n return atDelimiterRowBreak(code)\n },\n function (code) {\n self.interrupt = originalInterrupt\n return nok(code)\n }\n )(code)\n }\n /** @type {State} */\n\n function atDelimiterRowBreak(code) {\n if (code === null || markdownLineEnding(code)) {\n return rowEndDelimiter(code)\n }\n\n if (markdownSpace(code)) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceDelimiter\n }\n\n if (code === 45) {\n effects.enter('tableDelimiterFiller')\n effects.consume(code)\n hasDash = true\n align.push('none')\n return inFillerDelimiter\n }\n\n if (code === 58) {\n effects.enter('tableDelimiterAlignment')\n effects.consume(code)\n effects.exit('tableDelimiterAlignment')\n align.push('left')\n return afterLeftAlignment\n } // If we start with a pipe, we open a cell marker.\n\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return atDelimiterRowBreak\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function inWhitespaceDelimiter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return inWhitespaceDelimiter\n }\n\n effects.exit('whitespace')\n return atDelimiterRowBreak(code)\n }\n /** @type {State} */\n\n function inFillerDelimiter(code) {\n if (code === 45) {\n effects.consume(code)\n return inFillerDelimiter\n }\n\n effects.exit('tableDelimiterFiller')\n\n if (code === 58) {\n effects.enter('tableDelimiterAlignment')\n effects.consume(code)\n effects.exit('tableDelimiterAlignment')\n align[align.length - 1] =\n align[align.length - 1] === 'left' ? 'center' : 'right'\n return afterRightAlignment\n }\n\n return atDelimiterRowBreak(code)\n }\n /** @type {State} */\n\n function afterLeftAlignment(code) {\n if (code === 45) {\n effects.enter('tableDelimiterFiller')\n effects.consume(code)\n hasDash = true\n return inFillerDelimiter\n } // Anything else is not ok.\n\n return nok(code)\n }\n /** @type {State} */\n\n function afterRightAlignment(code) {\n if (code === null || markdownLineEnding(code)) {\n return rowEndDelimiter(code)\n }\n\n if (markdownSpace(code)) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceDelimiter\n } // `|`\n\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return atDelimiterRowBreak\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function rowEndDelimiter(code) {\n effects.exit('tableDelimiterRow') // Exit if there was no dash at all, or if the header cell count is not the\n // delimiter cell count.\n\n if (!hasDash || tableHeaderCount !== align.length) {\n return nok(code)\n }\n\n if (code === null) {\n return tableClose(code)\n }\n\n return effects.check(\n nextPrefixedOrBlank,\n tableClose,\n effects.attempt(\n {\n tokenize: tokenizeRowEnd,\n partial: true\n },\n factorySpace(effects, bodyStart, 'linePrefix', 4),\n tableClose\n )\n )(code)\n }\n /** @type {State} */\n\n function tableClose(code) {\n effects.exit('table')\n return ok(code)\n }\n /** @type {State} */\n\n function bodyStart(code) {\n effects.enter('tableBody')\n return rowStartBody(code)\n }\n /** @type {State} */\n\n function rowStartBody(code) {\n effects.enter('tableRow') // If we start with a pipe, we open a cell marker.\n\n if (code === 124) {\n return cellDividerBody(code)\n }\n\n effects.enter('temporaryTableCellContent') // Can\u2019t be space or eols at the start of a construct, so we\u2019re in a cell.\n\n return inCellContentBody(code)\n }\n /** @type {State} */\n\n function cellDividerBody(code) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return cellBreakBody\n }\n /** @type {State} */\n\n function cellBreakBody(code) {\n if (code === null || markdownLineEnding(code)) {\n return atRowEndBody(code)\n }\n\n if (markdownSpace(code)) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceBody\n } // `|`\n\n if (code === 124) {\n return cellDividerBody(code)\n } // Anything else is cell content.\n\n effects.enter('temporaryTableCellContent')\n return inCellContentBody(code)\n }\n /** @type {State} */\n\n function inWhitespaceBody(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return inWhitespaceBody\n }\n\n effects.exit('whitespace')\n return cellBreakBody(code)\n }\n /** @type {State} */\n\n function inCellContentBody(code) {\n // EOF, whitespace, pipe\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit('temporaryTableCellContent')\n return cellBreakBody(code)\n }\n\n effects.consume(code)\n return code === 92 ? inCellContentEscapeBody : inCellContentBody\n }\n /** @type {State} */\n\n function inCellContentEscapeBody(code) {\n if (code === 92 || code === 124) {\n effects.consume(code)\n return inCellContentBody\n } // Anything else.\n\n return inCellContentBody(code)\n }\n /** @type {State} */\n\n function atRowEndBody(code) {\n effects.exit('tableRow')\n\n if (code === null) {\n return tableBodyClose(code)\n }\n\n return effects.check(\n nextPrefixedOrBlank,\n tableBodyClose,\n effects.attempt(\n {\n tokenize: tokenizeRowEnd,\n partial: true\n },\n factorySpace(effects, rowStartBody, 'linePrefix', 4),\n tableBodyClose\n )\n )(code)\n }\n /** @type {State} */\n\n function tableBodyClose(code) {\n effects.exit('tableBody')\n return tableClose(code)\n }\n /** @type {Tokenizer} */\n\n function tokenizeRowEnd(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n /** @type {State} */\n\n function prefixed(code) {\n // Blank or interrupting line.\n if (\n self.parser.lazy[self.now().line] ||\n code === null ||\n markdownLineEnding(code)\n ) {\n return nok(code)\n }\n\n const tail = self.events[self.events.length - 1] // Indented code can interrupt delimiter and body rows.\n\n if (\n !self.parser.constructs.disable.null.includes('codeIndented') &&\n tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ) {\n return nok(code)\n }\n\n self._gfmTableDynamicInterruptHack = true\n return effects.check(\n self.parser.constructs.flow,\n function (code) {\n self._gfmTableDynamicInterruptHack = false\n return nok(code)\n },\n function (code) {\n self._gfmTableDynamicInterruptHack = false\n return ok(code)\n }\n )(code)\n }\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeNextPrefixedOrBlank(effects, ok, nok) {\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n // This is a check, so we don\u2019t care about tokens, but we open a bogus one\n // so we\u2019re valid.\n effects.enter('check') // EOL.\n\n effects.consume(code)\n return whitespace\n }\n /** @type {State} */\n\n function whitespace(code) {\n if (code === -1 || code === 32) {\n effects.consume(code)\n size++\n return size === 4 ? ok : whitespace\n } // EOF or whitespace\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n return ok(code)\n } // Anything else.\n\n return nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEndingOrSpace,\n markdownLineEnding\n} from 'micromark-util-character'\nconst tasklistCheck = {\n tokenize: tokenizeTasklistCheck\n}\nexport const gfmTaskListItem = {\n text: {\n [91]: tasklistCheck\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n const self = this\n return open\n /** @type {State} */\n\n function open(code) {\n if (\n // Exit if there\u2019s stuff before.\n self.previous !== null || // Exit if not in the first content that is the first child of a list\n // item.\n !self._gfmTasklistFirstContentOfListItem\n ) {\n return nok(code)\n }\n\n effects.enter('taskListCheck')\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n return inside\n }\n /** @type {State} */\n\n function inside(code) {\n // To match how GH works in comments, use `markdownSpace` (`[ \\t]`) instead\n // of `markdownLineEndingOrSpace` (`[ \\t\\r\\n]`).\n if (markdownLineEndingOrSpace(code)) {\n effects.enter('taskListCheckValueUnchecked')\n effects.consume(code)\n effects.exit('taskListCheckValueUnchecked')\n return close\n }\n\n if (code === 88 || code === 120) {\n effects.enter('taskListCheckValueChecked')\n effects.consume(code)\n effects.exit('taskListCheckValueChecked')\n return close\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function close(code) {\n if (code === 93) {\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n effects.exit('taskListCheck')\n return effects.check(\n {\n tokenize: spaceThenNonSpace\n },\n ok,\n nok\n )\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction spaceThenNonSpace(effects, ok, nok) {\n const self = this\n return factorySpace(effects, after, 'whitespace')\n /** @type {State} */\n\n function after(code) {\n const tail = self.events[self.events.length - 1]\n return (\n // We either found spaces\u2026\n ((tail && tail[1].type === 'whitespace') || // \u2026or it was followed by a line ending, in which case, there has to be\n // non-whitespace after that line ending, because otherwise we\u2019d get an\n // EOF as the content is closed with blank lines.\n markdownLineEnding(code)) &&\n code !== null\n ? ok(code)\n : nok(code)\n )\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n */\n\nimport {\n combineExtensions,\n combineHtmlExtensions\n} from 'micromark-util-combine-extensions'\nimport {\n gfmAutolinkLiteral,\n gfmAutolinkLiteralHtml\n} from 'micromark-extension-gfm-autolink-literal'\nimport {gfmFootnote, gfmFootnoteHtml} from 'micromark-extension-gfm-footnote'\nimport {\n gfmStrikethrough,\n gfmStrikethroughHtml\n} from 'micromark-extension-gfm-strikethrough'\nimport {gfmTable, gfmTableHtml} from 'micromark-extension-gfm-table'\nimport {gfmTagfilterHtml} from 'micromark-extension-gfm-tagfilter'\nimport {\n gfmTaskListItem,\n gfmTaskListItemHtml\n} from 'micromark-extension-gfm-task-list-item'\n\n/**\n * Support GFM or markdown on github.com.\n *\n * @param {Options} [options]\n * @returns {Extension}\n */\nexport function gfm(options) {\n return combineExtensions([\n gfmAutolinkLiteral,\n gfmFootnote(),\n gfmStrikethrough(options),\n gfmTable,\n gfmTaskListItem\n ])\n}\n\n/**\n * Support to compile GFM to HTML.\n *\n * @param {HtmlOptions} [options]\n * @returns {HtmlExtension}\n */\nexport function gfmHtml(options) {\n return combineHtmlExtensions([\n gfmAutolinkLiteralHtml,\n gfmFootnoteHtml(options),\n gfmStrikethroughHtml,\n gfmTableHtml,\n gfmTagfilterHtml,\n gfmTaskListItemHtml\n ])\n}\n", "/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n * Value to search in.\n * @param {string} character\n * Character (or substring) to look for.\n * @return {number}\n * Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n const source = String(value)\n\n if (typeof character !== 'string') {\n throw new TypeError('Expected character')\n }\n\n let count = 0\n let index = source.indexOf(character)\n\n while (index !== -1) {\n count++\n index = source.indexOf(character, index + character.length)\n }\n\n return count\n}\n", "export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it\u2019s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns\u2019 stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n", "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n *\n * @typedef {string} Type\n * @typedef {Object<string, unknown>} Props\n *\n * @typedef {null|undefined|Type|Props|TestFunctionAnything|Array.<Type|Props|TestFunctionAnything>} Test\n */\n\n/**\n * Check if a node passes a test\n *\n * @callback TestFunctionAnything\n * @param {Node} node\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean|void}\n */\n\n/**\n * Check if a node passes a certain node test\n *\n * @template {Node} X\n * @callback TestFunctionPredicate\n * @param {Node} node\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {node is X}\n */\n\n/**\n * @callback AssertAnything\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean}\n */\n\n/**\n * Check if a node passes a certain node test\n *\n * @template {Node} Y\n * @callback AssertPredicate\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {node is Y}\n */\n\nexport const is =\n /**\n * Check if a node passes a test.\n * When a `parent` node is known the `index` of node should also be given.\n *\n * @type {(\n * (<T extends Node>(node: unknown, test: T['type']|Partial<T>|TestFunctionPredicate<T>|Array.<T['type']|Partial<T>|TestFunctionPredicate<T>>, index?: number|null|undefined, parent?: Parent|null|undefined, context?: unknown) => node is T) &\n * ((node?: unknown, test?: Test, index?: number|null|undefined, parent?: Parent|null|undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * Check if a node passes a test.\n * When a `parent` node is known the `index` of node should also be given.\n *\n * @param {unknown} [node] Node to check\n * @param {Test} [test]\n * When nullish, checks if `node` is a `Node`.\n * When `string`, works like passing `function (node) {return 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 any one of the subtests pass.\n * @param {number|null|undefined} [index] Position of `node` in `parent`\n * @param {Parent|null|undefined} [parent] Parent of `node`\n * @param {unknown} [context] Context object to invoke `test` with\n * @returns {boolean} Whether test passed and `node` is a `Node` (object with `type` set to non-empty `string`).\n */\n // eslint-disable-next-line max-params\n function is(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 // @ts-expect-error Looks like a node.\n return node && node.type && typeof node.type === 'string'\n ? Boolean(check.call(context, node, index, parent))\n : false\n }\n )\n\nexport const convert =\n /**\n * @type {(\n * (<T extends Node>(test: T['type']|Partial<T>|TestFunctionPredicate<T>) => AssertPredicate<T>) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * Generate an assertion from a check.\n * @param {Test} [test]\n * When nullish, checks if `node` is a `Node`.\n * When `string`, works like passing `function (node) {return 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 any one of the subtests pass.\n * @returns {AssertAnything}\n */\n function (test) {\n if (test === undefined || test === null) {\n return ok\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n/**\n * @param {Array.<Type|Props|TestFunctionAnything>} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array.<AssertAnything>} */\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 * @param {unknown[]} parameters\n * @returns {boolean}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].call(this, ...parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Utility to assert each property in `test` is represented in `node`, and each\n * values are strictly equal.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n /** @type {string} */\n let key\n\n for (key in check) {\n // @ts-expect-error: hush, it sure works as an index.\n if (node[key] !== check[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Utility to convert a string into a function which checks a given node\u2019s type\n * for said string.\n *\n * @param {Type} check\n * @returns {AssertAnything}\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 * Utility to convert a string into a function which checks a given node\u2019s type\n * for said string.\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {Array.<unknown>} parameters\n * @returns {boolean}\n */\n function assertion(...parameters) {\n // @ts-expect-error: spreading is fine.\n return Boolean(check.call(this, ...parameters))\n }\n}\n\n// Utility to return true.\nfunction ok() {\n return true\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} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('./complex-types.js').Action} Action\n * @typedef {import('./complex-types.js').Index} Index\n * @typedef {import('./complex-types.js').ActionTuple} ActionTuple\n * @typedef {import('./complex-types.js').VisitorResult} VisitorResult\n * @typedef {import('./complex-types.js').Visitor} Visitor\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from './color.js'\n\n/**\n * Continue traversing as normal\n */\nexport const CONTINUE = true\n/**\n * Do not traverse this node\u2019s children\n */\nexport const SKIP = 'skip'\n/**\n * Stop traversing immediately\n */\nexport const EXIT = false\n\n/**\n * Visit children of tree which pass test.\n *\n * @param tree\n * Tree to walk\n * @param [test]\n * `unist-util-is`-compatible test\n * @param visitor\n * Function called for nodes that pass `test`.\n * @param [reverse=false]\n * Traverse in reverse preorder (NRL) instead of preorder (NLR) (default).\n */\nexport const visitParents =\n /**\n * @type {(\n * (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: import('./complex-types.js').BuildVisitor<Tree, Check>, reverse?: boolean) => void) &\n * (<Tree extends Node>(tree: Tree, visitor: import('./complex-types.js').BuildVisitor<Tree>, reverse?: boolean) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {import('./complex-types.js').Visitor<Node>} visitor\n * @param {boolean} [reverse=false]\n */\n function (tree, test, visitor, reverse) {\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 test = null\n }\n\n const is = convert(test)\n const step = reverse ? -1 : 1\n\n factory(tree, null, [])()\n\n /**\n * @param {Node} node\n * @param {number?} index\n * @param {Array<Parent>} parents\n */\n function factory(node, index, parents) {\n /** @type {Record<string, unknown>} */\n // @ts-expect-error: hush\n const value = typeof node === 'object' && node !== null ? node : {}\n /** @type {string|undefined} */\n let name\n\n if (typeof value.type === 'string') {\n name =\n typeof value.tagName === 'string'\n ? value.tagName\n : typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' +\n color(value.type + (name ? '<' + name + '>' : '')) +\n ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {ActionTuple} */\n let result = []\n /** @type {ActionTuple} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array<Parent>} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n // @ts-expect-error looks like a parent.\n if (node.children && result[0] !== SKIP) {\n // @ts-expect-error looks like a parent.\n offset = (reverse ? node.children.length : -1) + step\n // @ts-expect-error looks like a parent.\n grandparents = parents.concat(node)\n\n // @ts-expect-error looks like a parent.\n while (offset > -1 && offset < node.children.length) {\n // @ts-expect-error looks like a parent.\n subresult = factory(node.children[offset], 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 return result\n }\n }\n }\n )\n\n/**\n * @param {VisitorResult} value\n * @returns {ActionTuple}\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]\n}\n", "/**\n * @typedef Options\n * Configuration (optional).\n * @property {Test} [ignore]\n * `unist-util-is` test used to assert parents\n *\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Text} Text\n * @typedef {Content|Root} Node\n * @typedef {Exclude<Extract<Node, import('mdast').Parent>, Root>} Parent\n *\n * @typedef {import('unist-util-visit-parents').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n *\n * @typedef RegExpMatchObject\n * @property {number} index\n * @property {string} input\n * @property {[Root, ...Array<Parent>, Text]} stack\n *\n * @typedef {string|RegExp} Find\n * @typedef {string|ReplaceFunction} Replace\n *\n * @typedef {[Find, Replace]} FindAndReplaceTuple\n * @typedef {Record<string, Replace>} FindAndReplaceSchema\n * @typedef {Array<FindAndReplaceTuple>} FindAndReplaceList\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * @typedef {Array<Pair>} Pairs\n */\n\n/**\n * @callback ReplaceFunction\n * @param {...any} parameters\n * @returns {Array<PhrasingContent>|PhrasingContent|string|false|undefined|null}\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param tree mdast tree\n * @param find Value to find and remove. When `string`, escaped and made into a global `RegExp`\n * @param [replace] Value to insert.\n * * When `string`, turned into a Text node.\n * * When `Function`, called with the results of calling `RegExp.exec` as\n * arguments, in which case it can return a single or a list of `Node`,\n * a `string` (which is wrapped in a `Text` node), or `false` to not replace\n * @param [options] Configuration.\n */\nexport const findAndReplace =\n /**\n * @type {(\n * ((tree: Node, find: Find, replace?: Replace, options?: Options) => Node) &\n * ((tree: Node, schema: FindAndReplaceSchema|FindAndReplaceList, options?: Options) => Node)\n * )}\n **/\n (\n /**\n * @param {Node} tree\n * @param {Find|FindAndReplaceSchema|FindAndReplaceList} find\n * @param {Replace|Options} [replace]\n * @param {Options} [options]\n */\n function (tree, find, replace, options) {\n /** @type {Options|undefined} */\n let settings\n /** @type {FindAndReplaceSchema|FindAndReplaceList} */\n let schema\n\n if (typeof find === 'string' || find instanceof RegExp) {\n // @ts-expect-error don\u2019t expect options twice.\n schema = [[find, replace]]\n settings = options\n } else {\n schema = find\n // @ts-expect-error don\u2019t expect replace twice.\n settings = replace\n }\n\n if (!settings) {\n settings = {}\n }\n\n const ignored = convert(settings.ignore || [])\n const pairs = toPairs(schema)\n let pairIndex = -1\n\n while (++pairIndex < pairs.length) {\n visitParents(tree, 'text', visitor)\n }\n\n return tree\n\n /** @type {import('unist-util-visit-parents/complex-types').BuildVisitor<Root, 'text'>} */\n function visitor(node, parents) {\n let index = -1\n /** @type {Parent|undefined} */\n let grandparent\n\n while (++index < parents.length) {\n const parent = /** @type {Parent} */ (parents[index])\n\n if (\n ignored(\n parent,\n // @ts-expect-error mdast vs. unist parent.\n grandparent ? grandparent.children.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n if (grandparent) {\n // @ts-expect-error: stack is fine.\n return handler(node, parents)\n }\n }\n\n /**\n * @param {Text} node\n * @param {[Root, ...Array<Parent>]} parents\n * @returns {VisitorResult}\n */\n function handler(node, parents) {\n const parent = parents[parents.length - 1]\n const find = pairs[pairIndex][0]\n const replace = pairs[pairIndex][1]\n let start = 0\n // @ts-expect-error: TS is wrong, some of these children can be text.\n const index = parent.children.indexOf(node)\n let change = false\n /** @type {Array<PhrasingContent>} */\n let nodes = []\n /** @type {number|undefined} */\n let position\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n position = match.index\n /** @type {RegExpMatchObject} */\n const matchObject = {\n index: match.index,\n input: match.input,\n stack: [...parents, node]\n }\n let value = replace(...match, matchObject)\n\n if (typeof value === 'string') {\n value = value.length > 0 ? {type: 'text', value} : undefined\n }\n\n if (value !== false) {\n if (start !== position) {\n nodes.push({\n type: 'text',\n value: node.value.slice(start, position)\n })\n }\n\n if (Array.isArray(value)) {\n nodes.push(...value)\n } else if (value) {\n nodes.push(value)\n }\n\n start = position + match[0].length\n change = true\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (change) {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n parent.children.splice(index, 1, ...nodes)\n } else {\n nodes = [node]\n }\n\n return index + nodes.length\n }\n }\n )\n\n/**\n * @param {FindAndReplaceSchema|FindAndReplaceList} schema\n * @returns {Pairs}\n */\nfunction toPairs(schema) {\n /** @type {Pairs} */\n const result = []\n\n if (typeof schema !== 'object') {\n throw new TypeError('Expected array or object as schema')\n }\n\n if (Array.isArray(schema)) {\n let index = -1\n\n while (++index < schema.length) {\n result.push([\n toExpression(schema[index][0]),\n toFunction(schema[index][1])\n ])\n }\n } else {\n /** @type {string} */\n let key\n\n for (key in schema) {\n if (own.call(schema, key)) {\n result.push([toExpression(key), toFunction(schema[key])])\n }\n }\n }\n\n return result\n}\n\n/**\n * @param {Find} find\n * @returns {RegExp}\n */\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * @param {Replace} replace\n * @returns {ReplaceFunction}\n */\nfunction toFunction(replace) {\n return typeof replace === 'function' ? replace : () => replace\n}\n", "/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Transform} FromMarkdownTransform\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown/lib/types.js').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n * @typedef {import('mdast-util-find-and-replace').RegExpMatchObject} RegExpMatchObject\n * @typedef {import('mdast-util-find-and-replace').PhrasingContent} PhrasingContent\n */\n\nimport {ccount} from 'ccount'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\n\nconst inConstruct = 'phrasing'\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n/** @type {FromMarkdownExtension} */\nexport const gfmAutolinkLiteralFromMarkdown = {\n transforms: [transformGfmAutolinkLiterals],\n enter: {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n },\n exit: {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n }\n}\n\n/** @type {ToMarkdownExtension} */\nexport const gfmAutolinkLiteralToMarkdown = {\n unsafe: [\n {\n character: '@',\n before: '[+\\\\-.\\\\w]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {\n character: '.',\n before: '[Ww]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {character: ':', before: '[ps]', after: '\\\\/', inConstruct, notInConstruct}\n ]\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterLiteralAutolink(token) {\n this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token)\n const node = /** @type {Link} */ (this.stack[this.stack.length - 1])\n node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitLiteralAutolink(token) {\n this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, findEmail]\n ],\n {ignore: ['link', 'linkReference']}\n )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n let prefix = ''\n\n // Not an expected previous character.\n if (!previous(match)) {\n return false\n }\n\n // Treat `www` as part of the domain.\n if (/^w/i.test(protocol)) {\n domain = protocol + domain\n protocol = ''\n prefix = 'http://'\n }\n\n if (!isCorrectDomain(domain)) {\n return false\n }\n\n const parts = splitUrl(domain + path)\n\n if (!parts[0]) return false\n\n /** @type {PhrasingContent} */\n const result = {\n type: 'link',\n title: null,\n url: prefix + protocol + parts[0],\n children: [{type: 'text', value: protocol + parts[0]}]\n }\n\n if (parts[1]) {\n return [result, {type: 'text', value: parts[1]}]\n }\n\n return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n */\nfunction findEmail(_, atext, label, match) {\n if (\n // Not an expected previous character.\n !previous(match, true) ||\n // Label ends in not allowed character.\n /[_-\\d]$/.test(label)\n ) {\n return false\n }\n\n return {\n type: 'link',\n title: null,\n url: 'mailto:' + atext + '@' + label,\n children: [{type: 'text', value: atext + '@' + label}]\n }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n const parts = domain.split('.')\n\n if (\n parts.length < 2 ||\n (parts[parts.length - 1] &&\n (/_/.test(parts[parts.length - 1]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n (parts[parts.length - 2] &&\n (/_/.test(parts[parts.length - 2]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n ) {\n return false\n }\n\n return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string|undefined]}\n */\nfunction splitUrl(url) {\n const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n /** @type {number} */\n let closingParenIndex\n /** @type {number} */\n let openingParens\n /** @type {number} */\n let closingParens\n /** @type {string|undefined} */\n let trail\n\n if (trailExec) {\n url = url.slice(0, trailExec.index)\n trail = trailExec[0]\n closingParenIndex = trail.indexOf(')')\n openingParens = ccount(url, '(')\n closingParens = ccount(url, ')')\n\n while (closingParenIndex !== -1 && openingParens > closingParens) {\n url += trail.slice(0, closingParenIndex + 1)\n trail = trail.slice(closingParenIndex + 1)\n closingParenIndex = trail.indexOf(')')\n closingParens++\n }\n }\n\n return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n const code = match.input.charCodeAt(match.index - 1)\n\n return (\n (match.index === 0 ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)) &&\n (!email || code !== 47)\n )\n}\n", "/**\n * @typedef {import('mdast').Association} Association\n */\n\nimport {decodeString} from 'micromark-util-decode-string'\n\n/**\n * The `label` of an association is the string value: character escapes and\n * references work, and casing is intact.\n * The `identifier` is used to match one association to another: controversially,\n * character escapes and references don\u2019t work in this matching: `©` does\n * not match `\u00A9`, and `\\+` does not match `+`.\n * But casing is ignored (and whitespace) is trimmed and collapsed: ` A\\nb`\n * matches `a b`.\n * So, we do prefer the label when figuring out how we\u2019re going to serialize:\n * it has whitespace, casing, and we can ignore most useless character escapes\n * and all character references.\n *\n * @param {Association} node\n * @returns {string}\n */\nexport function association(node) {\n if (node.label || !node.identifier) {\n return node.label || ''\n }\n\n return decodeString(node.identifier)\n}\n", "/**\n * @typedef {import('unist').Point} Point\n * @typedef {import('../types.js').TrackFields} TrackFields\n */\n\n/**\n * Functions to track output positions.\n * This info isn\u2019t used yet but suchs functionality allows line wrapping,\n * and theoretically source maps (though, is there practical use in that?).\n *\n * @param {TrackFields} options_\n */\nexport function track(options_) {\n // Defaults are used to prevent crashes when older utilities somehow activate\n // this code.\n /* c8 ignore next 5 */\n const options = options_ || {}\n const now = options.now || {}\n let lineShift = options.lineShift || 0\n let line = now.line || 1\n let column = now.column || 1\n\n return {move, current, shift}\n\n /**\n * Get the current tracked info.\n *\n * @returns {{now: Point, lineShift: number}}\n */\n function current() {\n return {now: {line, column}, lineShift}\n }\n\n /**\n * Define an increased line shift (the typical indent for lines).\n *\n * @param {number} value\n */\n function shift(value) {\n lineShift += value\n }\n\n /**\n * Move past a string.\n *\n * @param {string} value\n * @returns {string}\n */\n function move(value = '') {\n const chunks = value.split(/\\r?\\n|\\r/g)\n const tail = chunks[chunks.length - 1]\n line += chunks.length - 1\n column =\n chunks.length === 1 ? column + tail.length : 1 + tail.length + lineShift\n return value\n }\n}\n", "/**\n * @typedef {import('../types.js').Node} Node\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').Join} Join\n * @typedef {import('../types.js').Context} Context\n * @typedef {import('../types.js').TrackFields} TrackFields\n */\n\nimport {track} from './track.js'\n\n/**\n * @param {Parent} parent\n * @param {Context} context\n * @param {TrackFields} safeOptions\n * @returns {string}\n */\nexport function containerFlow(parent, context, safeOptions) {\n const indexStack = context.indexStack\n const children = parent.children || []\n const tracker = track(safeOptions)\n /** @type {Array<string>} */\n const results = []\n let index = -1\n\n indexStack.push(-1)\n\n while (++index < children.length) {\n const child = children[index]\n\n indexStack[indexStack.length - 1] = index\n\n results.push(\n tracker.move(\n context.handle(child, parent, context, {\n before: '\\n',\n after: '\\n',\n ...tracker.current()\n })\n )\n )\n\n if (child.type !== 'list') {\n context.bulletLastUsed = undefined\n }\n\n if (index < children.length - 1) {\n results.push(tracker.move(between(child, children[index + 1])))\n }\n }\n\n indexStack.pop()\n\n return results.join('')\n\n /**\n * @param {Node} left\n * @param {Node} right\n * @returns {string}\n */\n function between(left, right) {\n let index = context.join.length\n\n while (index--) {\n const result = context.join[index](left, right, parent, context)\n\n if (result === true || result === 1) {\n break\n }\n\n if (typeof result === 'number') {\n return '\\n'.repeat(1 + result)\n }\n\n if (result === false) {\n return '\\n\\n<!---->\\n\\n'\n }\n }\n\n return '\\n\\n'\n }\n}\n", "/**\n * @callback Map\n * @param {string} value\n * @param {number} line\n * @param {boolean} blank\n * @returns {string}\n */\n\nconst eol = /\\r?\\n|\\r/g\n\n/**\n * @param {string} value\n * @param {Map} map\n * @returns {string}\n */\nexport function indentLines(value, map) {\n /** @type {Array<string>} */\n const result = []\n let start = 0\n let line = 0\n /** @type {RegExpExecArray|null} */\n let match\n\n while ((match = eol.exec(value))) {\n one(value.slice(start, match.index))\n result.push(match[0])\n start = match.index + match[0].length\n line++\n }\n\n one(value.slice(start))\n\n return result.join('')\n\n /**\n * @param {string} value\n */\n function one(value) {\n result.push(map(value, line, !value))\n }\n}\n", "/**\n * @typedef {import('../types.js').Unsafe} Unsafe\n */\n\n/**\n * @param {Unsafe} pattern\n * @returns {RegExp}\n */\nexport function patternCompile(pattern) {\n if (!pattern._compiled) {\n const before =\n (pattern.atBreak ? '[\\\\r\\\\n][\\\\t ]*' : '') +\n (pattern.before ? '(?:' + pattern.before + ')' : '')\n\n pattern._compiled = new RegExp(\n (before ? '(' + before + ')' : '') +\n (/[|\\\\{}()[\\]^$+*?.-]/.test(pattern.character) ? '\\\\' : '') +\n pattern.character +\n (pattern.after ? '(?:' + pattern.after + ')' : ''),\n 'g'\n )\n }\n\n return pattern._compiled\n}\n", "/**\n * @typedef {import('../types.js').Unsafe} Unsafe\n */\n\n/**\n * @param {Array<string>} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nexport function patternInScope(stack, pattern) {\n return (\n listInScope(stack, pattern.inConstruct, true) &&\n !listInScope(stack, pattern.notInConstruct, false)\n )\n}\n\n/**\n * @param {Array<string>} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n if (!list) {\n return none\n }\n\n if (typeof list === 'string') {\n list = [list]\n }\n\n let index = -1\n\n while (++index < list.length) {\n if (stack.includes(list[index])) {\n return true\n }\n }\n\n return false\n}\n", "/**\n * @typedef {import('../types.js').Context} Context\n * @typedef {import('../types.js').SafeOptions} SafeOptions\n */\n\nimport {patternCompile} from './pattern-compile.js'\nimport {patternInScope} from './pattern-in-scope.js'\n\n/**\n * @param {Context} context\n * @param {string|null|undefined} input\n * @param {SafeOptions & {encode?: Array<string>}} config\n * @returns {string}\n */\nexport function safe(context, input, config) {\n const value = (config.before || '') + (input || '') + (config.after || '')\n /** @type {Array<number>} */\n const positions = []\n /** @type {Array<string>} */\n const result = []\n /** @type {Record<number, {before: boolean, after: boolean}>} */\n const infos = {}\n let index = -1\n\n while (++index < context.unsafe.length) {\n const pattern = context.unsafe[index]\n\n if (!patternInScope(context.stack, pattern)) {\n continue\n }\n\n const expression = patternCompile(pattern)\n /** @type {RegExpExecArray|null} */\n let match\n\n while ((match = expression.exec(value))) {\n const before = 'before' in pattern || Boolean(pattern.atBreak)\n const after = 'after' in pattern\n const position = match.index + (before ? match[1].length : 0)\n\n if (positions.includes(position)) {\n if (infos[position].before && !before) {\n infos[position].before = false\n }\n\n if (infos[position].after && !after) {\n infos[position].after = false\n }\n } else {\n positions.push(position)\n infos[position] = {before, after}\n }\n }\n }\n\n positions.sort(numerical)\n\n let start = config.before ? config.before.length : 0\n const end = value.length - (config.after ? config.after.length : 0)\n index = -1\n\n while (++index < positions.length) {\n const position = positions[index]\n\n // Character before or after matched:\n if (position < start || position >= end) {\n continue\n }\n\n // If this character is supposed to be escaped because it has a condition on\n // the next character, and the next character is definitly being escaped,\n // then skip this escape.\n if (\n (position + 1 < end &&\n positions[index + 1] === position + 1 &&\n infos[position].after &&\n !infos[position + 1].before &&\n !infos[position + 1].after) ||\n (positions[index - 1] === position - 1 &&\n infos[position].before &&\n !infos[position - 1].before &&\n !infos[position - 1].after)\n ) {\n continue\n }\n\n if (start !== position) {\n // If we have to use a character reference, an ampersand would be more\n // correct, but as backslashes only care about punctuation, either will\n // do the trick\n result.push(escapeBackslashes(value.slice(start, position), '\\\\'))\n }\n\n start = position\n\n if (\n /[!-/:-@[-`{-~]/.test(value.charAt(position)) &&\n (!config.encode || !config.encode.includes(value.charAt(position)))\n ) {\n // Character escape.\n result.push('\\\\')\n } else {\n // Character reference.\n result.push(\n '&#x' + value.charCodeAt(position).toString(16).toUpperCase() + ';'\n )\n start++\n }\n }\n\n result.push(escapeBackslashes(value.slice(start, end), config.after))\n\n return result.join('')\n}\n\n/**\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\nfunction numerical(a, b) {\n return a - b\n}\n\n/**\n * @param {string} value\n * @param {string} after\n * @returns {string}\n */\nfunction escapeBackslashes(value, after) {\n const expression = /\\\\(?=[!-/:-@[-`{-~])/g\n /** @type {Array<number>} */\n const positions = []\n /** @type {Array<string>} */\n const results = []\n const whole = value + after\n let index = -1\n let start = 0\n /** @type {RegExpExecArray|null} */\n let match\n\n while ((match = expression.exec(whole))) {\n positions.push(match.index)\n }\n\n while (++index < positions.length) {\n if (start !== positions[index]) {\n results.push(value.slice(start, positions[index]))\n }\n\n results.push('\\\\')\n start = positions[index]\n }\n\n results.push(value.slice(start))\n\n return results.join('')\n}\n", "/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Map} Map\n */\n\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {association} from 'mdast-util-to-markdown/lib/util/association.js'\nimport {containerFlow} from 'mdast-util-to-markdown/lib/util/container-flow.js'\nimport {indentLines} from 'mdast-util-to-markdown/lib/util/indent-lines.js'\nimport {safe} from 'mdast-util-to-markdown/lib/util/safe.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n/**\n * @returns {FromMarkdownExtension}\n */\nexport function gfmFootnoteFromMarkdown() {\n return {\n enter: {\n gfmFootnoteDefinition: enterFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n gfmFootnoteCall: enterFootnoteCall,\n gfmFootnoteCallString: enterFootnoteCallString\n },\n exit: {\n gfmFootnoteDefinition: exitFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n gfmFootnoteCall: exitFootnoteCall,\n gfmFootnoteCallString: exitFootnoteCallString\n }\n }\n\n /** @type {FromMarkdownHandle} */\n function enterFootnoteDefinition(token) {\n this.enter(\n {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n token\n )\n }\n\n /** @type {FromMarkdownHandle} */\n function enterFootnoteDefinitionLabelString() {\n this.buffer()\n }\n\n /** @type {FromMarkdownHandle} */\n function exitFootnoteDefinitionLabelString(token) {\n const label = this.resume()\n const node = /** @type {FootnoteDefinition} */ (\n this.stack[this.stack.length - 1]\n )\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /** @type {FromMarkdownHandle} */\n function exitFootnoteDefinition(token) {\n this.exit(token)\n }\n\n /** @type {FromMarkdownHandle} */\n function enterFootnoteCall(token) {\n this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n }\n\n /** @type {FromMarkdownHandle} */\n function enterFootnoteCallString() {\n this.buffer()\n }\n\n /** @type {FromMarkdownHandle} */\n function exitFootnoteCallString(token) {\n const label = this.resume()\n const node = /** @type {FootnoteDefinition} */ (\n this.stack[this.stack.length - 1]\n )\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /** @type {FromMarkdownHandle} */\n function exitFootnoteCall(token) {\n this.exit(token)\n }\n}\n\n/**\n * @returns {ToMarkdownExtension}\n */\nexport function gfmFootnoteToMarkdown() {\n footnoteReference.peek = footnoteReferencePeek\n\n return {\n // This is on by default already.\n unsafe: [{character: '[', inConstruct: ['phrasing', 'label', 'reference']}],\n handlers: {footnoteDefinition, footnoteReference}\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\n function footnoteReference(node, _, context, safeOptions) {\n const tracker = track(safeOptions)\n let value = tracker.move('[^')\n const exit = context.enter('footnoteReference')\n const subexit = context.enter('reference')\n value += tracker.move(\n safe(context, association(node), {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n subexit()\n exit()\n value += tracker.move(']')\n return value\n }\n\n /** @type {ToMarkdownHandle} */\n function footnoteReferencePeek() {\n return '['\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {FootnoteDefinition} node\n */\n function footnoteDefinition(node, _, context, safeOptions) {\n const tracker = track(safeOptions)\n let value = tracker.move('[^')\n const exit = context.enter('footnoteDefinition')\n const subexit = context.enter('label')\n value += tracker.move(\n safe(context, association(node), {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n subexit()\n value += tracker.move(\n ']:' + (node.children && node.children.length > 0 ? ' ' : '')\n )\n tracker.shift(4)\n value += tracker.move(\n indentLines(containerFlow(node, context, tracker.current()), map)\n )\n exit()\n\n return value\n\n /** @type {Map} */\n function map(line, index, blank) {\n if (index) {\n return (blank ? '' : ' ') + line\n }\n\n return line\n }\n }\n}\n", "/**\n * @typedef {import('../types.js').Node} Node\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').SafeOptions} SafeOptions\n * @typedef {import('../types.js').Context} Context\n */\n\nimport {track} from './track.js'\n\n/**\n * @param {Parent} parent\n * @param {Context} context\n * @param {SafeOptions} safeOptions\n * @returns {string}\n */\nexport function containerPhrasing(parent, context, safeOptions) {\n const indexStack = context.indexStack\n const children = parent.children || []\n /** @type {Array<string>} */\n const results = []\n let index = -1\n let before = safeOptions.before\n\n indexStack.push(-1)\n let tracker = track(safeOptions)\n\n while (++index < children.length) {\n const child = children[index]\n /** @type {string} */\n let after\n\n indexStack[indexStack.length - 1] = index\n\n if (index + 1 < children.length) {\n // @ts-expect-error: hush, it\u2019s actually a `zwitch`.\n let handle = context.handle.handlers[children[index + 1].type]\n if (handle && handle.peek) handle = handle.peek\n after = handle\n ? handle(children[index + 1], parent, context, {\n before: '',\n after: '',\n ...tracker.current()\n }).charAt(0)\n : ''\n } else {\n after = safeOptions.after\n }\n\n // In some cases, html (text) can be found in phrasing right after an eol.\n // When we\u2019d serialize that, in most cases that would be seen as html\n // (flow).\n // As we can\u2019t escape or so to prevent it from happening, we take a somewhat\n // reasonable approach: replace that eol with a space.\n // See: <https://github.com/syntax-tree/mdast-util-to-markdown/issues/15>\n if (\n results.length > 0 &&\n (before === '\\r' || before === '\\n') &&\n child.type === 'html'\n ) {\n results[results.length - 1] = results[results.length - 1].replace(\n /(\\r?\\n|\\r)$/,\n ' '\n )\n before = ' '\n\n // To do: does this work to reset tracker?\n tracker = track(safeOptions)\n tracker.move(results.join(''))\n }\n\n results.push(\n tracker.move(\n context.handle(child, parent, context, {\n ...tracker.current(),\n before,\n after\n })\n )\n )\n\n before = results[results.length - 1].slice(-1)\n }\n\n indexStack.pop()\n\n return results.join('')\n}\n", "/**\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {containerPhrasing} from 'mdast-util-to-markdown/lib/util/container-phrasing.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n/** @type {FromMarkdownExtension} */\nexport const gfmStrikethroughFromMarkdown = {\n canContainEols: ['delete'],\n enter: {strikethrough: enterStrikethrough},\n exit: {strikethrough: exitStrikethrough}\n}\n\n/** @type {ToMarkdownExtension} */\nexport const gfmStrikethroughToMarkdown = {\n unsafe: [{character: '~', inConstruct: 'phrasing'}],\n handlers: {delete: handleDelete}\n}\n\nhandleDelete.peek = peekDelete\n\n/** @type {FromMarkdownHandle} */\nfunction enterStrikethrough(token) {\n this.enter({type: 'delete', children: []}, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitStrikethrough(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, context, safeOptions) {\n const tracker = track(safeOptions)\n const exit = context.enter('emphasis')\n let value = tracker.move('~~')\n value += containerPhrasing(node, context, {\n ...tracker.current(),\n before: value,\n after: '~'\n })\n value += tracker.move('~~')\n exit()\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n return '~'\n}\n", "/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../types.js').Handle} Handle\n */\n\nimport {patternCompile} from '../util/pattern-compile.js'\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @type {Handle}\n * @param {InlineCode} node\n */\nexport function inlineCode(node, _, context) {\n let value = node.value || ''\n let sequence = '`'\n let index = -1\n\n // If there is a single grave accent on its own in the code, use a fence of\n // two.\n // If there are two in a row, use one.\n while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n sequence += '`'\n }\n\n // If this is not just spaces or eols (tabs don\u2019t count), and either the\n // first or last character are a space, eol, or tick, then pad with spaces.\n if (\n /[^ \\r\\n]/.test(value) &&\n ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n ) {\n value = ' ' + value + ' '\n }\n\n // We have a potential problem: certain characters after eols could result in\n // blocks being seen.\n // For example, if someone injected the string `'\\n# b'`, then that would\n // result in an ATX heading.\n // We can\u2019t escape characters in `inlineCode`, but because eols are\n // transformed to spaces when going from markdown to HTML anyway, we can swap\n // them out.\n while (++index < context.unsafe.length) {\n const pattern = context.unsafe[index]\n const expression = patternCompile(pattern)\n /** @type {RegExpExecArray|null} */\n let match\n\n // Only look for `atBreak`s.\n // Btw: note that `atBreak` patterns will always start the regex at LF or\n // CR.\n if (!pattern.atBreak) continue\n\n while ((match = expression.exec(value))) {\n let position = match.index\n\n // Support CRLF (patterns only look for one of the characters).\n if (\n value.charCodeAt(position) === 10 /* `\\n` */ &&\n value.charCodeAt(position - 1) === 13 /* `\\r` */\n ) {\n position--\n }\n\n value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n }\n }\n\n return sequence + value + sequence\n}\n\n/**\n * @type {Handle}\n */\nfunction inlineCodePeek() {\n return '`'\n}\n", "/**\n * @typedef Options\n * Configuration (optional).\n * @property {string|null|Array<string|null|undefined>} [align]\n * One style for all columns, or styles for their respective columns.\n * Each style is either `'l'` (left), `'r'` (right), or `'c'` (center).\n * Other values are treated as `''`, which doesn\u2019t place the colon in the\n * alignment row but does align left.\n * *Only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean} [padding=true]\n * Whether to add a space of padding between delimiters and cells.\n *\n * When `true`, there is padding:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there is no padding:\n *\n * ```markdown\n * |Alpha|B |\n * |-----|-----|\n * |C |Delta|\n * ```\n * @property {boolean} [delimiterStart=true]\n * Whether to begin each row with the delimiter.\n *\n * > \uD83D\uDC49 **Note**: please don\u2019t use this: it could create fragile structures\n * > that aren\u2019t understandable to some markdown parsers.\n *\n * When `true`, there are starting delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no starting delimiters:\n *\n * ```markdown\n * Alpha | B |\n * ----- | ----- |\n * C | Delta |\n * ```\n * @property {boolean} [delimiterEnd=true]\n * Whether to end each row with the delimiter.\n *\n * > \uD83D\uDC49 **Note**: please don\u2019t use this: it could create fragile structures\n * > that aren\u2019t understandable to some markdown parsers.\n *\n * When `true`, there are ending delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no ending delimiters:\n *\n * ```markdown\n * | Alpha | B\n * | ----- | -----\n * | C | Delta\n * ```\n * @property {boolean} [alignDelimiters=true]\n * Whether to align the delimiters.\n * By default, they are aligned:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * Pass `false` to make them staggered:\n *\n * ```markdown\n * | Alpha | B |\n * | - | - |\n * | C | Delta |\n * ```\n * @property {(value: string) => number} [stringLength]\n * Function to detect the length of table cell content.\n * This is used when aligning the delimiters (`|`) between table cells.\n * Full-width characters and emoji mess up delimiter alignment when viewing\n * the markdown source.\n * To fix this, you can pass this function, which receives the cell content\n * and returns its \u201Cvisible\u201D size.\n * Note that what is and isn\u2019t visible depends on where the text is displayed.\n *\n * Without such a function, the following:\n *\n * ```js\n * markdownTable([\n * ['Alpha', 'Bravo'],\n * ['\u4E2D\u6587', 'Charlie'],\n * ['\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69', 'Delta']\n * ])\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | - | - |\n * | \u4E2D\u6587 | Charlie |\n * | \uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69 | Delta |\n * ```\n *\n * With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n * ```js\n * import stringWidth from 'string-width'\n *\n * markdownTable(\n * [\n * ['Alpha', 'Bravo'],\n * ['\u4E2D\u6587', 'Charlie'],\n * ['\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69', 'Delta']\n * ],\n * {stringLength: stringWidth}\n * )\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | ----- | ------- |\n * | \u4E2D\u6587 | Charlie |\n * | \uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69 | Delta |\n * ```\n */\n\n/**\n * @typedef {Options} MarkdownTableOptions\n * @todo\n * Remove next major.\n */\n\n/**\n * Generate a markdown ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables)) table..\n *\n * @param {Array<Array<string|null|undefined>>} table\n * Table data (matrix of strings).\n * @param {Options} [options]\n * Configuration (optional).\n * @returns {string}\n */\nexport function markdownTable(table, options = {}) {\n const align = (options.align || []).concat()\n const stringLength = options.stringLength || defaultStringLength\n /** @type {Array<number>} Character codes as symbols for alignment per column. */\n const alignments = []\n /** @type {Array<Array<string>>} Cells per row. */\n const cellMatrix = []\n /** @type {Array<Array<number>>} Sizes of each cell per row. */\n const sizeMatrix = []\n /** @type {Array<number>} */\n const longestCellByColumn = []\n let mostCellsPerRow = 0\n let rowIndex = -1\n\n // This is a superfluous loop if we don\u2019t align delimiters, but otherwise we\u2019d\n // do superfluous work when aligning, so optimize for aligning.\n while (++rowIndex < table.length) {\n /** @type {Array<string>} */\n const row = []\n /** @type {Array<number>} */\n const sizes = []\n let columnIndex = -1\n\n if (table[rowIndex].length > mostCellsPerRow) {\n mostCellsPerRow = table[rowIndex].length\n }\n\n while (++columnIndex < table[rowIndex].length) {\n const cell = serialize(table[rowIndex][columnIndex])\n\n if (options.alignDelimiters !== false) {\n const size = stringLength(cell)\n sizes[columnIndex] = size\n\n if (\n longestCellByColumn[columnIndex] === undefined ||\n size > longestCellByColumn[columnIndex]\n ) {\n longestCellByColumn[columnIndex] = size\n }\n }\n\n row.push(cell)\n }\n\n cellMatrix[rowIndex] = row\n sizeMatrix[rowIndex] = sizes\n }\n\n // Figure out which alignments to use.\n let columnIndex = -1\n\n if (typeof align === 'object' && 'length' in align) {\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = toAlignment(align[columnIndex])\n }\n } else {\n const code = toAlignment(align)\n\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = code\n }\n }\n\n // Inject the alignment row.\n columnIndex = -1\n /** @type {Array<string>} */\n const row = []\n /** @type {Array<number>} */\n const sizes = []\n\n while (++columnIndex < mostCellsPerRow) {\n const code = alignments[columnIndex]\n let before = ''\n let after = ''\n\n if (code === 99 /* `c` */) {\n before = ':'\n after = ':'\n } else if (code === 108 /* `l` */) {\n before = ':'\n } else if (code === 114 /* `r` */) {\n after = ':'\n }\n\n // There *must* be at least one hyphen-minus in each alignment cell.\n let size =\n options.alignDelimiters === false\n ? 1\n : Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n )\n\n const cell = before + '-'.repeat(size) + after\n\n if (options.alignDelimiters !== false) {\n size = before.length + size + after.length\n\n if (size > longestCellByColumn[columnIndex]) {\n longestCellByColumn[columnIndex] = size\n }\n\n sizes[columnIndex] = size\n }\n\n row[columnIndex] = cell\n }\n\n // Inject the alignment row.\n cellMatrix.splice(1, 0, row)\n sizeMatrix.splice(1, 0, sizes)\n\n rowIndex = -1\n /** @type {Array<string>} */\n const lines = []\n\n while (++rowIndex < cellMatrix.length) {\n const row = cellMatrix[rowIndex]\n const sizes = sizeMatrix[rowIndex]\n columnIndex = -1\n /** @type {Array<string>} */\n const line = []\n\n while (++columnIndex < mostCellsPerRow) {\n const cell = row[columnIndex] || ''\n let before = ''\n let after = ''\n\n if (options.alignDelimiters !== false) {\n const size =\n longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n const code = alignments[columnIndex]\n\n if (code === 114 /* `r` */) {\n before = ' '.repeat(size)\n } else if (code === 99 /* `c` */) {\n if (size % 2) {\n before = ' '.repeat(size / 2 + 0.5)\n after = ' '.repeat(size / 2 - 0.5)\n } else {\n before = ' '.repeat(size / 2)\n after = before\n }\n } else {\n after = ' '.repeat(size)\n }\n }\n\n if (options.delimiterStart !== false && !columnIndex) {\n line.push('|')\n }\n\n if (\n options.padding !== false &&\n // Don\u2019t add the opening space if we\u2019re not aligning and the cell is\n // empty: there will be a closing space.\n !(options.alignDelimiters === false && cell === '') &&\n (options.delimiterStart !== false || columnIndex)\n ) {\n line.push(' ')\n }\n\n if (options.alignDelimiters !== false) {\n line.push(before)\n }\n\n line.push(cell)\n\n if (options.alignDelimiters !== false) {\n line.push(after)\n }\n\n if (options.padding !== false) {\n line.push(' ')\n }\n\n if (\n options.delimiterEnd !== false ||\n columnIndex !== mostCellsPerRow - 1\n ) {\n line.push('|')\n }\n }\n\n lines.push(\n options.delimiterEnd === false\n ? line.join('').replace(/ +$/, '')\n : line.join('')\n )\n }\n\n return lines.join('\\n')\n}\n\n/**\n * @param {string|null|undefined} [value]\n * @returns {string}\n */\nfunction serialize(value) {\n return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string} value\n * @returns {number}\n */\nfunction defaultStringLength(value) {\n return value.length\n}\n\n/**\n * @param {string|null|undefined} value\n * @returns {number}\n */\nfunction toAlignment(value) {\n const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n return code === 67 /* `C` */ || code === 99 /* `c` */\n ? 99 /* `c` */\n : code === 76 /* `L` */ || code === 108 /* `l` */\n ? 108 /* `l` */\n : code === 82 /* `R` */ || code === 114 /* `r` */\n ? 114 /* `r` */\n : 0\n}\n", "/**\n * @typedef {import('mdast').AlignType} AlignType\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('markdown-table').MarkdownTableOptions} MarkdownTableOptions\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Context} ToMarkdownContext\n * @typedef {import('mdast-util-to-markdown').SafeOptions} SafeOptions\n *\n * @typedef Options\n * @property {boolean} [tableCellPadding=true]\n * @property {boolean} [tablePipeAlign=true]\n * @property {MarkdownTableOptions['stringLength']} [stringLength]\n */\n\nimport {containerPhrasing} from 'mdast-util-to-markdown/lib/util/container-phrasing.js'\nimport {inlineCode} from 'mdast-util-to-markdown/lib/handle/inline-code.js'\nimport {markdownTable} from 'markdown-table'\n\n/** @type {FromMarkdownExtension} */\nexport const gfmTableFromMarkdown = {\n enter: {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n },\n exit: {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n }\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterTable(token) {\n /** @type {Array<'left'|'right'|'center'|'none'>} */\n // @ts-expect-error: `align` is custom.\n const align = token._align\n this.enter(\n {\n type: 'table',\n align: align.map((d) => (d === 'none' ? null : d)),\n children: []\n },\n token\n )\n this.setData('inTable', true)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitTable(token) {\n this.exit(token)\n this.setData('inTable')\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterRow(token) {\n this.enter({type: 'tableRow', children: []}, token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exit(token) {\n this.exit(token)\n}\n\n/** @type {FromMarkdownHandle} */\nfunction enterCell(token) {\n this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/** @type {FromMarkdownHandle} */\nfunction exitCodeText(token) {\n let value = this.resume()\n\n if (this.getData('inTable')) {\n value = value.replace(/\\\\([\\\\|])/g, replace)\n }\n\n const node = /** @type {InlineCode} */ (this.stack[this.stack.length - 1])\n node.value = value\n this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n // Pipes work, backslashes don\u2019t (but can\u2019t escape pipes).\n return $1 === '|' ? $1 : $0\n}\n\n/**\n * @param {Options} [options]\n * @returns {ToMarkdownExtension}\n */\nexport function gfmTableToMarkdown(options) {\n const settings = options || {}\n const padding = settings.tableCellPadding\n const alignDelimiters = settings.tablePipeAlign\n const stringLength = settings.stringLength\n const around = padding ? ' ' : '|'\n\n return {\n unsafe: [\n {character: '\\r', inConstruct: 'tableCell'},\n {character: '\\n', inConstruct: 'tableCell'},\n // A pipe, when followed by a tab or space (padding), or a dash or colon\n // (unpadded delimiter row), could result in a table.\n {atBreak: true, character: '|', after: '[\\t :-]'},\n // A pipe in a cell must be encoded.\n {character: '|', inConstruct: 'tableCell'},\n // A colon must be followed by a dash, in which case it could start a\n // delimiter row.\n {atBreak: true, character: ':', after: '-'},\n // A delimiter row can also start with a dash, when followed by more\n // dashes, a colon, or a pipe.\n // This is a stricter version than the built in check for lists, thematic\n // breaks, and setex heading underlines though:\n // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n {atBreak: true, character: '-', after: '[:|-]'}\n ],\n handlers: {\n table: handleTable,\n tableRow: handleTableRow,\n tableCell: handleTableCell,\n inlineCode: inlineCodeWithTable\n }\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {Table} node\n */\n function handleTable(node, _, context, safeOptions) {\n return serializeData(\n handleTableAsData(node, context, safeOptions),\n // @ts-expect-error: fixed in `markdown-table@3.0.1`.\n node.align\n )\n }\n\n /**\n * This function isn\u2019t really used normally, because we handle rows at the\n * table level.\n * But, if someone passes in a table row, this ensures we make somewhat sense.\n *\n * @type {ToMarkdownHandle}\n * @param {TableRow} node\n */\n function handleTableRow(node, _, context, safeOptions) {\n const row = handleTableRowAsData(node, context, safeOptions)\n // `markdown-table` will always add an align row\n const value = serializeData([row])\n return value.slice(0, value.indexOf('\\n'))\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {TableCell} node\n */\n function handleTableCell(node, _, context, safeOptions) {\n const exit = context.enter('tableCell')\n const subexit = context.enter('phrasing')\n const value = containerPhrasing(node, context, {\n ...safeOptions,\n before: around,\n after: around\n })\n subexit()\n exit()\n return value\n }\n\n /**\n * @param {Array<Array<string>>} matrix\n * @param {Array<string>} [align]\n */\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align,\n alignDelimiters,\n padding,\n stringLength\n })\n }\n\n /**\n * @param {Table} node\n * @param {ToMarkdownContext} context\n * @param {SafeOptions} safeOptions\n */\n function handleTableAsData(node, context, safeOptions) {\n const children = node.children\n let index = -1\n /** @type {Array<Array<string>>} */\n const result = []\n const subexit = context.enter('table')\n\n while (++index < children.length) {\n result[index] = handleTableRowAsData(\n children[index],\n context,\n safeOptions\n )\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @param {TableRow} node\n * @param {ToMarkdownContext} context\n * @param {SafeOptions} safeOptions\n */\n function handleTableRowAsData(node, context, safeOptions) {\n const children = node.children\n let index = -1\n /** @type {Array<string>} */\n const result = []\n const subexit = context.enter('tableRow')\n\n while (++index < children.length) {\n // Note: the positional info as used here is incorrect.\n // Making it correct would be impossible due to aligning cells?\n // And it would need copy/pasting `markdown-table` into this project.\n result[index] = handleTableCell(\n children[index],\n node,\n context,\n safeOptions\n )\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {InlineCode} node\n */\n function inlineCodeWithTable(node, parent, context) {\n let value = inlineCode(node, parent, context)\n\n if (context.stack.includes('tableCell')) {\n value = value.replace(/\\|/g, '\\\\$&')\n }\n\n return value\n }\n}\n", "/**\n * @typedef {import('../types.js').Context} Context\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {Context} context\n * @returns {Exclude<Options['bullet'], undefined>}\n */\nexport function checkBullet(context) {\n const marker = context.options.bullet || '*'\n\n if (marker !== '*' && marker !== '+' && marker !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bullet`, expected `*`, `+`, or `-`'\n )\n }\n\n return marker\n}\n", "/**\n * @typedef {import('../types.js').Context} Context\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {Context} context\n * @returns {Exclude<Options['listItemIndent'], undefined>}\n */\nexport function checkListItemIndent(context) {\n const style = context.options.listItemIndent || 'tab'\n\n // To do: remove in a major.\n // @ts-expect-error: deprecated.\n if (style === 1 || style === '1') {\n return 'one'\n }\n\n if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n throw new Error(\n 'Cannot serialize items with `' +\n style +\n '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n )\n }\n\n return style\n}\n", "/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').List} List\n * @typedef {import('../util/indent-lines.js').Map} Map\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').Handle} Handle\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\nimport {containerFlow} from '../util/container-flow.js'\nimport {indentLines} from '../util/indent-lines.js'\nimport {track} from '../util/track.js'\n\n/**\n * @type {Handle}\n * @param {ListItem} node\n */\nexport function listItem(node, parent, context, safeOptions) {\n const listItemIndent = checkListItemIndent(context)\n let bullet = context.bulletCurrent || checkBullet(context)\n\n // Add the marker value for ordered lists.\n if (parent && parent.type === 'list' && parent.ordered) {\n bullet =\n (typeof parent.start === 'number' && parent.start > -1\n ? parent.start\n : 1) +\n (context.options.incrementListMarker === false\n ? 0\n : parent.children.indexOf(node)) +\n bullet\n }\n\n let size = bullet.length + 1\n\n if (\n listItemIndent === 'tab' ||\n (listItemIndent === 'mixed' &&\n ((parent && parent.type === 'list' && parent.spread) || node.spread))\n ) {\n size = Math.ceil(size / 4) * 4\n }\n\n const tracker = track(safeOptions)\n tracker.move(bullet + ' '.repeat(size - bullet.length))\n tracker.shift(size)\n const exit = context.enter('listItem')\n const value = indentLines(\n containerFlow(node, context, tracker.current()),\n map\n )\n exit()\n\n return value\n\n /** @type {Map} */\n function map(line, index, blank) {\n if (index) {\n return (blank ? '' : ' '.repeat(size)) + line\n }\n\n return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n }\n}\n", "/**\n * @typedef {Extract<import('mdast').Root|import('mdast').Content, import('unist').Parent>} Parent\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').BlockContent} BlockContent\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {listItem} from 'mdast-util-to-markdown/lib/handle/list-item.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n/** @type {FromMarkdownExtension} */\nexport const gfmTaskListItemFromMarkdown = {\n exit: {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n }\n}\n\n/** @type {ToMarkdownExtension} */\nexport const gfmTaskListItemToMarkdown = {\n unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n handlers: {listItem: listItemWithTaskListItem}\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitCheck(token) {\n const node = /** @type {ListItem} */ (this.stack[this.stack.length - 2])\n // We\u2019re always in a paragraph, in a list item.\n node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/** @type {FromMarkdownHandle} */\nfunction exitParagraphWithTaskListItem(token) {\n const parent = /** @type {Parent} */ (this.stack[this.stack.length - 2])\n const node = /** @type {Paragraph} */ (this.stack[this.stack.length - 1])\n const siblings = parent.children\n const head = node.children[0]\n let index = -1\n /** @type {Paragraph|undefined} */\n let firstParaghraph\n\n if (\n parent &&\n parent.type === 'listItem' &&\n typeof parent.checked === 'boolean' &&\n head &&\n head.type === 'text'\n ) {\n while (++index < siblings.length) {\n const sibling = siblings[index]\n if (sibling.type === 'paragraph') {\n firstParaghraph = sibling\n break\n }\n }\n\n if (firstParaghraph === node) {\n // Must start with a space or a tab.\n head.value = head.value.slice(1)\n\n if (head.value.length === 0) {\n node.children.shift()\n } else if (\n node.position &&\n head.position &&\n typeof head.position.start.offset === 'number'\n ) {\n head.position.start.column++\n head.position.start.offset++\n node.position.start = Object.assign({}, head.position.start)\n }\n }\n }\n\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, context, safeOptions) {\n const head = node.children[0]\n const checkable =\n typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n const tracker = track(safeOptions)\n\n if (checkable) {\n tracker.move(checkbox)\n }\n\n let value = listItem(node, parent, context, {\n ...safeOptions,\n ...tracker.current()\n })\n\n if (checkable) {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n }\n\n return value\n\n /**\n * @param {string} $0\n * @returns {string}\n */\n function check($0) {\n return $0 + checkbox\n }\n}\n", "/**\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('mdast-util-gfm-table').Options} Options\n */\n\nimport {\n gfmAutolinkLiteralFromMarkdown,\n gfmAutolinkLiteralToMarkdown\n} from 'mdast-util-gfm-autolink-literal'\nimport {\n gfmFootnoteFromMarkdown,\n gfmFootnoteToMarkdown\n} from 'mdast-util-gfm-footnote'\nimport {\n gfmStrikethroughFromMarkdown,\n gfmStrikethroughToMarkdown\n} from 'mdast-util-gfm-strikethrough'\nimport {gfmTableFromMarkdown, gfmTableToMarkdown} from 'mdast-util-gfm-table'\nimport {\n gfmTaskListItemFromMarkdown,\n gfmTaskListItemToMarkdown\n} from 'mdast-util-gfm-task-list-item'\n\n/**\n * @returns {Array<FromMarkdownExtension>}\n */\nexport function gfmFromMarkdown() {\n return [\n gfmAutolinkLiteralFromMarkdown,\n gfmFootnoteFromMarkdown(),\n gfmStrikethroughFromMarkdown,\n gfmTableFromMarkdown,\n gfmTaskListItemFromMarkdown\n ]\n}\n\n/**\n * @param {Options} [options]\n * @returns {ToMarkdownExtension}\n */\nexport function gfmToMarkdown(options) {\n return {\n extensions: [\n gfmAutolinkLiteralToMarkdown,\n gfmFootnoteToMarkdown(),\n gfmStrikethroughToMarkdown,\n gfmTableToMarkdown(options),\n gfmTaskListItemToMarkdown\n ]\n }\n}\n", "/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('micromark-extension-gfm').Options & import('mdast-util-gfm').Options} Options\n */\n\nimport {gfm} from 'micromark-extension-gfm'\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\n\n/**\n * Plugin to support GFM (autolink literals, footnotes, strikethrough, tables, tasklists).\n *\n * @type {import('unified').Plugin<[Options?]|void[], Root>}\n */\nexport default function remarkGfm(options = {}) {\n const data = this.data()\n\n add('micromarkExtensions', gfm(options))\n add('fromMarkdownExtensions', gfmFromMarkdown())\n add('toMarkdownExtensions', gfmToMarkdown(options))\n\n /**\n * @param {string} field\n * @param {unknown} value\n */\n function add(field, value) {\n const list = /** @type {unknown[]} */ (\n // Other extensions\n /* c8 ignore next 2 */\n data[field] ? data[field] : (data[field] = [])\n )\n\n list.push(value)\n }\n}\n", "import { unified } from 'unified'\nimport markdown from 'remark-parse'\nimport remarkGfm from 'remark-gfm'\nimport {\n toAny,\n AstTree,\n BlockImage,\n mkBlock,\n mkFomattingCode,\n mkFomattingCodeL,\n mkVerbatim,\n Location,\n} from '@podlite/schema'\nimport { mkRootBlock } from '@podlite/schema'\nimport { mkImage } from '@podlite/schema'\nimport { mkCaption } from '@podlite/schema'\nimport { mkFomattingCodeDelete } from '@podlite/schema'\n\ntype Md2astArgs = { lineOffset?: number }\nexport const md2ast = (src: string, { lineOffset }: Md2astArgs = { lineOffset: 0 }): AstTree => {\n // first convert mardown to ast\n const md_tree = unified().use(markdown).use(remarkGfm).parse(src)\n // first pass : collect linkRefs\n let definitionMap = {}\n const applyLineOffset = (\n (offset: number) =>\n (location: Location): Location => {\n const { start, end } = location\n return {\n start: {\n ...start,\n line: start.line + offset,\n },\n end: {\n ...end,\n line: end.line + offset,\n },\n }\n }\n )(lineOffset)\n toAny({ processor: 1 })\n .use({\n '*:*': (writer, processor) => (node, ctx, interator) => {\n if (node.children) interator(node.children, { ...ctx })\n },\n })\n .use({\n ':definition': (writer, processor) => (node, ctx, interator) => {\n definitionMap[node.identifier] = node\n },\n })\n .run(md_tree)\n\n // second stage - make Universal AST nodes\n const uast = []\n const res = toAny({ processor: 1 })\n .use({\n '*:*': (writer, processor) => (node, ctx, interator) => {\n console.warn('[Podlite:md2ast]- unhandled MD node')\n console.warn(JSON.stringify(node, null, 2))\n if (node.children) interator(node.children, { ...ctx })\n },\n })\n .use({\n ':root': (writer, processor) => (node, ctx, interator) => {\n const { children, position, ...attr } = node\n return mkRootBlock({}, interator(children, ctx))\n },\n ':heading': (writer, processor) => (node, ctx, interator) => {\n const { children, position, ...attr } = node\n return mkBlock(\n { type: 'block', level: node.depth, name: 'head', location: applyLineOffset(position) },\n interator(children, ctx),\n )\n },\n ':text': (writer, processor) => (node, ctx, interator) => {\n const { children, position, ...attr } = node\n return node.value\n // return mkNode({type:\"text\", value: node.value})\n },\n ':list': (writer, processor) => (node, ctx, interator) => {\n const savedListLevel = ctx['listLevel'] || 0\n const { children, position, ...attr } = node\n return mkBlock(\n { type: 'list', level: savedListLevel + 1, list: node.ordered ? 'ordered' : 'itemized' },\n interator(children, { ...ctx, listLevel: savedListLevel + 1, ordered: node.ordered }),\n )\n },\n ':listItem': (writer, processor) => (node, ctx, interator) => {\n const savedListLevel = ctx['listLevel'] || 0\n const { children, position, ...attr } = node\n return mkBlock(\n { name: 'item', type: 'block', level: ctx['listLevel'], location: applyLineOffset(position) },\n interator(children, { ...ctx, listLevel: savedListLevel, ordered: node.ordered }),\n )\n },\n ':paragraph': (writer, processor) => (node, ctx, interator) => {\n const { children, position, ...attr } = node\n return mkBlock(\n { type: 'para', location: applyLineOffset(position), text: 'text', margin: '' },\n interator(children, { ...ctx }),\n )\n },\n ':linkReference': (writer, processor) => (node, ctx, interator) => {\n const { children, position, ...attr } = node\n const definition = definitionMap[attr.identifier]\n const meta = definition?.url || ''\n return mkFomattingCodeL({ meta }, interator(children, { ...ctx }))\n },\n ':definition': (writer, processor) => (node, ctx, interator) => {\n return null\n },\n ':inlineCode': (writer, processor) => (node, ctx, interator) => {\n const { children, position, ...attr } = node\n return mkFomattingCode({ name: 'C' }, [node.value])\n },\n ':strong': (writer, processor) => (node, ctx, interator) => {\n const { children, position, ...attr } = node\n return mkFomattingCode({ name: 'B' }, interator(children, { ...ctx }))\n },\n ':emphasis': (writer, processor) => (node, ctx, interator) => {\n const { children, position, ...attr } = node\n return mkFomattingCode({ name: 'I' }, interator(children, { ...ctx }))\n },\n ':link': (writer, processor) => (node, ctx, interator) => {\n const { children, position, ...attr } = node\n return mkFomattingCodeL({ meta: node.url }, interator(children, { ...ctx }))\n },\n ':html': (writer, processor) => (node, ctx, interator) => {\n const { children, position, ...attr } = node\n return mkBlock({ type: 'block', name: 'Html', location: applyLineOffset(position) }, [mkVerbatim(node.value)])\n },\n ':code': (writer, processor) => (node, ctx, interator) => {\n const { children, position, lang, meta, ...attr } = node\n if (lang === 'mermaid' || lang === 'diagram') {\n return mkBlock({ type: 'block', name: 'Diagram', config: [], location: applyLineOffset(position) }, [\n mkVerbatim(node.value),\n ])\n }\n let config = []\n if (lang) {\n config.push({ name: 'lang', value: lang, type: 'string' })\n }\n if (meta) {\n config.push({ name: 'meta', value: meta, type: 'string' })\n } // filled as is from markdown\n return mkBlock({ type: 'block', name: 'code', config, location: applyLineOffset(position) }, [\n mkVerbatim(node.value),\n ])\n },\n ':image':\n (writer, processor) =>\n (node, ctx, interator): BlockImage => {\n const { title, alt, url, position, ...attr } = node\n let config = []\n return mkBlock({ type: 'block', name: 'Image', config, location: applyLineOffset(position) }, [\n mkImage(url, alt),\n mkCaption([title]),\n ])\n },\n ':thematicBreak': (writer, processor) => (node, ctx, interator) => {\n return null // TODO: add support for \"thematic break\"\n },\n ':blockquote': (writer, processor) => (node, ctx, interator) => {\n const { children, position, ...attr } = node\n return mkBlock({ name: 'nested', location: applyLineOffset(position) }, interator(children, { ...ctx }))\n },\n //table section\n ':table': (writer, processor) => (node, ctx, interator) => {\n const { children, position, ...attr } = node\n return mkBlock({ name: 'table', location: applyLineOffset(position) }, interator(children, { ...ctx }))\n },\n ':tableRow': (writer, processor) => (node, ctx, interator) => {\n const { children, position, ...attr } = node\n return mkBlock({ name: 'table_row', location: applyLineOffset(position) }, interator(children, { ...ctx }))\n },\n ':tableCell': (writer, processor) => (node, ctx, interator) => {\n const { children, position, ...attr } = node\n return mkBlock({ name: 'table_cell', location: applyLineOffset(position) }, interator(children, { ...ctx }))\n },\n ':delete': (writer, processor) => (node, ctx, interator) => {\n const { children, position, ...attr } = node\n return mkFomattingCodeDelete(interator(children, { ...ctx }))\n },\n ':break': (writer, processor) => (node, ctx, interator) => {\n return null\n },\n })\n .run(md_tree)\n return res.interator\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["_jsonTypes", "jsonTypes", "isJSONType", "x", "exports", "getRules", "groups", "schemaHasRulesForType", "schema", "self", "type", "group", "shouldUseGroup", "exports", "rule", "shouldUseRule", "_a", "kwd", "_CodeOrName", "exports", "Name", "s", "_Code", "code", "item", "_a", "c", "names", "_", "strs", "args", "i", "addCodeArg", "plus", "str", "expr", "safeStringify", "optimize", "arg", "interpolate", "res", "mergeExprItems", "a", "b", "strConcat", "c1", "c2", "x", "stringify", "getProperty", "key", "code_1", "ValueError", "name", "UsedValueState", "exports", "Scope", "prefixes", "parent", "nameOrPrefix", "prefix", "ng", "_b", "_a", "ValueScopeName", "nameStr", "value", "property", "itemIndex", "line", "ValueScope", "opts", "valueKey", "vs", "_name", "s", "keyOrRef", "scopeName", "values", "usedValues", "getCode", "valueCode", "code", "nameSet", "c", "def", "code_1", "scope_1", "code_2", "exports", "scope_2", "Node", "_names", "_constants", "Def", "varKind", "name", "rhs", "es5", "_n", "names", "constants", "optimizeExpr", "Assign", "lhs", "sideEffects", "addExprNames", "AssignOp", "op", "Label", "label", "Break", "Throw", "error", "AnyCode", "code", "ParentNode", "nodes", "opts", "i", "n", "subtractNames", "addNames", "BlockNode", "Root", "Else", "If", "condition", "cond", "ns", "not", "_a", "For", "ForLoop", "iteration", "ForRange", "from", "to", "ForIter", "loop", "iterable", "Func", "args", "async", "Return", "Try", "_b", "Catch", "Finally", "CodeGen", "extScope", "prefix", "prefixOrName", "value", "keyOrRef", "scopeName", "nameOrPrefix", "constant", "_constant", "c", "keyValues", "key", "thenBody", "elseBody", "node", "forBody", "arr", "obj", "tryBody", "catchCode", "finallyCode", "body", "nodeCount", "len", "toClose", "funcBody", "N1", "N2", "expr", "replaceName", "canOptimize", "items", "e", "x", "par", "andCode", "mappend", "and", "orCode", "or", "y", "codegen_1", "names", "exports", "codegen_1", "names_1", "exports", "keyword", "schemaType", "reportError", "cxt", "error", "overrideAllErrors", "it", "gen", "compositeRule", "allErrors", "errObj", "errorObjectCode", "addError", "returnErrors", "reportExtraError", "resetErrorsCount", "errsCount", "extendErrors", "schemaValue", "data", "err", "i", "errs", "validateName", "schemaEnv", "E", "createErrors", "opts", "jtdErrorObject", "ajvErrorObject", "message", "errorPath", "errSchemaPath", "keyValues", "topSchemaRef", "schemaPath", "propertyName", "params", "errors_1", "codegen_1", "names_1", "boolError", "topBoolOrEmptySchema", "it", "gen", "schema", "validateName", "falseSchemaError", "exports", "boolOrEmptySchema", "valid", "overrideAllErrors", "data", "cxt", "codegen_1", "_1", "assignDefaults", "it", "ty", "properties", "items", "key", "assignDefault", "sch", "i", "exports", "prop", "defaultValue", "gen", "compositeRule", "data", "opts", "childData", "condition", "validate_1", "util_1", "codegen_1", "Type", "exports", "applySubschema", "it", "appl", "valid", "subschema", "getSubschema", "extendSubschemaData", "extendSubschemaMode", "nextContext", "keyword", "schemaProp", "schema", "schemaPath", "errSchemaPath", "topSchemaRef", "sch", "dataProp", "dpType", "data", "dataTypes", "propertyName", "gen", "errorPath", "dataPathArr", "opts", "nextData", "dataContextProps", "getErrorPath", "_nextData", "jtdDiscriminator", "jtdMetadata", "compositeRule", "createErrors", "allErrors", "dataPropType", "jsPropertySyntax", "isNumber", "codegen_1", "util_1", "subschema_1", "names_1", "checkReportMissingProp", "cxt", "prop", "gen", "data", "it", "noPropertyInData", "exports", "checkMissingProp", "opts", "properties", "missing", "reportMissingProp", "hasPropFunc", "isOwnProperty", "property", "propertyInData", "ownProperties", "cond", "allSchemaProperties", "schemaMap", "p", "schemaProperties", "callValidateCode", "schemaCode", "topSchemaRef", "schemaPath", "errorPath", "func", "context", "passSchema", "dataAndSchema", "valCxt", "args", "usePattern", "pattern", "validateArray", "keyword", "valid", "validArr", "validateItems", "notValid", "len", "i", "validateUnion", "schema", "sch", "schValid", "_sch", "schCxt", "context_1", "errors_1", "code_1", "codegen_1", "names_1", "keywordCode", "it", "keyword", "def", "ruleType", "cxt", "funcKeywordCode", "macroKeywordCode", "exports", "gen", "schema", "parentSchema", "macroSchema", "schemaRef", "useKeyword", "valid", "$data", "checkAsync", "validate", "validateRef", "validateKeyword", "_a", "assignValid", "modifyData", "reportErrs", "ruleErrs", "validateAsync", "validateSync", "addErrs", "e", "validateErrs", "_await", "passCxt", "passSchema", "errors", "data", "errs", "schemaEnv", "result", "applicability_1", "dataType_1", "defaults_1", "keyword_1", "util_1", "_1", "codegen_1", "names_1", "schemaKeywords", "it", "types", "typeErrors", "errsCount", "gen", "schema", "data", "allErrors", "opts", "self", "RULES", "checkStrictTypes", "group", "groupKeywords", "iterateKeywords", "exports", "useDefaults", "rule", "checkContextTypes", "checkMultipleTypes", "checkKeywordTypes", "t", "includesType", "strictTypesError", "ts", "rules", "keyword", "type", "hasApplicableType", "schTs", "kwdT", "msg", "schemaPath", "require_fast_deep_equal", "__commonJSMin", "exports", "module", "equal", "a", "b", "length", "keys", "key", "require_json_schema_traverse", "__commonJSMin", "exports", "module", "traverse", "schema", "opts", "cb", "pre", "post", "_traverse", "jsonPtr", "rootSchema", "parentJsonPtr", "parentKeyword", "parentSchema", "keyIndex", "key", "sch", "i", "prop", "escapeJsonPtr", "str", "merge", "sets", "_len", "_key", "length", "slice", "xl", "x", "join", "subexp", "str", "typeOf", "o", "undefined", "Object", "prototype", "toString", "call", "split", "pop", "shift", "toLowerCase", "toUpperCase", "toArray", "obj", "Array", "setInterval", "assign", "target", "source", "key", "buildExps", "isIRI", "ALPHA$$", "CR$", "DIGIT$$", "DQUOTE$$", "HEXDIG$$", "SP$$", "PCT_ENCODED$", "SUB_DELIMS$$", "RESERVED$$", "GEN_DELIMS$$", "UCSCHAR$$", "SCHEME$", "USERINFO$", "UNRESERVED$$", "DEC_OCTET$", "DEC_OCTET_RELAXED$", "H16$", "LS32$", "IPV4ADDRESS$", "IPV6ADDRESS1$", "IPV6ADDRESS2$", "IPV6ADDRESS3$", "IPV6ADDRESS4$", "IPV6ADDRESS5$", "IPV6ADDRESS6$", "IPV6ADDRESS7$", "IPV6ADDRESS8$", "IPV6ADDRESS9$", "ZONEID$", "IPV6ADDRESS$", "IP_LITERAL$", "IPV6ADDRZ_RELAXED$", "IPVFUTURE$", "HOST$", "REG_NAME$", "PORT$", "AUTHORITY$", "PCHAR$", "SEGMENT$", "SEGMENT_NZ$", "SEGMENT_NZ_NC$", "PATH_ABEMPTY$", "PATH_ABSOLUTE$", "PATH$", "PATH_NOSCHEME$", "PATH_ROOTLESS$", "PATH_EMPTY$", "QUERY$", "IPRIVATE$$", "FRAGMENT$", "HIER_PART$", "URI$", "RELATIVE_PART$", "RELATIVE$", "URI_REFERENCE$", "ABSOLUTE_URI$", "GENERIC_REF$", "RELATIVE_REF$", "ABSOLUTE_REF$", "SAMEDOC_REF$", "AUTHORITY_REF$", "RegExp", "URI_PROTOCOL", "IRI_PROTOCOL", "maxInt", "base", "tMin", "tMax", "skew", "damp", "initialBias", "initialN", "delimiter", "regexPunycode", "regexNonASCII", "regexSeparators", "errors", "baseMinusTMin", "floor", "Math", "stringFromCharCode", "String", "fromCharCode", "error", "type", "RangeError", "map", "array", "fn", "result", "mapDomain", "string", "parts", "replace", "labels", "encoded", "ucs2decode", "output", "counter", "value", "charCodeAt", "extra", "push", "ucs2encode", "fromCodePoint", "toConsumableArray", "basicToDigit", "codePoint", "digitToBasic", "digit", "flag", "adapt", "delta", "numPoints", "firstTime", "k", "decode", "input", "inputLength", "i", "n", "bias", "basic", "lastIndexOf", "j", "index", "oldi", "w", "t", "baseMinusT", "out", "splice", "encode", "_step", "_iteratorNormalCompletion", "_iterator", "currentValue", "basicLength", "handledCPCount", "m", "_step2", "_iteratorNormalCompletion2", "_iterator2", "handledCPCountPlusOne", "_step3", "_iteratorNormalCompletion3", "_iterator3", "q", "qMinusT", "toUnicode", "test", "toASCII", "punycode", "SCHEMES", "pctEncChar", "chr", "c", "e", "pctDecChars", "newStr", "il", "parseInt", "substr", "c2", "c3", "_normalizeComponentEncoding", "components", "protocol", "decodeUnreserved", "decStr", "match", "UNRESERVED", "scheme", "PCT_ENCODED", "NOT_SCHEME", "userinfo", "NOT_USERINFO", "host", "NOT_HOST", "path", "NOT_PATH", "NOT_PATH_NOSCHEME", "query", "NOT_QUERY", "fragment", "NOT_FRAGMENT", "_stripLeadingZeros", "_normalizeIPv4", "matches", "IPV4ADDRESS", "address", "_matches", "_normalizeIPv6", "IPV6ADDRESS", "_matches2", "zone", "reverse", "last", "_address$toLowerCase$2", "first", "firstFields", "lastFields", "isLastFieldIPv4Address", "fieldCount", "lastFieldsStart", "fields", "allZeroFields", "reduce", "acc", "field", "lastLongest", "longestZeroFields", "sort", "a", "b", "newHost", "newFirst", "newLast", "URI_PARSE", "NO_MATCH_IS_UNDEFINED", "parse", "uriString", "options", "iri", "reference", "port", "isNaN", "indexOf", "schemeHandler", "unicodeSupport", "domainHost", "_recomposeAuthority", "uriTokens", "_", "$1", "$2", "RDS1", "RDS2", "RDS3", "RDS5", "removeDotSegments", "im", "s", "Error", "serialize", "authority", "charAt", "absolutePath", "resolveComponents", "relative", "skipNormalization", "tolerant", "resolve", "baseURI", "relativeURI", "schemelessOptions", "normalize", "uri", "equal", "uriA", "uriB", "escapeComponent", "ESCAPE", "unescapeComponent", "handler", "secure", "http", "isSecure", "wsComponents", "resourceName", "_wsComponents$resourc2", "ws", "O", "ATEXT$$", "QTEXT$$", "VCHAR$$", "SOME_DELIMS$$", "NOT_LOCAL_PART", "NOT_HFNAME", "NOT_HFVALUE", "mailtoComponents", "to", "unknownHeaders", "headers", "hfields", "hfield", "toAddrs", "subject", "body", "addr", "toAddr", "atIdx", "localPart", "domain", "name", "URN_PARSE", "urnComponents", "nid", "nss", "urnScheme", "uriComponents", "UUID", "uuidComponents", "uuid", "https", "wss", "mailto", "urn", "util_1", "equal", "traverse", "URI", "SIMPLE_INLINED", "inlineRef", "schema", "limit", "hasRef", "countKeys", "exports", "REF_KEYWORDS", "key", "sch", "count", "getFullPath", "id", "normalize", "normalizeId", "p", "_getFullPath", "TRAILING_SLASH_HASH", "resolveUrl", "baseId", "ANCHOR", "getSchemaRefs", "schemaId", "baseIds", "pathPrefix", "localRefs", "schemaRefs", "jsonPtr", "_", "parentJsonPtr", "fullPath", "addRef", "addAnchor", "ref", "ambiguos", "schOrRef", "checkAmbiguosRef", "anchor", "sch1", "sch2", "boolSchema_1", "dataType_1", "iterate_1", "codegen_1", "names_1", "resolve_1", "util_1", "validateFunctionCode", "it", "isSchemaObj", "checkKeywords", "schemaCxtHasRules", "topSchemaObjCode", "validateFunction", "exports", "gen", "validateName", "schema", "schemaEnv", "opts", "body", "funcSourceUrl", "destructureValCxtES5", "destructureValCxt", "commentKeyword", "checkNoDefault", "resetEvaluated", "typeAndKeywords", "returnResults", "subschemaCode", "valid", "subSchemaObjCode", "self", "key", "updateContext", "checkAsync", "errsCount", "checkRefsAndKeywords", "types", "checkedTypes", "errSchemaPath", "checkStrictMode", "msg", "schemaPath", "rootName", "ValidationError", "assignEvaluated", "evaluated", "props", "items", "mode", "codegen_1", "validate_1", "toHash", "arr", "hash", "item", "exports", "alwaysValidSchema", "it", "schema", "checkUnknownRules", "schemaHasRules", "opts", "self", "rules", "key", "schemaHasRulesButRef", "RULES", "schemaRefOrVal", "topSchemaRef", "schemaPath", "keyword", "$data", "unescapeFragment", "str", "unescapeJsonPointer", "escapeFragment", "escapeJsonPointer", "eachItem", "xs", "f", "x", "makeMergeEvaluated", "mergeNames", "mergeToName", "mergeValues", "resultToName", "gen", "from", "to", "toName", "res", "setEvaluated", "evaluatedPropsToName", "items", "ps", "props", "p", "func", "rules_1", "applicability_1", "errors_1", "codegen_1", "util_1", "DataType", "exports", "getSchemaTypes", "schema", "types", "getJSONTypes", "ts", "coerceAndCheckDataType", "it", "gen", "data", "opts", "coerceTo", "coerceToTypes", "checkTypes", "wrongType", "checkDataTypes", "coerceData", "reportTypeError", "COERCIBLE", "coerceTypes", "t", "dataType", "coerced", "coerceSpecificType", "assignParentData", "parentData", "parentDataProperty", "expr", "checkDataType", "strictNums", "correct", "EQ", "cond", "numCond", "_cond", "dataTypes", "notObj", "typeError", "schemaValue", "cxt", "getTypeErrorContext", "schemaCode", "dataType_1", "util_1", "errors_1", "codegen_1", "names_1", "subschema_1", "KeywordCxt", "it", "def", "keyword", "validateKeywordUsage", "getData", "validSchemaType", "condition", "successAction", "failAction", "schemaCode", "append", "cond", "obj", "assign", "valid", "codeBlock", "$dataValid", "gen", "schemaType", "wrong$DataType", "invalid$DataSchema", "st", "validateSchemaRef", "appl", "schemaCxt", "toName", "exports", "schema", "allowUndefined", "opts", "self", "deps", "kwd", "msg", "JSON_POINTER", "RELATIVE_JSON_POINTER", "$data", "dataLevel", "dataNames", "dataPathArr", "jsonPointer", "data", "matches", "up", "errorMsg", "expr", "segments", "segment", "pointerType", "resolve_1", "ValidationError", "errors", "exports", "MissingRefError", "baseId", "ref", "msg", "module", "codegen_1", "error_classes_1", "names_1", "resolve_1", "util_1", "validate_1", "URI", "SchemaEnv", "env", "schema", "_a", "exports", "compileSchema", "sch", "_sch", "getCompilingSchema", "rootId", "es5", "lines", "ownProperties", "gen", "_ValidationError", "validateName", "schemaCxt", "sourceCode", "validateCode", "validate", "props", "items", "e", "resolveRef", "root", "baseId", "ref", "schOrFunc", "resolve", "inlineOrCompile", "schEnv", "sameSchemaEnv", "s1", "s2", "resolveSchema", "p", "refPath", "getJsonPointer", "id", "schOrRef", "PREVENT_SCOPE_CHANGE", "parsedRef", "part", "$ref", "context_1", "exports", "codegen_1", "error_classes_1", "rules_1", "compile_1", "codegen_2", "resolve_1", "dataType_1", "util_1", "$dataRefSchema", "META_IGNORE_OPTIONS", "EXT_SCOPE_NAMES", "removedOptions", "deprecatedOptions", "requiredOptions", "o", "strict", "_a", "strictLog", "_optz", "_b", "optimize", "_c", "_d", "_e", "_f", "_g", "_h", "_j", "_k", "_l", "_m", "Ajv", "opts", "es5", "lines", "getLogger", "formatOpt", "checkOptions", "getMetaSchemaOptions", "addInitialFormats", "addInitialKeywords", "addInitialSchemas", "$data", "meta", "schemaKeyRef", "data", "v", "valid", "schema", "_meta", "sch", "loadSchema", "runCompileAsync", "_schema", "loadMetaSchema", "_compileAsync", "$ref", "e", "checkLoaded", "loadMissingSchema", "ref", "missingRef", "_loadSchema", "p", "key", "_validateSchema", "id", "throwOrLogError", "$schema", "message", "keyRef", "getSchEnv", "root", "cacheKey", "definitions", "def", "kwdOrDef", "keyword", "checkKeyword", "kwd", "addRule", "keywordMetaschema", "definition", "k", "t", "rule", "RULES", "group", "name", "format", "errors", "separator", "dataVar", "text", "msg", "metaSchema", "keywordsJsonPointers", "rules", "jsonPointer", "segments", "keywords", "seg", "schemaOrData", "schemas", "regex", "validateSchema", "addSchema", "localRefs", "currentOpts", "checkOpts", "options", "log", "opt", "optsSchemas", "defs", "metaOpts", "noLogs", "logger", "KEYWORD_NAME", "dataType", "post", "ruleGroup", "addBeforeRule", "before", "i", "_rule", "$dataRef", "def", "exports", "error_classes_1", "code_1", "codegen_1", "names_1", "compile_1", "util_1", "def", "cxt", "gen", "schema", "it", "baseId", "env", "validateName", "opts", "self", "callRootRef", "schOrEnv", "callValidate", "inlineRefSchema", "callRef", "rootName", "sch", "v", "getValidate", "schName", "valid", "schCxt", "exports", "$async", "allErrors", "passCxt", "callAsyncRef", "callSyncRef", "addEvaluatedFrom", "e", "addErrorsFrom", "source", "errs", "schEvaluated", "_a", "props", "items", "id_1", "ref_1", "core", "exports", "codegen_1", "ops", "KWDs", "error", "keyword", "schemaCode", "def", "cxt", "data", "exports", "codegen_1", "error", "schemaCode", "def", "cxt", "gen", "data", "it", "prec", "res", "invalid", "exports", "ucs2length", "str", "len", "length", "pos", "value", "exports", "codegen_1", "ucs2length_1", "error", "keyword", "schemaCode", "comp", "def", "cxt", "data", "it", "op", "len", "u2l", "exports", "code_1", "codegen_1", "error", "schemaCode", "def", "cxt", "gen", "data", "$data", "schema", "regExp", "exports", "codegen_1", "error", "keyword", "schemaCode", "comp", "def", "cxt", "data", "op", "exports", "code_1", "codegen_1", "validate_1", "error", "missingProperty", "def", "cxt", "gen", "schema", "schemaCode", "data", "$data", "it", "opts", "useLoop", "allErrorsMode", "exitOnErrorMode", "props", "definedProperties", "requiredKey", "schemaPath", "msg", "loopAllRequired", "prop", "missing", "valid", "loopUntilMissing", "exports", "codegen_1", "error", "keyword", "schemaCode", "comp", "def", "cxt", "data", "op", "exports", "dataType_1", "codegen_1", "equal", "error", "i", "j", "def", "cxt", "gen", "data", "$data", "schema", "parentSchema", "schemaCode", "it", "valid", "itemTypes", "validateUniqueItems", "canOptimize", "loopN", "loopN2", "t", "item", "wrongType", "indices", "eql", "outer", "exports", "codegen_1", "equal", "error", "schemaCode", "def", "cxt", "eql", "exports", "codegen_1", "equal", "error", "schemaCode", "def", "cxt", "gen", "data", "$data", "schema", "it", "useLoop", "eql", "valid", "loopEnum", "vSchema", "_x", "i", "equalCode", "v", "sch", "exports", "limitNumber_1", "multipleOf_1", "limitLength_1", "pattern_1", "limitProperties_1", "required_1", "limitItems_1", "uniqueItems_1", "const_1", "enum_1", "validation", "exports", "codegen_1", "subschema_1", "util_1", "validate_1", "error", "len", "def", "cxt", "gen", "schema", "parentSchema", "data", "it", "items", "valid", "validateItems", "i", "exports", "codegen_1", "util_1", "validate_1", "code_1", "def", "cxt", "gen", "schema", "it", "validateTuple", "schArr", "parentSchema", "data", "fullTupleSchema", "msg", "valid", "len", "sch", "i", "exports", "codegen_1", "subschema_1", "util_1", "validate_1", "error", "min", "max", "def", "cxt", "gen", "schema", "parentSchema", "data", "it", "minContains", "maxContains", "len", "cond", "valid", "validateItems", "schValid", "count", "checkLimits", "_valid", "block", "i", "exports", "codegen_1", "util_1", "code_1", "exports", "property", "depsCount", "deps", "property_ies", "missingProperty", "def", "cxt", "propDeps", "schDeps", "splitDependencies", "validatePropertyDeps", "validateSchemaDeps", "schema", "propertyDeps", "schemaDeps", "key", "gen", "data", "it", "missing", "prop", "hasProperty", "depProp", "keyword", "valid", "schCxt", "codegen_1", "util_1", "error", "params", "def", "cxt", "gen", "schema", "data", "it", "valid", "key", "exports", "code_1", "codegen_1", "names_1", "subschema_1", "util_1", "error", "params", "def", "cxt", "gen", "schema", "parentSchema", "data", "errsCount", "it", "allErrors", "opts", "props", "patProps", "checkAdditionalProperties", "key", "additionalPropertyCode", "isAdditional", "definedProp", "propsSchema", "p", "deleteAdditional", "valid", "applyAdditionalSchema", "errors", "subschema", "exports", "context_1", "code_1", "util_1", "additionalProperties_1", "def", "cxt", "gen", "schema", "parentSchema", "data", "it", "allProps", "prop", "properties", "p", "valid", "hasDefault", "applyPropertySchema", "exports", "code_1", "codegen_1", "subschema_1", "validate_1", "util_1", "def", "cxt", "gen", "schema", "data", "parentSchema", "it", "opts", "patterns", "checkProperties", "valid", "props", "validatePatternProperties", "pat", "checkMatchingProperties", "validateProperties", "prop", "key", "exports", "util_1", "def", "cxt", "gen", "schema", "it", "valid", "exports", "code_1", "def", "exports", "codegen_1", "util_1", "error", "params", "def", "cxt", "gen", "schema", "it", "schArr", "valid", "passing", "schValid", "validateOneOf", "sch", "i", "schCxt", "exports", "util_1", "def", "cxt", "gen", "schema", "it", "valid", "sch", "i", "schCxt", "exports", "codegen_1", "util_1", "validate_1", "error", "params", "def", "cxt", "gen", "parentSchema", "it", "hasThen", "hasSchema", "hasElse", "valid", "schValid", "validateIf", "ifClause", "validateClause", "schCxt", "keyword", "schema", "exports", "validate_1", "def", "keyword", "parentSchema", "it", "exports", "additionalItems_1", "items_1", "contains_1", "dependencies_1", "propertyNames_1", "additionalProperties_1", "properties_1", "patternProperties_1", "not_1", "anyOf_1", "oneOf_1", "allOf_1", "if_1", "thenElse_1", "applicator", "exports", "codegen_1", "error", "schemaCode", "def", "cxt", "ruleType", "gen", "data", "$data", "schema", "it", "opts", "errSchemaPath", "schemaEnv", "self", "validate$DataFormat", "validateFormat", "fmts", "fDef", "fType", "format", "unknownFmt", "invalidFmt", "callFormat", "validData", "formatDef", "unknownFormat", "fmtType", "fmtRef", "getFormat", "validCondition", "unknownMsg", "fmtDef", "fmt", "exports", "format_1", "format", "exports", "exports", "core_1", "validation_1", "applicator_1", "format_1", "metadata_1", "draft7Vocabularies", "exports", "context_1", "exports", "codegen_1", "core_1", "draft7_1", "draft7MetaSchema", "META_SUPPORT_DATA", "META_SCHEMA_ID", "Ajv", "v", "metaSchema", "require_foreach", "__commonJSMin", "exports", "module", "hasOwn", "toString", "obj", "fn", "ctx", "l", "i", "k", "require_json_pointer", "__commonJSMin", "exports", "module", "each", "api", "obj", "pointer", "value", "wrapped", "name", "refTokens", "tok", "nextTok", "i", "finalToken", "parent", "index", "descend", "results", "iterator", "type", "next", "cur", "key", "str", "require_schema", "__commonJSMin", "exports", "require_grammar", "__commonJSMin", "exports", "module", "peg$subclass", "child", "parent", "ctor", "peg$SyntaxError", "message", "expected", "found", "location", "DESCRIBE_EXPECTATION_FNS", "expectation", "literalEscape", "escapedParts", "i", "classEscape", "hex", "ch", "s", "describeExpectation", "describeExpected", "descriptions", "j", "describeFound", "peg$parse", "input", "options", "peg$FAILED", "peg$startRuleFunctions", "peg$parseDocument", "peg$startRuleFunction", "peg$c0", "nodes", "peg$c1", "peg$c2", "n", "peg$c3", "peg$anyExpectation", "peg$c4", "text", "peg$c5", "peg$c6", "peg$classExpectation", "peg$c7", "peg$c8", "peg$c9", "peg$c10", "peg$c11", "peg$c12", "peg$c13", "peg$c14", "peg$c15", "peg$literalExpectation", "peg$c16", "peg$c17", "peg$c18", "peg$c19", "peg$c20", "peg$c21", "peg$c22", "peg$c23", "peg$c24", "peg$c25", "peg$c26", "peg$c27", "peg$c28", "peg$c29", "name", "isSupportedBlockName", "peg$c30", "peg$c31", "peg$c32", "peg$c33", "peg$otherExpectation", "peg$c34", "peg$c35", "peg$c36", "code", "codes", "flattenDeep", "peg$c37", "peg$c38", "peg$c39", "peg$c40", "peg$c41", "peg$c42", "peg$c43", "peg$c44", "peg$c45", "peg$c46", "peg$c47", "value", "peg$c48", "pair", "pairs", "peg$c49", "peg$c50", "peg$c51", "peg$c52", "peg$c53", "peg$c54", "peg$c55", "peg$c56", "peg$c57", "peg$c58", "key", "array", "peg$c59", "peg$c60", "peg$c61", "all", "peg$c62", "res", "peg$c63", "peg$c64", "peg$c65", "peg$c66", "peg$c67", "peg$c68", "peg$c69", "peg$c70", "isFalse", "hash", "peg$c71", "peg$c72", "peg$c73", "peg$c74", "peg$c75", "peg$c76", "peg$c77", "peg$c78", "peg$c79", "peg$c80", "peg$c81", "peg$c82", "peg$c83", "peg$c84", "peg$c85", "peg$c86", "peg$c87", "peg$c88", "peg$c89", "first", "rest", "peg$c90", "cont", "peg$c91", "peg$c92", "peg$c93", "peg$c94", "peg$c95", "peg$c96", "peg$c97", "peg$c98", "peg$c99", "peg$c100", "peg$c101", "peg$c102", "peg$c103", "peg$c104", "peg$c105", "peg$c106", "peg$c107", "peg$c108", "peg$c109", "peg$c110", "peg$c111", "peg$c112", "peg$c113", "peg$c114", "peg$c115", "peg$c116", "numberFloat", "peg$c117", "number", "peg$c118", "vmargin", "config", "isNamedBlock", "peg$c119", "margins", "ename", "peg$c120", "line", "exludeVMargin", "peg$c121", "content", "vmargin2", "peg$c122", "peg$c123", "peg$c124", "peg$c125", "peg$c126", "peg$c127", "peg$c128", "peg$c129", "peg$c130", "t", "peg$c131", "peg$c132", "head", "peg$c133", "separator", "rowtext", "peg$c134", "bseparator", "peg$c135", "singleRow", "peg$c136", "val", "peg$c137", "peg$c138", "rowtest", "peg$c139", "peg$c140", "peg$c141", "peg$c142", "peg$c143", "peg$c144", "peg$c145", "peg$c146", "tvmargin", "type", "peg$c147", "peg$c148", "peg$c149", "peg$c150", "peg$c151", "peg$c152", "peg$c153", "peg$c154", "peg$c155", "peg$c156", "peg$c157", "peg$c158", "peg$c159", "peg$c160", "peg$c161", "peg$c162", "marker", "replacement", "peg$c163", "peg$c164", "peg$c165", "peg$c166", "peg$c167", "peg$c168", "peg$c169", "peg$c170", "peg$c171", "peg$c172", "peg$c173", "peg$c174", "peg$c175", "peg$c176", "peg$c177", "peg$c178", "peg$c179", "peg$currPos", "peg$savedPos", "peg$posDetailsCache", "peg$maxFailPos", "peg$maxFailExpected", "peg$silentFails", "peg$result", "peg$computeLocation", "description", "peg$buildStructuredError", "error", "peg$buildSimpleError", "ignoreCase", "parts", "inverted", "peg$endExpectation", "peg$computePosDetails", "pos", "details", "p", "startPos", "endPos", "startPosDetails", "endPosDetails", "peg$fail", "s0", "s1", "s2", "peg$parseElement", "s3", "s4", "s5", "s6", "s7", "peg$parsedelimitedBlockRaw", "peg$parsedelimitedBlockTable", "peg$parsedelimitedBlock", "peg$parseparagraphBlockRaw", "peg$parseparagraphBlockTable", "peg$parseparagraphBlock", "peg$parsealiasDirective", "peg$parseconfigDirective", "peg$parseabbreviatedBlockRaw", "peg$parseabbreviatedBlockTable", "peg$parseabbreviatedBlock", "peg$parsetextBlock", "peg$parseblankline", "peg$parseerror_para", "peg$parsemarkers", "peg$parsestrictIdentifier", "peg$parsemarkerAbbreviatedBlock", "peg$parsehs", "peg$parse_", "peg$parseEndline", "peg$parseLineOfText", "peg$parsechar", "peg$parseEOL", "peg$parsenewline", "peg$parseemptyline", "peg$parsemarkerBegin", "peg$parsemarkerEnd", "peg$parsemarkerFor", "peg$parsemarkerConfig", "peg$parsemarkerAlias", "peg$parseidentifier", "peg$parseText", "peg$parsetext_content", "peg$parsearray_codes", "peg$parseFCode", "peg$parsearray_items", "peg$parseitem", "peg$parseidentifierKey", "peg$parsepair_item", "peg$parsearray_pairs", "peg$parseallow_attribute", "s8", "s9", "peg$parsearray_sp", "peg$parseattributes", "s10", "s11", "s12", "s13", "peg$parsepod_configuration", "peg$parsestring", "peg$parsedigits", "peg$parsenumber", "peg$parseBoolean", "peg$parsefloatNumber", "s14", "s15", "s16", "peg$parsetableHeadSeparator", "peg$parsetableBodyRowSeparator", "peg$parsetableRow", "peg$parsetableContents", "peg$parseambientBlock", "peg$parsealias_replacement_text", "peg$parse___", "peg$parse__", "isSemanticBlock", "arr", "acc", "string", "require_grammarfc", "__commonJSMin", "exports", "module", "peg$subclass", "child", "parent", "ctor", "peg$SyntaxError", "message", "expected", "found", "location", "DESCRIBE_EXPECTATION_FNS", "expectation", "literalEscape", "escapedParts", "i", "classEscape", "hex", "ch", "s", "describeExpectation", "describeExpected", "descriptions", "j", "describeFound", "peg$parse", "input", "options", "peg$FAILED", "peg$startRuleFunctions", "peg$parseExpression", "peg$startRuleFunction", "peg$c0", "peg$c1", "peg$literalExpectation", "peg$c2", "peg$c3", "peg$c4", "peg$c5", "peg$c6", "peg$c7", "peg$c8", "peg$c9", "peg$c10", "peg$c11", "peg$c12", "peg$c13", "peg$c14", "peg$c15", "peg$c16", "peg$c17", "peg$c18", "peg$c19", "peg$c20", "peg$c21", "peg$c22", "peg$c23", "peg$c24", "peg$c25", "peg$c26", "peg$c27", "peg$c28", "peg$c29", "peg$c30", "peg$c31", "peg$c32", "peg$c33", "peg$classExpectation", "peg$c34", "peg$c35", "peg$c36", "peg$c37", "peg$c38", "char", "peg$c39", "peg$anyExpectation", "peg$c40", "id", "peg$c41", "name", "peg$c42", "content", "peg$c43", "peg$c44", "t", "flattenDeep", "peg$c45", "synonyms", "peg$c46", "peg$c47", "peg$c48", "peg$c49", "peg$c50", "peg$c51", "peg$c52", "text", "peg$c53", "peg$c54", "peg$c55", "peg$c56", "peg$c57", "peg$c58", "peg$c59", "meta", "peg$c60", "peg$c61", "peg$c62", "peg$c63", "peg$c64", "code", "codes", "peg$c65", "peg$c66", "peg$c67", "entry", "peg$c68", "peg$c69", "peg$c70", "peg$c71", "peg$c72", "peg$c73", "peg$c74", "number", "peg$c75", "peg$c76", "peg$c77", "peg$c78", "peg$c79", "peg$c80", "peg$c81", "peg$c82", "peg$c83", "peg$c84", "peg$c85", "peg$c86", "peg$c87", "peg$c88", "peg$c89", "peg$c90", "peg$c91", "peg$c92", "peg$currPos", "peg$savedPos", "peg$posDetailsCache", "peg$maxFailPos", "peg$maxFailExpected", "peg$silentFails", "peg$result", "peg$computeLocation", "description", "peg$buildStructuredError", "peg$otherExpectation", "error", "peg$buildSimpleError", "ignoreCase", "parts", "inverted", "peg$endExpectation", "peg$computePosDetails", "pos", "details", "p", "startPos", "endPos", "startPosDetails", "endPosDetails", "peg$fail", "s0", "s1", "peg$parseallowed_rules", "peg$parsecode", "peg$parsetext", "peg$parseraw_text", "peg$parsecode_A", "peg$parsecode_S", "peg$parsecode_C", "peg$parsecode_D", "peg$parsecode_E", "peg$parsecode_V", "peg$parsecode_L", "peg$parsecode_X", "peg$parsecode_Z", "peg$parseallpossible_codes", "peg$parseidentifier", "s2", "s3", "s4", "peg$parse_", "peg$parseallowed_code", "peg$parsecontent_A", "peg$parseend_code", "peg$parsestart_code", "s5", "s6", "s7", "peg$parsetext_L", "peg$parseseparator", "peg$parsearray_items", "peg$parsetext_C", "peg$parseallowed_code_C", "peg$parselooks_like_code_C", "peg$parsenot_code", "peg$parselooks_like_code", "s8", "s9", "s10", "peg$parseitem", "peg$parsehs", "peg$parsenumber", "peg$parsedecimalNumber", "peg$parseoctalNumber", "peg$parsebinaryNumber", "peg$parsehexadecimalNumber", "peg$parseitem_E", "peg$parsearray_E_items", "peg$parseempty", "arr", "acc", "val", "require_is_buffer", "__commonJSMin", "exports", "module", "obj", "require_extend", "__commonJSMin", "exports", "module", "hasOwn", "toStr", "defineProperty", "gOPD", "isArray", "arr", "isPlainObject", "obj", "hasOwnConstructor", "hasIsPrototypeOf", "key", "setProperty", "target", "options", "getProperty", "name", "extend", "src", "copy", "copyIsArray", "clone", "i", "length", "deep", "require_is_buffer", "__commonJSMin", "exports", "module", "obj", "src_exports", "__export", "PluginRegister", "src_default", "md2ast", "plugin", "__toCommonJS", "import_ajv", "pointer", "jsonShemes", "getQuery", "k", "name", "type", "re", "makePlug", "res", "is", "query", "node", "isEmpty", "obj", "prop", "makeRule", "fn", "rule", "isFor", "makeRulesArray", "key", "acc", "item", "rules", "import_crypto", "urlAlphabet", "POOL_SIZE_MULTIPLIER", "pool", "poolOffset", "fillPool", "bytes", "crypto", "nanoid", "size", "fillPool", "id", "i", "poolOffset", "urlAlphabet", "pool", "mkNode", "attr", "filterNulls", "content", "i", "mkBlock", "attrs", "type", "name", "attributes", "nanoid", "result", "mkFomattingCode", "attrs", "content", "mkNode", "mkFomattingCodeL", "filterNulls", "mkFomattingCodeDelete", "mkVerbatim", "text", "mkCaption", "content", "mkImage", "src", "alt", "mkRootBlock", "margin", "mkBlock", "makeAttrs", "node", "ctx", "config", "configured", "result", "resfn", "name", "config_default", "getNodeId", "node", "ctx", "conf", "config_default", "flattenDeep", "arr", "acc", "val", "thisFunc", "rules", "interator", "node", "context", "item", "reversed", "ruleIndex", "rule", "nextRuleSet", "nextRuleIndex", "defaultFn", "n", "ctx", "localInterator", "newNode", "makeInterator_default", "wrapContent", "pre", "post", "writer", "processor", "node", "ctx", "interator", "emptyContent", "content", "setFn", "check", "subUse", "rules", "processNode", "newFns", "makeRulesArray", "writer", "processor", "inited", "item", "makeRule", "processNodeInited", "subInterator", "node", "ctx", "interator", "makeInterator_default", "handleNested", "defaultHandler", "implicitLevel", "defaultHandlerInited", "nesting", "config_default", "isNamedBlock", "name", "flattenDeep", "arr", "acc", "val", "makeTransformer", "rule", "rules", "use", "key", "fn", "prop", "makeRule", "makePlug", "visiter", "node", "context", "item", "reversed", "ruleIndex", "newNode", "makeTransformer_default", "Events", "Writer", "output", "p", "str", "tree", "a", "err", "params", "n", "writer_default", "toAny", "options", "plugins", "fns", "processor", "parse", "_writer", "chain", "use", "run", "root", "key", "fn", "prop", "makeRule", "makePlug", "src", "opt_writer", "res", "_tmp_writer", "writer_default", "s", "writer", "tree", "newFns", "interator", "makeInterator_default", "rule", "context", "result", "pluginCleanLocation", "tree", "makeTransformer_default", "node", "ctx", "visiter", "plugin_clean_location_default", "parser", "middle", "tree", "visit_node", "node", "context", "regex", "newctx", "n", "ctx", "plugin_vmargin_default", "fcparser", "middle", "tree", "makeTransformer_default", "n", "ctx", "visiter", "conf", "config_default", "isCodeBlock", "isDataBlock", "allowValues", "allowed", "transformer", "isNamedBlock", "plugin_formatting_codes_default", "plugin_items_default", "tree", "visit", "node", "i", "matchItem", "startText", "re", "plugin_heading_default", "tree", "visit", "node", "i", "matchHead", "startText", "re", "plugin_group_defn_default", "tree", "isNodesEqual", "n1", "n2", "isNumbered", "node", "group", "a", "lastItem", "i", "item", "plugin_group_items_default", "tree", "isNodesEqual", "n1", "n2", "isNumbered", "node", "config_default", "group", "a", "level", "isInListMode", "getList", "isInsertableToList", "l", "i", "lastItem", "item", "plugin_defn_fill_term_default", "tree", "makeTransformer_default", "node", "content", "count", "newContent", "isFirstParaProcessed", "i", "item", "textNode", "splited", "term", "newTermPara", "flattenDeep", "arr", "acc", "val", "strbin", "str1", "str2", "cb", "res", "makeMask", "lines", "separators", "tmplLength", "s", "str", "tstr", "mask", "re", "match", "tmpMask", "a", "b", "i1", "i2", "m", "extractColumnsByTemplate", "text", "template", "cols", "line", "columns", "result", "i", "plugin_tables_default", "tree", "makeTransformer_default", "node", "rows", "collectValues", "row", "seps", "sep", "splitToLines", "textRows", "columnTemplate", "makeBlock", "name", "content", "attr", "rowValue", "col", "head", "rules", "writer", "processor", "node", "ctx", "interator", "src", "tree_1", "tree", "plugin_clean_location_default", "wrapContent", "synonyms", "definition", "setFn", "meta", "footnotes", "footnote", "gid", "fnRefId", "fnId", "newFeed", "content", "entry", "emptyContent", "handleNested", "subUse", "level", "id", "getNodeId", "firstPara", "other", "conf", "config_default", "title", "ajv", "Ajv", "makeTree", "plugins", "chain", "use", "parse", "plugin_vmargin_default", "plugin_items_default", "plugin_heading_default", "plugin_defn_fill_term_default", "plugin_tables_default", "plugin_formatting_codes_default", "plugin_group_items_default", "plugin_group_defn_default", "plugin", "src", "opt", "tree", "i", "parse", "makeTree", "VERSION", "bail", "error", "import_is_buffer", "import_extend", "isPlainObject", "value", "prototype", "trough", "fns", "pipeline", "run", "use", "values", "middlewareIndex", "callback", "next", "error", "output", "fn", "index", "wrap", "middelware", "middleware", "called", "wrapped", "parameters", "fnExpectsCallback", "result", "done", "exception", "then", "value", "import_is_buffer", "stringifyPosition", "value", "position", "point", "index", "pos", "VFileMessage", "reason", "place", "origin", "parts", "position", "index", "stringifyPosition", "import_path", "import_process", "import_url", "isUrl", "fileURLOrPath", "order", "VFile", "value", "options", "buffer", "isUrl", "index", "prop", "path", "assertNonEmpty", "dirname", "assertPath", "basename", "assertPart", "extname", "stem", "encoding", "reason", "place", "origin", "message", "VFileMessage", "part", "name", "unified", "base", "own", "transformers", "trough", "attachers", "namespace", "frozen", "freezeIndex", "processor", "data", "freeze", "use", "parse", "stringify", "run", "runSync", "process", "processSync", "destination", "index", "extend", "key", "value", "assertUnfrozen", "attacher", "options", "transformer", "settings", "addPlugin", "addList", "addPreset", "add", "plugin", "result", "plugins", "thing", "entry", "isPlainObject", "doc", "file", "vfile", "Parser", "assertParser", "newable", "node", "Compiler", "assertCompiler", "assertNode", "callback", "executor", "resolve", "reject", "done", "error", "tree", "complete", "assertDone", "bail", "looksLikeAVFileValue", "name", "keys", "asyncName", "looksLikeAVFile", "VFile", "isBuffer", "toString", "node", "options", "includeImageAlt", "one", "all", "values", "result", "index", "splice", "list", "start", "remove", "items", "end", "chunkStart", "parameters", "push", "hasOwnProperty", "combineExtensions", "extensions", "all", "index", "syntaxExtension", "extension", "hook", "left", "right", "code", "value", "constructs", "existing", "list", "before", "splice", "unicodePunctuationRegex", "asciiAlpha", "regexCheck", "asciiDigit", "asciiHexDigit", "asciiAlphanumeric", "asciiPunctuation", "asciiAtext", "asciiControl", "code", "markdownLineEndingOrSpace", "markdownLineEnding", "markdownSpace", "unicodeWhitespace", "unicodePunctuation", "unicodePunctuationRegex", "regex", "check", "factorySpace", "effects", "ok", "type", "max", "limit", "size", "start", "code", "markdownSpace", "prefix", "content", "initializeContent", "effects", "contentStart", "afterContentStartConstruct", "paragraphInitial", "previous", "code", "factorySpace", "lineStart", "token", "data", "markdownLineEnding", "document", "initializeDocument", "containerConstruct", "tokenizeContainer", "effects", "self", "stack", "continued", "childFlow", "childToken", "lineStartOffset", "start", "code", "item", "documentContinue", "checkNewContainers", "closeFlow", "indexBeforeExits", "indexBeforeFlow", "point", "exitContainers", "index", "splice", "documentContinued", "flowStart", "thereIsANewContainer", "thereIsNoNewContainer", "containerContinue", "flowContinue", "writeToChild", "markdownLineEnding", "token", "eof", "stream", "seen", "size", "entry", "ok", "nok", "factorySpace", "classifyCharacter", "code", "markdownLineEndingOrSpace", "unicodeWhitespace", "unicodePunctuation", "resolveAll", "constructs", "events", "context", "called", "index", "resolve", "attention", "tokenizeAttention", "resolveAllAttention", "events", "context", "index", "open", "group", "text", "openingSequence", "closingSequence", "use", "nextEvents", "offset", "start", "end", "movePoint", "push", "resolveAll", "splice", "effects", "ok", "attentionMarkers", "previous", "before", "classifyCharacter", "marker", "code", "sequence", "token", "after", "close", "point", "autolink", "tokenizeAutolink", "effects", "ok", "nok", "size", "start", "code", "open", "asciiAlpha", "schemeOrEmailAtext", "asciiAtext", "emailAtext", "asciiAlphanumeric", "schemeInsideOrEmailAtext", "urlInside", "end", "asciiControl", "emailAtSignOrDot", "emailLabel", "emailValue", "blankLine", "tokenizeBlankLine", "effects", "ok", "nok", "factorySpace", "afterWhitespace", "code", "markdownLineEnding", "blockQuote", "tokenizeBlockQuoteStart", "tokenizeBlockQuoteContinuation", "exit", "effects", "ok", "nok", "self", "start", "code", "state", "after", "markdownSpace", "factorySpace", "characterEscape", "tokenizeCharacterEscape", "effects", "ok", "nok", "start", "code", "open", "asciiPunctuation", "characterEntities", "own", "decodeNamedCharacterReference", "value", "characterEntities", "characterReference", "tokenizeCharacterReference", "effects", "ok", "nok", "self", "size", "max", "test", "start", "code", "open", "numeric", "asciiAlphanumeric", "value", "asciiHexDigit", "asciiDigit", "token", "decodeNamedCharacterReference", "codeFenced", "tokenizeCodeFenced", "effects", "ok", "nok", "self", "closingFenceConstruct", "tokenizeClosingFence", "nonLazyLine", "tokenizeNonLazyLine", "tail", "initialPrefix", "sizeOpen", "marker", "start", "code", "sequenceOpen", "factorySpace", "infoOpen", "markdownLineEnding", "openAfter", "info", "markdownLineEndingOrSpace", "infoAfter", "meta", "contentStart", "after", "contentContinue", "lineStart", "size", "closingSequenceStart", "closingSequence", "closingSequenceEnd", "codeIndented", "tokenizeCodeIndented", "indentedContent", "tokenizeIndentedContent", "effects", "ok", "nok", "self", "start", "code", "factorySpace", "afterStartPrefix", "tail", "afterPrefix", "after", "markdownLineEnding", "content", "codeText", "tokenizeCodeText", "resolveCodeText", "previous", "events", "tailExitIndex", "headEnterIndex", "index", "enter", "code", "effects", "ok", "nok", "self", "sizeOpen", "size", "token", "start", "openingSequence", "gap", "closingSequence", "markdownLineEnding", "data", "subtokenize", "events", "jumps", "index", "event", "lineIndex", "otherIndex", "otherEvent", "parameters", "subevents", "more", "subcontent", "splice", "eventIndex", "token", "context", "startPosition", "startPositions", "tokenizer", "childEvents", "gaps", "stream", "previous", "current", "adjust", "start", "breaks", "slice", "content", "tokenizeContent", "resolveContent", "continuationConstruct", "tokenizeContinuation", "events", "subtokenize", "effects", "ok", "previous", "start", "code", "data", "contentEnd", "markdownLineEnding", "contentContinue", "nok", "self", "startLookahead", "factorySpace", "prefixed", "tail", "factoryDestination", "effects", "ok", "nok", "type", "literalType", "literalMarkerType", "rawType", "stringType", "max", "limit", "balance", "start", "code", "destinationEnclosedBefore", "asciiControl", "destinationRaw", "destinationEnclosed", "markdownLineEnding", "destinationEnclosedEscape", "markdownLineEndingOrSpace", "destinationRawEscape", "factoryLabel", "effects", "ok", "nok", "type", "markerType", "stringType", "self", "size", "data", "start", "code", "atBreak", "markdownLineEnding", "label", "markdownSpace", "labelEscape", "factoryTitle", "effects", "ok", "nok", "type", "markerType", "stringType", "marker", "start", "code", "atFirstTitleBreak", "atTitleBreak", "markdownLineEnding", "factorySpace", "title", "titleEscape", "factoryWhitespace", "effects", "ok", "seen", "start", "code", "markdownLineEnding", "markdownSpace", "factorySpace", "normalizeIdentifier", "value", "definition", "tokenizeDefinition", "titleConstruct", "tokenizeTitle", "effects", "ok", "nok", "self", "identifier", "start", "code", "factoryLabel", "labelAfter", "normalizeIdentifier", "factoryWhitespace", "factoryDestination", "factorySpace", "after", "markdownLineEnding", "markdownLineEndingOrSpace", "before", "factoryTitle", "hardBreakEscape", "tokenizeHardBreakEscape", "effects", "ok", "nok", "start", "code", "open", "markdownLineEnding", "headingAtx", "tokenizeHeadingAtx", "resolveHeadingAtx", "events", "context", "contentEnd", "contentStart", "content", "text", "splice", "effects", "ok", "nok", "self", "size", "start", "code", "fenceOpenInside", "markdownLineEndingOrSpace", "headingBreak", "sequence", "markdownLineEnding", "markdownSpace", "factorySpace", "data", "htmlBlockNames", "htmlRawNames", "htmlFlow", "tokenizeHtmlFlow", "resolveToHtmlFlow", "nextBlankConstruct", "tokenizeNextBlank", "events", "index", "effects", "ok", "nok", "self", "kind", "startTag", "buffer", "marker", "start", "code", "open", "declarationStart", "tagCloseStart", "continuationDeclarationInside", "asciiAlpha", "tagName", "commentOpenInside", "cdataOpenInside", "continuation", "markdownLineEndingOrSpace", "htmlRawNames", "htmlBlockNames", "basicSelfClosing", "completeAttributeNameBefore", "completeClosingTagAfter", "asciiAlphanumeric", "markdownSpace", "completeEnd", "completeAttributeName", "completeAttributeNameAfter", "completeAttributeValueBefore", "completeAttributeValueQuoted", "completeAttributeValueUnquoted", "markdownLineEnding", "completeAttributeValueQuotedAfter", "completeAfter", "continuationCommentInside", "continuationRawTagOpen", "continuationClose", "continuationCharacterDataInside", "continuationAtLineEnding", "htmlContinueStart", "done", "htmlLineEnd", "lineStart", "continuationRawEndTag", "blankLine", "htmlText", "tokenizeHtmlText", "effects", "ok", "nok", "self", "marker", "buffer", "index", "returnState", "start", "code", "open", "declarationOpen", "tagCloseStart", "instruction", "asciiAlpha", "tagOpen", "commentOpen", "cdataOpen", "declaration", "commentStart", "commentStartDash", "comment", "commentClose", "markdownLineEnding", "atLineEnding", "end", "cdata", "cdataClose", "cdataEnd", "instructionClose", "tagClose", "asciiAlphanumeric", "tagCloseBetween", "markdownSpace", "markdownLineEndingOrSpace", "tagOpenBetween", "tagOpenAttributeName", "tagOpenAttributeNameAfter", "tagOpenAttributeValueBefore", "tagOpenAttributeValueQuoted", "tagOpenAttributeValueUnquoted", "tagOpenAttributeValueQuotedAfter", "factorySpace", "afterPrefix", "labelEnd", "tokenizeLabelEnd", "resolveToLabelEnd", "resolveAllLabelEnd", "resourceConstruct", "tokenizeResource", "fullReferenceConstruct", "tokenizeFullReference", "collapsedReferenceConstruct", "tokenizeCollapsedReference", "events", "index", "token", "context", "offset", "open", "close", "media", "group", "label", "text", "push", "resolveAll", "splice", "effects", "ok", "nok", "self", "labelStart", "defined", "start", "code", "balanced", "normalizeIdentifier", "afterLabelEnd", "factoryWhitespace", "end", "factoryDestination", "destinationAfter", "markdownLineEndingOrSpace", "between", "factoryTitle", "factoryLabel", "afterLabel", "labelStartImage", "tokenizeLabelStartImage", "labelEnd", "effects", "ok", "nok", "self", "start", "code", "open", "after", "labelStartLink", "tokenizeLabelStartLink", "labelEnd", "effects", "ok", "nok", "self", "start", "code", "after", "lineEnding", "tokenizeLineEnding", "effects", "ok", "start", "code", "factorySpace", "thematicBreak", "tokenizeThematicBreak", "effects", "ok", "nok", "size", "marker", "start", "code", "atBreak", "sequence", "markdownSpace", "factorySpace", "markdownLineEnding", "list", "tokenizeListStart", "tokenizeListContinuation", "tokenizeListEnd", "listItemPrefixWhitespaceConstruct", "tokenizeListItemPrefixWhitespace", "indentConstruct", "tokenizeIndent", "effects", "ok", "nok", "self", "tail", "initialSize", "size", "start", "code", "kind", "asciiDigit", "thematicBreak", "atMarker", "inside", "blankLine", "onBlank", "endOfPrefix", "otherPrefix", "markdownSpace", "notBlank", "factorySpace", "notInCurrentItem", "afterPrefix", "setextUnderline", "tokenizeSetextUnderline", "resolveToSetextUnderline", "events", "context", "index", "content", "text", "definition", "heading", "effects", "ok", "nok", "self", "marker", "paragraph", "start", "code", "closingSequence", "factorySpace", "closingSequenceEnd", "markdownLineEnding", "flow", "initializeFlow", "effects", "self", "initial", "blankLine", "atBlankEnding", "afterConstruct", "factorySpace", "content", "code", "resolver", "createResolver", "string", "initializeFactory", "text", "field", "initializeText", "resolveAllLineSuffixes", "effects", "self", "constructs", "start", "notText", "code", "atBreak", "data", "list", "index", "item", "extraResolver", "resolveAllText", "events", "context", "enter", "eventIndex", "chunks", "bufferIndex", "size", "tabs", "chunk", "token", "createTokenizer", "parser", "initialize", "from", "point", "columnStart", "resolveAllConstructs", "chunks", "stack", "consumed", "effects", "consume", "enter", "exit", "constructFactory", "onsuccessfulconstruct", "onsuccessfulcheck", "context", "sliceStream", "sliceSerialize", "now", "defineSkip", "write", "state", "expectedCode", "slice", "push", "main", "addResult", "resolveAll", "token", "expandTabs", "serializeChunks", "sliceChunks", "value", "accountForPotentialSkip", "chunkIndex", "chunk", "go", "code", "markdownLineEnding", "type", "fields", "construct", "info", "_", "onreturn", "hook", "constructs", "returnState", "bogusState", "listOfConstructs", "constructIndex", "currentConstruct", "handleListOfConstructs", "handleMapOfConstructs", "map", "start", "def", "all", "list", "handleConstruct", "store", "nok", "ok", "splice", "startPoint", "startPrevious", "startCurrentConstruct", "startEventsIndex", "startStack", "restore", "startIndex", "startBufferIndex", "endIndex", "endBufferIndex", "view", "index", "result", "atTab", "constructs_exports", "__export", "attentionMarkers", "contentInitial", "disable", "document", "flow", "flowInitial", "insideSpan", "string", "text", "document", "list", "blockQuote", "contentInitial", "definition", "flowInitial", "codeIndented", "flow", "headingAtx", "thematicBreak", "setextUnderline", "htmlFlow", "codeFenced", "string", "characterReference", "characterEscape", "text", "lineEnding", "labelStartImage", "attention", "autolink", "htmlText", "labelStartLink", "hardBreakEscape", "labelEnd", "codeText", "insideSpan", "resolver", "attentionMarkers", "disable", "parse", "options", "constructs", "combineExtensions", "constructs_exports", "parser", "create", "content", "document", "flow", "string", "text", "initial", "creator", "from", "createTokenizer", "search", "preprocess", "column", "buffer", "start", "atCarriageReturn", "preprocessor", "value", "encoding", "end", "chunks", "match", "next", "startPosition", "endPosition", "code", "postprocess", "events", "subtokenize", "decodeNumericCharacterReference", "value", "base", "code", "characterEscapeOrReference", "decodeString", "value", "decode", "$0", "$1", "$2", "head", "hex", "decodeNumericCharacterReference", "decodeNamedCharacterReference", "own", "fromMarkdown", "value", "encoding", "options", "compiler", "postprocess", "parse", "preprocess", "config", "configure", "opener", "link", "onenterdata", "heading", "blockQuote", "codeFlow", "buffer", "codeText", "definition", "emphasis", "hardBreak", "html", "image", "listItem", "onenterlistitemvalue", "list", "onenterlistordered", "paragraph", "onenterreference", "strong", "thematicBreak", "closer", "onexitatxheadingsequence", "onexitautolinkemail", "onexitautolinkprotocol", "onexitdata", "onexitcharacterreferencemarker", "onexitcharacterreferencevalue", "onexitcodefenced", "onexitcodefencedfence", "onexitcodefencedfenceinfo", "onexitcodefencedfencemeta", "onexitcodeindented", "onexitcodetext", "onexitdefinitiondestinationstring", "onexitdefinitionlabelstring", "onexitdefinitiontitlestring", "onexithardbreak", "onexithtmlflow", "onexithtmltext", "onexitimage", "onexitlabel", "onexitlabeltext", "onexitlineending", "onexitlink", "onexitreferencestring", "onexitresourcedestinationstring", "onexitresourcetitlestring", "onexitresource", "onexitsetextheading", "onexitsetextheadinglinesequence", "onexitsetextheadingtext", "data", "compile", "events", "tree", "stack", "tokenStack", "listStack", "context", "enter", "exit", "resume", "setData", "getData", "index", "tail", "prepareList", "handler", "defaultOnError", "point", "start", "length", "containerBalance", "listSpread", "lineIndex", "firstBlankLineIndex", "atMarker", "event", "tailIndex", "tailEvent", "key", "d", "create", "and", "open", "token", "node", "errorHandler", "close", "onExitError", "stringifyPosition", "toString", "ancestor", "label", "normalizeIdentifier", "depth", "parent", "text", "string", "decodeString", "fragment", "type", "decodeNumericCharacterReference", "decodeNamedCharacterReference", "combined", "extensions", "extension", "left", "right", "remarkParse", "options", "doc", "settings", "fromMarkdown", "remark_parse_default", "remarkParse", "www", "tokenizeWww", "domain", "tokenizeDomain", "path", "tokenizePath", "punctuation", "tokenizePunctuation", "namedCharacterReference", "tokenizeNamedCharacterReference", "wwwAutolink", "tokenizeWwwAutolink", "previousWww", "httpAutolink", "tokenizeHttpAutolink", "previousHttp", "emailAutolink", "tokenizeEmailAutolink", "previousEmail", "text", "gfmAutolinkLiteral", "code", "effects", "ok", "nok", "self", "hasDot", "hasDigitInLastSegment", "start", "gfmAtext", "previousUnbalanced", "atext", "label", "done", "dotContinuation", "dashOrUnderscoreContinuation", "asciiAlphanumeric", "asciiDigit", "afterDashOrUnderscore", "t1", "t2", "p", "s", "colon", "slash1", "slash2", "after", "asciiControl", "unicodeWhitespace", "unicodePunctuation", "w2", "w3", "dot", "markdownLineEnding", "hasUnderscoreInLastSegment", "hasUnderscoreInLastLastSegment", "punctuationContinuation", "balance", "inPath", "continuedPunctuation", "parenAtPathEnd", "pathEnd", "trailingPunctuation", "inside", "asciiAlpha", "markdownLineEndingOrSpace", "events", "index", "result", "token", "indent", "tokenizeIndent", "gfmFootnote", "tokenizeDefinitionStart", "tokenizeDefinitionContinuation", "gfmFootnoteDefinitionEnd", "tokenizeGfmFootnoteCall", "tokenizePotentialGfmFootnoteCall", "resolveToPotentialGfmFootnoteCall", "effects", "ok", "nok", "self", "index", "defined", "labelStart", "token", "start", "code", "id", "normalizeIdentifier", "events", "context", "call", "marker", "string", "chunk", "replacement", "size", "data", "callStart", "callData", "end", "markdownLineEndingOrSpace", "callEscape", "identifier", "atBreak", "labelAfter", "markdownLineEnding", "label", "labelEscape", "factorySpace", "done", "blankLine", "afterPrefix", "tail", "gfmStrikethrough", "options", "single", "tokenizer", "tokenizeStrikethrough", "resolveAllStrikethrough", "events", "context", "index", "open", "strikethrough", "text", "nextEvents", "splice", "resolveAll", "effects", "ok", "nok", "previous", "size", "start", "code", "more", "before", "classifyCharacter", "token", "after", "gfmTable", "tokenizeTable", "resolveTable", "nextPrefixedOrBlank", "tokenizeNextPrefixedOrBlank", "events", "context", "index", "inHead", "inDelimiterRow", "inRow", "contentStart", "contentEnd", "cellStart", "seenCellInRow", "token", "content", "text", "cell", "effects", "ok", "nok", "self", "align", "tableHeaderCount", "seenDelimiter", "hasDash", "start", "code", "cellDividerHead", "inCellContentHead", "cellBreakHead", "markdownLineEnding", "atRowEndHead", "markdownSpace", "inWhitespaceHead", "markdownLineEndingOrSpace", "inCellContentEscapeHead", "originalInterrupt", "tokenizeRowEnd", "atDelimiterRowBreak", "rowEndDelimiter", "inWhitespaceDelimiter", "inFillerDelimiter", "afterLeftAlignment", "afterRightAlignment", "tableClose", "factorySpace", "bodyStart", "rowStartBody", "cellDividerBody", "inCellContentBody", "cellBreakBody", "atRowEndBody", "inWhitespaceBody", "inCellContentEscapeBody", "tableBodyClose", "prefixed", "tail", "size", "whitespace", "tasklistCheck", "tokenizeTasklistCheck", "gfmTaskListItem", "effects", "ok", "nok", "self", "open", "code", "inside", "markdownLineEndingOrSpace", "close", "spaceThenNonSpace", "factorySpace", "after", "tail", "markdownLineEnding", "gfm", "options", "combineExtensions", "gfmAutolinkLiteral", "gfmFootnote", "gfmStrikethrough", "gfmTable", "gfmTaskListItem", "ccount", "value", "character", "source", "count", "index", "escapeStringRegexp", "string", "convert", "test", "ok", "typeFactory", "anyFactory", "propsFactory", "castFactory", "tests", "checks", "index", "any", "parameters", "check", "all", "node", "key", "type", "assertion", "color", "d", "CONTINUE", "SKIP", "EXIT", "visitParents", "tree", "test", "visitor", "reverse", "is", "convert", "step", "factory", "node", "index", "parents", "value", "name", "visit", "color", "result", "subresult", "offset", "grandparents", "toResult", "own", "findAndReplace", "tree", "find", "replace", "options", "settings", "schema", "ignored", "convert", "pairs", "toPairs", "pairIndex", "visitParents", "visitor", "node", "parents", "index", "grandparent", "parent", "handler", "start", "change", "nodes", "position", "match", "matchObject", "value", "result", "toExpression", "toFunction", "key", "escapeStringRegexp", "inConstruct", "notInConstruct", "gfmAutolinkLiteralFromMarkdown", "transformGfmAutolinkLiterals", "enterLiteralAutolink", "enterLiteralAutolinkValue", "exitLiteralAutolink", "exitLiteralAutolinkEmail", "exitLiteralAutolinkHttp", "exitLiteralAutolinkWww", "gfmAutolinkLiteralToMarkdown", "token", "node", "tree", "findAndReplace", "findUrl", "findEmail", "_", "protocol", "domain", "path", "match", "prefix", "previous", "isCorrectDomain", "parts", "splitUrl", "result", "atext", "label", "url", "trailExec", "closingParenIndex", "openingParens", "closingParens", "trail", "ccount", "email", "code", "unicodeWhitespace", "unicodePunctuation", "association", "node", "decodeString", "track", "options_", "options", "now", "lineShift", "line", "column", "move", "current", "shift", "value", "chunks", "tail", "containerFlow", "parent", "context", "safeOptions", "indexStack", "children", "tracker", "track", "results", "index", "child", "between", "left", "right", "result", "eol", "indentLines", "value", "map", "result", "start", "line", "match", "one", "patternCompile", "pattern", "before", "patternInScope", "stack", "pattern", "listInScope", "list", "none", "index", "safe", "context", "input", "config", "value", "positions", "result", "infos", "index", "pattern", "patternInScope", "expression", "patternCompile", "match", "before", "after", "position", "numerical", "start", "end", "escapeBackslashes", "a", "b", "results", "whole", "gfmFootnoteFromMarkdown", "enterFootnoteDefinition", "enterFootnoteDefinitionLabelString", "enterFootnoteCall", "enterFootnoteCallString", "exitFootnoteDefinition", "exitFootnoteDefinitionLabelString", "exitFootnoteCall", "exitFootnoteCallString", "token", "label", "node", "normalizeIdentifier", "gfmFootnoteToMarkdown", "footnoteReference", "footnoteReferencePeek", "footnoteDefinition", "_", "context", "safeOptions", "tracker", "track", "value", "exit", "subexit", "safe", "association", "indentLines", "containerFlow", "map", "line", "index", "blank", "containerPhrasing", "parent", "context", "safeOptions", "indexStack", "children", "results", "index", "before", "tracker", "track", "child", "after", "handle", "gfmStrikethroughFromMarkdown", "enterStrikethrough", "exitStrikethrough", "gfmStrikethroughToMarkdown", "handleDelete", "peekDelete", "token", "node", "_", "context", "safeOptions", "tracker", "track", "exit", "value", "containerPhrasing", "inlineCode", "inlineCodePeek", "node", "_", "context", "value", "sequence", "index", "pattern", "expression", "patternCompile", "match", "position", "markdownTable", "table", "options", "align", "stringLength", "defaultStringLength", "alignments", "cellMatrix", "sizeMatrix", "longestCellByColumn", "mostCellsPerRow", "rowIndex", "row", "sizes", "columnIndex", "cell", "serialize", "size", "toAlignment", "code", "before", "after", "lines", "line", "value", "gfmTableFromMarkdown", "enterTable", "enterCell", "enterRow", "exitCodeText", "exitTable", "exit", "token", "align", "d", "value", "replace", "node", "$0", "$1", "gfmTableToMarkdown", "options", "settings", "padding", "alignDelimiters", "stringLength", "around", "handleTable", "handleTableRow", "handleTableCell", "inlineCodeWithTable", "_", "context", "safeOptions", "serializeData", "handleTableAsData", "row", "handleTableRowAsData", "subexit", "containerPhrasing", "matrix", "markdownTable", "children", "index", "result", "parent", "inlineCode", "checkBullet", "context", "marker", "checkListItemIndent", "context", "style", "listItem", "node", "parent", "context", "safeOptions", "listItemIndent", "checkListItemIndent", "bullet", "checkBullet", "size", "tracker", "track", "exit", "value", "indentLines", "containerFlow", "map", "line", "index", "blank", "gfmTaskListItemFromMarkdown", "exitCheck", "exitParagraphWithTaskListItem", "gfmTaskListItemToMarkdown", "listItemWithTaskListItem", "token", "node", "parent", "siblings", "head", "index", "firstParaghraph", "sibling", "context", "safeOptions", "checkable", "checkbox", "tracker", "track", "value", "listItem", "check", "$0", "gfmFromMarkdown", "gfmAutolinkLiteralFromMarkdown", "gfmFootnoteFromMarkdown", "gfmStrikethroughFromMarkdown", "gfmTableFromMarkdown", "gfmTaskListItemFromMarkdown", "gfmToMarkdown", "options", "gfmAutolinkLiteralToMarkdown", "gfmFootnoteToMarkdown", "gfmStrikethroughToMarkdown", "gfmTableToMarkdown", "gfmTaskListItemToMarkdown", "remarkGfm", "options", "data", "add", "gfm", "gfmFromMarkdown", "gfmToMarkdown", "field", "value", "md2ast", "src", "lineOffset", "md_tree", "unified", "remark_parse_default", "remarkGfm", "definitionMap", "applyLineOffset", "offset", "location", "start", "end", "toAny", "writer", "processor", "node", "ctx", "interator", "uast", "children", "position", "attr", "mkRootBlock", "mkBlock", "savedListLevel", "definition", "meta", "mkFomattingCodeL", "mkFomattingCode", "mkVerbatim", "lang", "config", "title", "alt", "url", "mkImage", "mkCaption", "mkFomattingCodeDelete", "plugin", "_", "processor", "node", "ctx", "content", "lineOffset", "md2ast", "helper", "PluginRegister", "src_default"]
|
|
7
|
+
}
|