construct-hub 0.2.1 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. package/.jsii +2 -2
  2. package/lib/backend/transliterator/transliterator.bundle/Dockerfile +7 -3
  3. package/lib/backend/transliterator/transliterator.bundle/index.js +495 -238
  4. package/lib/construct-hub.js +1 -1
  5. package/lib/package-sources/code-artifact.js +1 -1
  6. package/lib/package-sources/npmjs.js +1 -1
  7. package/lib/spdx-license.js +1 -1
  8. package/package.json +9 -9
  9. package/website/asset-manifest.json +38 -34
  10. package/website/assets/aws-cdk.png +0 -0
  11. package/website/assets/kubernetes.png +0 -0
  12. package/website/assets/terraform.png +0 -0
  13. package/website/index.html +1 -1
  14. package/website/service-worker.js +1 -1
  15. package/website/service-worker.js.map +1 -1
  16. package/website/static/js/{0.ff9d42f8.chunk.js → 0.074504b3.chunk.js} +2 -2
  17. package/website/static/js/{0.ff9d42f8.chunk.js.map → 0.074504b3.chunk.js.map} +1 -1
  18. package/website/static/js/1.272635ed.chunk.js +2 -0
  19. package/website/static/js/{1.bd0a2241.chunk.js.map → 1.272635ed.chunk.js.map} +1 -1
  20. package/website/static/js/10.d664efc4.chunk.js +2 -0
  21. package/website/static/js/10.d664efc4.chunk.js.map +1 -0
  22. package/website/static/js/11.6f7f0c4b.chunk.js +2 -0
  23. package/website/static/js/{10.32615aa0.chunk.js.map → 11.6f7f0c4b.chunk.js.map} +1 -1
  24. package/website/static/js/12.c21a676e.chunk.js +2 -0
  25. package/website/static/js/12.c21a676e.chunk.js.map +1 -0
  26. package/website/static/js/{11.051d89fc.chunk.js → 13.8635b63a.chunk.js} +2 -2
  27. package/website/static/js/{11.051d89fc.chunk.js.map → 13.8635b63a.chunk.js.map} +1 -1
  28. package/website/static/js/{12.e96b82dd.chunk.js → 14.86414212.chunk.js} +3 -3
  29. package/website/static/js/{12.e96b82dd.chunk.js.LICENSE.txt → 14.86414212.chunk.js.LICENSE.txt} +0 -0
  30. package/website/static/js/{12.e96b82dd.chunk.js.map → 14.86414212.chunk.js.map} +1 -1
  31. package/website/static/js/{13.fb054c47.chunk.js → 15.78ca2283.chunk.js} +2 -2
  32. package/website/static/js/{13.fb054c47.chunk.js.map → 15.78ca2283.chunk.js.map} +1 -1
  33. package/website/static/js/4.53a8d553.chunk.js +3 -0
  34. package/website/static/js/{4.7cd92fab.chunk.js.LICENSE.txt → 4.53a8d553.chunk.js.LICENSE.txt} +0 -0
  35. package/website/static/js/4.53a8d553.chunk.js.map +1 -0
  36. package/website/static/js/5.5d827820.chunk.js +3 -0
  37. package/website/static/js/{5.0da0a8ef.chunk.js.LICENSE.txt → 5.5d827820.chunk.js.LICENSE.txt} +0 -0
  38. package/website/static/js/{5.0da0a8ef.chunk.js.map → 5.5d827820.chunk.js.map} +1 -1
  39. package/website/static/js/6.f37a117e.chunk.js +2 -0
  40. package/website/static/js/{6.c0e3f99c.chunk.js.map → 6.f37a117e.chunk.js.map} +1 -1
  41. package/website/static/js/{7.11632168.chunk.js → 7.a4739ebc.chunk.js} +2 -2
  42. package/website/static/js/{7.11632168.chunk.js.map → 7.a4739ebc.chunk.js.map} +1 -1
  43. package/website/static/js/{8.8af79a83.chunk.js → 8.b0c4d0d8.chunk.js} +2 -2
  44. package/website/static/js/{8.8af79a83.chunk.js.map → 8.b0c4d0d8.chunk.js.map} +1 -1
  45. package/website/static/js/9.dcbf33c2.chunk.js +2 -0
  46. package/website/static/js/9.dcbf33c2.chunk.js.map +1 -0
  47. package/website/static/js/main.e289a3fc.chunk.js +2 -0
  48. package/website/static/js/main.e289a3fc.chunk.js.map +1 -0
  49. package/website/static/js/runtime-main.fa5c7ad1.js +2 -0
  50. package/website/static/js/runtime-main.fa5c7ad1.js.map +1 -0
  51. package/website/static/js/1.bd0a2241.chunk.js +0 -2
  52. package/website/static/js/10.32615aa0.chunk.js +0 -2
  53. package/website/static/js/4.7cd92fab.chunk.js +0 -3
  54. package/website/static/js/4.7cd92fab.chunk.js.map +0 -1
  55. package/website/static/js/5.0da0a8ef.chunk.js +0 -3
  56. package/website/static/js/6.c0e3f99c.chunk.js +0 -2
  57. package/website/static/js/9.2b21526e.chunk.js +0 -2
  58. package/website/static/js/9.2b21526e.chunk.js.map +0 -1
  59. package/website/static/js/main.f1390607.chunk.js +0 -2
  60. package/website/static/js/main.f1390607.chunk.js.map +0 -1
  61. package/website/static/js/runtime-main.2f83ac68.js +0 -2
  62. package/website/static/js/runtime-main.2f83ac68.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../node_modules/micromark/dist/character/markdown-line-ending.js","../node_modules/micromark/dist/tokenize/factory-space.js","../node_modules/mdast-util-to-hast/lib/all.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/createClass.js","../node_modules/unist-builder/index.js","../node_modules/micromark/dist/character/markdown-space.js","../node_modules/micromark/dist/util/chunked-splice.js","../node_modules/micromark/dist/character/markdown-line-ending-or-space.js","../node_modules/parse5/lib/utils/mixin.js","../node_modules/micromark/dist/util/regex-check.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/inherits.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/lodash/_root.js","../node_modules/micromark/dist/util/shallow.js","../../../src/table.tsx","../node_modules/property-information/lib/util/create.js","../node_modules/parse5/lib/common/html.js","../node_modules/micromark/dist/constant/assign.js","../node_modules/micromark/dist/util/prefix-size.js","../node_modules/micromark/dist/character/ascii-alphanumeric.js","../node_modules/mdast-util-to-hast/lib/wrap.js","../node_modules/property-information/html.js","../node_modules/property-information/svg.js","../node_modules/property-information/find.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_baseGetTag.js","../node_modules/micromark/dist/constant/from-char-code.js","../node_modules/micromark/dist/tokenize/partial-blank-line.js","../node_modules/micromark/dist/util/resolve-all.js","../node_modules/micromark/dist/character/ascii-alpha.js","../node_modules/unist-util-visit/index.js","../node_modules/mdurl/encode.js","../node_modules/xtend/immutable.js","../node_modules/property-information/lib/util/types.js","../node_modules/parse5/lib/tokenizer/index.js","../node_modules/lodash/isObjectLike.js","../node_modules/micromark/dist/util/normalize-identifier.js","../node_modules/micromark/dist/util/miniflat.js","../node_modules/micromark/dist/util/chunked-push.js","../node_modules/micromark/dist/character/unicode-punctuation.js","../node_modules/micromark/dist/character/unicode-whitespace.js","../node_modules/micromark/dist/character/ascii-control.js","../node_modules/micromark/dist/tokenize/label-end.js","../node_modules/unist-util-is/convert.js","../node_modules/unist-util-position/index.js","../node_modules/property-information/normalize.js","../node_modules/space-separated-tokens/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/parse5/lib/common/unicode.js","../node_modules/parse5/lib/common/error-codes.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/parse5/lib/extensions/error-reporting/mixin-base.js","../node_modules/lodash/_Symbol.js","../node_modules/repeat-string/index.js","../node_modules/vfile/index.js","../node_modules/unist-util-stringify-position/index.js","../node_modules/micromark/dist/constant/has-own-property.js","../node_modules/micromark/dist/util/size-chunks.js","../node_modules/micromark/dist/util/subtokenize.js","../node_modules/micromark/dist/initialize/text.js","../node_modules/micromark/dist/util/combine-extensions.js","../node_modules/micromark/dist/util/classify-character.js","../node_modules/parse-entities/decode-entity.browser.js","../node_modules/micromark/dist/character/ascii-digit.js","../node_modules/micromark/dist/tokenize/factory-destination.js","../node_modules/micromark/dist/tokenize/factory-label.js","../node_modules/micromark/dist/tokenize/factory-whitespace.js","../node_modules/micromark/dist/tokenize/factory-title.js","../node_modules/micromark/dist/tokenize/thematic-break.js","../node_modules/unist-util-visit-parents/index.js","../node_modules/mdast-util-to-hast/lib/one.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/aria.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/style-to-object/index.js","../node_modules/parse5/lib/extensions/location-info/tokenizer-mixin.js","../node_modules/parse5/lib/extensions/position-tracking/preprocessor-mixin.js","../node_modules/hastscript/factory.js","../node_modules/zwitch/index.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isObject.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isArray.js","../node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js","../../../src/image.tsx","../../../src/use-image.ts","../node_modules/copy-to-clipboard/index.js","../node_modules/toggle-selection/index.js","../node_modules/buffer/index.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/react-markdown/src/react-markdown.js","../node_modules/vfile/lib/index.js","../node_modules/vfile-message/index.js","../node_modules/vfile/lib/core.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/node_modules/is-buffer/index.js","../node_modules/unified/index.js","../node_modules/bail/index.js","../node_modules/unified/node_modules/is-buffer/index.js","../node_modules/extend/index.js","../node_modules/unified/node_modules/is-plain-obj/index.js","../node_modules/trough/index.js","../node_modules/trough/wrap.js","../node_modules/remark-parse/index.js","../node_modules/mdast-util-from-markdown/index.js","../node_modules/mdast-util-from-markdown/dist/index.js","../node_modules/mdast-util-to-string/index.js","../node_modules/micromark/dist/util/safe-from-int.js","../node_modules/micromark/dist/parse.js","../node_modules/micromark/dist/initialize/content.js","../node_modules/micromark/dist/initialize/document.js","../node_modules/micromark/dist/initialize/flow.js","../node_modules/micromark/dist/tokenize/content.js","../node_modules/micromark/dist/constant/splice.js","../node_modules/micromark/dist/util/create-tokenizer.js","../node_modules/micromark/dist/util/serialize-chunks.js","../node_modules/micromark/dist/util/slice-chunks.js","../node_modules/micromark/dist/constructs.js","../node_modules/micromark/dist/tokenize/attention.js","../node_modules/micromark/dist/constant/unicode-punctuation-regex.js","../node_modules/micromark/dist/util/move-point.js","../node_modules/micromark/dist/tokenize/autolink.js","../node_modules/micromark/dist/character/ascii-atext.js","../node_modules/micromark/dist/tokenize/block-quote.js","../node_modules/micromark/dist/tokenize/character-escape.js","../node_modules/micromark/dist/character/ascii-punctuation.js","../node_modules/micromark/dist/tokenize/character-reference.js","../node_modules/micromark/dist/character/ascii-hex-digit.js","../node_modules/micromark/dist/tokenize/code-fenced.js","../node_modules/micromark/dist/tokenize/code-indented.js","../node_modules/micromark/dist/tokenize/code-text.js","../node_modules/micromark/dist/tokenize/definition.js","../node_modules/micromark/dist/tokenize/hard-break-escape.js","../node_modules/micromark/dist/tokenize/heading-atx.js","../node_modules/micromark/dist/tokenize/html-flow.js","../node_modules/micromark/dist/constant/html-block-names.js","../node_modules/micromark/dist/constant/html-raw-names.js","../node_modules/micromark/dist/tokenize/html-text.js","../node_modules/micromark/dist/tokenize/label-start-image.js","../node_modules/micromark/dist/tokenize/label-start-link.js","../node_modules/micromark/dist/tokenize/line-ending.js","../node_modules/micromark/dist/tokenize/list.js","../node_modules/micromark/dist/tokenize/setext-underline.js","../node_modules/micromark/dist/preprocess.js","../node_modules/micromark/dist/postprocess.js","../node_modules/remark-rehype/index.js","../node_modules/mdast-util-to-hast/index.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/unist-util-visit-parents/color.browser.js","../node_modules/unist-util-generated/index.js","../node_modules/mdast-util-definitions/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/property-information/lib/html.js","../node_modules/react-markdown/src/rehype-filter.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/react-markdown/src/uri-transformer.js","../node_modules/react-markdown/src/ast-to-react.js","../node_modules/react-markdown/node_modules/react-is/index.js","../node_modules/react-markdown/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/property-information/lib/svg.js","../node_modules/inline-style-parser/index.js","../node_modules/rehype-raw/index.js","../node_modules/hast-util-raw/index.js","../node_modules/parse5/lib/parser/index.js","../node_modules/parse5/lib/tokenizer/preprocessor.js","../node_modules/parse5/lib/tokenizer/named-entity-data.js","../node_modules/parse5/lib/parser/open-element-stack.js","../node_modules/parse5/lib/parser/formatting-element-list.js","../node_modules/parse5/lib/extensions/location-info/parser-mixin.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/parse5/lib/extensions/location-info/open-element-stack-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/get.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/parse5/lib/tree-adapters/default.js","../node_modules/parse5/lib/utils/merge-options.js","../node_modules/parse5/lib/common/doctype.js","../node_modules/parse5/lib/common/foreign-content.js","../node_modules/hast-util-from-parse5/index.js","../node_modules/hastscript/svg.js","../node_modules/hast-util-parse-selector/index.js","../node_modules/hastscript/index.js","../node_modules/hastscript/html.js","../node_modules/vfile-location/index.js","../node_modules/hast-util-to-parse5/index.js","../node_modules/hast-to-hyperscript/index.js","../node_modules/rehype-sanitize/index.js","../node_modules/hast-util-sanitize/index.js","../node_modules/hast-util-sanitize/lib/index.js","../node_modules/node-emoji/index.js","../node_modules/node-emoji/lib/emoji.js","../node_modules/lodash/toArray.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/isString.js","../node_modules/lodash/_iteratorToArray.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/values.js","../node_modules/lodash/_baseValues.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/keys.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_overArg.js","../node_modules/remark-gfm/index.js","../node_modules/micromark-extension-gfm/index.js","../node_modules/micromark-extension-gfm/syntax.js","../node_modules/micromark-extension-gfm-autolink-literal/index.js","../node_modules/micromark-extension-gfm-autolink-literal/syntax.js","../node_modules/micromark-extension-gfm-strikethrough/index.js","../node_modules/micromark-extension-gfm-table/index.js","../node_modules/micromark-extension-gfm-table/syntax.js","../node_modules/micromark-extension-gfm-task-list-item/index.js","../node_modules/micromark-extension-gfm-task-list-item/syntax.js","../node_modules/mdast-util-gfm/from-markdown.js","../node_modules/mdast-util-gfm-autolink-literal/from-markdown.js","../node_modules/ccount/index.js","../node_modules/mdast-util-find-and-replace/index.js","../node_modules/escape-string-regexp/index.js","../node_modules/mdast-util-gfm-strikethrough/from-markdown.js","../node_modules/mdast-util-gfm-table/from-markdown.js","../node_modules/mdast-util-gfm-task-list-item/from-markdown.js","../node_modules/mdast-util-gfm/to-markdown.js","../node_modules/mdast-util-gfm-autolink-literal/to-markdown.js","../node_modules/mdast-util-gfm-strikethrough/to-markdown.js","../node_modules/mdast-util-gfm-table/to-markdown.js","../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js","../node_modules/markdown-table/index.js","../node_modules/mdast-util-gfm-task-list-item/to-markdown.js","../node_modules/mdast-util-to-markdown/lib/handle/list-item.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/util/container-flow.js","../node_modules/mdast-util-to-markdown/lib/util/indent-lines.js","../node_modules/mdast-util-to-markdown/lib/configure.js","../node_modules/prism-react-renderer/themes/nightOwlLight/index.js","../node_modules/react-dom/server.browser.js","../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../node_modules/remark-emoji/node_modules/unist-util-is/index.js","../node_modules/remark-emoji/node_modules/unist-util-visit-parents/index.js","../node_modules/remark-emoji/node_modules/unist-util-visit/index.js","../node_modules/emoticon/index.js","../node_modules/remark-emoji/index.js","../node_modules/prism-react-renderer/prism/index.js","../node_modules/prism-react-renderer/themes/duotoneDark/index.js","../node_modules/prism-react-renderer/dist/index.js","../../../src/Link.tsx","../../../src/use-clipboard.ts","../../../src/use-media-query.ts","../../../src/Check.tsx","../../../src/Copy.tsx","../../../src/code.tsx","../../../src/input-group.tsx","../../../src/input-element.tsx","../../../src/ArrowBack.tsx","../../../src/popover-context.ts","../../../src/popover-transition.tsx","../../../src/pointer-event.ts","../../../src/use-focus-on-pointerdown.ts","../../../src/user-agent.ts","../../../src/use-pointer-event.ts","../../../src/use-focus-on-show.ts","../../../src/use-popover.ts","../../../src/popover.tsx"],"names":["module","exports","code","markdownSpace","require","effects","ok","type","max","limit","Infinity","size","enter","prefix","consume","exit","h","parent","result","head","nodes","children","length","values","index","one","value","replace","concat","instance","Constructor","TypeError","_defineProperties","target","props","i","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","node","undefined","Array","isArray","assign","String","splice","list","start","remove","items","parameters","end","chunkStart","from","unshift","apply","slice","Mixin","host","originalMethods","overriddenMethods","this","_getOverriddenMethods","keys","Error","install","Ctor","opts","__mixins","constructor","mixin","push","fromCharCode","regex","test","setPrototypeOf","subClass","superClass","create","getPrototypeOf","isNativeReflectConstruct","possibleConstructorReturn","Derived","hasNativeReflectConstruct","Super","NewTarget","Reflect","construct","arguments","freeGlobal","freeSelf","self","root","Function","object","Table","forwardRef","styles","useMultiStyleConfig","omitThemingProps","className","role","ref","__css","cx","TableCaption","placement","useStyles","captionSide","Thead","thead","Tbody","tbody","Tfoot","tfoot","Th","isNumeric","rest","Tr","tr","Td","normalize","Schema","DefinedInfo","definition","prop","info","space","mustUseProperty","attributes","properties","transform","property","normal","indexOf","attribute","NS","NAMESPACES","HTML","MATHML","SVG","XLINK","XML","XMLNS","ATTRS","TYPE","ACTION","ENCODING","PROMPT","NAME","COLOR","FACE","SIZE","DOCUMENT_MODE","NO_QUIRKS","QUIRKS","LIMITED_QUIRKS","$","TAG_NAMES","A","ADDRESS","ANNOTATION_XML","APPLET","AREA","ARTICLE","ASIDE","B","BASE","BASEFONT","BGSOUND","BIG","BLOCKQUOTE","BODY","BR","BUTTON","CAPTION","CENTER","CODE","COL","COLGROUP","DD","DESC","DETAILS","DIALOG","DIR","DIV","DL","DT","EM","EMBED","FIELDSET","FIGCAPTION","FIGURE","FONT","FOOTER","FOREIGN_OBJECT","FORM","FRAME","FRAMESET","H1","H2","H3","H4","H5","H6","HEAD","HEADER","HGROUP","HR","I","IMG","IMAGE","INPUT","IFRAME","KEYGEN","LABEL","LI","LINK","LISTING","MAIN","MALIGNMARK","MARQUEE","MATH","MENU","META","MGLYPH","MI","MO","MN","MS","MTEXT","NAV","NOBR","NOFRAMES","NOEMBED","NOSCRIPT","OBJECT","OL","OPTGROUP","OPTION","P","PARAM","PLAINTEXT","PRE","RB","RP","RT","RTC","RUBY","S","SCRIPT","SECTION","SELECT","SOURCE","SMALL","SPAN","STRIKE","STRONG","STYLE","SUB","SUMMARY","SUP","TABLE","TBODY","TEMPLATE","TEXTAREA","TFOOT","TD","TH","THEAD","TITLE","TR","TRACK","TT","U","UL","VAR","WBR","XMP","SPECIAL_ELEMENTS","sizeChunks","events","tail","sliceStream","asciiAlphanumeric","regexCheck","loose","u","merge","xlink","xml","xmlns","aria","html","svg","Info","data","schema","Type","valid","charAt","dash","camelcase","toUpperCase","datasetToProperty","cap","kebab","datasetToAttribute","$0","toLowerCase","baseIsNative","getValue","Symbol","getRawTag","objectToString","symToStringTag","toStringTag","markdownLineEnding","factorySpace","partialBlankLine","tokenize","nok","partial","constructs","context","resolve","called","resolveAll","asciiAlpha","visit","visitParents","CONTINUE","SKIP","EXIT","tree","visitor","reverse","parents","encodeCache","encode","string","exclude","keepEscaped","l","nextCode","cache","defaultChars","ch","toString","charCodeAt","getEncodeCache","encodeURIComponent","componentChars","source","hasOwnProperty","call","powers","increment","Math","pow","boolean","booleanish","overloadedBoolean","number","spaceSeparated","commaSeparated","commaOrSpaceSeparated","Preprocessor","unicode","neTree","ERR","CODE_POINTS","$$","CODE_POINT_SEQUENCES","C1_CONTROLS_REFERENCE_REPLACEMENTS","DATA_STATE","RCDATA_STATE","RAWTEXT_STATE","SCRIPT_DATA_STATE","PLAINTEXT_STATE","TAG_OPEN_STATE","END_TAG_OPEN_STATE","TAG_NAME_STATE","RCDATA_LESS_THAN_SIGN_STATE","RCDATA_END_TAG_OPEN_STATE","RCDATA_END_TAG_NAME_STATE","RAWTEXT_LESS_THAN_SIGN_STATE","RAWTEXT_END_TAG_OPEN_STATE","RAWTEXT_END_TAG_NAME_STATE","SCRIPT_DATA_LESS_THAN_SIGN_STATE","SCRIPT_DATA_END_TAG_OPEN_STATE","SCRIPT_DATA_END_TAG_NAME_STATE","SCRIPT_DATA_ESCAPE_START_STATE","SCRIPT_DATA_ESCAPE_START_DASH_STATE","SCRIPT_DATA_ESCAPED_STATE","SCRIPT_DATA_ESCAPED_DASH_STATE","SCRIPT_DATA_ESCAPED_DASH_DASH_STATE","SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE","SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE","SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE","SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE","SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE","BEFORE_ATTRIBUTE_NAME_STATE","ATTRIBUTE_NAME_STATE","AFTER_ATTRIBUTE_NAME_STATE","BEFORE_ATTRIBUTE_VALUE_STATE","ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE","ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE","ATTRIBUTE_VALUE_UNQUOTED_STATE","AFTER_ATTRIBUTE_VALUE_QUOTED_STATE","SELF_CLOSING_START_TAG_STATE","BOGUS_COMMENT_STATE","MARKUP_DECLARATION_OPEN_STATE","COMMENT_START_STATE","COMMENT_START_DASH_STATE","COMMENT_STATE","COMMENT_LESS_THAN_SIGN_STATE","COMMENT_LESS_THAN_SIGN_BANG_STATE","COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE","COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE","COMMENT_END_DASH_STATE","COMMENT_END_STATE","COMMENT_END_BANG_STATE","DOCTYPE_STATE","BEFORE_DOCTYPE_NAME_STATE","DOCTYPE_NAME_STATE","AFTER_DOCTYPE_NAME_STATE","AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE","BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE","DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE","DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE","AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE","BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE","AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE","BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE","DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE","DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE","AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE","BOGUS_DOCTYPE_STATE","CDATA_SECTION_STATE","CDATA_SECTION_BRACKET_STATE","CDATA_SECTION_END_STATE","CHARACTER_REFERENCE_STATE","NAMED_CHARACTER_REFERENCE_STATE","AMBIGUOUS_AMPERSAND_STATE","NUMERIC_CHARACTER_REFERENCE_STATE","HEXADEMICAL_CHARACTER_REFERENCE_START_STATE","DECIMAL_CHARACTER_REFERENCE_START_STATE","HEXADEMICAL_CHARACTER_REFERENCE_STATE","DECIMAL_CHARACTER_REFERENCE_STATE","NUMERIC_CHARACTER_REFERENCE_END_STATE","isWhitespace","cp","SPACE","LINE_FEED","TABULATION","FORM_FEED","isAsciiDigit","DIGIT_0","DIGIT_9","isAsciiUpper","LATIN_CAPITAL_A","LATIN_CAPITAL_Z","isAsciiLower","LATIN_SMALL_A","LATIN_SMALL_Z","isAsciiLetter","isAsciiAlphaNumeric","isAsciiUpperHexDigit","LATIN_CAPITAL_F","isAsciiLowerHexDigit","LATIN_SMALL_F","toAsciiLowerCodePoint","toChar","toAsciiLowerChar","findNamedEntityTreeBranch","nodeIx","branchCount","lo","hi","mid","midCp","Tokenizer","preprocessor","tokenQueue","allowCDATA","state","returnState","charRefCode","tempBuff","lastStartTagName","consumedAfterSnapshot","active","currentCharacterToken","currentToken","currentAttr","err","_consume","_err","_unconsume","_ensureHibernation","shift","chunk","isLastChunk","write","insertHtmlAtCurrentPos","endOfChunkHit","retreat","HIBERNATION_TOKEN","advance","pattern","startCp","caseSensitive","consumedCount","isMatch","patternLength","patternPos","patternCp","EOF","SCRIPT_STRING","START_TAG_TOKEN","tagName","selfClosing","ackSelfClosing","attrs","END_TAG_TOKEN","COMMENT_TOKEN","initialName","DOCTYPE_TOKEN","name","forceQuirks","publicId","systemId","chars","EOF_TOKEN","attrNameFirstCh","toState","getTokenAttr","duplicateAttribute","_emitCurrentCharacterToken","ct","endTagWithAttributes","endTagWithTrailingSolidus","_createEOFToken","_emitCurrentToken","_createCharacterToken","CHARACTER_TOKEN","WHITESPACE_CHARACTER_TOKEN","NULL","NULL_CHARACTER_TOKEN","_appendCharToCurrentCharacterToken","codePoints","_emitCodePoint","excess","current","inNode","HAS_DATA_FLAG","pop","withSemicolon","_isCharacterReferenceInAttribute","nextCp","EQUALS_SIGN","_emitSeveralCodePoints","dropParsedChunk","LESS_THAN_SIGN","AMPERSAND","unexpectedNullCharacter","_emitEOFToken","_emitChars","REPLACEMENT_CHARACTER","EXCLAMATION_MARK","SOLIDUS","_createStartTagToken","_reconsumeInState","QUESTION_MARK","unexpectedQuestionMarkInsteadOfTagName","_createCommentToken","eofBeforeTagName","invalidFirstCharacterOfTagName","_createEndTagToken","GREATER_THAN_SIGN","missingEndTagName","eofInTag","HYPHEN_MINUS","eofInScriptHtmlCommentLikeText","_isTempBufferEqualToScriptString","unexpectedEqualsSignBeforeAttributeName","_createAttr","_leaveAttrName","QUOTATION_MARK","APOSTROPHE","unexpectedCharacterInAttributeName","missingAttributeValue","_leaveAttrValue","GRAVE_ACCENT","unexpectedCharacterInUnquotedAttributeValue","missingWhitespaceBetweenAttributes","unexpectedSolidusInTag","_consumeSequenceIfMatch","DASH_DASH_STRING","DOCTYPE_STRING","CDATA_START_STRING","cdataInHtmlContent","incorrectlyOpenedComment","abruptClosingOfEmptyComment","eofInComment","nestedComment","incorrectlyClosedComment","eofInDoctype","_createDoctypeToken","missingWhitespaceBeforeDoctypeName","missingDoctypeName","PUBLIC_STRING","SYSTEM_STRING","invalidCharacterSequenceAfterDoctypeName","missingWhitespaceAfterDoctypePublicKeyword","missingDoctypePublicIdentifier","missingQuoteBeforeDoctypePublicIdentifier","abruptDoctypePublicIdentifier","missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers","missingQuoteBeforeDoctypeSystemIdentifier","missingWhitespaceAfterDoctypeSystemKeyword","missingDoctypeSystemIdentifier","abruptDoctypeSystemIdentifier","unexpectedCharacterAfterDoctypeSystemIdentifier","RIGHT_SQUARE_BRACKET","eofInCdata","NUMBER_SIGN","_flushCodePointsConsumedAsCharacterReference","matchResult","_matchNamedCharacterReference","SEMICOLON","_isCharacterReferenceAttributeQuirk","_errOnNextCodePoint","missingSemicolonAfterCharacterReference","unknownNamedCharacterReference","LATIN_SMALL_X","LATIN_CAPITAL_X","isAsciiHexDigit","absenceOfDigitsInNumericCharacterReference","nullCharacterReference","characterReferenceOutsideUnicodeRange","isSurrogate","surrogateCharacterReference","isUndefinedCodePoint","noncharacterCharacterReference","isControlCodePoint","CARRIAGE_RETURN","controlCharacterReference","replacement","MODE","DATA","RCDATA","RAWTEXT","SCRIPT_DATA","token","attrName","chunkedSplice","unicodePunctuationRegex","unicodePunctuation","unicodeWhitespace","markdownLineEndingOrSpace","chunkedPush","normalizeIdentifier","shallow","factoryDestination","factoryLabel","factoryTitle","factoryWhitespace","labelEnd","labelStart","defined","_balanced","_inactive","balanced","parser","sliceSerialize","now","afterLabelEnd","attempt","resourceConstruct","fullReferenceConstruct","collapsedReferenceConstruct","resolveTo","group","label","text","open","close","media","offset","insideSpan","null","_used","destinationAfter","between","afterLabel","convert","Boolean","typeFactory","tests","checks","any","anyFactory","all","allFactory","factory","position","point","displayName","line","column","isNaN","parse","input","trim","split","whiteSpace","stringify","join","val","lastIndex","options","settings","left","padLeft","right","padRight","obj","UNDEFINED_CODE_POINTS","isSurrogatePair","getSurrogatePairCodePoint","cp1","cp2","controlCharacterInInputStream","noncharacterInInputStream","surrogateInInputStream","nonVoidHtmlElementStartTagWithTrailingSolidus","nonConformingDoctype","missingDoctype","misplacedDoctype","endTagWithoutMatchingOpenElement","closingOfElementWithOpenChildElements","disallowedContentInNoscriptInHead","openElementsLeftAfterEof","abandonedHeadElementChild","misplacedStartTagForHeadElement","nestedNoscriptInHead","eofInElementThatCanContainOnlyText","_getPrototypeOf","o","__proto__","ErrorReportingMixinBase","posTracker","onParseError","startLine","endLine","startCol","endCol","col","startOffset","endOffset","_setErrorLocation","mxn","_reportError","res","str","num","substr","own","pos","chunks","subcontent","eventIndex","stream","previous","entered","adjust","startPosition","startPositions","tokenizer","_tokenizer","contentType","childEvents","jumps","gaps","next","defineSkip","isInFirstContentOfListItem","_gfmTasklistFirstContentOfListItem","add","event","lineIndex","otherIndex","otherEvent","subevents","more","_container","_movePreviousLineEndings","initializeFactory","resolver","createResolver","field","notText","atBreak","resolveAllLineSuffixes","extraResolver","bufferIndex","tabs","_index","_bufferIndex","miniflat","extension","hook","existing","before","extensions","el","characters","char","entity","document","createElement","innerHTML","textContent","asciiDigit","asciiControl","literalType","literalMarkerType","rawType","stringType","balance","destinationEnclosedBefore","destinationRaw","destinationEnclosed","destinationEnclosedEscape","destinationRawEscape","markerType","labelEscape","seen","marker","atFirstTitleBreak","atTitleBreak","title","titleEscape","thematicBreak","sequence","color","step","is","subresult","grandparents","toResult","fn","handlers","passThrough","returnNode","unknownHandler","unknown","augment","clone","ordered","wrap","footnoteOrder","identifier","id","href","contents","subtype","referenceType","suffix","alt","xtend","definitions","proto","_","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","types","checksLength","mask","check","mark","xmlLang","xmlBase","xmlSpace","caseInsensitiveTransform","xmlnsxlink","xmlnsXLink","caseSensitiveTransform","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","arr","len","arr2","style","iterator","declaration","output","declarations","hasIterator","PositionTrackingPreprocessorMixin","LocationInfoTokenizerMixin","currentAttrLocation","ctLoc","location","orig","methods","_getCurrentLocation","_attachCurrentAttrLocationInfo","forEach","modeName","isEol","lineStartPos","droppedBufferSize","prevPos","reduction","find","parseSelector","spaces","commas","defaultTagName","createAdjustMap","selector","isChildren","addProperty","addChild","content","parsePrimitive","parsePrimitives","isNode","positiveNumber","Number","invalid","noop","global","baseGetTag","isObject","tag","funcToString","func","e","isFunction","isLength","safeOptions","after","handle","child","results","peek","NativeImage","width","height","Image","crossOrigin","shouldIgnore","loading","status","ignoreFallback","useState","useEffect","setStatus","src","imageRef","useRef","load","useCallback","flush","img","onLoad","error","onError","srcSet","sizes","useSafeLayoutEffect","useImage","shared","objectFit","objectPosition","align","omit","as","fallbackSrc","deselectCurrent","clipboardToIE11Formatting","debug","message","reselectPrevious","range","selection","success","createRange","getSelection","top","clip","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","preventDefault","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","copyKey","navigator","userAgent","prompt","removeRange","removeAllRanges","removeChild","rangeCount","activeElement","ranges","getRangeAt","blur","focus","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","arg","encodingOrOffset","allocUnsafe","ArrayBuffer","array","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","fromString","isBuffer","checked","copy","buffer","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","n","m","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","found","j","hexWrite","remaining","strLen","parsed","parseInt","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","c","utf16leToBytes","fromByteArray","min","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","swap16","swap32","swap64","equals","inspect","match","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","dst","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","d","s","NaN","rt","abs","log","LN2","React","vfile","unified","remarkRehype","PropTypes","filter","uriTransformer","childrenToReact","hastChildrenToReact","ReactMarkdown","deprecated","renderers","to","astPlugins","allowDangerousHtml","escapeHtml","allowNode","allowedTypes","disallowedTypes","includeNodeIndex","deprecation","file","processor","use","remarkPlugins","plugins","rehypePlugins","hastNode","runSync","Fragment","listDepth","defaultProps","transformLinkUri","propTypes","allowElement","allowedElements","arrayOf","disallowedElements","unwrapDisallowed","bool","oneOfType","sourcePos","rawSourcePos","skipHtml","includeElementIndex","linkTarget","transformImageUri","components","VMessage","VFile","reason","origin","path","fatal","messages","fail","VMessagePrototype","parseOrigin","stack","ruleId","p","proc","order","history","cwd","assertPart","part","sep","assertNonEmpty","assertPath","get","dirname","basename","extname","stem","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","JSON","firstNonSlashEnd","seenNonSlash","extIndex","unmatchedSlash","startDot","startPart","preDotState","joined","bail","extend","plain","trough","frozen","attachers","transformers","namespace","freezeIndex","assertUnfrozen","freeze","addPlugin","addList","addPreset","plugin","entry","doc","Parser","assertParser","newable","Compiler","assertCompiler","assertNode","compile","run","complete","done","assertDone","process","processSync","destination","transformer","cb","Promise","executor","reject","pipeline","ctx","asyncName","hasOwn","toStr","gOPD","getOwnPropertyDescriptor","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","newValue","getProperty","copyIsArray","deep","fns","middleware","params","callback","invoked","then","fromMarkdown","mdastExtensions","config","configure","transforms","canContainEols","autolink","opener","link","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","heading","blockQuote","characterEscape","characterReference","codeFenced","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeIndented","codeText","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreakEscape","hardBreak","hardBreakTrailing","htmlFlow","htmlFlowData","htmlText","htmlTextData","image","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","paragraph","reference","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","lineEnding","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","resource","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","handler","tokenStack","listStack","resume","getData","prepareList","stringifyPosition","tailIndex","tailEvent","firstBlankLineIndex","atMarker","containerBalance","listSpread","_spread","and","lang","meta","url","depth","siblings","fragment","safeFromInt","decode","spread","compiler","postprocess","base","flow","combineExtensions","createTokenizer","initializer","contentStart","contentInitial","lineStart","inspectResult","childFlow","childToken","continued","inspectConstruct","subcontinued","inspectStart","containerState","continuation","inspectContinue","inspectLess","currentConstruct","concrete","flowContinue","inspectDone","interrupt","interruptible","containerConstruct","inspectFlowEnd","_closeFlow","lazy","lazyFlowConstruct","inspectLazy","flowEnd","documentContinue","documentContinued","flowStart","containerContinue","exitContainers","continueFlow","documentAfterPeek","disable","initial","flowInitial","afterConstruct","prefixSize","subtokenize","contentEnd","continuationConstruct","contentContinue","prefixed","serializeChunks","sliceChunks","initialize","columnStart","resolveAllConstructs","accountForPotentialSkip","fields","constructFactory","addResult","onsuccessfulcheck","main","chunkIndex","go","restore","onreturn","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","store","atTab","view","startIndex","startBufferIndex","endIndex","endBufferIndex","text$1","attention","headingAtx","labelStartImage","labelStartLink","setextUnderline","classifyCharacter","movePoint","_open","_close","openingSequence","closingSequence","nextEvents","asciiAtext","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","asciiPunctuation","decodeEntity","asciiHexDigit","_interopDefaultLegacy","default","decodeEntity__default","numeric","closingFenceConstruct","closingSequenceStart","sizeOpen","closingSequenceEnd","initialPrefix","sequenceOpen","infoOpen","openAfter","infoAfter","indentedContentConstruct","afterPrefix","gap","tailExitIndex","headEnterIndex","labelAfter","titleConstruct","fenceOpenInside","headingBreak","htmlBlockNames","htmlRawNames","kind","startTag","declarationStart","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","basicSelfClosing","completeAttributeNameBefore","completeClosingTagAfter","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCharacterDataInside","continuationAtLineEnding","nextBlankConstruct","htmlContinueStart","continuationRawEndTag","declarationOpen","instruction","tagOpen","commentOpen","cdataOpen","commentStart","commentStartDash","comment","commentClose","atLineEnding","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","initialSize","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","furtherBlankLines","notInCurrentItem","indentConstruct","search","atCarriageReturn","endPosition","exec","ceil","mdast2hast","bridge","mutate","allowDangerousHTML","deprecationWarningIssued","dangerous","footnoteById","onfootnotedefinition","hName","hProperties","hChildren","generated","foot","footer","getter","normalise","getterFactory","ondefinition","gather","def","backReference","listItems","ignore","blockquote","break","delete","footnoteReference","footnote","imageReference","inlineCode","linkReference","table","toml","yaml","footnoteDefinition","revert","listItemLoose","listLoose","wrapped","disabled","row","cell","rows","alignLength","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","action","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","async","autoCapitalize","autoComplete","autoFocus","autoPlay","capture","charSet","cite","cols","colSpan","contentEditable","controls","controlsList","coords","dateTime","decoding","defer","dirName","download","draggable","encType","enterKeyHint","form","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","hidden","high","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inputMode","integrity","isMap","itemId","itemProp","itemRef","itemScope","itemType","language","loop","low","manifest","maxLength","method","minLength","multiple","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforePrint","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onChange","onClick","onClose","onContextMenu","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLanguageChange","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onResize","onScroll","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","ping","placeholder","playsInline","poster","preload","readOnly","referrerPolicy","rel","required","reversed","rowSpan","sandbox","scope","scoped","seamless","selected","shape","slot","span","spellCheck","srcDoc","srcLang","tabIndex","translate","typeMustMatch","useMap","aLink","archive","axis","background","bgColor","border","borderColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","clear","codeBase","codeType","compact","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","rev","rightMargin","rules","scheme","scrolling","standby","summary","topMargin","valueType","version","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","security","unselectable","onelement","node_","parent_","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","arrayLikeToArray","iter","minLen","protocols","uri","first","colon","protocol","ReactIs","hastToReact","toReact","tableElements","Set","childIndex","has","parentSchema","component","basic","isValidElementType","inline","level","getInputElement","getElementsBeforeCount","textAlign","isHeader","map","sourcePosition","siblingCount","count","v","k","styleReplacer","parseStyle","$1","f","g","q","r","w","for","t","$$typeof","z","C","D","E","F","G","H","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","typeOf","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillOpacity","fillRule","floodColor","floodOpacity","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","pointerEvents","renderingIntent","shapeRendering","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","strokeOpacity","strokeWidth","textAnchor","textDecoration","textRendering","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","amplitude","ascent","attributeName","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","clipPathUnits","contentScriptType","contentStyleType","cursor","cy","defaultAction","descent","diffuseConstant","direction","display","dur","divisor","dx","dy","edgeMode","editable","elevation","exponent","externalResourcesRequired","filterRes","filterUnits","focusable","focusHighlight","fr","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","mode","numOctaves","observer","opacity","operator","orient","orientation","overflow","overlay","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","restart","rotate","rx","ry","scale","seed","side","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","u1","u2","viewBox","viewTarget","visibility","widths","x1","x2","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","lineno","updatePosition","lines","Position","whitespace","errorsList","msg","filename","silent","re","comments","decl","decls","hastUtilRaw","fromParse5","toParse5","voids","ns","zwitch","stitches","locationTracker","parseOptions","element","resetTokenizer","_processToken","createParse5Location","endTag","endTagToken","characterToken","doctype","p5","doctypeToken","raw","lastGapPos","lastCharPos","gapStack","skipNextNewLine","lastChunkWritten","_runParsingLoop","stitch","documentMode","treeAdapter","createDocument","_bootstrap","nodeName","namespaceURI","childNodes","mock","_pushTmplInsertionMode","inTemplateMode","_initTokenizerForFragmentParsing","_insertFakeRootElement","_resetInsertionMode","_findFormInFragmentContext","_adoptNodes","sourceCodeLocationInfo","scriptingEnabled","OpenElementStack","FormattingElementList","LocationInfoParserMixin","ErrorReportingParserMixin","defaultTreeAdapter","mergeOptions","foreignContent","DEFAULT_OPTIONS","HIDDEN_INPUT_TYPE","INITIAL_MODE","BEFORE_HTML_MODE","BEFORE_HEAD_MODE","IN_HEAD_MODE","IN_HEAD_NO_SCRIPT_MODE","AFTER_HEAD_MODE","IN_BODY_MODE","TEXT_MODE","IN_TABLE_MODE","IN_TABLE_TEXT_MODE","IN_CAPTION_MODE","IN_COLUMN_GROUP_MODE","IN_TABLE_BODY_MODE","IN_ROW_MODE","IN_CELL_MODE","IN_SELECT_MODE","IN_SELECT_IN_TABLE_MODE","IN_TEMPLATE_MODE","AFTER_BODY_MODE","IN_FRAMESET_MODE","AFTER_FRAMESET_MODE","AFTER_AFTER_BODY_MODE","AFTER_AFTER_FRAMESET_MODE","INSERTION_MODE_RESET_MAP","TEMPLATE_INSERTION_MODE_SWITCH_MAP","TOKEN_HANDLERS","tokenInInitialMode","ignoreToken","appendComment","_setDocumentType","getDocumentMode","isConforming","setDocumentMode","insertionMode","tokenBeforeHtml","_insertElement","tn","tokenBeforeHead","startTagInBody","headElement","openElements","tokenInHead","insertCharacters","startTagInHead","endTagInHead","tokenInHeadNoScript","tokenAfterHead","framesetOk","characterInBody","whitespaceCharacterInBody","endTagInBody","eofInBody","pendingScript","originalInsertionMode","characterInTable","startTagInTable","endTagInTable","pendingCharacterTokens","hasNonWhitespacePendingCharacterToken","tokenInTableText","hasInTableScope","generateImpliedEndTags","popUntilTagNamePopped","activeFormattingElements","clearToLastMarker","tokenInColumnGroup","_appendElement","currentTagName","clearBackToTableBodyContext","_insertFakeElement","hasTableBodyContextInTableScope","clearBackToTableRowContext","insertMarker","_closeTableCell","startTagInSelect","endTagInSelect","newInsertionMode","_popTmplInsertionMode","eofInTemplate","tokenAfterBody","_appendCommentNode","fragmentContext","stopParsing","isRootHtmlElementCurrent","tokenAfterAfterBody","appendCommentToDocument","documentMock","getTagName","rootElement","getFirstChild","createDocumentFragment","stopped","formElement","tmplInsertionModeStack","tmplInsertionModeStackTop","currentTmplInsertionMode","fosterParentingEnabled","scriptHandler","_setupTokenizerCDATAMode","getNextToken","_processInputToken","writeCallback","script","_getAdjustedCurrentElement","getNamespaceURI","_isIntegrationPoint","nextTokenizerState","stackTop","getParentNode","setDocumentType","_shouldFosterParentOnInsertion","_fosterParentElement","currentTmplContent","_attachElementToTree","tmpl","setTemplateContent","commentNode","createCommentNode","_fosterParentText","insertText","donor","recipient","detachNode","isCharacterToken","_insertCharacters","characterInForeignContent","nullCharacterInForeignContent","causesExit","currentNs","adjustTokenMathMLAttrs","adjustTokenSVGTagName","adjustTokenSVGAttrs","adjustTokenXMLAttrs","startTagInForeignContent","popUntilElementPopped","endTagInForeignContent","_shouldProcessTokenInForeignContent","_processTokenInForeignContent","foreignNS","getAttrList","isIntegrationPoint","listLength","unopenIdx","entries","MARKER_ENTRY","contains","popUntilTableCellPopped","generateImpliedEndTagsWithExclusion","last","_resetInsertionModeForSelect","selectIdx","ancestor","_isElementCausesFosterParenting","beforeElement","openElement","getTemplateContent","_findFosterParentingLocation","insertBefore","insertTextBefore","aaObtainFormattingElementEntry","formattingElementEntry","getElementEntryInScopeWithTagName","hasInScope","removeEntry","genericEndTagInBody","aaObtainFurthestBlock","furthestBlock","_isSpecialElement","aaInnerLoop","formattingElement","lastElement","nextElement","getCommonAncestor","elementEntry","getElementEntry","counterOverflow","aaRecreateElementFromEntry","bookmark","newElement","aaInsertLastNodeInCommonAncestor","commonAncestor","aaReplaceFormattingElement","insertElementAfterBookmark","insertAfter","callAdoptionAgency","beforeToken","_switchToTextParsing","_insertTemplate","tmplCount","generateImpliedEndTagsThoroughly","errCode","_reconstructActiveFormattingElements","addressStartTagInBody","hasInButtonScope","_closePElement","preStartTagInBody","bStartTagInBody","pushElement","appletStartTagInBody","areaStartTagInBody","paramStartTagInBody","noembedStartTagInBody","optgroupStartTagInBody","rbStartTagInBody","genericStartTagInBody","activeElementEntry","aStartTagInBody","numberedHeaderStartTagInBody","elementTn","closeTn","listItemStartTagInBody","hrStartTagInBody","rtStartTagInBody","xmpStartTagInBody","svgStartTagInBody","adoptAttributes","htmlStartTagInBody","bodyElement","tryPeekProperlyNestedBodyElement","bodyStartTagInBody","inTemplate","formStartTagInBody","nobrStartTagInBody","mathStartTagInBody","menuStartTagInBody","tableStartTagInBody","inputType","inputStartTagInBody","imageStartTagInBody","buttonStartTagInBody","iframeStartTagInBody","selectStartTagInBody","popAllUpToHtmlElement","framesetStartTagInBody","textareaStartTagInBody","plaintextStartTagInBody","addressEndTagInBody","appletEndTagInBody","pEndTagInBody","hasInListItemScope","liEndTagInBody","ddEndTagInBody","hasNumberedHeaderInScope","popUntilNumberedHeaderPopped","numberedHeaderEndTagInBody","brEndTagInBody","bodyEndTagInBody","htmlEndTagInBody","formEndTagInBody","curTn","tokenInTable","clearBackToTableContext","tdStartTagInTable","colStartTagInTable","formStartTagInTable","tableStartTagInTable","tbodyStartTagInTable","inputStartTagInTable","captionStartTagInTable","colgroupStartTagInTable","savedFosterParentingState","_processTokenInBodyMode","hasInSelectScope","prevOpenElement","prevOpenElementTn","bufferWaterline","_addGap","substring","_processSurrogate","_checkForProblematicCharacters","Uint16Array","isImpliedEndTagRequired","isImpliedEndTagRequiredThoroughly","isScopingElement","idx","_isInTemplate","_updateCurrentElement","oldElement","_indexOf","referenceElement","insertionIdx","poppedElement","elementIdx","exclusionTagName","candidates","neAttrsLength","neTagName","neNamespaceURI","elementAttrs","_getNoahArkConditionCandidates","cLength","neAttrs","neAttrsMap","neAttr","cAttr","NOAH_ARK_CAPACITY","_ensureNoahArkCondition","ELEMENT_ENTRY","bookmarkIdx","LocationInfoOpenElementStackMixin","lastStartTagToken","lastFosterParentingLocation","loc","setNodeSourceCodeLocation","closingToken","getNodeSourceCodeLocation","endLoc","updateNodeSourceCodeLocation","tokenizerMixin","onItemPop","_setEndLocation","documentChildren","getChildNodes","cnLength","isDocumentTypeNode","_setStartLocation","tmplContent","hasFosterParent","textNodeIdx","textNode","_setPrototypeOf","sham","Proxy","Date","_typeof","assertThisInitialized","ReferenceError","ErrorReportingTokenizerMixin","locBeforeToken","ErrorReportingPreprocessorMixin","preprocessorMixin","lastErrOffset","superPropBase","_get","receiver","desc","parentNode","createTextNode","newNode","referenceNode","templateElement","contentElement","doctypeNode","prevNode","recipientAttrsMap","getTextNodeContent","getCommentNodeContent","getDocumentTypeNodeName","getDocumentTypeNodePublicId","getDocumentTypeNodeSystemId","isTextNode","isCommentNode","isElementNode","sourceCodeLocation","endLocation","defaults","reduce","merged","optObj","VALID_DOCTYPE_NAME","QUIRKS_MODE_PUBLIC_ID_PREFIXES","QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES","QUIRKS_MODE_PUBLIC_IDS","LIMITED_QUIRKS_PUBLIC_ID_PREFIXES","LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES","enquoteDoctypeId","quote","hasPrefix","prefixes","serializeContent","MIME_TYPES","SVG_ATTRS_ADJUSTMENT_MAP","attributename","attributetype","basefrequency","baseprofile","calcmode","clippathunits","diffuseconstant","edgemode","filterunits","glyphref","gradienttransform","gradientunits","kernelmatrix","kernelunitlength","keypoints","keysplines","keytimes","lengthadjust","limitingconeangle","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","numoctaves","pathlength","patterncontentunits","patterntransform","patternunits","pointsatx","pointsaty","pointsatz","preservealpha","preserveaspectratio","primitiveunits","refx","refy","repeatcount","repeatdur","requiredextensions","requiredfeatures","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","surfacescale","systemlanguage","tablevalues","targetx","targety","textlength","viewbox","viewtarget","xchannelselector","ychannelselector","zoomandpan","XML_ATTRS_ADJUSTMENT_MAP","SVG_TAG_NAMES_ADJUSTMENT_MAP","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","clippath","feblend","fecolormatrix","fecomponenttransfer","fecomposite","feconvolvematrix","fediffuselighting","fedisplacementmap","fedistantlight","feflood","fefunca","fefuncb","fefuncg","fefuncr","fegaussianblur","feimage","femerge","femergenode","femorphology","feoffset","fepointlight","fespecularlighting","fespotlight","fetile","feturbulence","foreignobject","lineargradient","radialgradient","textpath","EXITS_FOREIGN_CONTENT","startTagToken","adjustedAttrName","adjustedAttrEntry","adjustedTagName","isHtmlIntegrationPoint","isMathMLTextIntegrationPoint","vfileLocation","ast","verbose","public","system","quirksMode","toPoint","opening","closing","subvalue","indices","offsetToPoint","toPosition","toOffset","toH","ignoredSpaces","patch","attr","addAttribute","vdom","subprop","vue","hyperscript","react","cleanup","_isVue","vd","clean","nodeSchema","allowDoctypes","handleDoctypeName","allowComments","handleCommentValue","handleTagName","reqs","allowed","toPropertyValueMap","handlePropertyValues","handlePropertyValue","strip","questionMark","numberSign","slash","handleProtocol","clobber","clobberPrefix","tagNames","ancestors","toArray","emojiByName","emojiNameRegex","trimSpaceRegex","stripColons","colonIndex","wrapColons","NON_SPACING_MARK","nonSpacingRegex","RegExp","stripNSB","emojiByCode","Emoji","emoji","nameOrCode","findByName","findByCode","stripped","hasEmoji","hasEmojiByName","hasEmojiByCode","which","emoji_code","includeColons","word","emojify","on_missing","isMissing","random","emojiKeys","matcher","unemojify","cleanSpaces","words","replaced","copyArray","getTag","isArrayLike","isString","iteratorToArray","mapToArray","setToArray","stringToArray","symIterator","DataView","Map","WeakMap","toSource","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","getNative","isMasked","reIsHostCtor","funcProto","objectProto","reIsNative","nativeObjectToString","isOwn","unmasked","coreJsData","maskSrcKey","uid","IE_PROTO","isObjectLike","asciiToArray","hasUnicode","unicodeToArray","reHasUnicode","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","baseValues","arrayMap","iteratee","arrayLikeKeys","baseKeys","baseTimes","isArguments","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseIsArguments","propertyIsEnumerable","stubFalse","freeExports","nodeType","freeModule","reIsUint","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","typedArrayTags","freeProcess","binding","isPrototype","nativeKeys","overArg","warningIssued","syntax","toMarkdown","blockTokenizers","visitors","combine","strikethrough","tasklist","www","w2","w3","dot","domain","hasUnderscoreInLastSegment","hasUnderscoreInLastLastSegment","namedCharacterReference","punctuationContinuation","punctuation","inPath","continuedPunctuation","parenAtPathEnd","pathEnd","trailingPunctuation","wwwAutolink","previousWww","httpAutolink","previousHttp","t1","t2","slash1","slash2","emailAutolink","hasDot","gfmAtext","previousEmail","atext","dotContinuation","dashOrUnderscoreContinuation","afterDashOrUnderscore","single","singleTilde","removeRemainingSequences","seenDelimiter","hasDash","tableHeaderCount","_align","cellDividerHead","inCellContentHead","cellBreakHead","setextUnderlineMini","createSpace","rowStartDelimiter","atRowEndHead","inWhitespaceHead","inCellContentEscapeHead","atDelimiterRowBreak","rowEndDelimiter","inWhitespaceDelimiter","inFillerDelimiter","afterLeftAlignment","afterRightAlignment","tableClose","nextPrefixedOrBlank","tableContinue","bodyStart","rowStartBody","cellDividerBody","inCellContentBody","cellBreakBody","tableBodyClose","tableBodyContinue","atRowEndBody","inWhitespaceBody","inCellContentEscapeBody","inHead","inDelimiterRow","inRow","cellStart","spaceFactory","tasklistCheck","spaceThenNonSpace","autolinkLiteral","taskListItem","ccount","findAndReplace","enterLiteralAutolinkValue","findUrl","isCorrectDomain","closingParenIndex","openingParens","closingParens","trail","splitUrl","findEmail","email","literalAutolink","literalAutolinkEmail","literalAutolinkHttp","literalAutolinkWww","character","handlerFactory","pairs","pair","subhandler","toExpression","toFunction","toPairs","escape","ignored","grandparent","enterCell","tableData","tableHeader","tableRow","exitCheck","taskListCheckValueChecked","taskListCheckValueUnchecked","firstParaghraph","unsafe","inConstruct","notInConstruct","phrasing","handleDelete","defaultInlineCode","markdownTable","padding","tableCellPadding","alignDelimiters","tablePipeAlign","stringLength","around","serializeData","subexit","handleTableRowAsData","handleTableAsData","tableCell","handleTableCell","matrix","patternCompile","expression","_compiled","repeat","cells","columnIndex","columnLength","largest","delimiterStart","delimiterEnd","alignments","defaultStringLength","rowIndex","rowLength","cellMatrix","sizeMatrix","longestCellByColumn","mostCellsPerRow","toAlignment","trailingWhitespace","defaultListItem","bullet","checkBullet","listItemIndent","checkListItemIndent","incrementListMarker","indentLines","blank","eol","theme","backgroundColor","aa","ba","ca","da","ea","fa","ha","ia","ja","ka","_context","render","_render","_payload","_init","la","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ma","_threadCount","_currentValue2","J","K","oa","pa","qa","ra","sa","M","acceptsBooleans","attributeNamespace","propertyName","sanitizeURL","removeEmptyString","N","va","wa","xlinkHref","xa","O","ya","ta","ua","Aa","Q","R","T","V","W","Ba","memoizedState","queue","Ca","Da","Ea","Fa","Ga","dispatch","Ha","bind","Ia","Ja","X","Ka","readContext","threadID","useContext","useMemo","useReducer","useLayoutEffect","useImperativeHandle","useDebugValue","useDeferredValue","useTransition","useOpaqueIdentifier","identifierPrefix","uniqueID","useMutableSource","_source","La","Ma","Na","area","br","embed","hr","keygen","param","track","wbr","Oa","menuitem","Y","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","lineHeight","orphans","tabSize","widows","zIndex","zoom","strokeDasharray","strokeDashoffset","strokeMiterlimit","Pa","Qa","Ra","Z","Children","Sa","ReactCurrentDispatcher","Ta","listing","pre","textarea","Ua","Va","Wa","Ya","Za","dangerouslySetInnerHTML","suppressContentEditableWarning","suppressHydrationWarning","$a","ab","isReactComponent","contextType","contextTypes","na","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","getDerivedStateFromProps","updater","UNSAFE_componentWillMount","componentWillMount","getChildContext","childContextTypes","isValidElement","bb","domNamespace","exhausted","currentSelectValue","previousWasTextNode","makeStaticMarkup","suspenseDepth","contextIndex","contextStack","contextValueStack","destroy","clearProviders","pushProvider","popProvider","L","fallbackFrame","renderDOM","defaultChecked","defaultValue","Xa","__html","renderToNodeStream","renderToStaticMarkup","renderToStaticNodeStream","renderToString","castFactory","propsFactory","emoticon","tags","description","emoticons","RE_EMOJI","RE_SHORT","DEFAULT_SETTINGS","padSpaceAfter","pad","emoticonEnable","getEmojiByShortCode","iconFull","iconPart","trimmedChar","addPad","getEmoji","got","Prism","uniqueId","util","tokens","Token","alias","objId","visited","languages","redef","insert","grammar","newToken","DFS","highlight","env","hooks","matchGrammar","strarr","startPos","oneshot","patterns","lookbehind","greedy","lookbehindLength","flags","delNum","args","matchedStr","classes","aliases","markup","includedCdataInside","mathml","ssml","atom","rss","envVars","commandAfterHeredoc","insideString","bash","variable","toBeCopied","shell","clike","keyword","cpp","css","addInlined","selectorInside","unit","javascript","js","jsx","stringifyToken","walkTokens","openedTags","notTagNorBrace","openedBraces","plainText","withId","maybeClassNameTokens","interpolation","coffeescript","coffee","diff","PREFIXES","git","graphql","markdown","getPlaceholder","defineProperties","buildPlaceholders","placeholderPattern","replaceFilter","tokenizePlaceholders","middle","handlebars","json","webmanifest","less","makefile","inner","createInline","tableLine","codeLang","codeBlock","cls","autoloader","valueOf","loadLanguages","ele","getElementById","md","objectivec","objc","ocaml","python","py","function","sass","atrule","important","scss","sql","stylus","typescript","typeInside","ts","tsx","wasm","anchorOrAlias","plainKey","createValuePattern","yml","textDecorationLine","_defineProperty","_extends","newlineRe","normalizeEmptyLines","empty","appendTypes","typesSize","themeToDict","themeDict","acc","themeEntry","accStyle","objectWithoutProperties","Highlight","Component","this$1","prevTheme","prevLanguage","getThemeDict","baseStyle","typeStyles","getStyleForToken","typeArrStack","tokenArrStack","tokenArrIndexStack","tokenArrSizeStack","stackIndex","currentLine","splitByNewlines","newlineCount","i$1","normalizeTokens","getLineProps","getTokenProps","LinkIcon","createIcon","useClipboard","optionsOrTimeout","timeout","didCopy","setHasCopied","timeoutId","hasCopied","isBrowser","useMediaQuery","query","useEnvironment","queries","isSupported","mediaQueryList","listenerList","listener","setMatches","prev","mediaQuery","CheckIcon","CopyIcon","Code","useStyleConfig","InputGroup","_className","groupStyles","validChildren","getValidChildren","clones","theming","variant","StyledElement","chakra","alignItems","justifyContent","InputElement","elementStyles","InputLeftElement","InputRightElement","ArrowBackIcon","createContext","errorMessage","mergeVariants","variants","mergeWith","transitionEnd","Section","motion","PopoverTransition","isOpen","usePopoverContext","animate","transition","duration","ease","isTouchEvent","defaultPagePoint","pageX","pageY","pointFromTouch","pointType","pointFromMouse","extractEventInfo","wrapPointerEventHandler","shouldFilterPrimaryPointer","eventHandler","isMouseEvent","getEventWindow","mouseEventNames","pointerdown","pointermove","pointerup","pointercancel","pointerover","pointerout","pointerenter","pointerleave","touchEventNames","getPointerEventName","useFocusOnPointerDown","browser","enabled","isSafari","vendor","android","getUserAgentBrowser","getOwnerDocument","isValidTarget","elements","elementOrRef","isRefObject","isActiveElement","useEventListener","eventName","defaultOptions","preventScroll","shouldFocus","TRIGGER","usePopover","closeOnBlur","closeOnEsc","returnFocusOnClose","trigger","openDelay","closeDelay","lazyBehavior","computePositionOnMount","useDisclosure","triggerRef","popoverRef","isHoveringRef","hasBeenOpened","useIds","usePopper","forceUpdate","useFocusOnHide","focusRef","visible","nextTick","tabbableEls","getAllFocusable","useUpdateEffect","useFocusOnShow","shouldRenderChildren","determineLazyBehavior","hasBeenSelected","isSelected","getPopoverProps","_ref","popoverProps","transformOrigin","popperCSSVars","arrowSize","px","arrowShadowColor","mergeRefs","callAllHandlers","relatedTarget","getRelatedTarget","targetIsPopover","targetIsTrigger","hasHeader","headerId","hasBody","bodyId","setTimeout","getPopoverPositionerProps","forwardedRef","getPopperProps","openTimeout","closeTimeout","getTriggerProps","triggerProps","popoverId","clearTimeout","getHeaderProps","setHasHeader","getBodyProps","setHasBody","getArrowProps","getArrowInnerProps","Popover","runIfFn","PopoverTrigger","PopoverContent","rootProps","contentStyles","flexDirection","contentProps","PopoverHeader","header","PopoverBody"],"mappings":"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IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,IAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,KAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,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AAM,GAApBwX,IC1CC,I,kBCtCI0pF,EAAW,CACpB,CACE30F,KAAM,QACN03E,MAAO,eACPkd,KAAM,CAAC,MAAO,WACdC,YAAa,aACbC,UAAW,CAAC,MAAO,MAAO,OAAQ,OAAQ,MAAO,MAAO,OAAQ,SAElE,CACE90F,KAAM,QACN03E,MAAO,eACPkd,KAAM,CAAC,SACPC,YAAa,iCACbC,UAAW,CACT,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,SAGJ,CACE90F,KAAM,eACN03E,MAAO,eACPkd,KAAM,GACNC,YAAa,eACbC,UAAW,CAAC,OAAQ,QAEtB,CACE90F,KAAM,WACN03E,MAAO,eACPkd,KAAM,GACNC,YAAa,gBACbC,UAAW,CAAC,KAAM,MAAO,MAAO,OAAQ,KAAM,MAAO,MAAO,SAE9D,CACE90F,KAAM,MACN03E,MAAO,eACPkd,KAAM,CAAC,MAAO,QACdC,YAAa,cACbC,UAAW,CACT,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,SAGJ,CACE90F,KAAM,WACN03E,MAAO,eACPkd,KAAM,GACNC,YAAa,gCACbC,UAAW,CAAC,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,MAAO,QAE3D,CACE90F,KAAM,QACN03E,MAAO,eACPkd,KAAM,CAAC,QACPC,YAAa,YACbC,UAAW,CAAC,OAEd,CACE90F,KAAM,MACN03E,MAAO,eACPkd,KAAM,CAAC,QAAS,QAAS,OAAQ,SACjCC,YAAa,wBACbC,UAAW,CAAC,MAAO,MAAO,OAAQ,OAAQ,MAAO,MAAO,OAAQ,SAElE,CACE90F,KAAM,WACN03E,MAAO,eACPkd,KAAM,CAAC,SACPC,YAAa,yBACbC,UAAW,CACT,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,SAGJ,CACE90F,KAAM,MACN03E,MAAO,eACPkd,KAAM,CAAC,SACPC,YAAa,yBACbC,UAAW,CACT,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,SAGJ,CACE90F,KAAM,UACN03E,MAAO,eACPkd,KAAM,GACNC,YAAa,eACbC,UAAW,CAAC,KAAM,MAAO,KAAM,QAEjC,CACE90F,KAAM,WACN03E,MAAO,eACPkd,KAAM,CAAC,QAAS,QAChBC,YAAa,0BACbC,UAAW,CACT,KACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,QAGJ,CACE90F,KAAM,MACN03E,MAAO,eACPkd,KAAM,CAAC,WAAY,SAAU,OAC7BC,YAAa,MACbC,UAAW,CAAC,KAAM,MAAO,KAAM,MAAO,KAAM,MAAO,KAAM,MAAO,KAAM,QAExE,CACE90F,KAAM,eACN03E,MAAO,eACPkd,KAAM,CAAC,OACPC,YAAa,eACbC,UAAW,CAAC,KAAM,MAAO,KAAM,QAEjC,CACE90F,KAAM,WACN03E,MAAO,eACPkd,KAAM,CAAC,OAAQ,WACfC,YAAa,qBACbC,UAAW,CAAC,OAEd,CACE90F,KAAM,aACN03E,MAAO,eACPkd,KAAM,CAAC,WAAY,YAAa,OAChCC,YAAa,uBACbC,UAAW,CACT,KACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,QAGJ,CACE90F,KAAM,OACN03E,MAAO,eACPkd,KAAM,CAAC,SACPC,YAAa,eACbC,UAAW,CAAC,KAAM,MAAO,KAAM,QAEjC,CACE90F,KAAM,QACN03E,MAAO,eACPkd,KAAM,CAAC,QAAS,MAAO,QAAS,WAChCC,YAAa,kCACbC,UAAW,CAAC,KAAM,MAAO,KAAM,QAEjC,CACE90F,KAAM,SACN03E,MAAO,eACPkd,KAAM,CAAC,QAAS,MAAO,QACvBC,YAAa,8BACbC,UAAW,CAAC,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,MAAO,QAE3D,CACE90F,KAAM,cACN03E,MAAO,eACPkd,KAAM,CAAC,QAAS,OAAQ,SACxBC,YAAa,0BACbC,UAAW,CACT,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,SAGJ,CACE90F,KAAM,MACN03E,MAAO,eACPkd,KAAM,CAAC,MAAO,MAAO,WACrBC,YAAa,qBACbC,UAAW,CACT,OACA,OACA,QACA,QACA,OACA,OACA,QACA,QACA,OACA,OACA,QACA,QACA,OACA,OACA,QACA,UAGJ,CACE90F,KAAM,mBACN03E,MAAO,eACPkd,KAAM,GACNC,YAAa,mBACbC,UAAW,CACT,KACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,QAGJ,CACE90F,KAAM,+BACN03E,MAAO,eACPkd,KAAM,CAAC,SACPC,YAAa,6BACbC,UAAW,CAAC,KAAM,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,QAEnE,CACE90F,KAAM,+BACN03E,MAAO,eACPkd,KAAM,CAAC,QAAS,SAChBC,YAAa,2BACbC,UAAW,CAAC,KAAM,KAAM,KAAM,MAAO,MAAO,QAE9C,CACE90F,KAAM,aACN03E,MAAO,eACPkd,KAAM,CAAC,QACPC,YAAa,+BACbC,UAAW,CACT,KACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,QAGJ,CACE90F,KAAM,QACN03E,MAAO,eACPkd,KAAM,GACNC,YAAa,2BACbC,UAAW,CACT,MACA,MACA,OACA,OACA,MACA,MACA,OACA,OACA,MACA,MACA,OACA,OACA,MACA,MACA,OACA,SAGJ,CACE90F,KAAM,cACN03E,MAAO,eACPkd,KAAM,CAAC,OACPC,YAAa,2BACbC,UAAW,CACT,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,SAGJ,CACE90F,KAAM,WACN03E,MAAO,eACPkd,KAAM,CAAC,OACPC,YAAa,gBACbC,UAAW,CACT,KACA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","file":"static/js/4.7cd92fab.chunk.js","sourcesContent":["'use strict'\n\nfunction markdownLineEnding(code) {\n return code < -2\n}\n\nmodule.exports = markdownLineEnding\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\n\nfunction spaceFactory(effects, ok, type, max) {\n var limit = max ? max - 1 : Infinity\n var size = 0\n return start\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\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\nmodule.exports = spaceFactory\n","'use strict'\n\nmodule.exports = all\n\nvar one = require('./one')\n\nfunction all(h, parent) {\n var nodes = parent.children || []\n var length = nodes.length\n var values = []\n var index = -1\n var result\n var head\n\n while (++index < length) {\n result = one(h, nodes[index], parent)\n\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (result.value) {\n result.value = result.value.replace(/^\\s+/, '')\n }\n\n head = result.children && result.children[0]\n\n if (head && head.value) {\n head.value = head.value.replace(/^\\s+/, '')\n }\n }\n\n values = values.concat(result)\n }\n }\n\n return values\n}\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","'use strict'\n\nmodule.exports = u\n\nfunction u(type, props, value) {\n var node\n\n if (\n (value === null || value === undefined) &&\n (typeof props !== 'object' || Array.isArray(props))\n ) {\n value = props\n props = {}\n }\n\n node = Object.assign({type: String(type)}, props)\n\n if (Array.isArray(value)) {\n node.children = value\n } else if (value !== null && value !== undefined) {\n node.value = String(value)\n }\n\n return node\n}\n","'use strict'\n\nfunction markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n\nmodule.exports = markdownSpace\n","'use strict'\n\nvar splice = require('../constant/splice.js')\n\n// causes a stack overflow in V8 when trying to insert 100k items for instance.\n\nfunction chunkedSplice(list, start, remove, items) {\n var end = list.length\n var chunkStart = 0\n var 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’s only a couple (10k) items.\n\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove)\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)\n splice.apply(list, parameters)\n chunkStart += 10000\n start += 10000\n }\n }\n}\n\nmodule.exports = chunkedSplice\n","'use strict'\n\nfunction markdownLineEndingOrSpace(code) {\n return code < 0 || code === 32\n}\n\nmodule.exports = markdownLineEndingOrSpace\n","'use strict';\n\nclass Mixin {\n constructor(host) {\n const originalMethods = {};\n const overriddenMethods = this._getOverriddenMethods(this, originalMethods);\n\n for (const key of Object.keys(overriddenMethods)) {\n if (typeof overriddenMethods[key] === 'function') {\n originalMethods[key] = host[key];\n host[key] = overriddenMethods[key];\n }\n }\n }\n\n _getOverriddenMethods() {\n throw new Error('Not implemented');\n }\n}\n\nMixin.install = function(host, Ctor, opts) {\n if (!host.__mixins) {\n host.__mixins = [];\n }\n\n for (let i = 0; i < host.__mixins.length; i++) {\n if (host.__mixins[i].constructor === Ctor) {\n return host.__mixins[i];\n }\n }\n\n const mixin = new Ctor(host, opts);\n\n host.__mixins.push(mixin);\n\n return mixin;\n};\n\nmodule.exports = Mixin;\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction regexCheck(regex) {\n return check\n\n function check(code) {\n return regex.test(fromCharCode(code))\n }\n}\n\nmodule.exports = regexCheck\n","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct\");\n\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn\");\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}\n\nmodule.exports = _createSuper;","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","'use strict'\n\nvar assign = require('../constant/assign.js')\n\nfunction shallow(object) {\n return assign({}, object)\n}\n\nmodule.exports = shallow\n","import {\n chakra,\n forwardRef,\n HTMLChakraProps,\n omitThemingProps,\n StylesProvider,\n ThemingProps,\n useMultiStyleConfig,\n useStyles,\n} from \"@chakra-ui/system\"\nimport { cx, __DEV__ } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\n\nexport interface TableContainerProps extends HTMLChakraProps<\"div\"> {}\n\nexport const TableContainer = forwardRef<TableContainerProps, \"div\">(\n (props: HTMLChakraProps<\"div\">, ref) => {\n const { overflow, overflowX, className, ...rest } = props\n return (\n <chakra.div\n ref={ref}\n className={cx(\"chakra-table__container\", className)}\n {...rest}\n __css={{\n display: \"block\",\n whiteSpace: \"nowrap\",\n WebkitOverflowScrolling: \"touch\",\n overflowX: overflow ?? overflowX ?? \"auto\",\n overflowY: \"hidden\",\n maxWidth: \"100%\",\n }}\n />\n )\n },\n)\n\nexport interface TableProps\n extends HTMLChakraProps<\"table\">,\n ThemingProps<\"Table\"> {}\n\nexport const Table = forwardRef<TableProps, \"table\">((props, ref) => {\n const styles = useMultiStyleConfig(\"Table\", props)\n const { className, ...tableProps } = omitThemingProps(props)\n\n return (\n <StylesProvider value={styles}>\n <chakra.table\n role=\"table\"\n ref={ref}\n __css={styles.table}\n className={cx(\"chakra-table\", className)}\n {...tableProps}\n />\n </StylesProvider>\n )\n})\n\nif (__DEV__) {\n Table.displayName = \"Table\"\n}\n\nexport interface TableCaptionProps extends HTMLChakraProps<\"caption\"> {\n /**\n * The placement of the table caption. This sets the `caption-side` CSS attribute.\n * @default \"bottom\"\n */\n placement?: \"top\" | \"bottom\"\n}\n\nexport const TableCaption = forwardRef<TableCaptionProps, \"caption\">(\n (props, ref) => {\n const { placement = \"bottom\", ...rest } = props\n const styles = useStyles()\n return (\n <chakra.caption\n {...rest}\n ref={ref}\n __css={{\n ...styles.caption,\n captionSide: placement,\n }}\n />\n )\n },\n)\n\nif (__DEV__) {\n TableCaption.displayName = \"TableCaption\"\n}\n\nexport interface TableHeadProps extends HTMLChakraProps<\"thead\"> {}\n\nexport const Thead = forwardRef<TableHeadProps, \"thead\">((props, ref) => {\n const styles = useStyles()\n return <chakra.thead {...props} ref={ref} __css={styles.thead} />\n})\n\nexport interface TableBodyProps extends HTMLChakraProps<\"tbody\"> {}\n\nexport const Tbody = forwardRef<TableBodyProps, \"tbody\">((props, ref) => {\n const styles = useStyles()\n return <chakra.tbody {...props} ref={ref} __css={styles.tbody} />\n})\n\nexport interface TableFooterProps extends HTMLChakraProps<\"tfoot\"> {}\n\nexport const Tfoot = forwardRef<TableFooterProps, \"tfoot\">((props, ref) => {\n const styles = useStyles()\n return <chakra.tfoot {...props} ref={ref} __css={styles.tfoot} />\n})\n\nexport interface TableColumnHeaderProps extends HTMLChakraProps<\"th\"> {\n /**\n * Aligns the cell content to the right\n */\n isNumeric?: boolean\n}\nexport const Th = forwardRef<TableColumnHeaderProps, \"th\">(\n ({ isNumeric, ...rest }, ref) => {\n const styles = useStyles()\n return (\n <chakra.th\n {...rest}\n ref={ref}\n __css={styles.th}\n data-is-numeric={isNumeric}\n />\n )\n },\n)\n\nexport interface TableRowProps extends HTMLChakraProps<\"tr\"> {}\nexport const Tr = forwardRef<TableRowProps, \"tr\">((props, ref) => {\n const styles = useStyles()\n\n return <chakra.tr role=\"row\" {...props} ref={ref} __css={styles.tr} />\n})\n\nexport interface TableCellProps extends HTMLChakraProps<\"td\"> {\n /**\n * Aligns the cell content to the right\n */\n isNumeric?: boolean\n}\nexport const Td = forwardRef<TableCellProps, \"td\">(\n ({ isNumeric, ...rest }, ref) => {\n const styles = useStyles()\n\n return (\n <chakra.td\n role=\"gridcell\"\n {...rest}\n ref={ref}\n __css={styles.td}\n data-is-numeric={isNumeric}\n />\n )\n },\n)\n","'use strict'\n\nvar normalize = require('../../normalize')\nvar Schema = require('./schema')\nvar DefinedInfo = require('./defined-info')\n\nmodule.exports = create\n\nfunction create(definition) {\n var space = definition.space\n var mustUseProperty = definition.mustUseProperty || []\n var attributes = definition.attributes || {}\n var props = definition.properties\n var transform = definition.transform\n var property = {}\n var normal = {}\n var prop\n var info\n\n for (prop in props) {\n info = new DefinedInfo(\n prop,\n transform(attributes, prop),\n props[prop],\n space\n )\n\n if (mustUseProperty.indexOf(prop) !== -1) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n\n return new Schema(property, normal, space)\n}\n","'use strict';\n\nconst NS = (exports.NAMESPACES = {\n HTML: 'http://www.w3.org/1999/xhtml',\n MATHML: 'http://www.w3.org/1998/Math/MathML',\n SVG: 'http://www.w3.org/2000/svg',\n XLINK: 'http://www.w3.org/1999/xlink',\n XML: 'http://www.w3.org/XML/1998/namespace',\n XMLNS: 'http://www.w3.org/2000/xmlns/'\n});\n\nexports.ATTRS = {\n TYPE: 'type',\n ACTION: 'action',\n ENCODING: 'encoding',\n PROMPT: 'prompt',\n NAME: 'name',\n COLOR: 'color',\n FACE: 'face',\n SIZE: 'size'\n};\n\nexports.DOCUMENT_MODE = {\n NO_QUIRKS: 'no-quirks',\n QUIRKS: 'quirks',\n LIMITED_QUIRKS: 'limited-quirks'\n};\n\nconst $ = (exports.TAG_NAMES = {\n A: 'a',\n ADDRESS: 'address',\n ANNOTATION_XML: 'annotation-xml',\n APPLET: 'applet',\n AREA: 'area',\n ARTICLE: 'article',\n ASIDE: 'aside',\n\n B: 'b',\n BASE: 'base',\n BASEFONT: 'basefont',\n BGSOUND: 'bgsound',\n BIG: 'big',\n BLOCKQUOTE: 'blockquote',\n BODY: 'body',\n BR: 'br',\n BUTTON: 'button',\n\n CAPTION: 'caption',\n CENTER: 'center',\n CODE: 'code',\n COL: 'col',\n COLGROUP: 'colgroup',\n\n DD: 'dd',\n DESC: 'desc',\n DETAILS: 'details',\n DIALOG: 'dialog',\n DIR: 'dir',\n DIV: 'div',\n DL: 'dl',\n DT: 'dt',\n\n EM: 'em',\n EMBED: 'embed',\n\n FIELDSET: 'fieldset',\n FIGCAPTION: 'figcaption',\n FIGURE: 'figure',\n FONT: 'font',\n FOOTER: 'footer',\n FOREIGN_OBJECT: 'foreignObject',\n FORM: 'form',\n FRAME: 'frame',\n FRAMESET: 'frameset',\n\n H1: 'h1',\n H2: 'h2',\n H3: 'h3',\n H4: 'h4',\n H5: 'h5',\n H6: 'h6',\n HEAD: 'head',\n HEADER: 'header',\n HGROUP: 'hgroup',\n HR: 'hr',\n HTML: 'html',\n\n I: 'i',\n IMG: 'img',\n IMAGE: 'image',\n INPUT: 'input',\n IFRAME: 'iframe',\n\n KEYGEN: 'keygen',\n\n LABEL: 'label',\n LI: 'li',\n LINK: 'link',\n LISTING: 'listing',\n\n MAIN: 'main',\n MALIGNMARK: 'malignmark',\n MARQUEE: 'marquee',\n MATH: 'math',\n MENU: 'menu',\n META: 'meta',\n MGLYPH: 'mglyph',\n MI: 'mi',\n MO: 'mo',\n MN: 'mn',\n MS: 'ms',\n MTEXT: 'mtext',\n\n NAV: 'nav',\n NOBR: 'nobr',\n NOFRAMES: 'noframes',\n NOEMBED: 'noembed',\n NOSCRIPT: 'noscript',\n\n OBJECT: 'object',\n OL: 'ol',\n OPTGROUP: 'optgroup',\n OPTION: 'option',\n\n P: 'p',\n PARAM: 'param',\n PLAINTEXT: 'plaintext',\n PRE: 'pre',\n\n RB: 'rb',\n RP: 'rp',\n RT: 'rt',\n RTC: 'rtc',\n RUBY: 'ruby',\n\n S: 's',\n SCRIPT: 'script',\n SECTION: 'section',\n SELECT: 'select',\n SOURCE: 'source',\n SMALL: 'small',\n SPAN: 'span',\n STRIKE: 'strike',\n STRONG: 'strong',\n STYLE: 'style',\n SUB: 'sub',\n SUMMARY: 'summary',\n SUP: 'sup',\n\n TABLE: 'table',\n TBODY: 'tbody',\n TEMPLATE: 'template',\n TEXTAREA: 'textarea',\n TFOOT: 'tfoot',\n TD: 'td',\n TH: 'th',\n THEAD: 'thead',\n TITLE: 'title',\n TR: 'tr',\n TRACK: 'track',\n TT: 'tt',\n\n U: 'u',\n UL: 'ul',\n\n SVG: 'svg',\n\n VAR: 'var',\n\n WBR: 'wbr',\n\n XMP: 'xmp'\n});\n\nexports.SPECIAL_ELEMENTS = {\n [NS.HTML]: {\n [$.ADDRESS]: true,\n [$.APPLET]: true,\n [$.AREA]: true,\n [$.ARTICLE]: true,\n [$.ASIDE]: true,\n [$.BASE]: true,\n [$.BASEFONT]: true,\n [$.BGSOUND]: true,\n [$.BLOCKQUOTE]: true,\n [$.BODY]: true,\n [$.BR]: true,\n [$.BUTTON]: true,\n [$.CAPTION]: true,\n [$.CENTER]: true,\n [$.COL]: true,\n [$.COLGROUP]: true,\n [$.DD]: true,\n [$.DETAILS]: true,\n [$.DIR]: true,\n [$.DIV]: true,\n [$.DL]: true,\n [$.DT]: true,\n [$.EMBED]: true,\n [$.FIELDSET]: true,\n [$.FIGCAPTION]: true,\n [$.FIGURE]: true,\n [$.FOOTER]: true,\n [$.FORM]: true,\n [$.FRAME]: true,\n [$.FRAMESET]: true,\n [$.H1]: true,\n [$.H2]: true,\n [$.H3]: true,\n [$.H4]: true,\n [$.H5]: true,\n [$.H6]: true,\n [$.HEAD]: true,\n [$.HEADER]: true,\n [$.HGROUP]: true,\n [$.HR]: true,\n [$.HTML]: true,\n [$.IFRAME]: true,\n [$.IMG]: true,\n [$.INPUT]: true,\n [$.LI]: true,\n [$.LINK]: true,\n [$.LISTING]: true,\n [$.MAIN]: true,\n [$.MARQUEE]: true,\n [$.MENU]: true,\n [$.META]: true,\n [$.NAV]: true,\n [$.NOEMBED]: true,\n [$.NOFRAMES]: true,\n [$.NOSCRIPT]: true,\n [$.OBJECT]: true,\n [$.OL]: true,\n [$.P]: true,\n [$.PARAM]: true,\n [$.PLAINTEXT]: true,\n [$.PRE]: true,\n [$.SCRIPT]: true,\n [$.SECTION]: true,\n [$.SELECT]: true,\n [$.SOURCE]: true,\n [$.STYLE]: true,\n [$.SUMMARY]: true,\n [$.TABLE]: true,\n [$.TBODY]: true,\n [$.TD]: true,\n [$.TEMPLATE]: true,\n [$.TEXTAREA]: true,\n [$.TFOOT]: true,\n [$.TH]: true,\n [$.THEAD]: true,\n [$.TITLE]: true,\n [$.TR]: true,\n [$.TRACK]: true,\n [$.UL]: true,\n [$.WBR]: true,\n [$.XMP]: true\n },\n [NS.MATHML]: {\n [$.MI]: true,\n [$.MO]: true,\n [$.MN]: true,\n [$.MS]: true,\n [$.MTEXT]: true,\n [$.ANNOTATION_XML]: true\n },\n [NS.SVG]: {\n [$.TITLE]: true,\n [$.FOREIGN_OBJECT]: true,\n [$.DESC]: true\n }\n};\n","'use strict'\n\nvar assign = Object.assign\n\nmodule.exports = assign\n","'use strict'\n\nvar sizeChunks = require('./size-chunks.js')\n\nfunction prefixSize(events, type) {\n var tail = events[events.length - 1]\n if (!tail || tail[1].type !== type) return 0\n return sizeChunks(tail[2].sliceStream(tail[1]))\n}\n\nmodule.exports = prefixSize\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\nmodule.exports = asciiAlphanumeric\n","'use strict'\n\nmodule.exports = wrap\n\nvar u = require('unist-builder')\n\n// Wrap `nodes` with line feeds between each entry.\n// Optionally adds line feeds at the start and end.\nfunction wrap(nodes, loose) {\n var result = []\n var index = -1\n var length = nodes.length\n\n if (loose) {\n result.push(u('text', '\\n'))\n }\n\n while (++index < length) {\n if (index) {\n result.push(u('text', '\\n'))\n }\n\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push(u('text', '\\n'))\n }\n\n return result\n}\n","'use strict'\n\nvar merge = require('./lib/util/merge')\nvar xlink = require('./lib/xlink')\nvar xml = require('./lib/xml')\nvar xmlns = require('./lib/xmlns')\nvar aria = require('./lib/aria')\nvar html = require('./lib/html')\n\nmodule.exports = merge([xml, xlink, xmlns, aria, html])\n","'use strict'\n\nvar merge = require('./lib/util/merge')\nvar xlink = require('./lib/xlink')\nvar xml = require('./lib/xml')\nvar xmlns = require('./lib/xmlns')\nvar aria = require('./lib/aria')\nvar svg = require('./lib/svg')\n\nmodule.exports = merge([xml, xlink, xmlns, aria, svg])\n","'use strict'\n\nvar normalize = require('./normalize')\nvar DefinedInfo = require('./lib/util/defined-info')\nvar Info = require('./lib/util/info')\n\nvar data = 'data'\n\nmodule.exports = find\n\nvar valid = /^data[-\\w.:]+$/i\nvar dash = /-[a-z]/g\nvar cap = /[A-Z]/g\n\nfunction find(schema, value) {\n var normal = normalize(value)\n var prop = value\n var Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === data && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n prop = datasetToProperty(value)\n } else {\n value = datasetToAttribute(value)\n }\n\n Type = DefinedInfo\n }\n\n return new Type(prop, value)\n}\n\nfunction datasetToProperty(attribute) {\n var value = attribute.slice(5).replace(dash, camelcase)\n return data + value.charAt(0).toUpperCase() + value.slice(1)\n}\n\nfunction datasetToAttribute(property) {\n var value = property.slice(4)\n\n if (dash.test(value)) {\n return property\n }\n\n value = value.replace(cap, kebab)\n\n if (value.charAt(0) !== '-') {\n value = '-' + value\n }\n\n return data + value\n}\n\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","'use strict'\n\nvar fromCharCode = String.fromCharCode\n\nmodule.exports = fromCharCode\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\n\nvar partialBlankLine = {\n tokenize: tokenizePartialBlankLine,\n partial: true\n}\n\nfunction tokenizePartialBlankLine(effects, ok, nok) {\n return factorySpace(effects, afterWhitespace, 'linePrefix')\n\n function afterWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n\nmodule.exports = partialBlankLine\n","'use strict'\n\nfunction resolveAll(constructs, events, context) {\n var called = []\n var index = -1\n var resolve\n\n while (++index < constructs.length) {\n resolve = constructs[index].resolveAll\n\n if (resolve && called.indexOf(resolve) < 0) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n\nmodule.exports = resolveAll\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlpha = regexCheck(/[A-Za-z]/)\n\nmodule.exports = asciiAlpha\n","'use strict'\n\nmodule.exports = visit\n\nvar visitParents = require('unist-util-visit-parents')\n\nvar CONTINUE = visitParents.CONTINUE\nvar SKIP = visitParents.SKIP\nvar EXIT = visitParents.EXIT\n\nvisit.CONTINUE = CONTINUE\nvisit.SKIP = SKIP\nvisit.EXIT = EXIT\n\nfunction visit(tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n function overload(node, parents) {\n var parent = parents[parents.length - 1]\n var index = parent ? parent.children.indexOf(node) : null\n return visitor(node, index, parent)\n }\n}\n","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n var i, ch, cache = encodeCache[exclude];\n if (cache) { return cache; }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n var i, l, code, nextCode, cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","'use strict'\n\nvar powers = 0\n\nexports.boolean = increment()\nexports.booleanish = increment()\nexports.overloadedBoolean = increment()\nexports.number = increment()\nexports.spaceSeparated = increment()\nexports.commaSeparated = increment()\nexports.commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return Math.pow(2, ++powers)\n}\n","'use strict';\n\nconst Preprocessor = require('./preprocessor');\nconst unicode = require('../common/unicode');\nconst neTree = require('./named-entity-data');\nconst ERR = require('../common/error-codes');\n\n//Aliases\nconst $ = unicode.CODE_POINTS;\nconst $$ = unicode.CODE_POINT_SEQUENCES;\n\n//C1 Unicode control character reference replacements\nconst C1_CONTROLS_REFERENCE_REPLACEMENTS = {\n 0x80: 0x20ac,\n 0x82: 0x201a,\n 0x83: 0x0192,\n 0x84: 0x201e,\n 0x85: 0x2026,\n 0x86: 0x2020,\n 0x87: 0x2021,\n 0x88: 0x02c6,\n 0x89: 0x2030,\n 0x8a: 0x0160,\n 0x8b: 0x2039,\n 0x8c: 0x0152,\n 0x8e: 0x017d,\n 0x91: 0x2018,\n 0x92: 0x2019,\n 0x93: 0x201c,\n 0x94: 0x201d,\n 0x95: 0x2022,\n 0x96: 0x2013,\n 0x97: 0x2014,\n 0x98: 0x02dc,\n 0x99: 0x2122,\n 0x9a: 0x0161,\n 0x9b: 0x203a,\n 0x9c: 0x0153,\n 0x9e: 0x017e,\n 0x9f: 0x0178\n};\n\n// Named entity tree flags\nconst HAS_DATA_FLAG = 1 << 0;\nconst DATA_DUPLET_FLAG = 1 << 1;\nconst HAS_BRANCHES_FLAG = 1 << 2;\nconst MAX_BRANCH_MARKER_VALUE = HAS_DATA_FLAG | DATA_DUPLET_FLAG | HAS_BRANCHES_FLAG;\n\n//States\nconst DATA_STATE = 'DATA_STATE';\nconst RCDATA_STATE = 'RCDATA_STATE';\nconst RAWTEXT_STATE = 'RAWTEXT_STATE';\nconst SCRIPT_DATA_STATE = 'SCRIPT_DATA_STATE';\nconst PLAINTEXT_STATE = 'PLAINTEXT_STATE';\nconst TAG_OPEN_STATE = 'TAG_OPEN_STATE';\nconst END_TAG_OPEN_STATE = 'END_TAG_OPEN_STATE';\nconst TAG_NAME_STATE = 'TAG_NAME_STATE';\nconst RCDATA_LESS_THAN_SIGN_STATE = 'RCDATA_LESS_THAN_SIGN_STATE';\nconst RCDATA_END_TAG_OPEN_STATE = 'RCDATA_END_TAG_OPEN_STATE';\nconst RCDATA_END_TAG_NAME_STATE = 'RCDATA_END_TAG_NAME_STATE';\nconst RAWTEXT_LESS_THAN_SIGN_STATE = 'RAWTEXT_LESS_THAN_SIGN_STATE';\nconst RAWTEXT_END_TAG_OPEN_STATE = 'RAWTEXT_END_TAG_OPEN_STATE';\nconst RAWTEXT_END_TAG_NAME_STATE = 'RAWTEXT_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_END_TAG_OPEN_STATE = 'SCRIPT_DATA_END_TAG_OPEN_STATE';\nconst SCRIPT_DATA_END_TAG_NAME_STATE = 'SCRIPT_DATA_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_ESCAPE_START_STATE = 'SCRIPT_DATA_ESCAPE_START_STATE';\nconst SCRIPT_DATA_ESCAPE_START_DASH_STATE = 'SCRIPT_DATA_ESCAPE_START_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_STATE = 'SCRIPT_DATA_ESCAPED_STATE';\nconst SCRIPT_DATA_ESCAPED_DASH_STATE = 'SCRIPT_DATA_ESCAPED_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_DASH_DASH_STATE = 'SCRIPT_DATA_ESCAPED_DASH_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE = 'SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE';\nconst SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE = 'SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE';\nconst BEFORE_ATTRIBUTE_NAME_STATE = 'BEFORE_ATTRIBUTE_NAME_STATE';\nconst ATTRIBUTE_NAME_STATE = 'ATTRIBUTE_NAME_STATE';\nconst AFTER_ATTRIBUTE_NAME_STATE = 'AFTER_ATTRIBUTE_NAME_STATE';\nconst BEFORE_ATTRIBUTE_VALUE_STATE = 'BEFORE_ATTRIBUTE_VALUE_STATE';\nconst ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE = 'ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE';\nconst ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE = 'ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE';\nconst ATTRIBUTE_VALUE_UNQUOTED_STATE = 'ATTRIBUTE_VALUE_UNQUOTED_STATE';\nconst AFTER_ATTRIBUTE_VALUE_QUOTED_STATE = 'AFTER_ATTRIBUTE_VALUE_QUOTED_STATE';\nconst SELF_CLOSING_START_TAG_STATE = 'SELF_CLOSING_START_TAG_STATE';\nconst BOGUS_COMMENT_STATE = 'BOGUS_COMMENT_STATE';\nconst MARKUP_DECLARATION_OPEN_STATE = 'MARKUP_DECLARATION_OPEN_STATE';\nconst COMMENT_START_STATE = 'COMMENT_START_STATE';\nconst COMMENT_START_DASH_STATE = 'COMMENT_START_DASH_STATE';\nconst COMMENT_STATE = 'COMMENT_STATE';\nconst COMMENT_LESS_THAN_SIGN_STATE = 'COMMENT_LESS_THAN_SIGN_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE';\nconst COMMENT_END_DASH_STATE = 'COMMENT_END_DASH_STATE';\nconst COMMENT_END_STATE = 'COMMENT_END_STATE';\nconst COMMENT_END_BANG_STATE = 'COMMENT_END_BANG_STATE';\nconst DOCTYPE_STATE = 'DOCTYPE_STATE';\nconst BEFORE_DOCTYPE_NAME_STATE = 'BEFORE_DOCTYPE_NAME_STATE';\nconst DOCTYPE_NAME_STATE = 'DOCTYPE_NAME_STATE';\nconst AFTER_DOCTYPE_NAME_STATE = 'AFTER_DOCTYPE_NAME_STATE';\nconst AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE = 'AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE';\nconst BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE = 'BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE';\nconst DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE = 'DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE';\nconst DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE = 'DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE';\nconst AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE = 'AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE';\nconst BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE = 'BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE';\nconst AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE = 'AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE';\nconst BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE = 'BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE';\nconst DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE = 'DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE';\nconst DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE = 'DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE';\nconst AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE = 'AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE';\nconst BOGUS_DOCTYPE_STATE = 'BOGUS_DOCTYPE_STATE';\nconst CDATA_SECTION_STATE = 'CDATA_SECTION_STATE';\nconst CDATA_SECTION_BRACKET_STATE = 'CDATA_SECTION_BRACKET_STATE';\nconst CDATA_SECTION_END_STATE = 'CDATA_SECTION_END_STATE';\nconst CHARACTER_REFERENCE_STATE = 'CHARACTER_REFERENCE_STATE';\nconst NAMED_CHARACTER_REFERENCE_STATE = 'NAMED_CHARACTER_REFERENCE_STATE';\nconst AMBIGUOUS_AMPERSAND_STATE = 'AMBIGUOS_AMPERSAND_STATE';\nconst NUMERIC_CHARACTER_REFERENCE_STATE = 'NUMERIC_CHARACTER_REFERENCE_STATE';\nconst HEXADEMICAL_CHARACTER_REFERENCE_START_STATE = 'HEXADEMICAL_CHARACTER_REFERENCE_START_STATE';\nconst DECIMAL_CHARACTER_REFERENCE_START_STATE = 'DECIMAL_CHARACTER_REFERENCE_START_STATE';\nconst HEXADEMICAL_CHARACTER_REFERENCE_STATE = 'HEXADEMICAL_CHARACTER_REFERENCE_STATE';\nconst DECIMAL_CHARACTER_REFERENCE_STATE = 'DECIMAL_CHARACTER_REFERENCE_STATE';\nconst NUMERIC_CHARACTER_REFERENCE_END_STATE = 'NUMERIC_CHARACTER_REFERENCE_END_STATE';\n\n//Utils\n\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isWhitespace(cp) {\n return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\n\nfunction isAsciiDigit(cp) {\n return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\n\nfunction isAsciiUpper(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\n\nfunction isAsciiLower(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\n\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\n\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\n\nfunction isAsciiUpperHexDigit(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_F;\n}\n\nfunction isAsciiLowerHexDigit(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_F;\n}\n\nfunction isAsciiHexDigit(cp) {\n return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n}\n\nfunction toAsciiLowerCodePoint(cp) {\n return cp + 0x0020;\n}\n\n//NOTE: String.fromCharCode() function can handle only characters from BMP subset.\n//So, we need to workaround this manually.\n//(see: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/fromCharCode#Getting_it_to_work_with_higher_values)\nfunction toChar(cp) {\n if (cp <= 0xffff) {\n return String.fromCharCode(cp);\n }\n\n cp -= 0x10000;\n return String.fromCharCode(((cp >>> 10) & 0x3ff) | 0xd800) + String.fromCharCode(0xdc00 | (cp & 0x3ff));\n}\n\nfunction toAsciiLowerChar(cp) {\n return String.fromCharCode(toAsciiLowerCodePoint(cp));\n}\n\nfunction findNamedEntityTreeBranch(nodeIx, cp) {\n const branchCount = neTree[++nodeIx];\n let lo = ++nodeIx;\n let hi = lo + branchCount - 1;\n\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midCp = neTree[mid];\n\n if (midCp < cp) {\n lo = mid + 1;\n } else if (midCp > cp) {\n hi = mid - 1;\n } else {\n return neTree[mid + branchCount];\n }\n }\n\n return -1;\n}\n\n//Tokenizer\nclass Tokenizer {\n constructor() {\n this.preprocessor = new Preprocessor();\n\n this.tokenQueue = [];\n\n this.allowCDATA = false;\n\n this.state = DATA_STATE;\n this.returnState = '';\n\n this.charRefCode = -1;\n this.tempBuff = [];\n this.lastStartTagName = '';\n\n this.consumedAfterSnapshot = -1;\n this.active = false;\n\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = null;\n }\n\n //Errors\n _err() {\n // NOTE: err reporting is noop by default. Enabled by mixin.\n }\n\n _errOnNextCodePoint(err) {\n this._consume();\n this._err(err);\n this._unconsume();\n }\n\n //API\n getNextToken() {\n while (!this.tokenQueue.length && this.active) {\n this.consumedAfterSnapshot = 0;\n\n const cp = this._consume();\n\n if (!this._ensureHibernation()) {\n this[this.state](cp);\n }\n }\n\n return this.tokenQueue.shift();\n }\n\n write(chunk, isLastChunk) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n }\n\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n }\n\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n for (; this.consumedAfterSnapshot > 0; this.consumedAfterSnapshot--) {\n this.preprocessor.retreat();\n }\n\n this.active = false;\n this.tokenQueue.push({ type: Tokenizer.HIBERNATION_TOKEN });\n\n return true;\n }\n\n return false;\n }\n\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n\n _unconsume() {\n this.consumedAfterSnapshot--;\n this.preprocessor.retreat();\n }\n\n _reconsumeInState(state) {\n this.state = state;\n this._unconsume();\n }\n\n _consumeSequenceIfMatch(pattern, startCp, caseSensitive) {\n let consumedCount = 0;\n let isMatch = true;\n const patternLength = pattern.length;\n let patternPos = 0;\n let cp = startCp;\n let patternCp = void 0;\n\n for (; patternPos < patternLength; patternPos++) {\n if (patternPos > 0) {\n cp = this._consume();\n consumedCount++;\n }\n\n if (cp === $.EOF) {\n isMatch = false;\n break;\n }\n\n patternCp = pattern[patternPos];\n\n if (cp !== patternCp && (caseSensitive || cp !== toAsciiLowerCodePoint(patternCp))) {\n isMatch = false;\n break;\n }\n }\n\n if (!isMatch) {\n while (consumedCount--) {\n this._unconsume();\n }\n }\n\n return isMatch;\n }\n\n //Temp buffer\n _isTempBufferEqualToScriptString() {\n if (this.tempBuff.length !== $$.SCRIPT_STRING.length) {\n return false;\n }\n\n for (let i = 0; i < this.tempBuff.length; i++) {\n if (this.tempBuff[i] !== $$.SCRIPT_STRING[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: Tokenizer.START_TAG_TOKEN,\n tagName: '',\n selfClosing: false,\n ackSelfClosing: false,\n attrs: []\n };\n }\n\n _createEndTagToken() {\n this.currentToken = {\n type: Tokenizer.END_TAG_TOKEN,\n tagName: '',\n selfClosing: false,\n attrs: []\n };\n }\n\n _createCommentToken() {\n this.currentToken = {\n type: Tokenizer.COMMENT_TOKEN,\n data: ''\n };\n }\n\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: Tokenizer.DOCTYPE_TOKEN,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null\n };\n }\n\n _createCharacterToken(type, ch) {\n this.currentCharacterToken = {\n type: type,\n chars: ch\n };\n }\n\n _createEOFToken() {\n this.currentToken = { type: Tokenizer.EOF_TOKEN };\n }\n\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: ''\n };\n }\n\n _leaveAttrName(toState) {\n if (Tokenizer.getTokenAttr(this.currentToken, this.currentAttr.name) === null) {\n this.currentToken.attrs.push(this.currentAttr);\n } else {\n this._err(ERR.duplicateAttribute);\n }\n\n this.state = toState;\n }\n\n _leaveAttrValue(toState) {\n this.state = toState;\n }\n\n //Token emission\n _emitCurrentToken() {\n this._emitCurrentCharacterToken();\n\n const ct = this.currentToken;\n\n this.currentToken = null;\n\n //NOTE: store emited start tag's tagName to determine is the following end tag token is appropriate.\n if (ct.type === Tokenizer.START_TAG_TOKEN) {\n this.lastStartTagName = ct.tagName;\n } else if (ct.type === Tokenizer.END_TAG_TOKEN) {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n }\n\n this.tokenQueue.push(ct);\n }\n\n _emitCurrentCharacterToken() {\n if (this.currentCharacterToken) {\n this.tokenQueue.push(this.currentCharacterToken);\n this.currentCharacterToken = null;\n }\n }\n\n _emitEOFToken() {\n this._createEOFToken();\n this._emitCurrentToken();\n }\n\n //Characters emission\n\n //OPTIMIZATION: specification uses only one type of character tokens (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)NULL_CHARACTER_TOKEN - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)WHITESPACE_CHARACTER_TOKEN - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)CHARACTER_TOKEN - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken && this.currentCharacterToken.type !== type) {\n this._emitCurrentCharacterToken();\n }\n\n if (this.currentCharacterToken) {\n this.currentCharacterToken.chars += ch;\n } else {\n this._createCharacterToken(type, ch);\n }\n }\n\n _emitCodePoint(cp) {\n let type = Tokenizer.CHARACTER_TOKEN;\n\n if (isWhitespace(cp)) {\n type = Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n } else if (cp === $.NULL) {\n type = Tokenizer.NULL_CHARACTER_TOKEN;\n }\n\n this._appendCharToCurrentCharacterToken(type, toChar(cp));\n }\n\n _emitSeveralCodePoints(codePoints) {\n for (let i = 0; i < codePoints.length; i++) {\n this._emitCodePoint(codePoints[i]);\n }\n }\n\n //NOTE: used then we emit character explicitly. This is always a non-whitespace and a non-null character.\n //So we can avoid additional checks here.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(Tokenizer.CHARACTER_TOKEN, ch);\n }\n\n // Character reference helpers\n _matchNamedCharacterReference(startCp) {\n let result = null;\n let excess = 1;\n let i = findNamedEntityTreeBranch(0, startCp);\n\n this.tempBuff.push(startCp);\n\n while (i > -1) {\n const current = neTree[i];\n const inNode = current < MAX_BRANCH_MARKER_VALUE;\n const nodeWithData = inNode && current & HAS_DATA_FLAG;\n\n if (nodeWithData) {\n //NOTE: we use greedy search, so we continue lookup at this point\n result = current & DATA_DUPLET_FLAG ? [neTree[++i], neTree[++i]] : [neTree[++i]];\n excess = 0;\n }\n\n const cp = this._consume();\n\n this.tempBuff.push(cp);\n excess++;\n\n if (cp === $.EOF) {\n break;\n }\n\n if (inNode) {\n i = current & HAS_BRANCHES_FLAG ? findNamedEntityTreeBranch(i, cp) : -1;\n } else {\n i = cp === current ? ++i : -1;\n }\n }\n\n while (excess--) {\n this.tempBuff.pop();\n this._unconsume();\n }\n\n return result;\n }\n\n _isCharacterReferenceInAttribute() {\n return (\n this.returnState === ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE ||\n this.returnState === ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE ||\n this.returnState === ATTRIBUTE_VALUE_UNQUOTED_STATE\n );\n }\n\n _isCharacterReferenceAttributeQuirk(withSemicolon) {\n if (!withSemicolon && this._isCharacterReferenceInAttribute()) {\n const nextCp = this._consume();\n\n this._unconsume();\n\n return nextCp === $.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp);\n }\n\n return false;\n }\n\n _flushCodePointsConsumedAsCharacterReference() {\n if (this._isCharacterReferenceInAttribute()) {\n for (let i = 0; i < this.tempBuff.length; i++) {\n this.currentAttr.value += toChar(this.tempBuff[i]);\n }\n } else {\n this._emitSeveralCodePoints(this.tempBuff);\n }\n\n this.tempBuff = [];\n }\n\n // State machine\n\n // Data state\n //------------------------------------------------------------------\n [DATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.LESS_THAN_SIGN) {\n this.state = TAG_OPEN_STATE;\n } else if (cp === $.AMPERSAND) {\n this.returnState = DATA_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // RCDATA state\n //------------------------------------------------------------------\n [RCDATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.AMPERSAND) {\n this.returnState = RCDATA_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = RCDATA_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // RAWTEXT state\n //------------------------------------------------------------------\n [RAWTEXT_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.LESS_THAN_SIGN) {\n this.state = RAWTEXT_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Script data state\n //------------------------------------------------------------------\n [SCRIPT_DATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // PLAINTEXT state\n //------------------------------------------------------------------\n [PLAINTEXT_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Tag open state\n //------------------------------------------------------------------\n [TAG_OPEN_STATE](cp) {\n if (cp === $.EXCLAMATION_MARK) {\n this.state = MARKUP_DECLARATION_OPEN_STATE;\n } else if (cp === $.SOLIDUS) {\n this.state = END_TAG_OPEN_STATE;\n } else if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this._reconsumeInState(TAG_NAME_STATE);\n } else if (cp === $.QUESTION_MARK) {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n } else if (cp === $.EOF) {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n } else {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this._reconsumeInState(DATA_STATE);\n }\n }\n\n // End tag open state\n //------------------------------------------------------------------\n [END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(TAG_NAME_STATE);\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingEndTagName);\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('</');\n this._emitEOFToken();\n } else {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n }\n }\n\n // Tag name state\n //------------------------------------------------------------------\n [TAG_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n } else if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.tagName += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentToken.tagName += toChar(cp);\n }\n }\n\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n [RCDATA_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = RCDATA_END_TAG_OPEN_STATE;\n } else {\n this._emitChars('<');\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n\n // RCDATA end tag open state\n //------------------------------------------------------------------\n [RCDATA_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(RCDATA_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n\n // RCDATA end tag name state\n //------------------------------------------------------------------\n [RCDATA_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n [RAWTEXT_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = RAWTEXT_END_TAG_OPEN_STATE;\n } else {\n this._emitChars('<');\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n [RAWTEXT_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(RAWTEXT_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n [RAWTEXT_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n\n // Script data less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_END_TAG_OPEN_STATE;\n } else if (cp === $.EXCLAMATION_MARK) {\n this.state = SCRIPT_DATA_ESCAPE_START_STATE;\n this._emitChars('<!');\n } else {\n this._emitChars('<');\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data end tag open state\n //------------------------------------------------------------------\n [SCRIPT_DATA_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(SCRIPT_DATA_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data end tag name state\n //------------------------------------------------------------------\n [SCRIPT_DATA_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n } else if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data escape start state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPE_START_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPE_START_DASH_STATE;\n this._emitChars('-');\n } else {\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data escape start dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPE_START_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;\n this._emitChars('-');\n } else {\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data escaped state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPED_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Script data escaped dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_DASH_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = SCRIPT_DATA_STATE;\n this._emitChars('>');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE;\n } else if (isAsciiLetter(cp)) {\n this.tempBuff = [];\n this._emitChars('<');\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE);\n } else {\n this._emitChars('<');\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data double escape start state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE](cp) {\n if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN) {\n this.state = this._isTempBufferEqualToScriptString()\n ? SCRIPT_DATA_DOUBLE_ESCAPED_STATE\n : SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n } else if (isAsciiUpper(cp)) {\n this.tempBuff.push(toAsciiLowerCodePoint(cp));\n this._emitCodePoint(cp);\n } else if (isAsciiLower(cp)) {\n this.tempBuff.push(cp);\n this._emitCodePoint(cp);\n } else {\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data double escaped state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars('<');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Script data double escaped dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars('<');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars('<');\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = SCRIPT_DATA_STATE;\n this._emitChars('>');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE;\n this._emitChars('/');\n } else {\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n }\n }\n\n // Script data double escape end state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE](cp) {\n if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN) {\n this.state = this._isTempBufferEqualToScriptString()\n ? SCRIPT_DATA_ESCAPED_STATE\n : SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n\n this._emitCodePoint(cp);\n } else if (isAsciiUpper(cp)) {\n this.tempBuff.push(toAsciiLowerCodePoint(cp));\n this._emitCodePoint(cp);\n } else if (isAsciiLower(cp)) {\n this.tempBuff.push(cp);\n this._emitCodePoint(cp);\n } else {\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n }\n }\n\n // Before attribute name state\n //------------------------------------------------------------------\n [BEFORE_ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN || cp === $.EOF) {\n this._reconsumeInState(AFTER_ATTRIBUTE_NAME_STATE);\n } else if (cp === $.EQUALS_SIGN) {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = ATTRIBUTE_NAME_STATE;\n } else {\n this._createAttr('');\n this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Attribute name state\n //------------------------------------------------------------------\n [ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN || cp === $.EOF) {\n this._leaveAttrName(AFTER_ATTRIBUTE_NAME_STATE);\n this._unconsume();\n } else if (cp === $.EQUALS_SIGN) {\n this._leaveAttrName(BEFORE_ATTRIBUTE_VALUE_STATE);\n } else if (isAsciiUpper(cp)) {\n this.currentAttr.name += toAsciiLowerChar(cp);\n } else if (cp === $.QUOTATION_MARK || cp === $.APOSTROPHE || cp === $.LESS_THAN_SIGN) {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += toChar(cp);\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += unicode.REPLACEMENT_CHARACTER;\n } else {\n this.currentAttr.name += toChar(cp);\n }\n }\n\n // After attribute name state\n //------------------------------------------------------------------\n [AFTER_ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n } else if (cp === $.EQUALS_SIGN) {\n this.state = BEFORE_ATTRIBUTE_VALUE_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._createAttr('');\n this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Before attribute value state\n //------------------------------------------------------------------\n [BEFORE_ATTRIBUTE_VALUE_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.QUOTATION_MARK) {\n this.state = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.state = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingAttributeValue);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else {\n this._reconsumeInState(ATTRIBUTE_VALUE_UNQUOTED_STATE);\n }\n }\n\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $.QUOTATION_MARK) {\n this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n } else if (cp === $.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE](cp) {\n if (cp === $.APOSTROPHE) {\n this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n } else if (cp === $.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_UNQUOTED_STATE](cp) {\n if (isWhitespace(cp)) {\n this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n } else if (cp === $.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_UNQUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._leaveAttrValue(DATA_STATE);\n this._emitCurrentToken();\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (\n cp === $.QUOTATION_MARK ||\n cp === $.APOSTROPHE ||\n cp === $.LESS_THAN_SIGN ||\n cp === $.EQUALS_SIGN ||\n cp === $.GRAVE_ACCENT\n ) {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += toChar(cp);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n [AFTER_ATTRIBUTE_VALUE_QUOTED_STATE](cp) {\n if (isWhitespace(cp)) {\n this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n } else if (cp === $.SOLIDUS) {\n this._leaveAttrValue(SELF_CLOSING_START_TAG_STATE);\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._leaveAttrValue(DATA_STATE);\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Self-closing start tag state\n //------------------------------------------------------------------\n [SELF_CLOSING_START_TAG_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.currentToken.selfClosing = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._err(ERR.unexpectedSolidusInTag);\n this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Bogus comment state\n //------------------------------------------------------------------\n [BOGUS_COMMENT_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._emitCurrentToken();\n this._emitEOFToken();\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.data += unicode.REPLACEMENT_CHARACTER;\n } else {\n this.currentToken.data += toChar(cp);\n }\n }\n\n // Markup declaration open state\n //------------------------------------------------------------------\n [MARKUP_DECLARATION_OPEN_STATE](cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH_STRING, cp, true)) {\n this._createCommentToken();\n this.state = COMMENT_START_STATE;\n } else if (this._consumeSequenceIfMatch($$.DOCTYPE_STRING, cp, false)) {\n this.state = DOCTYPE_STATE;\n } else if (this._consumeSequenceIfMatch($$.CDATA_START_STRING, cp, true)) {\n if (this.allowCDATA) {\n this.state = CDATA_SECTION_STATE;\n } else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken();\n this.currentToken.data = '[CDATA[';\n this.state = BOGUS_COMMENT_STATE;\n }\n }\n\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.incorrectlyOpenedComment);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n }\n }\n\n // Comment start state\n //------------------------------------------------------------------\n [COMMENT_START_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_START_DASH_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment start dash state\n //------------------------------------------------------------------\n [COMMENT_START_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_END_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '-';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment state\n //------------------------------------------------------------------\n [COMMENT_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_END_DASH_STATE;\n } else if (cp === $.LESS_THAN_SIGN) {\n this.currentToken.data += '<';\n this.state = COMMENT_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.data += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += toChar(cp);\n }\n }\n\n // Comment less-than sign state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.EXCLAMATION_MARK) {\n this.currentToken.data += '!';\n this.state = COMMENT_LESS_THAN_SIGN_BANG_STATE;\n } else if (cp === $.LESS_THAN_SIGN) {\n this.currentToken.data += '!';\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE;\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE;\n } else {\n this._reconsumeInState(COMMENT_END_DASH_STATE);\n }\n }\n\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE](cp) {\n if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n this._err(ERR.nestedComment);\n }\n\n this._reconsumeInState(COMMENT_END_STATE);\n }\n\n // Comment end dash state\n //------------------------------------------------------------------\n [COMMENT_END_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_END_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '-';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment end state\n //------------------------------------------------------------------\n [COMMENT_END_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EXCLAMATION_MARK) {\n this.state = COMMENT_END_BANG_STATE;\n } else if (cp === $.HYPHEN_MINUS) {\n this.currentToken.data += '-';\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '--';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment end bang state\n //------------------------------------------------------------------\n [COMMENT_END_BANG_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.currentToken.data += '--!';\n this.state = COMMENT_END_DASH_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.incorrectlyClosedComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '--!';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // DOCTYPE state\n //------------------------------------------------------------------\n [DOCTYPE_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_NAME_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n }\n }\n\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(toAsciiLowerChar(cp));\n this.state = DOCTYPE_NAME_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(unicode.REPLACEMENT_CHARACTER);\n this.state = DOCTYPE_NAME_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._createDoctypeToken(toChar(cp));\n this.state = DOCTYPE_NAME_STATE;\n }\n }\n\n // DOCTYPE name state\n //------------------------------------------------------------------\n [DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = AFTER_DOCTYPE_NAME_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (isAsciiUpper(cp)) {\n this.currentToken.name += toAsciiLowerChar(cp);\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.name += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.name += toChar(cp);\n }\n }\n\n // After DOCTYPE name state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else if (this._consumeSequenceIfMatch($$.PUBLIC_STRING, cp, false)) {\n this.state = AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE;\n } else if (this._consumeSequenceIfMatch($$.SYSTEM_STRING, cp, false)) {\n this.state = AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE;\n }\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.QUOTATION_MARK) {\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $.QUOTATION_MARK) {\n this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.publicId += toChar(cp);\n }\n }\n\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n if (cp === $.APOSTROPHE) {\n this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.publicId += toChar(cp);\n }\n }\n\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n [BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.QUOTATION_MARK) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.QUOTATION_MARK) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $.QUOTATION_MARK) {\n this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.systemId += toChar(cp);\n }\n }\n\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n if (cp === $.APOSTROPHE) {\n this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.systemId += toChar(cp);\n }\n }\n\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n [BOGUS_DOCTYPE_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n } else if (cp === $.EOF) {\n this._emitCurrentToken();\n this._emitEOFToken();\n }\n }\n\n // CDATA section state\n //------------------------------------------------------------------\n [CDATA_SECTION_STATE](cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = CDATA_SECTION_BRACKET_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // CDATA section bracket state\n //------------------------------------------------------------------\n [CDATA_SECTION_BRACKET_STATE](cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = CDATA_SECTION_END_STATE;\n } else {\n this._emitChars(']');\n this._reconsumeInState(CDATA_SECTION_STATE);\n }\n }\n\n // CDATA section end state\n //------------------------------------------------------------------\n [CDATA_SECTION_END_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n } else if (cp === $.RIGHT_SQUARE_BRACKET) {\n this._emitChars(']');\n } else {\n this._emitChars(']]');\n this._reconsumeInState(CDATA_SECTION_STATE);\n }\n }\n\n // Character reference state\n //------------------------------------------------------------------\n [CHARACTER_REFERENCE_STATE](cp) {\n this.tempBuff = [$.AMPERSAND];\n\n if (cp === $.NUMBER_SIGN) {\n this.tempBuff.push(cp);\n this.state = NUMERIC_CHARACTER_REFERENCE_STATE;\n } else if (isAsciiAlphaNumeric(cp)) {\n this._reconsumeInState(NAMED_CHARACTER_REFERENCE_STATE);\n } else {\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Named character reference state\n //------------------------------------------------------------------\n [NAMED_CHARACTER_REFERENCE_STATE](cp) {\n const matchResult = this._matchNamedCharacterReference(cp);\n\n //NOTE: matching can be abrupted by hibernation. In that case match\n //results are no longer valid and we will need to start over.\n if (this._ensureHibernation()) {\n this.tempBuff = [$.AMPERSAND];\n } else if (matchResult) {\n const withSemicolon = this.tempBuff[this.tempBuff.length - 1] === $.SEMICOLON;\n\n if (!this._isCharacterReferenceAttributeQuirk(withSemicolon)) {\n if (!withSemicolon) {\n this._errOnNextCodePoint(ERR.missingSemicolonAfterCharacterReference);\n }\n\n this.tempBuff = matchResult;\n }\n\n this._flushCodePointsConsumedAsCharacterReference();\n this.state = this.returnState;\n } else {\n this._flushCodePointsConsumedAsCharacterReference();\n this.state = AMBIGUOUS_AMPERSAND_STATE;\n }\n }\n\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n [AMBIGUOUS_AMPERSAND_STATE](cp) {\n if (isAsciiAlphaNumeric(cp)) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += toChar(cp);\n } else {\n this._emitCodePoint(cp);\n }\n } else {\n if (cp === $.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Numeric character reference state\n //------------------------------------------------------------------\n [NUMERIC_CHARACTER_REFERENCE_STATE](cp) {\n this.charRefCode = 0;\n\n if (cp === $.LATIN_SMALL_X || cp === $.LATIN_CAPITAL_X) {\n this.tempBuff.push(cp);\n this.state = HEXADEMICAL_CHARACTER_REFERENCE_START_STATE;\n } else {\n this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_START_STATE);\n }\n }\n\n // Hexademical character reference start state\n //------------------------------------------------------------------\n [HEXADEMICAL_CHARACTER_REFERENCE_START_STATE](cp) {\n if (isAsciiHexDigit(cp)) {\n this._reconsumeInState(HEXADEMICAL_CHARACTER_REFERENCE_STATE);\n } else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Decimal character reference start state\n //------------------------------------------------------------------\n [DECIMAL_CHARACTER_REFERENCE_START_STATE](cp) {\n if (isAsciiDigit(cp)) {\n this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_STATE);\n } else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Hexademical character reference state\n //------------------------------------------------------------------\n [HEXADEMICAL_CHARACTER_REFERENCE_STATE](cp) {\n if (isAsciiUpperHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x37;\n } else if (isAsciiLowerHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x57;\n } else if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x30;\n } else if (cp === $.SEMICOLON) {\n this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n } else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n }\n }\n\n // Decimal character reference state\n //------------------------------------------------------------------\n [DECIMAL_CHARACTER_REFERENCE_STATE](cp) {\n if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 10 + cp - 0x30;\n } else if (cp === $.SEMICOLON) {\n this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n } else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n }\n }\n\n // Numeric character reference end state\n //------------------------------------------------------------------\n [NUMERIC_CHARACTER_REFERENCE_END_STATE]() {\n if (this.charRefCode === $.NULL) {\n this._err(ERR.nullCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n } else if (this.charRefCode > 0x10ffff) {\n this._err(ERR.characterReferenceOutsideUnicodeRange);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n } else if (unicode.isSurrogate(this.charRefCode)) {\n this._err(ERR.surrogateCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n } else if (unicode.isUndefinedCodePoint(this.charRefCode)) {\n this._err(ERR.noncharacterCharacterReference);\n } else if (unicode.isControlCodePoint(this.charRefCode) || this.charRefCode === $.CARRIAGE_RETURN) {\n this._err(ERR.controlCharacterReference);\n\n const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS[this.charRefCode];\n\n if (replacement) {\n this.charRefCode = replacement;\n }\n }\n\n this.tempBuff = [this.charRefCode];\n\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n}\n\n//Token types\nTokenizer.CHARACTER_TOKEN = 'CHARACTER_TOKEN';\nTokenizer.NULL_CHARACTER_TOKEN = 'NULL_CHARACTER_TOKEN';\nTokenizer.WHITESPACE_CHARACTER_TOKEN = 'WHITESPACE_CHARACTER_TOKEN';\nTokenizer.START_TAG_TOKEN = 'START_TAG_TOKEN';\nTokenizer.END_TAG_TOKEN = 'END_TAG_TOKEN';\nTokenizer.COMMENT_TOKEN = 'COMMENT_TOKEN';\nTokenizer.DOCTYPE_TOKEN = 'DOCTYPE_TOKEN';\nTokenizer.EOF_TOKEN = 'EOF_TOKEN';\nTokenizer.HIBERNATION_TOKEN = 'HIBERNATION_TOKEN';\n\n//Tokenizer initial states for different modes\nTokenizer.MODE = {\n DATA: DATA_STATE,\n RCDATA: RCDATA_STATE,\n RAWTEXT: RAWTEXT_STATE,\n SCRIPT_DATA: SCRIPT_DATA_STATE,\n PLAINTEXT: PLAINTEXT_STATE\n};\n\n//Static\nTokenizer.getTokenAttr = function(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n\n return null;\n};\n\nmodule.exports = Tokenizer;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","'use strict'\n\nfunction normalizeIdentifier(value) {\n return (\n value // Collapse Markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n .replace(/^ | $/g, '') // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no object method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n\nmodule.exports = normalizeIdentifier\n","'use strict'\n\nfunction miniflat(value) {\n return value === null || value === undefined\n ? []\n : 'length' in value\n ? value\n : [value]\n}\n\nmodule.exports = miniflat\n","'use strict'\n\nvar chunkedSplice = require('./chunked-splice.js')\n\nfunction chunkedPush(list, items) {\n if (list.length) {\n chunkedSplice(list, list.length, 0, items)\n return list\n }\n\n return items\n}\n\nmodule.exports = chunkedPush\n","'use strict'\n\nvar unicodePunctuationRegex = require('../constant/unicode-punctuation-regex.js')\nvar regexCheck = require('../util/regex-check.js')\n\n// In fact adds to the bundle size.\n\nvar unicodePunctuation = regexCheck(unicodePunctuationRegex)\n\nmodule.exports = unicodePunctuation\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar unicodeWhitespace = regexCheck(/\\s/)\n\nmodule.exports = unicodeWhitespace\n","'use strict'\n\n// Note: EOF is seen as ASCII control here, because `null < 32 == true`.\nfunction asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code < 32 || code === 127\n )\n}\n\nmodule.exports = asciiControl\n","'use strict'\n\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar chunkedPush = require('../util/chunked-push.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar normalizeIdentifier = require('../util/normalize-identifier.js')\nvar resolveAll = require('../util/resolve-all.js')\nvar shallow = require('../util/shallow.js')\nvar factoryDestination = require('./factory-destination.js')\nvar factoryLabel = require('./factory-label.js')\nvar factoryTitle = require('./factory-title.js')\nvar factoryWhitespace = require('./factory-whitespace.js')\n\nvar labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\nvar resourceConstruct = {\n tokenize: tokenizeResource\n}\nvar fullReferenceConstruct = {\n tokenize: tokenizeFullReference\n}\nvar collapsedReferenceConstruct = {\n tokenize: tokenizeCollapsedReference\n}\n\nfunction resolveAllLabelEnd(events) {\n var index = -1\n var token\n\n while (++index < events.length) {\n token = events[index][1]\n\n if (\n !token._used &&\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\nfunction resolveToLabelEnd(events, context) {\n var index = events.length\n var offset = 0\n var group\n var label\n var text\n var token\n var open\n var close\n var 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’ve 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’t 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 group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: shallow(events[open][1].start),\n end: shallow(events[events.length - 1][1].end)\n }\n label = {\n type: 'label',\n start: shallow(events[open][1].start),\n end: shallow(events[close][1].end)\n }\n text = {\n type: 'labelText',\n start: shallow(events[open + offset + 2][1].end),\n end: shallow(events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ] // Opening marker.\n\n media = chunkedPush(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n media = chunkedPush(media, [['enter', text, context]]) // Between.\n\n media = chunkedPush(\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 = chunkedPush(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 = chunkedPush(media, events.slice(close + 1)) // Media close.\n\n media = chunkedPush(media, [['exit', group, context]])\n chunkedSplice(events, open, events.length, media)\n return events\n}\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n var self = this\n var index = self.events.length\n var labelStart\n var 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\n function start(code) {\n if (!labelStart) {\n return nok(code)\n } // It’s a balanced bracket, but contains a link.\n\n if (labelStart._inactive) return balanced(code)\n defined =\n self.parser.defined.indexOf(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n ) > -1\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\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\n function balanced(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\nfunction tokenizeResource(effects, ok, nok) {\n return start\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\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 3\n )(code)\n }\n\n function destinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, between)(code)\n : end(code)\n }\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\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\nfunction tokenizeFullReference(effects, ok, nok) {\n var self = this\n return start\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\n function afterLabel(code) {\n return self.parser.defined.indexOf(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n ) < 0\n ? nok(code)\n : ok(code)\n }\n}\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n return start\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\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\nmodule.exports = labelEnd\n","'use strict'\n\nmodule.exports = convert\n\nfunction convert(test) {\n if (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 'length' in test ? anyFactory(test) : allFactory(test)\n }\n\n if (typeof test === 'function') {\n return test\n }\n\n throw new Error('Expected function, string, or object as test')\n}\n\n// Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\nfunction allFactory(test) {\n return all\n\n function all(node) {\n var key\n\n for (key in test) {\n if (node[key] !== test[key]) return false\n }\n\n return true\n }\n}\n\nfunction anyFactory(tests) {\n var checks = []\n var index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return any\n\n function any() {\n var index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, arguments)) {\n return true\n }\n }\n\n return false\n }\n}\n\n// Utility to convert a string into a function which checks a given node’s type\n// for said string.\nfunction typeFactory(test) {\n return type\n\n function type(node) {\n return Boolean(node && node.type === test)\n }\n}\n\n// Utility to return true.\nfunction ok() {\n return true\n}\n","'use strict'\n\nvar start = factory('start')\nvar end = factory('end')\n\nmodule.exports = position\n\nposition.start = start\nposition.end = end\n\nfunction position(node) {\n return {start: start(node), end: end(node)}\n}\n\nfunction factory(type) {\n point.displayName = type\n\n return point\n\n function point(node) {\n var point = (node && node.position && node.position[type]) || {}\n\n return {\n line: point.line || null,\n column: point.column || null,\n offset: isNaN(point.offset) ? null : point.offset\n }\n }\n}\n","'use strict'\n\nmodule.exports = normalize\n\nfunction normalize(value) {\n return value.toLowerCase()\n}\n","'use strict'\n\nexports.parse = parse\nexports.stringify = stringify\n\nvar empty = ''\nvar space = ' '\nvar whiteSpace = /[ \\t\\n\\r\\f]+/g\n\nfunction parse(value) {\n var input = String(value || empty).trim()\n return input === empty ? [] : input.split(whiteSpace)\n}\n\nfunction stringify(values) {\n return values.join(space).trim()\n}\n","'use strict'\n\nexports.parse = parse\nexports.stringify = stringify\n\nvar comma = ','\nvar space = ' '\nvar empty = ''\n\n// Parse comma-separated tokens to an array.\nfunction parse(value) {\n var values = []\n var input = String(value || empty)\n var index = input.indexOf(comma)\n var lastIndex = 0\n var end = false\n var val\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n val = input.slice(lastIndex, index).trim()\n\n if (val || !end) {\n values.push(val)\n }\n\n lastIndex = index + 1\n index = input.indexOf(comma, lastIndex)\n }\n\n return values\n}\n\n// Compile an array to comma-separated tokens.\n// `options.padLeft` (default: `true`) pads a space left of each token, and\n// `options.padRight` (default: `false`) pads a space to the right of each token.\nfunction stringify(values, options) {\n var settings = options || {}\n var left = settings.padLeft === false ? empty : space\n var right = settings.padRight ? space : empty\n\n // Ensure the last empty entry is seen.\n if (values[values.length - 1] === empty) {\n values = values.concat(empty)\n }\n\n return values.join(right + comma + left).trim()\n}\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","'use strict';\n\nconst UNDEFINED_CODE_POINTS = [\n 0xfffe,\n 0xffff,\n 0x1fffe,\n 0x1ffff,\n 0x2fffe,\n 0x2ffff,\n 0x3fffe,\n 0x3ffff,\n 0x4fffe,\n 0x4ffff,\n 0x5fffe,\n 0x5ffff,\n 0x6fffe,\n 0x6ffff,\n 0x7fffe,\n 0x7ffff,\n 0x8fffe,\n 0x8ffff,\n 0x9fffe,\n 0x9ffff,\n 0xafffe,\n 0xaffff,\n 0xbfffe,\n 0xbffff,\n 0xcfffe,\n 0xcffff,\n 0xdfffe,\n 0xdffff,\n 0xefffe,\n 0xeffff,\n 0xffffe,\n 0xfffff,\n 0x10fffe,\n 0x10ffff\n];\n\nexports.REPLACEMENT_CHARACTER = '\\uFFFD';\n\nexports.CODE_POINTS = {\n EOF: -1,\n NULL: 0x00,\n TABULATION: 0x09,\n CARRIAGE_RETURN: 0x0d,\n LINE_FEED: 0x0a,\n FORM_FEED: 0x0c,\n SPACE: 0x20,\n EXCLAMATION_MARK: 0x21,\n QUOTATION_MARK: 0x22,\n NUMBER_SIGN: 0x23,\n AMPERSAND: 0x26,\n APOSTROPHE: 0x27,\n HYPHEN_MINUS: 0x2d,\n SOLIDUS: 0x2f,\n DIGIT_0: 0x30,\n DIGIT_9: 0x39,\n SEMICOLON: 0x3b,\n LESS_THAN_SIGN: 0x3c,\n EQUALS_SIGN: 0x3d,\n GREATER_THAN_SIGN: 0x3e,\n QUESTION_MARK: 0x3f,\n LATIN_CAPITAL_A: 0x41,\n LATIN_CAPITAL_F: 0x46,\n LATIN_CAPITAL_X: 0x58,\n LATIN_CAPITAL_Z: 0x5a,\n RIGHT_SQUARE_BRACKET: 0x5d,\n GRAVE_ACCENT: 0x60,\n LATIN_SMALL_A: 0x61,\n LATIN_SMALL_F: 0x66,\n LATIN_SMALL_X: 0x78,\n LATIN_SMALL_Z: 0x7a,\n REPLACEMENT_CHARACTER: 0xfffd\n};\n\nexports.CODE_POINT_SEQUENCES = {\n DASH_DASH_STRING: [0x2d, 0x2d], //--\n DOCTYPE_STRING: [0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45], //DOCTYPE\n CDATA_START_STRING: [0x5b, 0x43, 0x44, 0x41, 0x54, 0x41, 0x5b], //[CDATA[\n SCRIPT_STRING: [0x73, 0x63, 0x72, 0x69, 0x70, 0x74], //script\n PUBLIC_STRING: [0x50, 0x55, 0x42, 0x4c, 0x49, 0x43], //PUBLIC\n SYSTEM_STRING: [0x53, 0x59, 0x53, 0x54, 0x45, 0x4d] //SYSTEM\n};\n\n//Surrogates\nexports.isSurrogate = function(cp) {\n return cp >= 0xd800 && cp <= 0xdfff;\n};\n\nexports.isSurrogatePair = function(cp) {\n return cp >= 0xdc00 && cp <= 0xdfff;\n};\n\nexports.getSurrogatePairCodePoint = function(cp1, cp2) {\n return (cp1 - 0xd800) * 0x400 + 0x2400 + cp2;\n};\n\n//NOTE: excluding NULL and ASCII whitespace\nexports.isControlCodePoint = function(cp) {\n return (\n (cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f)\n );\n};\n\nexports.isUndefinedCodePoint = function(cp) {\n return (cp >= 0xfdd0 && cp <= 0xfdef) || UNDEFINED_CODE_POINTS.indexOf(cp) > -1;\n};\n","'use strict';\n\nmodule.exports = {\n controlCharacterInInputStream: 'control-character-in-input-stream',\n noncharacterInInputStream: 'noncharacter-in-input-stream',\n surrogateInInputStream: 'surrogate-in-input-stream',\n nonVoidHtmlElementStartTagWithTrailingSolidus: 'non-void-html-element-start-tag-with-trailing-solidus',\n endTagWithAttributes: 'end-tag-with-attributes',\n endTagWithTrailingSolidus: 'end-tag-with-trailing-solidus',\n unexpectedSolidusInTag: 'unexpected-solidus-in-tag',\n unexpectedNullCharacter: 'unexpected-null-character',\n unexpectedQuestionMarkInsteadOfTagName: 'unexpected-question-mark-instead-of-tag-name',\n invalidFirstCharacterOfTagName: 'invalid-first-character-of-tag-name',\n unexpectedEqualsSignBeforeAttributeName: 'unexpected-equals-sign-before-attribute-name',\n missingEndTagName: 'missing-end-tag-name',\n unexpectedCharacterInAttributeName: 'unexpected-character-in-attribute-name',\n unknownNamedCharacterReference: 'unknown-named-character-reference',\n missingSemicolonAfterCharacterReference: 'missing-semicolon-after-character-reference',\n unexpectedCharacterAfterDoctypeSystemIdentifier: 'unexpected-character-after-doctype-system-identifier',\n unexpectedCharacterInUnquotedAttributeValue: 'unexpected-character-in-unquoted-attribute-value',\n eofBeforeTagName: 'eof-before-tag-name',\n eofInTag: 'eof-in-tag',\n missingAttributeValue: 'missing-attribute-value',\n missingWhitespaceBetweenAttributes: 'missing-whitespace-between-attributes',\n missingWhitespaceAfterDoctypePublicKeyword: 'missing-whitespace-after-doctype-public-keyword',\n missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:\n 'missing-whitespace-between-doctype-public-and-system-identifiers',\n missingWhitespaceAfterDoctypeSystemKeyword: 'missing-whitespace-after-doctype-system-keyword',\n missingQuoteBeforeDoctypePublicIdentifier: 'missing-quote-before-doctype-public-identifier',\n missingQuoteBeforeDoctypeSystemIdentifier: 'missing-quote-before-doctype-system-identifier',\n missingDoctypePublicIdentifier: 'missing-doctype-public-identifier',\n missingDoctypeSystemIdentifier: 'missing-doctype-system-identifier',\n abruptDoctypePublicIdentifier: 'abrupt-doctype-public-identifier',\n abruptDoctypeSystemIdentifier: 'abrupt-doctype-system-identifier',\n cdataInHtmlContent: 'cdata-in-html-content',\n incorrectlyOpenedComment: 'incorrectly-opened-comment',\n eofInScriptHtmlCommentLikeText: 'eof-in-script-html-comment-like-text',\n eofInDoctype: 'eof-in-doctype',\n nestedComment: 'nested-comment',\n abruptClosingOfEmptyComment: 'abrupt-closing-of-empty-comment',\n eofInComment: 'eof-in-comment',\n incorrectlyClosedComment: 'incorrectly-closed-comment',\n eofInCdata: 'eof-in-cdata',\n absenceOfDigitsInNumericCharacterReference: 'absence-of-digits-in-numeric-character-reference',\n nullCharacterReference: 'null-character-reference',\n surrogateCharacterReference: 'surrogate-character-reference',\n characterReferenceOutsideUnicodeRange: 'character-reference-outside-unicode-range',\n controlCharacterReference: 'control-character-reference',\n noncharacterCharacterReference: 'noncharacter-character-reference',\n missingWhitespaceBeforeDoctypeName: 'missing-whitespace-before-doctype-name',\n missingDoctypeName: 'missing-doctype-name',\n invalidCharacterSequenceAfterDoctypeName: 'invalid-character-sequence-after-doctype-name',\n duplicateAttribute: 'duplicate-attribute',\n nonConformingDoctype: 'non-conforming-doctype',\n missingDoctype: 'missing-doctype',\n misplacedDoctype: 'misplaced-doctype',\n endTagWithoutMatchingOpenElement: 'end-tag-without-matching-open-element',\n closingOfElementWithOpenChildElements: 'closing-of-element-with-open-child-elements',\n disallowedContentInNoscriptInHead: 'disallowed-content-in-noscript-in-head',\n openElementsLeftAfterEof: 'open-elements-left-after-eof',\n abandonedHeadElementChild: 'abandoned-head-element-child',\n misplacedStartTagForHeadElement: 'misplaced-start-tag-for-head-element',\n nestedNoscriptInHead: 'nested-noscript-in-head',\n eofInElementThatCanContainOnlyText: 'eof-in-element-that-can-contain-only-text'\n};\n","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingMixinBase extends Mixin {\n constructor(host, opts) {\n super(host);\n\n this.posTracker = null;\n this.onParseError = opts.onParseError;\n }\n\n _setErrorLocation(err) {\n err.startLine = err.endLine = this.posTracker.line;\n err.startCol = err.endCol = this.posTracker.col;\n err.startOffset = err.endOffset = this.posTracker.offset;\n }\n\n _reportError(code) {\n const err = {\n code: code,\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1\n };\n\n this._setErrorLocation(err);\n this.onParseError(err);\n }\n\n _getOverriddenMethods(mxn) {\n return {\n _err(code) {\n mxn._reportError(code);\n }\n };\n }\n}\n\nmodule.exports = ErrorReportingMixinBase;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/*!\n * repeat-string <https://github.com/jonschlinkert/repeat-string>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n // cover common, quick use cases\n if (num === 1) return str;\n if (num === 2) return str + str;\n\n var max = str.length * num;\n if (cache !== str || typeof cache === 'undefined') {\n cache = str;\n res = '';\n } else if (res.length >= max) {\n return res.substr(0, max);\n }\n\n while (max > res.length && num > 1) {\n if (num & 1) {\n res += str;\n }\n\n num >>= 1;\n str += str;\n }\n\n res += str;\n res = res.substr(0, max);\n return res;\n}\n","'use strict'\n\nmodule.exports = require('./lib')\n","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = stringify\n\nfunction stringify(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if (own.call(value, 'position') || own.call(value, 'type')) {\n return position(value.position)\n }\n\n // Position.\n if (own.call(value, 'start') || own.call(value, 'end')) {\n return position(value)\n }\n\n // Point.\n if (own.call(value, 'line') || own.call(value, 'column')) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\nfunction point(point) {\n if (!point || typeof point !== 'object') {\n point = {}\n }\n\n return index(point.line) + ':' + index(point.column)\n}\n\nfunction position(pos) {\n if (!pos || typeof pos !== 'object') {\n pos = {}\n }\n\n return point(pos.start) + '-' + point(pos.end)\n}\n\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = own\n","'use strict'\n\n// Counts tabs based on their expanded size, and CR+LF as one character.\n\nfunction sizeChunks(chunks) {\n var index = -1\n var size = 0\n\n while (++index < chunks.length) {\n size += typeof chunks[index] === 'string' ? chunks[index].length : 1\n }\n\n return size\n}\n\nmodule.exports = sizeChunks\n","'use strict'\n\nvar assign = require('../constant/assign.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar shallow = require('./shallow.js')\n\nfunction subtokenize(events) {\n var jumps = {}\n var index = -1\n var event\n var lineIndex\n var otherIndex\n var otherEvent\n var parameters\n var subevents\n var 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 assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n } // Exit.\n else if (event[1]._container || event[1]._movePreviousLineEndings) {\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 = shallow(events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n chunkedSplice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n\n return !more\n}\n\nfunction subcontent(events, eventIndex) {\n var token = events[eventIndex][1]\n var context = events[eventIndex][2]\n var startPosition = eventIndex - 1\n var startPositions = []\n var tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n var childEvents = tokenizer.events\n var jumps = []\n var gaps = {}\n var stream\n var previous\n var index\n var entered\n var end\n var adjust // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n\n while (token) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== token) {\n // Empty.\n }\n\n startPositions.push(startPosition)\n\n if (!token._tokenizer) {\n stream = context.sliceStream(token)\n\n if (!token.next) {\n stream.push(null)\n }\n\n if (previous) {\n tokenizer.defineSkip(token.start)\n }\n\n if (token.isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n\n tokenizer.write(stream)\n\n if (token.isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n } // Unravel the next token.\n\n previous = token\n token = token.next\n } // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n\n token = previous\n index = childEvents.length\n\n while (index--) {\n // Make sure we’ve at least seen something (final eol is part of the last\n // token).\n if (childEvents[index][0] === 'enter') {\n entered = true\n } else if (\n // Find a void token that includes a break.\n entered &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n add(childEvents.slice(index + 1, end))\n // Help GC.\n token._tokenizer = token.next = undefined\n token = token.previous\n end = index + 1\n }\n }\n\n // Help GC.\n tokenizer.events = token._tokenizer = token.next = undefined // Do head:\n\n add(childEvents.slice(0, end))\n index = -1\n adjust = 0\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 function add(slice) {\n var start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n chunkedSplice(events, start, 2, slice)\n }\n}\n\nmodule.exports = subtokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar assign = require('../constant/assign.js')\nvar shallow = require('../util/shallow.js')\n\nvar text = initializeFactory('text')\nvar string = initializeFactory('string')\nvar resolver = {\n resolveAll: createResolver()\n}\n\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n\n function initializeText(effects) {\n var self = this\n var constructs = this.parser.constructs[field]\n var text = effects.attempt(constructs, start, notText)\n return start\n\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\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\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 function atBreak(code) {\n var list = constructs[code]\n var index = -1\n\n if (code === null) {\n return true\n }\n\n if (list) {\n while (++index < list.length) {\n if (\n !list[index].previous ||\n list[index].previous.call(self, self.previous)\n ) {\n return true\n }\n }\n }\n }\n }\n}\n\nfunction createResolver(extraResolver) {\n return resolveAllText\n\n function resolveAllText(events, context) {\n var index = -1\n var 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’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return extraResolver ? extraResolver(events, context) : events\n }\n} // A rather ugly set of instructions which again looks at chunks in the input\n// stream.\n// The reason to do this here is that it is *much* faster to parse in reverse.\n// And that we can’t hook into `null` to split the line suffix before an EOF.\n// To do: figure out if we can make this into a clean utility, or even in core.\n// As it will be useful for GFMs literal autolink extension (and maybe even\n// tables?)\n\nfunction resolveAllLineSuffixes(events, context) {\n var eventIndex = -1\n var chunks\n var data\n var chunk\n var index\n var bufferIndex\n var size\n var tabs\n var token\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 data = events[eventIndex - 1][1]\n chunks = context.sliceStream(data)\n index = chunks.length\n bufferIndex = -1\n size = 0\n tabs = undefined\n\n while (index--) {\n 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 else {\n // Replacement character, exit.\n index++\n break\n }\n }\n\n if (size) {\n 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: shallow(data.end)\n }\n data.end = shallow(token.start)\n\n if (data.start.offset === data.end.offset) {\n 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\nexports.resolver = resolver\nexports.string = string\nexports.text = text\n","'use strict'\n\nvar hasOwnProperty = require('../constant/has-own-property.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar miniflat = require('./miniflat.js')\n\nfunction combineExtensions(extensions) {\n var all = {}\n var index = -1\n\n while (++index < extensions.length) {\n extension(all, extensions[index])\n }\n\n return all\n}\n\nfunction extension(all, extension) {\n var hook\n var left\n var right\n var code\n\n for (hook in extension) {\n left = hasOwnProperty.call(all, hook) ? all[hook] : (all[hook] = {})\n right = extension[hook]\n\n for (code in right) {\n left[code] = constructs(\n miniflat(right[code]),\n hasOwnProperty.call(left, code) ? left[code] : []\n )\n }\n }\n}\n\nfunction constructs(list, existing) {\n var index = -1\n var before = []\n\n while (++index < list.length) {\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n chunkedSplice(existing, 0, 0, before)\n return existing\n}\n\nmodule.exports = combineExtensions\n","'use strict'\n\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar unicodePunctuation = require('../character/unicode-punctuation.js')\nvar unicodeWhitespace = require('../character/unicode-whitespace.js')\n\n// Classify whether a character is unicode whitespace, unicode punctuation, or\n// anything else.\n// Used for attention (emphasis, strong), whose sequences can open or close\n// based on the class of surrounding characters.\nfunction 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\nmodule.exports = classifyCharacter\n","'use strict'\n\n/* eslint-env browser */\n\nvar el\n\nvar semicolon = 59 // ';'\n\nmodule.exports = decodeEntity\n\nfunction decodeEntity(characters) {\n var entity = '&' + characters + ';'\n var char\n\n el = el || document.createElement('i')\n el.innerHTML = entity\n char = el.textContent\n\n // Some entities do not require the closing semicolon (`&not` - for instance),\n // which leads to situations where parsing the assumed entity of &notit; will\n // result in the string `¬it;`. When we encounter a trailing semicolon after\n // parsing and the entity to decode was not a semicolon (`&semi;`), we can\n // assume that the matching was incomplete\n if (char.charCodeAt(char.length - 1) === semicolon && characters !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the entity was not valid\n return char === entity ? false : char\n}\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiDigit = regexCheck(/\\d/)\n\nmodule.exports = asciiDigit\n","'use strict'\n\nvar asciiControl = require('../character/ascii-control.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\n// eslint-disable-next-line max-params\nfunction destinationFactory(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n var limit = max || Infinity\n var balance = 0\n return start\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 (asciiControl(code) || code === 41) {\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\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\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\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\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\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\nmodule.exports = destinationFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\n\n// eslint-disable-next-line max-params\nfunction labelFactory(effects, ok, nok, type, markerType, stringType) {\n var self = this\n var size = 0\n var data\n return start\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.enter(stringType)\n return atBreak\n }\n\n function atBreak(code) {\n if (\n code === null ||\n code === 91 ||\n (code === 93 && !data) ||\n /* c8 ignore next */\n (code === 94 &&\n /* c8 ignore next */\n !size &&\n /* c8 ignore next */\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\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\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\nmodule.exports = labelFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nfunction whitespaceFactory(effects, ok) {\n var seen\n return start\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\nmodule.exports = whitespaceFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\n\nfunction titleFactory(effects, ok, nok, type, markerType, stringType) {\n var marker\n return start\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\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\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’t 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\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\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\nmodule.exports = titleFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n var size = 0\n var marker\n return start\n\n function start(code) {\n effects.enter('thematicBreak')\n marker = code\n return atBreak(code)\n }\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\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\nmodule.exports = thematicBreak\n","'use strict'\n\nmodule.exports = visitParents\n\nvar convert = require('unist-util-is/convert')\nvar color = require('./color')\n\nvar CONTINUE = true\nvar SKIP = 'skip'\nvar EXIT = false\n\nvisitParents.CONTINUE = CONTINUE\nvisitParents.SKIP = SKIP\nvisitParents.EXIT = EXIT\n\nfunction visitParents(tree, test, visitor, reverse) {\n var step\n var is\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n is = convert(test)\n step = reverse ? -1 : 1\n\n factory(tree, null, [])()\n\n function factory(node, index, parents) {\n var value = typeof node === 'object' && node !== null ? node : {}\n var 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 visit.displayName =\n 'node (' + color(value.type + (name ? '<' + name + '>' : '')) + ')'\n }\n\n return visit\n\n function visit() {\n var grandparents = parents.concat(node)\n var result = []\n var subresult\n var offset\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 if (node.children && result[0] !== SKIP) {\n offset = (reverse ? node.children.length : -1) + step\n\n while (offset > -1 && offset < node.children.length) {\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\nfunction toResult(value) {\n if (value !== null && typeof value === 'object' && 'length' in value) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return [value]\n}\n","'use strict'\n\nmodule.exports = one\n\nvar u = require('unist-builder')\nvar all = require('./all')\n\nvar own = {}.hasOwnProperty\n\n// Transform an unknown node.\nfunction unknown(h, node) {\n if (text(node)) {\n return h.augment(node, u('text', node.value))\n }\n\n return h(node, 'div', all(h, node))\n}\n\n// Visit a node.\nfunction one(h, node, parent) {\n var type = node && node.type\n var fn\n\n // Fail on non-nodes.\n if (!type) {\n throw new Error('Expected node, got `' + node + '`')\n }\n\n if (own.call(h.handlers, type)) {\n fn = h.handlers[type]\n } else if (h.passThrough && h.passThrough.indexOf(type) > -1) {\n fn = returnNode\n } else {\n fn = h.unknownHandler\n }\n\n return (typeof fn === 'function' ? fn : unknown)(h, node, parent)\n}\n\n// Check if the node should be renderered as a text node.\nfunction text(node) {\n var data = node.data || {}\n\n if (\n own.call(data, 'hName') ||\n own.call(data, 'hProperties') ||\n own.call(data, 'hChildren')\n ) {\n return false\n }\n\n return 'value' in node\n}\n\nfunction returnNode(h, node) {\n var clone\n\n if (node.children) {\n clone = Object.assign({}, node)\n clone.children = all(h, node)\n return clone\n }\n\n return node\n}\n","'use strict'\n\nmodule.exports = thematicBreak\n\nfunction thematicBreak(h, node) {\n return h(node, 'hr')\n}\n","'use strict'\n\nmodule.exports = list\n\nvar wrap = require('../wrap')\nvar all = require('../all')\n\nfunction list(h, node) {\n var props = {}\n var name = node.ordered ? 'ol' : 'ul'\n var items\n var index = -1\n var length\n\n if (typeof node.start === 'number' && node.start !== 1) {\n props.start = node.start\n }\n\n items = all(h, node)\n length = items.length\n\n // Like GitHub, add a class for custom styling.\n while (++index < length) {\n if (\n items[index].properties.className &&\n items[index].properties.className.indexOf('task-list-item') !== -1\n ) {\n props.className = ['contains-task-list']\n break\n }\n }\n\n return h(node, name, props, wrap(items, true))\n}\n","'use strict'\n\nmodule.exports = footnoteReference\n\nvar u = require('unist-builder')\n\nfunction footnoteReference(h, node) {\n var footnoteOrder = h.footnoteOrder\n var identifier = String(node.identifier)\n\n if (footnoteOrder.indexOf(identifier) === -1) {\n footnoteOrder.push(identifier)\n }\n\n return h(node.position, 'sup', {id: 'fnref-' + identifier}, [\n h(node, 'a', {href: '#fn-' + identifier, className: ['footnote-ref']}, [\n u('text', node.label || identifier)\n ])\n ])\n}\n","'use strict'\n\nmodule.exports = revert\n\nvar u = require('unist-builder')\nvar all = require('./all')\n\n// Return the content of a reference without definition as Markdown.\nfunction revert(h, node) {\n var subtype = node.referenceType\n var suffix = ']'\n var contents\n var head\n var tail\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return u('text', '![' + node.alt + suffix)\n }\n\n contents = all(h, node)\n head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift(u('text', '['))\n }\n\n tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push(u('text', suffix))\n }\n\n return contents\n}\n","'use strict'\n\nvar xtend = require('xtend')\nvar Schema = require('./schema')\n\nmodule.exports = merge\n\nfunction merge(definitions) {\n var length = definitions.length\n var property = []\n var normal = []\n var index = -1\n var info\n var space\n\n while (++index < length) {\n info = definitions[index]\n property.push(info.property)\n normal.push(info.normal)\n space = info.space\n }\n\n return new Schema(\n xtend.apply(null, property),\n xtend.apply(null, normal),\n space\n )\n}\n","'use strict'\n\nmodule.exports = Schema\n\nvar proto = Schema.prototype\n\nproto.space = null\nproto.normal = {}\nproto.property = {}\n\nfunction Schema(property, normal, space) {\n this.property = property\n this.normal = normal\n\n if (space) {\n this.space = space\n }\n}\n","'use strict'\n\nvar create = require('./util/create')\n\nmodule.exports = create({\n space: 'xlink',\n transform: xlinkTransform,\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n\nfunction xlinkTransform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n}\n","'use strict'\n\nvar Info = require('./info')\nvar types = require('./types')\n\nmodule.exports = DefinedInfo\n\nDefinedInfo.prototype = new Info()\nDefinedInfo.prototype.defined = true\n\nvar checks = [\n 'boolean',\n 'booleanish',\n 'overloadedBoolean',\n 'number',\n 'commaSeparated',\n 'spaceSeparated',\n 'commaOrSpaceSeparated'\n]\nvar checksLength = checks.length\n\nfunction DefinedInfo(property, attribute, mask, space) {\n var index = -1\n var check\n\n mark(this, 'space', space)\n\n Info.call(this, property, attribute)\n\n while (++index < checksLength) {\n check = checks[index]\n mark(this, check, (mask & types[check]) === types[check])\n }\n}\n\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value\n }\n}\n","'use strict'\n\nmodule.exports = Info\n\nvar proto = Info.prototype\n\nproto.space = null\nproto.attribute = null\nproto.property = null\nproto.boolean = false\nproto.booleanish = false\nproto.overloadedBoolean = false\nproto.number = false\nproto.commaSeparated = false\nproto.spaceSeparated = false\nproto.commaOrSpaceSeparated = false\nproto.mustUseProperty = false\nproto.defined = false\n\nfunction Info(property, attribute) {\n this.property = property\n this.attribute = attribute\n}\n","'use strict'\n\nvar create = require('./util/create')\n\nmodule.exports = create({\n space: 'xml',\n transform: xmlTransform,\n properties: {\n xmlLang: null,\n xmlBase: null,\n xmlSpace: null\n }\n})\n\nfunction xmlTransform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n}\n","'use strict'\n\nvar create = require('./util/create')\nvar caseInsensitiveTransform = require('./util/case-insensitive-transform')\n\nmodule.exports = create({\n space: 'xmlns',\n attributes: {\n xmlnsxlink: 'xmlns:xlink'\n },\n transform: caseInsensitiveTransform,\n properties: {\n xmlns: null,\n xmlnsXLink: null\n }\n})\n","'use strict'\n\nvar caseSensitiveTransform = require('./case-sensitive-transform')\n\nmodule.exports = caseInsensitiveTransform\n\nfunction caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","'use strict'\n\nmodule.exports = caseSensitiveTransform\n\nfunction caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","'use strict'\n\nvar types = require('./util/types')\nvar create = require('./util/create')\n\nvar booleanish = types.booleanish\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\n\nmodule.exports = create({\n transform: ariaTransform,\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n\nfunction ariaTransform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n}\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var parse = require('inline-style-parser');\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param {String} style - The inline style.\n * @param {Function} [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n var output = null;\n if (!style || typeof style !== 'string') {\n return output;\n }\n\n var declaration;\n var declarations = parse(style);\n var hasIterator = typeof iterator === 'function';\n var property;\n var value;\n\n for (var i = 0, len = declarations.length; i < len; i++) {\n declaration = declarations[i];\n property = declaration.property;\n value = declaration.value;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n output || (output = {});\n output[property] = value;\n }\n }\n\n return output;\n}\n\nmodule.exports = StyleToObject;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\nconst Tokenizer = require('../../tokenizer');\nconst PositionTrackingPreprocessorMixin = require('../position-tracking/preprocessor-mixin');\n\nclass LocationInfoTokenizerMixin extends Mixin {\n constructor(tokenizer) {\n super(tokenizer);\n\n this.tokenizer = tokenizer;\n this.posTracker = Mixin.install(tokenizer.preprocessor, PositionTrackingPreprocessorMixin);\n this.currentAttrLocation = null;\n this.ctLoc = null;\n }\n\n _getCurrentLocation() {\n return {\n startLine: this.posTracker.line,\n startCol: this.posTracker.col,\n startOffset: this.posTracker.offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1\n };\n }\n\n _attachCurrentAttrLocationInfo() {\n this.currentAttrLocation.endLine = this.posTracker.line;\n this.currentAttrLocation.endCol = this.posTracker.col;\n this.currentAttrLocation.endOffset = this.posTracker.offset;\n\n const currentToken = this.tokenizer.currentToken;\n const currentAttr = this.tokenizer.currentAttr;\n\n if (!currentToken.location.attrs) {\n currentToken.location.attrs = Object.create(null);\n }\n\n currentToken.location.attrs[currentAttr.name] = this.currentAttrLocation;\n }\n\n _getOverriddenMethods(mxn, orig) {\n const methods = {\n _createStartTagToken() {\n orig._createStartTagToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createEndTagToken() {\n orig._createEndTagToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createCommentToken() {\n orig._createCommentToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createDoctypeToken(initialName) {\n orig._createDoctypeToken.call(this, initialName);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createCharacterToken(type, ch) {\n orig._createCharacterToken.call(this, type, ch);\n this.currentCharacterToken.location = mxn.ctLoc;\n },\n\n _createEOFToken() {\n orig._createEOFToken.call(this);\n this.currentToken.location = mxn._getCurrentLocation();\n },\n\n _createAttr(attrNameFirstCh) {\n orig._createAttr.call(this, attrNameFirstCh);\n mxn.currentAttrLocation = mxn._getCurrentLocation();\n },\n\n _leaveAttrName(toState) {\n orig._leaveAttrName.call(this, toState);\n mxn._attachCurrentAttrLocationInfo();\n },\n\n _leaveAttrValue(toState) {\n orig._leaveAttrValue.call(this, toState);\n mxn._attachCurrentAttrLocationInfo();\n },\n\n _emitCurrentToken() {\n const ctLoc = this.currentToken.location;\n\n //NOTE: if we have pending character token make it's end location equal to the\n //current token's start location.\n if (this.currentCharacterToken) {\n this.currentCharacterToken.location.endLine = ctLoc.startLine;\n this.currentCharacterToken.location.endCol = ctLoc.startCol;\n this.currentCharacterToken.location.endOffset = ctLoc.startOffset;\n }\n\n if (this.currentToken.type === Tokenizer.EOF_TOKEN) {\n ctLoc.endLine = ctLoc.startLine;\n ctLoc.endCol = ctLoc.startCol;\n ctLoc.endOffset = ctLoc.startOffset;\n } else {\n ctLoc.endLine = mxn.posTracker.line;\n ctLoc.endCol = mxn.posTracker.col + 1;\n ctLoc.endOffset = mxn.posTracker.offset + 1;\n }\n\n orig._emitCurrentToken.call(this);\n },\n\n _emitCurrentCharacterToken() {\n const ctLoc = this.currentCharacterToken && this.currentCharacterToken.location;\n\n //NOTE: if we have character token and it's location wasn't set in the _emitCurrentToken(),\n //then set it's location at the current preprocessor position.\n //We don't need to increment preprocessor position, since character token\n //emission is always forced by the start of the next character token here.\n //So, we already have advanced position.\n if (ctLoc && ctLoc.endOffset === -1) {\n ctLoc.endLine = mxn.posTracker.line;\n ctLoc.endCol = mxn.posTracker.col;\n ctLoc.endOffset = mxn.posTracker.offset;\n }\n\n orig._emitCurrentCharacterToken.call(this);\n }\n };\n\n //NOTE: patch initial states for each mode to obtain token start position\n Object.keys(Tokenizer.MODE).forEach(modeName => {\n const state = Tokenizer.MODE[modeName];\n\n methods[state] = function(cp) {\n mxn.ctLoc = mxn._getCurrentLocation();\n orig[state].call(this, cp);\n };\n });\n\n return methods;\n }\n}\n\nmodule.exports = LocationInfoTokenizerMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass PositionTrackingPreprocessorMixin extends Mixin {\n constructor(preprocessor) {\n super(preprocessor);\n\n this.preprocessor = preprocessor;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n\n this.offset = 0;\n this.col = 0;\n this.line = 1;\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n advance() {\n const pos = this.pos + 1;\n const ch = this.html[pos];\n\n //NOTE: LF should be in the last column of the line\n if (mxn.isEol) {\n mxn.isEol = false;\n mxn.line++;\n mxn.lineStartPos = pos;\n }\n\n if (ch === '\\n' || (ch === '\\r' && this.html[pos + 1] !== '\\n')) {\n mxn.isEol = true;\n }\n\n mxn.col = pos - mxn.lineStartPos + 1;\n mxn.offset = mxn.droppedBufferSize + pos;\n\n return orig.advance.call(this);\n },\n\n retreat() {\n orig.retreat.call(this);\n\n mxn.isEol = false;\n mxn.col = this.pos - mxn.lineStartPos + 1;\n },\n\n dropParsedChunk() {\n const prevPos = this.pos;\n\n orig.dropParsedChunk.call(this);\n\n const reduction = prevPos - this.pos;\n\n mxn.lineStartPos -= reduction;\n mxn.droppedBufferSize += reduction;\n mxn.offset = mxn.droppedBufferSize + this.pos;\n }\n };\n }\n}\n\nmodule.exports = PositionTrackingPreprocessorMixin;\n","'use strict'\n\nvar find = require('property-information/find')\nvar normalize = require('property-information/normalize')\nvar parseSelector = require('hast-util-parse-selector')\nvar spaces = require('space-separated-tokens').parse\nvar commas = require('comma-separated-tokens').parse\n\nmodule.exports = factory\n\nvar own = {}.hasOwnProperty\n\nfunction factory(schema, defaultTagName, caseSensitive) {\n var adjust = caseSensitive ? createAdjustMap(caseSensitive) : null\n\n return h\n\n // Hyperscript compatible DSL for creating virtual hast trees.\n function h(selector, properties) {\n var node = parseSelector(selector, defaultTagName)\n var children = Array.prototype.slice.call(arguments, 2)\n var name = node.tagName.toLowerCase()\n var property\n\n node.tagName = adjust && own.call(adjust, name) ? adjust[name] : name\n\n if (properties && isChildren(properties, node)) {\n children.unshift(properties)\n properties = null\n }\n\n if (properties) {\n for (property in properties) {\n addProperty(node.properties, property, properties[property])\n }\n }\n\n addChild(node.children, children)\n\n if (node.tagName === 'template') {\n node.content = {type: 'root', children: node.children}\n node.children = []\n }\n\n return node\n }\n\n function addProperty(properties, key, value) {\n var info\n var property\n var result\n\n // Ignore nullish and NaN values.\n if (value === null || value === undefined || value !== value) {\n return\n }\n\n info = find(schema, key)\n property = info.property\n result = value\n\n // Handle list values.\n if (typeof result === 'string') {\n if (info.spaceSeparated) {\n result = spaces(result)\n } else if (info.commaSeparated) {\n result = commas(result)\n } else if (info.commaOrSpaceSeparated) {\n result = spaces(commas(result).join(' '))\n }\n }\n\n // Accept `object` on style.\n if (property === 'style' && typeof value !== 'string') {\n result = style(result)\n }\n\n // Class-names (which can be added both on the `selector` and here).\n if (property === 'className' && properties.className) {\n result = properties.className.concat(result)\n }\n\n properties[property] = parsePrimitives(info, property, result)\n }\n}\n\nfunction isChildren(value, node) {\n return (\n typeof value === 'string' ||\n 'length' in value ||\n isNode(node.tagName, value)\n )\n}\n\nfunction isNode(tagName, value) {\n var type = value.type\n\n if (tagName === 'input' || !type || typeof type !== 'string') {\n return false\n }\n\n if (typeof value.children === 'object' && 'length' in value.children) {\n return true\n }\n\n type = type.toLowerCase()\n\n if (tagName === 'button') {\n return (\n type !== 'menu' &&\n type !== 'submit' &&\n type !== 'reset' &&\n type !== 'button'\n )\n }\n\n return 'value' in value\n}\n\nfunction addChild(nodes, value) {\n var index\n var length\n\n if (typeof value === 'string' || typeof value === 'number') {\n nodes.push({type: 'text', value: String(value)})\n return\n }\n\n if (typeof value === 'object' && 'length' in value) {\n index = -1\n length = value.length\n\n while (++index < length) {\n addChild(nodes, value[index])\n }\n\n return\n }\n\n if (typeof value !== 'object' || !('type' in value)) {\n throw new Error('Expected node, nodes, or string, got `' + value + '`')\n }\n\n nodes.push(value)\n}\n\n// Parse a (list of) primitives.\nfunction parsePrimitives(info, name, value) {\n var index\n var length\n var result\n\n if (typeof value !== 'object' || !('length' in value)) {\n return parsePrimitive(info, name, value)\n }\n\n length = value.length\n index = -1\n result = []\n\n while (++index < length) {\n result[index] = parsePrimitive(info, name, value[index])\n }\n\n return result\n}\n\n// Parse a single primitives.\nfunction parsePrimitive(info, name, value) {\n var result = value\n\n if (info.number || info.positiveNumber) {\n if (!isNaN(result) && result !== '') {\n result = Number(result)\n }\n } else if (info.boolean || info.overloadedBoolean) {\n // Accept `boolean` and `string`.\n if (\n typeof result === 'string' &&\n (result === '' || normalize(value) === normalize(name))\n ) {\n result = true\n }\n }\n\n return result\n}\n\nfunction style(value) {\n var result = []\n var key\n\n for (key in value) {\n result.push([key, value[key]].join(': '))\n }\n\n return result.join('; ')\n}\n\nfunction createAdjustMap(values) {\n var length = values.length\n var index = -1\n var result = {}\n var value\n\n while (++index < length) {\n value = values[index]\n result[value.toLowerCase()] = value\n }\n\n return result\n}\n","'use strict'\n\nmodule.exports = factory\n\nvar noop = Function.prototype\nvar own = {}.hasOwnProperty\n\n// Handle values based on a property.\nfunction factory(key, options) {\n var settings = options || {}\n\n function one(value) {\n var fn = one.invalid\n var handlers = one.handlers\n\n if (value && own.call(value, key)) {\n fn = own.call(handlers, value[key]) ? handlers[value[key]] : one.unknown\n }\n\n return (fn || noop).apply(this, arguments)\n }\n\n one.handlers = settings.handlers || {}\n one.invalid = settings.invalid\n one.unknown = settings.unknown\n\n return one\n}\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","module.exports = phrasing\n\nfunction phrasing(parent, context, safeOptions) {\n var children = parent.children || []\n var results = []\n var index = -1\n var before = safeOptions.before\n var after\n var handle\n var child\n\n while (++index < children.length) {\n child = children[index]\n\n if (index + 1 < children.length) {\n 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 }).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’d serialize that, in most cases that would be seen as html\n // (flow).\n // As we can’t 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\n results.push(\n context.handle(child, parent, context, {\n before: before,\n after: after\n })\n )\n\n before = results[results.length - 1].slice(-1)\n }\n\n return results.join('')\n}\n","import {\n chakra,\n PropsOf,\n SystemProps,\n forwardRef,\n HTMLChakraProps,\n} from \"@chakra-ui/system\"\nimport { omit, __DEV__ } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\nimport { useImage, UseImageProps } from \"./use-image\"\n\ninterface NativeImageOptions {\n /**\n * The native HTML `width` attribute to the passed to the `img`\n */\n htmlWidth?: string | number\n /**\n * The native HTML `height` attribute to the passed to the `img`\n */\n htmlHeight?: string | number\n}\n\ninterface NativeImageProps extends PropsOf<\"img\">, NativeImageOptions {}\n\nconst NativeImage = React.forwardRef(\n (props: NativeImageProps, ref: React.Ref<any>) => {\n const { htmlWidth, htmlHeight, alt, ...rest } = props\n return (\n <img\n width={htmlWidth}\n height={htmlHeight}\n ref={ref}\n alt={alt}\n {...rest}\n />\n )\n },\n)\n\ninterface ImageOptions extends NativeImageOptions {\n /**\n * Fallback image `src` to show if image is loading or image fails.\n *\n * Note 🚨: We recommend you use a local image\n */\n fallbackSrc?: string\n /**\n * Fallback element to show if image is loading or image fails.\n * @type React.ReactElement\n */\n fallback?: React.ReactElement\n /**\n * Defines loading strategy\n */\n loading?: \"eager\" | \"lazy\"\n /**\n * How the image to fit within its bounds.\n * It maps to css `object-fit` property.\n * @type SystemProps[\"objectFit\"]\n */\n fit?: SystemProps[\"objectFit\"]\n /**\n * How to align the image within its bounds.\n * It maps to css `object-position` property.\n * @type SystemProps[\"objectPosition\"]\n */\n align?: SystemProps[\"objectPosition\"]\n /**\n * If `true`, opt out of the `fallbackSrc` logic and use as `img`\n */\n ignoreFallback?: boolean\n}\n\nexport interface ImageProps\n extends UseImageProps,\n Omit<HTMLChakraProps<\"img\">, keyof UseImageProps>,\n ImageOptions {}\n\n/**\n * React component that renders an image with support\n * for fallbacks\n *\n * @see Docs https://chakra-ui.com/image\n */\nexport const Image = forwardRef<ImageProps, \"img\">((props, ref) => {\n const {\n fallbackSrc,\n fallback,\n src,\n align,\n fit,\n loading,\n ignoreFallback,\n crossOrigin,\n ...rest\n } = props\n\n /**\n * Defer to native `img` tag if `loading` prop is passed\n * @see https://github.com/chakra-ui/chakra-ui/issues/1027\n */\n const shouldIgnore = loading != null || ignoreFallback\n\n const status = useImage({\n ...props,\n ignoreFallback: shouldIgnore,\n })\n\n const shared = {\n ref,\n objectFit: fit,\n objectPosition: align,\n ...(shouldIgnore ? rest : omit(rest, [\"onError\", \"onLoad\"])),\n }\n\n if (status !== \"loaded\") {\n /**\n * If user passed a custom fallback component,\n * let's render it here.\n */\n if (fallback) return fallback\n\n return (\n <chakra.img\n as={NativeImage}\n className=\"chakra-image__placeholder\"\n src={fallbackSrc}\n {...shared}\n />\n )\n }\n\n return (\n <chakra.img\n as={NativeImage}\n src={src}\n crossOrigin={crossOrigin}\n loading={loading}\n className=\"chakra-image\"\n {...shared}\n />\n )\n})\n\nexport interface ImgProps extends HTMLChakraProps<\"img\">, NativeImageOptions {}\n\n/**\n * Fallback component for most SSR users who want to use the native `img` with\n * support for chakra props\n */\nexport const Img = forwardRef<ImgProps, \"img\">((props, ref) => (\n <chakra.img ref={ref} as={NativeImage} className=\"chakra-image\" {...props} />\n))\n\nif (__DEV__) {\n Image.displayName = \"Image\"\n}\n","import { useSafeLayoutEffect } from \"@chakra-ui/hooks\"\nimport {\n ImgHTMLAttributes,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\"\n\nexport interface UseImageProps {\n /**\n * The image `src` attribute\n */\n src?: string\n /**\n * The image `srcset` attribute\n */\n srcSet?: string\n /**\n * The image `sizes` attribute\n */\n sizes?: string\n /**\n * A callback for when the image `src` has been loaded\n */\n onLoad?(event: React.SyntheticEvent<HTMLImageElement, Event>): void\n /**\n * A callback for when there was an error loading the image `src`\n */\n onError?(error: string | React.SyntheticEvent<HTMLImageElement, Event>): void\n /**\n * If `true`, opt out of the `fallbackSrc` logic and use as `img`\n */\n ignoreFallback?: boolean\n /**\n * The key used to set the crossOrigin on the HTMLImageElement into which the image will be loaded.\n * This tells the browser to request cross-origin access when trying to download the image data.\n */\n crossOrigin?: ImgHTMLAttributes<any>[\"crossOrigin\"]\n}\n\ntype Status = \"loading\" | \"failed\" | \"pending\" | \"loaded\"\n\ntype ImageEvent = React.SyntheticEvent<HTMLImageElement, Event>\n\n/**\n * React hook that loads an image in the browser,\n * and let's us know the `status` so we can show image\n * fallback if it is still `pending`\n *\n * @returns the status of the image loading progress\n *\n * @example\n *\n * ```jsx\n * function App(){\n * const status = useImage({ src: \"image.png\" })\n * return status === \"loaded\" ? <img src=\"image.png\" /> : <Placeholder />\n * }\n * ```\n */\nexport function useImage(props: UseImageProps) {\n const {\n src,\n srcSet,\n onLoad,\n onError,\n crossOrigin,\n sizes,\n ignoreFallback,\n } = props\n\n const [status, setStatus] = useState<Status>(\"pending\")\n\n useEffect(() => {\n setStatus(src ? \"loading\" : \"pending\")\n }, [src])\n\n const imageRef = useRef<HTMLImageElement | null>()\n\n const load = useCallback(() => {\n if (!src) return\n\n flush()\n\n const img = new Image()\n\n img.src = src\n\n if (crossOrigin) {\n img.crossOrigin = crossOrigin\n }\n\n if (srcSet) {\n img.srcset = srcSet\n }\n\n if (sizes) {\n img.sizes = sizes\n }\n\n img.onload = (event) => {\n flush()\n setStatus(\"loaded\")\n onLoad?.((event as unknown) as ImageEvent)\n }\n img.onerror = (error) => {\n flush()\n setStatus(\"failed\")\n onError?.(error as any)\n }\n\n imageRef.current = img\n }, [src, crossOrigin, srcSet, sizes, onLoad, onError])\n\n const flush = () => {\n if (imageRef.current) {\n imageRef.current.onload = null\n imageRef.current.onerror = null\n imageRef.current = null\n }\n }\n\n useSafeLayoutEffect(() => {\n /**\n * If user opts out of the fallback/placeholder\n * logic, let's bail out.\n */\n if (ignoreFallback) return undefined\n\n if (status === \"loading\") {\n load()\n }\n return () => {\n flush()\n }\n }, [status, load, ignoreFallback])\n\n /**\n * If user opts out of the fallback/placeholder\n * logic, let's just return 'loaded'\n */\n return ignoreFallback ? \"loaded\" : status\n}\n\nexport type UseImageReturn = ReturnType<typeof useImage>\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict'\n\nconst React = require('react')\nconst vfile = require('vfile')\nconst unified = require('unified')\nconst parse = require('remark-parse')\nconst remarkRehype = require('remark-rehype')\nconst PropTypes = require('prop-types')\nconst html = require('property-information/html')\nconst filter = require('./rehype-filter.js')\nconst uriTransformer = require('./uri-transformer.js')\nconst childrenToReact = require('./ast-to-react.js').hastChildrenToReact\n\n/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('react').ReactElement<{}>} ReactElement\n * @typedef {import('unified').PluggableList} PluggableList\n * @typedef {import('hast').Root} Root\n * @typedef {import('./rehype-filter.js').RehypeFilterOptions} FilterOptions\n * @typedef {import('./ast-to-react.js').TransformOptions} TransformOptions\n *\n * @typedef CoreOptions\n * @property {string} children\n *\n * @typedef PluginOptions\n * @property {PluggableList} [plugins=[]] **deprecated**: use `remarkPlugins` instead\n * @property {PluggableList} [remarkPlugins=[]]\n * @property {PluggableList} [rehypePlugins=[]]\n *\n * @typedef LayoutOptions\n * @property {string} [className]\n *\n * @typedef {CoreOptions & PluginOptions & LayoutOptions & FilterOptions & TransformOptions} ReactMarkdownOptions\n */\n\nmodule.exports = ReactMarkdown\n\nconst own = {}.hasOwnProperty\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/**\n * @typedef Deprecation\n * @property {string} id\n * @property {string} [to]\n */\n\n/**\n * @type {Object.<string, Deprecation>}\n */\nconst deprecated = {\n renderers: {to: 'components', id: 'change-renderers-to-components'},\n astPlugins: {id: 'remove-buggy-html-in-markdown-parser'},\n allowDangerousHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n escapeHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n source: {to: 'children', id: 'change-source-to-children'},\n allowNode: {\n to: 'allowElement',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n allowedTypes: {\n to: 'allowedElements',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n disallowedTypes: {\n to: 'disallowedElements',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n includeNodeIndex: {\n to: 'includeElementIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n }\n}\n\n/**\n * @param {ReactMarkdownOptions} options\n * @returns {ReactElement}\n */\nfunction ReactMarkdown(options) {\n for (const key in deprecated) {\n if (own.call(deprecated, key) && own.call(options, key)) {\n /** @type {Deprecation} */\n const deprecation = deprecated[key]\n console.warn(\n `[react-markdown] Warning: please ${\n deprecation.to ? `use \\`${deprecation.to}\\` instead of` : 'remove'\n } \\`${key}\\` (see <${changelog}#${deprecation.id}> for more info)`\n )\n delete deprecated[key]\n }\n }\n\n const processor = unified()\n .use(parse)\n // TODO: deprecate `plugins` in v7.0.0.\n .use(options.remarkPlugins || options.plugins || [])\n .use(remarkRehype, {allowDangerousHtml: true})\n .use(options.rehypePlugins || [])\n .use(filter, options)\n\n /** @type {vfile} */\n let file\n\n if (typeof options.children === 'string') {\n file = vfile(options.children)\n } else {\n if (options.children !== undefined && options.children !== null) {\n console.warn(\n `[react-markdown] Warning: please pass a string as \\`children\\` (not: \\`${options.children}\\`)`\n )\n }\n\n file = vfile()\n }\n\n /** @type {Root} */\n // @ts-expect-error we’ll throw if it isn’t a root next.\n const hastNode = processor.runSync(processor.parse(file), file)\n\n if (hastNode.type !== 'root') {\n throw new TypeError('Expected a `root` node')\n }\n\n /** @type {ReactElement} */\n let result = React.createElement(\n React.Fragment,\n {},\n childrenToReact({options: options, schema: html, listDepth: 0}, hastNode)\n )\n\n if (options.className) {\n result = React.createElement('div', {className: options.className}, result)\n }\n\n return result\n}\n\nReactMarkdown.defaultProps = {transformLinkUri: uriTransformer}\n\nReactMarkdown.propTypes = {\n // Core options:\n children: PropTypes.string,\n // Layout options:\n className: PropTypes.string,\n // Filter options:\n allowElement: PropTypes.func,\n allowedElements: PropTypes.arrayOf(PropTypes.string),\n disallowedElements: PropTypes.arrayOf(PropTypes.string),\n unwrapDisallowed: PropTypes.bool,\n // Plugin options:\n // type-coverage:ignore-next-line\n remarkPlugins: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.object, PropTypes.func]))\n ])\n ),\n // type-coverage:ignore-next-line\n rehypePlugins: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.object, PropTypes.func]))\n ])\n ),\n // Transform options:\n sourcePos: PropTypes.bool,\n rawSourcePos: PropTypes.bool,\n skipHtml: PropTypes.bool,\n includeElementIndex: PropTypes.bool,\n transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n transformImageUri: PropTypes.func,\n components: PropTypes.object\n}\n\nReactMarkdown.uriTransformer = uriTransformer\n","'use strict'\n\nvar VMessage = require('vfile-message')\nvar VFile = require('./core.js')\n\nmodule.exports = VFile\n\nVFile.prototype.message = message\nVFile.prototype.info = info\nVFile.prototype.fail = fail\n\n// Create a message with `reason` at `position`.\n// When an error is passed in as `reason`, copies the stack.\nfunction message(reason, position, origin) {\n var message = new VMessage(reason, position, 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// Fail: creates a vmessage, associates it with the file, and throws it.\nfunction fail() {\n var message = this.message.apply(this, arguments)\n\n message.fatal = true\n\n throw message\n}\n\n// Info: creates a vmessage, associates it with the file, and marks the fatality\n// as null.\nfunction info() {\n var message = this.message.apply(this, arguments)\n\n message.fatal = null\n\n return message\n}\n","'use strict'\n\nvar stringify = require('unist-util-stringify-position')\n\nmodule.exports = VMessage\n\n// Inherit from `Error#`.\nfunction VMessagePrototype() {}\nVMessagePrototype.prototype = Error.prototype\nVMessage.prototype = new VMessagePrototype()\n\n// Message properties.\nvar proto = VMessage.prototype\n\nproto.file = ''\nproto.name = ''\nproto.reason = ''\nproto.message = ''\nproto.stack = ''\nproto.fatal = null\nproto.column = null\nproto.line = null\n\n// Construct a new VMessage.\n//\n// Note: We cannot invoke `Error` on the created context, as that adds readonly\n// `line` and `column` attributes on Safari 9, thus throwing and failing the\n// data.\nfunction VMessage(reason, position, origin) {\n var parts\n var range\n var location\n\n if (typeof position === 'string') {\n origin = position\n position = null\n }\n\n parts = parseOrigin(origin)\n range = stringify(position) || '1:1'\n\n location = {\n start: {line: null, column: null},\n end: {line: null, column: null}\n }\n\n // Node.\n if (position && position.position) {\n position = position.position\n }\n\n if (position) {\n // Position.\n if (position.start) {\n location = position\n position = position.start\n } else {\n // Point.\n location.start = position\n }\n }\n\n if (reason.stack) {\n this.stack = reason.stack\n reason = reason.message\n }\n\n this.message = reason\n this.name = range\n this.reason = reason\n this.line = position ? position.line : null\n this.column = position ? position.column : null\n this.location = location\n this.source = parts[0]\n this.ruleId = parts[1]\n}\n\nfunction parseOrigin(origin) {\n var result = [null, null]\n var index\n\n if (typeof origin === 'string') {\n index = origin.indexOf(':')\n\n if (index === -1) {\n result[1] = origin\n } else {\n result[0] = origin.slice(0, index)\n result[1] = origin.slice(index + 1)\n }\n }\n\n return result\n}\n","'use strict'\n\nvar p = require('./minpath')\nvar proc = require('./minproc')\nvar buffer = require('is-buffer')\n\nmodule.exports = VFile\n\nvar own = {}.hasOwnProperty\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.\nvar order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nVFile.prototype.toString = toString\n\n// Access full path (`~/index.min.js`).\nObject.defineProperty(VFile.prototype, 'path', {get: getPath, set: setPath})\n\n// Access parent path (`~`).\nObject.defineProperty(VFile.prototype, 'dirname', {\n get: getDirname,\n set: setDirname\n})\n\n// Access basename (`index.min.js`).\nObject.defineProperty(VFile.prototype, 'basename', {\n get: getBasename,\n set: setBasename\n})\n\n// Access extname (`.js`).\nObject.defineProperty(VFile.prototype, 'extname', {\n get: getExtname,\n set: setExtname\n})\n\n// Access stem (`index.min`).\nObject.defineProperty(VFile.prototype, 'stem', {get: getStem, set: setStem})\n\n// Construct a new file.\nfunction VFile(options) {\n var prop\n var index\n\n if (!options) {\n options = {}\n } else if (typeof options === 'string' || buffer(options)) {\n options = {contents: options}\n } else if ('message' in options && 'messages' in options) {\n return options\n }\n\n if (!(this instanceof VFile)) {\n return new VFile(options)\n }\n\n this.data = {}\n this.messages = []\n this.history = []\n this.cwd = proc.cwd()\n\n // Set path related properties in the correct order.\n index = -1\n\n while (++index < order.length) {\n prop = order[index]\n\n if (own.call(options, prop)) {\n this[prop] = options[prop]\n }\n }\n\n // Set non-path related properties.\n for (prop in options) {\n if (order.indexOf(prop) < 0) {\n this[prop] = options[prop]\n }\n }\n}\n\nfunction getPath() {\n return this.history[this.history.length - 1]\n}\n\nfunction setPath(path) {\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n}\n\nfunction getDirname() {\n return typeof this.path === 'string' ? p.dirname(this.path) : undefined\n}\n\nfunction setDirname(dirname) {\n assertPath(this.path, 'dirname')\n this.path = p.join(dirname || '', this.basename)\n}\n\nfunction getBasename() {\n return typeof this.path === 'string' ? p.basename(this.path) : undefined\n}\n\nfunction setBasename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = p.join(this.dirname || '', basename)\n}\n\nfunction getExtname() {\n return typeof this.path === 'string' ? p.extname(this.path) : undefined\n}\n\nfunction setExtname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.path, 'extname')\n\n if (extname) {\n if (extname.charCodeAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.indexOf('.', 1) > -1) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = p.join(this.dirname, this.stem + (extname || ''))\n}\n\nfunction getStem() {\n return typeof this.path === 'string'\n ? p.basename(this.path, this.extname)\n : undefined\n}\n\nfunction setStem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = p.join(this.dirname || '', stem + (this.extname || ''))\n}\n\n// Get the value of the file.\nfunction toString(encoding) {\n return (this.contents || '').toString(encoding)\n}\n\n// Assert that `part` is not a path (i.e., does not contain `p.sep`).\nfunction assertPart(part, name) {\n if (part && part.indexOf(p.sep) > -1) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + p.sep + '`'\n )\n }\n}\n\n// Assert that `part` is not empty.\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n// Assert `path` exists.\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n","'use strict'\n\n// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexports.basename = basename\nexports.dirname = dirname\nexports.extname = extname\nexports.join = join\nexports.sep = '/'\n\nfunction basename(path, ext) {\n var start = 0\n var end = -1\n var index\n var firstNonSlashEnd\n var seenNonSlash\n var extIndex\n\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n index = path.length\n\n if (ext === undefined || !ext.length || ext.length > path.length) {\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n firstNonSlashEnd = -1\n extIndex = ext.length - 1\n\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.charCodeAt(index) === ext.charCodeAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\nfunction dirname(path) {\n var end\n var unmatchedSlash\n var index\n\n assertPath(path)\n\n if (!path.length) {\n return '.'\n }\n\n end = -1\n index = path.length\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.charCodeAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.charCodeAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\nfunction extname(path) {\n var startDot = -1\n var startPart = 0\n var end = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n var preDotState = 0\n var unmatchedSlash\n var code\n var index\n\n assertPath(path)\n\n index = path.length\n\n while (index--) {\n code = path.charCodeAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\nfunction join() {\n var index = -1\n var joined\n\n while (++index < arguments.length) {\n assertPath(arguments[index])\n\n if (arguments[index]) {\n joined =\n joined === undefined\n ? arguments[index]\n : joined + '/' + arguments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n var absolute\n var value\n\n assertPath(path)\n\n absolute = path.charCodeAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n value = normalizeString(path, !absolute)\n\n if (!value.length && !absolute) {\n value = '.'\n }\n\n if (value.length && path.charCodeAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n// Resolve `.` and `..` elements in a path with directory names.\nfunction normalizeString(path, allowAboveRoot) {\n var result = ''\n var lastSegmentLength = 0\n var lastSlash = -1\n var dots = 0\n var index = -1\n var code\n var lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.charCodeAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.charCodeAt(result.length - 1) !== 46 /* `.` */ ||\n result.charCodeAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n /* istanbul ignore else - No clue how to cover it. */\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n","'use strict'\n\n// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexports.cwd = cwd\n\nfunction cwd() {\n return '/'\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 bail = require('bail')\nvar buffer = require('is-buffer')\nvar extend = require('extend')\nvar plain = require('is-plain-obj')\nvar trough = require('trough')\nvar vfile = require('vfile')\n\n// Expose a frozen processor.\nmodule.exports = unified().freeze()\n\nvar slice = [].slice\nvar own = {}.hasOwnProperty\n\n// Process pipeline.\nvar pipeline = trough()\n .use(pipelineParse)\n .use(pipelineRun)\n .use(pipelineStringify)\n\nfunction pipelineParse(p, ctx) {\n ctx.tree = p.parse(ctx.file)\n}\n\nfunction pipelineRun(p, ctx, next) {\n p.run(ctx.tree, ctx.file, done)\n\n function done(error, tree, file) {\n if (error) {\n next(error)\n } else {\n ctx.tree = tree\n ctx.file = file\n next()\n }\n }\n}\n\nfunction pipelineStringify(p, ctx) {\n var result = p.stringify(ctx.tree, ctx.file)\n\n if (result === undefined || result === null) {\n // Empty.\n } else if (typeof result === 'string' || buffer(result)) {\n if ('value' in ctx.file) {\n ctx.file.value = result\n }\n\n ctx.file.contents = result\n } else {\n ctx.file.result = result\n }\n}\n\n// Function to create the first processor.\nfunction unified() {\n var attachers = []\n var transformers = trough()\n var namespace = {}\n var freezeIndex = -1\n var frozen\n\n // Data management.\n processor.data = data\n\n // Lock.\n processor.freeze = freeze\n\n // Plugins.\n processor.attachers = attachers\n processor.use = use\n\n // API.\n processor.parse = parse\n processor.stringify = stringify\n processor.run = run\n processor.runSync = runSync\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 function processor() {\n var destination = unified()\n var index = -1\n\n while (++index < attachers.length) {\n destination.use.apply(null, attachers[index])\n }\n\n destination.data(extend(true, {}, namespace))\n\n return destination\n }\n\n // Freeze: used to signal a processor that has finished configuration.\n //\n // For example, take unified itself: it’s frozen.\n // Plugins should not be added to it.\n // Rather, it should be extended, by invoking it, before modifying it.\n //\n // In essence, always invoke this when exporting a processor.\n function freeze() {\n var values\n var transformer\n\n if (frozen) {\n return processor\n }\n\n while (++freezeIndex < attachers.length) {\n values = attachers[freezeIndex]\n\n if (values[1] === false) {\n continue\n }\n\n if (values[1] === true) {\n values[1] = undefined\n }\n\n transformer = values[0].apply(processor, values.slice(1))\n\n if (typeof transformer === 'function') {\n transformers.use(transformer)\n }\n }\n\n frozen = true\n freezeIndex = Infinity\n\n return processor\n }\n\n // Data management.\n // Getter / setter for processor-specific informtion.\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 // Plugin management.\n //\n // Pass it:\n // * an attacher and options,\n // * a preset,\n // * a list of presets, attachers, and arguments (list of attachers and\n // options).\n function use(value) {\n var settings\n\n assertUnfrozen('use', frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin.apply(null, arguments)\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`')\n }\n\n if (settings) {\n namespace.settings = extend(namespace.settings || {}, settings)\n }\n\n return processor\n\n function addPreset(result) {\n addList(result.plugins)\n\n if (result.settings) {\n settings = extend(settings || {}, result.settings)\n }\n }\n\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value)\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addPlugin.apply(null, value)\n } else {\n addPreset(value)\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`')\n }\n }\n\n function addList(plugins) {\n var index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (typeof plugins === 'object' && 'length' in plugins) {\n while (++index < plugins.length) {\n add(plugins[index])\n }\n } else {\n throw new Error('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n function addPlugin(plugin, value) {\n var entry = find(plugin)\n\n if (entry) {\n if (plain(entry[1]) && plain(value)) {\n value = extend(true, entry[1], value)\n }\n\n entry[1] = value\n } else {\n attachers.push(slice.call(arguments))\n }\n }\n }\n\n function find(plugin) {\n var index = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n return attachers[index]\n }\n }\n }\n\n // Parse a file (in string or vfile representation) into a unist node using\n // the `Parser` on the processor.\n function parse(doc) {\n var file = vfile(doc)\n var Parser\n\n freeze()\n Parser = processor.Parser\n assertParser('parse', Parser)\n\n if (newable(Parser, 'parse')) {\n return new Parser(String(file), file).parse()\n }\n\n return Parser(String(file), file) // eslint-disable-line new-cap\n }\n\n // Run transforms on a unist node representation of a file (in string or\n // vfile representation), async.\n function run(node, file, cb) {\n assertNode(node)\n freeze()\n\n if (!cb && typeof file === 'function') {\n cb = file\n file = null\n }\n\n if (!cb) {\n return new Promise(executor)\n }\n\n executor(null, cb)\n\n function executor(resolve, reject) {\n transformers.run(node, vfile(file), done)\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 cb(null, tree, file)\n }\n }\n }\n }\n\n // Run transforms on a unist node representation of a file (in string or\n // vfile representation), sync.\n function runSync(node, file) {\n var result\n var complete\n\n run(node, file, done)\n\n assertDone('runSync', 'run', complete)\n\n return result\n\n function done(error, tree) {\n complete = true\n result = tree\n bail(error)\n }\n }\n\n // Stringify a unist node representation of a file (in string or vfile\n // representation) into a string using the `Compiler` on the processor.\n function stringify(node, doc) {\n var file = vfile(doc)\n var Compiler\n\n freeze()\n Compiler = processor.Compiler\n assertCompiler('stringify', Compiler)\n assertNode(node)\n\n if (newable(Compiler, 'compile')) {\n return new Compiler(node, file).compile()\n }\n\n return Compiler(node, file) // eslint-disable-line new-cap\n }\n\n // Parse a file (in string or vfile representation) into a unist node using\n // the `Parser` on the processor, then run transforms on that node, and\n // compile the resulting node using the `Compiler` on the processor, and\n // store that result on the vfile.\n function process(doc, cb) {\n freeze()\n assertParser('process', processor.Parser)\n assertCompiler('process', processor.Compiler)\n\n if (!cb) {\n return new Promise(executor)\n }\n\n executor(null, cb)\n\n function executor(resolve, reject) {\n var file = vfile(doc)\n\n pipeline.run(processor, {file: file}, done)\n\n function done(error) {\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n cb(null, file)\n }\n }\n }\n }\n\n // Process the given document (in string or vfile representation), sync.\n function processSync(doc) {\n var file\n var complete\n\n freeze()\n assertParser('processSync', processor.Parser)\n assertCompiler('processSync', processor.Compiler)\n file = vfile(doc)\n\n process(file, done)\n\n assertDone('processSync', 'process', complete)\n\n return file\n\n function done(error) {\n complete = true\n bail(error)\n }\n }\n}\n\n// Check if `value` is a constructor.\nfunction newable(value, name) {\n return (\n typeof value === 'function' &&\n value.prototype &&\n // A function with keys in its prototype is probably a constructor.\n // Classes’ prototype methods are not enumerable, so we check if some value\n // exists in the prototype.\n (keys(value.prototype) || name in value.prototype)\n )\n}\n\n// Check if `value` is an object with keys.\nfunction keys(value) {\n var key\n for (key in value) {\n return true\n }\n\n return false\n}\n\n// Assert a parser is available.\nfunction assertParser(name, Parser) {\n if (typeof Parser !== 'function') {\n throw new Error('Cannot `' + name + '` without `Parser`')\n }\n}\n\n// Assert a compiler is available.\nfunction assertCompiler(name, Compiler) {\n if (typeof Compiler !== 'function') {\n throw new Error('Cannot `' + name + '` without `Compiler`')\n }\n}\n\n// Assert the processor is not frozen.\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot invoke `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n// Assert `node` is a unist node.\nfunction assertNode(node) {\n if (!node || typeof node.type !== 'string') {\n throw new Error('Expected node, got `' + node + '`')\n }\n}\n\n// Assert that `complete` is `true`.\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n","'use strict'\n\nmodule.exports = bail\n\nfunction bail(err) {\n if (err) {\n throw err\n }\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","'use strict';\n\nmodule.exports = value => {\n\tif (Object.prototype.toString.call(value) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === null || prototype === Object.prototype;\n};\n","'use strict'\n\nvar wrap = require('./wrap.js')\n\nmodule.exports = trough\n\ntrough.wrap = wrap\n\nvar slice = [].slice\n\n// Create new middleware.\nfunction trough() {\n var fns = []\n var middleware = {}\n\n middleware.run = run\n middleware.use = use\n\n return middleware\n\n // Run `fns`. Last argument must be a completion handler.\n function run() {\n var index = -1\n var input = slice.call(arguments, 0, -1)\n var done = arguments[arguments.length - 1]\n\n if (typeof done !== 'function') {\n throw new Error('Expected function as last argument, not ' + done)\n }\n\n next.apply(null, [null].concat(input))\n\n // Run the next `fn`, if any.\n function next(err) {\n var fn = fns[++index]\n var params = slice.call(arguments, 0)\n var values = params.slice(1)\n var length = input.length\n var pos = -1\n\n if (err) {\n done(err)\n return\n }\n\n // Copy non-nully input into values.\n while (++pos < length) {\n if (values[pos] === null || values[pos] === undefined) {\n values[pos] = input[pos]\n }\n }\n\n input = values\n\n // Next or done.\n if (fn) {\n wrap(fn, next).apply(null, input)\n } else {\n done.apply(null, [null].concat(input))\n }\n }\n }\n\n // Add `fn` to the list.\n function use(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Expected `fn` to be a function, not ' + fn)\n }\n\n fns.push(fn)\n\n return middleware\n }\n}\n","'use strict'\n\nvar slice = [].slice\n\nmodule.exports = wrap\n\n// Wrap `fn`.\n// Can be sync or async; return a promise, receive a completion handler, return\n// new values and errors.\nfunction wrap(fn, callback) {\n var invoked\n\n return wrapped\n\n function wrapped() {\n var params = slice.call(arguments, 0)\n var callback = fn.length > params.length\n var result\n\n if (callback) {\n params.push(done)\n }\n\n try {\n result = fn.apply(null, params)\n } catch (error) {\n // Well, this is quite the pickle.\n // `fn` received a callback and invoked it (thus continuing the pipeline),\n // but later also threw an error.\n // We’re not about to restart the pipeline again, so the only thing left\n // to do is to throw the thing instead.\n if (callback && invoked) {\n throw error\n }\n\n return done(error)\n }\n\n if (!callback) {\n if (result && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n // Invoke `next`, only once.\n function done() {\n if (!invoked) {\n invoked = true\n\n callback.apply(null, arguments)\n }\n }\n\n // Invoke `done` with one value.\n // Tracks if an error is passed, too.\n function then(value) {\n done(null, value)\n }\n}\n","'use strict'\n\nmodule.exports = parse\n\nvar fromMarkdown = require('mdast-util-from-markdown')\n\nfunction parse(options) {\n var self = this\n\n this.Parser = parse\n\n function parse(doc) {\n return fromMarkdown(\n doc,\n Object.assign({}, self.data('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: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n )\n }\n}\n","'use strict'\n\nmodule.exports = require('./dist')\n","'use strict'\n\nmodule.exports = fromMarkdown\n\n// These three are compiled away in the `dist/`\n\nvar toString = require('mdast-util-to-string')\nvar assign = require('micromark/dist/constant/assign')\nvar own = require('micromark/dist/constant/has-own-property')\nvar normalizeIdentifier = require('micromark/dist/util/normalize-identifier')\nvar safeFromInt = require('micromark/dist/util/safe-from-int')\nvar parser = require('micromark/dist/parse')\nvar preprocessor = require('micromark/dist/preprocess')\nvar postprocess = require('micromark/dist/postprocess')\nvar decode = require('parse-entities/decode-entity')\nvar stringifyPosition = require('unist-util-stringify-position')\n\nfunction fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n\n return compiler(options)(\n postprocess(\n parser(options).document().write(preprocessor()(value, encoding, true))\n )\n )\n}\n\n// Note this compiler only understand complete buffering, not streaming.\nfunction compiler(options) {\n var settings = options || {}\n var config = configure(\n {\n transforms: [],\n canContainEols: [\n 'emphasis',\n 'fragment',\n 'heading',\n 'paragraph',\n 'strong'\n ],\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\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\n settings.mdastExtensions || []\n )\n\n var data = {}\n\n return compile\n\n function compile(events) {\n var tree = {type: 'root', children: []}\n var stack = [tree]\n var tokenStack = []\n var listStack = []\n var index = -1\n var handler\n var listStart\n\n var context = {\n stack: stack,\n tokenStack: tokenStack,\n config: config,\n enter: enter,\n exit: exit,\n buffer: buffer,\n resume: resume,\n setData: setData,\n getData: getData\n }\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 listStart = listStack.pop(index)\n index = prepareList(events, listStart, index)\n }\n }\n }\n\n index = -1\n\n while (++index < events.length) {\n handler = config[events[index][0]]\n\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n assign({sliceSerialize: events[index][2].sliceSerialize}, context),\n events[index][1]\n )\n }\n }\n\n if (tokenStack.length) {\n throw new Error(\n 'Cannot close document, a token (`' +\n tokenStack[tokenStack.length - 1].type +\n '`, ' +\n stringifyPosition({\n start: tokenStack[tokenStack.length - 1].start,\n end: tokenStack[tokenStack.length - 1].end\n }) +\n ') is still open'\n )\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length ? events[0][1].start : {line: 1, column: 1, offset: 0}\n ),\n\n end: point(\n events.length\n ? events[events.length - 2][1].end\n : {line: 1, column: 1, offset: 0}\n )\n }\n\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n\n return tree\n }\n\n function prepareList(events, start, length) {\n var index = start - 1\n var containerBalance = -1\n var listSpread = false\n var listItem\n var tailIndex\n var lineIndex\n var tailEvent\n var event\n var firstBlankLineIndex\n var atMarker\n\n while (++index <= length) {\n 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 tailIndex = index\n lineIndex = undefined\n\n while (tailIndex--) {\n 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 listItem._spread = true\n }\n\n // Fix position.\n listItem.end = point(\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n _spread: false,\n start: point(event[1].start)\n }\n\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n\n events[start][1]._spread = listSpread\n return length\n }\n\n function setData(key, value) {\n data[key] = value\n }\n\n function getData(key) {\n return data[key]\n }\n\n function point(d) {\n return {line: d.line, column: d.column, offset: d.offset}\n }\n\n function opener(create, and) {\n return open\n\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n function buffer() {\n this.stack.push({type: 'fragment', children: []})\n }\n\n function enter(node, token) {\n this.stack[this.stack.length - 1].children.push(node)\n this.stack.push(node)\n this.tokenStack.push(token)\n node.position = {start: point(token.start)}\n return node\n }\n\n function closer(and) {\n return close\n\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n function exit(token) {\n var node = this.stack.pop()\n var open = this.tokenStack.pop()\n\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({start: token.start, end: token.end}) +\n '): it’s not open'\n )\n } else if (open.type !== token.type) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({start: token.start, end: token.end}) +\n '): a different token (`' +\n open.type +\n '`, ' +\n stringifyPosition({start: open.start, end: open.end}) +\n ') is open'\n )\n }\n\n node.position.end = point(token.end)\n return node\n }\n\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n this.stack[this.stack.length - 2].start = parseInt(\n this.sliceSerialize(token),\n 10\n )\n\n setData('expectingFirstListItemValue')\n }\n }\n\n function onexitcodefencedfenceinfo() {\n var data = this.resume()\n this.stack[this.stack.length - 1].lang = data\n }\n\n function onexitcodefencedfencemeta() {\n var data = this.resume()\n this.stack[this.stack.length - 1].meta = data\n }\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\n function onexitcodefenced() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data.replace(\n /^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g,\n ''\n )\n\n setData('flowCodeInside')\n }\n\n function onexitcodeindented() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitdefinitionlabelstring(token) {\n // Discard label, use the source content instead.\n var label = this.resume()\n this.stack[this.stack.length - 1].label = label\n this.stack[this.stack.length - 1].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n function onexitdefinitiontitlestring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].title = data\n }\n\n function onexitdefinitiondestinationstring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].url = data\n }\n\n function onexitatxheadingsequence(token) {\n if (!this.stack[this.stack.length - 1].depth) {\n this.stack[this.stack.length - 1].depth = this.sliceSerialize(\n token\n ).length\n }\n }\n\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n\n function onexitsetextheadinglinesequence(token) {\n this.stack[this.stack.length - 1].depth =\n this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n\n function onenterdata(token) {\n var siblings = this.stack[this.stack.length - 1].children\n var tail = siblings[siblings.length - 1]\n\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n tail.position = {start: point(token.start)}\n this.stack[this.stack.length - 1].children.push(tail)\n }\n\n this.stack.push(tail)\n }\n\n function onexitdata(token) {\n var tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n function onexitlineending(token) {\n var context = this.stack[this.stack.length - 1]\n\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n context.children[context.children.length - 1].position.end = point(\n token.end\n )\n\n setData('atHardBreak')\n return\n }\n\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.indexOf(context.type) > -1\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n\n function onexithtmlflow() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexithtmltext() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitcodetext() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitlink() {\n var context = this.stack[this.stack.length - 1]\n\n // To do: clean.\n if (getData('inReference')) {\n context.type += 'Reference'\n context.referenceType = getData('referenceType') || 'shortcut'\n delete context.url\n delete context.title\n } else {\n delete context.identifier\n delete context.label\n delete context.referenceType\n }\n\n setData('referenceType')\n }\n\n function onexitimage() {\n var context = this.stack[this.stack.length - 1]\n\n // To do: clean.\n if (getData('inReference')) {\n context.type += 'Reference'\n context.referenceType = getData('referenceType') || 'shortcut'\n delete context.url\n delete context.title\n } else {\n delete context.identifier\n delete context.label\n delete context.referenceType\n }\n\n setData('referenceType')\n }\n\n function onexitlabeltext(token) {\n this.stack[this.stack.length - 2].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n function onexitlabel() {\n var fragment = this.stack[this.stack.length - 1]\n var value = this.resume()\n\n this.stack[this.stack.length - 1].label = value\n\n // Assume a reference.\n setData('inReference', true)\n\n if (this.stack[this.stack.length - 1].type === 'link') {\n this.stack[this.stack.length - 1].children = fragment.children\n } else {\n this.stack[this.stack.length - 1].alt = value\n }\n }\n\n function onexitresourcedestinationstring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].url = data\n }\n\n function onexitresourcetitlestring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].title = data\n }\n\n function onexitresource() {\n setData('inReference')\n }\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n\n function onexitreferencestring(token) {\n var label = this.resume()\n this.stack[this.stack.length - 1].label = label\n this.stack[this.stack.length - 1].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n\n function onexitcharacterreferencevalue(token) {\n var data = this.sliceSerialize(token)\n var type = getData('characterReferenceType')\n var value\n var tail\n\n if (type) {\n value = safeFromInt(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n\n setData('characterReferenceType')\n } else {\n value = decode(data)\n }\n\n tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n this.stack[this.stack.length - 1].url = this.sliceSerialize(token)\n }\n\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n this.stack[this.stack.length - 1].url =\n 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n function blockQuote() {\n return {type: 'blockquote', children: []}\n }\n\n function codeFlow() {\n return {type: 'code', lang: null, meta: null, value: ''}\n }\n\n function codeText() {\n return {type: 'inlineCode', value: ''}\n }\n\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n function emphasis() {\n return {type: 'emphasis', children: []}\n }\n\n function heading() {\n return {type: 'heading', depth: undefined, children: []}\n }\n\n function hardBreak() {\n return {type: 'break'}\n }\n\n function html() {\n return {type: 'html', value: ''}\n }\n\n function image() {\n return {type: 'image', title: null, url: '', alt: null}\n }\n\n function link() {\n return {type: 'link', title: null, url: '', children: []}\n }\n\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n function paragraph() {\n return {type: 'paragraph', children: []}\n }\n\n function strong() {\n return {type: 'strong', children: []}\n }\n\n function text() {\n return {type: 'text', value: ''}\n }\n\n function thematicBreak() {\n return {type: 'thematicBreak'}\n }\n}\n\nfunction configure(config, extensions) {\n var index = -1\n\n while (++index < extensions.length) {\n extension(config, extensions[index])\n }\n\n return config\n}\n\nfunction extension(config, extension) {\n var key\n var left\n\n for (key in extension) {\n left = own.call(config, key) ? config[key] : (config[key] = {})\n\n if (key === 'canContainEols' || key === 'transforms') {\n config[key] = [].concat(left, extension[key])\n } else {\n Object.assign(left, extension[key])\n }\n }\n}\n","'use strict'\n\nmodule.exports = toString\n\n// Get the text content of a node.\n// Prefer the node’s plain-text fields, otherwise serialize its children,\n// and if the given value is an array, serialize the nodes in it.\nfunction toString(node) {\n return (\n (node &&\n (node.value ||\n node.alt ||\n node.title ||\n ('children' in node && all(node.children)) ||\n ('length' in node && all(node)))) ||\n ''\n )\n}\n\nfunction all(values) {\n var result = []\n var index = -1\n\n while (++index < values.length) {\n result[index] = toString(values[index])\n }\n\n return result.join('')\n}\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction safeFromInt(value, base) {\n var code = 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 fromCharCode(code)\n}\n\nmodule.exports = safeFromInt\n","'use strict'\n\nvar content = require('./initialize/content.js')\nvar document = require('./initialize/document.js')\nvar flow = require('./initialize/flow.js')\nvar text = require('./initialize/text.js')\nvar combineExtensions = require('./util/combine-extensions.js')\nvar createTokenizer = require('./util/create-tokenizer.js')\nvar miniflat = require('./util/miniflat.js')\nvar constructs = require('./constructs.js')\n\nfunction parse(options) {\n var settings = options || {}\n var parser = {\n defined: [],\n constructs: combineExtensions(\n [constructs].concat(miniflat(settings.extensions))\n ),\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(text.string),\n text: create(text.text)\n }\n return parser\n\n function create(initializer) {\n return creator\n\n function creator(from) {\n return createTokenizer(parser, initializer, from)\n }\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('../tokenize/factory-space.js')\n\nvar tokenize = initializeContent\n\nfunction initializeContent(effects) {\n var contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n var previous\n return contentStart\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\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n\n function lineStart(code) {\n var token = effects.enter('chunkText', {\n contentType: 'text',\n previous: previous\n })\n\n if (previous) {\n previous.next = token\n }\n\n previous = token\n return data(code)\n }\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\nexports.tokenize = tokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('../tokenize/factory-space.js')\nvar partialBlankLine = require('../tokenize/partial-blank-line.js')\n\nvar tokenize = initializeDocument\nvar containerConstruct = {\n tokenize: tokenizeContainer\n}\nvar lazyFlowConstruct = {\n tokenize: tokenizeLazyFlow\n}\n\nfunction initializeDocument(effects) {\n var self = this\n var stack = []\n var continued = 0\n var inspectConstruct = {\n tokenize: tokenizeInspect,\n partial: true\n }\n var inspectResult\n var childFlow\n var childToken\n return start\n\n function start(code) {\n if (continued < stack.length) {\n self.containerState = stack[continued][1]\n return effects.attempt(\n stack[continued][0].continuation,\n documentContinue,\n documentContinued\n )(code)\n }\n\n return documentContinued(code)\n }\n\n function documentContinue(code) {\n continued++\n return start(code)\n }\n\n function documentContinued(code) {\n // If we’re in a concrete construct (such as when expecting another line of\n // HTML, or we resulted in lazy content), we can immediately start flow.\n if (inspectResult && inspectResult.flowContinue) {\n return flowStart(code)\n }\n\n self.interrupt =\n childFlow &&\n childFlow.currentConstruct &&\n childFlow.currentConstruct.interruptible\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n\n function containerContinue(code) {\n stack.push([self.currentConstruct, self.containerState])\n self.containerState = undefined\n return documentContinued(code)\n }\n\n function flowStart(code) {\n if (code === null) {\n exitContainers(0, true)\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\n function flowContinue(code) {\n if (code === null) {\n continueFlow(effects.exit('chunkFlow'))\n return flowStart(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n continueFlow(effects.exit('chunkFlow'))\n return effects.check(inspectConstruct, documentAfterPeek)\n }\n\n effects.consume(code)\n return flowContinue\n }\n\n function documentAfterPeek(code) {\n exitContainers(\n inspectResult.continued,\n inspectResult && inspectResult.flowEnd\n )\n continued = 0\n return start(code)\n }\n\n function continueFlow(token) {\n if (childToken) childToken.next = token\n childToken = token\n childFlow.lazy = inspectResult && inspectResult.lazy\n childFlow.defineSkip(token.start)\n childFlow.write(self.sliceStream(token))\n }\n\n function exitContainers(size, end) {\n var index = stack.length // Close the flow.\n\n if (childFlow && end) {\n childFlow.write([null])\n childToken = childFlow = undefined\n } // Exit open containers.\n\n while (index-- > size) {\n self.containerState = stack[index][1]\n stack[index][0].exit.call(self, effects)\n }\n\n stack.length = size\n }\n\n function tokenizeInspect(effects, ok) {\n var subcontinued = 0\n inspectResult = {}\n return inspectStart\n\n function inspectStart(code) {\n if (subcontinued < stack.length) {\n self.containerState = stack[subcontinued][1]\n return effects.attempt(\n stack[subcontinued][0].continuation,\n inspectContinue,\n inspectLess\n )(code)\n } // If we’re continued but in a concrete flow, we can’t have more\n // containers.\n\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n inspectResult.flowContinue = true\n return inspectDone(code)\n }\n\n self.interrupt =\n childFlow.currentConstruct && childFlow.currentConstruct.interruptible\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n inspectFlowEnd,\n inspectDone\n )(code)\n }\n\n function inspectContinue(code) {\n subcontinued++\n return self.containerState._closeFlow\n ? inspectFlowEnd(code)\n : inspectStart(code)\n }\n\n function inspectLess(code) {\n if (childFlow.currentConstruct && childFlow.currentConstruct.lazy) {\n // Maybe another container?\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n inspectFlowEnd, // Maybe flow, or a blank line?\n effects.attempt(\n lazyFlowConstruct,\n inspectFlowEnd,\n effects.check(partialBlankLine, inspectFlowEnd, inspectLazy)\n )\n )(code)\n } // Otherwise we’re interrupting.\n\n return inspectFlowEnd(code)\n }\n\n function inspectLazy(code) {\n // Act as if all containers are continued.\n subcontinued = stack.length\n inspectResult.lazy = true\n inspectResult.flowContinue = true\n return inspectDone(code)\n } // We’re done with flow if we have more containers, or an interruption.\n\n function inspectFlowEnd(code) {\n inspectResult.flowEnd = true\n return inspectDone(code)\n }\n\n function inspectDone(code) {\n inspectResult.continued = subcontinued\n self.interrupt = self.containerState = undefined\n return ok(code)\n }\n }\n}\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.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nfunction tokenizeLazyFlow(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.lazy(this.parser.constructs.flow, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar content = require('../tokenize/content.js')\nvar factorySpace = require('../tokenize/factory-space.js')\nvar partialBlankLine = require('../tokenize/partial-blank-line.js')\n\nvar tokenize = initializeFlow\n\nfunction initializeFlow(effects) {\n var self = this\n var initial = effects.attempt(\n // Try to parse a blank line.\n partialBlankLine,\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\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\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\nexports.tokenize = tokenize\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar subtokenize = require('../util/subtokenize.js')\nvar factorySpace = require('./factory-space.js')\n\n// No name because it must not be turned off.\nvar content = {\n tokenize: tokenizeContent,\n resolve: resolveContent,\n interruptible: true,\n lazy: true\n}\nvar continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n} // Content is transparent: it’s parsed right now. That way, definitions are also\n// parsed right now: before text in paragraphs (specifically, media) are parsed.\n\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n\nfunction tokenizeContent(effects, ok) {\n var previous\n return start\n\n function start(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return data(code)\n }\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\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\n }\n\n function contentContinue(code) {\n effects.consume(code)\n effects.exit('chunkContent')\n previous = previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous: previous\n })\n return data\n }\n}\n\nfunction tokenizeContinuation(effects, ok, nok) {\n var self = this\n return startLookahead\n\n function startLookahead(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n if (\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1 ||\n prefixSize(self.events, 'linePrefix') < 4\n ) {\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n\n return ok(code)\n }\n}\n\nmodule.exports = content\n","'use strict'\n\nvar splice = [].splice\n\nmodule.exports = splice\n","'use strict'\n\nvar assign = require('../constant/assign.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar chunkedPush = require('./chunked-push.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar miniflat = require('./miniflat.js')\nvar resolveAll = require('./resolve-all.js')\nvar serializeChunks = require('./serialize-chunks.js')\nvar shallow = require('./shallow.js')\nvar sliceChunks = require('./slice-chunks.js')\n\n// Create a tokenizer.\n// Tokenizers deal with one type of data (e.g., containers, flow, text).\n// The parser is the object dealing with it all.\n// `initialize` works like other constructs, except that only its `tokenize`\n// function is used, in which case it doesn’t receive an `ok` or `nok`.\n// `from` can be given to set the point before the first character, although\n// when further lines are indented, they must be set with `defineSkip`.\nfunction createTokenizer(parser, initialize, from) {\n var point = from\n ? shallow(from)\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n var columnStart = {}\n var resolveAllConstructs = []\n var chunks = []\n var stack = []\n\n var effects = {\n consume: consume,\n enter: enter,\n exit: exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n }),\n lazy: constructFactory(onsuccessfulcheck, {\n lazy: true\n })\n } // State and tools for resolving and serializing.\n\n var context = {\n previous: null,\n events: [],\n parser: parser,\n sliceStream: sliceStream,\n sliceSerialize: sliceSerialize,\n now: now,\n defineSkip: skip,\n write: write\n } // The state function.\n\n var state = initialize.tokenize.call(context, effects) // Track which character we expect to be consumed, to catch bugs.\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n } // Store where we are in the input stream.\n\n point._index = 0\n point._bufferIndex = -1\n return context\n\n function write(slice) {\n chunks = chunkedPush(chunks, slice)\n main() // Exit if we’re 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 function sliceSerialize(token) {\n return serializeChunks(sliceStream(token))\n }\n\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n\n function now() {\n return shallow(point)\n }\n\n function skip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n } //\n // State management.\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 function main() {\n var chunkIndex\n var chunk\n\n while (point._index < chunks.length) {\n chunk = chunks[point._index] // If we’re 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 } // Deal with one code.\n\n function go(code) {\n state = state(code)\n } // Move a character forward.\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\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 } // Start a token.\n\n function enter(type, fields) {\n var 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 } // Stop a token.\n\n function exit(type) {\n var token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n } // Use results.\n\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n } // Discard results.\n\n function onsuccessfulcheck(construct, info) {\n info.restore()\n } // Factory to attempt/check/interrupt.\n\n function constructFactory(onreturn, fields) {\n return hook // Handle either an object mapping codes to constructs, a list of\n // constructs, or a single construct.\n\n function hook(constructs, returnState, bogusState) {\n var listOfConstructs\n var constructIndex\n var currentConstruct\n var info\n return constructs.tokenize || 'length' in constructs\n ? handleListOfConstructs(miniflat(constructs))\n : handleMapOfConstructs\n\n function handleMapOfConstructs(code) {\n if (code in constructs || null in constructs) {\n return handleListOfConstructs(\n constructs.null\n ? /* c8 ignore next */\n miniflat(constructs[code]).concat(miniflat(constructs.null))\n : constructs[code]\n )(code)\n }\n\n return bogusState(code)\n }\n\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n return handleConstruct(list[constructIndex])\n }\n\n function handleConstruct(construct) {\n return start\n\n function start(code) {\n // To do: not nede to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.indexOf(construct.name) > -1\n ) {\n return nok()\n }\n\n return construct.tokenize.call(\n fields ? assign({}, context, fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n\n function ok(code) {\n onreturn(currentConstruct, info)\n return returnState\n }\n\n function nok(code) {\n info.restore()\n\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n\n return bogusState\n }\n }\n }\n\n function addResult(construct, from) {\n if (construct.resolveAll && resolveAllConstructs.indexOf(construct) < 0) {\n resolveAllConstructs.push(construct)\n }\n\n if (construct.resolve) {\n chunkedSplice(\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 function store() {\n var startPoint = now()\n var startPrevious = context.previous\n var startCurrentConstruct = context.currentConstruct\n var startEventsIndex = context.events.length\n var startStack = Array.from(stack)\n return {\n restore: restore,\n from: startEventsIndex\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 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\nmodule.exports = createTokenizer\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction serializeChunks(chunks) {\n var index = -1\n var result = []\n var chunk\n var value\n var atTab\n\n while (++index < chunks.length) {\n chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n value = chunk\n } else if (chunk === -5) {\n value = '\\r'\n } else if (chunk === -4) {\n value = '\\n'\n } else if (chunk === -3) {\n value = '\\r' + '\\n'\n } else if (chunk === -2) {\n value = '\\t'\n } else if (chunk === -1) {\n if (atTab) continue\n value = ' '\n } else {\n // Currently only replacement character.\n value = fromCharCode(chunk)\n }\n\n atTab = chunk === -2\n result.push(value)\n }\n\n return result.join('')\n}\n\nmodule.exports = serializeChunks\n","'use strict'\n\nfunction sliceChunks(chunks, token) {\n var startIndex = token.start._index\n var startBufferIndex = token.start._bufferIndex\n var endIndex = token.end._index\n var endBufferIndex = token.end._bufferIndex\n var view\n\n if (startIndex === endIndex) {\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n\n if (startBufferIndex > -1) {\n view[0] = view[0].slice(startBufferIndex)\n }\n\n if (endBufferIndex > 0) {\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n\n return view\n}\n\nmodule.exports = sliceChunks\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar text$1 = require('./initialize/text.js')\nvar attention = require('./tokenize/attention.js')\nvar autolink = require('./tokenize/autolink.js')\nvar blockQuote = require('./tokenize/block-quote.js')\nvar characterEscape = require('./tokenize/character-escape.js')\nvar characterReference = require('./tokenize/character-reference.js')\nvar codeFenced = require('./tokenize/code-fenced.js')\nvar codeIndented = require('./tokenize/code-indented.js')\nvar codeText = require('./tokenize/code-text.js')\nvar definition = require('./tokenize/definition.js')\nvar hardBreakEscape = require('./tokenize/hard-break-escape.js')\nvar headingAtx = require('./tokenize/heading-atx.js')\nvar htmlFlow = require('./tokenize/html-flow.js')\nvar htmlText = require('./tokenize/html-text.js')\nvar labelEnd = require('./tokenize/label-end.js')\nvar labelStartImage = require('./tokenize/label-start-image.js')\nvar labelStartLink = require('./tokenize/label-start-link.js')\nvar lineEnding = require('./tokenize/line-ending.js')\nvar list = require('./tokenize/list.js')\nvar setextUnderline = require('./tokenize/setext-underline.js')\nvar thematicBreak = require('./tokenize/thematic-break.js')\n\nvar document = {\n 42: list,\n // Asterisk\n 43: list,\n // Plus sign\n 45: list,\n // Dash\n 48: list,\n // 0\n 49: list,\n // 1\n 50: list,\n // 2\n 51: list,\n // 3\n 52: list,\n // 4\n 53: list,\n // 5\n 54: list,\n // 6\n 55: list,\n // 7\n 56: list,\n // 8\n 57: list,\n // 9\n 62: blockQuote // Greater than\n}\nvar contentInitial = {\n 91: definition // Left square bracket\n}\nvar flowInitial = {\n '-2': codeIndented,\n // Horizontal tab\n '-1': codeIndented,\n // Virtual space\n 32: codeIndented // Space\n}\nvar flow = {\n 35: headingAtx,\n // Number sign\n 42: thematicBreak,\n // Asterisk\n 45: [setextUnderline, thematicBreak],\n // Dash\n 60: htmlFlow,\n // Less than\n 61: setextUnderline,\n // Equals to\n 95: thematicBreak,\n // Underscore\n 96: codeFenced,\n // Grave accent\n 126: codeFenced // Tilde\n}\nvar string = {\n 38: characterReference,\n // Ampersand\n 92: characterEscape // Backslash\n}\nvar text = {\n '-5': lineEnding,\n // Carriage return\n '-4': lineEnding,\n // Line feed\n '-3': lineEnding,\n // Carriage return + line feed\n 33: labelStartImage,\n // Exclamation mark\n 38: characterReference,\n // Ampersand\n 42: attention,\n // Asterisk\n 60: [autolink, htmlText],\n // Less than\n 91: labelStartLink,\n // Left square bracket\n 92: [hardBreakEscape, characterEscape],\n // Backslash\n 93: labelEnd,\n // Right square bracket\n 95: attention,\n // Underscore\n 96: codeText // Grave accent\n}\nvar insideSpan = {\n null: [attention, text$1.resolver]\n}\nvar disable = {\n null: []\n}\n\nexports.contentInitial = contentInitial\nexports.disable = disable\nexports.document = document\nexports.flow = flow\nexports.flowInitial = flowInitial\nexports.insideSpan = insideSpan\nexports.string = string\nexports.text = text\n","'use strict'\n\nvar chunkedPush = require('../util/chunked-push.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar classifyCharacter = require('../util/classify-character.js')\nvar movePoint = require('../util/move-point.js')\nvar resolveAll = require('../util/resolve-all.js')\nvar shallow = require('../util/shallow.js')\n\nvar attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\nfunction resolveAllAttention(events, context) {\n var index = -1\n var open\n var group\n var text\n var openingSequence\n var closingSequence\n var use\n var nextEvents\n var offset // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n\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’t 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 openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: movePoint(shallow(events[open][1].end), -use),\n end: shallow(events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: shallow(events[index][1].start),\n end: movePoint(shallow(events[index][1].start), use)\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: shallow(events[open][1].end),\n end: shallow(events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: shallow(openingSequence.start),\n end: shallow(closingSequence.end)\n }\n events[open][1].end = shallow(openingSequence.start)\n events[index][1].start = shallow(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 = chunkedPush(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n } // Opening.\n\n nextEvents = chunkedPush(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ]) // Between.\n\n nextEvents = chunkedPush(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n ) // Closing.\n\n nextEvents = chunkedPush(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 = chunkedPush(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n\n chunkedSplice(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\nfunction tokenizeAttention(effects, ok) {\n var before = classifyCharacter(this.previous)\n var marker\n return start\n\n function start(code) {\n effects.enter('attentionSequence')\n marker = code\n return sequence(code)\n }\n\n function sequence(code) {\n var token\n var after\n var open\n var close\n\n if (code === marker) {\n effects.consume(code)\n return sequence\n }\n\n token = effects.exit('attentionSequence')\n after = classifyCharacter(code)\n open = !after || (after === 2 && before)\n close = !before || (before === 2 && after)\n token._open = marker === 42 ? open : open && (before || !close)\n token._close = marker === 42 ? close : close && (after || !open)\n return ok(code)\n }\n}\n\nmodule.exports = attention\n","'use strict'\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.\nvar unicodePunctuation = /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\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\nmodule.exports = unicodePunctuation\n","'use strict'\n\n// chunks (replacement characters, tabs, or line endings).\n\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n return point\n}\n\nmodule.exports = movePoint\n","'use strict'\n\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar asciiAtext = require('../character/ascii-atext.js')\nvar asciiControl = require('../character/ascii-control.js')\n\nvar autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\nfunction tokenizeAutolink(effects, ok, nok) {\n var size = 1\n return start\n\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n 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\n function schemeOrEmailAtext(code) {\n return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n ? schemeInsideOrEmailAtext(code)\n : emailAtext(code)\n }\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\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n return end(code)\n }\n\n if (code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return urlInside\n }\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\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\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\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\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\nmodule.exports = autolink\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\nmodule.exports = asciiAtext\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit: exit\n}\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n var self = this\n return start\n\n function start(code) {\n if (code === 62) {\n if (!self.containerState.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n self.containerState.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\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\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(blockQuote, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n\nmodule.exports = blockQuote\n","'use strict'\n\nvar asciiPunctuation = require('../character/ascii-punctuation.js')\n\nvar characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\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\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\nmodule.exports = characterEscape\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\nmodule.exports = asciiPunctuation\n","'use strict'\n\nvar decodeEntity = require('parse-entities/decode-entity.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar asciiDigit = require('../character/ascii-digit.js')\nvar asciiHexDigit = require('../character/ascii-hex-digit.js')\n\nfunction _interopDefaultLegacy(e) {\n return e && typeof e === 'object' && 'default' in e ? e : {default: e}\n}\n\nvar decodeEntity__default = /*#__PURE__*/ _interopDefaultLegacy(decodeEntity)\n\nvar characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\nfunction tokenizeCharacterReference(effects, ok, nok) {\n var self = this\n var size = 0\n var max\n var test\n return start\n\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n 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\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\n function value(code) {\n var token\n\n if (code === 59 && size) {\n token = effects.exit('characterReferenceValue')\n\n if (\n test === asciiAlphanumeric &&\n !decodeEntity__default['default'](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\nmodule.exports = characterReference\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\nmodule.exports = asciiHexDigit\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar factorySpace = require('./factory-space.js')\n\nvar codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n var self = this\n var closingFenceConstruct = {\n tokenize: tokenizeClosingFence,\n partial: true\n }\n var initialPrefix = prefixSize(this.events, 'linePrefix')\n var sizeOpen = 0\n var marker\n return start\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\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\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\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\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\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\n function openAfter(code) {\n effects.exit('codeFencedFence')\n return self.interrupt ? ok(code) : content(code)\n }\n\n function content(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(\n closingFenceConstruct,\n after,\n initialPrefix\n ? factorySpace(effects, content, 'linePrefix', initialPrefix + 1)\n : content\n )\n }\n\n effects.enter('codeFlowValue')\n return contentContinue(code)\n }\n\n function contentContinue(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return content(code)\n }\n\n effects.consume(code)\n return contentContinue\n }\n\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n function tokenizeClosingFence(effects, ok, nok) {\n var size = 0\n return factorySpace(\n effects,\n closingSequenceStart,\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n\n function closingSequenceStart(code) {\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return closingSequence(code)\n }\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\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\nmodule.exports = codeFenced\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar factorySpace = require('./factory-space.js')\n\nvar codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented,\n resolve: resolveCodeIndented\n}\nvar indentedContentConstruct = {\n tokenize: tokenizeIndentedContent,\n partial: true\n}\n\nfunction resolveCodeIndented(events, context) {\n var code = {\n type: 'codeIndented',\n start: events[0][1].start,\n end: events[events.length - 1][1].end\n }\n chunkedSplice(events, 0, 0, [['enter', code, context]])\n chunkedSplice(events, events.length, 0, [['exit', code, context]])\n return events\n}\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n return effects.attempt(indentedContentConstruct, afterPrefix, nok)\n\n function afterPrefix(code) {\n if (code === null) {\n return ok(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(indentedContentConstruct, afterPrefix, ok)(code)\n }\n\n effects.enter('codeFlowValue')\n return content(code)\n }\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}\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n var self = this\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)\n\n function afterPrefix(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)\n }\n\n return prefixSize(self.events, 'linePrefix') < 4 ? nok(code) : ok(code)\n }\n}\n\nmodule.exports = codeIndented\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\nvar codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous: previous\n}\n\nfunction resolveCodeText(events) {\n var tailExitIndex = events.length - 4\n var headEnterIndex = 3\n var index\n var 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[tailExitIndex][1].type = events[headEnterIndex][1].type =\n '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\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\nfunction tokenizeCodeText(effects, ok, nok) {\n var sizeOpen = 0\n var size\n var token\n return start\n\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return openingSequence(code)\n }\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\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’t work, and virtual spaces don’t 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 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 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\nmodule.exports = codeText\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar normalizeIdentifier = require('../util/normalize-identifier.js')\nvar factoryDestination = require('./factory-destination.js')\nvar factoryLabel = require('./factory-label.js')\nvar factorySpace = require('./factory-space.js')\nvar factoryWhitespace = require('./factory-whitespace.js')\nvar factoryTitle = require('./factory-title.js')\n\nvar definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\nvar titleConstruct = {\n tokenize: tokenizeTitle,\n partial: true\n}\n\nfunction tokenizeDefinition(effects, ok, nok) {\n var self = this\n var identifier\n return start\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\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’t 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\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n if (self.parser.defined.indexOf(identifier) < 0) {\n self.parser.defined.push(identifier)\n }\n\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizeTitle(effects, ok, nok) {\n return start\n\n function start(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, before)(code)\n : nok(code)\n }\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\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n\nmodule.exports = definition\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\nvar hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n return open\n }\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\nmodule.exports = hardBreakEscape\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar factorySpace = require('./factory-space.js')\n\nvar headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n\nfunction resolveHeadingAtx(events, context) {\n var contentEnd = events.length - 2\n var contentStart = 3\n var content\n var 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 contentType: 'text'\n }\n chunkedSplice(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\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n var self = this\n var size = 0\n return start\n\n function start(code) {\n effects.enter('atxHeading')\n effects.enter('atxHeadingSequence')\n return fenceOpenInside(code)\n }\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\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\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\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\nmodule.exports = headingAtx\n","'use strict'\n\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar fromCharCode = require('../constant/from-char-code.js')\nvar htmlBlockNames = require('../constant/html-block-names.js')\nvar htmlRawNames = require('../constant/html-raw-names.js')\nvar partialBlankLine = require('./partial-blank-line.js')\n\nvar htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\nvar nextBlankConstruct = {\n tokenize: tokenizeNextBlank,\n partial: true\n}\n\nfunction resolveToHtmlFlow(events) {\n var 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\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n var self = this\n var kind\n var startTag\n var buffer\n var index\n var marker\n return start\n\n function start(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\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’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = fromCharCode(code)\n startTag = true\n return tagName\n }\n\n return nok(code)\n }\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\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\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\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\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.indexOf(buffer.toLowerCase()) > -1\n ) {\n kind = 1\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n if (htmlBlockNames.indexOf(buffer.toLowerCase()) > -1) {\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\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 += fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\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\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n\n return completeEnd(code)\n }\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\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\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\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 = undefined\n return completeAttributeValueUnquoted(code)\n }\n\n function completeAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return completeAttributeValueQuotedAfter\n }\n\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return completeAttributeValueQuoted\n }\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\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n\n return nok(code)\n }\n\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n\n return nok(code)\n }\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\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\n function continuationAtLineEnding(code) {\n effects.exit('htmlFlowData')\n return htmlContinueStart(code)\n }\n\n function htmlContinueStart(code) {\n if (code === null) {\n return done(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return htmlContinueStart\n }\n\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\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\n function continuationRawEndTag(code) {\n if (code === 62 && htmlRawNames.indexOf(buffer.toLowerCase()) > -1) {\n effects.consume(code)\n return continuationClose\n }\n\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n buffer += fromCharCode(code)\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n\n function continuationCharacterDataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n return continuation(code)\n }\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\n function done(code) {\n effects.exit('htmlFlow')\n return ok(code)\n }\n}\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n return start\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(partialBlankLine, ok, nok)\n }\n}\n\nmodule.exports = htmlFlow\n","'use strict'\n\n// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.\nvar basics = [\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 'source',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\nmodule.exports = basics\n","'use strict'\n\n// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.\nvar raws = ['pre', 'script', 'style', 'textarea']\n\nmodule.exports = raws\n","'use strict'\n\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n var self = this\n var marker\n var buffer\n var index\n var returnState\n return start\n\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\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\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\n function commentOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentStart\n }\n\n return nok(code)\n }\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\n function commentStartDash(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n return comment(code)\n }\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\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return end\n }\n\n return comment(code)\n }\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\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\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\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\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\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\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return nok(code)\n }\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\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\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\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\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\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\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\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\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\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’t have blank lines in content, so no need to worry about empty\n // tokens.\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.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n }\n\n function afterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\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\nmodule.exports = htmlText\n","'use strict'\n\nvar labelEnd = require('./label-end.js')\n\nvar labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n var self = this\n return start\n\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n 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\n function after(code) {\n /* c8 ignore next */\n return code === 94 &&\n /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs\n ? /* c8 ignore next */\n nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = labelStartImage\n","'use strict'\n\nvar labelEnd = require('./label-end.js')\n\nvar labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n var self = this\n return start\n\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n function after(code) {\n /* c8 ignore next */\n return code === 94 &&\n /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs\n ? /* c8 ignore next */\n nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = labelStartLink\n","'use strict'\n\nvar factorySpace = require('./factory-space.js')\n\nvar lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\nfunction tokenizeLineEnding(effects, ok) {\n return start\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\nmodule.exports = lineEnding\n","'use strict'\n\nvar asciiDigit = require('../character/ascii-digit.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar sizeChunks = require('../util/size-chunks.js')\nvar factorySpace = require('./factory-space.js')\nvar partialBlankLine = require('./partial-blank-line.js')\nvar thematicBreak = require('./thematic-break.js')\n\nvar list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\nvar listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\nvar indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\nfunction tokenizeListStart(effects, ok, nok) {\n var self = this\n var initialSize = prefixSize(self.events, 'linePrefix')\n var size = 0\n return start\n\n function start(code) {\n var 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\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 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 partialBlankLine, // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n\n function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\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\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize + sizeChunks(self.sliceStream(effects.exit('listItemPrefix')))\n return ok(code)\n }\n}\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n var self = this\n self.containerState._closeFlow = undefined\n return effects.check(partialBlankLine, onBlank, notBlank)\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\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n\n self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\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’re closing flow, we’re 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.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )(code)\n }\n}\n\nfunction tokenizeIndent(effects, ok, nok) {\n var self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n\n function afterPrefix(code) {\n return prefixSize(self.events, 'listItemIndent') ===\n self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n var self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4 + 1\n )\n\n function afterPrefix(code) {\n return markdownSpace(code) ||\n !prefixSize(self.events, 'listItemPrefixWhitespace')\n ? nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = list\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar shallow = require('../util/shallow.js')\nvar factorySpace = require('./factory-space.js')\n\nvar setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n\nfunction resolveToSetextUnderline(events, context) {\n var index = events.length\n var content\n var text\n var definition\n var heading // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t 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’ll 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 heading = {\n type: 'setextHeading',\n start: shallow(events[text][1].start),\n end: shallow(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’ll 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 = shallow(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\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n var self = this\n var index = self.events.length\n var marker\n var 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\n function start(code) {\n if (!self.lazy && (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\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\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\nmodule.exports = setextUnderline\n","'use strict'\n\nvar search = /[\\0\\t\\n\\r]/g\n\nfunction preprocess() {\n var start = true\n var column = 1\n var buffer = ''\n var atCarriageReturn\n return preprocessor\n\n function preprocessor(value, encoding, end) {\n var chunks = []\n var match\n var next\n var startPosition\n var endPosition\n var code\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 = match ? 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 if (code === 0) {\n chunks.push(65533)\n column++\n } else if (code === 9) {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n\n while (column++ < next) chunks.push(-1)\n } else if (code === 10) {\n chunks.push(-4)\n column = 1\n } // Must be carriage return.\n else {\n atCarriageReturn = true\n column = 1\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\nmodule.exports = preprocess\n","'use strict'\n\nvar subtokenize = require('./util/subtokenize.js')\n\nfunction postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n\n return events\n}\n\nmodule.exports = postprocess\n","'use strict'\n\nvar mdast2hast = require('mdast-util-to-hast')\n\nmodule.exports = remark2rehype\n\n// Attacher.\n// If a destination is given, runs the destination with the new hast tree\n// (bridge mode).\n// Without destination, returns the tree: further plugins run on that tree\n// (mutate mode).\nfunction remark2rehype(destination, options) {\n if (destination && !destination.process) {\n options = destination\n destination = null\n }\n\n return destination ? bridge(destination, options) : mutate(options)\n}\n\n// Bridge mode.\n// Runs the destination with the new hast tree.\nfunction bridge(destination, options) {\n return transformer\n\n function transformer(node, file, next) {\n destination.run(mdast2hast(node, options), file, done)\n\n function done(error) {\n next(error)\n }\n }\n}\n\n// Mutate-mode.\n// Further transformers run on the hast tree.\nfunction mutate(options) {\n return transformer\n\n function transformer(node) {\n return mdast2hast(node, options)\n }\n}\n","'use strict'\nmodule.exports = require('./lib')\n","'use strict'\n\nmodule.exports = toHast\n\nvar u = require('unist-builder')\nvar visit = require('unist-util-visit')\nvar position = require('unist-util-position')\nvar generated = require('unist-util-generated')\nvar definitions = require('mdast-util-definitions')\nvar one = require('./one')\nvar footer = require('./footer')\nvar handlers = require('./handlers')\n\nvar own = {}.hasOwnProperty\n\nvar deprecationWarningIssued = false\n\n// Factory to transform.\nfunction factory(tree, options) {\n var settings = options || {}\n\n // Issue a warning if the deprecated tag 'allowDangerousHTML' is used\n if (settings.allowDangerousHTML !== undefined && !deprecationWarningIssued) {\n deprecationWarningIssued = true\n console.warn(\n 'mdast-util-to-hast: deprecation: `allowDangerousHTML` is nonstandard, use `allowDangerousHtml` instead'\n )\n }\n\n var dangerous = settings.allowDangerousHtml || settings.allowDangerousHTML\n var footnoteById = {}\n\n h.dangerous = dangerous\n h.definition = definitions(tree)\n h.footnoteById = footnoteById\n h.footnoteOrder = []\n h.augment = augment\n h.handlers = Object.assign({}, handlers, settings.handlers)\n h.unknownHandler = settings.unknownHandler\n h.passThrough = settings.passThrough\n\n visit(tree, 'footnoteDefinition', onfootnotedefinition)\n\n return h\n\n // Finalise the created `right`, a hast node, from `left`, an mdast node.\n function augment(left, right) {\n var data\n var ctx\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (left && left.data) {\n data = left.data\n\n if (data.hName) {\n if (right.type !== 'element') {\n right = {\n type: 'element',\n tagName: '',\n properties: {},\n children: []\n }\n }\n\n right.tagName = data.hName\n }\n\n if (right.type === 'element' && data.hProperties) {\n right.properties = Object.assign({}, right.properties, data.hProperties)\n }\n\n if (right.children && data.hChildren) {\n right.children = data.hChildren\n }\n }\n\n ctx = left && left.position ? left : {position: left}\n\n if (!generated(ctx)) {\n right.position = {\n start: position.start(ctx),\n end: position.end(ctx)\n }\n }\n\n return right\n }\n\n // Create an element for `node`.\n function h(node, tagName, props, children) {\n if (\n (children === undefined || children === null) &&\n typeof props === 'object' &&\n 'length' in props\n ) {\n children = props\n props = {}\n }\n\n return augment(node, {\n type: 'element',\n tagName: tagName,\n properties: props || {},\n children: children || []\n })\n }\n\n function onfootnotedefinition(definition) {\n var id = String(definition.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/8290999/index.js#L26>.\n if (!own.call(footnoteById, id)) {\n footnoteById[id] = definition\n }\n }\n}\n\n// Transform `tree`, which is an mdast node, to a hast node.\nfunction toHast(tree, options) {\n var h = factory(tree, options)\n var node = one(h, tree)\n var foot = footer(h)\n\n if (foot) {\n node.children = node.children.concat(u('text', '\\n'), foot)\n }\n\n return node\n}\n","module.exports = identity\nfunction identity(d) {\n return d\n}\n","'use strict'\n\nmodule.exports = generated\n\nfunction generated(node) {\n return (\n !node ||\n !node.position ||\n !node.position.start ||\n !node.position.start.line ||\n !node.position.start.column ||\n !node.position.end ||\n !node.position.end.line ||\n !node.position.end.column\n )\n}\n","'use strict'\n\nvar visit = require('unist-util-visit')\n\nmodule.exports = getDefinitionFactory\n\nvar own = {}.hasOwnProperty\n\n// Get a definition in `node` by `identifier`.\nfunction getDefinitionFactory(node, options) {\n return getterFactory(gather(node, options))\n}\n\n// Gather all definitions in `node`\nfunction gather(node) {\n var cache = {}\n\n if (!node || !node.type) {\n throw new Error('mdast-util-definitions expected node')\n }\n\n visit(node, 'definition', ondefinition)\n\n return cache\n\n function ondefinition(definition) {\n var id = normalise(definition.identifier)\n if (!own.call(cache, id)) {\n cache[id] = definition\n }\n }\n}\n\n// Factory to get a node from the given definition-cache.\nfunction getterFactory(cache) {\n return getter\n\n // Get a node from the bound definition-cache.\n function getter(identifier) {\n var id = identifier && normalise(identifier)\n return id && own.call(cache, id) ? cache[id] : null\n }\n}\n\nfunction normalise(identifier) {\n return identifier.toUpperCase()\n}\n","'use strict'\n\nmodule.exports = generateFootnotes\n\nvar thematicBreak = require('./handlers/thematic-break')\nvar list = require('./handlers/list')\nvar wrap = require('./wrap')\n\nfunction generateFootnotes(h) {\n var footnoteById = h.footnoteById\n var footnoteOrder = h.footnoteOrder\n var length = footnoteOrder.length\n var index = -1\n var listItems = []\n var def\n var backReference\n var content\n var tail\n\n while (++index < length) {\n def = footnoteById[footnoteOrder[index].toUpperCase()]\n\n if (!def) {\n continue\n }\n\n content = def.children.concat()\n tail = content[content.length - 1]\n backReference = {\n type: 'link',\n url: '#fnref-' + def.identifier,\n data: {hProperties: {className: ['footnote-backref']}},\n children: [{type: 'text', value: '↩'}]\n }\n\n if (!tail || tail.type !== 'paragraph') {\n tail = {type: 'paragraph', children: []}\n content.push(tail)\n }\n\n tail.children.push(backReference)\n\n listItems.push({\n type: 'listItem',\n data: {hProperties: {id: 'fn-' + def.identifier}},\n children: content,\n position: def.position\n })\n }\n\n if (listItems.length === 0) {\n return null\n }\n\n return h(\n null,\n 'div',\n {className: ['footnotes']},\n wrap(\n [\n thematicBreak(h),\n list(h, {type: 'list', ordered: true, children: listItems})\n ],\n true\n )\n )\n}\n","'use strict'\n\nmodule.exports = {\n blockquote: require('./blockquote'),\n break: require('./break'),\n code: require('./code'),\n delete: require('./delete'),\n emphasis: require('./emphasis'),\n footnoteReference: require('./footnote-reference'),\n footnote: require('./footnote'),\n heading: require('./heading'),\n html: require('./html'),\n imageReference: require('./image-reference'),\n image: require('./image'),\n inlineCode: require('./inline-code'),\n linkReference: require('./link-reference'),\n link: require('./link'),\n listItem: require('./list-item'),\n list: require('./list'),\n paragraph: require('./paragraph'),\n root: require('./root'),\n strong: require('./strong'),\n table: require('./table'),\n text: require('./text'),\n thematicBreak: require('./thematic-break'),\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return null\n}\n","'use strict'\n\nmodule.exports = blockquote\n\nvar wrap = require('../wrap')\nvar all = require('../all')\n\nfunction blockquote(h, node) {\n return h(node, 'blockquote', wrap(all(h, node), true))\n}\n","'use strict'\n\nmodule.exports = hardBreak\n\nvar u = require('unist-builder')\n\nfunction hardBreak(h, node) {\n return [h(node, 'br'), u('text', '\\n')]\n}\n","'use strict'\n\nmodule.exports = code\n\nvar u = require('unist-builder')\n\nfunction code(h, node) {\n var value = node.value ? node.value + '\\n' : ''\n // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n // on for years in remark now.\n var lang = node.lang && node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/)\n var props = {}\n var code\n\n if (lang) {\n props.className = ['language-' + lang]\n }\n\n code = h(node, 'code', props, [u('text', value)])\n\n if (node.meta) {\n code.data = {meta: node.meta}\n }\n\n return h(node.position, 'pre', [code])\n}\n","'use strict'\n\nmodule.exports = strikethrough\n\nvar all = require('../all')\n\nfunction strikethrough(h, node) {\n return h(node, 'del', all(h, node))\n}\n","'use strict'\n\nmodule.exports = emphasis\n\nvar all = require('../all')\n\nfunction emphasis(h, node) {\n return h(node, 'em', all(h, node))\n}\n","'use strict'\n\nmodule.exports = footnote\n\nvar footnoteReference = require('./footnote-reference')\n\nfunction footnote(h, node) {\n var footnoteById = h.footnoteById\n var footnoteOrder = h.footnoteOrder\n var identifier = 1\n\n while (identifier in footnoteById) {\n identifier++\n }\n\n identifier = String(identifier)\n\n // No need to check if `identifier` exists in `footnoteOrder`, it’s guaranteed\n // to not exist because we just generated it.\n footnoteOrder.push(identifier)\n\n footnoteById[identifier] = {\n type: 'footnoteDefinition',\n identifier: identifier,\n children: [{type: 'paragraph', children: node.children}],\n position: node.position\n }\n\n return footnoteReference(h, {\n type: 'footnoteReference',\n identifier: identifier,\n position: node.position\n })\n}\n","'use strict'\n\nmodule.exports = heading\n\nvar all = require('../all')\n\nfunction heading(h, node) {\n return h(node, 'h' + node.depth, all(h, node))\n}\n","'use strict'\n\nmodule.exports = html\n\nvar u = require('unist-builder')\n\n// Return either a `raw` node in dangerous mode, otherwise nothing.\nfunction html(h, node) {\n return h.dangerous ? h.augment(node, u('raw', node.value)) : null\n}\n","'use strict'\n\nmodule.exports = imageReference\n\nvar normalize = require('mdurl/encode')\nvar revert = require('../revert')\n\nfunction imageReference(h, node) {\n var def = h.definition(node.identifier)\n var props\n\n if (!def) {\n return revert(h, node)\n }\n\n props = {src: normalize(def.url || ''), alt: node.alt}\n\n if (def.title !== null && def.title !== undefined) {\n props.title = def.title\n }\n\n return h(node, 'img', props)\n}\n","'use strict'\n\nvar normalize = require('mdurl/encode')\n\nmodule.exports = image\n\nfunction image(h, node) {\n var props = {src: normalize(node.url), alt: node.alt}\n\n if (node.title !== null && node.title !== undefined) {\n props.title = node.title\n }\n\n return h(node, 'img', props)\n}\n","'use strict'\n\nmodule.exports = inlineCode\n\nvar u = require('unist-builder')\n\nfunction inlineCode(h, node) {\n var value = node.value.replace(/\\r?\\n|\\r/g, ' ')\n return h(node, 'code', [u('text', value)])\n}\n","'use strict'\n\nmodule.exports = linkReference\n\nvar normalize = require('mdurl/encode')\nvar revert = require('../revert')\nvar all = require('../all')\n\nfunction linkReference(h, node) {\n var def = h.definition(node.identifier)\n var props\n\n if (!def) {\n return revert(h, node)\n }\n\n props = {href: normalize(def.url || '')}\n\n if (def.title !== null && def.title !== undefined) {\n props.title = def.title\n }\n\n return h(node, 'a', props, all(h, node))\n}\n","'use strict'\n\nvar normalize = require('mdurl/encode')\nvar all = require('../all')\n\nmodule.exports = link\n\nfunction link(h, node) {\n var props = {href: normalize(node.url)}\n\n if (node.title !== null && node.title !== undefined) {\n props.title = node.title\n }\n\n return h(node, 'a', props, all(h, node))\n}\n","'use strict'\n\nmodule.exports = listItem\n\nvar u = require('unist-builder')\nvar all = require('../all')\n\nfunction listItem(h, node, parent) {\n var result = all(h, node)\n var head = result[0]\n var loose = parent ? listLoose(parent) : listItemLoose(node)\n var props = {}\n var wrapped = []\n var length\n var index\n var child\n\n if (typeof node.checked === 'boolean') {\n if (!head || head.tagName !== 'p') {\n head = h(null, 'p', [])\n result.unshift(head)\n }\n\n if (head.children.length > 0) {\n head.children.unshift(u('text', ' '))\n }\n\n head.children.unshift(\n h(null, 'input', {\n type: 'checkbox',\n checked: node.checked,\n disabled: true\n })\n )\n\n // According to github-markdown-css, this class hides bullet.\n // See: <https://github.com/sindresorhus/github-markdown-css>.\n props.className = ['task-list-item']\n }\n\n length = result.length\n index = -1\n\n while (++index < length) {\n child = result[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (loose || index !== 0 || child.tagName !== 'p') {\n wrapped.push(u('text', '\\n'))\n }\n\n if (child.tagName === 'p' && !loose) {\n wrapped = wrapped.concat(child.children)\n } else {\n wrapped.push(child)\n }\n }\n\n // Add a final eol.\n if (length && (loose || child.tagName !== 'p')) {\n wrapped.push(u('text', '\\n'))\n }\n\n return h(node, 'li', props, wrapped)\n}\n\nfunction listLoose(node) {\n var loose = node.spread\n var children = node.children\n var length = children.length\n var index = -1\n\n while (!loose && ++index < length) {\n loose = listItemLoose(children[index])\n }\n\n return loose\n}\n\nfunction listItemLoose(node) {\n var spread = node.spread\n\n return spread === undefined || spread === null\n ? node.children.length > 1\n : spread\n}\n","'use strict'\n\nmodule.exports = paragraph\n\nvar all = require('../all')\n\nfunction paragraph(h, node) {\n return h(node, 'p', all(h, node))\n}\n","'use strict'\n\nmodule.exports = root\n\nvar u = require('unist-builder')\nvar wrap = require('../wrap')\nvar all = require('../all')\n\nfunction root(h, node) {\n return h.augment(node, u('root', wrap(all(h, node))))\n}\n","'use strict'\n\nmodule.exports = strong\n\nvar all = require('../all')\n\nfunction strong(h, node) {\n return h(node, 'strong', all(h, node))\n}\n","'use strict'\n\nmodule.exports = table\n\nvar position = require('unist-util-position')\nvar wrap = require('../wrap')\nvar all = require('../all')\n\nfunction table(h, node) {\n var rows = node.children\n var index = rows.length\n var align = node.align || []\n var alignLength = align.length\n var result = []\n var pos\n var row\n var out\n var name\n var cell\n\n while (index--) {\n row = rows[index].children\n name = index === 0 ? 'th' : 'td'\n pos = alignLength || row.length\n out = []\n\n while (pos--) {\n cell = row[pos]\n out[pos] = h(cell, name, {align: align[pos]}, cell ? all(h, cell) : [])\n }\n\n result[index] = h(rows[index], 'tr', wrap(out, true))\n }\n\n return h(\n node,\n 'table',\n wrap(\n [h(result[0].position, 'thead', wrap([result[0]], true))].concat(\n result[1]\n ? h(\n {\n start: position.start(result[1]),\n end: position.end(result[result.length - 1])\n },\n 'tbody',\n wrap(result.slice(1), true)\n )\n : []\n ),\n true\n )\n )\n}\n","'use strict'\n\nmodule.exports = text\n\nvar u = require('unist-builder')\n\nfunction text(h, node) {\n return h.augment(\n node,\n u('text', String(node.value).replace(/[ \\t]*(\\r?\\n|\\r)[ \\t]*/g, '$1'))\n )\n}\n","'use strict'\n\nvar types = require('./util/types')\nvar create = require('./util/create')\nvar caseInsensitiveTransform = require('./util/case-insensitive-transform')\n\nvar boolean = types.boolean\nvar overloadedBoolean = types.overloadedBoolean\nvar booleanish = types.booleanish\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\nvar commaSeparated = types.commaSeparated\n\nmodule.exports = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n capture: boolean,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: commaSeparated,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforePrint: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextMenu: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: commaSeparated,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n }\n})\n","const visit = require('unist-util-visit')\n\nmodule.exports = rehypeFilter\n\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n *\n * @callback AllowElement\n * @param {Element} element\n * @param {number} index\n * @param {Element|Root} parent\n * @returns {boolean|undefined}\n *\n * @typedef RehypeFilterOptions\n * @property {Array.<string>} [allowedElements]\n * @property {Array.<string>} [disallowedElements=[]]\n * @property {AllowElement} [allowElement]\n * @property {boolean} [unwrapDisallowed=false]\n */\n\n/**\n * @type {import('unified').Plugin<[RehypeFilterOptions]>}\n */\nfunction rehypeFilter(options) {\n if (options.allowedElements && options.disallowedElements) {\n throw new TypeError(\n 'Only one of `allowedElements` and `disallowedElements` should be defined'\n )\n }\n\n if (\n options.allowedElements ||\n options.disallowedElements ||\n options.allowElement\n ) {\n return (tree) => {\n const node = /** @type {Root} */ (tree)\n visit(node, 'element', onelement)\n }\n }\n\n /**\n * @param {Node} node_\n * @param {number|null|undefined} index\n * @param {Node|null|undefined} parent_\n * @returns {number|void}\n */\n function onelement(node_, index, parent_) {\n const node = /** @type {Element} */ (node_)\n const parent = /** @type {Element|Root} */ (parent_)\n /** @type {boolean|undefined} */\n let remove\n\n if (options.allowedElements) {\n remove = !options.allowedElements.includes(node.tagName)\n } else if (options.disallowedElements) {\n remove = options.disallowedElements.includes(node.tagName)\n }\n\n if (!remove && options.allowElement && typeof index === 'number') {\n remove = !options.allowElement(node, index, parent)\n }\n\n if (remove && typeof index === 'number') {\n if (options.unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n\n return undefined\n }\n}\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","const protocols = ['http', 'https', 'mailto', 'tel']\n\nmodule.exports = uriTransformer\n\n/**\n * @param {string} uri\n * @returns {string}\n */\nfunction uriTransformer(uri) {\n const url = (uri || '').trim()\n const first = url.charAt(0)\n\n if (first === '#' || first === '/') {\n return url\n }\n\n const colon = url.indexOf(':')\n if (colon === -1) {\n return url\n }\n\n let index = -1\n\n while (++index < protocols.length) {\n const protocol = protocols[index]\n\n if (\n colon === protocol.length &&\n url.slice(0, protocol.length).toLowerCase() === protocol\n ) {\n return url\n }\n }\n\n index = url.indexOf('?')\n if (index !== -1 && colon > index) {\n return url\n }\n\n index = url.indexOf('#')\n if (index !== -1 && colon > index) {\n return url\n }\n\n // eslint-disable-next-line no-script-url\n return 'javascript:void(0)'\n}\n","'use strict'\n\nconst React = require('react')\nconst ReactIs = require('react-is')\nconst svg = require('property-information/svg')\nconst find = require('property-information/find')\nconst hastToReact = require('property-information/hast-to-react.json')\nconst spaces = require('space-separated-tokens')\nconst commas = require('comma-separated-tokens')\nconst style = require('style-to-object')\n\nexports.hastToReact = toReact\nexports.hastChildrenToReact = childrenToReact\n\n/**\n * @typedef {JSX.IntrinsicElements} IntrinsicElements\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('unist').Position} Position\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').DocType} Doctype\n */\n\n/**\n * @typedef Info\n * @property {string?} space\n * @property {string?} attribute\n * @property {string?} property\n * @property {boolean} boolean\n * @property {boolean} booleanish\n * @property {boolean} overloadedBoolean\n * @property {boolean} number\n * @property {boolean} commaSeparated\n * @property {boolean} spaceSeparated\n * @property {boolean} commaOrSpaceSeparated\n * @property {boolean} mustUseProperty\n * @property {boolean} defined\n *\n * @typedef Schema\n * @property {Object.<string, Info>} property\n * @property {Object.<string, string>} normal\n * @property {string?} space\n *\n * @typedef Raw\n * @property {'raw'} type\n * @property {string} value\n *\n * @typedef Context\n * @property {TransformOptions} options\n * @property {Schema} schema\n * @property {number} listDepth\n *\n * @callback TransformLink\n * @param {string} href\n * @param {Array.<Comment|Element|Text>} children\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformImage\n * @param {string} src\n * @param {string} alt\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformLinkTarget\n * @param {string} href\n * @param {Array.<Comment|Element|Text>} children\n * @param {string?} title\n * @returns {string|undefined}\n *\n * @typedef {keyof IntrinsicElements} ReactMarkdownNames\n *\n * To do: is `data-sourcepos` typeable?\n *\n * @typedef ReactMarkdownProps\n * @property {Element} node\n * @property {string} key\n * @property {ReactNode[]} children\n * @property {Position?} [sourcePosition] Passed when `options.rawSourcePos` is given\n * @property {number} [index] Passed when `options.includeElementIndex` is given\n * @property {number} [siblingCount] Passed when `options.includeElementIndex` is given\n *\n * @callback CodeComponent\n * @param {JSX.IntrinsicElements['code'] & ReactMarkdownProps & {inline?: boolean}} props\n * @returns {ReactNode}\n *\n * @callback HeadingComponent\n * @param {JSX.IntrinsicElements['h1'] & ReactMarkdownProps & {level: number}} props\n * @returns {ReactNode}\n *\n * @callback LiComponent\n * @param {JSX.IntrinsicElements['li'] & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} props\n * @returns {ReactNode}\n *\n * @callback OrderedListComponent\n * @param {JSX.IntrinsicElements['ol'] & ReactMarkdownProps & {depth: number, ordered: true}} props\n * @returns {ReactNode}\n *\n * @callback TableCellComponent\n * @param {JSX.IntrinsicElements['table'] & ReactMarkdownProps & {style?: Object.<string, unknown>, isHeader: boolean}} props\n * @returns {ReactNode}\n *\n * @callback TableRowComponent\n * @param {JSX.IntrinsicElements['tr'] & ReactMarkdownProps & {isHeader: boolean}} props\n * @returns {ReactNode}\n *\n * @callback UnorderedListComponent\n * @param {JSX.IntrinsicElements['ul'] & ReactMarkdownProps & {depth: number, ordered: false}} props\n * @returns {ReactNode}\n *\n * @typedef SpecialComponents\n * @property {CodeComponent|ReactMarkdownNames} code\n * @property {HeadingComponent|ReactMarkdownNames} h1\n * @property {HeadingComponent|ReactMarkdownNames} h2\n * @property {HeadingComponent|ReactMarkdownNames} h3\n * @property {HeadingComponent|ReactMarkdownNames} h4\n * @property {HeadingComponent|ReactMarkdownNames} h5\n * @property {HeadingComponent|ReactMarkdownNames} h6\n * @property {LiComponent|ReactMarkdownNames} li\n * @property {OrderedListComponent|ReactMarkdownNames} ol\n * @property {TableCellComponent|ReactMarkdownNames} td\n * @property {TableCellComponent|ReactMarkdownNames} th\n * @property {TableRowComponent|ReactMarkdownNames} tr\n * @property {UnorderedListComponent|ReactMarkdownNames} ul\n *\n * @typedef {{[TagName in keyof IntrinsicElements]: TagName | ((props: IntrinsicElements[TagName] & ReactMarkdownProps) => ReactNode)}} NormalComponents\n * @typedef {Partial<Omit<NormalComponents, keyof SpecialComponents> & SpecialComponents>} Components\n */\n\n/**\n * @typedef TransformOptions\n * @property {boolean} [sourcePos=false]\n * @property {boolean} [rawSourcePos=false]\n * @property {boolean} [skipHtml=false]\n * @property {boolean} [includeElementIndex=false]\n * @property {null|false|TransformLink} [transformLinkUri]\n * @property {TransformImage} [transformImageUri]\n * @property {string|TransformLinkTarget} [linkTarget]\n * @property {Components} [components]\n */\n\nconst own = {}.hasOwnProperty\n\n// The table-related elements that must not contain whitespace text according\n// to React.\nconst tableElements = new Set(['table', 'thead', 'tbody', 'tfoot', 'tr'])\n\n/**\n * @param {Context} context\n * @param {Element|Root} node\n */\nfunction childrenToReact(context, node) {\n /** @type {Array.<ReactNode>} */\n const children = []\n let childIndex = -1\n /** @type {Comment|Doctype|Element|Raw|Text} */\n let child\n\n while (++childIndex < node.children.length) {\n child = node.children[childIndex]\n\n if (child.type === 'element') {\n children.push(toReact(context, child, childIndex, node))\n } else if (child.type === 'text') {\n // React does not permit whitespace text elements as children of table:\n // cf. https://github.com/remarkjs/react-markdown/issues/576\n if (\n node.type !== 'element' ||\n !tableElements.has(node.tagName) ||\n child.value !== '\\n'\n ) {\n children.push(child.value)\n }\n }\n // @ts-expect-error `raw` nodes are non-standard\n else if (child.type === 'raw' && !context.options.skipHtml) {\n // Default behavior is to show (encoded) HTML.\n // @ts-expect-error `raw` nodes are non-standard\n children.push(child.value)\n }\n }\n\n return children\n}\n\n/**\n * @param {Context} context\n * @param {Element} node\n * @param {number} index\n * @param {Element|Root} parent\n */\nfunction toReact(context, node, index, parent) {\n const options = context.options\n const parentSchema = context.schema\n /** @type {ReactMarkdownNames} */\n // @ts-expect-error assume a known HTML/SVG element.\n const name = node.tagName\n /** @type {Object.<string, unknown>} */\n const properties = {}\n let schema = parentSchema\n /** @type {string} */\n let property\n\n if (parentSchema.space === 'html' && name === 'svg') {\n schema = svg\n context.schema = schema\n }\n\n /* istanbul ignore else - types say they’re optional. */\n if (node.properties) {\n for (property in node.properties) {\n /* istanbul ignore else - prototype polution. */\n if (own.call(node.properties, property)) {\n addProperty(properties, property, node.properties[property], context)\n }\n }\n }\n\n if (name === 'ol' || name === 'ul') {\n context.listDepth++\n }\n\n const children = childrenToReact(context, node)\n\n if (name === 'ol' || name === 'ul') {\n context.listDepth--\n }\n\n // Restore parent schema.\n context.schema = parentSchema\n\n // Nodes created by plugins do not have positional info, in which case we use\n // an object that matches the positon interface.\n const position = node.position || {\n start: {line: null, column: null, offset: null},\n end: {line: null, column: null, offset: null}\n }\n const component =\n options.components && own.call(options.components, name)\n ? options.components[name]\n : name\n const basic = typeof component === 'string' || component === React.Fragment\n\n if (!ReactIs.isValidElementType(component)) {\n throw new TypeError(\n `Component for name \\`${name}\\` not defined or is not renderable`\n )\n }\n\n properties.key = [\n name,\n position.start.line,\n position.start.column,\n index\n ].join('-')\n\n if (name === 'a' && options.linkTarget) {\n properties.target =\n typeof options.linkTarget === 'function'\n ? // @ts-expect-error assume `href` is a string\n options.linkTarget(properties.href, node.children, properties.title)\n : options.linkTarget\n }\n\n if (name === 'a' && options.transformLinkUri) {\n properties.href = options.transformLinkUri(\n // @ts-expect-error assume `href` is a string\n properties.href,\n node.children,\n properties.title\n )\n }\n\n if (\n !basic &&\n name === 'code' &&\n parent.type === 'element' &&\n parent.tagName !== 'pre'\n ) {\n properties.inline = true\n }\n\n if (\n !basic &&\n (name === 'h1' ||\n name === 'h2' ||\n name === 'h3' ||\n name === 'h4' ||\n name === 'h5' ||\n name === 'h6')\n ) {\n properties.level = parseInt(name.charAt(1), 10)\n }\n\n if (name === 'img' && options.transformImageUri) {\n properties.src = options.transformImageUri(\n // @ts-expect-error assume `src` is a string\n properties.src,\n properties.alt,\n properties.title\n )\n }\n\n if (!basic && name === 'li' && parent.type === 'element') {\n const input = getInputElement(node)\n properties.checked =\n input && input.properties ? Boolean(input.properties.checked) : null\n properties.index = getElementsBeforeCount(parent, node)\n properties.ordered = parent.tagName === 'ol'\n }\n\n if (!basic && (name === 'ol' || name === 'ul')) {\n properties.ordered = name === 'ol'\n properties.depth = context.listDepth\n }\n\n if (name === 'td' || name === 'th') {\n if (properties.align) {\n if (!properties.style) properties.style = {}\n // @ts-expect-error assume `style` is an object\n properties.style.textAlign = properties.align\n delete properties.align\n }\n\n if (!basic) {\n properties.isHeader = name === 'th'\n }\n }\n\n if (!basic && name === 'tr' && parent.type === 'element') {\n properties.isHeader = Boolean(parent.tagName === 'thead')\n }\n\n // If `sourcePos` is given, pass source information (line/column info from markdown source).\n if (options.sourcePos) {\n properties['data-sourcepos'] = flattenPosition(position)\n }\n\n if (!basic && options.rawSourcePos) {\n properties.sourcePosition = node.position\n }\n\n // If `includeElementIndex` is given, pass node index info to components.\n if (!basic && options.includeElementIndex) {\n properties.index = getElementsBeforeCount(parent, node)\n properties.siblingCount = getElementsBeforeCount(parent)\n }\n\n if (!basic) {\n properties.node = node\n }\n\n // Ensure no React warnings are emitted for void elements w/ children.\n return children.length > 0\n ? React.createElement(component, properties, children)\n : React.createElement(component, properties)\n}\n\n/**\n * @param {Element|Root} node\n * @returns {Element?}\n */\nfunction getInputElement(node) {\n let index = -1\n\n while (++index < node.children.length) {\n const child = node.children[index]\n\n if (child.type === 'element' && child.tagName === 'input') {\n return child\n }\n }\n\n return null\n}\n\n/**\n * @param {Element|Root} parent\n * @param {Element} [node]\n * @returns {number}\n */\nfunction getElementsBeforeCount(parent, node) {\n let index = -1\n let count = 0\n\n while (++index < parent.children.length) {\n if (parent.children[index] === node) break\n if (parent.children[index].type === 'element') count++\n }\n\n return count\n}\n\n/**\n * @param {Object.<string, unknown>} props\n * @param {string} prop\n * @param {unknown} value\n * @param {Context} ctx\n */\nfunction addProperty(props, prop, value, ctx) {\n /** @type {Info} */\n const info = find(ctx.schema, prop)\n let result = value\n\n // Ignore nullish and `NaN` values.\n // eslint-disable-next-line no-self-compare\n if (result === null || result === undefined || result !== result) {\n return\n }\n\n // Accept `array`.\n // Most props are space-separated.\n if (result && typeof result === 'object' && 'length' in result) {\n // type-coverage:ignore-next-line remove when typed.\n result = (info.commaSeparated ? commas : spaces).stringify(result)\n }\n\n if (info.property === 'style' && typeof result === 'string') {\n result = parseStyle(result)\n }\n\n /* istanbul ignore else - types say they’re optional. */\n if (info.space && info.property) {\n props[\n own.call(hastToReact, info.property)\n ? hastToReact[info.property]\n : info.property\n ] = result\n } else if (info.attribute) {\n props[info.attribute] = result\n }\n}\n\n/**\n * @param {string} value\n * @returns {Object.<string, string>}\n */\nfunction parseStyle(value) {\n /** @type {Object.<string, string>} */\n const result = {}\n\n try {\n style(value, iterator)\n } catch (/** @type {unknown} */ _) {\n // Silent.\n }\n\n return result\n\n /**\n * @param {string} name\n * @param {string} v\n */\n function iterator(name, v) {\n const k = name.slice(0, 4) === '-ms-' ? `ms-${name.slice(4)}` : name\n result[k.replace(/-([a-z])/g, styleReplacer)] = v\n }\n}\n\n/**\n * @param {unknown} _\n * @param {string} $1\n */\nfunction styleReplacer(_, $1) {\n return $1.toUpperCase()\n}\n\n/**\n * @param {Position|{start: {line: null, column: null, offset: null}, end: {line: null, column: null, offset: null}}} pos\n * @returns {string}\n */\nfunction flattenPosition(pos) {\n return [\n pos.start.line,\n ':',\n pos.start.column,\n '-',\n pos.end.line,\n ':',\n pos.end.column\n ]\n .map((d) => String(d))\n .join('')\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict'\n\nvar types = require('./util/types')\nvar create = require('./util/create')\nvar caseSensitiveTransform = require('./util/case-sensitive-transform')\n\nvar boolean = types.boolean\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\nvar commaSeparated = types.commaSeparated\nvar commaOrSpaceSeparated = types.commaOrSpaceSeparated\n\nmodule.exports = create({\n space: 'svg',\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n transform: caseSensitiveTransform,\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n }\n})\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function(node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","'use strict'\n\nvar hastUtilRaw = require('hast-util-raw')\n\nmodule.exports = rehypeRaw\n\nfunction rehypeRaw(options) {\n return transform\n function transform(tree, file) {\n return hastUtilRaw(tree, file, options)\n }\n}\n","'use strict'\n\nvar Parser = require('parse5/lib/parser')\nvar pos = require('unist-util-position')\nvar visit = require('unist-util-visit')\nvar fromParse5 = require('hast-util-from-parse5')\nvar toParse5 = require('hast-util-to-parse5')\nvar voids = require('html-void-elements')\nvar ns = require('web-namespaces')\nvar zwitch = require('zwitch')\nvar xtend = require('xtend')\n\nmodule.exports = wrap\n\nvar inTemplateMode = 'IN_TEMPLATE_MODE'\nvar dataState = 'DATA_STATE'\nvar characterToken = 'CHARACTER_TOKEN'\nvar startTagToken = 'START_TAG_TOKEN'\nvar endTagToken = 'END_TAG_TOKEN'\nvar commentToken = 'COMMENT_TOKEN'\nvar doctypeToken = 'DOCTYPE_TOKEN'\n\nvar parseOptions = {sourceCodeLocationInfo: true, scriptingEnabled: false}\n\nfunction wrap(tree, file, options) {\n var parser = new Parser(parseOptions)\n var one = zwitch('type', {\n handlers: {\n root: root,\n element: element,\n text: text,\n comment: comment,\n doctype: doctype,\n raw: raw\n },\n unknown: unknown\n })\n var stitches\n var tokenizer\n var preprocessor\n var posTracker\n var locationTracker\n var result\n var index\n\n if (file && !('contents' in file)) {\n options = file\n file = undefined\n }\n\n if (options && options.passThrough) {\n index = -1\n\n while (++index < options.passThrough.length) {\n one.handlers[options.passThrough[index]] = stitch\n }\n }\n\n result = fromParse5(documentMode(tree) ? document() : fragment(), file)\n\n if (stitches) {\n visit(result, 'comment', mend)\n }\n\n // Unpack if possible and when not given a `root`.\n if (tree.type !== 'root' && result.children.length === 1) {\n return result.children[0]\n }\n\n return result\n\n function mend(node, index, parent) {\n if (node.value.stitch) {\n parent.children[index] = node.value.stitch\n return index\n }\n }\n\n function fragment() {\n var context = {\n nodeName: 'template',\n tagName: 'template',\n attrs: [],\n namespaceURI: ns.html,\n childNodes: []\n }\n var mock = {\n nodeName: 'documentmock',\n tagName: 'documentmock',\n attrs: [],\n namespaceURI: ns.html,\n childNodes: []\n }\n var doc = {nodeName: '#document-fragment', childNodes: []}\n\n parser._bootstrap(mock, context)\n parser._pushTmplInsertionMode(inTemplateMode)\n parser._initTokenizerForFragmentParsing()\n parser._insertFakeRootElement()\n parser._resetInsertionMode()\n parser._findFormInFragmentContext()\n\n tokenizer = parser.tokenizer\n preprocessor = tokenizer.preprocessor\n locationTracker = tokenizer.__mixins[0]\n posTracker = locationTracker.posTracker\n\n one(tree)\n\n parser._adoptNodes(mock.childNodes[0], doc)\n\n return doc\n }\n\n function document() {\n var doc = parser.treeAdapter.createDocument()\n\n parser._bootstrap(doc, null)\n tokenizer = parser.tokenizer\n preprocessor = tokenizer.preprocessor\n locationTracker = tokenizer.__mixins[0]\n posTracker = locationTracker.posTracker\n\n one(tree)\n\n return doc\n }\n\n function all(nodes) {\n var index = -1\n\n /* istanbul ignore else - invalid nodes, see rehypejs/rehype-raw#7. */\n if (nodes) {\n while (++index < nodes.length) {\n one(nodes[index])\n }\n }\n }\n\n function root(node) {\n all(node.children)\n }\n\n function element(node) {\n resetTokenizer()\n parser._processToken(startTag(node), ns.html)\n\n all(node.children)\n\n if (voids.indexOf(node.tagName) < 0) {\n resetTokenizer()\n parser._processToken(endTag(node))\n }\n }\n\n function text(node) {\n resetTokenizer()\n parser._processToken({\n type: characterToken,\n chars: node.value,\n location: createParse5Location(node)\n })\n }\n\n function doctype(node) {\n var p5 = toParse5(node)\n resetTokenizer()\n parser._processToken({\n type: doctypeToken,\n name: p5.name,\n forceQuirks: false,\n publicId: p5.publicId,\n systemId: p5.systemId,\n location: createParse5Location(node)\n })\n }\n\n function comment(node) {\n resetTokenizer()\n parser._processToken({\n type: commentToken,\n data: node.value,\n location: createParse5Location(node)\n })\n }\n\n function raw(node) {\n var start = pos.start(node)\n var line = start.line || 1\n var column = start.column || 1\n var offset = start.offset || 0\n var token\n\n // Reset preprocessor:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/tokenizer/preprocessor.js>.\n preprocessor.html = null\n preprocessor.pos = -1\n preprocessor.lastGapPos = -1\n preprocessor.lastCharPos = -1\n preprocessor.gapStack = []\n preprocessor.skipNextNewLine = false\n preprocessor.lastChunkWritten = false\n preprocessor.endOfChunkHit = false\n\n // Reset preprocessor mixin:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/position-tracking/preprocessor-mixin.js>.\n posTracker.isEol = false\n posTracker.lineStartPos = -column + 1 // Looks weird, but ensures we get correct positional info.\n posTracker.droppedBufferSize = offset\n posTracker.offset = 0\n posTracker.col = 1\n posTracker.line = line\n\n // Reset location tracker:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/location-info/tokenizer-mixin.js>.\n locationTracker.currentAttrLocation = null\n locationTracker.ctLoc = createParse5Location(node)\n\n // See the code for `parse` and `parseFragment`:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/parser/index.js#L371>.\n tokenizer.write(node.value)\n parser._runParsingLoop(null)\n\n // Process final characters if they’re still there after hibernating.\n // Similar to:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/location-info/tokenizer-mixin.js#L95>.\n token = tokenizer.currentCharacterToken\n\n if (token) {\n token.location.endLine = posTracker.line\n token.location.endCol = posTracker.col + 1\n token.location.endOffset = posTracker.offset + 1\n parser._processToken(token)\n }\n }\n\n function stitch(node) {\n var clone = Object.assign({}, node)\n\n stitches = true\n\n // Recurse, because to somewhat handle `[<x>]</x>` (where `[]` denotes the\n // passed through node).\n if (node.children) {\n clone.children = wrap(\n {type: 'root', children: node.children},\n file,\n options\n ).children\n }\n\n // Hack: `value` is supposed to be a string, but as none of the tools\n // (`parse5` or `hast-util-from-parse5`) looks at it, we can pass nodes\n // through.\n comment({value: {stitch: clone}})\n }\n\n function resetTokenizer() {\n // Reset tokenizer:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/tokenizer/index.js#L218-L234>.\n // Especially putting it back in the `data` state is useful: some elements,\n // like textareas and iframes, change the state.\n // See GH-7.\n // But also if broken HTML is in `raw`, and then a correct element is given.\n // See GH-11.\n tokenizer.tokenQueue = []\n tokenizer.state = dataState\n tokenizer.returnState = ''\n tokenizer.charRefCode = -1\n tokenizer.tempBuff = []\n tokenizer.lastStartTagName = ''\n tokenizer.consumedAfterSnapshot = -1\n tokenizer.active = false\n tokenizer.currentCharacterToken = null\n tokenizer.currentToken = null\n tokenizer.currentAttr = null\n }\n}\n\nfunction startTag(node) {\n var location = createParse5Location(node)\n\n location.startTag = xtend(location)\n\n return {\n type: startTagToken,\n tagName: node.tagName,\n selfClosing: false,\n attrs: attributes(node),\n location: location\n }\n}\n\nfunction attributes(node) {\n return toParse5({\n tagName: node.tagName,\n type: 'element',\n properties: node.properties\n }).attrs\n}\n\nfunction endTag(node) {\n var location = createParse5Location(node)\n\n location.endTag = xtend(location)\n\n return {\n type: endTagToken,\n tagName: node.tagName,\n attrs: [],\n location: location\n }\n}\n\nfunction unknown(node) {\n throw new Error('Cannot compile `' + node.type + '` node')\n}\n\nfunction documentMode(node) {\n var head = node.type === 'root' ? node.children[0] : node\n\n return head && (head.type === 'doctype' || head.tagName === 'html')\n}\n\nfunction createParse5Location(node) {\n var start = pos.start(node)\n var end = pos.end(node)\n\n return {\n startLine: start.line,\n startCol: start.column,\n startOffset: start.offset,\n endLine: end.line,\n endCol: end.column,\n endOffset: end.offset\n }\n}\n","'use strict';\n\nconst Tokenizer = require('../tokenizer');\nconst OpenElementStack = require('./open-element-stack');\nconst FormattingElementList = require('./formatting-element-list');\nconst LocationInfoParserMixin = require('../extensions/location-info/parser-mixin');\nconst ErrorReportingParserMixin = require('../extensions/error-reporting/parser-mixin');\nconst Mixin = require('../utils/mixin');\nconst defaultTreeAdapter = require('../tree-adapters/default');\nconst mergeOptions = require('../utils/merge-options');\nconst doctype = require('../common/doctype');\nconst foreignContent = require('../common/foreign-content');\nconst ERR = require('../common/error-codes');\nconst unicode = require('../common/unicode');\nconst HTML = require('../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\nconst ATTRS = HTML.ATTRS;\n\nconst DEFAULT_OPTIONS = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n onParseError: null,\n treeAdapter: defaultTreeAdapter\n};\n\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n\n//Insertion modes\nconst INITIAL_MODE = 'INITIAL_MODE';\nconst BEFORE_HTML_MODE = 'BEFORE_HTML_MODE';\nconst BEFORE_HEAD_MODE = 'BEFORE_HEAD_MODE';\nconst IN_HEAD_MODE = 'IN_HEAD_MODE';\nconst IN_HEAD_NO_SCRIPT_MODE = 'IN_HEAD_NO_SCRIPT_MODE';\nconst AFTER_HEAD_MODE = 'AFTER_HEAD_MODE';\nconst IN_BODY_MODE = 'IN_BODY_MODE';\nconst TEXT_MODE = 'TEXT_MODE';\nconst IN_TABLE_MODE = 'IN_TABLE_MODE';\nconst IN_TABLE_TEXT_MODE = 'IN_TABLE_TEXT_MODE';\nconst IN_CAPTION_MODE = 'IN_CAPTION_MODE';\nconst IN_COLUMN_GROUP_MODE = 'IN_COLUMN_GROUP_MODE';\nconst IN_TABLE_BODY_MODE = 'IN_TABLE_BODY_MODE';\nconst IN_ROW_MODE = 'IN_ROW_MODE';\nconst IN_CELL_MODE = 'IN_CELL_MODE';\nconst IN_SELECT_MODE = 'IN_SELECT_MODE';\nconst IN_SELECT_IN_TABLE_MODE = 'IN_SELECT_IN_TABLE_MODE';\nconst IN_TEMPLATE_MODE = 'IN_TEMPLATE_MODE';\nconst AFTER_BODY_MODE = 'AFTER_BODY_MODE';\nconst IN_FRAMESET_MODE = 'IN_FRAMESET_MODE';\nconst AFTER_FRAMESET_MODE = 'AFTER_FRAMESET_MODE';\nconst AFTER_AFTER_BODY_MODE = 'AFTER_AFTER_BODY_MODE';\nconst AFTER_AFTER_FRAMESET_MODE = 'AFTER_AFTER_FRAMESET_MODE';\n\n//Insertion mode reset map\nconst INSERTION_MODE_RESET_MAP = {\n [$.TR]: IN_ROW_MODE,\n [$.TBODY]: IN_TABLE_BODY_MODE,\n [$.THEAD]: IN_TABLE_BODY_MODE,\n [$.TFOOT]: IN_TABLE_BODY_MODE,\n [$.CAPTION]: IN_CAPTION_MODE,\n [$.COLGROUP]: IN_COLUMN_GROUP_MODE,\n [$.TABLE]: IN_TABLE_MODE,\n [$.BODY]: IN_BODY_MODE,\n [$.FRAMESET]: IN_FRAMESET_MODE\n};\n\n//Template insertion mode switch map\nconst TEMPLATE_INSERTION_MODE_SWITCH_MAP = {\n [$.CAPTION]: IN_TABLE_MODE,\n [$.COLGROUP]: IN_TABLE_MODE,\n [$.TBODY]: IN_TABLE_MODE,\n [$.TFOOT]: IN_TABLE_MODE,\n [$.THEAD]: IN_TABLE_MODE,\n [$.COL]: IN_COLUMN_GROUP_MODE,\n [$.TR]: IN_TABLE_BODY_MODE,\n [$.TD]: IN_ROW_MODE,\n [$.TH]: IN_ROW_MODE\n};\n\n//Token handlers map for insertion modes\nconst TOKEN_HANDLERS = {\n [INITIAL_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInInitialMode,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInInitialMode,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: doctypeInInitialMode,\n [Tokenizer.START_TAG_TOKEN]: tokenInInitialMode,\n [Tokenizer.END_TAG_TOKEN]: tokenInInitialMode,\n [Tokenizer.EOF_TOKEN]: tokenInInitialMode\n },\n [BEFORE_HTML_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenBeforeHtml,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenBeforeHtml,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagBeforeHtml,\n [Tokenizer.END_TAG_TOKEN]: endTagBeforeHtml,\n [Tokenizer.EOF_TOKEN]: tokenBeforeHtml\n },\n [BEFORE_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenBeforeHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenBeforeHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagBeforeHead,\n [Tokenizer.END_TAG_TOKEN]: endTagBeforeHead,\n [Tokenizer.EOF_TOKEN]: tokenBeforeHead\n },\n [IN_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagInHead,\n [Tokenizer.END_TAG_TOKEN]: endTagInHead,\n [Tokenizer.EOF_TOKEN]: tokenInHead\n },\n [IN_HEAD_NO_SCRIPT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInHeadNoScript,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInHeadNoScript,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagInHeadNoScript,\n [Tokenizer.END_TAG_TOKEN]: endTagInHeadNoScript,\n [Tokenizer.EOF_TOKEN]: tokenInHeadNoScript\n },\n [AFTER_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterHead,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterHead,\n [Tokenizer.EOF_TOKEN]: tokenAfterHead\n },\n [IN_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInBody,\n [Tokenizer.END_TAG_TOKEN]: endTagInBody,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [TEXT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: ignoreToken,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: ignoreToken,\n [Tokenizer.END_TAG_TOKEN]: endTagInText,\n [Tokenizer.EOF_TOKEN]: eofInText\n },\n [IN_TABLE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTable,\n [Tokenizer.END_TAG_TOKEN]: endTagInTable,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TABLE_TEXT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTableText,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInTableText,\n [Tokenizer.COMMENT_TOKEN]: tokenInTableText,\n [Tokenizer.DOCTYPE_TOKEN]: tokenInTableText,\n [Tokenizer.START_TAG_TOKEN]: tokenInTableText,\n [Tokenizer.END_TAG_TOKEN]: tokenInTableText,\n [Tokenizer.EOF_TOKEN]: tokenInTableText\n },\n [IN_CAPTION_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInCaption,\n [Tokenizer.END_TAG_TOKEN]: endTagInCaption,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_COLUMN_GROUP_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInColumnGroup,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInColumnGroup,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInColumnGroup,\n [Tokenizer.END_TAG_TOKEN]: endTagInColumnGroup,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TABLE_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTableBody,\n [Tokenizer.END_TAG_TOKEN]: endTagInTableBody,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_ROW_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInRow,\n [Tokenizer.END_TAG_TOKEN]: endTagInRow,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_CELL_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInCell,\n [Tokenizer.END_TAG_TOKEN]: endTagInCell,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_SELECT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInSelect,\n [Tokenizer.END_TAG_TOKEN]: endTagInSelect,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_SELECT_IN_TABLE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInSelectInTable,\n [Tokenizer.END_TAG_TOKEN]: endTagInSelectInTable,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TEMPLATE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTemplate,\n [Tokenizer.END_TAG_TOKEN]: endTagInTemplate,\n [Tokenizer.EOF_TOKEN]: eofInTemplate\n },\n [AFTER_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterBody,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToRootHtmlElement,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterBody,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterBody,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [IN_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInFrameset,\n [Tokenizer.END_TAG_TOKEN]: endTagInFrameset,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterFrameset,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterFrameset,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_AFTER_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToDocument,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterAfterBody,\n [Tokenizer.END_TAG_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_AFTER_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToDocument,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterAfterFrameset,\n [Tokenizer.END_TAG_TOKEN]: ignoreToken,\n [Tokenizer.EOF_TOKEN]: stopParsing\n }\n};\n\n//Parser\nclass Parser {\n constructor(options) {\n this.options = mergeOptions(DEFAULT_OPTIONS, options);\n\n this.treeAdapter = this.options.treeAdapter;\n this.pendingScript = null;\n\n if (this.options.sourceCodeLocationInfo) {\n Mixin.install(this, LocationInfoParserMixin);\n }\n\n if (this.options.onParseError) {\n Mixin.install(this, ErrorReportingParserMixin, { onParseError: this.options.onParseError });\n }\n }\n\n // API\n parse(html) {\n const document = this.treeAdapter.createDocument();\n\n this._bootstrap(document, null);\n this.tokenizer.write(html, true);\n this._runParsingLoop(null);\n\n return document;\n }\n\n parseFragment(html, fragmentContext) {\n //NOTE: use <template> element as a fragment context if context element was not provided,\n //so we will parse in \"forgiving\" manner\n if (!fragmentContext) {\n fragmentContext = this.treeAdapter.createElement($.TEMPLATE, NS.HTML, []);\n }\n\n //NOTE: create fake element which will be used as 'document' for fragment parsing.\n //This is important for jsdom there 'document' can't be recreated, therefore\n //fragment parsing causes messing of the main `document`.\n const documentMock = this.treeAdapter.createElement('documentmock', NS.HTML, []);\n\n this._bootstrap(documentMock, fragmentContext);\n\n if (this.treeAdapter.getTagName(fragmentContext) === $.TEMPLATE) {\n this._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n }\n\n this._initTokenizerForFragmentParsing();\n this._insertFakeRootElement();\n this._resetInsertionMode();\n this._findFormInFragmentContext();\n this.tokenizer.write(html, true);\n this._runParsingLoop(null);\n\n const rootElement = this.treeAdapter.getFirstChild(documentMock);\n const fragment = this.treeAdapter.createDocumentFragment();\n\n this._adoptNodes(rootElement, fragment);\n\n return fragment;\n }\n\n //Bootstrap parser\n _bootstrap(document, fragmentContext) {\n this.tokenizer = new Tokenizer(this.options);\n\n this.stopped = false;\n\n this.insertionMode = INITIAL_MODE;\n this.originalInsertionMode = '';\n\n this.document = document;\n this.fragmentContext = fragmentContext;\n\n this.headElement = null;\n this.formElement = null;\n\n this.openElements = new OpenElementStack(this.document, this.treeAdapter);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n\n this.tmplInsertionModeStack = [];\n this.tmplInsertionModeStackTop = -1;\n this.currentTmplInsertionMode = null;\n\n this.pendingCharacterTokens = [];\n this.hasNonWhitespacePendingCharacterToken = false;\n\n this.framesetOk = true;\n this.skipNextNewLine = false;\n this.fosterParentingEnabled = false;\n }\n\n //Errors\n _err() {\n // NOTE: err reporting is noop by default. Enabled by mixin.\n }\n\n //Parsing loop\n _runParsingLoop(scriptHandler) {\n while (!this.stopped) {\n this._setupTokenizerCDATAMode();\n\n const token = this.tokenizer.getNextToken();\n\n if (token.type === Tokenizer.HIBERNATION_TOKEN) {\n break;\n }\n\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n\n if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN && token.chars[0] === '\\n') {\n if (token.chars.length === 1) {\n continue;\n }\n\n token.chars = token.chars.substr(1);\n }\n }\n\n this._processInputToken(token);\n\n if (scriptHandler && this.pendingScript) {\n break;\n }\n }\n }\n\n runParsingLoopForCurrentChunk(writeCallback, scriptHandler) {\n this._runParsingLoop(scriptHandler);\n\n if (scriptHandler && this.pendingScript) {\n const script = this.pendingScript;\n\n this.pendingScript = null;\n\n scriptHandler(script);\n\n return;\n }\n\n if (writeCallback) {\n writeCallback();\n }\n }\n\n //Text parsing\n _setupTokenizerCDATAMode() {\n const current = this._getAdjustedCurrentElement();\n\n this.tokenizer.allowCDATA =\n current &&\n current !== this.document &&\n this.treeAdapter.getNamespaceURI(current) !== NS.HTML &&\n !this._isIntegrationPoint(current);\n }\n\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = TEXT_MODE;\n }\n\n switchToPlaintextParsing() {\n this.insertionMode = TEXT_MODE;\n this.originalInsertionMode = IN_BODY_MODE;\n this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n }\n\n //Fragment parsing\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext\n ? this.fragmentContext\n : this.openElements.current;\n }\n\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n\n do {\n if (this.treeAdapter.getTagName(node) === $.FORM) {\n this.formElement = node;\n break;\n }\n\n node = this.treeAdapter.getParentNode(node);\n } while (node);\n }\n\n _initTokenizerForFragmentParsing() {\n if (this.treeAdapter.getNamespaceURI(this.fragmentContext) === NS.HTML) {\n const tn = this.treeAdapter.getTagName(this.fragmentContext);\n\n if (tn === $.TITLE || tn === $.TEXTAREA) {\n this.tokenizer.state = Tokenizer.MODE.RCDATA;\n } else if (\n tn === $.STYLE ||\n tn === $.XMP ||\n tn === $.IFRAME ||\n tn === $.NOEMBED ||\n tn === $.NOFRAMES ||\n tn === $.NOSCRIPT\n ) {\n this.tokenizer.state = Tokenizer.MODE.RAWTEXT;\n } else if (tn === $.SCRIPT) {\n this.tokenizer.state = Tokenizer.MODE.SCRIPT_DATA;\n } else if (tn === $.PLAINTEXT) {\n this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n }\n }\n }\n\n //Tree mutation\n _setDocumentType(token) {\n const name = token.name || '';\n const publicId = token.publicId || '';\n const systemId = token.systemId || '';\n\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n }\n\n _attachElementToTree(element) {\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n } else {\n const parent = this.openElements.currentTmplContent || this.openElements.current;\n\n this.treeAdapter.appendChild(parent, element);\n }\n }\n\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n\n this._attachElementToTree(element);\n }\n\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n\n this._attachElementToTree(element);\n this.openElements.push(element);\n }\n\n _insertFakeElement(tagName) {\n const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n\n this._attachElementToTree(element);\n this.openElements.push(element);\n }\n\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl);\n this.openElements.push(tmpl);\n }\n\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement($.HTML, NS.HTML, []);\n\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element);\n }\n\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n\n this.treeAdapter.appendChild(parent, commentNode);\n }\n\n _insertCharacters(token) {\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentText(token.chars);\n } else {\n const parent = this.openElements.currentTmplContent || this.openElements.current;\n\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n\n //Token processing\n _shouldProcessTokenInForeignContent(token) {\n const current = this._getAdjustedCurrentElement();\n\n if (!current || current === this.document) {\n return false;\n }\n\n const ns = this.treeAdapter.getNamespaceURI(current);\n\n if (ns === NS.HTML) {\n return false;\n }\n\n if (\n this.treeAdapter.getTagName(current) === $.ANNOTATION_XML &&\n ns === NS.MATHML &&\n token.type === Tokenizer.START_TAG_TOKEN &&\n token.tagName === $.SVG\n ) {\n return false;\n }\n\n const isCharacterToken =\n token.type === Tokenizer.CHARACTER_TOKEN ||\n token.type === Tokenizer.NULL_CHARACTER_TOKEN ||\n token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n\n const isMathMLTextStartTag =\n token.type === Tokenizer.START_TAG_TOKEN && token.tagName !== $.MGLYPH && token.tagName !== $.MALIGNMARK;\n\n if ((isMathMLTextStartTag || isCharacterToken) && this._isIntegrationPoint(current, NS.MATHML)) {\n return false;\n }\n\n if (\n (token.type === Tokenizer.START_TAG_TOKEN || isCharacterToken) &&\n this._isIntegrationPoint(current, NS.HTML)\n ) {\n return false;\n }\n\n return token.type !== Tokenizer.EOF_TOKEN;\n }\n\n _processToken(token) {\n TOKEN_HANDLERS[this.insertionMode][token.type](this, token);\n }\n\n _processTokenInBodyMode(token) {\n TOKEN_HANDLERS[IN_BODY_MODE][token.type](this, token);\n }\n\n _processTokenInForeignContent(token) {\n if (token.type === Tokenizer.CHARACTER_TOKEN) {\n characterInForeignContent(this, token);\n } else if (token.type === Tokenizer.NULL_CHARACTER_TOKEN) {\n nullCharacterInForeignContent(this, token);\n } else if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN) {\n insertCharacters(this, token);\n } else if (token.type === Tokenizer.COMMENT_TOKEN) {\n appendComment(this, token);\n } else if (token.type === Tokenizer.START_TAG_TOKEN) {\n startTagInForeignContent(this, token);\n } else if (token.type === Tokenizer.END_TAG_TOKEN) {\n endTagInForeignContent(this, token);\n }\n }\n\n _processInputToken(token) {\n if (this._shouldProcessTokenInForeignContent(token)) {\n this._processTokenInForeignContent(token);\n } else {\n this._processToken(token);\n }\n\n if (token.type === Tokenizer.START_TAG_TOKEN && token.selfClosing && !token.ackSelfClosing) {\n this._err(ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n\n //Integration points\n _isIntegrationPoint(element, foreignNS) {\n const tn = this.treeAdapter.getTagName(element);\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n\n return foreignContent.isIntegrationPoint(tn, ns, attrs, foreignNS);\n }\n\n //Active formatting elements reconstruction\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.length;\n\n if (listLength) {\n let unopenIdx = listLength;\n let entry = null;\n\n do {\n unopenIdx--;\n entry = this.activeFormattingElements.entries[unopenIdx];\n\n if (entry.type === FormattingElementList.MARKER_ENTRY || this.openElements.contains(entry.element)) {\n unopenIdx++;\n break;\n }\n } while (unopenIdx > 0);\n\n for (let i = unopenIdx; i < listLength; i++) {\n entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n\n //Close elements\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = IN_ROW_MODE;\n }\n\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($.P);\n this.openElements.popUntilTagNamePopped($.P);\n }\n\n //Insertion modes\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop, last = false; i >= 0; i--) {\n let element = this.openElements.items[i];\n\n if (i === 0) {\n last = true;\n\n if (this.fragmentContext) {\n element = this.fragmentContext;\n }\n }\n\n const tn = this.treeAdapter.getTagName(element);\n const newInsertionMode = INSERTION_MODE_RESET_MAP[tn];\n\n if (newInsertionMode) {\n this.insertionMode = newInsertionMode;\n break;\n } else if (!last && (tn === $.TD || tn === $.TH)) {\n this.insertionMode = IN_CELL_MODE;\n break;\n } else if (!last && tn === $.HEAD) {\n this.insertionMode = IN_HEAD_MODE;\n break;\n } else if (tn === $.SELECT) {\n this._resetInsertionModeForSelect(i);\n break;\n } else if (tn === $.TEMPLATE) {\n this.insertionMode = this.currentTmplInsertionMode;\n break;\n } else if (tn === $.HTML) {\n this.insertionMode = this.headElement ? AFTER_HEAD_MODE : BEFORE_HEAD_MODE;\n break;\n } else if (last) {\n this.insertionMode = IN_BODY_MODE;\n break;\n }\n }\n }\n\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const ancestor = this.openElements.items[i];\n const tn = this.treeAdapter.getTagName(ancestor);\n\n if (tn === $.TEMPLATE) {\n break;\n } else if (tn === $.TABLE) {\n this.insertionMode = IN_SELECT_IN_TABLE_MODE;\n return;\n }\n }\n }\n\n this.insertionMode = IN_SELECT_MODE;\n }\n\n _pushTmplInsertionMode(mode) {\n this.tmplInsertionModeStack.push(mode);\n this.tmplInsertionModeStackTop++;\n this.currentTmplInsertionMode = mode;\n }\n\n _popTmplInsertionMode() {\n this.tmplInsertionModeStack.pop();\n this.tmplInsertionModeStackTop--;\n this.currentTmplInsertionMode = this.tmplInsertionModeStack[this.tmplInsertionModeStackTop];\n }\n\n //Foster parenting\n _isElementCausesFosterParenting(element) {\n const tn = this.treeAdapter.getTagName(element);\n\n return tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR;\n }\n\n _shouldFosterParentOnInsertion() {\n return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.current);\n }\n\n _findFosterParentingLocation() {\n const location = {\n parent: null,\n beforeElement: null\n };\n\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n const tn = this.treeAdapter.getTagName(openElement);\n const ns = this.treeAdapter.getNamespaceURI(openElement);\n\n if (tn === $.TEMPLATE && ns === NS.HTML) {\n location.parent = this.treeAdapter.getTemplateContent(openElement);\n break;\n } else if (tn === $.TABLE) {\n location.parent = this.treeAdapter.getParentNode(openElement);\n\n if (location.parent) {\n location.beforeElement = openElement;\n } else {\n location.parent = this.openElements.items[i - 1];\n }\n\n break;\n }\n }\n\n if (!location.parent) {\n location.parent = this.openElements.items[0];\n }\n\n return location;\n }\n\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n } else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n\n _fosterParentText(chars) {\n const location = this._findFosterParentingLocation();\n\n if (location.beforeElement) {\n this.treeAdapter.insertTextBefore(location.parent, chars, location.beforeElement);\n } else {\n this.treeAdapter.insertText(location.parent, chars);\n }\n }\n\n //Special elements\n _isSpecialElement(element) {\n const tn = this.treeAdapter.getTagName(element);\n const ns = this.treeAdapter.getNamespaceURI(element);\n\n return HTML.SPECIAL_ELEMENTS[ns][tn];\n }\n}\n\nmodule.exports = Parser;\n\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n } else if (!p.openElements.hasInScope(token.tagName)) {\n formattingElementEntry = null;\n }\n } else {\n genericEndTagInBody(p, token);\n }\n\n return formattingElementEntry;\n}\n\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const element = p.openElements.items[i];\n\n if (element === formattingElementEntry.element) {\n break;\n }\n\n if (p._isSpecialElement(element)) {\n furthestBlock = element;\n }\n }\n\n if (!furthestBlock) {\n p.openElements.popUntilElementPopped(formattingElementEntry.element);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n\n return furthestBlock;\n}\n\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n\n for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n //NOTE: store next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n nextElement = p.openElements.getCommonAncestor(element);\n\n const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n\n p.openElements.remove(element);\n } else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n\n return lastElement;\n}\n\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n\n p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n\n return newElement;\n}\n\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n if (p._isElementCausesFosterParenting(commonAncestor)) {\n p._fosterParentElement(lastElement);\n } else {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n\n if (tn === $.TEMPLATE && ns === NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n\n p.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\n\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const token = formattingElementEntry.token;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n\n p.activeFormattingElements.insertElementAfterBookmark(newElement, formattingElementEntry.token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement);\n}\n\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n let formattingElementEntry;\n\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n formattingElementEntry = aaObtainFormattingElementEntry(p, token, formattingElementEntry);\n\n if (!formattingElementEntry) {\n break;\n }\n\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n\n if (!furthestBlock) {\n break;\n }\n\n p.activeFormattingElements.bookmark = formattingElementEntry;\n\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n\n p.treeAdapter.detachNode(lastElement);\n aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n\n//Generic token handlers\n//------------------------------------------------------------------\nfunction ignoreToken() {\n //NOTE: do nothing =)\n}\n\nfunction misplacedDoctype(p) {\n p._err(ERR.misplacedDoctype);\n}\n\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContent || p.openElements.current);\n}\n\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\n\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\n\nfunction insertCharacters(p, token) {\n p._insertCharacters(token);\n}\n\nfunction stopParsing(p) {\n p.stopped = true;\n}\n\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n\n const mode = token.forceQuirks ? HTML.DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n\n if (!doctype.isConforming(token)) {\n p._err(ERR.nonConformingDoctype);\n }\n\n p.treeAdapter.setDocumentMode(p.document, mode);\n\n p.insertionMode = BEFORE_HTML_MODE;\n}\n\nfunction tokenInInitialMode(p, token) {\n p._err(ERR.missingDoctype, { beforeToken: true });\n p.treeAdapter.setDocumentMode(p.document, HTML.DOCUMENT_MODE.QUIRKS);\n p.insertionMode = BEFORE_HTML_MODE;\n p._processToken(token);\n}\n\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagName === $.HTML) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = BEFORE_HEAD_MODE;\n } else {\n tokenBeforeHtml(p, token);\n }\n}\n\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n tokenBeforeHtml(p, token);\n }\n}\n\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = BEFORE_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.HEAD) {\n p._insertElement(token, NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = IN_HEAD_MODE;\n } else {\n tokenBeforeHead(p, token);\n }\n}\n\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenBeforeHead(p, token);\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement($.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = IN_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.BASE || tn === $.BASEFONT || tn === $.BGSOUND || tn === $.LINK || tn === $.META) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.TITLE) {\n p._switchToTextParsing(token, Tokenizer.MODE.RCDATA);\n } else if (tn === $.NOSCRIPT) {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n } else {\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_HEAD_NO_SCRIPT_MODE;\n }\n } else if (tn === $.NOFRAMES || tn === $.STYLE) {\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n } else if (tn === $.SCRIPT) {\n p._switchToTextParsing(token, Tokenizer.MODE.SCRIPT_DATA);\n } else if (tn === $.TEMPLATE) {\n p._insertTemplate(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = IN_TEMPLATE_MODE;\n p._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n } else if (tn === $.HEAD) {\n p._err(ERR.misplacedStartTagForHeadElement);\n } else {\n tokenInHead(p, token);\n }\n}\n\nfunction endTagInHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HEAD) {\n p.openElements.pop();\n p.insertionMode = AFTER_HEAD_MODE;\n } else if (tn === $.BODY || tn === $.BR || tn === $.HTML) {\n tokenInHead(p, token);\n } else if (tn === $.TEMPLATE) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n\n if (p.openElements.currentTagName !== $.TEMPLATE) {\n p._err(ERR.closingOfElementWithOpenChildElements);\n }\n\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p._popTmplInsertionMode();\n p._resetInsertionMode();\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = AFTER_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (\n tn === $.BASEFONT ||\n tn === $.BGSOUND ||\n tn === $.HEAD ||\n tn === $.LINK ||\n tn === $.META ||\n tn === $.NOFRAMES ||\n tn === $.STYLE\n ) {\n startTagInHead(p, token);\n } else if (tn === $.NOSCRIPT) {\n p._err(ERR.nestedNoscriptInHead);\n } else {\n tokenInHeadNoScript(p, token);\n }\n}\n\nfunction endTagInHeadNoScript(p, token) {\n const tn = token.tagName;\n\n if (tn === $.NOSCRIPT) {\n p.openElements.pop();\n p.insertionMode = IN_HEAD_MODE;\n } else if (tn === $.BR) {\n tokenInHeadNoScript(p, token);\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenInHeadNoScript(p, token) {\n const errCode =\n token.type === Tokenizer.EOF_TOKEN ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n\n p._err(errCode);\n p.openElements.pop();\n p.insertionMode = IN_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.BODY) {\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = IN_BODY_MODE;\n } else if (tn === $.FRAMESET) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_FRAMESET_MODE;\n } else if (\n tn === $.BASE ||\n tn === $.BASEFONT ||\n tn === $.BGSOUND ||\n tn === $.LINK ||\n tn === $.META ||\n tn === $.NOFRAMES ||\n tn === $.SCRIPT ||\n tn === $.STYLE ||\n tn === $.TEMPLATE ||\n tn === $.TITLE\n ) {\n p._err(ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n } else if (tn === $.HEAD) {\n p._err(ERR.misplacedStartTagForHeadElement);\n } else {\n tokenAfterHead(p, token);\n }\n}\n\nfunction endTagAfterHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenAfterHead(p, token);\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement($.BODY);\n p.insertionMode = IN_BODY_MODE;\n p._processToken(token);\n}\n\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\n\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\n\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\n\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\n\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_FRAMESET_MODE;\n }\n}\n\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n const tn = p.openElements.currentTagName;\n\n if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n p.openElements.pop();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.framesetOk = false;\n}\n\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\n\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n\n const tn = token.tagName;\n\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const element = p.openElements.items[i];\n const elementTn = p.treeAdapter.getTagName(element);\n let closeTn = null;\n\n if (tn === $.LI && elementTn === $.LI) {\n closeTn = $.LI;\n } else if ((tn === $.DD || tn === $.DT) && (elementTn === $.DD || elementTn === $.DT)) {\n closeTn = elementTn;\n }\n\n if (closeTn) {\n p.openElements.generateImpliedEndTagsWithExclusion(closeTn);\n p.openElements.popUntilTagNamePopped(closeTn);\n break;\n }\n\n if (elementTn !== $.ADDRESS && elementTn !== $.DIV && elementTn !== $.P && p._isSpecialElement(element)) {\n break;\n }\n }\n\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n p.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n}\n\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.BUTTON);\n }\n\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n}\n\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName($.A);\n\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n\n if (p.openElements.hasInScope($.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\n\nfunction tableStartTagInBody(p, token) {\n if (\n p.treeAdapter.getDocumentMode(p.document) !== HTML.DOCUMENT_MODE.QUIRKS &&\n p.openElements.hasInButtonScope($.P)\n ) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = IN_TABLE_MODE;\n}\n\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\n\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n\n const inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\n\n if (!inputType || inputType.toLowerCase() !== HIDDEN_INPUT_TYPE) {\n p.framesetOk = false;\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n}\n\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\n\nfunction imageStartTagInBody(p, token) {\n token.tagName = $.IMG;\n areaStartTagInBody(p, token);\n}\n\nfunction textareaStartTagInBody(p, token) {\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.tokenizer.state = Tokenizer.MODE.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = TEXT_MODE;\n}\n\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\n//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse\n//<noembed> as a rawtext.\nfunction noembedStartTagInBody(p, token) {\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n\n if (\n p.insertionMode === IN_TABLE_MODE ||\n p.insertionMode === IN_CAPTION_MODE ||\n p.insertionMode === IN_TABLE_BODY_MODE ||\n p.insertionMode === IN_ROW_MODE ||\n p.insertionMode === IN_CELL_MODE\n ) {\n p.insertionMode = IN_SELECT_IN_TABLE_MODE;\n } else {\n p.insertionMode = IN_SELECT_MODE;\n }\n}\n\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\n\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction menuStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n\n if (token.selfClosing) {\n p._appendElement(token, NS.MATHML);\n } else {\n p._insertElement(token, NS.MATHML);\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n\n if (token.selfClosing) {\n p._appendElement(token, NS.SVG);\n } else {\n p._insertElement(token, NS.SVG);\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction startTagInBody(p, token) {\n const tn = token.tagName;\n\n switch (tn.length) {\n case 1:\n if (tn === $.I || tn === $.S || tn === $.B || tn === $.U) {\n bStartTagInBody(p, token);\n } else if (tn === $.P) {\n addressStartTagInBody(p, token);\n } else if (tn === $.A) {\n aStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 2:\n if (tn === $.DL || tn === $.OL || tn === $.UL) {\n addressStartTagInBody(p, token);\n } else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n numberedHeaderStartTagInBody(p, token);\n } else if (tn === $.LI || tn === $.DD || tn === $.DT) {\n listItemStartTagInBody(p, token);\n } else if (tn === $.EM || tn === $.TT) {\n bStartTagInBody(p, token);\n } else if (tn === $.BR) {\n areaStartTagInBody(p, token);\n } else if (tn === $.HR) {\n hrStartTagInBody(p, token);\n } else if (tn === $.RB) {\n rbStartTagInBody(p, token);\n } else if (tn === $.RT || tn === $.RP) {\n rtStartTagInBody(p, token);\n } else if (tn !== $.TH && tn !== $.TD && tn !== $.TR) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 3:\n if (tn === $.DIV || tn === $.DIR || tn === $.NAV) {\n addressStartTagInBody(p, token);\n } else if (tn === $.PRE) {\n preStartTagInBody(p, token);\n } else if (tn === $.BIG) {\n bStartTagInBody(p, token);\n } else if (tn === $.IMG || tn === $.WBR) {\n areaStartTagInBody(p, token);\n } else if (tn === $.XMP) {\n xmpStartTagInBody(p, token);\n } else if (tn === $.SVG) {\n svgStartTagInBody(p, token);\n } else if (tn === $.RTC) {\n rbStartTagInBody(p, token);\n } else if (tn !== $.COL) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 4:\n if (tn === $.HTML) {\n htmlStartTagInBody(p, token);\n } else if (tn === $.BASE || tn === $.LINK || tn === $.META) {\n startTagInHead(p, token);\n } else if (tn === $.BODY) {\n bodyStartTagInBody(p, token);\n } else if (tn === $.MAIN || tn === $.MENU) {\n addressStartTagInBody(p, token);\n } else if (tn === $.FORM) {\n formStartTagInBody(p, token);\n } else if (tn === $.CODE || tn === $.FONT) {\n bStartTagInBody(p, token);\n } else if (tn === $.NOBR) {\n nobrStartTagInBody(p, token);\n } else if (tn === $.AREA) {\n areaStartTagInBody(p, token);\n } else if (tn === $.MATH) {\n mathStartTagInBody(p, token);\n } else if (tn === $.MENU) {\n menuStartTagInBody(p, token);\n } else if (tn !== $.HEAD) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 5:\n if (tn === $.STYLE || tn === $.TITLE) {\n startTagInHead(p, token);\n } else if (tn === $.ASIDE) {\n addressStartTagInBody(p, token);\n } else if (tn === $.SMALL) {\n bStartTagInBody(p, token);\n } else if (tn === $.TABLE) {\n tableStartTagInBody(p, token);\n } else if (tn === $.EMBED) {\n areaStartTagInBody(p, token);\n } else if (tn === $.INPUT) {\n inputStartTagInBody(p, token);\n } else if (tn === $.PARAM || tn === $.TRACK) {\n paramStartTagInBody(p, token);\n } else if (tn === $.IMAGE) {\n imageStartTagInBody(p, token);\n } else if (tn !== $.FRAME && tn !== $.TBODY && tn !== $.TFOOT && tn !== $.THEAD) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 6:\n if (tn === $.SCRIPT) {\n startTagInHead(p, token);\n } else if (\n tn === $.CENTER ||\n tn === $.FIGURE ||\n tn === $.FOOTER ||\n tn === $.HEADER ||\n tn === $.HGROUP ||\n tn === $.DIALOG\n ) {\n addressStartTagInBody(p, token);\n } else if (tn === $.BUTTON) {\n buttonStartTagInBody(p, token);\n } else if (tn === $.STRIKE || tn === $.STRONG) {\n bStartTagInBody(p, token);\n } else if (tn === $.APPLET || tn === $.OBJECT) {\n appletStartTagInBody(p, token);\n } else if (tn === $.KEYGEN) {\n areaStartTagInBody(p, token);\n } else if (tn === $.SOURCE) {\n paramStartTagInBody(p, token);\n } else if (tn === $.IFRAME) {\n iframeStartTagInBody(p, token);\n } else if (tn === $.SELECT) {\n selectStartTagInBody(p, token);\n } else if (tn === $.OPTION) {\n optgroupStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 7:\n if (tn === $.BGSOUND) {\n startTagInHead(p, token);\n } else if (\n tn === $.DETAILS ||\n tn === $.ADDRESS ||\n tn === $.ARTICLE ||\n tn === $.SECTION ||\n tn === $.SUMMARY\n ) {\n addressStartTagInBody(p, token);\n } else if (tn === $.LISTING) {\n preStartTagInBody(p, token);\n } else if (tn === $.MARQUEE) {\n appletStartTagInBody(p, token);\n } else if (tn === $.NOEMBED) {\n noembedStartTagInBody(p, token);\n } else if (tn !== $.CAPTION) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 8:\n if (tn === $.BASEFONT) {\n startTagInHead(p, token);\n } else if (tn === $.FRAMESET) {\n framesetStartTagInBody(p, token);\n } else if (tn === $.FIELDSET) {\n addressStartTagInBody(p, token);\n } else if (tn === $.TEXTAREA) {\n textareaStartTagInBody(p, token);\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p, token);\n } else if (tn === $.NOSCRIPT) {\n if (p.options.scriptingEnabled) {\n noembedStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n } else if (tn === $.OPTGROUP) {\n optgroupStartTagInBody(p, token);\n } else if (tn !== $.COLGROUP) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 9:\n if (tn === $.PLAINTEXT) {\n plaintextStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 10:\n if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION) {\n addressStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n default:\n genericStartTagInBody(p, token);\n }\n}\n\nfunction bodyEndTagInBody(p) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = AFTER_BODY_MODE;\n }\n}\n\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = AFTER_BODY_MODE;\n p._processToken(token);\n }\n}\n\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagName;\n\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\n\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const formElement = p.formElement;\n\n if (!inTemplate) {\n p.formElement = null;\n }\n\n if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n p.openElements.generateImpliedEndTags();\n\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped($.FORM);\n } else {\n p.openElements.remove(formElement);\n }\n }\n}\n\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope($.P)) {\n p._insertFakeElement($.P);\n }\n\n p._closePElement();\n}\n\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope($.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n p.openElements.popUntilTagNamePopped($.LI);\n }\n}\n\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagName;\n\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\n\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\n\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagName;\n\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\n\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement($.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\n\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n\n if (p.treeAdapter.getTagName(element) === tn) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilElementPopped(element);\n break;\n }\n\n if (p._isSpecialElement(element)) {\n break;\n }\n }\n}\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction endTagInBody(p, token) {\n const tn = token.tagName;\n\n switch (tn.length) {\n case 1:\n if (tn === $.A || tn === $.B || tn === $.I || tn === $.S || tn === $.U) {\n callAdoptionAgency(p, token);\n } else if (tn === $.P) {\n pEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 2:\n if (tn === $.DL || tn === $.UL || tn === $.OL) {\n addressEndTagInBody(p, token);\n } else if (tn === $.LI) {\n liEndTagInBody(p, token);\n } else if (tn === $.DD || tn === $.DT) {\n ddEndTagInBody(p, token);\n } else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n numberedHeaderEndTagInBody(p, token);\n } else if (tn === $.BR) {\n brEndTagInBody(p, token);\n } else if (tn === $.EM || tn === $.TT) {\n callAdoptionAgency(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 3:\n if (tn === $.BIG) {\n callAdoptionAgency(p, token);\n } else if (tn === $.DIR || tn === $.DIV || tn === $.NAV || tn === $.PRE) {\n addressEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 4:\n if (tn === $.BODY) {\n bodyEndTagInBody(p, token);\n } else if (tn === $.HTML) {\n htmlEndTagInBody(p, token);\n } else if (tn === $.FORM) {\n formEndTagInBody(p, token);\n } else if (tn === $.CODE || tn === $.FONT || tn === $.NOBR) {\n callAdoptionAgency(p, token);\n } else if (tn === $.MAIN || tn === $.MENU) {\n addressEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 5:\n if (tn === $.ASIDE) {\n addressEndTagInBody(p, token);\n } else if (tn === $.SMALL) {\n callAdoptionAgency(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 6:\n if (\n tn === $.CENTER ||\n tn === $.FIGURE ||\n tn === $.FOOTER ||\n tn === $.HEADER ||\n tn === $.HGROUP ||\n tn === $.DIALOG\n ) {\n addressEndTagInBody(p, token);\n } else if (tn === $.APPLET || tn === $.OBJECT) {\n appletEndTagInBody(p, token);\n } else if (tn === $.STRIKE || tn === $.STRONG) {\n callAdoptionAgency(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 7:\n if (\n tn === $.ADDRESS ||\n tn === $.ARTICLE ||\n tn === $.DETAILS ||\n tn === $.SECTION ||\n tn === $.SUMMARY ||\n tn === $.LISTING\n ) {\n addressEndTagInBody(p, token);\n } else if (tn === $.MARQUEE) {\n appletEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 8:\n if (tn === $.FIELDSET) {\n addressEndTagInBody(p, token);\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 10:\n if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION) {\n addressEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n default:\n genericEndTagInBody(p, token);\n }\n}\n\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStackTop > -1) {\n eofInTemplate(p, token);\n } else {\n p.stopped = true;\n }\n}\n\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n if (token.tagName === $.SCRIPT) {\n p.pendingScript = p.openElements.current;\n }\n\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\n\nfunction eofInText(p, token) {\n p._err(ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n const curTn = p.openElements.currentTagName;\n\n if (curTn === $.TABLE || curTn === $.TBODY || curTn === $.TFOOT || curTn === $.THEAD || curTn === $.TR) {\n p.pendingCharacterTokens = [];\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = IN_TABLE_TEXT_MODE;\n p._processToken(token);\n } else {\n tokenInTable(p, token);\n }\n}\n\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_CAPTION_MODE;\n}\n\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_COLUMN_GROUP_MODE;\n}\n\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement($.COLGROUP);\n p.insertionMode = IN_COLUMN_GROUP_MODE;\n p._processToken(token);\n}\n\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_TABLE_BODY_MODE;\n}\n\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement($.TBODY);\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n}\n\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n p._processToken(token);\n }\n}\n\nfunction inputStartTagInTable(p, token) {\n const inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\n\n if (inputType && inputType.toLowerCase() === HIDDEN_INPUT_TYPE) {\n p._appendElement(token, NS.HTML);\n } else {\n tokenInTable(p, token);\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction formStartTagInTable(p, token) {\n if (!p.formElement && p.openElements.tmplCount === 0) {\n p._insertElement(token, NS.HTML);\n p.formElement = p.openElements.current;\n p.openElements.pop();\n }\n}\n\nfunction startTagInTable(p, token) {\n const tn = token.tagName;\n\n switch (tn.length) {\n case 2:\n if (tn === $.TD || tn === $.TH || tn === $.TR) {\n tdStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 3:\n if (tn === $.COL) {\n colStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 4:\n if (tn === $.FORM) {\n formStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 5:\n if (tn === $.TABLE) {\n tableStartTagInTable(p, token);\n } else if (tn === $.STYLE) {\n startTagInHead(p, token);\n } else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n tbodyStartTagInTable(p, token);\n } else if (tn === $.INPUT) {\n inputStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 6:\n if (tn === $.SCRIPT) {\n startTagInHead(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 7:\n if (tn === $.CAPTION) {\n captionStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 8:\n if (tn === $.COLGROUP) {\n colgroupStartTagInTable(p, token);\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n default:\n tokenInTable(p, token);\n }\n}\n\nfunction endTagInTable(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TABLE) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n }\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else if (\n tn !== $.BODY &&\n tn !== $.CAPTION &&\n tn !== $.COL &&\n tn !== $.COLGROUP &&\n tn !== $.HTML &&\n tn !== $.TBODY &&\n tn !== $.TD &&\n tn !== $.TFOOT &&\n tn !== $.TH &&\n tn !== $.THEAD &&\n tn !== $.TR\n ) {\n tokenInTable(p, token);\n }\n}\n\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n\n p.fosterParentingEnabled = true;\n p._processTokenInBodyMode(token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\n\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\n\nfunction tokenInTableText(p, token) {\n let i = 0;\n\n if (p.hasNonWhitespacePendingCharacterToken) {\n for (; i < p.pendingCharacterTokens.length; i++) {\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n } else {\n for (; i < p.pendingCharacterTokens.length; i++) {\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCaption(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TD ||\n tn === $.TFOOT ||\n tn === $.TH ||\n tn === $.THEAD ||\n tn === $.TR\n ) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n } else {\n startTagInBody(p, token);\n }\n}\n\nfunction endTagInCaption(p, token) {\n const tn = token.tagName;\n\n if (tn === $.CAPTION || tn === $.TABLE) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = IN_TABLE_MODE;\n\n if (tn === $.TABLE) {\n p._processToken(token);\n }\n }\n } else if (\n tn !== $.BODY &&\n tn !== $.COL &&\n tn !== $.COLGROUP &&\n tn !== $.HTML &&\n tn !== $.TBODY &&\n tn !== $.TD &&\n tn !== $.TFOOT &&\n tn !== $.TH &&\n tn !== $.THEAD &&\n tn !== $.TR\n ) {\n endTagInBody(p, token);\n }\n}\n\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.COL) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p, token);\n } else {\n tokenInColumnGroup(p, token);\n }\n}\n\nfunction endTagInColumnGroup(p, token) {\n const tn = token.tagName;\n\n if (tn === $.COLGROUP) {\n if (p.openElements.currentTagName === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n }\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else if (tn !== $.COL) {\n tokenInColumnGroup(p, token);\n }\n}\n\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagName === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n}\n\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TR) {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_ROW_MODE;\n } else if (tn === $.TH || tn === $.TD) {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement($.TR);\n p.insertionMode = IN_ROW_MODE;\n p._processToken(token);\n } else if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD\n ) {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n } else {\n startTagInTable(p, token);\n }\n}\n\nfunction endTagInTableBody(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n }\n } else if (tn === $.TABLE) {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n } else if (\n (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP) ||\n (tn !== $.HTML && tn !== $.TD && tn !== $.TH && tn !== $.TR)\n ) {\n endTagInTable(p, token);\n }\n}\n\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TH || tn === $.TD) {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_CELL_MODE;\n p.activeFormattingElements.insertMarker();\n } else if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR\n ) {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n }\n } else {\n startTagInTable(p, token);\n }\n}\n\nfunction endTagInRow(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TR) {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n }\n } else if (tn === $.TABLE) {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n }\n } else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n if (p.openElements.hasInTableScope(tn) || p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n }\n } else if (\n (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP) ||\n (tn !== $.HTML && tn !== $.TD && tn !== $.TH)\n ) {\n endTagInTable(p, token);\n }\n}\n\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TD ||\n tn === $.TFOOT ||\n tn === $.TH ||\n tn === $.THEAD ||\n tn === $.TR\n ) {\n if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n p._closeTableCell();\n p._processToken(token);\n }\n } else {\n startTagInBody(p, token);\n }\n}\n\nfunction endTagInCell(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TD || tn === $.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = IN_ROW_MODE;\n }\n } else if (tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR) {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n p._processToken(token);\n }\n } else if (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP && tn !== $.HTML) {\n endTagInBody(p, token);\n }\n}\n\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.OPTION) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n\n p._insertElement(token, NS.HTML);\n } else if (tn === $.OPTGROUP) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n\n if (p.openElements.currentTagName === $.OPTGROUP) {\n p.openElements.pop();\n }\n\n p._insertElement(token, NS.HTML);\n } else if (tn === $.INPUT || tn === $.KEYGEN || tn === $.TEXTAREA || tn === $.SELECT) {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n\n if (tn !== $.SELECT) {\n p._processToken(token);\n }\n }\n } else if (tn === $.SCRIPT || tn === $.TEMPLATE) {\n startTagInHead(p, token);\n }\n}\n\nfunction endTagInSelect(p, token) {\n const tn = token.tagName;\n\n if (tn === $.OPTGROUP) {\n const prevOpenElement = p.openElements.items[p.openElements.stackTop - 1];\n const prevOpenElementTn = prevOpenElement && p.treeAdapter.getTagName(prevOpenElement);\n\n if (p.openElements.currentTagName === $.OPTION && prevOpenElementTn === $.OPTGROUP) {\n p.openElements.pop();\n }\n\n if (p.openElements.currentTagName === $.OPTGROUP) {\n p.openElements.pop();\n }\n } else if (tn === $.OPTION) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n } else if (tn === $.SELECT && p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n }\n}\n\n//12.2.5.4.17 The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH\n ) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processToken(token);\n } else {\n startTagInSelect(p, token);\n }\n}\n\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH\n ) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processToken(token);\n }\n } else {\n endTagInSelect(p, token);\n }\n}\n\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.BASE ||\n tn === $.BASEFONT ||\n tn === $.BGSOUND ||\n tn === $.LINK ||\n tn === $.META ||\n tn === $.NOFRAMES ||\n tn === $.SCRIPT ||\n tn === $.STYLE ||\n tn === $.TEMPLATE ||\n tn === $.TITLE\n ) {\n startTagInHead(p, token);\n } else {\n const newInsertionMode = TEMPLATE_INSERTION_MODE_SWITCH_MAP[tn] || IN_BODY_MODE;\n\n p._popTmplInsertionMode();\n p._pushTmplInsertionMode(newInsertionMode);\n p.insertionMode = newInsertionMode;\n p._processToken(token);\n }\n}\n\nfunction endTagInTemplate(p, token) {\n if (token.tagName === $.TEMPLATE) {\n endTagInHead(p, token);\n }\n}\n\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p._popTmplInsertionMode();\n p._resetInsertionMode();\n p._processToken(token);\n } else {\n p.stopped = true;\n }\n}\n\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagName === $.HTML) {\n startTagInBody(p, token);\n } else {\n tokenAfterBody(p, token);\n }\n}\n\nfunction endTagAfterBody(p, token) {\n if (token.tagName === $.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = AFTER_AFTER_BODY_MODE;\n }\n } else {\n tokenAfterBody(p, token);\n }\n}\n\nfunction tokenAfterBody(p, token) {\n p.insertionMode = IN_BODY_MODE;\n p._processToken(token);\n}\n\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.FRAMESET) {\n p._insertElement(token, NS.HTML);\n } else if (tn === $.FRAME) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p, token);\n }\n}\n\nfunction endTagInFrameset(p, token) {\n if (token.tagName === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n\n if (!p.fragmentContext && p.openElements.currentTagName !== $.FRAMESET) {\n p.insertionMode = AFTER_FRAMESET_MODE;\n }\n }\n}\n\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p, token);\n }\n}\n\nfunction endTagAfterFrameset(p, token) {\n if (token.tagName === $.HTML) {\n p.insertionMode = AFTER_AFTER_FRAMESET_MODE;\n }\n}\n\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagName === $.HTML) {\n startTagInBody(p, token);\n } else {\n tokenAfterAfterBody(p, token);\n }\n}\n\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = IN_BODY_MODE;\n p._processToken(token);\n}\n\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p, token);\n }\n}\n\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n token.chars = unicode.REPLACEMENT_CHARACTER;\n p._insertCharacters(token);\n}\n\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\n\nfunction startTagInForeignContent(p, token) {\n if (foreignContent.causesExit(token) && !p.fragmentContext) {\n while (\n p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n !p._isIntegrationPoint(p.openElements.current)\n ) {\n p.openElements.pop();\n }\n\n p._processToken(token);\n } else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n } else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n\n foreignContent.adjustTokenXMLAttrs(token);\n\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n } else {\n p._insertElement(token, currentNs);\n }\n\n token.ackSelfClosing = true;\n }\n}\n\nfunction endTagInForeignContent(p, token) {\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n\n if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n p._processToken(token);\n break;\n }\n\n if (p.treeAdapter.getTagName(element).toLowerCase() === token.tagName) {\n p.openElements.popUntilElementPopped(element);\n break;\n }\n }\n}\n","'use strict';\n\nconst unicode = require('../common/unicode');\nconst ERR = require('../common/error-codes');\n\n//Aliases\nconst $ = unicode.CODE_POINTS;\n\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nclass Preprocessor {\n constructor() {\n this.html = null;\n\n this.pos = -1;\n this.lastGapPos = -1;\n this.lastCharPos = -1;\n\n this.gapStack = [];\n\n this.skipNextNewLine = false;\n\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n }\n\n _err() {\n // NOTE: err reporting is noop by default. Enabled by mixin.\n }\n\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.lastCharPos) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n\n if (unicode.isSurrogatePair(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n\n //NOTE: add gap that should be avoided during retreat\n this._addGap();\n\n return unicode.getSurrogatePairCodePoint(cp, nextCp);\n }\n }\n\n //NOTE: we are at the end of a chunk, therefore we can't infer surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $.EOF;\n }\n\n //NOTE: isolated surrogate\n this._err(ERR.surrogateInInputStream);\n\n return cp;\n }\n\n dropParsedChunk() {\n if (this.pos > this.bufferWaterline) {\n this.lastCharPos -= this.pos;\n this.html = this.html.substring(this.pos);\n this.pos = 0;\n this.lastGapPos = -1;\n this.gapStack = [];\n }\n }\n\n write(chunk, isLastChunk) {\n if (this.html) {\n this.html += chunk;\n } else {\n this.html = chunk;\n }\n\n this.lastCharPos = this.html.length - 1;\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1, this.html.length);\n\n this.lastCharPos = this.html.length - 1;\n this.endOfChunkHit = false;\n }\n\n advance() {\n this.pos++;\n\n if (this.pos > this.lastCharPos) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n\n let cp = this.html.charCodeAt(this.pos);\n\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (this.skipNextNewLine && cp === $.LINE_FEED) {\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === $.CARRIAGE_RETURN) {\n this.skipNextNewLine = true;\n return $.LINE_FEED;\n }\n\n this.skipNextNewLine = false;\n\n if (unicode.isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange =\n (cp > 0x1f && cp < 0x7f) || cp === $.LINE_FEED || cp === $.CARRIAGE_RETURN || (cp > 0x9f && cp < 0xfdd0);\n\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n\n return cp;\n }\n\n _checkForProblematicCharacters(cp) {\n if (unicode.isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n } else if (unicode.isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n\n retreat() {\n if (this.pos === this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n\n this.pos--;\n }\n}\n\nmodule.exports = Preprocessor;\n","'use strict';\n\n//NOTE: this file contains auto-generated array mapped radix tree that is used for the named entity references consumption\n//(details: https://github.com/inikulin/parse5/tree/master/scripts/generate-named-entity-data/README.md)\nmodule.exports = new Uint16Array([4,52,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,106,303,412,810,1432,1701,1796,1987,2114,2360,2420,2484,3170,3251,4140,4393,4575,4610,5106,5512,5728,6117,6274,6315,6345,6427,6516,7002,7910,8733,9323,9870,10170,10631,10893,11318,11386,11467,12773,13092,14474,14922,15448,15542,16419,17666,18166,18611,19004,19095,19298,19397,4,16,69,77,97,98,99,102,103,108,109,110,111,112,114,115,116,117,140,150,158,169,176,194,199,210,216,222,226,242,256,266,283,294,108,105,103,5,198,1,59,148,1,198,80,5,38,1,59,156,1,38,99,117,116,101,5,193,1,59,167,1,193,114,101,118,101,59,1,258,4,2,105,121,182,191,114,99,5,194,1,59,189,1,194,59,1,1040,114,59,3,55349,56580,114,97,118,101,5,192,1,59,208,1,192,112,104,97,59,1,913,97,99,114,59,1,256,100,59,1,10835,4,2,103,112,232,237,111,110,59,1,260,102,59,3,55349,56632,112,108,121,70,117,110,99,116,105,111,110,59,1,8289,105,110,103,5,197,1,59,264,1,197,4,2,99,115,272,277,114,59,3,55349,56476,105,103,110,59,1,8788,105,108,100,101,5,195,1,59,292,1,195,109,108,5,196,1,59,301,1,196,4,8,97,99,101,102,111,114,115,117,321,350,354,383,388,394,400,405,4,2,99,114,327,336,107,115,108,97,115,104,59,1,8726,4,2,118,119,342,345,59,1,10983,101,100,59,1,8966,121,59,1,1041,4,3,99,114,116,362,369,379,97,117,115,101,59,1,8757,110,111,117,108,108,105,115,59,1,8492,97,59,1,914,114,59,3,55349,56581,112,102,59,3,55349,56633,101,118,101,59,1,728,99,114,59,1,8492,109,112,101,113,59,1,8782,4,14,72,79,97,99,100,101,102,104,105,108,111,114,115,117,442,447,456,504,542,547,569,573,577,616,678,784,790,796,99,121,59,1,1063,80,89,5,169,1,59,454,1,169,4,3,99,112,121,464,470,497,117,116,101,59,1,262,4,2,59,105,476,478,1,8914,116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,59,1,8517,108,101,121,115,59,1,8493,4,4,97,101,105,111,514,520,530,535,114,111,110,59,1,268,100,105,108,5,199,1,59,528,1,199,114,99,59,1,264,110,105,110,116,59,1,8752,111,116,59,1,266,4,2,100,110,553,560,105,108,108,97,59,1,184,116,101,114,68,111,116,59,1,183,114,59,1,8493,105,59,1,935,114,99,108,101,4,4,68,77,80,84,591,596,603,609,111,116,59,1,8857,105,110,117,115,59,1,8854,108,117,115,59,1,8853,105,109,101,115,59,1,8855,111,4,2,99,115,623,646,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8754,101,67,117,114,108,121,4,2,68,81,658,671,111,117,98,108,101,81,117,111,116,101,59,1,8221,117,111,116,101,59,1,8217,4,4,108,110,112,117,688,701,736,753,111,110,4,2,59,101,696,698,1,8759,59,1,10868,4,3,103,105,116,709,717,722,114,117,101,110,116,59,1,8801,110,116,59,1,8751,111,117,114,73,110,116,101,103,114,97,108,59,1,8750,4,2,102,114,742,745,59,1,8450,111,100,117,99,116,59,1,8720,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8755,111,115,115,59,1,10799,99,114,59,3,55349,56478,112,4,2,59,67,803,805,1,8915,97,112,59,1,8781,4,11,68,74,83,90,97,99,101,102,105,111,115,834,850,855,860,865,888,903,916,921,1011,1415,4,2,59,111,840,842,1,8517,116,114,97,104,100,59,1,10513,99,121,59,1,1026,99,121,59,1,1029,99,121,59,1,1039,4,3,103,114,115,873,879,883,103,101,114,59,1,8225,114,59,1,8609,104,118,59,1,10980,4,2,97,121,894,900,114,111,110,59,1,270,59,1,1044,108,4,2,59,116,910,912,1,8711,97,59,1,916,114,59,3,55349,56583,4,2,97,102,927,998,4,2,99,109,933,992,114,105,116,105,99,97,108,4,4,65,68,71,84,950,957,978,985,99,117,116,101,59,1,180,111,4,2,116,117,964,967,59,1,729,98,108,101,65,99,117,116,101,59,1,733,114,97,118,101,59,1,96,105,108,100,101,59,1,732,111,110,100,59,1,8900,102,101,114,101,110,116,105,97,108,68,59,1,8518,4,4,112,116,117,119,1021,1026,1048,1249,102,59,3,55349,56635,4,3,59,68,69,1034,1036,1041,1,168,111,116,59,1,8412,113,117,97,108,59,1,8784,98,108,101,4,6,67,68,76,82,85,86,1065,1082,1101,1189,1211,1236,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8751,111,4,2,116,119,1089,1092,59,1,168,110,65,114,114,111,119,59,1,8659,4,2,101,111,1107,1141,102,116,4,3,65,82,84,1117,1124,1136,114,114,111,119,59,1,8656,105,103,104,116,65,114,114,111,119,59,1,8660,101,101,59,1,10980,110,103,4,2,76,82,1149,1177,101,102,116,4,2,65,82,1158,1165,114,114,111,119,59,1,10232,105,103,104,116,65,114,114,111,119,59,1,10234,105,103,104,116,65,114,114,111,119,59,1,10233,105,103,104,116,4,2,65,84,1199,1206,114,114,111,119,59,1,8658,101,101,59,1,8872,112,4,2,65,68,1218,1225,114,114,111,119,59,1,8657,111,119,110,65,114,114,111,119,59,1,8661,101,114,116,105,99,97,108,66,97,114,59,1,8741,110,4,6,65,66,76,82,84,97,1264,1292,1299,1352,1391,1408,114,114,111,119,4,3,59,66,85,1276,1278,1283,1,8595,97,114,59,1,10515,112,65,114,114,111,119,59,1,8693,114,101,118,101,59,1,785,101,102,116,4,3,82,84,86,1310,1323,1334,105,103,104,116,86,101,99,116,111,114,59,1,10576,101,101,86,101,99,116,111,114,59,1,10590,101,99,116,111,114,4,2,59,66,1345,1347,1,8637,97,114,59,1,10582,105,103,104,116,4,2,84,86,1362,1373,101,101,86,101,99,116,111,114,59,1,10591,101,99,116,111,114,4,2,59,66,1384,1386,1,8641,97,114,59,1,10583,101,101,4,2,59,65,1399,1401,1,8868,114,114,111,119,59,1,8615,114,114,111,119,59,1,8659,4,2,99,116,1421,1426,114,59,3,55349,56479,114,111,107,59,1,272,4,16,78,84,97,99,100,102,103,108,109,111,112,113,115,116,117,120,1466,1470,1478,1489,1515,1520,1525,1536,1544,1593,1609,1617,1650,1664,1668,1677,71,59,1,330,72,5,208,1,59,1476,1,208,99,117,116,101,5,201,1,59,1487,1,201,4,3,97,105,121,1497,1503,1512,114,111,110,59,1,282,114,99,5,202,1,59,1510,1,202,59,1,1069,111,116,59,1,278,114,59,3,55349,56584,114,97,118,101,5,200,1,59,1534,1,200,101,109,101,110,116,59,1,8712,4,2,97,112,1550,1555,99,114,59,1,274,116,121,4,2,83,86,1563,1576,109,97,108,108,83,113,117,97,114,101,59,1,9723,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9643,4,2,103,112,1599,1604,111,110,59,1,280,102,59,3,55349,56636,115,105,108,111,110,59,1,917,117,4,2,97,105,1624,1640,108,4,2,59,84,1631,1633,1,10869,105,108,100,101,59,1,8770,108,105,98,114,105,117,109,59,1,8652,4,2,99,105,1656,1660,114,59,1,8496,109,59,1,10867,97,59,1,919,109,108,5,203,1,59,1675,1,203,4,2,105,112,1683,1689,115,116,115,59,1,8707,111,110,101,110,116,105,97,108,69,59,1,8519,4,5,99,102,105,111,115,1713,1717,1722,1762,1791,121,59,1,1060,114,59,3,55349,56585,108,108,101,100,4,2,83,86,1732,1745,109,97,108,108,83,113,117,97,114,101,59,1,9724,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9642,4,3,112,114,117,1770,1775,1781,102,59,3,55349,56637,65,108,108,59,1,8704,114,105,101,114,116,114,102,59,1,8497,99,114,59,1,8497,4,12,74,84,97,98,99,100,102,103,111,114,115,116,1822,1827,1834,1848,1855,1877,1882,1887,1890,1896,1978,1984,99,121,59,1,1027,5,62,1,59,1832,1,62,109,109,97,4,2,59,100,1843,1845,1,915,59,1,988,114,101,118,101,59,1,286,4,3,101,105,121,1863,1869,1874,100,105,108,59,1,290,114,99,59,1,284,59,1,1043,111,116,59,1,288,114,59,3,55349,56586,59,1,8921,112,102,59,3,55349,56638,101,97,116,101,114,4,6,69,70,71,76,83,84,1915,1933,1944,1953,1959,1971,113,117,97,108,4,2,59,76,1925,1927,1,8805,101,115,115,59,1,8923,117,108,108,69,113,117,97,108,59,1,8807,114,101,97,116,101,114,59,1,10914,101,115,115,59,1,8823,108,97,110,116,69,113,117,97,108,59,1,10878,105,108,100,101,59,1,8819,99,114,59,3,55349,56482,59,1,8811,4,8,65,97,99,102,105,111,115,117,2005,2012,2026,2032,2036,2049,2073,2089,82,68,99,121,59,1,1066,4,2,99,116,2018,2023,101,107,59,1,711,59,1,94,105,114,99,59,1,292,114,59,1,8460,108,98,101,114,116,83,112,97,99,101,59,1,8459,4,2,112,114,2055,2059,102,59,1,8461,105,122,111,110,116,97,108,76,105,110,101,59,1,9472,4,2,99,116,2079,2083,114,59,1,8459,114,111,107,59,1,294,109,112,4,2,68,69,2097,2107,111,119,110,72,117,109,112,59,1,8782,113,117,97,108,59,1,8783,4,14,69,74,79,97,99,100,102,103,109,110,111,115,116,117,2144,2149,2155,2160,2171,2189,2194,2198,2209,2245,2307,2329,2334,2341,99,121,59,1,1045,108,105,103,59,1,306,99,121,59,1,1025,99,117,116,101,5,205,1,59,2169,1,205,4,2,105,121,2177,2186,114,99,5,206,1,59,2184,1,206,59,1,1048,111,116,59,1,304,114,59,1,8465,114,97,118,101,5,204,1,59,2207,1,204,4,3,59,97,112,2217,2219,2238,1,8465,4,2,99,103,2225,2229,114,59,1,298,105,110,97,114,121,73,59,1,8520,108,105,101,115,59,1,8658,4,2,116,118,2251,2281,4,2,59,101,2257,2259,1,8748,4,2,103,114,2265,2271,114,97,108,59,1,8747,115,101,99,116,105,111,110,59,1,8898,105,115,105,98,108,101,4,2,67,84,2293,2300,111,109,109,97,59,1,8291,105,109,101,115,59,1,8290,4,3,103,112,116,2315,2320,2325,111,110,59,1,302,102,59,3,55349,56640,97,59,1,921,99,114,59,1,8464,105,108,100,101,59,1,296,4,2,107,109,2347,2352,99,121,59,1,1030,108,5,207,1,59,2358,1,207,4,5,99,102,111,115,117,2372,2386,2391,2397,2414,4,2,105,121,2378,2383,114,99,59,1,308,59,1,1049,114,59,3,55349,56589,112,102,59,3,55349,56641,4,2,99,101,2403,2408,114,59,3,55349,56485,114,99,121,59,1,1032,107,99,121,59,1,1028,4,7,72,74,97,99,102,111,115,2436,2441,2446,2452,2467,2472,2478,99,121,59,1,1061,99,121,59,1,1036,112,112,97,59,1,922,4,2,101,121,2458,2464,100,105,108,59,1,310,59,1,1050,114,59,3,55349,56590,112,102,59,3,55349,56642,99,114,59,3,55349,56486,4,11,74,84,97,99,101,102,108,109,111,115,116,2508,2513,2520,2562,2585,2981,2986,3004,3011,3146,3167,99,121,59,1,1033,5,60,1,59,2518,1,60,4,5,99,109,110,112,114,2532,2538,2544,2548,2558,117,116,101,59,1,313,98,100,97,59,1,923,103,59,1,10218,108,97,99,101,116,114,102,59,1,8466,114,59,1,8606,4,3,97,101,121,2570,2576,2582,114,111,110,59,1,317,100,105,108,59,1,315,59,1,1051,4,2,102,115,2591,2907,116,4,10,65,67,68,70,82,84,85,86,97,114,2614,2663,2672,2728,2735,2760,2820,2870,2888,2895,4,2,110,114,2620,2633,103,108,101,66,114,97,99,107,101,116,59,1,10216,114,111,119,4,3,59,66,82,2644,2646,2651,1,8592,97,114,59,1,8676,105,103,104,116,65,114,114,111,119,59,1,8646,101,105,108,105,110,103,59,1,8968,111,4,2,117,119,2679,2692,98,108,101,66,114,97,99,107,101,116,59,1,10214,110,4,2,84,86,2699,2710,101,101,86,101,99,116,111,114,59,1,10593,101,99,116,111,114,4,2,59,66,2721,2723,1,8643,97,114,59,1,10585,108,111,111,114,59,1,8970,105,103,104,116,4,2,65,86,2745,2752,114,114,111,119,59,1,8596,101,99,116,111,114,59,1,10574,4,2,101,114,2766,2792,101,4,3,59,65,86,2775,2777,2784,1,8867,114,114,111,119,59,1,8612,101,99,116,111,114,59,1,10586,105,97,110,103,108,101,4,3,59,66,69,2806,2808,2813,1,8882,97,114,59,1,10703,113,117,97,108,59,1,8884,112,4,3,68,84,86,2829,2841,2852,111,119,110,86,101,99,116,111,114,59,1,10577,101,101,86,101,99,116,111,114,59,1,10592,101,99,116,111,114,4,2,59,66,2863,2865,1,8639,97,114,59,1,10584,101,99,116,111,114,4,2,59,66,2881,2883,1,8636,97,114,59,1,10578,114,114,111,119,59,1,8656,105,103,104,116,97,114,114,111,119,59,1,8660,115,4,6,69,70,71,76,83,84,2922,2936,2947,2956,2962,2974,113,117,97,108,71,114,101,97,116,101,114,59,1,8922,117,108,108,69,113,117,97,108,59,1,8806,114,101,97,116,101,114,59,1,8822,101,115,115,59,1,10913,108,97,110,116,69,113,117,97,108,59,1,10877,105,108,100,101,59,1,8818,114,59,3,55349,56591,4,2,59,101,2992,2994,1,8920,102,116,97,114,114,111,119,59,1,8666,105,100,111,116,59,1,319,4,3,110,112,119,3019,3110,3115,103,4,4,76,82,108,114,3030,3058,3070,3098,101,102,116,4,2,65,82,3039,3046,114,114,111,119,59,1,10229,105,103,104,116,65,114,114,111,119,59,1,10231,105,103,104,116,65,114,114,111,119,59,1,10230,101,102,116,4,2,97,114,3079,3086,114,114,111,119,59,1,10232,105,103,104,116,97,114,114,111,119,59,1,10234,105,103,104,116,97,114,114,111,119,59,1,10233,102,59,3,55349,56643,101,114,4,2,76,82,3123,3134,101,102,116,65,114,114,111,119,59,1,8601,105,103,104,116,65,114,114,111,119,59,1,8600,4,3,99,104,116,3154,3158,3161,114,59,1,8466,59,1,8624,114,111,107,59,1,321,59,1,8810,4,8,97,99,101,102,105,111,115,117,3188,3192,3196,3222,3227,3237,3243,3248,112,59,1,10501,121,59,1,1052,4,2,100,108,3202,3213,105,117,109,83,112,97,99,101,59,1,8287,108,105,110,116,114,102,59,1,8499,114,59,3,55349,56592,110,117,115,80,108,117,115,59,1,8723,112,102,59,3,55349,56644,99,114,59,1,8499,59,1,924,4,9,74,97,99,101,102,111,115,116,117,3271,3276,3283,3306,3422,3427,4120,4126,4137,99,121,59,1,1034,99,117,116,101,59,1,323,4,3,97,101,121,3291,3297,3303,114,111,110,59,1,327,100,105,108,59,1,325,59,1,1053,4,3,103,115,119,3314,3380,3415,97,116,105,118,101,4,3,77,84,86,3327,3340,3365,101,100,105,117,109,83,112,97,99,101,59,1,8203,104,105,4,2,99,110,3348,3357,107,83,112,97,99,101,59,1,8203,83,112,97,99,101,59,1,8203,101,114,121,84,104,105,110,83,112,97,99,101,59,1,8203,116,101,100,4,2,71,76,3389,3405,114,101,97,116,101,114,71,114,101,97,116,101,114,59,1,8811,101,115,115,76,101,115,115,59,1,8810,76,105,110,101,59,1,10,114,59,3,55349,56593,4,4,66,110,112,116,3437,3444,3460,3464,114,101,97,107,59,1,8288,66,114,101,97,107,105,110,103,83,112,97,99,101,59,1,160,102,59,1,8469,4,13,59,67,68,69,71,72,76,78,80,82,83,84,86,3492,3494,3517,3536,3578,3657,3685,3784,3823,3860,3915,4066,4107,1,10988,4,2,111,117,3500,3510,110,103,114,117,101,110,116,59,1,8802,112,67,97,112,59,1,8813,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,114,59,1,8742,4,3,108,113,120,3544,3552,3571,101,109,101,110,116,59,1,8713,117,97,108,4,2,59,84,3561,3563,1,8800,105,108,100,101,59,3,8770,824,105,115,116,115,59,1,8708,114,101,97,116,101,114,4,7,59,69,70,71,76,83,84,3600,3602,3609,3621,3631,3637,3650,1,8815,113,117,97,108,59,1,8817,117,108,108,69,113,117,97,108,59,3,8807,824,114,101,97,116,101,114,59,3,8811,824,101,115,115,59,1,8825,108,97,110,116,69,113,117,97,108,59,3,10878,824,105,108,100,101,59,1,8821,117,109,112,4,2,68,69,3666,3677,111,119,110,72,117,109,112,59,3,8782,824,113,117,97,108,59,3,8783,824,101,4,2,102,115,3692,3724,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3709,3711,3717,1,8938,97,114,59,3,10703,824,113,117,97,108,59,1,8940,115,4,6,59,69,71,76,83,84,3739,3741,3748,3757,3764,3777,1,8814,113,117,97,108,59,1,8816,114,101,97,116,101,114,59,1,8824,101,115,115,59,3,8810,824,108,97,110,116,69,113,117,97,108,59,3,10877,824,105,108,100,101,59,1,8820,101,115,116,101,100,4,2,71,76,3795,3812,114,101,97,116,101,114,71,114,101,97,116,101,114,59,3,10914,824,101,115,115,76,101,115,115,59,3,10913,824,114,101,99,101,100,101,115,4,3,59,69,83,3838,3840,3848,1,8832,113,117,97,108,59,3,10927,824,108,97,110,116,69,113,117,97,108,59,1,8928,4,2,101,105,3866,3881,118,101,114,115,101,69,108,101,109,101,110,116,59,1,8716,103,104,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3900,3902,3908,1,8939,97,114,59,3,10704,824,113,117,97,108,59,1,8941,4,2,113,117,3921,3973,117,97,114,101,83,117,4,2,98,112,3933,3952,115,101,116,4,2,59,69,3942,3945,3,8847,824,113,117,97,108,59,1,8930,101,114,115,101,116,4,2,59,69,3963,3966,3,8848,824,113,117,97,108,59,1,8931,4,3,98,99,112,3981,4000,4045,115,101,116,4,2,59,69,3990,3993,3,8834,8402,113,117,97,108,59,1,8840,99,101,101,100,115,4,4,59,69,83,84,4015,4017,4025,4037,1,8833,113,117,97,108,59,3,10928,824,108,97,110,116,69,113,117,97,108,59,1,8929,105,108,100,101,59,3,8831,824,101,114,115,101,116,4,2,59,69,4056,4059,3,8835,8402,113,117,97,108,59,1,8841,105,108,100,101,4,4,59,69,70,84,4080,4082,4089,4100,1,8769,113,117,97,108,59,1,8772,117,108,108,69,113,117,97,108,59,1,8775,105,108,100,101,59,1,8777,101,114,116,105,99,97,108,66,97,114,59,1,8740,99,114,59,3,55349,56489,105,108,100,101,5,209,1,59,4135,1,209,59,1,925,4,14,69,97,99,100,102,103,109,111,112,114,115,116,117,118,4170,4176,4187,4205,4212,4217,4228,4253,4259,4292,4295,4316,4337,4346,108,105,103,59,1,338,99,117,116,101,5,211,1,59,4185,1,211,4,2,105,121,4193,4202,114,99,5,212,1,59,4200,1,212,59,1,1054,98,108,97,99,59,1,336,114,59,3,55349,56594,114,97,118,101,5,210,1,59,4226,1,210,4,3,97,101,105,4236,4241,4246,99,114,59,1,332,103,97,59,1,937,99,114,111,110,59,1,927,112,102,59,3,55349,56646,101,110,67,117,114,108,121,4,2,68,81,4272,4285,111,117,98,108,101,81,117,111,116,101,59,1,8220,117,111,116,101,59,1,8216,59,1,10836,4,2,99,108,4301,4306,114,59,3,55349,56490,97,115,104,5,216,1,59,4314,1,216,105,4,2,108,109,4323,4332,100,101,5,213,1,59,4330,1,213,101,115,59,1,10807,109,108,5,214,1,59,4344,1,214,101,114,4,2,66,80,4354,4380,4,2,97,114,4360,4364,114,59,1,8254,97,99,4,2,101,107,4372,4375,59,1,9182,101,116,59,1,9140,97,114,101,110,116,104,101,115,105,115,59,1,9180,4,9,97,99,102,104,105,108,111,114,115,4413,4422,4426,4431,4435,4438,4448,4471,4561,114,116,105,97,108,68,59,1,8706,121,59,1,1055,114,59,3,55349,56595,105,59,1,934,59,1,928,117,115,77,105,110,117,115,59,1,177,4,2,105,112,4454,4467,110,99,97,114,101,112,108,97,110,101,59,1,8460,102,59,1,8473,4,4,59,101,105,111,4481,4483,4526,4531,1,10939,99,101,100,101,115,4,4,59,69,83,84,4498,4500,4507,4519,1,8826,113,117,97,108,59,1,10927,108,97,110,116,69,113,117,97,108,59,1,8828,105,108,100,101,59,1,8830,109,101,59,1,8243,4,2,100,112,4537,4543,117,99,116,59,1,8719,111,114,116,105,111,110,4,2,59,97,4555,4557,1,8759,108,59,1,8733,4,2,99,105,4567,4572,114,59,3,55349,56491,59,1,936,4,4,85,102,111,115,4585,4594,4599,4604,79,84,5,34,1,59,4592,1,34,114,59,3,55349,56596,112,102,59,1,8474,99,114,59,3,55349,56492,4,12,66,69,97,99,101,102,104,105,111,114,115,117,4636,4642,4650,4681,4704,4763,4767,4771,5047,5069,5081,5094,97,114,114,59,1,10512,71,5,174,1,59,4648,1,174,4,3,99,110,114,4658,4664,4668,117,116,101,59,1,340,103,59,1,10219,114,4,2,59,116,4675,4677,1,8608,108,59,1,10518,4,3,97,101,121,4689,4695,4701,114,111,110,59,1,344,100,105,108,59,1,342,59,1,1056,4,2,59,118,4710,4712,1,8476,101,114,115,101,4,2,69,85,4722,4748,4,2,108,113,4728,4736,101,109,101,110,116,59,1,8715,117,105,108,105,98,114,105,117,109,59,1,8651,112,69,113,117,105,108,105,98,114,105,117,109,59,1,10607,114,59,1,8476,111,59,1,929,103,104,116,4,8,65,67,68,70,84,85,86,97,4792,4840,4849,4905,4912,4972,5022,5040,4,2,110,114,4798,4811,103,108,101,66,114,97,99,107,101,116,59,1,10217,114,111,119,4,3,59,66,76,4822,4824,4829,1,8594,97,114,59,1,8677,101,102,116,65,114,114,111,119,59,1,8644,101,105,108,105,110,103,59,1,8969,111,4,2,117,119,4856,4869,98,108,101,66,114,97,99,107,101,116,59,1,10215,110,4,2,84,86,4876,4887,101,101,86,101,99,116,111,114,59,1,10589,101,99,116,111,114,4,2,59,66,4898,4900,1,8642,97,114,59,1,10581,108,111,111,114,59,1,8971,4,2,101,114,4918,4944,101,4,3,59,65,86,4927,4929,4936,1,8866,114,114,111,119,59,1,8614,101,99,116,111,114,59,1,10587,105,97,110,103,108,101,4,3,59,66,69,4958,4960,4965,1,8883,97,114,59,1,10704,113,117,97,108,59,1,8885,112,4,3,68,84,86,4981,4993,5004,111,119,110,86,101,99,116,111,114,59,1,10575,101,101,86,101,99,116,111,114,59,1,10588,101,99,116,111,114,4,2,59,66,5015,5017,1,8638,97,114,59,1,10580,101,99,116,111,114,4,2,59,66,5033,5035,1,8640,97,114,59,1,10579,114,114,111,119,59,1,8658,4,2,112,117,5053,5057,102,59,1,8477,110,100,73,109,112,108,105,101,115,59,1,10608,105,103,104,116,97,114,114,111,119,59,1,8667,4,2,99,104,5087,5091,114,59,1,8475,59,1,8625,108,101,68,101,108,97,121,101,100,59,1,10740,4,13,72,79,97,99,102,104,105,109,111,113,115,116,117,5134,5150,5157,5164,5198,5203,5259,5265,5277,5283,5374,5380,5385,4,2,67,99,5140,5146,72,99,121,59,1,1065,121,59,1,1064,70,84,99,121,59,1,1068,99,117,116,101,59,1,346,4,5,59,97,101,105,121,5176,5178,5184,5190,5195,1,10940,114,111,110,59,1,352,100,105,108,59,1,350,114,99,59,1,348,59,1,1057,114,59,3,55349,56598,111,114,116,4,4,68,76,82,85,5216,5227,5238,5250,111,119,110,65,114,114,111,119,59,1,8595,101,102,116,65,114,114,111,119,59,1,8592,105,103,104,116,65,114,114,111,119,59,1,8594,112,65,114,114,111,119,59,1,8593,103,109,97,59,1,931,97,108,108,67,105,114,99,108,101,59,1,8728,112,102,59,3,55349,56650,4,2,114,117,5289,5293,116,59,1,8730,97,114,101,4,4,59,73,83,85,5306,5308,5322,5367,1,9633,110,116,101,114,115,101,99,116,105,111,110,59,1,8851,117,4,2,98,112,5329,5347,115,101,116,4,2,59,69,5338,5340,1,8847,113,117,97,108,59,1,8849,101,114,115,101,116,4,2,59,69,5358,5360,1,8848,113,117,97,108,59,1,8850,110,105,111,110,59,1,8852,99,114,59,3,55349,56494,97,114,59,1,8902,4,4,98,99,109,112,5395,5420,5475,5478,4,2,59,115,5401,5403,1,8912,101,116,4,2,59,69,5411,5413,1,8912,113,117,97,108,59,1,8838,4,2,99,104,5426,5468,101,101,100,115,4,4,59,69,83,84,5440,5442,5449,5461,1,8827,113,117,97,108,59,1,10928,108,97,110,116,69,113,117,97,108,59,1,8829,105,108,100,101,59,1,8831,84,104,97,116,59,1,8715,59,1,8721,4,3,59,101,115,5486,5488,5507,1,8913,114,115,101,116,4,2,59,69,5498,5500,1,8835,113,117,97,108,59,1,8839,101,116,59,1,8913,4,11,72,82,83,97,99,102,104,105,111,114,115,5536,5546,5552,5567,5579,5602,5607,5655,5695,5701,5711,79,82,78,5,222,1,59,5544,1,222,65,68,69,59,1,8482,4,2,72,99,5558,5563,99,121,59,1,1035,121,59,1,1062,4,2,98,117,5573,5576,59,1,9,59,1,932,4,3,97,101,121,5587,5593,5599,114,111,110,59,1,356,100,105,108,59,1,354,59,1,1058,114,59,3,55349,56599,4,2,101,105,5613,5631,4,2,114,116,5619,5627,101,102,111,114,101,59,1,8756,97,59,1,920,4,2,99,110,5637,5647,107,83,112,97,99,101,59,3,8287,8202,83,112,97,99,101,59,1,8201,108,100,101,4,4,59,69,70,84,5668,5670,5677,5688,1,8764,113,117,97,108,59,1,8771,117,108,108,69,113,117,97,108,59,1,8773,105,108,100,101,59,1,8776,112,102,59,3,55349,56651,105,112,108,101,68,111,116,59,1,8411,4,2,99,116,5717,5722,114,59,3,55349,56495,114,111,107,59,1,358,4,14,97,98,99,100,102,103,109,110,111,112,114,115,116,117,5758,5789,5805,5823,5830,5835,5846,5852,5921,5937,6089,6095,6101,6108,4,2,99,114,5764,5774,117,116,101,5,218,1,59,5772,1,218,114,4,2,59,111,5781,5783,1,8607,99,105,114,59,1,10569,114,4,2,99,101,5796,5800,121,59,1,1038,118,101,59,1,364,4,2,105,121,5811,5820,114,99,5,219,1,59,5818,1,219,59,1,1059,98,108,97,99,59,1,368,114,59,3,55349,56600,114,97,118,101,5,217,1,59,5844,1,217,97,99,114,59,1,362,4,2,100,105,5858,5905,101,114,4,2,66,80,5866,5892,4,2,97,114,5872,5876,114,59,1,95,97,99,4,2,101,107,5884,5887,59,1,9183,101,116,59,1,9141,97,114,101,110,116,104,101,115,105,115,59,1,9181,111,110,4,2,59,80,5913,5915,1,8899,108,117,115,59,1,8846,4,2,103,112,5927,5932,111,110,59,1,370,102,59,3,55349,56652,4,8,65,68,69,84,97,100,112,115,5955,5985,5996,6009,6026,6033,6044,6075,114,114,111,119,4,3,59,66,68,5967,5969,5974,1,8593,97,114,59,1,10514,111,119,110,65,114,114,111,119,59,1,8645,111,119,110,65,114,114,111,119,59,1,8597,113,117,105,108,105,98,114,105,117,109,59,1,10606,101,101,4,2,59,65,6017,6019,1,8869,114,114,111,119,59,1,8613,114,114,111,119,59,1,8657,111,119,110,97,114,114,111,119,59,1,8661,101,114,4,2,76,82,6052,6063,101,102,116,65,114,114,111,119,59,1,8598,105,103,104,116,65,114,114,111,119,59,1,8599,105,4,2,59,108,6082,6084,1,978,111,110,59,1,933,105,110,103,59,1,366,99,114,59,3,55349,56496,105,108,100,101,59,1,360,109,108,5,220,1,59,6115,1,220,4,9,68,98,99,100,101,102,111,115,118,6137,6143,6148,6152,6166,6250,6255,6261,6267,97,115,104,59,1,8875,97,114,59,1,10987,121,59,1,1042,97,115,104,4,2,59,108,6161,6163,1,8873,59,1,10982,4,2,101,114,6172,6175,59,1,8897,4,3,98,116,121,6183,6188,6238,97,114,59,1,8214,4,2,59,105,6194,6196,1,8214,99,97,108,4,4,66,76,83,84,6209,6214,6220,6231,97,114,59,1,8739,105,110,101,59,1,124,101,112,97,114,97,116,111,114,59,1,10072,105,108,100,101,59,1,8768,84,104,105,110,83,112,97,99,101,59,1,8202,114,59,3,55349,56601,112,102,59,3,55349,56653,99,114,59,3,55349,56497,100,97,115,104,59,1,8874,4,5,99,101,102,111,115,6286,6292,6298,6303,6309,105,114,99,59,1,372,100,103,101,59,1,8896,114,59,3,55349,56602,112,102,59,3,55349,56654,99,114,59,3,55349,56498,4,4,102,105,111,115,6325,6330,6333,6339,114,59,3,55349,56603,59,1,926,112,102,59,3,55349,56655,99,114,59,3,55349,56499,4,9,65,73,85,97,99,102,111,115,117,6365,6370,6375,6380,6391,6405,6410,6416,6422,99,121,59,1,1071,99,121,59,1,1031,99,121,59,1,1070,99,117,116,101,5,221,1,59,6389,1,221,4,2,105,121,6397,6402,114,99,59,1,374,59,1,1067,114,59,3,55349,56604,112,102,59,3,55349,56656,99,114,59,3,55349,56500,109,108,59,1,376,4,8,72,97,99,100,101,102,111,115,6445,6450,6457,6472,6477,6501,6505,6510,99,121,59,1,1046,99,117,116,101,59,1,377,4,2,97,121,6463,6469,114,111,110,59,1,381,59,1,1047,111,116,59,1,379,4,2,114,116,6483,6497,111,87,105,100,116,104,83,112,97,99,101,59,1,8203,97,59,1,918,114,59,1,8488,112,102,59,1,8484,99,114,59,3,55349,56501,4,16,97,98,99,101,102,103,108,109,110,111,112,114,115,116,117,119,6550,6561,6568,6612,6622,6634,6645,6672,6699,6854,6870,6923,6933,6963,6974,6983,99,117,116,101,5,225,1,59,6559,1,225,114,101,118,101,59,1,259,4,6,59,69,100,105,117,121,6582,6584,6588,6591,6600,6609,1,8766,59,3,8766,819,59,1,8767,114,99,5,226,1,59,6598,1,226,116,101,5,180,1,59,6607,1,180,59,1,1072,108,105,103,5,230,1,59,6620,1,230,4,2,59,114,6628,6630,1,8289,59,3,55349,56606,114,97,118,101,5,224,1,59,6643,1,224,4,2,101,112,6651,6667,4,2,102,112,6657,6663,115,121,109,59,1,8501,104,59,1,8501,104,97,59,1,945,4,2,97,112,6678,6692,4,2,99,108,6684,6688,114,59,1,257,103,59,1,10815,5,38,1,59,6697,1,38,4,2,100,103,6705,6737,4,5,59,97,100,115,118,6717,6719,6724,6727,6734,1,8743,110,100,59,1,10837,59,1,10844,108,111,112,101,59,1,10840,59,1,10842,4,7,59,101,108,109,114,115,122,6753,6755,6758,6762,6814,6835,6848,1,8736,59,1,10660,101,59,1,8736,115,100,4,2,59,97,6770,6772,1,8737,4,8,97,98,99,100,101,102,103,104,6790,6793,6796,6799,6802,6805,6808,6811,59,1,10664,59,1,10665,59,1,10666,59,1,10667,59,1,10668,59,1,10669,59,1,10670,59,1,10671,116,4,2,59,118,6821,6823,1,8735,98,4,2,59,100,6830,6832,1,8894,59,1,10653,4,2,112,116,6841,6845,104,59,1,8738,59,1,197,97,114,114,59,1,9084,4,2,103,112,6860,6865,111,110,59,1,261,102,59,3,55349,56658,4,7,59,69,97,101,105,111,112,6886,6888,6891,6897,6900,6904,6908,1,8776,59,1,10864,99,105,114,59,1,10863,59,1,8778,100,59,1,8779,115,59,1,39,114,111,120,4,2,59,101,6917,6919,1,8776,113,59,1,8778,105,110,103,5,229,1,59,6931,1,229,4,3,99,116,121,6941,6946,6949,114,59,3,55349,56502,59,1,42,109,112,4,2,59,101,6957,6959,1,8776,113,59,1,8781,105,108,100,101,5,227,1,59,6972,1,227,109,108,5,228,1,59,6981,1,228,4,2,99,105,6989,6997,111,110,105,110,116,59,1,8755,110,116,59,1,10769,4,16,78,97,98,99,100,101,102,105,107,108,110,111,112,114,115,117,7036,7041,7119,7135,7149,7155,7219,7224,7347,7354,7463,7489,7786,7793,7814,7866,111,116,59,1,10989,4,2,99,114,7047,7094,107,4,4,99,101,112,115,7058,7064,7073,7080,111,110,103,59,1,8780,112,115,105,108,111,110,59,1,1014,114,105,109,101,59,1,8245,105,109,4,2,59,101,7088,7090,1,8765,113,59,1,8909,4,2,118,119,7100,7105,101,101,59,1,8893,101,100,4,2,59,103,7113,7115,1,8965,101,59,1,8965,114,107,4,2,59,116,7127,7129,1,9141,98,114,107,59,1,9142,4,2,111,121,7141,7146,110,103,59,1,8780,59,1,1073,113,117,111,59,1,8222,4,5,99,109,112,114,116,7167,7181,7188,7193,7199,97,117,115,4,2,59,101,7176,7178,1,8757,59,1,8757,112,116,121,118,59,1,10672,115,105,59,1,1014,110,111,117,59,1,8492,4,3,97,104,119,7207,7210,7213,59,1,946,59,1,8502,101,101,110,59,1,8812,114,59,3,55349,56607,103,4,7,99,111,115,116,117,118,119,7241,7262,7288,7305,7328,7335,7340,4,3,97,105,117,7249,7253,7258,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,4,3,100,112,116,7270,7275,7281,111,116,59,1,10752,108,117,115,59,1,10753,105,109,101,115,59,1,10754,4,2,113,116,7294,7300,99,117,112,59,1,10758,97,114,59,1,9733,114,105,97,110,103,108,101,4,2,100,117,7318,7324,111,119,110,59,1,9661,112,59,1,9651,112,108,117,115,59,1,10756,101,101,59,1,8897,101,100,103,101,59,1,8896,97,114,111,119,59,1,10509,4,3,97,107,111,7362,7436,7458,4,2,99,110,7368,7432,107,4,3,108,115,116,7377,7386,7394,111,122,101,110,103,101,59,1,10731,113,117,97,114,101,59,1,9642,114,105,97,110,103,108,101,4,4,59,100,108,114,7411,7413,7419,7425,1,9652,111,119,110,59,1,9662,101,102,116,59,1,9666,105,103,104,116,59,1,9656,107,59,1,9251,4,2,49,51,7442,7454,4,2,50,52,7448,7451,59,1,9618,59,1,9617,52,59,1,9619,99,107,59,1,9608,4,2,101,111,7469,7485,4,2,59,113,7475,7478,3,61,8421,117,105,118,59,3,8801,8421,116,59,1,8976,4,4,112,116,119,120,7499,7504,7517,7523,102,59,3,55349,56659,4,2,59,116,7510,7512,1,8869,111,109,59,1,8869,116,105,101,59,1,8904,4,12,68,72,85,86,98,100,104,109,112,116,117,118,7549,7571,7597,7619,7655,7660,7682,7708,7715,7721,7728,7750,4,4,76,82,108,114,7559,7562,7565,7568,59,1,9559,59,1,9556,59,1,9558,59,1,9555,4,5,59,68,85,100,117,7583,7585,7588,7591,7594,1,9552,59,1,9574,59,1,9577,59,1,9572,59,1,9575,4,4,76,82,108,114,7607,7610,7613,7616,59,1,9565,59,1,9562,59,1,9564,59,1,9561,4,7,59,72,76,82,104,108,114,7635,7637,7640,7643,7646,7649,7652,1,9553,59,1,9580,59,1,9571,59,1,9568,59,1,9579,59,1,9570,59,1,9567,111,120,59,1,10697,4,4,76,82,108,114,7670,7673,7676,7679,59,1,9557,59,1,9554,59,1,9488,59,1,9484,4,5,59,68,85,100,117,7694,7696,7699,7702,7705,1,9472,59,1,9573,59,1,9576,59,1,9516,59,1,9524,105,110,117,115,59,1,8863,108,117,115,59,1,8862,105,109,101,115,59,1,8864,4,4,76,82,108,114,7738,7741,7744,7747,59,1,9563,59,1,9560,59,1,9496,59,1,9492,4,7,59,72,76,82,104,108,114,7766,7768,7771,7774,7777,7780,7783,1,9474,59,1,9578,59,1,9569,59,1,9566,59,1,9532,59,1,9508,59,1,9500,114,105,109,101,59,1,8245,4,2,101,118,7799,7804,118,101,59,1,728,98,97,114,5,166,1,59,7812,1,166,4,4,99,101,105,111,7824,7829,7834,7846,114,59,3,55349,56503,109,105,59,1,8271,109,4,2,59,101,7841,7843,1,8765,59,1,8909,108,4,3,59,98,104,7855,7857,7860,1,92,59,1,10693,115,117,98,59,1,10184,4,2,108,109,7872,7885,108,4,2,59,101,7879,7881,1,8226,116,59,1,8226,112,4,3,59,69,101,7894,7896,7899,1,8782,59,1,10926,4,2,59,113,7905,7907,1,8783,59,1,8783,4,15,97,99,100,101,102,104,105,108,111,114,115,116,117,119,121,7942,8021,8075,8080,8121,8126,8157,8279,8295,8430,8446,8485,8491,8707,8726,4,3,99,112,114,7950,7956,8007,117,116,101,59,1,263,4,6,59,97,98,99,100,115,7970,7972,7977,7984,7998,8003,1,8745,110,100,59,1,10820,114,99,117,112,59,1,10825,4,2,97,117,7990,7994,112,59,1,10827,112,59,1,10823,111,116,59,1,10816,59,3,8745,65024,4,2,101,111,8013,8017,116,59,1,8257,110,59,1,711,4,4,97,101,105,117,8031,8046,8056,8061,4,2,112,114,8037,8041,115,59,1,10829,111,110,59,1,269,100,105,108,5,231,1,59,8054,1,231,114,99,59,1,265,112,115,4,2,59,115,8069,8071,1,10828,109,59,1,10832,111,116,59,1,267,4,3,100,109,110,8088,8097,8104,105,108,5,184,1,59,8095,1,184,112,116,121,118,59,1,10674,116,5,162,2,59,101,8112,8114,1,162,114,100,111,116,59,1,183,114,59,3,55349,56608,4,3,99,101,105,8134,8138,8154,121,59,1,1095,99,107,4,2,59,109,8146,8148,1,10003,97,114,107,59,1,10003,59,1,967,114,4,7,59,69,99,101,102,109,115,8174,8176,8179,8258,8261,8268,8273,1,9675,59,1,10691,4,3,59,101,108,8187,8189,8193,1,710,113,59,1,8791,101,4,2,97,100,8200,8223,114,114,111,119,4,2,108,114,8210,8216,101,102,116,59,1,8634,105,103,104,116,59,1,8635,4,5,82,83,97,99,100,8235,8238,8241,8246,8252,59,1,174,59,1,9416,115,116,59,1,8859,105,114,99,59,1,8858,97,115,104,59,1,8861,59,1,8791,110,105,110,116,59,1,10768,105,100,59,1,10991,99,105,114,59,1,10690,117,98,115,4,2,59,117,8288,8290,1,9827,105,116,59,1,9827,4,4,108,109,110,112,8305,8326,8376,8400,111,110,4,2,59,101,8313,8315,1,58,4,2,59,113,8321,8323,1,8788,59,1,8788,4,2,109,112,8332,8344,97,4,2,59,116,8339,8341,1,44,59,1,64,4,3,59,102,108,8352,8354,8358,1,8705,110,59,1,8728,101,4,2,109,120,8365,8371,101,110,116,59,1,8705,101,115,59,1,8450,4,2,103,105,8382,8395,4,2,59,100,8388,8390,1,8773,111,116,59,1,10861,110,116,59,1,8750,4,3,102,114,121,8408,8412,8417,59,3,55349,56660,111,100,59,1,8720,5,169,2,59,115,8424,8426,1,169,114,59,1,8471,4,2,97,111,8436,8441,114,114,59,1,8629,115,115,59,1,10007,4,2,99,117,8452,8457,114,59,3,55349,56504,4,2,98,112,8463,8474,4,2,59,101,8469,8471,1,10959,59,1,10961,4,2,59,101,8480,8482,1,10960,59,1,10962,100,111,116,59,1,8943,4,7,100,101,108,112,114,118,119,8507,8522,8536,8550,8600,8697,8702,97,114,114,4,2,108,114,8516,8519,59,1,10552,59,1,10549,4,2,112,115,8528,8532,114,59,1,8926,99,59,1,8927,97,114,114,4,2,59,112,8545,8547,1,8630,59,1,10557,4,6,59,98,99,100,111,115,8564,8566,8573,8587,8592,8596,1,8746,114,99,97,112,59,1,10824,4,2,97,117,8579,8583,112,59,1,10822,112,59,1,10826,111,116,59,1,8845,114,59,1,10821,59,3,8746,65024,4,4,97,108,114,118,8610,8623,8663,8672,114,114,4,2,59,109,8618,8620,1,8631,59,1,10556,121,4,3,101,118,119,8632,8651,8656,113,4,2,112,115,8639,8645,114,101,99,59,1,8926,117,99,99,59,1,8927,101,101,59,1,8910,101,100,103,101,59,1,8911,101,110,5,164,1,59,8670,1,164,101,97,114,114,111,119,4,2,108,114,8684,8690,101,102,116,59,1,8630,105,103,104,116,59,1,8631,101,101,59,1,8910,101,100,59,1,8911,4,2,99,105,8713,8721,111,110,105,110,116,59,1,8754,110,116,59,1,8753,108,99,116,121,59,1,9005,4,19,65,72,97,98,99,100,101,102,104,105,106,108,111,114,115,116,117,119,122,8773,8778,8783,8821,8839,8854,8887,8914,8930,8944,9036,9041,9058,9197,9227,9258,9281,9297,9305,114,114,59,1,8659,97,114,59,1,10597,4,4,103,108,114,115,8793,8799,8805,8809,103,101,114,59,1,8224,101,116,104,59,1,8504,114,59,1,8595,104,4,2,59,118,8816,8818,1,8208,59,1,8867,4,2,107,108,8827,8834,97,114,111,119,59,1,10511,97,99,59,1,733,4,2,97,121,8845,8851,114,111,110,59,1,271,59,1,1076,4,3,59,97,111,8862,8864,8880,1,8518,4,2,103,114,8870,8876,103,101,114,59,1,8225,114,59,1,8650,116,115,101,113,59,1,10871,4,3,103,108,109,8895,8902,8907,5,176,1,59,8900,1,176,116,97,59,1,948,112,116,121,118,59,1,10673,4,2,105,114,8920,8926,115,104,116,59,1,10623,59,3,55349,56609,97,114,4,2,108,114,8938,8941,59,1,8643,59,1,8642,4,5,97,101,103,115,118,8956,8986,8989,8996,9001,109,4,3,59,111,115,8965,8967,8983,1,8900,110,100,4,2,59,115,8975,8977,1,8900,117,105,116,59,1,9830,59,1,9830,59,1,168,97,109,109,97,59,1,989,105,110,59,1,8946,4,3,59,105,111,9009,9011,9031,1,247,100,101,5,247,2,59,111,9020,9022,1,247,110,116,105,109,101,115,59,1,8903,110,120,59,1,8903,99,121,59,1,1106,99,4,2,111,114,9048,9053,114,110,59,1,8990,111,112,59,1,8973,4,5,108,112,116,117,119,9070,9076,9081,9130,9144,108,97,114,59,1,36,102,59,3,55349,56661,4,5,59,101,109,112,115,9093,9095,9109,9116,9122,1,729,113,4,2,59,100,9102,9104,1,8784,111,116,59,1,8785,105,110,117,115,59,1,8760,108,117,115,59,1,8724,113,117,97,114,101,59,1,8865,98,108,101,98,97,114,119,101,100,103,101,59,1,8966,110,4,3,97,100,104,9153,9160,9172,114,114,111,119,59,1,8595,111,119,110,97,114,114,111,119,115,59,1,8650,97,114,112,111,111,110,4,2,108,114,9184,9190,101,102,116,59,1,8643,105,103,104,116,59,1,8642,4,2,98,99,9203,9211,107,97,114,111,119,59,1,10512,4,2,111,114,9217,9222,114,110,59,1,8991,111,112,59,1,8972,4,3,99,111,116,9235,9248,9252,4,2,114,121,9241,9245,59,3,55349,56505,59,1,1109,108,59,1,10742,114,111,107,59,1,273,4,2,100,114,9264,9269,111,116,59,1,8945,105,4,2,59,102,9276,9278,1,9663,59,1,9662,4,2,97,104,9287,9292,114,114,59,1,8693,97,114,59,1,10607,97,110,103,108,101,59,1,10662,4,2,99,105,9311,9315,121,59,1,1119,103,114,97,114,114,59,1,10239,4,18,68,97,99,100,101,102,103,108,109,110,111,112,113,114,115,116,117,120,9361,9376,9398,9439,9444,9447,9462,9495,9531,9585,9598,9614,9659,9755,9771,9792,9808,9826,4,2,68,111,9367,9372,111,116,59,1,10871,116,59,1,8785,4,2,99,115,9382,9392,117,116,101,5,233,1,59,9390,1,233,116,101,114,59,1,10862,4,4,97,105,111,121,9408,9414,9430,9436,114,111,110,59,1,283,114,4,2,59,99,9421,9423,1,8790,5,234,1,59,9428,1,234,108,111,110,59,1,8789,59,1,1101,111,116,59,1,279,59,1,8519,4,2,68,114,9453,9458,111,116,59,1,8786,59,3,55349,56610,4,3,59,114,115,9470,9472,9482,1,10906,97,118,101,5,232,1,59,9480,1,232,4,2,59,100,9488,9490,1,10902,111,116,59,1,10904,4,4,59,105,108,115,9505,9507,9515,9518,1,10905,110,116,101,114,115,59,1,9191,59,1,8467,4,2,59,100,9524,9526,1,10901,111,116,59,1,10903,4,3,97,112,115,9539,9544,9564,99,114,59,1,275,116,121,4,3,59,115,118,9554,9556,9561,1,8709,101,116,59,1,8709,59,1,8709,112,4,2,49,59,9571,9583,4,2,51,52,9577,9580,59,1,8196,59,1,8197,1,8195,4,2,103,115,9591,9594,59,1,331,112,59,1,8194,4,2,103,112,9604,9609,111,110,59,1,281,102,59,3,55349,56662,4,3,97,108,115,9622,9635,9640,114,4,2,59,115,9629,9631,1,8917,108,59,1,10723,117,115,59,1,10865,105,4,3,59,108,118,9649,9651,9656,1,949,111,110,59,1,949,59,1,1013,4,4,99,115,117,118,9669,9686,9716,9747,4,2,105,111,9675,9680,114,99,59,1,8790,108,111,110,59,1,8789,4,2,105,108,9692,9696,109,59,1,8770,97,110,116,4,2,103,108,9705,9710,116,114,59,1,10902,101,115,115,59,1,10901,4,3,97,101,105,9724,9729,9734,108,115,59,1,61,115,116,59,1,8799,118,4,2,59,68,9741,9743,1,8801,68,59,1,10872,112,97,114,115,108,59,1,10725,4,2,68,97,9761,9766,111,116,59,1,8787,114,114,59,1,10609,4,3,99,100,105,9779,9783,9788,114,59,1,8495,111,116,59,1,8784,109,59,1,8770,4,2,97,104,9798,9801,59,1,951,5,240,1,59,9806,1,240,4,2,109,114,9814,9822,108,5,235,1,59,9820,1,235,111,59,1,8364,4,3,99,105,112,9834,9838,9843,108,59,1,33,115,116,59,1,8707,4,2,101,111,9849,9859,99,116,97,116,105,111,110,59,1,8496,110,101,110,116,105,97,108,101,59,1,8519,4,12,97,99,101,102,105,106,108,110,111,112,114,115,9896,9910,9914,9921,9954,9960,9967,9989,9994,10027,10036,10164,108,108,105,110,103,100,111,116,115,101,113,59,1,8786,121,59,1,1092,109,97,108,101,59,1,9792,4,3,105,108,114,9929,9935,9950,108,105,103,59,1,64259,4,2,105,108,9941,9945,103,59,1,64256,105,103,59,1,64260,59,3,55349,56611,108,105,103,59,1,64257,108,105,103,59,3,102,106,4,3,97,108,116,9975,9979,9984,116,59,1,9837,105,103,59,1,64258,110,115,59,1,9649,111,102,59,1,402,4,2,112,114,10000,10005,102,59,3,55349,56663,4,2,97,107,10011,10016,108,108,59,1,8704,4,2,59,118,10022,10024,1,8916,59,1,10969,97,114,116,105,110,116,59,1,10765,4,2,97,111,10042,10159,4,2,99,115,10048,10155,4,6,49,50,51,52,53,55,10062,10102,10114,10135,10139,10151,4,6,50,51,52,53,54,56,10076,10083,10086,10093,10096,10099,5,189,1,59,10081,1,189,59,1,8531,5,188,1,59,10091,1,188,59,1,8533,59,1,8537,59,1,8539,4,2,51,53,10108,10111,59,1,8532,59,1,8534,4,3,52,53,56,10122,10129,10132,5,190,1,59,10127,1,190,59,1,8535,59,1,8540,53,59,1,8536,4,2,54,56,10145,10148,59,1,8538,59,1,8541,56,59,1,8542,108,59,1,8260,119,110,59,1,8994,99,114,59,3,55349,56507,4,17,69,97,98,99,100,101,102,103,105,106,108,110,111,114,115,116,118,10206,10217,10247,10254,10268,10273,10358,10363,10374,10380,10385,10406,10458,10464,10470,10497,10610,4,2,59,108,10212,10214,1,8807,59,1,10892,4,3,99,109,112,10225,10231,10244,117,116,101,59,1,501,109,97,4,2,59,100,10239,10241,1,947,59,1,989,59,1,10886,114,101,118,101,59,1,287,4,2,105,121,10260,10265,114,99,59,1,285,59,1,1075,111,116,59,1,289,4,4,59,108,113,115,10283,10285,10288,10308,1,8805,59,1,8923,4,3,59,113,115,10296,10298,10301,1,8805,59,1,8807,108,97,110,116,59,1,10878,4,4,59,99,100,108,10318,10320,10324,10345,1,10878,99,59,1,10921,111,116,4,2,59,111,10332,10334,1,10880,4,2,59,108,10340,10342,1,10882,59,1,10884,4,2,59,101,10351,10354,3,8923,65024,115,59,1,10900,114,59,3,55349,56612,4,2,59,103,10369,10371,1,8811,59,1,8921,109,101,108,59,1,8503,99,121,59,1,1107,4,4,59,69,97,106,10395,10397,10400,10403,1,8823,59,1,10898,59,1,10917,59,1,10916,4,4,69,97,101,115,10416,10419,10434,10453,59,1,8809,112,4,2,59,112,10426,10428,1,10890,114,111,120,59,1,10890,4,2,59,113,10440,10442,1,10888,4,2,59,113,10448,10450,1,10888,59,1,8809,105,109,59,1,8935,112,102,59,3,55349,56664,97,118,101,59,1,96,4,2,99,105,10476,10480,114,59,1,8458,109,4,3,59,101,108,10489,10491,10494,1,8819,59,1,10894,59,1,10896,5,62,6,59,99,100,108,113,114,10512,10514,10527,10532,10538,10545,1,62,4,2,99,105,10520,10523,59,1,10919,114,59,1,10874,111,116,59,1,8919,80,97,114,59,1,10645,117,101,115,116,59,1,10876,4,5,97,100,101,108,115,10557,10574,10579,10599,10605,4,2,112,114,10563,10570,112,114,111,120,59,1,10886,114,59,1,10616,111,116,59,1,8919,113,4,2,108,113,10586,10592,101,115,115,59,1,8923,108,101,115,115,59,1,10892,101,115,115,59,1,8823,105,109,59,1,8819,4,2,101,110,10616,10626,114,116,110,101,113,113,59,3,8809,65024,69,59,3,8809,65024,4,10,65,97,98,99,101,102,107,111,115,121,10653,10658,10713,10718,10724,10760,10765,10786,10850,10875,114,114,59,1,8660,4,4,105,108,109,114,10668,10674,10678,10684,114,115,112,59,1,8202,102,59,1,189,105,108,116,59,1,8459,4,2,100,114,10690,10695,99,121,59,1,1098,4,3,59,99,119,10703,10705,10710,1,8596,105,114,59,1,10568,59,1,8621,97,114,59,1,8463,105,114,99,59,1,293,4,3,97,108,114,10732,10748,10754,114,116,115,4,2,59,117,10741,10743,1,9829,105,116,59,1,9829,108,105,112,59,1,8230,99,111,110,59,1,8889,114,59,3,55349,56613,115,4,2,101,119,10772,10779,97,114,111,119,59,1,10533,97,114,111,119,59,1,10534,4,5,97,109,111,112,114,10798,10803,10809,10839,10844,114,114,59,1,8703,116,104,116,59,1,8763,107,4,2,108,114,10816,10827,101,102,116,97,114,114,111,119,59,1,8617,105,103,104,116,97,114,114,111,119,59,1,8618,102,59,3,55349,56665,98,97,114,59,1,8213,4,3,99,108,116,10858,10863,10869,114,59,3,55349,56509,97,115,104,59,1,8463,114,111,107,59,1,295,4,2,98,112,10881,10887,117,108,108,59,1,8259,104,101,110,59,1,8208,4,15,97,99,101,102,103,105,106,109,110,111,112,113,115,116,117,10925,10936,10958,10977,10990,11001,11039,11045,11101,11192,11220,11226,11237,11285,11299,99,117,116,101,5,237,1,59,10934,1,237,4,3,59,105,121,10944,10946,10955,1,8291,114,99,5,238,1,59,10953,1,238,59,1,1080,4,2,99,120,10964,10968,121,59,1,1077,99,108,5,161,1,59,10975,1,161,4,2,102,114,10983,10986,59,1,8660,59,3,55349,56614,114,97,118,101,5,236,1,59,10999,1,236,4,4,59,105,110,111,11011,11013,11028,11034,1,8520,4,2,105,110,11019,11024,110,116,59,1,10764,116,59,1,8749,102,105,110,59,1,10716,116,97,59,1,8489,108,105,103,59,1,307,4,3,97,111,112,11053,11092,11096,4,3,99,103,116,11061,11065,11088,114,59,1,299,4,3,101,108,112,11073,11076,11082,59,1,8465,105,110,101,59,1,8464,97,114,116,59,1,8465,104,59,1,305,102,59,1,8887,101,100,59,1,437,4,5,59,99,102,111,116,11113,11115,11121,11136,11142,1,8712,97,114,101,59,1,8453,105,110,4,2,59,116,11129,11131,1,8734,105,101,59,1,10717,100,111,116,59,1,305,4,5,59,99,101,108,112,11154,11156,11161,11179,11186,1,8747,97,108,59,1,8890,4,2,103,114,11167,11173,101,114,115,59,1,8484,99,97,108,59,1,8890,97,114,104,107,59,1,10775,114,111,100,59,1,10812,4,4,99,103,112,116,11202,11206,11211,11216,121,59,1,1105,111,110,59,1,303,102,59,3,55349,56666,97,59,1,953,114,111,100,59,1,10812,117,101,115,116,5,191,1,59,11235,1,191,4,2,99,105,11243,11248,114,59,3,55349,56510,110,4,5,59,69,100,115,118,11261,11263,11266,11271,11282,1,8712,59,1,8953,111,116,59,1,8949,4,2,59,118,11277,11279,1,8948,59,1,8947,59,1,8712,4,2,59,105,11291,11293,1,8290,108,100,101,59,1,297,4,2,107,109,11305,11310,99,121,59,1,1110,108,5,239,1,59,11316,1,239,4,6,99,102,109,111,115,117,11332,11346,11351,11357,11363,11380,4,2,105,121,11338,11343,114,99,59,1,309,59,1,1081,114,59,3,55349,56615,97,116,104,59,1,567,112,102,59,3,55349,56667,4,2,99,101,11369,11374,114,59,3,55349,56511,114,99,121,59,1,1112,107,99,121,59,1,1108,4,8,97,99,102,103,104,106,111,115,11404,11418,11433,11438,11445,11450,11455,11461,112,112,97,4,2,59,118,11413,11415,1,954,59,1,1008,4,2,101,121,11424,11430,100,105,108,59,1,311,59,1,1082,114,59,3,55349,56616,114,101,101,110,59,1,312,99,121,59,1,1093,99,121,59,1,1116,112,102,59,3,55349,56668,99,114,59,3,55349,56512,4,23,65,66,69,72,97,98,99,100,101,102,103,104,106,108,109,110,111,112,114,115,116,117,118,11515,11538,11544,11555,11560,11721,11780,11818,11868,12136,12160,12171,12203,12208,12246,12275,12327,12509,12523,12569,12641,12732,12752,4,3,97,114,116,11523,11528,11532,114,114,59,1,8666,114,59,1,8656,97,105,108,59,1,10523,97,114,114,59,1,10510,4,2,59,103,11550,11552,1,8806,59,1,10891,97,114,59,1,10594,4,9,99,101,103,109,110,112,113,114,116,11580,11586,11594,11600,11606,11624,11627,11636,11694,117,116,101,59,1,314,109,112,116,121,118,59,1,10676,114,97,110,59,1,8466,98,100,97,59,1,955,103,4,3,59,100,108,11615,11617,11620,1,10216,59,1,10641,101,59,1,10216,59,1,10885,117,111,5,171,1,59,11634,1,171,114,4,8,59,98,102,104,108,112,115,116,11655,11657,11669,11673,11677,11681,11685,11690,1,8592,4,2,59,102,11663,11665,1,8676,115,59,1,10527,115,59,1,10525,107,59,1,8617,112,59,1,8619,108,59,1,10553,105,109,59,1,10611,108,59,1,8610,4,3,59,97,101,11702,11704,11709,1,10923,105,108,59,1,10521,4,2,59,115,11715,11717,1,10925,59,3,10925,65024,4,3,97,98,114,11729,11734,11739,114,114,59,1,10508,114,107,59,1,10098,4,2,97,107,11745,11758,99,4,2,101,107,11752,11755,59,1,123,59,1,91,4,2,101,115,11764,11767,59,1,10635,108,4,2,100,117,11774,11777,59,1,10639,59,1,10637,4,4,97,101,117,121,11790,11796,11811,11815,114,111,110,59,1,318,4,2,100,105,11802,11807,105,108,59,1,316,108,59,1,8968,98,59,1,123,59,1,1083,4,4,99,113,114,115,11828,11832,11845,11864,97,59,1,10550,117,111,4,2,59,114,11840,11842,1,8220,59,1,8222,4,2,100,117,11851,11857,104,97,114,59,1,10599,115,104,97,114,59,1,10571,104,59,1,8626,4,5,59,102,103,113,115,11880,11882,12008,12011,12031,1,8804,116,4,5,97,104,108,114,116,11895,11913,11935,11947,11996,114,114,111,119,4,2,59,116,11905,11907,1,8592,97,105,108,59,1,8610,97,114,112,111,111,110,4,2,100,117,11925,11931,111,119,110,59,1,8637,112,59,1,8636,101,102,116,97,114,114,111,119,115,59,1,8647,105,103,104,116,4,3,97,104,115,11959,11974,11984,114,114,111,119,4,2,59,115,11969,11971,1,8596,59,1,8646,97,114,112,111,111,110,115,59,1,8651,113,117,105,103,97,114,114,111,119,59,1,8621,104,114,101,101,116,105,109,101,115,59,1,8907,59,1,8922,4,3,59,113,115,12019,12021,12024,1,8804,59,1,8806,108,97,110,116,59,1,10877,4,5,59,99,100,103,115,12043,12045,12049,12070,12083,1,10877,99,59,1,10920,111,116,4,2,59,111,12057,12059,1,10879,4,2,59,114,12065,12067,1,10881,59,1,10883,4,2,59,101,12076,12079,3,8922,65024,115,59,1,10899,4,5,97,100,101,103,115,12095,12103,12108,12126,12131,112,112,114,111,120,59,1,10885,111,116,59,1,8918,113,4,2,103,113,12115,12120,116,114,59,1,8922,103,116,114,59,1,10891,116,114,59,1,8822,105,109,59,1,8818,4,3,105,108,114,12144,12150,12156,115,104,116,59,1,10620,111,111,114,59,1,8970,59,3,55349,56617,4,2,59,69,12166,12168,1,8822,59,1,10897,4,2,97,98,12177,12198,114,4,2,100,117,12184,12187,59,1,8637,4,2,59,108,12193,12195,1,8636,59,1,10602,108,107,59,1,9604,99,121,59,1,1113,4,5,59,97,99,104,116,12220,12222,12227,12235,12241,1,8810,114,114,59,1,8647,111,114,110,101,114,59,1,8990,97,114,100,59,1,10603,114,105,59,1,9722,4,2,105,111,12252,12258,100,111,116,59,1,320,117,115,116,4,2,59,97,12267,12269,1,9136,99,104,101,59,1,9136,4,4,69,97,101,115,12285,12288,12303,12322,59,1,8808,112,4,2,59,112,12295,12297,1,10889,114,111,120,59,1,10889,4,2,59,113,12309,12311,1,10887,4,2,59,113,12317,12319,1,10887,59,1,8808,105,109,59,1,8934,4,8,97,98,110,111,112,116,119,122,12345,12359,12364,12421,12446,12467,12474,12490,4,2,110,114,12351,12355,103,59,1,10220,114,59,1,8701,114,107,59,1,10214,103,4,3,108,109,114,12373,12401,12409,101,102,116,4,2,97,114,12382,12389,114,114,111,119,59,1,10229,105,103,104,116,97,114,114,111,119,59,1,10231,97,112,115,116,111,59,1,10236,105,103,104,116,97,114,114,111,119,59,1,10230,112,97,114,114,111,119,4,2,108,114,12433,12439,101,102,116,59,1,8619,105,103,104,116,59,1,8620,4,3,97,102,108,12454,12458,12462,114,59,1,10629,59,3,55349,56669,117,115,59,1,10797,105,109,101,115,59,1,10804,4,2,97,98,12480,12485,115,116,59,1,8727,97,114,59,1,95,4,3,59,101,102,12498,12500,12506,1,9674,110,103,101,59,1,9674,59,1,10731,97,114,4,2,59,108,12517,12519,1,40,116,59,1,10643,4,5,97,99,104,109,116,12535,12540,12548,12561,12564,114,114,59,1,8646,111,114,110,101,114,59,1,8991,97,114,4,2,59,100,12556,12558,1,8651,59,1,10605,59,1,8206,114,105,59,1,8895,4,6,97,99,104,105,113,116,12583,12589,12594,12597,12614,12635,113,117,111,59,1,8249,114,59,3,55349,56513,59,1,8624,109,4,3,59,101,103,12606,12608,12611,1,8818,59,1,10893,59,1,10895,4,2,98,117,12620,12623,59,1,91,111,4,2,59,114,12630,12632,1,8216,59,1,8218,114,111,107,59,1,322,5,60,8,59,99,100,104,105,108,113,114,12660,12662,12675,12680,12686,12692,12698,12705,1,60,4,2,99,105,12668,12671,59,1,10918,114,59,1,10873,111,116,59,1,8918,114,101,101,59,1,8907,109,101,115,59,1,8905,97,114,114,59,1,10614,117,101,115,116,59,1,10875,4,2,80,105,12711,12716,97,114,59,1,10646,4,3,59,101,102,12724,12726,12729,1,9667,59,1,8884,59,1,9666,114,4,2,100,117,12739,12746,115,104,97,114,59,1,10570,104,97,114,59,1,10598,4,2,101,110,12758,12768,114,116,110,101,113,113,59,3,8808,65024,69,59,3,8808,65024,4,14,68,97,99,100,101,102,104,105,108,110,111,112,115,117,12803,12809,12893,12908,12914,12928,12933,12937,13011,13025,13032,13049,13052,13069,68,111,116,59,1,8762,4,4,99,108,112,114,12819,12827,12849,12887,114,5,175,1,59,12825,1,175,4,2,101,116,12833,12836,59,1,9794,4,2,59,101,12842,12844,1,10016,115,101,59,1,10016,4,2,59,115,12855,12857,1,8614,116,111,4,4,59,100,108,117,12869,12871,12877,12883,1,8614,111,119,110,59,1,8615,101,102,116,59,1,8612,112,59,1,8613,107,101,114,59,1,9646,4,2,111,121,12899,12905,109,109,97,59,1,10793,59,1,1084,97,115,104,59,1,8212,97,115,117,114,101,100,97,110,103,108,101,59,1,8737,114,59,3,55349,56618,111,59,1,8487,4,3,99,100,110,12945,12954,12985,114,111,5,181,1,59,12952,1,181,4,4,59,97,99,100,12964,12966,12971,12976,1,8739,115,116,59,1,42,105,114,59,1,10992,111,116,5,183,1,59,12983,1,183,117,115,4,3,59,98,100,12995,12997,13000,1,8722,59,1,8863,4,2,59,117,13006,13008,1,8760,59,1,10794,4,2,99,100,13017,13021,112,59,1,10971,114,59,1,8230,112,108,117,115,59,1,8723,4,2,100,112,13038,13044,101,108,115,59,1,8871,102,59,3,55349,56670,59,1,8723,4,2,99,116,13058,13063,114,59,3,55349,56514,112,111,115,59,1,8766,4,3,59,108,109,13077,13079,13087,1,956,116,105,109,97,112,59,1,8888,97,112,59,1,8888,4,24,71,76,82,86,97,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,13142,13165,13217,13229,13247,13330,13359,13414,13420,13508,13513,13579,13602,13626,13631,13762,13767,13855,13936,13995,14214,14285,14312,14432,4,2,103,116,13148,13152,59,3,8921,824,4,2,59,118,13158,13161,3,8811,8402,59,3,8811,824,4,3,101,108,116,13173,13200,13204,102,116,4,2,97,114,13181,13188,114,114,111,119,59,1,8653,105,103,104,116,97,114,114,111,119,59,1,8654,59,3,8920,824,4,2,59,118,13210,13213,3,8810,8402,59,3,8810,824,105,103,104,116,97,114,114,111,119,59,1,8655,4,2,68,100,13235,13241,97,115,104,59,1,8879,97,115,104,59,1,8878,4,5,98,99,110,112,116,13259,13264,13270,13275,13308,108,97,59,1,8711,117,116,101,59,1,324,103,59,3,8736,8402,4,5,59,69,105,111,112,13287,13289,13293,13298,13302,1,8777,59,3,10864,824,100,59,3,8779,824,115,59,1,329,114,111,120,59,1,8777,117,114,4,2,59,97,13316,13318,1,9838,108,4,2,59,115,13325,13327,1,9838,59,1,8469,4,2,115,117,13336,13344,112,5,160,1,59,13342,1,160,109,112,4,2,59,101,13352,13355,3,8782,824,59,3,8783,824,4,5,97,101,111,117,121,13371,13385,13391,13407,13411,4,2,112,114,13377,13380,59,1,10819,111,110,59,1,328,100,105,108,59,1,326,110,103,4,2,59,100,13399,13401,1,8775,111,116,59,3,10861,824,112,59,1,10818,59,1,1085,97,115,104,59,1,8211,4,7,59,65,97,100,113,115,120,13436,13438,13443,13466,13472,13478,13494,1,8800,114,114,59,1,8663,114,4,2,104,114,13450,13454,107,59,1,10532,4,2,59,111,13460,13462,1,8599,119,59,1,8599,111,116,59,3,8784,824,117,105,118,59,1,8802,4,2,101,105,13484,13489,97,114,59,1,10536,109,59,3,8770,824,105,115,116,4,2,59,115,13503,13505,1,8708,59,1,8708,114,59,3,55349,56619,4,4,69,101,115,116,13523,13527,13563,13568,59,3,8807,824,4,3,59,113,115,13535,13537,13559,1,8817,4,3,59,113,115,13545,13547,13551,1,8817,59,3,8807,824,108,97,110,116,59,3,10878,824,59,3,10878,824,105,109,59,1,8821,4,2,59,114,13574,13576,1,8815,59,1,8815,4,3,65,97,112,13587,13592,13597,114,114,59,1,8654,114,114,59,1,8622,97,114,59,1,10994,4,3,59,115,118,13610,13612,13623,1,8715,4,2,59,100,13618,13620,1,8956,59,1,8954,59,1,8715,99,121,59,1,1114,4,7,65,69,97,100,101,115,116,13647,13652,13656,13661,13665,13737,13742,114,114,59,1,8653,59,3,8806,824,114,114,59,1,8602,114,59,1,8229,4,4,59,102,113,115,13675,13677,13703,13725,1,8816,116,4,2,97,114,13684,13691,114,114,111,119,59,1,8602,105,103,104,116,97,114,114,111,119,59,1,8622,4,3,59,113,115,13711,13713,13717,1,8816,59,3,8806,824,108,97,110,116,59,3,10877,824,4,2,59,115,13731,13734,3,10877,824,59,1,8814,105,109,59,1,8820,4,2,59,114,13748,13750,1,8814,105,4,2,59,101,13757,13759,1,8938,59,1,8940,105,100,59,1,8740,4,2,112,116,13773,13778,102,59,3,55349,56671,5,172,3,59,105,110,13787,13789,13829,1,172,110,4,4,59,69,100,118,13800,13802,13806,13812,1,8713,59,3,8953,824,111,116,59,3,8949,824,4,3,97,98,99,13820,13823,13826,59,1,8713,59,1,8951,59,1,8950,105,4,2,59,118,13836,13838,1,8716,4,3,97,98,99,13846,13849,13852,59,1,8716,59,1,8958,59,1,8957,4,3,97,111,114,13863,13892,13899,114,4,4,59,97,115,116,13874,13876,13883,13888,1,8742,108,108,101,108,59,1,8742,108,59,3,11005,8421,59,3,8706,824,108,105,110,116,59,1,10772,4,3,59,99,101,13907,13909,13914,1,8832,117,101,59,1,8928,4,2,59,99,13920,13923,3,10927,824,4,2,59,101,13929,13931,1,8832,113,59,3,10927,824,4,4,65,97,105,116,13946,13951,13971,13982,114,114,59,1,8655,114,114,4,3,59,99,119,13961,13963,13967,1,8603,59,3,10547,824,59,3,8605,824,103,104,116,97,114,114,111,119,59,1,8603,114,105,4,2,59,101,13990,13992,1,8939,59,1,8941,4,7,99,104,105,109,112,113,117,14011,14036,14060,14080,14085,14090,14106,4,4,59,99,101,114,14021,14023,14028,14032,1,8833,117,101,59,1,8929,59,3,10928,824,59,3,55349,56515,111,114,116,4,2,109,112,14045,14050,105,100,59,1,8740,97,114,97,108,108,101,108,59,1,8742,109,4,2,59,101,14067,14069,1,8769,4,2,59,113,14075,14077,1,8772,59,1,8772,105,100,59,1,8740,97,114,59,1,8742,115,117,4,2,98,112,14098,14102,101,59,1,8930,101,59,1,8931,4,3,98,99,112,14114,14157,14171,4,4,59,69,101,115,14124,14126,14130,14133,1,8836,59,3,10949,824,59,1,8840,101,116,4,2,59,101,14141,14144,3,8834,8402,113,4,2,59,113,14151,14153,1,8840,59,3,10949,824,99,4,2,59,101,14164,14166,1,8833,113,59,3,10928,824,4,4,59,69,101,115,14181,14183,14187,14190,1,8837,59,3,10950,824,59,1,8841,101,116,4,2,59,101,14198,14201,3,8835,8402,113,4,2,59,113,14208,14210,1,8841,59,3,10950,824,4,4,103,105,108,114,14224,14228,14238,14242,108,59,1,8825,108,100,101,5,241,1,59,14236,1,241,103,59,1,8824,105,97,110,103,108,101,4,2,108,114,14254,14269,101,102,116,4,2,59,101,14263,14265,1,8938,113,59,1,8940,105,103,104,116,4,2,59,101,14279,14281,1,8939,113,59,1,8941,4,2,59,109,14291,14293,1,957,4,3,59,101,115,14301,14303,14308,1,35,114,111,59,1,8470,112,59,1,8199,4,9,68,72,97,100,103,105,108,114,115,14332,14338,14344,14349,14355,14369,14376,14408,14426,97,115,104,59,1,8877,97,114,114,59,1,10500,112,59,3,8781,8402,97,115,104,59,1,8876,4,2,101,116,14361,14365,59,3,8805,8402,59,3,62,8402,110,102,105,110,59,1,10718,4,3,65,101,116,14384,14389,14393,114,114,59,1,10498,59,3,8804,8402,4,2,59,114,14399,14402,3,60,8402,105,101,59,3,8884,8402,4,2,65,116,14414,14419,114,114,59,1,10499,114,105,101,59,3,8885,8402,105,109,59,3,8764,8402,4,3,65,97,110,14440,14445,14468,114,114,59,1,8662,114,4,2,104,114,14452,14456,107,59,1,10531,4,2,59,111,14462,14464,1,8598,119,59,1,8598,101,97,114,59,1,10535,4,18,83,97,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,14512,14515,14535,14560,14597,14603,14618,14643,14657,14662,14701,14741,14747,14769,14851,14877,14907,14916,59,1,9416,4,2,99,115,14521,14531,117,116,101,5,243,1,59,14529,1,243,116,59,1,8859,4,2,105,121,14541,14557,114,4,2,59,99,14548,14550,1,8858,5,244,1,59,14555,1,244,59,1,1086,4,5,97,98,105,111,115,14572,14577,14583,14587,14591,115,104,59,1,8861,108,97,99,59,1,337,118,59,1,10808,116,59,1,8857,111,108,100,59,1,10684,108,105,103,59,1,339,4,2,99,114,14609,14614,105,114,59,1,10687,59,3,55349,56620,4,3,111,114,116,14626,14630,14640,110,59,1,731,97,118,101,5,242,1,59,14638,1,242,59,1,10689,4,2,98,109,14649,14654,97,114,59,1,10677,59,1,937,110,116,59,1,8750,4,4,97,99,105,116,14672,14677,14693,14698,114,114,59,1,8634,4,2,105,114,14683,14687,114,59,1,10686,111,115,115,59,1,10683,110,101,59,1,8254,59,1,10688,4,3,97,101,105,14709,14714,14719,99,114,59,1,333,103,97,59,1,969,4,3,99,100,110,14727,14733,14736,114,111,110,59,1,959,59,1,10678,117,115,59,1,8854,112,102,59,3,55349,56672,4,3,97,101,108,14755,14759,14764,114,59,1,10679,114,112,59,1,10681,117,115,59,1,8853,4,7,59,97,100,105,111,115,118,14785,14787,14792,14831,14837,14841,14848,1,8744,114,114,59,1,8635,4,4,59,101,102,109,14802,14804,14817,14824,1,10845,114,4,2,59,111,14811,14813,1,8500,102,59,1,8500,5,170,1,59,14822,1,170,5,186,1,59,14829,1,186,103,111,102,59,1,8886,114,59,1,10838,108,111,112,101,59,1,10839,59,1,10843,4,3,99,108,111,14859,14863,14873,114,59,1,8500,97,115,104,5,248,1,59,14871,1,248,108,59,1,8856,105,4,2,108,109,14884,14893,100,101,5,245,1,59,14891,1,245,101,115,4,2,59,97,14901,14903,1,8855,115,59,1,10806,109,108,5,246,1,59,14914,1,246,98,97,114,59,1,9021,4,12,97,99,101,102,104,105,108,109,111,114,115,117,14948,14992,14996,15033,15038,15068,15090,15189,15192,15222,15427,15441,114,4,4,59,97,115,116,14959,14961,14976,14989,1,8741,5,182,2,59,108,14968,14970,1,182,108,101,108,59,1,8741,4,2,105,108,14982,14986,109,59,1,10995,59,1,11005,59,1,8706,121,59,1,1087,114,4,5,99,105,109,112,116,15009,15014,15019,15024,15027,110,116,59,1,37,111,100,59,1,46,105,108,59,1,8240,59,1,8869,101,110,107,59,1,8241,114,59,3,55349,56621,4,3,105,109,111,15046,15057,15063,4,2,59,118,15052,15054,1,966,59,1,981,109,97,116,59,1,8499,110,101,59,1,9742,4,3,59,116,118,15076,15078,15087,1,960,99,104,102,111,114,107,59,1,8916,59,1,982,4,2,97,117,15096,15119,110,4,2,99,107,15103,15115,107,4,2,59,104,15110,15112,1,8463,59,1,8462,118,59,1,8463,115,4,9,59,97,98,99,100,101,109,115,116,15140,15142,15148,15151,15156,15168,15171,15179,15184,1,43,99,105,114,59,1,10787,59,1,8862,105,114,59,1,10786,4,2,111,117,15162,15165,59,1,8724,59,1,10789,59,1,10866,110,5,177,1,59,15177,1,177,105,109,59,1,10790,119,111,59,1,10791,59,1,177,4,3,105,112,117,15200,15208,15213,110,116,105,110,116,59,1,10773,102,59,3,55349,56673,110,100,5,163,1,59,15220,1,163,4,10,59,69,97,99,101,105,110,111,115,117,15244,15246,15249,15253,15258,15334,15347,15367,15416,15421,1,8826,59,1,10931,112,59,1,10935,117,101,59,1,8828,4,2,59,99,15264,15266,1,10927,4,6,59,97,99,101,110,115,15280,15282,15290,15299,15303,15329,1,8826,112,112,114,111,120,59,1,10935,117,114,108,121,101,113,59,1,8828,113,59,1,10927,4,3,97,101,115,15311,15319,15324,112,112,114,111,120,59,1,10937,113,113,59,1,10933,105,109,59,1,8936,105,109,59,1,8830,109,101,4,2,59,115,15342,15344,1,8242,59,1,8473,4,3,69,97,115,15355,15358,15362,59,1,10933,112,59,1,10937,105,109,59,1,8936,4,3,100,102,112,15375,15378,15404,59,1,8719,4,3,97,108,115,15386,15392,15398,108,97,114,59,1,9006,105,110,101,59,1,8978,117,114,102,59,1,8979,4,2,59,116,15410,15412,1,8733,111,59,1,8733,105,109,59,1,8830,114,101,108,59,1,8880,4,2,99,105,15433,15438,114,59,3,55349,56517,59,1,968,110,99,115,112,59,1,8200,4,6,102,105,111,112,115,117,15462,15467,15472,15478,15485,15491,114,59,3,55349,56622,110,116,59,1,10764,112,102,59,3,55349,56674,114,105,109,101,59,1,8279,99,114,59,3,55349,56518,4,3,97,101,111,15499,15520,15534,116,4,2,101,105,15506,15515,114,110,105,111,110,115,59,1,8461,110,116,59,1,10774,115,116,4,2,59,101,15528,15530,1,63,113,59,1,8799,116,5,34,1,59,15540,1,34,4,21,65,66,72,97,98,99,100,101,102,104,105,108,109,110,111,112,114,115,116,117,120,15586,15609,15615,15620,15796,15855,15893,15931,15977,16001,16039,16183,16204,16222,16228,16285,16312,16318,16363,16408,16416,4,3,97,114,116,15594,15599,15603,114,114,59,1,8667,114,59,1,8658,97,105,108,59,1,10524,97,114,114,59,1,10511,97,114,59,1,10596,4,7,99,100,101,110,113,114,116,15636,15651,15656,15664,15687,15696,15770,4,2,101,117,15642,15646,59,3,8765,817,116,101,59,1,341,105,99,59,1,8730,109,112,116,121,118,59,1,10675,103,4,4,59,100,101,108,15675,15677,15680,15683,1,10217,59,1,10642,59,1,10661,101,59,1,10217,117,111,5,187,1,59,15694,1,187,114,4,11,59,97,98,99,102,104,108,112,115,116,119,15721,15723,15727,15739,15742,15746,15750,15754,15758,15763,15767,1,8594,112,59,1,10613,4,2,59,102,15733,15735,1,8677,115,59,1,10528,59,1,10547,115,59,1,10526,107,59,1,8618,112,59,1,8620,108,59,1,10565,105,109,59,1,10612,108,59,1,8611,59,1,8605,4,2,97,105,15776,15781,105,108,59,1,10522,111,4,2,59,110,15788,15790,1,8758,97,108,115,59,1,8474,4,3,97,98,114,15804,15809,15814,114,114,59,1,10509,114,107,59,1,10099,4,2,97,107,15820,15833,99,4,2,101,107,15827,15830,59,1,125,59,1,93,4,2,101,115,15839,15842,59,1,10636,108,4,2,100,117,15849,15852,59,1,10638,59,1,10640,4,4,97,101,117,121,15865,15871,15886,15890,114,111,110,59,1,345,4,2,100,105,15877,15882,105,108,59,1,343,108,59,1,8969,98,59,1,125,59,1,1088,4,4,99,108,113,115,15903,15907,15914,15927,97,59,1,10551,100,104,97,114,59,1,10601,117,111,4,2,59,114,15922,15924,1,8221,59,1,8221,104,59,1,8627,4,3,97,99,103,15939,15966,15970,108,4,4,59,105,112,115,15950,15952,15957,15963,1,8476,110,101,59,1,8475,97,114,116,59,1,8476,59,1,8477,116,59,1,9645,5,174,1,59,15975,1,174,4,3,105,108,114,15985,15991,15997,115,104,116,59,1,10621,111,111,114,59,1,8971,59,3,55349,56623,4,2,97,111,16007,16028,114,4,2,100,117,16014,16017,59,1,8641,4,2,59,108,16023,16025,1,8640,59,1,10604,4,2,59,118,16034,16036,1,961,59,1,1009,4,3,103,110,115,16047,16167,16171,104,116,4,6,97,104,108,114,115,116,16063,16081,16103,16130,16143,16155,114,114,111,119,4,2,59,116,16073,16075,1,8594,97,105,108,59,1,8611,97,114,112,111,111,110,4,2,100,117,16093,16099,111,119,110,59,1,8641,112,59,1,8640,101,102,116,4,2,97,104,16112,16120,114,114,111,119,115,59,1,8644,97,114,112,111,111,110,115,59,1,8652,105,103,104,116,97,114,114,111,119,115,59,1,8649,113,117,105,103,97,114,114,111,119,59,1,8605,104,114,101,101,116,105,109,101,115,59,1,8908,103,59,1,730,105,110,103,100,111,116,115,101,113,59,1,8787,4,3,97,104,109,16191,16196,16201,114,114,59,1,8644,97,114,59,1,8652,59,1,8207,111,117,115,116,4,2,59,97,16214,16216,1,9137,99,104,101,59,1,9137,109,105,100,59,1,10990,4,4,97,98,112,116,16238,16252,16257,16278,4,2,110,114,16244,16248,103,59,1,10221,114,59,1,8702,114,107,59,1,10215,4,3,97,102,108,16265,16269,16273,114,59,1,10630,59,3,55349,56675,117,115,59,1,10798,105,109,101,115,59,1,10805,4,2,97,112,16291,16304,114,4,2,59,103,16298,16300,1,41,116,59,1,10644,111,108,105,110,116,59,1,10770,97,114,114,59,1,8649,4,4,97,99,104,113,16328,16334,16339,16342,113,117,111,59,1,8250,114,59,3,55349,56519,59,1,8625,4,2,98,117,16348,16351,59,1,93,111,4,2,59,114,16358,16360,1,8217,59,1,8217,4,3,104,105,114,16371,16377,16383,114,101,101,59,1,8908,109,101,115,59,1,8906,105,4,4,59,101,102,108,16394,16396,16399,16402,1,9657,59,1,8885,59,1,9656,116,114,105,59,1,10702,108,117,104,97,114,59,1,10600,59,1,8478,4,19,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,119,122,16459,16466,16472,16572,16590,16672,16687,16746,16844,16850,16924,16963,16988,17115,17121,17154,17206,17614,17656,99,117,116,101,59,1,347,113,117,111,59,1,8218,4,10,59,69,97,99,101,105,110,112,115,121,16494,16496,16499,16513,16518,16531,16536,16556,16564,16569,1,8827,59,1,10932,4,2,112,114,16505,16508,59,1,10936,111,110,59,1,353,117,101,59,1,8829,4,2,59,100,16524,16526,1,10928,105,108,59,1,351,114,99,59,1,349,4,3,69,97,115,16544,16547,16551,59,1,10934,112,59,1,10938,105,109,59,1,8937,111,108,105,110,116,59,1,10771,105,109,59,1,8831,59,1,1089,111,116,4,3,59,98,101,16582,16584,16587,1,8901,59,1,8865,59,1,10854,4,7,65,97,99,109,115,116,120,16606,16611,16634,16642,16646,16652,16668,114,114,59,1,8664,114,4,2,104,114,16618,16622,107,59,1,10533,4,2,59,111,16628,16630,1,8600,119,59,1,8600,116,5,167,1,59,16640,1,167,105,59,1,59,119,97,114,59,1,10537,109,4,2,105,110,16659,16665,110,117,115,59,1,8726,59,1,8726,116,59,1,10038,114,4,2,59,111,16679,16682,3,55349,56624,119,110,59,1,8994,4,4,97,99,111,121,16697,16702,16716,16739,114,112,59,1,9839,4,2,104,121,16708,16713,99,121,59,1,1097,59,1,1096,114,116,4,2,109,112,16724,16729,105,100,59,1,8739,97,114,97,108,108,101,108,59,1,8741,5,173,1,59,16744,1,173,4,2,103,109,16752,16770,109,97,4,3,59,102,118,16762,16764,16767,1,963,59,1,962,59,1,962,4,8,59,100,101,103,108,110,112,114,16788,16790,16795,16806,16817,16828,16832,16838,1,8764,111,116,59,1,10858,4,2,59,113,16801,16803,1,8771,59,1,8771,4,2,59,69,16812,16814,1,10910,59,1,10912,4,2,59,69,16823,16825,1,10909,59,1,10911,101,59,1,8774,108,117,115,59,1,10788,97,114,114,59,1,10610,97,114,114,59,1,8592,4,4,97,101,105,116,16860,16883,16891,16904,4,2,108,115,16866,16878,108,115,101,116,109,105,110,117,115,59,1,8726,104,112,59,1,10803,112,97,114,115,108,59,1,10724,4,2,100,108,16897,16900,59,1,8739,101,59,1,8995,4,2,59,101,16910,16912,1,10922,4,2,59,115,16918,16920,1,10924,59,3,10924,65024,4,3,102,108,112,16932,16938,16958,116,99,121,59,1,1100,4,2,59,98,16944,16946,1,47,4,2,59,97,16952,16954,1,10692,114,59,1,9023,102,59,3,55349,56676,97,4,2,100,114,16970,16985,101,115,4,2,59,117,16978,16980,1,9824,105,116,59,1,9824,59,1,8741,4,3,99,115,117,16996,17028,17089,4,2,97,117,17002,17015,112,4,2,59,115,17009,17011,1,8851,59,3,8851,65024,112,4,2,59,115,17022,17024,1,8852,59,3,8852,65024,117,4,2,98,112,17035,17062,4,3,59,101,115,17043,17045,17048,1,8847,59,1,8849,101,116,4,2,59,101,17056,17058,1,8847,113,59,1,8849,4,3,59,101,115,17070,17072,17075,1,8848,59,1,8850,101,116,4,2,59,101,17083,17085,1,8848,113,59,1,8850,4,3,59,97,102,17097,17099,17112,1,9633,114,4,2,101,102,17106,17109,59,1,9633,59,1,9642,59,1,9642,97,114,114,59,1,8594,4,4,99,101,109,116,17131,17136,17142,17148,114,59,3,55349,56520,116,109,110,59,1,8726,105,108,101,59,1,8995,97,114,102,59,1,8902,4,2,97,114,17160,17172,114,4,2,59,102,17167,17169,1,9734,59,1,9733,4,2,97,110,17178,17202,105,103,104,116,4,2,101,112,17188,17197,112,115,105,108,111,110,59,1,1013,104,105,59,1,981,115,59,1,175,4,5,98,99,109,110,112,17218,17351,17420,17423,17427,4,9,59,69,100,101,109,110,112,114,115,17238,17240,17243,17248,17261,17267,17279,17285,17291,1,8834,59,1,10949,111,116,59,1,10941,4,2,59,100,17254,17256,1,8838,111,116,59,1,10947,117,108,116,59,1,10945,4,2,69,101,17273,17276,59,1,10955,59,1,8842,108,117,115,59,1,10943,97,114,114,59,1,10617,4,3,101,105,117,17299,17335,17339,116,4,3,59,101,110,17308,17310,17322,1,8834,113,4,2,59,113,17317,17319,1,8838,59,1,10949,101,113,4,2,59,113,17330,17332,1,8842,59,1,10955,109,59,1,10951,4,2,98,112,17345,17348,59,1,10965,59,1,10963,99,4,6,59,97,99,101,110,115,17366,17368,17376,17385,17389,17415,1,8827,112,112,114,111,120,59,1,10936,117,114,108,121,101,113,59,1,8829,113,59,1,10928,4,3,97,101,115,17397,17405,17410,112,112,114,111,120,59,1,10938,113,113,59,1,10934,105,109,59,1,8937,105,109,59,1,8831,59,1,8721,103,59,1,9834,4,13,49,50,51,59,69,100,101,104,108,109,110,112,115,17455,17462,17469,17476,17478,17481,17496,17509,17524,17530,17536,17548,17554,5,185,1,59,17460,1,185,5,178,1,59,17467,1,178,5,179,1,59,17474,1,179,1,8835,59,1,10950,4,2,111,115,17487,17491,116,59,1,10942,117,98,59,1,10968,4,2,59,100,17502,17504,1,8839,111,116,59,1,10948,115,4,2,111,117,17516,17520,108,59,1,10185,98,59,1,10967,97,114,114,59,1,10619,117,108,116,59,1,10946,4,2,69,101,17542,17545,59,1,10956,59,1,8843,108,117,115,59,1,10944,4,3,101,105,117,17562,17598,17602,116,4,3,59,101,110,17571,17573,17585,1,8835,113,4,2,59,113,17580,17582,1,8839,59,1,10950,101,113,4,2,59,113,17593,17595,1,8843,59,1,10956,109,59,1,10952,4,2,98,112,17608,17611,59,1,10964,59,1,10966,4,3,65,97,110,17622,17627,17650,114,114,59,1,8665,114,4,2,104,114,17634,17638,107,59,1,10534,4,2,59,111,17644,17646,1,8601,119,59,1,8601,119,97,114,59,1,10538,108,105,103,5,223,1,59,17664,1,223,4,13,97,98,99,100,101,102,104,105,111,112,114,115,119,17694,17709,17714,17737,17742,17749,17754,17860,17905,17957,17964,18090,18122,4,2,114,117,17700,17706,103,101,116,59,1,8982,59,1,964,114,107,59,1,9140,4,3,97,101,121,17722,17728,17734,114,111,110,59,1,357,100,105,108,59,1,355,59,1,1090,111,116,59,1,8411,108,114,101,99,59,1,8981,114,59,3,55349,56625,4,4,101,105,107,111,17764,17805,17836,17851,4,2,114,116,17770,17786,101,4,2,52,102,17777,17780,59,1,8756,111,114,101,59,1,8756,97,4,3,59,115,118,17795,17797,17802,1,952,121,109,59,1,977,59,1,977,4,2,99,110,17811,17831,107,4,2,97,115,17818,17826,112,112,114,111,120,59,1,8776,105,109,59,1,8764,115,112,59,1,8201,4,2,97,115,17842,17846,112,59,1,8776,105,109,59,1,8764,114,110,5,254,1,59,17858,1,254,4,3,108,109,110,17868,17873,17901,100,101,59,1,732,101,115,5,215,3,59,98,100,17884,17886,17898,1,215,4,2,59,97,17892,17894,1,8864,114,59,1,10801,59,1,10800,116,59,1,8749,4,3,101,112,115,17913,17917,17953,97,59,1,10536,4,4,59,98,99,102,17927,17929,17934,17939,1,8868,111,116,59,1,9014,105,114,59,1,10993,4,2,59,111,17945,17948,3,55349,56677,114,107,59,1,10970,97,59,1,10537,114,105,109,101,59,1,8244,4,3,97,105,112,17972,17977,18082,100,101,59,1,8482,4,7,97,100,101,109,112,115,116,17993,18051,18056,18059,18066,18072,18076,110,103,108,101,4,5,59,100,108,113,114,18009,18011,18017,18032,18035,1,9653,111,119,110,59,1,9663,101,102,116,4,2,59,101,18026,18028,1,9667,113,59,1,8884,59,1,8796,105,103,104,116,4,2,59,101,18045,18047,1,9657,113,59,1,8885,111,116,59,1,9708,59,1,8796,105,110,117,115,59,1,10810,108,117,115,59,1,10809,98,59,1,10701,105,109,101,59,1,10811,101,122,105,117,109,59,1,9186,4,3,99,104,116,18098,18111,18116,4,2,114,121,18104,18108,59,3,55349,56521,59,1,1094,99,121,59,1,1115,114,111,107,59,1,359,4,2,105,111,18128,18133,120,116,59,1,8812,104,101,97,100,4,2,108,114,18143,18154,101,102,116,97,114,114,111,119,59,1,8606,105,103,104,116,97,114,114,111,119,59,1,8608,4,18,65,72,97,98,99,100,102,103,104,108,109,111,112,114,115,116,117,119,18204,18209,18214,18234,18250,18268,18292,18308,18319,18343,18379,18397,18413,18504,18547,18553,18584,18603,114,114,59,1,8657,97,114,59,1,10595,4,2,99,114,18220,18230,117,116,101,5,250,1,59,18228,1,250,114,59,1,8593,114,4,2,99,101,18241,18245,121,59,1,1118,118,101,59,1,365,4,2,105,121,18256,18265,114,99,5,251,1,59,18263,1,251,59,1,1091,4,3,97,98,104,18276,18281,18287,114,114,59,1,8645,108,97,99,59,1,369,97,114,59,1,10606,4,2,105,114,18298,18304,115,104,116,59,1,10622,59,3,55349,56626,114,97,118,101,5,249,1,59,18317,1,249,4,2,97,98,18325,18338,114,4,2,108,114,18332,18335,59,1,8639,59,1,8638,108,107,59,1,9600,4,2,99,116,18349,18374,4,2,111,114,18355,18369,114,110,4,2,59,101,18363,18365,1,8988,114,59,1,8988,111,112,59,1,8975,114,105,59,1,9720,4,2,97,108,18385,18390,99,114,59,1,363,5,168,1,59,18395,1,168,4,2,103,112,18403,18408,111,110,59,1,371,102,59,3,55349,56678,4,6,97,100,104,108,115,117,18427,18434,18445,18470,18475,18494,114,114,111,119,59,1,8593,111,119,110,97,114,114,111,119,59,1,8597,97,114,112,111,111,110,4,2,108,114,18457,18463,101,102,116,59,1,8639,105,103,104,116,59,1,8638,117,115,59,1,8846,105,4,3,59,104,108,18484,18486,18489,1,965,59,1,978,111,110,59,1,965,112,97,114,114,111,119,115,59,1,8648,4,3,99,105,116,18512,18537,18542,4,2,111,114,18518,18532,114,110,4,2,59,101,18526,18528,1,8989,114,59,1,8989,111,112,59,1,8974,110,103,59,1,367,114,105,59,1,9721,99,114,59,3,55349,56522,4,3,100,105,114,18561,18566,18572,111,116,59,1,8944,108,100,101,59,1,361,105,4,2,59,102,18579,18581,1,9653,59,1,9652,4,2,97,109,18590,18595,114,114,59,1,8648,108,5,252,1,59,18601,1,252,97,110,103,108,101,59,1,10663,4,15,65,66,68,97,99,100,101,102,108,110,111,112,114,115,122,18643,18648,18661,18667,18847,18851,18857,18904,18909,18915,18931,18937,18943,18949,18996,114,114,59,1,8661,97,114,4,2,59,118,18656,18658,1,10984,59,1,10985,97,115,104,59,1,8872,4,2,110,114,18673,18679,103,114,116,59,1,10652,4,7,101,107,110,112,114,115,116,18695,18704,18711,18720,18742,18754,18810,112,115,105,108,111,110,59,1,1013,97,112,112,97,59,1,1008,111,116,104,105,110,103,59,1,8709,4,3,104,105,114,18728,18732,18735,105,59,1,981,59,1,982,111,112,116,111,59,1,8733,4,2,59,104,18748,18750,1,8597,111,59,1,1009,4,2,105,117,18760,18766,103,109,97,59,1,962,4,2,98,112,18772,18791,115,101,116,110,101,113,4,2,59,113,18784,18787,3,8842,65024,59,3,10955,65024,115,101,116,110,101,113,4,2,59,113,18803,18806,3,8843,65024,59,3,10956,65024,4,2,104,114,18816,18822,101,116,97,59,1,977,105,97,110,103,108,101,4,2,108,114,18834,18840,101,102,116,59,1,8882,105,103,104,116,59,1,8883,121,59,1,1074,97,115,104,59,1,8866,4,3,101,108,114,18865,18884,18890,4,3,59,98,101,18873,18875,18880,1,8744,97,114,59,1,8891,113,59,1,8794,108,105,112,59,1,8942,4,2,98,116,18896,18901,97,114,59,1,124,59,1,124,114,59,3,55349,56627,116,114,105,59,1,8882,115,117,4,2,98,112,18923,18927,59,3,8834,8402,59,3,8835,8402,112,102,59,3,55349,56679,114,111,112,59,1,8733,116,114,105,59,1,8883,4,2,99,117,18955,18960,114,59,3,55349,56523,4,2,98,112,18966,18981,110,4,2,69,101,18973,18977,59,3,10955,65024,59,3,8842,65024,110,4,2,69,101,18988,18992,59,3,10956,65024,59,3,8843,65024,105,103,122,97,103,59,1,10650,4,7,99,101,102,111,112,114,115,19020,19026,19061,19066,19072,19075,19089,105,114,99,59,1,373,4,2,100,105,19032,19055,4,2,98,103,19038,19043,97,114,59,1,10847,101,4,2,59,113,19050,19052,1,8743,59,1,8793,101,114,112,59,1,8472,114,59,3,55349,56628,112,102,59,3,55349,56680,59,1,8472,4,2,59,101,19081,19083,1,8768,97,116,104,59,1,8768,99,114,59,3,55349,56524,4,14,99,100,102,104,105,108,109,110,111,114,115,117,118,119,19125,19146,19152,19157,19173,19176,19192,19197,19202,19236,19252,19269,19286,19291,4,3,97,105,117,19133,19137,19142,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,116,114,105,59,1,9661,114,59,3,55349,56629,4,2,65,97,19163,19168,114,114,59,1,10234,114,114,59,1,10231,59,1,958,4,2,65,97,19182,19187,114,114,59,1,10232,114,114,59,1,10229,97,112,59,1,10236,105,115,59,1,8955,4,3,100,112,116,19210,19215,19230,111,116,59,1,10752,4,2,102,108,19221,19225,59,3,55349,56681,117,115,59,1,10753,105,109,101,59,1,10754,4,2,65,97,19242,19247,114,114,59,1,10233,114,114,59,1,10230,4,2,99,113,19258,19263,114,59,3,55349,56525,99,117,112,59,1,10758,4,2,112,116,19275,19281,108,117,115,59,1,10756,114,105,59,1,9651,101,101,59,1,8897,101,100,103,101,59,1,8896,4,8,97,99,101,102,105,111,115,117,19316,19335,19349,19357,19362,19367,19373,19379,99,4,2,117,121,19323,19332,116,101,5,253,1,59,19330,1,253,59,1,1103,4,2,105,121,19341,19346,114,99,59,1,375,59,1,1099,110,5,165,1,59,19355,1,165,114,59,3,55349,56630,99,121,59,1,1111,112,102,59,3,55349,56682,99,114,59,3,55349,56526,4,2,99,109,19385,19389,121,59,1,1102,108,5,255,1,59,19395,1,255,4,10,97,99,100,101,102,104,105,111,115,119,19419,19426,19441,19446,19462,19467,19472,19480,19486,19492,99,117,116,101,59,1,378,4,2,97,121,19432,19438,114,111,110,59,1,382,59,1,1079,111,116,59,1,380,4,2,101,116,19452,19458,116,114,102,59,1,8488,97,59,1,950,114,59,3,55349,56631,99,121,59,1,1078,103,114,97,114,114,59,1,8669,112,102,59,3,55349,56683,99,114,59,3,55349,56527,4,2,106,110,19498,19501,59,1,8205,106,59,1,8204]);","'use strict';\n\nconst HTML = require('../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\n\n//Element utils\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction isImpliedEndTagRequired(tn) {\n switch (tn.length) {\n case 1:\n return tn === $.P;\n\n case 2:\n return tn === $.RB || tn === $.RP || tn === $.RT || tn === $.DD || tn === $.DT || tn === $.LI;\n\n case 3:\n return tn === $.RTC;\n\n case 6:\n return tn === $.OPTION;\n\n case 8:\n return tn === $.OPTGROUP;\n }\n\n return false;\n}\n\nfunction isImpliedEndTagRequiredThoroughly(tn) {\n switch (tn.length) {\n case 1:\n return tn === $.P;\n\n case 2:\n return (\n tn === $.RB ||\n tn === $.RP ||\n tn === $.RT ||\n tn === $.DD ||\n tn === $.DT ||\n tn === $.LI ||\n tn === $.TD ||\n tn === $.TH ||\n tn === $.TR\n );\n\n case 3:\n return tn === $.RTC;\n\n case 5:\n return tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD;\n\n case 6:\n return tn === $.OPTION;\n\n case 7:\n return tn === $.CAPTION;\n\n case 8:\n return tn === $.OPTGROUP || tn === $.COLGROUP;\n }\n\n return false;\n}\n\nfunction isScopingElement(tn, ns) {\n switch (tn.length) {\n case 2:\n if (tn === $.TD || tn === $.TH) {\n return ns === NS.HTML;\n } else if (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS) {\n return ns === NS.MATHML;\n }\n\n break;\n\n case 4:\n if (tn === $.HTML) {\n return ns === NS.HTML;\n } else if (tn === $.DESC) {\n return ns === NS.SVG;\n }\n\n break;\n\n case 5:\n if (tn === $.TABLE) {\n return ns === NS.HTML;\n } else if (tn === $.MTEXT) {\n return ns === NS.MATHML;\n } else if (tn === $.TITLE) {\n return ns === NS.SVG;\n }\n\n break;\n\n case 6:\n return (tn === $.APPLET || tn === $.OBJECT) && ns === NS.HTML;\n\n case 7:\n return (tn === $.CAPTION || tn === $.MARQUEE) && ns === NS.HTML;\n\n case 8:\n return tn === $.TEMPLATE && ns === NS.HTML;\n\n case 13:\n return tn === $.FOREIGN_OBJECT && ns === NS.SVG;\n\n case 14:\n return tn === $.ANNOTATION_XML && ns === NS.MATHML;\n }\n\n return false;\n}\n\n//Stack of open elements\nclass OpenElementStack {\n constructor(document, treeAdapter) {\n this.stackTop = -1;\n this.items = [];\n this.current = document;\n this.currentTagName = null;\n this.currentTmplContent = null;\n this.tmplCount = 0;\n this.treeAdapter = treeAdapter;\n }\n\n //Index of element\n _indexOf(element) {\n let idx = -1;\n\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.items[i] === element) {\n idx = i;\n break;\n }\n }\n return idx;\n }\n\n //Update current element\n _isInTemplate() {\n return this.currentTagName === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagName = this.current && this.treeAdapter.getTagName(this.current);\n\n this.currentTmplContent = this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : null;\n }\n\n //Mutations\n push(element) {\n this.items[++this.stackTop] = element;\n this._updateCurrentElement();\n\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n }\n\n pop() {\n this.stackTop--;\n\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n\n this._updateCurrentElement();\n }\n\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n\n this.items[idx] = newElement;\n\n if (idx === this.stackTop) {\n this._updateCurrentElement();\n }\n }\n\n insertAfter(referenceElement, newElement) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n\n this.items.splice(insertionIdx, 0, newElement);\n\n if (insertionIdx === ++this.stackTop) {\n this._updateCurrentElement();\n }\n }\n\n popUntilTagNamePopped(tagName) {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n this.pop();\n\n if (tn === tagName && ns === NS.HTML) {\n break;\n }\n }\n }\n\n popUntilElementPopped(element) {\n while (this.stackTop > -1) {\n const poppedElement = this.current;\n\n this.pop();\n\n if (poppedElement === element) {\n break;\n }\n }\n }\n\n popUntilNumberedHeaderPopped() {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n this.pop();\n\n if (\n tn === $.H1 ||\n tn === $.H2 ||\n tn === $.H3 ||\n tn === $.H4 ||\n tn === $.H5 ||\n (tn === $.H6 && ns === NS.HTML)\n ) {\n break;\n }\n }\n }\n\n popUntilTableCellPopped() {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n this.pop();\n\n if (tn === $.TD || (tn === $.TH && ns === NS.HTML)) {\n break;\n }\n }\n }\n\n popAllUpToHtmlElement() {\n //NOTE: here we assume that root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.stackTop = 0;\n this._updateCurrentElement();\n }\n\n clearBackToTableContext() {\n while (\n (this.currentTagName !== $.TABLE && this.currentTagName !== $.TEMPLATE && this.currentTagName !== $.HTML) ||\n this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n ) {\n this.pop();\n }\n }\n\n clearBackToTableBodyContext() {\n while (\n (this.currentTagName !== $.TBODY &&\n this.currentTagName !== $.TFOOT &&\n this.currentTagName !== $.THEAD &&\n this.currentTagName !== $.TEMPLATE &&\n this.currentTagName !== $.HTML) ||\n this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n ) {\n this.pop();\n }\n }\n\n clearBackToTableRowContext() {\n while (\n (this.currentTagName !== $.TR && this.currentTagName !== $.TEMPLATE && this.currentTagName !== $.HTML) ||\n this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n ) {\n this.pop();\n }\n }\n\n remove(element) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.items[i] === element) {\n this.items.splice(i, 1);\n this.stackTop--;\n this._updateCurrentElement();\n break;\n }\n }\n }\n\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n const element = this.items[1];\n\n return element && this.treeAdapter.getTagName(element) === $.BODY ? element : null;\n }\n\n contains(element) {\n return this._indexOf(element) > -1;\n }\n\n getCommonAncestor(element) {\n let elementIdx = this._indexOf(element);\n\n return --elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.currentTagName === $.HTML;\n }\n\n //Element in scope\n hasInScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n\n if (isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (\n (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) &&\n ns === NS.HTML\n ) {\n return true;\n }\n\n if (isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInListItemScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n\n if (((tn === $.UL || tn === $.OL) && ns === NS.HTML) || isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInButtonScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n\n if ((tn === $.BUTTON && ns === NS.HTML) || isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (ns !== NS.HTML) {\n continue;\n }\n\n if (tn === tagName) {\n return true;\n }\n\n if (tn === $.TABLE || tn === $.TEMPLATE || tn === $.HTML) {\n return false;\n }\n }\n\n return true;\n }\n\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (ns !== NS.HTML) {\n continue;\n }\n\n if (tn === $.TBODY || tn === $.THEAD || tn === $.TFOOT) {\n return true;\n }\n\n if (tn === $.TABLE || tn === $.HTML) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (ns !== NS.HTML) {\n continue;\n }\n\n if (tn === tagName) {\n return true;\n }\n\n if (tn !== $.OPTION && tn !== $.OPTGROUP) {\n return false;\n }\n }\n\n return true;\n }\n\n //Implied end tags\n generateImpliedEndTags() {\n while (isImpliedEndTagRequired(this.currentTagName)) {\n this.pop();\n }\n }\n\n generateImpliedEndTagsThoroughly() {\n while (isImpliedEndTagRequiredThoroughly(this.currentTagName)) {\n this.pop();\n }\n }\n\n generateImpliedEndTagsWithExclusion(exclusionTagName) {\n while (isImpliedEndTagRequired(this.currentTagName) && this.currentTagName !== exclusionTagName) {\n this.pop();\n }\n }\n}\n\nmodule.exports = OpenElementStack;\n","'use strict';\n\n//Const\nconst NOAH_ARK_CAPACITY = 3;\n\n//List of formatting elements\nclass FormattingElementList {\n constructor(treeAdapter) {\n this.length = 0;\n this.entries = [];\n this.treeAdapter = treeAdapter;\n this.bookmark = null;\n }\n\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement) {\n const candidates = [];\n\n if (this.length >= NOAH_ARK_CAPACITY) {\n const neAttrsLength = this.treeAdapter.getAttrList(newElement).length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n break;\n }\n\n const element = entry.element;\n const elementAttrs = this.treeAdapter.getAttrList(element);\n\n const isCandidate =\n this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI &&\n elementAttrs.length === neAttrsLength;\n\n if (isCandidate) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n\n return candidates.length < NOAH_ARK_CAPACITY ? [] : candidates;\n }\n\n _ensureNoahArkCondition(newElement) {\n const candidates = this._getNoahArkConditionCandidates(newElement);\n let cLength = candidates.length;\n\n if (cLength) {\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const neAttrsLength = neAttrs.length;\n const neAttrsMap = Object.create(null);\n\n //NOTE: build attrs map for the new element so we can perform fast lookups\n for (let i = 0; i < neAttrsLength; i++) {\n const neAttr = neAttrs[i];\n\n neAttrsMap[neAttr.name] = neAttr.value;\n }\n\n for (let i = 0; i < neAttrsLength; i++) {\n for (let j = 0; j < cLength; j++) {\n const cAttr = candidates[j].attrs[i];\n\n if (neAttrsMap[cAttr.name] !== cAttr.value) {\n candidates.splice(j, 1);\n cLength--;\n }\n\n if (candidates.length < NOAH_ARK_CAPACITY) {\n return;\n }\n }\n }\n\n //NOTE: remove bottommost candidates until Noah's Ark condition will not be met\n for (let i = cLength - 1; i >= NOAH_ARK_CAPACITY - 1; i--) {\n this.entries.splice(candidates[i].idx, 1);\n this.length--;\n }\n }\n }\n\n //Mutations\n insertMarker() {\n this.entries.push({ type: FormattingElementList.MARKER_ENTRY });\n this.length++;\n }\n\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n\n this.entries.push({\n type: FormattingElementList.ELEMENT_ENTRY,\n element: element,\n token: token\n });\n\n this.length++;\n }\n\n insertElementAfterBookmark(element, token) {\n let bookmarkIdx = this.length - 1;\n\n for (; bookmarkIdx >= 0; bookmarkIdx--) {\n if (this.entries[bookmarkIdx] === this.bookmark) {\n break;\n }\n }\n\n this.entries.splice(bookmarkIdx + 1, 0, {\n type: FormattingElementList.ELEMENT_ENTRY,\n element: element,\n token: token\n });\n\n this.length++;\n }\n\n removeEntry(entry) {\n for (let i = this.length - 1; i >= 0; i--) {\n if (this.entries[i] === entry) {\n this.entries.splice(i, 1);\n this.length--;\n break;\n }\n }\n }\n\n clearToLastMarker() {\n while (this.length) {\n const entry = this.entries.pop();\n\n this.length--;\n\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n break;\n }\n }\n }\n\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n return null;\n }\n\n if (this.treeAdapter.getTagName(entry.element) === tagName) {\n return entry;\n }\n }\n\n return null;\n }\n\n getElementEntry(element) {\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n\n if (entry.type === FormattingElementList.ELEMENT_ENTRY && entry.element === element) {\n return entry;\n }\n }\n\n return null;\n }\n}\n\n//Entry types\nFormattingElementList.MARKER_ENTRY = 'MARKER_ENTRY';\nFormattingElementList.ELEMENT_ENTRY = 'ELEMENT_ENTRY';\n\nmodule.exports = FormattingElementList;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\nconst Tokenizer = require('../../tokenizer');\nconst LocationInfoTokenizerMixin = require('./tokenizer-mixin');\nconst LocationInfoOpenElementStackMixin = require('./open-element-stack-mixin');\nconst HTML = require('../../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\n\nclass LocationInfoParserMixin extends Mixin {\n constructor(parser) {\n super(parser);\n\n this.parser = parser;\n this.treeAdapter = this.parser.treeAdapter;\n this.posTracker = null;\n this.lastStartTagToken = null;\n this.lastFosterParentingLocation = null;\n this.currentToken = null;\n }\n\n _setStartLocation(element) {\n let loc = null;\n\n if (this.lastStartTagToken) {\n loc = Object.assign({}, this.lastStartTagToken.location);\n loc.startTag = this.lastStartTagToken.location;\n }\n\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n\n _setEndLocation(element, closingToken) {\n const loc = this.treeAdapter.getNodeSourceCodeLocation(element);\n\n if (loc) {\n if (closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n\n // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n const isClosingEndTag = closingToken.type === Tokenizer.END_TAG_TOKEN && tn === closingToken.tagName;\n const endLoc = {};\n if (isClosingEndTag) {\n endLoc.endTag = Object.assign({}, ctLoc);\n endLoc.endLine = ctLoc.endLine;\n endLoc.endCol = ctLoc.endCol;\n endLoc.endOffset = ctLoc.endOffset;\n } else {\n endLoc.endLine = ctLoc.startLine;\n endLoc.endCol = ctLoc.startCol;\n endLoc.endOffset = ctLoc.startOffset;\n }\n\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n _bootstrap(document, fragmentContext) {\n orig._bootstrap.call(this, document, fragmentContext);\n\n mxn.lastStartTagToken = null;\n mxn.lastFosterParentingLocation = null;\n mxn.currentToken = null;\n\n const tokenizerMixin = Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);\n\n mxn.posTracker = tokenizerMixin.posTracker;\n\n Mixin.install(this.openElements, LocationInfoOpenElementStackMixin, {\n onItemPop: function(element) {\n mxn._setEndLocation(element, mxn.currentToken);\n }\n });\n },\n\n _runParsingLoop(scriptHandler) {\n orig._runParsingLoop.call(this, scriptHandler);\n\n // NOTE: generate location info for elements\n // that remains on open element stack\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n mxn._setEndLocation(this.openElements.items[i], mxn.currentToken);\n }\n },\n\n //Token processing\n _processTokenInForeignContent(token) {\n mxn.currentToken = token;\n orig._processTokenInForeignContent.call(this, token);\n },\n\n _processToken(token) {\n mxn.currentToken = token;\n orig._processToken.call(this, token);\n\n //NOTE: <body> and <html> are never popped from the stack, so we need to updated\n //their end location explicitly.\n const requireExplicitUpdate =\n token.type === Tokenizer.END_TAG_TOKEN &&\n (token.tagName === $.HTML || (token.tagName === $.BODY && this.openElements.hasInScope($.BODY)));\n\n if (requireExplicitUpdate) {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const element = this.openElements.items[i];\n\n if (this.treeAdapter.getTagName(element) === token.tagName) {\n mxn._setEndLocation(element, token);\n break;\n }\n }\n }\n },\n\n //Doctype\n _setDocumentType(token) {\n orig._setDocumentType.call(this, token);\n\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const cnLength = documentChildren.length;\n\n for (let i = 0; i < cnLength; i++) {\n const node = documentChildren[i];\n\n if (this.treeAdapter.isDocumentTypeNode(node)) {\n this.treeAdapter.setNodeSourceCodeLocation(node, token.location);\n break;\n }\n }\n },\n\n //Elements\n _attachElementToTree(element) {\n //NOTE: _attachElementToTree is called from _appendElement, _insertElement and _insertTemplate methods.\n //So we will use token location stored in this methods for the element.\n mxn._setStartLocation(element);\n mxn.lastStartTagToken = null;\n orig._attachElementToTree.call(this, element);\n },\n\n _appendElement(token, namespaceURI) {\n mxn.lastStartTagToken = token;\n orig._appendElement.call(this, token, namespaceURI);\n },\n\n _insertElement(token, namespaceURI) {\n mxn.lastStartTagToken = token;\n orig._insertElement.call(this, token, namespaceURI);\n },\n\n _insertTemplate(token) {\n mxn.lastStartTagToken = token;\n orig._insertTemplate.call(this, token);\n\n const tmplContent = this.treeAdapter.getTemplateContent(this.openElements.current);\n\n this.treeAdapter.setNodeSourceCodeLocation(tmplContent, null);\n },\n\n _insertFakeRootElement() {\n orig._insertFakeRootElement.call(this);\n this.treeAdapter.setNodeSourceCodeLocation(this.openElements.current, null);\n },\n\n //Comments\n _appendCommentNode(token, parent) {\n orig._appendCommentNode.call(this, token, parent);\n\n const children = this.treeAdapter.getChildNodes(parent);\n const commentNode = children[children.length - 1];\n\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n },\n\n //Text\n _findFosterParentingLocation() {\n //NOTE: store last foster parenting location, so we will be able to find inserted text\n //in case of foster parenting\n mxn.lastFosterParentingLocation = orig._findFosterParentingLocation.call(this);\n\n return mxn.lastFosterParentingLocation;\n },\n\n _insertCharacters(token) {\n orig._insertCharacters.call(this, token);\n\n const hasFosterParent = this._shouldFosterParentOnInsertion();\n\n const parent =\n (hasFosterParent && mxn.lastFosterParentingLocation.parent) ||\n this.openElements.currentTmplContent ||\n this.openElements.current;\n\n const siblings = this.treeAdapter.getChildNodes(parent);\n\n const textNodeIdx =\n hasFosterParent && mxn.lastFosterParentingLocation.beforeElement\n ? siblings.indexOf(mxn.lastFosterParentingLocation.beforeElement) - 1\n : siblings.length - 1;\n\n const textNode = siblings[textNodeIdx];\n\n //NOTE: if we have location assigned by another token, then just update end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n } else {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n };\n }\n}\n\nmodule.exports = LocationInfoParserMixin;\n","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct;","var _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass LocationInfoOpenElementStackMixin extends Mixin {\n constructor(stack, opts) {\n super(stack);\n\n this.onItemPop = opts.onItemPop;\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n pop() {\n mxn.onItemPop(this.current);\n orig.pop.call(this);\n },\n\n popAllUpToHtmlElement() {\n for (let i = this.stackTop; i > 0; i--) {\n mxn.onItemPop(this.items[i]);\n }\n\n orig.popAllUpToHtmlElement.call(this);\n },\n\n remove(element) {\n mxn.onItemPop(this.current);\n orig.remove.call(this, element);\n }\n };\n }\n}\n\nmodule.exports = LocationInfoOpenElementStackMixin;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst ErrorReportingTokenizerMixin = require('./tokenizer-mixin');\nconst LocationInfoTokenizerMixin = require('../location-info/tokenizer-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingParserMixin extends ErrorReportingMixinBase {\n constructor(parser, opts) {\n super(parser, opts);\n\n this.opts = opts;\n this.ctLoc = null;\n this.locBeforeToken = false;\n }\n\n _setErrorLocation(err) {\n if (this.ctLoc) {\n err.startLine = this.ctLoc.startLine;\n err.startCol = this.ctLoc.startCol;\n err.startOffset = this.ctLoc.startOffset;\n\n err.endLine = this.locBeforeToken ? this.ctLoc.startLine : this.ctLoc.endLine;\n err.endCol = this.locBeforeToken ? this.ctLoc.startCol : this.ctLoc.endCol;\n err.endOffset = this.locBeforeToken ? this.ctLoc.startOffset : this.ctLoc.endOffset;\n }\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n _bootstrap(document, fragmentContext) {\n orig._bootstrap.call(this, document, fragmentContext);\n\n Mixin.install(this.tokenizer, ErrorReportingTokenizerMixin, mxn.opts);\n Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);\n },\n\n _processInputToken(token) {\n mxn.ctLoc = token.location;\n\n orig._processInputToken.call(this, token);\n },\n\n _err(code, options) {\n mxn.locBeforeToken = options && options.beforeToken;\n mxn._reportError(code);\n }\n };\n }\n}\n\nmodule.exports = ErrorReportingParserMixin;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst ErrorReportingPreprocessorMixin = require('./preprocessor-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingTokenizerMixin extends ErrorReportingMixinBase {\n constructor(tokenizer, opts) {\n super(tokenizer, opts);\n\n const preprocessorMixin = Mixin.install(tokenizer.preprocessor, ErrorReportingPreprocessorMixin, opts);\n\n this.posTracker = preprocessorMixin.posTracker;\n }\n}\n\nmodule.exports = ErrorReportingTokenizerMixin;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst PositionTrackingPreprocessorMixin = require('../position-tracking/preprocessor-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingPreprocessorMixin extends ErrorReportingMixinBase {\n constructor(preprocessor, opts) {\n super(preprocessor, opts);\n\n this.posTracker = Mixin.install(preprocessor, PositionTrackingPreprocessorMixin);\n this.lastErrOffset = -1;\n }\n\n _reportError(code) {\n //NOTE: avoid reporting error twice on advance/retreat\n if (this.lastErrOffset !== this.posTracker.offset) {\n this.lastErrOffset = this.posTracker.offset;\n super._reportError(code);\n }\n }\n}\n\nmodule.exports = ErrorReportingPreprocessorMixin;\n","var superPropBase = require(\"./superPropBase\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;","'use strict';\n\nconst { DOCUMENT_MODE } = require('../common/html');\n\n//Node construction\nexports.createDocument = function() {\n return {\n nodeName: '#document',\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: []\n };\n};\n\nexports.createDocumentFragment = function() {\n return {\n nodeName: '#document-fragment',\n childNodes: []\n };\n};\n\nexports.createElement = function(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName: tagName,\n attrs: attrs,\n namespaceURI: namespaceURI,\n childNodes: [],\n parentNode: null\n };\n};\n\nexports.createCommentNode = function(data) {\n return {\n nodeName: '#comment',\n data: data,\n parentNode: null\n };\n};\n\nconst createTextNode = function(value) {\n return {\n nodeName: '#text',\n value: value,\n parentNode: null\n };\n};\n\n//Tree mutation\nconst appendChild = (exports.appendChild = function(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n});\n\nconst insertBefore = (exports.insertBefore = function(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n});\n\nexports.setTemplateContent = function(templateElement, contentElement) {\n templateElement.content = contentElement;\n};\n\nexports.getTemplateContent = function(templateElement) {\n return templateElement.content;\n};\n\nexports.setDocumentType = function(document, name, publicId, systemId) {\n let doctypeNode = null;\n\n for (let i = 0; i < document.childNodes.length; i++) {\n if (document.childNodes[i].nodeName === '#documentType') {\n doctypeNode = document.childNodes[i];\n break;\n }\n }\n\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n } else {\n appendChild(document, {\n nodeName: '#documentType',\n name: name,\n publicId: publicId,\n systemId: systemId\n });\n }\n};\n\nexports.setDocumentMode = function(document, mode) {\n document.mode = mode;\n};\n\nexports.getDocumentMode = function(document) {\n return document.mode;\n};\n\nexports.detachNode = function(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n};\n\nexports.insertText = function(parentNode, text) {\n if (parentNode.childNodes.length) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n\n if (prevNode.nodeName === '#text') {\n prevNode.value += text;\n return;\n }\n }\n\n appendChild(parentNode, createTextNode(text));\n};\n\nexports.insertTextBefore = function(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n\n if (prevNode && prevNode.nodeName === '#text') {\n prevNode.value += text;\n } else {\n insertBefore(parentNode, createTextNode(text), referenceNode);\n }\n};\n\nexports.adoptAttributes = function(recipient, attrs) {\n const recipientAttrsMap = [];\n\n for (let i = 0; i < recipient.attrs.length; i++) {\n recipientAttrsMap.push(recipient.attrs[i].name);\n }\n\n for (let j = 0; j < attrs.length; j++) {\n if (recipientAttrsMap.indexOf(attrs[j].name) === -1) {\n recipient.attrs.push(attrs[j]);\n }\n }\n};\n\n//Tree traversing\nexports.getFirstChild = function(node) {\n return node.childNodes[0];\n};\n\nexports.getChildNodes = function(node) {\n return node.childNodes;\n};\n\nexports.getParentNode = function(node) {\n return node.parentNode;\n};\n\nexports.getAttrList = function(element) {\n return element.attrs;\n};\n\n//Node data\nexports.getTagName = function(element) {\n return element.tagName;\n};\n\nexports.getNamespaceURI = function(element) {\n return element.namespaceURI;\n};\n\nexports.getTextNodeContent = function(textNode) {\n return textNode.value;\n};\n\nexports.getCommentNodeContent = function(commentNode) {\n return commentNode.data;\n};\n\nexports.getDocumentTypeNodeName = function(doctypeNode) {\n return doctypeNode.name;\n};\n\nexports.getDocumentTypeNodePublicId = function(doctypeNode) {\n return doctypeNode.publicId;\n};\n\nexports.getDocumentTypeNodeSystemId = function(doctypeNode) {\n return doctypeNode.systemId;\n};\n\n//Node types\nexports.isTextNode = function(node) {\n return node.nodeName === '#text';\n};\n\nexports.isCommentNode = function(node) {\n return node.nodeName === '#comment';\n};\n\nexports.isDocumentTypeNode = function(node) {\n return node.nodeName === '#documentType';\n};\n\nexports.isElementNode = function(node) {\n return !!node.tagName;\n};\n\n// Source code location\nexports.setNodeSourceCodeLocation = function(node, location) {\n node.sourceCodeLocation = location;\n};\n\nexports.getNodeSourceCodeLocation = function(node) {\n return node.sourceCodeLocation;\n};\n\nexports.updateNodeSourceCodeLocation = function(node, endLocation) {\n node.sourceCodeLocation = Object.assign(node.sourceCodeLocation, endLocation);\n};\n","'use strict';\n\nmodule.exports = function mergeOptions(defaults, options) {\n options = options || Object.create(null);\n\n return [defaults, options].reduce((merged, optObj) => {\n Object.keys(optObj).forEach(key => {\n merged[key] = optObj[key];\n });\n\n return merged;\n }, Object.create(null));\n};\n","'use strict';\n\nconst { DOCUMENT_MODE } = require('./html');\n\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\n\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n '+//silmaril//dtd html pro v0r11 19970101//',\n '-//as//dtd html 3.0 aswedit + extensions//',\n '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n '-//ietf//dtd html 2.0 level 1//',\n '-//ietf//dtd html 2.0 level 2//',\n '-//ietf//dtd html 2.0 strict level 1//',\n '-//ietf//dtd html 2.0 strict level 2//',\n '-//ietf//dtd html 2.0 strict//',\n '-//ietf//dtd html 2.0//',\n '-//ietf//dtd html 2.1e//',\n '-//ietf//dtd html 3.0//',\n '-//ietf//dtd html 3.2 final//',\n '-//ietf//dtd html 3.2//',\n '-//ietf//dtd html 3//',\n '-//ietf//dtd html level 0//',\n '-//ietf//dtd html level 1//',\n '-//ietf//dtd html level 2//',\n '-//ietf//dtd html level 3//',\n '-//ietf//dtd html strict level 0//',\n '-//ietf//dtd html strict level 1//',\n '-//ietf//dtd html strict level 2//',\n '-//ietf//dtd html strict level 3//',\n '-//ietf//dtd html strict//',\n '-//ietf//dtd html//',\n '-//metrius//dtd metrius presentational//',\n '-//microsoft//dtd internet explorer 2.0 html strict//',\n '-//microsoft//dtd internet explorer 2.0 html//',\n '-//microsoft//dtd internet explorer 2.0 tables//',\n '-//microsoft//dtd internet explorer 3.0 html strict//',\n '-//microsoft//dtd internet explorer 3.0 html//',\n '-//microsoft//dtd internet explorer 3.0 tables//',\n '-//netscape comm. corp.//dtd html//',\n '-//netscape comm. corp.//dtd strict html//',\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n '-//sq//dtd html 2.0 hotmetal + extensions//',\n '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n '-//spyglass//dtd html 2.0 extended//',\n '-//sun microsystems corp.//dtd hotjava html//',\n '-//sun microsystems corp.//dtd hotjava strict html//',\n '-//w3c//dtd html 3 1995-03-24//',\n '-//w3c//dtd html 3.2 draft//',\n '-//w3c//dtd html 3.2 final//',\n '-//w3c//dtd html 3.2//',\n '-//w3c//dtd html 3.2s draft//',\n '-//w3c//dtd html 4.0 frameset//',\n '-//w3c//dtd html 4.0 transitional//',\n '-//w3c//dtd html experimental 19960712//',\n '-//w3c//dtd html experimental 970421//',\n '-//w3c//dtd w3 html//',\n '-//w3o//dtd w3 html 3.0//',\n '-//webtechs//dtd mozilla html 2.0//',\n '-//webtechs//dtd mozilla html//'\n];\n\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = QUIRKS_MODE_PUBLIC_ID_PREFIXES.concat([\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//'\n]);\n\nconst QUIRKS_MODE_PUBLIC_IDS = ['-//w3o//dtd w3 html strict 3.0//en//', '-/w3c/dtd html 4.0 transitional/en', 'html'];\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\n\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = LIMITED_QUIRKS_PUBLIC_ID_PREFIXES.concat([\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//'\n]);\n\n//Utils\nfunction enquoteDoctypeId(id) {\n const quote = id.indexOf('\"') !== -1 ? \"'\" : '\"';\n\n return quote + id + quote;\n}\n\nfunction hasPrefix(publicId, prefixes) {\n for (let i = 0; i < prefixes.length; i++) {\n if (publicId.indexOf(prefixes[i]) === 0) {\n return true;\n }\n }\n\n return false;\n}\n\n//API\nexports.isConforming = function(token) {\n return (\n token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID)\n );\n};\n\nexports.getDocumentMode = function(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n const systemId = token.systemId;\n\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n let publicId = token.publicId;\n\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n\n if (QUIRKS_MODE_PUBLIC_IDS.indexOf(publicId) > -1) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n\n return DOCUMENT_MODE.NO_QUIRKS;\n};\n\nexports.serializeContent = function(name, publicId, systemId) {\n let str = '!DOCTYPE ';\n\n if (name) {\n str += name;\n }\n\n if (publicId) {\n str += ' PUBLIC ' + enquoteDoctypeId(publicId);\n } else if (systemId) {\n str += ' SYSTEM';\n }\n\n if (systemId !== null) {\n str += ' ' + enquoteDoctypeId(systemId);\n }\n\n return str;\n};\n","'use strict';\n\nconst Tokenizer = require('../tokenizer');\nconst HTML = require('./html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\nconst ATTRS = HTML.ATTRS;\n\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml'\n};\n\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = {\n attributename: 'attributeName',\n attributetype: 'attributeType',\n basefrequency: 'baseFrequency',\n baseprofile: 'baseProfile',\n calcmode: 'calcMode',\n clippathunits: 'clipPathUnits',\n diffuseconstant: 'diffuseConstant',\n edgemode: 'edgeMode',\n filterunits: 'filterUnits',\n glyphref: 'glyphRef',\n gradienttransform: 'gradientTransform',\n gradientunits: 'gradientUnits',\n kernelmatrix: 'kernelMatrix',\n kernelunitlength: 'kernelUnitLength',\n keypoints: 'keyPoints',\n keysplines: 'keySplines',\n keytimes: 'keyTimes',\n lengthadjust: 'lengthAdjust',\n limitingconeangle: 'limitingConeAngle',\n markerheight: 'markerHeight',\n markerunits: 'markerUnits',\n markerwidth: 'markerWidth',\n maskcontentunits: 'maskContentUnits',\n maskunits: 'maskUnits',\n numoctaves: 'numOctaves',\n pathlength: 'pathLength',\n patterncontentunits: 'patternContentUnits',\n patterntransform: 'patternTransform',\n patternunits: 'patternUnits',\n pointsatx: 'pointsAtX',\n pointsaty: 'pointsAtY',\n pointsatz: 'pointsAtZ',\n preservealpha: 'preserveAlpha',\n preserveaspectratio: 'preserveAspectRatio',\n primitiveunits: 'primitiveUnits',\n refx: 'refX',\n refy: 'refY',\n repeatcount: 'repeatCount',\n repeatdur: 'repeatDur',\n requiredextensions: 'requiredExtensions',\n requiredfeatures: 'requiredFeatures',\n specularconstant: 'specularConstant',\n specularexponent: 'specularExponent',\n spreadmethod: 'spreadMethod',\n startoffset: 'startOffset',\n stddeviation: 'stdDeviation',\n stitchtiles: 'stitchTiles',\n surfacescale: 'surfaceScale',\n systemlanguage: 'systemLanguage',\n tablevalues: 'tableValues',\n targetx: 'targetX',\n targety: 'targetY',\n textlength: 'textLength',\n viewbox: 'viewBox',\n viewtarget: 'viewTarget',\n xchannelselector: 'xChannelSelector',\n ychannelselector: 'yChannelSelector',\n zoomandpan: 'zoomAndPan'\n};\n\nconst XML_ATTRS_ADJUSTMENT_MAP = {\n 'xlink:actuate': { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK },\n 'xlink:arcrole': { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK },\n 'xlink:href': { prefix: 'xlink', name: 'href', namespace: NS.XLINK },\n 'xlink:role': { prefix: 'xlink', name: 'role', namespace: NS.XLINK },\n 'xlink:show': { prefix: 'xlink', name: 'show', namespace: NS.XLINK },\n 'xlink:title': { prefix: 'xlink', name: 'title', namespace: NS.XLINK },\n 'xlink:type': { prefix: 'xlink', name: 'type', namespace: NS.XLINK },\n 'xml:base': { prefix: 'xml', name: 'base', namespace: NS.XML },\n 'xml:lang': { prefix: 'xml', name: 'lang', namespace: NS.XML },\n 'xml:space': { prefix: 'xml', name: 'space', namespace: NS.XML },\n xmlns: { prefix: '', name: 'xmlns', namespace: NS.XMLNS },\n 'xmlns:xlink': { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }\n};\n\n//SVG tag names adjustment map\nconst SVG_TAG_NAMES_ADJUSTMENT_MAP = (exports.SVG_TAG_NAMES_ADJUSTMENT_MAP = {\n altglyph: 'altGlyph',\n altglyphdef: 'altGlyphDef',\n altglyphitem: 'altGlyphItem',\n animatecolor: 'animateColor',\n animatemotion: 'animateMotion',\n animatetransform: 'animateTransform',\n clippath: 'clipPath',\n feblend: 'feBlend',\n fecolormatrix: 'feColorMatrix',\n fecomponenttransfer: 'feComponentTransfer',\n fecomposite: 'feComposite',\n feconvolvematrix: 'feConvolveMatrix',\n fediffuselighting: 'feDiffuseLighting',\n fedisplacementmap: 'feDisplacementMap',\n fedistantlight: 'feDistantLight',\n feflood: 'feFlood',\n fefunca: 'feFuncA',\n fefuncb: 'feFuncB',\n fefuncg: 'feFuncG',\n fefuncr: 'feFuncR',\n fegaussianblur: 'feGaussianBlur',\n feimage: 'feImage',\n femerge: 'feMerge',\n femergenode: 'feMergeNode',\n femorphology: 'feMorphology',\n feoffset: 'feOffset',\n fepointlight: 'fePointLight',\n fespecularlighting: 'feSpecularLighting',\n fespotlight: 'feSpotLight',\n fetile: 'feTile',\n feturbulence: 'feTurbulence',\n foreignobject: 'foreignObject',\n glyphref: 'glyphRef',\n lineargradient: 'linearGradient',\n radialgradient: 'radialGradient',\n textpath: 'textPath'\n});\n\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = {\n [$.B]: true,\n [$.BIG]: true,\n [$.BLOCKQUOTE]: true,\n [$.BODY]: true,\n [$.BR]: true,\n [$.CENTER]: true,\n [$.CODE]: true,\n [$.DD]: true,\n [$.DIV]: true,\n [$.DL]: true,\n [$.DT]: true,\n [$.EM]: true,\n [$.EMBED]: true,\n [$.H1]: true,\n [$.H2]: true,\n [$.H3]: true,\n [$.H4]: true,\n [$.H5]: true,\n [$.H6]: true,\n [$.HEAD]: true,\n [$.HR]: true,\n [$.I]: true,\n [$.IMG]: true,\n [$.LI]: true,\n [$.LISTING]: true,\n [$.MENU]: true,\n [$.META]: true,\n [$.NOBR]: true,\n [$.OL]: true,\n [$.P]: true,\n [$.PRE]: true,\n [$.RUBY]: true,\n [$.S]: true,\n [$.SMALL]: true,\n [$.SPAN]: true,\n [$.STRONG]: true,\n [$.STRIKE]: true,\n [$.SUB]: true,\n [$.SUP]: true,\n [$.TABLE]: true,\n [$.TT]: true,\n [$.U]: true,\n [$.UL]: true,\n [$.VAR]: true\n};\n\n//Check exit from foreign content\nexports.causesExit = function(startTagToken) {\n const tn = startTagToken.tagName;\n const isFontWithAttrs =\n tn === $.FONT &&\n (Tokenizer.getTokenAttr(startTagToken, ATTRS.COLOR) !== null ||\n Tokenizer.getTokenAttr(startTagToken, ATTRS.SIZE) !== null ||\n Tokenizer.getTokenAttr(startTagToken, ATTRS.FACE) !== null);\n\n return isFontWithAttrs ? true : EXITS_FOREIGN_CONTENT[tn];\n};\n\n//Token adjustments\nexports.adjustTokenMathMLAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n};\n\nexports.adjustTokenSVGAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n\n if (adjustedAttrName) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n};\n\nexports.adjustTokenXMLAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n};\n\nexports.adjustTokenSVGTagName = function(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP[token.tagName];\n\n if (adjustedTagName) {\n token.tagName = adjustedTagName;\n }\n};\n\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\n\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n\n return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\n\nexports.isIntegrationPoint = function(tn, ns, attrs, foreignNS) {\n if ((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) {\n return true;\n }\n\n if ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)) {\n return true;\n }\n\n return false;\n};\n","'use strict'\n\nvar s = require('hastscript/svg')\nvar h = require('hastscript')\nvar find = require('property-information/find')\nvar html = require('property-information/html')\nvar svg = require('property-information/svg')\nvar vfileLocation = require('vfile-location')\nvar ns = require('web-namespaces')\n\nmodule.exports = wrapper\n\nvar own = {}.hasOwnProperty\n\n// Handlers.\nvar map = {\n '#document': root,\n '#document-fragment': root,\n '#text': text,\n '#comment': comment,\n '#documentType': doctype\n}\n\n// Wrapper to normalise options.\nfunction wrapper(ast, options) {\n var settings = options || {}\n var file\n\n if (settings.messages) {\n file = settings\n settings = {}\n } else {\n file = settings.file\n }\n\n return transform(ast, {\n schema: settings.space === 'svg' ? svg : html,\n file: file,\n verbose: settings.verbose\n })\n}\n\n// Transform a node.\nfunction transform(ast, config) {\n var schema = config.schema\n var fn = own.call(map, ast.nodeName) ? map[ast.nodeName] : element\n var children\n var result\n var position\n\n if (fn === element) {\n config.schema = ast.namespaceURI === ns.svg ? svg : html\n }\n\n if (ast.childNodes) {\n children = nodes(ast.childNodes, config)\n }\n\n result = fn(ast, children, config)\n\n if (ast.sourceCodeLocation && config.file) {\n position = location(result, ast.sourceCodeLocation, config)\n\n if (position) {\n config.location = true\n result.position = position\n }\n }\n\n config.schema = schema\n\n return result\n}\n\n// Transform children.\nfunction nodes(children, config) {\n var index = -1\n var result = []\n\n while (++index < children.length) {\n result[index] = transform(children[index], config)\n }\n\n return result\n}\n\n// Transform a document.\n// Stores `ast.quirksMode` in `node.data.quirksMode`.\nfunction root(ast, children, config) {\n var result = {\n type: 'root',\n children: children,\n data: {quirksMode: ast.mode === 'quirks' || ast.mode === 'limited-quirks'}\n }\n var doc\n var location\n\n if (config.file && config.location) {\n doc = String(config.file)\n location = vfileLocation(doc)\n result.position = {\n start: location.toPoint(0),\n end: location.toPoint(doc.length)\n }\n }\n\n return result\n}\n\n// Transform a doctype.\nfunction doctype(ast) {\n return {\n type: 'doctype',\n name: ast.name || '',\n public: ast.publicId || null,\n system: ast.systemId || null\n }\n}\n\n// Transform a text.\nfunction text(ast) {\n return {type: 'text', value: ast.value}\n}\n\n// Transform a comment.\nfunction comment(ast) {\n return {type: 'comment', value: ast.data}\n}\n\n// Transform an element.\nfunction element(ast, children, config) {\n var fn = config.schema.space === 'svg' ? s : h\n var props = {}\n var index = -1\n var result\n var attribute\n var pos\n var start\n var end\n\n while (++index < ast.attrs.length) {\n attribute = ast.attrs[index]\n props[(attribute.prefix ? attribute.prefix + ':' : '') + attribute.name] =\n attribute.value\n }\n\n result = fn(ast.tagName, props, children)\n\n if (result.tagName === 'template' && 'content' in ast) {\n pos = ast.sourceCodeLocation\n start = pos && pos.startTag && position(pos.startTag).end\n end = pos && pos.endTag && position(pos.endTag).start\n\n result.content = transform(ast.content, config)\n\n if ((start || end) && config.file) {\n result.content.position = {start: start, end: end}\n }\n }\n\n return result\n}\n\n// Create clean positional information.\nfunction location(node, location, config) {\n var result = position(location)\n var tail\n var key\n var props\n\n if (node.type === 'element') {\n tail = node.children[node.children.length - 1]\n\n // Bug for unclosed with children.\n // See: <https://github.com/inikulin/parse5/issues/109>.\n if (!location.endTag && tail && tail.position && tail.position.end) {\n result.end = Object.assign({}, tail.position.end)\n }\n\n if (config.verbose) {\n props = {}\n\n for (key in location.attrs) {\n props[find(config.schema, key).property] = position(location.attrs[key])\n }\n\n node.data = {\n position: {\n opening: position(location.startTag),\n closing: location.endTag ? position(location.endTag) : null,\n properties: props\n }\n }\n }\n }\n\n return result\n}\n\nfunction position(loc) {\n var start = point({\n line: loc.startLine,\n column: loc.startCol,\n offset: loc.startOffset\n })\n var end = point({\n line: loc.endLine,\n column: loc.endCol,\n offset: loc.endOffset\n })\n return start || end ? {start: start, end: end} : null\n}\n\nfunction point(point) {\n return point.line && point.column ? point : null\n}\n","'use strict'\n\nvar schema = require('property-information/svg')\nvar caseSensitive = require('./svg-case-sensitive-tag-names.json')\nvar factory = require('./factory')\n\nvar svg = factory(schema, 'g', caseSensitive)\nsvg.displayName = 'svg'\n\nmodule.exports = svg\n","'use strict'\n\nmodule.exports = parse\n\nvar search = /[#.]/g\n\n// Create a hast element from a simple CSS selector.\nfunction parse(selector, defaultTagName) {\n var value = selector || ''\n var name = defaultTagName || 'div'\n var props = {}\n var start = 0\n var subvalue\n var previous\n var match\n\n while (start < value.length) {\n search.lastIndex = start\n match = search.exec(value)\n subvalue = value.slice(start, match ? match.index : value.length)\n\n if (subvalue) {\n if (!previous) {\n name = subvalue\n } else if (previous === '#') {\n props.id = subvalue\n } else if (props.className) {\n props.className.push(subvalue)\n } else {\n props.className = [subvalue]\n }\n\n start += subvalue.length\n }\n\n if (match) {\n previous = match[0]\n start++\n }\n }\n\n return {type: 'element', tagName: name, properties: props, children: []}\n}\n","'use strict'\n\nmodule.exports = require('./html')\n","'use strict'\n\nvar schema = require('property-information/html')\nvar factory = require('./factory')\n\nvar html = factory(schema, 'div')\nhtml.displayName = 'html'\n\nmodule.exports = html\n","'use strict'\n\nmodule.exports = factory\n\nfunction factory(file) {\n var value = String(file)\n var indices = []\n var search = /\\r?\\n|\\r/g\n\n while (search.exec(value)) {\n indices.push(search.lastIndex)\n }\n\n indices.push(value.length + 1)\n\n return {\n toPoint: offsetToPoint,\n toPosition: offsetToPoint,\n toOffset: pointToOffset\n }\n\n // Get the line and column-based `point` for `offset` in the bound indices.\n function offsetToPoint(offset) {\n var index = -1\n\n if (offset > -1 && offset < indices[indices.length - 1]) {\n while (++index < indices.length) {\n if (indices[index] > offset) {\n return {\n line: index + 1,\n column: offset - (indices[index - 1] || 0) + 1,\n offset: offset\n }\n }\n }\n }\n\n return {}\n }\n\n // Get the `offset` for a line and column-based `point` in the bound\n // indices.\n function pointToOffset(point) {\n var line = point && point.line\n var column = point && point.column\n var offset\n\n if (!isNaN(line) && !isNaN(column) && line - 1 in indices) {\n offset = (indices[line - 2] || 0) + column - 1 || 0\n }\n\n return offset > -1 && offset < indices[indices.length - 1] ? offset : -1\n }\n}\n","'use strict'\n\nvar xtend = require('xtend')\nvar html = require('property-information/html')\nvar svg = require('property-information/svg')\nvar find = require('property-information/find')\nvar toH = require('hast-to-hyperscript')\nvar ns = require('web-namespaces')\nvar zwitch = require('zwitch')\n\nmodule.exports = transform\n\nvar ignoredSpaces = ['svg', 'html']\n\nvar one = zwitch('type')\n\none.handlers.root = root\none.handlers.element = element\none.handlers.text = text\none.handlers.comment = comment\none.handlers.doctype = doctype\n\n// Transform a tree from hast to Parse5’s AST.\nfunction transform(tree, space) {\n return one(tree, space === 'svg' ? svg : html)\n}\n\nfunction root(node, schema) {\n var data = node.data || {}\n var mode = data.quirksMode ? 'quirks' : 'no-quirks'\n\n return patch(node, {nodeName: '#document', mode: mode}, schema)\n}\n\nfunction fragment(node, schema) {\n return patch(node, {nodeName: '#document-fragment'}, schema)\n}\n\nfunction doctype(node, schema) {\n return patch(\n node,\n {\n nodeName: '#documentType',\n name: node.name,\n publicId: node.public || '',\n systemId: node.system || ''\n },\n schema\n )\n}\n\nfunction text(node, schema) {\n return patch(node, {nodeName: '#text', value: node.value}, schema)\n}\n\nfunction comment(node, schema) {\n return patch(node, {nodeName: '#comment', data: node.value}, schema)\n}\n\nfunction element(node, schema) {\n var space = schema.space\n var shallow = xtend(node, {children: []})\n\n return toH(h, shallow, {space: space})\n\n function h(name, attrs) {\n var values = []\n var p5\n var attr\n var value\n var key\n var info\n var pos\n\n for (key in attrs) {\n info = find(schema, key)\n attr = attrs[key]\n\n if (attr === false || (info.boolean && !attr)) {\n continue\n }\n\n value = {name: key, value: attr === true ? '' : String(attr)}\n\n if (info.space && ignoredSpaces.indexOf(info.space) === -1) {\n pos = key.indexOf(':')\n\n if (pos === -1) {\n value.prefix = ''\n } else {\n value.name = key.slice(pos + 1)\n value.prefix = key.slice(0, pos)\n }\n\n value.namespace = ns[info.space]\n }\n\n values.push(value)\n }\n\n p5 = patch(node, {nodeName: name, tagName: name, attrs: values}, schema)\n\n if (name === 'template') {\n p5.content = fragment(shallow.content, schema)\n }\n\n return p5\n }\n}\n\n// Patch specific properties.\nfunction patch(node, p5, parentSchema) {\n var schema = parentSchema\n var position = node.position\n var children = node.children\n var childNodes = []\n var length = children ? children.length : 0\n var index = -1\n var child\n\n if (node.type === 'element') {\n if (schema.space === 'html' && node.tagName === 'svg') {\n schema = svg\n }\n\n p5.namespaceURI = ns[schema.space]\n }\n\n while (++index < length) {\n child = one(children[index], schema)\n child.parentNode = p5\n childNodes[index] = child\n }\n\n if (node.type === 'element' || node.type === 'root') {\n p5.childNodes = childNodes\n }\n\n if (position && position.start && position.end) {\n p5.sourceCodeLocation = {\n startLine: position.start.line,\n startCol: position.start.column,\n startOffset: position.start.offset,\n endLine: position.end.line,\n endCol: position.end.column,\n endOffset: position.end.offset\n }\n }\n\n return p5\n}\n","'use strict'\n\nvar html = require('property-information/html')\nvar svg = require('property-information/svg')\nvar find = require('property-information/find')\nvar hastToReact = require('property-information/hast-to-react.json')\nvar spaces = require('space-separated-tokens')\nvar commas = require('comma-separated-tokens')\nvar style = require('style-to-object')\nvar ns = require('web-namespaces')\nvar convert = require('unist-util-is/convert')\n\nvar root = convert('root')\nvar element = convert('element')\nvar text = convert('text')\n\nmodule.exports = wrapper\n\nfunction wrapper(h, node, options) {\n var settings = options || {}\n var r = react(h)\n var v = vue(h)\n var vd = vdom(h)\n var prefix\n\n if (typeof h !== 'function') {\n throw new Error('h is not a function')\n }\n\n if (typeof settings === 'string' || typeof settings === 'boolean') {\n prefix = settings\n settings = {}\n } else {\n prefix = settings.prefix\n }\n\n if (root(node)) {\n node =\n node.children.length === 1 && element(node.children[0])\n ? node.children[0]\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: node.children\n }\n } else if (!element(node)) {\n throw new Error(\n 'Expected root or element, not `' + ((node && node.type) || node) + '`'\n )\n }\n\n return toH(h, node, {\n schema: settings.space === 'svg' ? svg : html,\n prefix: prefix == null ? (r || v || vd ? 'h-' : null) : prefix,\n key: 0,\n react: r,\n vue: v,\n vdom: vd,\n hyperscript: hyperscript(h)\n })\n}\n\n// Transform a hast node through a hyperscript interface to *anything*!\nfunction toH(h, node, ctx) {\n var parentSchema = ctx.schema\n var schema = parentSchema\n var name = node.tagName\n var attributes = {}\n var nodes = []\n var index = -1\n var key\n var value\n\n if (parentSchema.space === 'html' && name.toLowerCase() === 'svg') {\n schema = svg\n ctx.schema = schema\n }\n\n for (key in node.properties) {\n addAttribute(attributes, key, node.properties[key], ctx, name)\n }\n\n if (ctx.vdom) {\n if (schema.space === 'html') {\n name = name.toUpperCase()\n } else {\n attributes.namespace = ns[schema.space]\n }\n }\n\n if (ctx.prefix) {\n ctx.key++\n attributes.key = ctx.prefix + ctx.key\n }\n\n if (node.children) {\n while (++index < node.children.length) {\n value = node.children[index]\n\n if (element(value)) {\n nodes.push(toH(h, value, ctx))\n } else if (text(value)) {\n nodes.push(value.value)\n }\n }\n }\n\n // Restore parent schema.\n ctx.schema = parentSchema\n\n // Ensure no React warnings are triggered for void elements having children\n // passed in.\n return nodes.length\n ? h.call(node, name, attributes, nodes)\n : h.call(node, name, attributes)\n}\n\nfunction addAttribute(props, prop, value, ctx, name) {\n var info = find(ctx.schema, prop)\n var subprop\n\n // Ignore nullish and `NaN` values.\n // Ignore `false` and falsey known booleans for hyperlike DSLs.\n if (\n value == null ||\n value !== value ||\n (value === false && (ctx.vue || ctx.vdom || ctx.hyperscript)) ||\n (!value && info.boolean && (ctx.vue || ctx.vdom || ctx.hyperscript))\n ) {\n return\n }\n\n if (value && typeof value === 'object' && 'length' in value) {\n // Accept `array`.\n // Most props are space-separated.\n value = (info.commaSeparated ? commas : spaces).stringify(value)\n }\n\n // Treat `true` and truthy known booleans.\n if (info.boolean && ctx.hyperscript) {\n value = ''\n }\n\n // VDOM, Vue, and React accept `style` as object.\n if (\n info.property === 'style' &&\n typeof value === 'string' &&\n (ctx.react || ctx.vue || ctx.vdom)\n ) {\n value = parseStyle(value, name)\n }\n\n if (ctx.vue) {\n if (info.property !== 'style') subprop = 'attrs'\n } else if (!info.mustUseProperty) {\n if (ctx.vdom) {\n if (info.property !== 'style') subprop = 'attributes'\n } else if (ctx.hyperscript) {\n subprop = 'attrs'\n }\n }\n\n if (subprop) {\n if (!props[subprop]) props[subprop] = {}\n props[subprop][info.attribute] = value\n } else if (info.space && ctx.react) {\n props[hastToReact[info.property] || info.property] = value\n } else {\n props[info.attribute] = value\n }\n}\n\n// Check if `h` is `react.createElement`.\nfunction react(h) {\n var node = h && h('div')\n return Boolean(\n node && ('_owner' in node || '_store' in node) && node.key == null\n )\n}\n\n// Check if `h` is `hyperscript`.\nfunction hyperscript(h) {\n return Boolean(h && h.context && h.cleanup)\n}\n\n// Check if `h` is `virtual-dom/h`.\nfunction vdom(h) {\n return h && h('div').type === 'VirtualNode'\n}\n\nfunction vue(h) {\n var node = h && h('div')\n return Boolean(node && node.context && node.context._isVue)\n}\n\nfunction parseStyle(value, tagName) {\n var result = {}\n\n try {\n style(value, iterator)\n } catch (error) {\n error.message =\n tagName + '[style]' + error.message.slice('undefined'.length)\n throw error\n }\n\n return result\n\n function iterator(name, value) {\n if (name.slice(0, 4) === '-ms-') name = 'ms-' + name.slice(4)\n result[name.replace(/-([a-z])/g, styleReplacer)] = value\n }\n}\n\nfunction styleReplacer($0, $1) {\n return $1.toUpperCase()\n}\n","'use strict'\n\nvar clean = require('hast-util-sanitize')\n\nmodule.exports = sanitize\n\nfunction sanitize(options) {\n return transformer\n function transformer(tree) {\n return clean(tree, options)\n }\n}\n","'use strict'\nmodule.exports = require('./lib')\n","'use strict'\n\nvar xtend = require('xtend')\nvar defaults = require('./github.json')\n\nmodule.exports = wrapper\n\nvar own = {}.hasOwnProperty\nvar push = [].push\n\nvar nodeSchema = {\n root: {children: all},\n doctype: handleDoctype,\n comment: handleComment,\n element: {\n tagName: handleTagName,\n properties: handleProperties,\n children: all\n },\n text: {value: handleValue},\n '*': {data: allow, position: allow}\n}\n\n// Sanitize `node`, according to `schema`.\nfunction wrapper(node, schema) {\n var ctx = {type: 'root', children: []}\n var replace\n\n if (node && typeof node === 'object' && node.type) {\n replace = one(xtend(defaults, schema || {}), node, [])\n\n if (replace) {\n if ('length' in replace) {\n if (replace.length === 1) {\n ctx = replace[0]\n } else {\n ctx.children = replace\n }\n } else {\n ctx = replace\n }\n }\n }\n\n return ctx\n}\n\n// Sanitize `node`.\nfunction one(schema, node, stack) {\n var type = node && node.type\n var replacement = {type: node.type}\n var replace\n var definition\n var allowed\n var result\n var key\n\n if (own.call(nodeSchema, type)) {\n definition = nodeSchema[type]\n\n if (typeof definition === 'function') {\n definition = definition(schema, node)\n }\n\n if (definition) {\n replace = true\n allowed = xtend(definition, nodeSchema['*'])\n\n for (key in allowed) {\n result = allowed[key](schema, node[key], node, stack)\n\n if (result === false) {\n replace = null\n // Set the non-safe value.\n replacement[key] = node[key]\n } else if (result != null) {\n replacement[key] = result\n }\n }\n }\n }\n\n if (replace) {\n return replacement\n }\n\n return replacement.children &&\n replacement.children.length &&\n schema.strip.indexOf(replacement.tagName) < 0\n ? replacement.children\n : null\n}\n\n// Sanitize `children`.\nfunction all(schema, children, node, stack) {\n var results = []\n var index = -1\n var value\n\n if (children) {\n stack.push(node.tagName)\n\n while (++index < children.length) {\n value = one(schema, children[index], stack)\n\n if (value) {\n if ('length' in value) {\n push.apply(results, value)\n } else {\n results.push(value)\n }\n }\n }\n\n stack.pop()\n }\n\n return results\n}\n\n// Sanitize `properties`.\nfunction handleProperties(schema, properties, node, stack) {\n var name = handleTagName(schema, node.tagName, node, stack)\n var reqs = schema.required || /* istanbul ignore next */ {}\n var props = properties || {}\n var allowed = xtend(\n toPropertyValueMap(schema.attributes['*']),\n toPropertyValueMap(\n own.call(schema.attributes, name) ? schema.attributes[name] : []\n )\n )\n var result = {}\n var definition\n var key\n var value\n\n for (key in props) {\n if (own.call(allowed, key)) {\n definition = allowed[key]\n } else if (data(key) && own.call(allowed, 'data*')) {\n definition = allowed['data*']\n } else {\n continue\n }\n\n value = props[key]\n value =\n value && typeof value === 'object' && 'length' in value\n ? handlePropertyValues(schema, value, key, definition)\n : handlePropertyValue(schema, value, key, definition)\n\n if (value != null) {\n result[key] = value\n }\n }\n\n if (own.call(reqs, name)) {\n for (key in reqs[name]) {\n if (!own.call(result, key)) {\n result[key] = reqs[name][key]\n }\n }\n }\n\n return result\n}\n\n// Sanitize a property value which is a list.\nfunction handlePropertyValues(schema, values, prop, definition) {\n var result = []\n var index = -1\n var value\n\n while (++index < values.length) {\n value = handlePropertyValue(schema, values[index], prop, definition)\n\n if (value != null) {\n result.push(value)\n }\n }\n\n return result\n}\n\n// Sanitize a property value.\nfunction handlePropertyValue(schema, value, prop, definition) {\n if (\n (typeof value === 'boolean' ||\n typeof value === 'number' ||\n typeof value === 'string') &&\n handleProtocol(schema, value, prop) &&\n (!definition.length || definition.indexOf(value) > -1)\n ) {\n return schema.clobber.indexOf(prop) < 0\n ? value\n : schema.clobberPrefix + value\n }\n}\n\n// Check whether `value` is a safe URL.\nfunction handleProtocol(schema, value, prop) {\n var url = String(value)\n var colon = url.indexOf(':')\n var questionMark = url.indexOf('?')\n var numberSign = url.indexOf('#')\n var slash = url.indexOf('/')\n var protocols = own.call(schema.protocols, prop)\n ? schema.protocols[prop].concat()\n : []\n var index = -1\n\n if (\n !protocols.length ||\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign)\n ) {\n return true\n }\n\n while (++index < protocols.length) {\n if (\n colon === protocols[index].length &&\n url.slice(0, protocols[index].length) === protocols[index]\n ) {\n return true\n }\n }\n\n return false\n}\n\n// Always return a valid HTML5 doctype.\nfunction handleDoctypeName() {\n return 'html'\n}\n\n// Sanitize `tagName`.\nfunction handleTagName(schema, tagName, node, stack) {\n var name = typeof tagName === 'string' && tagName\n var index = -1\n\n if (!name || name === '*' || schema.tagNames.indexOf(name) < 0) {\n return false\n }\n\n // Some nodes can break out of their context if they don’t have a certain\n // ancestor.\n if (own.call(schema.ancestors, name)) {\n while (++index < schema.ancestors[name].length) {\n if (stack.indexOf(schema.ancestors[name][index]) > -1) {\n return name\n }\n }\n\n return false\n }\n\n return name\n}\n\nfunction handleDoctype(schema) {\n return schema.allowDoctypes ? {name: handleDoctypeName} : null\n}\n\nfunction handleComment(schema) {\n return schema.allowComments ? {value: handleCommentValue} : null\n}\n\n// See <https://html.spec.whatwg.org/multipage/parsing.html#serialising-html-fragments>\nfunction handleCommentValue(schema, value) {\n var result = typeof value === 'string' ? value : ''\n var index = result.indexOf('-->')\n\n return index < 0 ? result : result.slice(0, index)\n}\n\n// Sanitize `value`.\nfunction handleValue(schema, value) {\n return typeof value === 'string' ? value : ''\n}\n\n// Create a map from a list of props or a list of properties and values.\nfunction toPropertyValueMap(values) {\n var result = {}\n var index = -1\n var value\n\n while (++index < values.length) {\n value = values[index]\n\n if (value && typeof value === 'object' && 'length' in value) {\n result[value[0]] = value.slice(1)\n } else {\n result[value] = []\n }\n }\n\n return result\n}\n\n// Allow `value`.\nfunction allow(schema, value) {\n return value\n}\n\n// Check if `prop` is a data property.\nfunction data(prop) {\n return prop.length > 4 && prop.slice(0, 4).toLowerCase() === 'data'\n}\n","module.exports = require('./lib/emoji');","/*jslint node: true*/\nvar toArray = require('lodash/toArray');\nvar emojiByName = require('./emoji.json');\n\n\"use strict\";\n\n/**\n * regex to parse emoji in a string - finds emoji, e.g. :coffee:\n */\nvar emojiNameRegex = /:([a-zA-Z0-9_\\-\\+]+):/g;\n\n/**\n * regex to trim whitespace\n * use instead of String.prototype.trim() for IE8 support\n */\nvar trimSpaceRegex = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\n/**\n * Removes colons on either side\n * of the string if present\n * @param {string} str\n * @return {string}\n */\nfunction stripColons (str) {\n var colonIndex = str.indexOf(':');\n if (colonIndex > -1) {\n // :emoji: (http://www.emoji-cheat-sheet.com/)\n if (colonIndex === str.length - 1) {\n str = str.substring(0, colonIndex);\n return stripColons(str);\n } else {\n str = str.substr(colonIndex + 1);\n return stripColons(str);\n }\n }\n\n return str;\n}\n\n/**\n * Adds colons to either side\n * of the string\n * @param {string} str\n * @return {string}\n */\nfunction wrapColons (str) {\n return (typeof str === 'string' && str.length > 0) ? ':' + str + ':' : str;\n}\n\n/**\n * Ensure that the word is wrapped in colons\n * by only adding them, if they are not there.\n * @param {string} str\n * @return {string}\n */\nfunction ensureColons (str) {\n return (typeof str === 'string' && str[0] !== ':') ? wrapColons(str) : str;\n}\n\n// Non spacing mark, some emoticons have them. It's the 'Variant Form',\n// which provides more information so that emoticons can be rendered as\n// more colorful graphics. FE0E is a unicode text version, where as FE0F\n// should be rendered as a graphical version. The code gracefully degrades.\nvar NON_SPACING_MARK = String.fromCharCode(65039); // 65039 - '️' - 0xFE0F;\nvar nonSpacingRegex = new RegExp(NON_SPACING_MARK, 'g')\n\n// Remove the non-spacing-mark from the code, never send a stripped version\n// to the client, as it kills graphical emoticons.\nfunction stripNSB (code) {\n return code.replace(nonSpacingRegex, '');\n};\n\n// Reversed hash table, where as emojiByName contains a { heart: '❤' }\n// dictionary emojiByCode contains { ❤: 'heart' }. The codes are normalized\n// to the text version.\nvar emojiByCode = Object.keys(emojiByName).reduce(function(h,k) {\n h[stripNSB(emojiByName[k])] = k;\n return h;\n}, {});\n\n/**\n * Emoji namespace\n */\nvar Emoji = {\n emoji: emojiByName,\n};\n\n/**\n * get emoji code from name. return emoji code back if code is passed in.\n * @param {string} emoji\n * @return {string}\n */\nEmoji._get = function _get (emoji) {\n if (emojiByCode[stripNSB(emoji)]) {\n return emoji;\n } else if (emojiByName.hasOwnProperty(emoji)) {\n return emojiByName[emoji];\n }\n\n return ensureColons(emoji);\n};\n\n/**\n * get emoji code from :emoji: string or name\n * @param {string} emoji\n * @return {string}\n */\nEmoji.get = function get (emoji) {\n emoji = stripColons(emoji);\n\n return Emoji._get(emoji);\n};\n\n/**\n * find the emoji by either code or name\n * @param {string} nameOrCode The emoji to find, either `coffee`, `:coffee:` or `☕`;\n * @return {object}\n */\nEmoji.find = function find (nameOrCode) {\n return Emoji.findByName(nameOrCode) || Emoji.findByCode(nameOrCode);\n};\n\n/**\n * find the emoji by name\n * @param {string} name The emoji to find either `coffee` or `:coffee:`;\n * @return {object}\n */\nEmoji.findByName = function findByName (name) {\n var stripped = stripColons(name);\n var emoji = emojiByName[stripped];\n\n return emoji ? ({ emoji: emoji, key: stripped }) : undefined;\n};\n\n/**\n * find the emoji by code (emoji)\n * @param {string} code The emoji to find; for example `☕` or `☔`\n * @return {object}\n */\nEmoji.findByCode = function findByCode (code) {\n var stripped = stripNSB(code);\n var name = emojiByCode[stripped];\n\n // lookup emoji to ensure the Variant Form is returned\n return name ? ({ emoji: emojiByName[name], key: name }) : undefined;\n};\n\n\n/**\n * Check if an emoji is known by this library\n * @param {string} nameOrCode The emoji to validate, either `coffee`, `:coffee:` or `☕`;\n * @return {object}\n */\nEmoji.hasEmoji = function hasEmoji (nameOrCode) {\n return Emoji.hasEmojiByName(nameOrCode) || Emoji.hasEmojiByCode(nameOrCode);\n};\n\n/**\n * Check if an emoji with given name is known by this library\n * @param {string} name The emoji to validate either `coffee` or `:coffee:`;\n * @return {object}\n */\nEmoji.hasEmojiByName = function hasEmojiByName (name) {\n var result = Emoji.findByName(name);\n return !!result && result.key === stripColons(name);\n};\n\n/**\n * Check if a given emoji is known by this library\n * @param {string} code The emoji to validate; for example `☕` or `☔`\n * @return {object}\n */\nEmoji.hasEmojiByCode = function hasEmojiByCode (code) {\n var result = Emoji.findByCode(code);\n return !!result && stripNSB(result.emoji) === stripNSB(code);\n};\n\n/**\n * get emoji name from code\n * @param {string} emoji\n * @param {boolean} includeColons should the result include the ::\n * @return {string}\n */\nEmoji.which = function which (emoji_code, includeColons) {\n var code = stripNSB(emoji_code);\n var word = emojiByCode[code];\n\n return includeColons ? wrapColons(word) : word;\n};\n\n/**\n * emojify a string (replace :emoji: with an emoji)\n * @param {string} str\n * @param {function} on_missing (gets emoji name without :: and returns a proper emoji if no emoji was found)\n * @param {function} format (wrap the returned emoji in a custom element)\n * @return {string}\n */\nEmoji.emojify = function emojify (str, on_missing, format) {\n if (!str) return '';\n\n return str.split(emojiNameRegex) // parse emoji via regex\n .map(function parseEmoji(s, i) {\n // every second element is an emoji, e.g. \"test :fast_forward:\" -> [ \"test \", \"fast_forward\" ]\n if (i % 2 === 0) return s;\n var emoji = Emoji._get(s);\n var isMissing = emoji.indexOf(':') > -1;\n\n if (isMissing && typeof on_missing === 'function') {\n return on_missing(s);\n }\n\n if (!isMissing && typeof format === 'function') {\n return format(emoji, s);\n }\n\n return emoji;\n })\n .join('') // convert back to string\n ;\n};\n\n/**\n * return a random emoji\n * @return {string}\n */\nEmoji.random = function random () {\n var emojiKeys = Object.keys(emojiByName);\n var randomIndex = Math.floor(Math.random() * emojiKeys.length);\n var key = emojiKeys[randomIndex];\n var emoji = Emoji._get(key);\n return { key: key, emoji: emoji };\n}\n\n/**\n * return an collection of potential emoji matches\n * @param {string} str\n * @return {Array.<Object>}\n */\nEmoji.search = function search (str) {\n var emojiKeys = Object.keys(emojiByName);\n var matcher = stripColons(str)\n var matchingKeys = emojiKeys.filter(function(key) {\n return key.toString().indexOf(matcher) === 0;\n });\n return matchingKeys.map(function(key) {\n return {\n key: key,\n emoji: Emoji._get(key),\n };\n });\n}\n\n/**\n * unemojify a string (replace emoji with :emoji:)\n * @param {string} str\n * @return {string}\n */\nEmoji.unemojify = function unemojify (str) {\n if (!str) return '';\n var words = toArray(str);\n\n return words.map(function(word) {\n return Emoji.which(word, true) || word;\n }).join('');\n};\n\n/**\n * replace emojis with replacement value\n * @param {string} str\n * @param {function|string} the string or callback function to replace the emoji with\n * @param {boolean} should trailing whitespaces be cleaned? Defaults false\n * @return {string}\n */\nEmoji.replace = function replace (str, replacement, cleanSpaces) {\n if (!str) return '';\n\n var replace = typeof replacement === 'function' ? replacement : function() { return replacement; };\n var words = toArray(str);\n\n var replaced = words.map(function(word, idx) {\n var emoji = Emoji.findByCode(word);\n\n if (emoji && cleanSpaces && words[idx + 1] === ' ') {\n words[idx + 1] = '';\n }\n\n return emoji ? replace(emoji) : word;\n }).join('');\n\n return cleanSpaces ? replaced.replace(trimSpaceRegex, '') : replaced;\n};\n\n\n/**\n * remove all emojis from a string\n * @param {string} str\n * @return {string}\n */\nEmoji.strip = function strip (str) {\n return Emoji.replace(str, '', true);\n};\n\nmodule.exports = Emoji;\n","var Symbol = require('./_Symbol'),\n copyArray = require('./_copyArray'),\n getTag = require('./_getTag'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n iteratorToArray = require('./_iteratorToArray'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray'),\n stringToArray = require('./_stringToArray'),\n values = require('./values');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Built-in value references. */\nvar symIterator = Symbol ? Symbol.iterator : undefined;\n\n/**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\nfunction toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n}\n\nmodule.exports = toArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n}\n\nmodule.exports = iteratorToArray;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","'use strict'\n\nvar syntax = require('micromark-extension-gfm')\nvar fromMarkdown = require('mdast-util-gfm/from-markdown')\nvar toMarkdown = require('mdast-util-gfm/to-markdown')\n\nvar warningIssued\n\nmodule.exports = gfm\n\nfunction gfm(options) {\n var data = this.data()\n\n /* istanbul ignore next - old remark. */\n if (\n !warningIssued &&\n ((this.Parser &&\n this.Parser.prototype &&\n this.Parser.prototype.blockTokenizers) ||\n (this.Compiler &&\n this.Compiler.prototype &&\n this.Compiler.prototype.visitors))\n ) {\n warningIssued = true\n console.warn(\n '[remark-gfm] Warning: please upgrade to remark 13 to use this plugin'\n )\n }\n\n add('micromarkExtensions', syntax(options))\n add('fromMarkdownExtensions', fromMarkdown)\n add('toMarkdownExtensions', toMarkdown(options))\n\n function add(field, value) {\n /* istanbul ignore if - other extensions. */\n if (data[field]) data[field].push(value)\n else data[field] = [value]\n }\n}\n","module.exports = require('./syntax')\n","var combine = require('micromark/dist/util/combine-extensions')\nvar autolink = require('micromark-extension-gfm-autolink-literal')\nvar strikethrough = require('micromark-extension-gfm-strikethrough')\nvar table = require('micromark-extension-gfm-table')\nvar tasklist = require('micromark-extension-gfm-task-list-item')\n\nmodule.exports = create\n\nfunction create(options) {\n return combine([autolink, strikethrough(options), table, tasklist])\n}\n","module.exports = require('./syntax')\n","var asciiAlpha = require('micromark/dist/character/ascii-alpha')\nvar asciiAlphanumeric = require('micromark/dist/character/ascii-alphanumeric')\nvar asciiControl = require('micromark/dist/character/ascii-control')\nvar markdownLineEnding = require('micromark/dist/character/markdown-line-ending')\nvar unicodePunctuation = require('micromark/dist/character/unicode-punctuation')\nvar unicodeWhitespace = require('micromark/dist/character/unicode-whitespace')\n\nvar www = {tokenize: tokenizeWww, partial: true}\nvar domain = {tokenize: tokenizeDomain, partial: true}\nvar path = {tokenize: tokenizePath, partial: true}\nvar punctuation = {tokenize: tokenizePunctuation, partial: true}\nvar namedCharacterReference = {\n tokenize: tokenizeNamedCharacterReference,\n partial: true\n}\n\nvar wwwAutolink = {tokenize: tokenizeWwwAutolink, previous: previousWww}\nvar httpAutolink = {tokenize: tokenizeHttpAutolink, previous: previousHttp}\nvar emailAutolink = {tokenize: tokenizeEmailAutolink, previous: previousEmail}\n\nvar text = {}\n\n// Export hooked constructs.\nexports.text = text\n\n// `0`\nvar code = 48\n\n// While the code is smaller than `{`.\nwhile (code < 123) {\n text[code] = emailAutolink\n code++\n // Jump from `:` -> `A`\n if (code === 58) code = 65\n // Jump from `[` -> `a`\n else if (code === 91) code = 97\n}\n\n// `+`\ntext[43] = emailAutolink\n// `-`\ntext[45] = emailAutolink\n// `.`\ntext[46] = emailAutolink\n// `_`\ntext[95] = emailAutolink\n// `h`.\ntext[72] = [emailAutolink, httpAutolink]\ntext[104] = [emailAutolink, httpAutolink]\n// `w`.\ntext[87] = [emailAutolink, wwwAutolink]\ntext[119] = [emailAutolink, wwwAutolink]\n\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n var self = this\n var hasDot\n\n return start\n\n function start(code) {\n /* istanbul ignore next - hooks. */\n if (\n !gfmAtext(code) ||\n !previousEmail(self.previous) ||\n previous(self.events)\n ) {\n return nok(code)\n }\n\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkEmail')\n return atext(code)\n }\n\n function atext(code) {\n if (gfmAtext(code)) {\n effects.consume(code)\n return atext\n }\n\n // `@`\n if (code === 64) {\n effects.consume(code)\n return label\n }\n\n return nok(code)\n }\n\n function label(code) {\n // `.`\n if (code === 46) {\n return effects.check(punctuation, done, dotContinuation)(code)\n }\n\n if (\n // `-`\n code === 45 ||\n // `_`\n code === 95\n ) {\n return effects.check(punctuation, nok, dashOrUnderscoreContinuation)(code)\n }\n\n if (asciiAlphanumeric(code)) {\n effects.consume(code)\n return label\n }\n\n return done(code)\n }\n\n function dotContinuation(code) {\n effects.consume(code)\n hasDot = true\n return label\n }\n\n function dashOrUnderscoreContinuation(code) {\n effects.consume(code)\n return afterDashOrUnderscore\n }\n\n function afterDashOrUnderscore(code) {\n // `.`\n if (code === 46) {\n return effects.check(punctuation, nok, dotContinuation)(code)\n }\n\n return label(code)\n }\n\n function done(code) {\n if (hasDot) {\n effects.exit('literalAutolinkEmail')\n effects.exit('literalAutolink')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n var self = this\n\n return start\n\n function start(code) {\n /* istanbul ignore next - hooks. */\n if (\n (code !== 87 && code - 32 !== 87) ||\n !previousWww(self.previous) ||\n previous(self.events)\n ) {\n return nok(code)\n }\n\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkWww')\n // 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’s not how it’s implemented by them).\n return effects.check(\n www,\n effects.attempt(domain, effects.attempt(path, done), nok),\n nok\n )(code)\n }\n\n function done(code) {\n effects.exit('literalAutolinkWww')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\nfunction tokenizeHttpAutolink(effects, ok, nok) {\n var self = this\n\n return start\n\n function start(code) {\n /* istanbul ignore next - hooks. */\n if (\n (code !== 72 && code - 32 !== 72) ||\n !previousHttp(self.previous) ||\n previous(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\n function t1(code) {\n // `t`\n if (code === 84 || code - 32 === 84) {\n effects.consume(code)\n return t2\n }\n\n return nok(code)\n }\n\n function t2(code) {\n // `t`\n if (code === 84 || code - 32 === 84) {\n effects.consume(code)\n return p\n }\n\n return nok(code)\n }\n\n function p(code) {\n // `p`\n if (code === 80 || code - 32 === 80) {\n effects.consume(code)\n return s\n }\n\n return nok(code)\n }\n\n function s(code) {\n // `s`\n if (code === 83 || code - 32 === 83) {\n effects.consume(code)\n return colon\n }\n\n return colon(code)\n }\n\n function colon(code) {\n // `:`\n if (code === 58) {\n effects.consume(code)\n return slash1\n }\n\n return nok(code)\n }\n\n function slash1(code) {\n // `/`\n if (code === 47) {\n effects.consume(code)\n return slash2\n }\n\n return nok(code)\n }\n\n function slash2(code) {\n // `/`\n if (code === 47) {\n effects.consume(code)\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n return asciiControl(code) ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)\n ? nok(code)\n : effects.attempt(domain, effects.attempt(path, done), nok)(code)\n }\n\n function done(code) {\n effects.exit('literalAutolinkHttp')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\nfunction tokenizeWww(effects, ok, nok) {\n return start\n\n function start(code) {\n // Assume a `w`.\n effects.consume(code)\n return w2\n }\n\n function w2(code) {\n // `w`\n if (code === 87 || code - 32 === 87) {\n effects.consume(code)\n return w3\n }\n\n return nok(code)\n }\n\n function w3(code) {\n // `w`\n if (code === 87 || code - 32 === 87) {\n effects.consume(code)\n return dot\n }\n\n return nok(code)\n }\n\n function dot(code) {\n // `.`\n if (code === 46) {\n effects.consume(code)\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? nok(code) : ok(code)\n }\n}\n\nfunction tokenizeDomain(effects, ok, nok) {\n var hasUnderscoreInLastSegment\n var hasUnderscoreInLastLastSegment\n\n return domain\n\n function domain(code) {\n // `&`\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 }\n\n // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n // occur, which sounds like ASCII only, but they also support `www.點看.com`,\n // so that’s Unicode.\n // Instead of some new production for Unicode alphanumerics, markdown\n // already has that for Unicode punctuation and whitespace, so use those.\n if (\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\n function punctuationContinuation(code) {\n // `.`\n if (code === 46) {\n hasUnderscoreInLastLastSegment = hasUnderscoreInLastSegment\n hasUnderscoreInLastSegment = undefined\n effects.consume(code)\n return domain\n }\n\n // `_`\n if (code === 95) hasUnderscoreInLastSegment = true\n\n effects.consume(code)\n return domain\n }\n\n function done(code) {\n if (!hasUnderscoreInLastLastSegment && !hasUnderscoreInLastSegment) {\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizePath(effects, ok) {\n var balance = 0\n\n return inPath\n\n function inPath(code) {\n // `&`\n if (code === 38) {\n return effects.check(\n namedCharacterReference,\n ok,\n continuedPunctuation\n )(code)\n }\n\n // `(`\n if (code === 40) {\n balance++\n }\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\n function continuedPunctuation(code) {\n effects.consume(code)\n return inPath\n }\n\n function parenAtPathEnd(code) {\n balance--\n return balance < 0 ? ok(code) : continuedPunctuation(code)\n }\n}\n\nfunction tokenizeNamedCharacterReference(effects, ok, nok) {\n return start\n\n function start(code) {\n // Assume an ampersand.\n effects.consume(code)\n return inside\n }\n\n function inside(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return inside\n }\n\n // `;`\n if (code === 59) {\n effects.consume(code)\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n // If the named character reference is followed by the end of the path, it’s\n // not continued punctuation.\n return pathEnd(code) ? ok(code) : nok(code)\n }\n}\n\nfunction tokenizePunctuation(effects, ok, nok) {\n return start\n\n function start(code) {\n // Always a valid trailing punctuation marker.\n effects.consume(code)\n return after\n }\n\n function after(code) {\n // Check the next.\n if (trailingPunctuation(code)) {\n effects.consume(code)\n return after\n }\n\n // If the punctuation marker is followed by the end of the path, it’s not\n // continued punctuation.\n return pathEnd(code) ? ok(code) : nok(code)\n }\n}\n\nfunction trailingPunctuation(code) {\n return (\n // `!`\n code === 33 ||\n // `\"`\n code === 34 ||\n // `'`\n code === 39 ||\n // `)`\n code === 41 ||\n // `*`\n code === 42 ||\n // `,`\n code === 44 ||\n // `.`\n code === 46 ||\n // `:`\n code === 58 ||\n // `;`\n code === 59 ||\n // `<`\n code === 60 ||\n // `?`\n code === 63 ||\n // `_`.\n code === 95 ||\n // `~`\n code === 126\n )\n}\n\nfunction pathEnd(code) {\n return (\n // EOF.\n code === null ||\n // CR, LF, CRLF, HT, VS.\n code < 0 ||\n // Space.\n code === 32 ||\n // `<`\n code === 60\n )\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\nfunction previousWww(code) {\n return (\n code === null ||\n code < 0 ||\n code === 32 /* ` ` */ ||\n code === 40 /* `(` */ ||\n code === 42 /* `*` */ ||\n code === 95 /* `_` */ ||\n code === 126 /* `~` */\n )\n}\n\nfunction previousHttp(code) {\n return code === null || !asciiAlpha(code)\n}\n\nfunction previousEmail(code) {\n return code !== 47 /* `/` */ && previousHttp(code)\n}\n\nfunction previous(events) {\n var index = events.length\n\n while (index--) {\n if (\n (events[index][1].type === 'labelLink' ||\n events[index][1].type === 'labelImage') &&\n !events[index][1]._balanced\n ) {\n return true\n }\n }\n}\n","module.exports = create\n\nvar classifyCharacter = require('micromark/dist/util/classify-character')\nvar chunkedSplice = require('micromark/dist/util/chunked-splice')\nvar resolveAll = require('micromark/dist/util/resolve-all')\nvar shallow = require('micromark/dist/util/shallow')\n\nfunction create(options) {\n var settings = options || {}\n var single = settings.singleTilde\n var tokenizer = {\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n }\n\n if (single === null || single === undefined) {\n single = true\n }\n\n return {text: {126: tokenizer}, insideSpan: {null: tokenizer}}\n\n // Take events and resolve strikethrough.\n function resolveAllStrikethrough(events, context) {\n var index = -1\n var strikethrough\n var text\n var open\n var nextEvents\n\n // Walk through all events.\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 open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'strikethroughSequenceTemporary' &&\n events[open][1]._open &&\n // 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\n strikethrough = {\n type: 'strikethrough',\n start: shallow(events[open][1].start),\n end: shallow(events[index][1].end)\n }\n\n text = {\n type: 'strikethroughText',\n start: shallow(events[open][1].end),\n end: shallow(events[index][1].start)\n }\n\n // Opening.\n nextEvents = [\n ['enter', strikethrough, context],\n ['enter', events[open][1], context],\n ['exit', events[open][1], context],\n ['enter', text, context]\n ]\n\n // Between.\n chunkedSplice(\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 )\n\n // Closing.\n chunkedSplice(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\n chunkedSplice(events, open - 1, index - open + 3, nextEvents)\n\n index = open + nextEvents.length - 2\n break\n }\n }\n }\n }\n\n return removeRemainingSequences(events)\n }\n\n function removeRemainingSequences(events) {\n var index = -1\n var length = events.length\n\n while (++index < length) {\n if (events[index][1].type === 'strikethroughSequenceTemporary') {\n events[index][1].type = 'data'\n }\n }\n\n return events\n }\n\n function tokenizeStrikethrough(effects, ok, nok) {\n var previous = this.previous\n var events = this.events\n var size = 0\n\n return start\n\n function start(code) {\n if (\n code !== 126 ||\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\n function more(code) {\n var before = classifyCharacter(previous)\n var token\n var after\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 token = effects.exit('strikethroughSequenceTemporary')\n after = classifyCharacter(code)\n token._open = !after || (after === 2 && before)\n token._close = !before || (before === 2 && after)\n return ok(code)\n }\n }\n}\n","module.exports = require('./syntax')\n","exports.flow = {\n null: {tokenize: tokenizeTable, resolve: resolveTable, interruptible: true}\n}\n\nvar createSpace = require('micromark/dist/tokenize/factory-space')\n\nvar setextUnderlineMini = {tokenize: tokenizeSetextUnderlineMini, partial: true}\nvar nextPrefixedOrBlank = {tokenize: tokenizeNextPrefixedOrBlank, partial: true}\n\nfunction resolveTable(events, context) {\n var length = events.length\n var index = -1\n var token\n var inHead\n var inDelimiterRow\n var inRow\n var cell\n var content\n var text\n var contentStart\n var contentEnd\n var cellStart\n\n while (++index < length) {\n 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 content = {\n type: 'tableContent',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: content.start,\n end: content.end,\n contentType: 'text'\n }\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 length = events.length\n contentStart = undefined\n contentEnd = undefined\n }\n }\n\n if (\n events[index][0] === 'exit' &&\n cellStart &&\n cellStart + 1 < index &&\n (token.type === 'tableCellDivider' ||\n (token.type === 'tableRow' &&\n (cellStart + 3 < index ||\n events[cellStart][1].type !== 'whitespace')))\n ) {\n 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 length = events.length\n cellStart = index + 1\n }\n\n if (token.type === 'tableRow') {\n inRow = events[index][0] === 'enter'\n\n if (inRow) {\n cellStart = index + 1\n }\n }\n\n if (token.type === 'tableDelimiterRow') {\n inDelimiterRow = events[index][0] === 'enter'\n\n if (inDelimiterRow) {\n cellStart = index + 1\n }\n }\n\n if (token.type === 'tableHead') {\n inHead = events[index][0] === 'enter'\n }\n }\n\n return events\n}\n\nfunction tokenizeTable(effects, ok, nok) {\n var align = []\n var tableHeaderCount = 0\n var seenDelimiter\n var hasDash\n\n return start\n\n function start(code) {\n /* istanbul ignore if - used to be passed in beta micromark versions. */\n if (code === null || code === -5 || code === -4 || code === -3) {\n return nok(code)\n }\n\n effects.enter('table')._align = align\n effects.enter('tableHead')\n effects.enter('tableRow')\n\n // If we start with a pipe, we open a cell marker.\n if (code === 124) {\n return cellDividerHead(code)\n }\n\n tableHeaderCount++\n effects.enter('temporaryTableCellContent')\n // Can’t be space or eols at the start of a construct, so we’re in a cell.\n return inCellContentHead(code)\n }\n\n function cellDividerHead(code) {\n // Always a pipe.\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n seenDelimiter = true\n return cellBreakHead\n }\n\n function cellBreakHead(code) {\n // EOF, CR, LF, CRLF.\n if (code === null || code === -5 || code === -4 || code === -3) {\n return atRowEndHead(code)\n }\n\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceHead\n }\n\n if (seenDelimiter) {\n seenDelimiter = undefined\n tableHeaderCount++\n }\n\n // `|`\n if (code === 124) {\n return cellDividerHead(code)\n }\n\n // Anything else is cell content.\n effects.enter('temporaryTableCellContent')\n return inCellContentHead(code)\n }\n\n function inWhitespaceHead(code) {\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.consume(code)\n return inWhitespaceHead\n }\n\n effects.exit('whitespace')\n return cellBreakHead(code)\n }\n\n function inCellContentHead(code) {\n // EOF, whitespace, pipe\n if (code === null || code < 0 || code === 32 || code === 124) {\n effects.exit('temporaryTableCellContent')\n return cellBreakHead(code)\n }\n\n effects.consume(code)\n // `\\`\n return code === 92 ? inCellContentEscapeHead : inCellContentHead\n }\n\n function inCellContentEscapeHead(code) {\n // `\\` or `|`\n if (code === 92 || code === 124) {\n effects.consume(code)\n return inCellContentHead\n }\n\n // Anything else.\n return inCellContentHead(code)\n }\n\n function atRowEndHead(code) {\n if (code === null) {\n return nok(code)\n }\n\n effects.exit('tableRow')\n effects.exit('tableHead')\n\n // Always a line ending.\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n\n // If a setext heading, exit.\n return effects.check(\n setextUnderlineMini,\n nok,\n // Support an indent before the delimiter row.\n createSpace(effects, rowStartDelimiter, 'linePrefix', 4)\n )\n }\n\n function rowStartDelimiter(code) {\n // If there’s another space, or we’re at the EOL/EOF, exit.\n if (code === null || code < 0 || code === 32) {\n return nok(code)\n }\n\n effects.enter('tableDelimiterRow')\n return atDelimiterRowBreak(code)\n }\n\n function atDelimiterRowBreak(code) {\n // EOF, CR, LF, CRLF.\n if (code === null || code === -5 || code === -4 || code === -3) {\n return rowEndDelimiter(code)\n }\n\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceDelimiter\n }\n\n // `-`\n if (code === 45) {\n effects.enter('tableDelimiterFiller')\n effects.consume(code)\n hasDash = true\n align.push(null)\n return inFillerDelimiter\n }\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 }\n\n // If we start with a pipe, we open a cell marker.\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\n function inWhitespaceDelimiter(code) {\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.consume(code)\n return inWhitespaceDelimiter\n }\n\n effects.exit('whitespace')\n return atDelimiterRowBreak(code)\n }\n\n function inFillerDelimiter(code) {\n // `-`\n if (code === 45) {\n effects.consume(code)\n return inFillerDelimiter\n }\n\n effects.exit('tableDelimiterFiller')\n\n // `:`\n if (code === 58) {\n effects.enter('tableDelimiterAlignment')\n effects.consume(code)\n effects.exit('tableDelimiterAlignment')\n\n align[align.length - 1] =\n align[align.length - 1] === 'left' ? 'center' : 'right'\n\n return afterRightAlignment\n }\n\n return atDelimiterRowBreak(code)\n }\n\n function afterLeftAlignment(code) {\n // `-`\n if (code === 45) {\n effects.enter('tableDelimiterFiller')\n effects.consume(code)\n hasDash = true\n return inFillerDelimiter\n }\n\n // Anything else is not ok.\n return nok(code)\n }\n\n function afterRightAlignment(code) {\n // EOF, CR, LF, CRLF.\n if (code === null || code === -5 || code === -4 || code === -3) {\n return rowEndDelimiter(code)\n }\n\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceDelimiter\n }\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\n function rowEndDelimiter(code) {\n effects.exit('tableDelimiterRow')\n\n // Exit if there was no dash at all, or if the header cell count is not the\n // delimiter cell count.\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(nextPrefixedOrBlank, tableClose, tableContinue)(code)\n }\n\n function tableClose(code) {\n effects.exit('table')\n return ok(code)\n }\n\n function tableContinue(code) {\n // Always a line ending.\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n // We checked that it’s not a prefixed or blank line, so we’re certain a\n // body is coming, though it may be indented.\n return createSpace(effects, bodyStart, 'linePrefix', 4)\n }\n\n function bodyStart(code) {\n effects.enter('tableBody')\n return rowStartBody(code)\n }\n\n function rowStartBody(code) {\n effects.enter('tableRow')\n\n // If we start with a pipe, we open a cell marker.\n if (code === 124) {\n return cellDividerBody(code)\n }\n\n effects.enter('temporaryTableCellContent')\n // Can’t be space or eols at the start of a construct, so we’re in a cell.\n return inCellContentBody(code)\n }\n\n function cellDividerBody(code) {\n // Always a pipe.\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return cellBreakBody\n }\n\n function cellBreakBody(code) {\n // EOF, CR, LF, CRLF.\n if (code === null || code === -5 || code === -4 || code === -3) {\n return atRowEndBody(code)\n }\n\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceBody\n }\n\n // `|`\n if (code === 124) {\n return cellDividerBody(code)\n }\n\n // Anything else is cell content.\n effects.enter('temporaryTableCellContent')\n return inCellContentBody(code)\n }\n\n function inWhitespaceBody(code) {\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.consume(code)\n return inWhitespaceBody\n }\n\n effects.exit('whitespace')\n return cellBreakBody(code)\n }\n\n function inCellContentBody(code) {\n // EOF, whitespace, pipe\n if (code === null || code < 0 || code === 32 || code === 124) {\n effects.exit('temporaryTableCellContent')\n return cellBreakBody(code)\n }\n\n effects.consume(code)\n // `\\`\n return code === 92 ? inCellContentEscapeBody : inCellContentBody\n }\n\n function inCellContentEscapeBody(code) {\n // `\\` or `|`\n if (code === 92 || code === 124) {\n effects.consume(code)\n return inCellContentBody\n }\n\n // Anything else.\n return inCellContentBody(code)\n }\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 tableBodyContinue\n )(code)\n }\n\n function tableBodyClose(code) {\n effects.exit('tableBody')\n return tableClose(code)\n }\n\n function tableBodyContinue(code) {\n // Always a line ending.\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n // Support an optional prefix, then start a body row.\n return createSpace(effects, rowStartBody, 'linePrefix', 4)\n }\n}\n\n// Based on micromark, but that won’t work as we’re in a table, and that expects\n// content.\n// <https://github.com/micromark/micromark/blob/main/lib/tokenize/setext-underline.js>\nfunction tokenizeSetextUnderlineMini(effects, ok, nok) {\n return start\n\n function start(code) {\n // `-`\n if (code !== 45) {\n return nok(code)\n }\n\n effects.enter('setextUnderline')\n return sequence(code)\n }\n\n function sequence(code) {\n if (code === 45) {\n effects.consume(code)\n return sequence\n }\n\n return whitespace(code)\n }\n\n function whitespace(code) {\n if (code === -2 || code === -1 || code === 32) {\n effects.consume(code)\n return whitespace\n }\n\n if (code === null || code === -5 || code === -4 || code === -3) {\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizeNextPrefixedOrBlank(effects, ok, nok) {\n var size = 0\n\n return start\n\n function start(code) {\n // This is a check, so we don’t care about tokens, but we open a bogus one\n // so we’re valid.\n effects.enter('check')\n // EOL.\n effects.consume(code)\n return whitespace\n }\n\n function whitespace(code) {\n // VS or SP.\n if (code === -1 || code === 32) {\n effects.consume(code)\n size++\n return size === 4 ? ok : whitespace\n }\n\n // EOF or whitespace\n if (code === null || code < 0) {\n return ok(code)\n }\n\n // Anything else.\n return nok(code)\n }\n}\n","module.exports = require('./syntax')\n","var markdownLineEndingOrSpace = require('micromark/dist/character/markdown-line-ending-or-space')\nvar spaceFactory = require('micromark/dist/tokenize/factory-space')\nvar prefixSize = require('micromark/dist/util/prefix-size')\n\nvar tasklistCheck = {tokenize: tokenizeTasklistCheck}\n\nexports.text = {91: tasklistCheck}\n\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n var self = this\n\n return open\n\n function open(code) {\n if (\n // Exit if not `[`.\n code !== 91 ||\n // Exit if there’s stuff before.\n self.previous !== null ||\n // 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\n function inside(code) {\n // Tab or space.\n if (code === -2 || code === 32) {\n effects.enter('taskListCheckValueUnchecked')\n effects.consume(code)\n effects.exit('taskListCheckValueUnchecked')\n return close\n }\n\n // Upper- and lower `x`.\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\n function close(code) {\n // `]`\n if (code === 93) {\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n effects.exit('taskListCheck')\n return effects.check({tokenize: spaceThenNonSpace}, ok, nok)\n }\n\n return nok(code)\n }\n}\n\nfunction spaceThenNonSpace(effects, ok, nok) {\n var self = this\n\n return spaceFactory(effects, after, 'whitespace')\n\n function after(code) {\n return prefixSize(self.events, 'whitespace') &&\n code !== null &&\n !markdownLineEndingOrSpace(code)\n ? ok(code)\n : nok(code)\n }\n}\n","var autolinkLiteral = require('mdast-util-gfm-autolink-literal/from-markdown')\nvar strikethrough = require('mdast-util-gfm-strikethrough/from-markdown')\nvar table = require('mdast-util-gfm-table/from-markdown')\nvar taskListItem = require('mdast-util-gfm-task-list-item/from-markdown')\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = configure([\n autolinkLiteral,\n strikethrough,\n table,\n taskListItem\n])\n\nfunction configure(extensions) {\n var config = {transforms: [], canContainEols: []}\n var length = extensions.length\n var index = -1\n\n while (++index < length) {\n extension(config, extensions[index])\n }\n\n return config\n}\n\nfunction extension(config, extension) {\n var key\n var left\n var right\n\n for (key in extension) {\n left = own.call(config, key) ? config[key] : (config[key] = {})\n right = extension[key]\n\n if (key === 'canContainEols' || key === 'transforms') {\n config[key] = [].concat(left, right)\n } else {\n Object.assign(left, right)\n }\n }\n}\n","var ccount = require('ccount')\nvar findAndReplace = require('mdast-util-find-and-replace')\nvar unicodePunctuation = require('micromark/dist/character/unicode-punctuation')\nvar unicodeWhitespace = require('micromark/dist/character/unicode-whitespace')\n\nexports.transforms = [transformGfmAutolinkLiterals]\nexports.enter = {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n}\nexports.exit = {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n}\n\nfunction enterLiteralAutolink(token) {\n this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token)\n}\n\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token)\n}\n\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token)\n this.stack[this.stack.length - 1].url = 'http://' + this.sliceSerialize(token)\n}\n\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token)\n}\n\nfunction exitLiteralAutolink(token) {\n this.exit(token)\n}\n\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/i, findUrl],\n [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/, findEmail]\n ],\n {ignore: ['link', 'linkReference']}\n )\n}\n\nfunction findUrl($0, protocol, domain, path, match) {\n var prefix = ''\n var parts\n var result\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 parts = splitUrl(domain + path)\n\n if (!parts[0]) return false\n\n 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 result = [result, {type: 'text', value: parts[1]}]\n }\n\n return result\n}\n\nfunction findEmail($0, atext, label, match) {\n // Not an expected previous character.\n if (!previous(match, true) || /[_-]$/.test(label)) {\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\nfunction isCorrectDomain(domain) {\n var 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\nfunction splitUrl(url) {\n var trail = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n var closingParenIndex\n var openingParens\n var closingParens\n\n if (trail) {\n url = url.slice(0, trail.index)\n trail = trail[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\nfunction previous(match, email) {\n var code = match.input.charCodeAt(match.index - 1)\n return (\n (code !== code || unicodeWhitespace(code) || unicodePunctuation(code)) &&\n (!email || code !== 47)\n )\n}\n","'use strict'\n\nmodule.exports = ccount\n\nfunction ccount(source, character) {\n var value = String(source)\n var count = 0\n var index\n\n if (typeof character !== 'string') {\n throw new Error('Expected character')\n }\n\n index = value.indexOf(character)\n\n while (index !== -1) {\n count++\n index = value.indexOf(character, index + character.length)\n }\n\n return count\n}\n","'use strict'\n\nmodule.exports = findAndReplace\n\nvar visit = require('unist-util-visit-parents')\nvar convert = require('unist-util-is/convert')\nvar escape = require('escape-string-regexp')\n\nvar splice = [].splice\n\nfunction findAndReplace(tree, find, replace, options) {\n var settings\n var schema\n\n if (typeof find === 'string' || (find && typeof find.exec === 'function')) {\n schema = [[find, replace]]\n } else {\n schema = find\n options = replace\n }\n\n settings = options || {}\n\n search(tree, settings, handlerFactory(toPairs(schema)))\n\n return tree\n\n function handlerFactory(pairs) {\n var pair = pairs[0]\n\n return handler\n\n function handler(node, parent) {\n var find = pair[0]\n var replace = pair[1]\n var nodes = []\n var start = 0\n var index = parent.children.indexOf(node)\n var position\n var match\n var subhandler\n var value\n\n find.lastIndex = 0\n\n match = find.exec(node.value)\n\n while (match) {\n position = match.index\n value = replace.apply(\n null,\n [].concat(match, {index: match.index, input: match.input})\n )\n\n if (value !== false) {\n if (start !== position) {\n nodes.push({type: 'text', value: node.value.slice(start, position)})\n }\n\n if (typeof value === 'string' && value.length > 0) {\n value = {type: 'text', value: value}\n }\n\n if (value) {\n nodes = [].concat(nodes, value)\n }\n\n start = position + match[0].length\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (position === undefined) {\n nodes = [node]\n index--\n } else {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n nodes.unshift(index, 1)\n splice.apply(parent.children, nodes)\n }\n\n if (pairs.length > 1) {\n subhandler = handlerFactory(pairs.slice(1))\n position = -1\n\n while (++position < nodes.length) {\n node = nodes[position]\n\n if (node.type === 'text') {\n subhandler(node, parent)\n } else {\n search(node, settings, subhandler)\n }\n }\n }\n\n return index + nodes.length + 1\n }\n }\n}\n\nfunction search(tree, settings, handler) {\n var ignored = convert(settings.ignore || [])\n var result = []\n\n visit(tree, 'text', visitor)\n\n return result\n\n function visitor(node, parents) {\n var index = -1\n var parent\n var grandparent\n\n while (++index < parents.length) {\n parent = parents[index]\n\n if (\n ignored(\n parent,\n grandparent ? grandparent.children.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n return handler(node, grandparent)\n }\n}\n\nfunction toPairs(schema) {\n var result = []\n var key\n var index\n\n if (typeof schema !== 'object') {\n throw new Error('Expected array or object as schema')\n }\n\n if ('length' in schema) {\n 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 for (key in schema) {\n result.push([toExpression(key), toFunction(schema[key])])\n }\n }\n\n return result\n}\n\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\nfunction toFunction(replace) {\n return typeof replace === 'function' ? replace : returner\n\n function returner() {\n return replace\n }\n}\n","'use strict';\n\nmodule.exports = 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’s always valid, and a \\unnnn escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n};\n","exports.canContainEols = ['delete']\nexports.enter = {strikethrough: enterStrikethrough}\nexports.exit = {strikethrough: exitStrikethrough}\n\nfunction enterStrikethrough(token) {\n this.enter({type: 'delete', children: []}, token)\n}\n\nfunction exitStrikethrough(token) {\n this.exit(token)\n}\n","exports.enter = {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n}\nexports.exit = {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n}\n\nfunction enterTable(token) {\n this.enter({type: 'table', align: token._align, children: []}, token)\n this.setData('inTable', true)\n}\n\nfunction exitTable(token) {\n this.exit(token)\n this.setData('inTable')\n}\n\nfunction enterRow(token) {\n this.enter({type: 'tableRow', children: []}, token)\n}\n\nfunction exit(token) {\n this.exit(token)\n}\n\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.\nfunction exitCodeText(token) {\n var value = this.resume()\n\n if (this.getData('inTable')) {\n value = value.replace(/\\\\([\\\\|])/g, replace)\n }\n\n this.stack[this.stack.length - 1].value = value\n this.exit(token)\n}\n\nfunction replace($0, $1) {\n // Pipes work, backslashes don’t (but can’t escape pipes).\n return $1 === '|' ? $1 : $0\n}\n","exports.exit = {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n}\n\nfunction exitCheck(token) {\n // We’re always in a paragraph, in a list item.\n this.stack[this.stack.length - 2].checked =\n token.type === 'taskListCheckValueChecked'\n}\n\nfunction exitParagraphWithTaskListItem(token) {\n var parent = this.stack[this.stack.length - 2]\n var node = this.stack[this.stack.length - 1]\n var siblings = parent.children\n var head = node.children[0]\n var index = -1\n var 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 if (siblings[index].type === 'paragraph') {\n firstParaghraph = siblings[index]\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 {\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","var autolinkLiteral = require('mdast-util-gfm-autolink-literal/to-markdown')\nvar strikethrough = require('mdast-util-gfm-strikethrough/to-markdown')\nvar table = require('mdast-util-gfm-table/to-markdown')\nvar taskListItem = require('mdast-util-gfm-task-list-item/to-markdown')\nvar configure = require('mdast-util-to-markdown/lib/configure')\n\nmodule.exports = toMarkdown\n\nfunction toMarkdown(options) {\n var config = configure(\n {handlers: {}, join: [], unsafe: [], options: {}},\n {\n extensions: [autolinkLiteral, strikethrough, table(options), taskListItem]\n }\n )\n\n return Object.assign(config.options, {\n handlers: config.handlers,\n join: config.join,\n unsafe: config.unsafe\n })\n}\n","var inConstruct = 'phrasing'\nvar notInConstruct = ['autolink', 'link', 'image', 'label']\n\nexports.unsafe = [\n {\n character: '@',\n before: '[+\\\\-.\\\\w]',\n after: '[\\\\-.\\\\w]',\n inConstruct: inConstruct,\n notInConstruct: notInConstruct\n },\n {\n character: '.',\n before: '[Ww]',\n after: '[\\\\-.\\\\w]',\n inConstruct: inConstruct,\n notInConstruct: notInConstruct\n },\n {\n character: ':',\n before: '[ps]',\n after: '\\\\/',\n inConstruct: inConstruct,\n notInConstruct: notInConstruct\n }\n]\n","var phrasing = require('mdast-util-to-markdown/lib/util/container-phrasing')\n\nexports.unsafe = [{character: '~', inConstruct: 'phrasing'}]\nexports.handlers = {delete: handleDelete}\n\nhandleDelete.peek = peekDelete\n\nfunction handleDelete(node, _, context) {\n var exit = context.enter('emphasis')\n var value = phrasing(node, context, {before: '~', after: '~'})\n exit()\n return '~~' + value + '~~'\n}\n\nfunction peekDelete() {\n return '~'\n}\n","var phrasing = require('mdast-util-to-markdown/lib/util/container-phrasing')\nvar defaultInlineCode = require('mdast-util-to-markdown/lib/handle/inline-code')\nvar markdownTable = require('markdown-table')\n\nmodule.exports = toMarkdown\n\nfunction toMarkdown(options) {\n var settings = options || {}\n var padding = settings.tableCellPadding\n var alignDelimiters = settings.tablePipeAlign\n var stringLength = settings.stringLength\n var 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 function handleTable(node, _, context) {\n return serializeData(handleTableAsData(node, context), node.align)\n }\n\n // This function isn’t 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 function handleTableRow(node, _, context) {\n var row = handleTableRowAsData(node, context)\n // `markdown-table` will always add an align row\n var value = serializeData([row])\n return value.slice(0, value.indexOf('\\n'))\n }\n\n function handleTableCell(node, _, context) {\n var exit = context.enter('tableCell')\n var value = phrasing(node, context, {before: around, after: around})\n exit()\n return value\n }\n\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align: align,\n alignDelimiters: alignDelimiters,\n padding: padding,\n stringLength: stringLength\n })\n }\n\n function handleTableAsData(node, context) {\n var children = node.children\n var index = -1\n var length = children.length\n var result = []\n var subexit = context.enter('table')\n\n while (++index < length) {\n result[index] = handleTableRowAsData(children[index], context)\n }\n\n subexit()\n\n return result\n }\n\n function handleTableRowAsData(node, context) {\n var children = node.children\n var index = -1\n var length = children.length\n var result = []\n var subexit = context.enter('tableRow')\n\n while (++index < length) {\n result[index] = handleTableCell(children[index], node, context)\n }\n\n subexit()\n\n return result\n }\n\n function inlineCodeWithTable(node, parent, context) {\n var value = defaultInlineCode(node, parent, context)\n\n if (context.stack.indexOf('tableCell') !== -1) {\n value = value.replace(/\\|/g, '\\\\$&')\n }\n\n return value\n }\n}\n","module.exports = inlineCode\ninlineCode.peek = inlineCodePeek\n\nvar patternCompile = require('../util/pattern-compile')\n\nfunction inlineCode(node, parent, context) {\n var value = node.value || ''\n var sequence = '`'\n var index = -1\n var pattern\n var expression\n var match\n var position\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’t 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.charAt(0)) ||\n /[ \\r\\n`]/.test(value.charAt(value.length - 1)))\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’t 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 pattern = context.unsafe[index]\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 expression = patternCompile(pattern)\n\n while ((match = expression.exec(value))) {\n 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\nfunction inlineCodePeek() {\n return '`'\n}\n","module.exports = patternCompile\n\nfunction patternCompile(pattern) {\n var before\n var after\n\n if (!pattern._compiled) {\n before = pattern.before ? '(?:' + pattern.before + ')' : ''\n after = pattern.after ? '(?:' + pattern.after + ')' : ''\n\n if (pattern.atBreak) {\n before = '[\\\\r\\\\n][\\\\t ]*' + before\n }\n\n pattern._compiled = new RegExp(\n (before ? '(' + before + ')' : '') +\n (/[|\\\\{}()[\\]^$+*?.-]/.test(pattern.character) ? '\\\\' : '') +\n pattern.character +\n (after || ''),\n 'g'\n )\n }\n\n return pattern._compiled\n}\n","'use strict'\n\nvar repeat = require('repeat-string')\n\nmodule.exports = markdownTable\n\nvar trailingWhitespace = / +$/\n\n// Characters.\nvar space = ' '\nvar lineFeed = '\\n'\nvar dash = '-'\nvar colon = ':'\nvar verticalBar = '|'\n\nvar x = 0\nvar C = 67\nvar L = 76\nvar R = 82\nvar c = 99\nvar l = 108\nvar r = 114\n\n// Create a table from a matrix of strings.\nfunction markdownTable(table, options) {\n var settings = options || {}\n var padding = settings.padding !== false\n var start = settings.delimiterStart !== false\n var end = settings.delimiterEnd !== false\n var align = (settings.align || []).concat()\n var alignDelimiters = settings.alignDelimiters !== false\n var alignments = []\n var stringLength = settings.stringLength || defaultStringLength\n var rowIndex = -1\n var rowLength = table.length\n var cellMatrix = []\n var sizeMatrix = []\n var row = []\n var sizes = []\n var longestCellByColumn = []\n var mostCellsPerRow = 0\n var cells\n var columnIndex\n var columnLength\n var largest\n var size\n var cell\n var lines\n var line\n var before\n var after\n var code\n\n // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n // do superfluous work when aligning, so optimize for aligning.\n while (++rowIndex < rowLength) {\n cells = table[rowIndex]\n columnIndex = -1\n columnLength = cells.length\n row = []\n sizes = []\n\n if (columnLength > mostCellsPerRow) {\n mostCellsPerRow = columnLength\n }\n\n while (++columnIndex < columnLength) {\n cell = serialize(cells[columnIndex])\n\n if (alignDelimiters === true) {\n size = stringLength(cell)\n sizes[columnIndex] = size\n\n largest = longestCellByColumn[columnIndex]\n\n if (largest === undefined || size > largest) {\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 columnIndex = -1\n columnLength = mostCellsPerRow\n\n if (typeof align === 'object' && 'length' in align) {\n while (++columnIndex < columnLength) {\n alignments[columnIndex] = toAlignment(align[columnIndex])\n }\n } else {\n code = toAlignment(align)\n\n while (++columnIndex < columnLength) {\n alignments[columnIndex] = code\n }\n }\n\n // Inject the alignment row.\n columnIndex = -1\n columnLength = mostCellsPerRow\n row = []\n sizes = []\n\n while (++columnIndex < columnLength) {\n code = alignments[columnIndex]\n before = ''\n after = ''\n\n if (code === l) {\n before = colon\n } else if (code === r) {\n after = colon\n } else if (code === c) {\n before = colon\n after = colon\n }\n\n // There *must* be at least one hyphen-minus in each alignment cell.\n size = alignDelimiters\n ? Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n )\n : 1\n\n cell = before + repeat(dash, size) + after\n\n if (alignDelimiters === true) {\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 rowLength = cellMatrix.length\n lines = []\n\n while (++rowIndex < rowLength) {\n row = cellMatrix[rowIndex]\n sizes = sizeMatrix[rowIndex]\n columnIndex = -1\n columnLength = mostCellsPerRow\n line = []\n\n while (++columnIndex < columnLength) {\n cell = row[columnIndex] || ''\n before = ''\n after = ''\n\n if (alignDelimiters === true) {\n size = longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n code = alignments[columnIndex]\n\n if (code === r) {\n before = repeat(space, size)\n } else if (code === c) {\n if (size % 2 === 0) {\n before = repeat(space, size / 2)\n after = before\n } else {\n before = repeat(space, size / 2 + 0.5)\n after = repeat(space, size / 2 - 0.5)\n }\n } else {\n after = repeat(space, size)\n }\n }\n\n if (start === true && columnIndex === 0) {\n line.push(verticalBar)\n }\n\n if (\n padding === true &&\n // Don’t add the opening space if we’re not aligning and the cell is\n // empty: there will be a closing space.\n !(alignDelimiters === false && cell === '') &&\n (start === true || columnIndex !== 0)\n ) {\n line.push(space)\n }\n\n if (alignDelimiters === true) {\n line.push(before)\n }\n\n line.push(cell)\n\n if (alignDelimiters === true) {\n line.push(after)\n }\n\n if (padding === true) {\n line.push(space)\n }\n\n if (end === true || columnIndex !== columnLength - 1) {\n line.push(verticalBar)\n }\n }\n\n line = line.join('')\n\n if (end === false) {\n line = line.replace(trailingWhitespace, '')\n }\n\n lines.push(line)\n }\n\n return lines.join(lineFeed)\n}\n\nfunction serialize(value) {\n return value === null || value === undefined ? '' : String(value)\n}\n\nfunction defaultStringLength(value) {\n return value.length\n}\n\nfunction toAlignment(value) {\n var code = typeof value === 'string' ? value.charCodeAt(0) : x\n\n return code === L || code === l\n ? l\n : code === R || code === r\n ? r\n : code === C || code === c\n ? c\n : x\n}\n","var defaultListItem = require('mdast-util-to-markdown/lib/handle/list-item')\n\nexports.unsafe = [{atBreak: true, character: '-', after: '[:|-]'}]\n\nexports.handlers = {\n listItem: listItemWithTaskListItem\n}\n\nfunction listItemWithTaskListItem(node, parent, context) {\n var value = defaultListItem(node, parent, context)\n var head = node.children[0]\n\n if (typeof node.checked === 'boolean' && head && head.type === 'paragraph') {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n }\n\n return value\n\n function check($0) {\n return $0 + '[' + (node.checked ? 'x' : ' ') + '] '\n }\n}\n","module.exports = listItem\n\nvar repeat = require('repeat-string')\nvar checkBullet = require('../util/check-bullet')\nvar checkListItemIndent = require('../util/check-list-item-indent')\nvar flow = require('../util/container-flow')\nvar indentLines = require('../util/indent-lines')\n\nfunction listItem(node, parent, context) {\n var bullet = checkBullet(context)\n var listItemIndent = checkListItemIndent(context)\n var size\n var value\n var exit\n\n if (parent && parent.ordered) {\n bullet =\n (parent.start > -1 ? parent.start : 1) +\n (context.options.incrementListMarker === false\n ? 0\n : parent.children.indexOf(node)) +\n '.'\n }\n\n size = bullet.length + 1\n\n if (\n listItemIndent === 'tab' ||\n (listItemIndent === 'mixed' && ((parent && parent.spread) || node.spread))\n ) {\n size = Math.ceil(size / 4) * 4\n }\n\n exit = context.enter('listItem')\n value = indentLines(flow(node, context), map)\n exit()\n\n return value\n\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","module.exports = checkBullet\n\nfunction checkBullet(context) {\n var 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","module.exports = checkListItemIndent\n\nfunction checkListItemIndent(context) {\n var style = context.options.listItemIndent || 'tab'\n\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","module.exports = flow\n\nvar repeat = require('repeat-string')\n\nfunction flow(parent, context) {\n var children = parent.children || []\n var results = []\n var index = -1\n var child\n\n while (++index < children.length) {\n child = children[index]\n\n results.push(\n context.handle(child, parent, context, {before: '\\n', after: '\\n'})\n )\n\n if (index + 1 < children.length) {\n results.push(between(child, children[index + 1]))\n }\n }\n\n return results.join('')\n\n function between(left, right) {\n var index = -1\n var result\n\n while (++index < context.join.length) {\n 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 repeat('\\n', 1 + Number(result))\n }\n\n if (result === false) {\n return '\\n\\n<!---->\\n\\n'\n }\n }\n\n return '\\n\\n'\n }\n}\n","module.exports = indentLines\n\nvar eol = /\\r?\\n|\\r/g\n\nfunction indentLines(value, map) {\n var result = []\n var start = 0\n var line = 0\n var 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 function one(value) {\n result.push(map(value, line, !value))\n }\n}\n","module.exports = configure\n\nfunction configure(base, extension) {\n var index = -1\n var key\n\n // First do subextensions.\n if (extension.extensions) {\n while (++index < extension.extensions.length) {\n configure(base, extension.extensions[index])\n }\n }\n\n for (key in extension) {\n if (key === 'extensions') {\n // Empty.\n } else if (key === 'unsafe' || key === 'join') {\n base[key] = base[key].concat(extension[key] || [])\n } else if (key === 'handlers') {\n base[key] = Object.assign(base[key], extension[key] || {})\n } else {\n base.options[key] = extension[key]\n }\n }\n\n return base\n}\n","// Original: https://github.com/sdras/night-owl-vscode-theme\n// Converted automatically using ./tools/themeFromVsCode\nvar theme = {\n plain: {\n color: \"#403f53\",\n backgroundColor: \"#FBFBFB\"\n },\n styles: [{\n types: [\"changed\"],\n style: {\n color: \"rgb(162, 191, 252)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"deleted\"],\n style: {\n color: \"rgba(239, 83, 80, 0.56)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"inserted\", \"attr-name\"],\n style: {\n color: \"rgb(72, 118, 214)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"comment\"],\n style: {\n color: \"rgb(152, 159, 177)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"string\", \"builtin\", \"char\", \"constant\", \"url\"],\n style: {\n color: \"rgb(72, 118, 214)\"\n }\n }, {\n types: [\"variable\"],\n style: {\n color: \"rgb(201, 103, 101)\"\n }\n }, {\n types: [\"number\"],\n style: {\n color: \"rgb(170, 9, 130)\"\n }\n }, {\n // This was manually added after the auto-generation\n // so that punctuations are not italicised\n types: [\"punctuation\"],\n style: {\n color: \"rgb(153, 76, 195)\"\n }\n }, {\n types: [\"function\", \"selector\", \"doctype\"],\n style: {\n color: \"rgb(153, 76, 195)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"class-name\"],\n style: {\n color: \"rgb(17, 17, 17)\"\n }\n }, {\n types: [\"tag\"],\n style: {\n color: \"rgb(153, 76, 195)\"\n }\n }, {\n types: [\"operator\", \"property\", \"keyword\", \"namespace\"],\n style: {\n color: \"rgb(12, 150, 155)\"\n }\n }, {\n types: [\"boolean\"],\n style: {\n color: \"rgb(188, 84, 84)\"\n }\n }]\n};\n\nexport default theme;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-dom-server.browser.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom-server.browser.development.js');\n}\n","/** @license React v17.0.2\n * react-dom-server.browser.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),m=require(\"react\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar q=60106,r=60107,u=60108,z=60114,B=60109,aa=60110,ba=60112,D=60113,ca=60120,da=60115,ea=60116,fa=60121,ha=60117,ia=60119,ja=60129,ka=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;q=E(\"react.portal\");r=E(\"react.fragment\");u=E(\"react.strict_mode\");z=E(\"react.profiler\");B=E(\"react.provider\");aa=E(\"react.context\");ba=E(\"react.forward_ref\");D=E(\"react.suspense\");ca=E(\"react.suspense_list\");da=E(\"react.memo\");ea=E(\"react.lazy\");fa=E(\"react.block\");ha=E(\"react.fundamental\");ia=E(\"react.scope\");ja=E(\"react.debug_trace_mode\");ka=E(\"react.legacy_hidden\")}\nfunction F(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case r:return\"Fragment\";case q:return\"Portal\";case z:return\"Profiler\";case u:return\"StrictMode\";case D:return\"Suspense\";case ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case aa:return(a.displayName||\"Context\")+\".Consumer\";case B:return(a._context.displayName||\"Context\")+\".Provider\";case ba:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||\n(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case da:return F(a.type);case fa:return F(a._render);case ea:b=a._payload;a=a._init;try{return F(a(b))}catch(c){}}return null}var la=m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,ma={};function I(a,b){for(var c=a._threadCount|0;c<=b;c++)a[c]=a._currentValue2,a._threadCount=c+1}function na(a,b,c,d){if(d&&(d=a.contextType,\"object\"===typeof d&&null!==d))return I(d,c),d[c];if(a=a.contextTypes){c={};for(var f in a)c[f]=b[f];b=c}else b=ma;return b}\nfor(var J=new Uint16Array(16),K=0;15>K;K++)J[K]=K+1;J[15]=0;var oa=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,pa=Object.prototype.hasOwnProperty,qa={},ra={};\nfunction sa(a){if(pa.call(ra,a))return!0;if(pa.call(qa,a))return!1;if(oa.test(a))return ra[a]=!0;qa[a]=!0;return!1}function ta(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction ua(a,b,c,d){if(null===b||\"undefined\"===typeof b||ta(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function M(a,b,c,d,f,h,t){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=f;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=h;this.removeEmptyString=t}var N={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){N[a]=new M(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];N[b]=new M(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){N[a]=new M(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){N[a]=new M(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){N[a]=new M(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){N[a]=new M(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){N[a]=new M(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){N[a]=new M(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){N[a]=new M(a,5,!1,a.toLowerCase(),null,!1,!1)});var va=/[\\-:]([a-z])/g;function wa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(va,\nwa);N[b]=new M(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(va,wa);N[b]=new M(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(va,wa);N[b]=new M(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){N[a]=new M(a,1,!1,a.toLowerCase(),null,!1,!1)});\nN.xlinkHref=new M(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){N[a]=new M(a,1,!1,a.toLowerCase(),null,!0,!0)});var xa=/[\"'&<>]/;\nfunction O(a){if(\"boolean\"===typeof a||\"number\"===typeof a)return\"\"+a;a=\"\"+a;var b=xa.exec(a);if(b){var c=\"\",d,f=0;for(d=b.index;d<a.length;d++){switch(a.charCodeAt(d)){case 34:b=\"&quot;\";break;case 38:b=\"&amp;\";break;case 39:b=\"&#x27;\";break;case 60:b=\"&lt;\";break;case 62:b=\"&gt;\";break;default:continue}f!==d&&(c+=a.substring(f,d));f=d+1;c+=b}a=f!==d?c+a.substring(f,d):c}return a}\nfunction ya(a,b){var c=N.hasOwnProperty(a)?N[a]:null;var d;if(d=\"style\"!==a)d=null!==c?0===c.type:!(2<a.length)||\"o\"!==a[0]&&\"O\"!==a[0]||\"n\"!==a[1]&&\"N\"!==a[1]?!1:!0;if(d||ua(a,b,c,!1))return\"\";if(null!==c){a=c.attributeName;d=c.type;if(3===d||4===d&&!0===b)return a+'=\"\"';c.sanitizeURL&&(b=\"\"+b);return a+'=\"'+(O(b)+'\"')}return sa(a)?a+'=\"'+(O(b)+'\"'):\"\"}function za(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}\nvar Aa=\"function\"===typeof Object.is?Object.is:za,P=null,Q=null,R=null,S=!1,T=!1,U=null,V=0;function W(){if(null===P)throw Error(p(321));return P}function Ba(){if(0<V)throw Error(p(312));return{memoizedState:null,queue:null,next:null}}function Ca(){null===R?null===Q?(S=!1,Q=R=Ba()):(S=!0,R=Q):null===R.next?(S=!1,R=R.next=Ba()):(S=!0,R=R.next);return R}function Da(a,b,c,d){for(;T;)T=!1,V+=1,R=null,c=a(b,d);Ea();return c}function Ea(){P=null;T=!1;Q=null;V=0;R=U=null}\nfunction Fa(a,b){return\"function\"===typeof b?b(a):b}function Ga(a,b,c){P=W();R=Ca();if(S){var d=R.queue;b=d.dispatch;if(null!==U&&(c=U.get(d),void 0!==c)){U.delete(d);d=R.memoizedState;do d=a(d,c.action),c=c.next;while(null!==c);R.memoizedState=d;return[d,b]}return[R.memoizedState,b]}a=a===Fa?\"function\"===typeof b?b():b:void 0!==c?c(b):b;R.memoizedState=a;a=R.queue={last:null,dispatch:null};a=a.dispatch=Ha.bind(null,P,a);return[R.memoizedState,a]}\nfunction Ia(a,b){P=W();R=Ca();b=void 0===b?null:b;if(null!==R){var c=R.memoizedState;if(null!==c&&null!==b){var d=c[1];a:if(null===d)d=!1;else{for(var f=0;f<d.length&&f<b.length;f++)if(!Aa(b[f],d[f])){d=!1;break a}d=!0}if(d)return c[0]}}a=a();R.memoizedState=[a,b];return a}function Ha(a,b,c){if(!(25>V))throw Error(p(301));if(a===P)if(T=!0,a={action:c,next:null},null===U&&(U=new Map),c=U.get(b),void 0===c)U.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}}function Ja(){}\nvar X=null,Ka={readContext:function(a){var b=X.threadID;I(a,b);return a[b]},useContext:function(a){W();var b=X.threadID;I(a,b);return a[b]},useMemo:Ia,useReducer:Ga,useRef:function(a){P=W();R=Ca();var b=R.memoizedState;return null===b?(a={current:a},R.memoizedState=a):b},useState:function(a){return Ga(Fa,a)},useLayoutEffect:function(){},useCallback:function(a,b){return Ia(function(){return a},b)},useImperativeHandle:Ja,useEffect:Ja,useDebugValue:Ja,useDeferredValue:function(a){W();return a},useTransition:function(){W();\nreturn[function(a){a()},!1]},useOpaqueIdentifier:function(){return(X.identifierPrefix||\"\")+\"R:\"+(X.uniqueID++).toString(36)},useMutableSource:function(a,b){W();return b(a._source)}},La={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};function Ma(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nvar Na={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},Oa=l({menuitem:!0},Na),Y={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,\ngridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Pa=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(Y).forEach(function(a){Pa.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);Y[b]=Y[a]})});\nvar Qa=/([A-Z])/g,Ra=/^ms-/,Z=m.Children.toArray,Sa=la.ReactCurrentDispatcher,Ta={listing:!0,pre:!0,textarea:!0},Ua=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,Va={},Wa={};function Xa(a){if(void 0===a||null===a)return a;var b=\"\";m.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}var Ya=Object.prototype.hasOwnProperty,Za={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null,suppressHydrationWarning:null};function $a(a,b){if(void 0===a)throw Error(p(152,F(b)||\"Component\"));}\nfunction ab(a,b,c){function d(d,h){var e=h.prototype&&h.prototype.isReactComponent,f=na(h,b,c,e),t=[],g=!1,n={isMounted:function(){return!1},enqueueForceUpdate:function(){if(null===t)return null},enqueueReplaceState:function(a,c){g=!0;t=[c]},enqueueSetState:function(a,c){if(null===t)return null;t.push(c)}};if(e){if(e=new h(d.props,f,n),\"function\"===typeof h.getDerivedStateFromProps){var k=h.getDerivedStateFromProps.call(null,d.props,e.state);null!=k&&(e.state=l({},e.state,k))}}else if(P={},e=h(d.props,\nf,n),e=Da(h,d.props,e,f),null==e||null==e.render){a=e;$a(a,h);return}e.props=d.props;e.context=f;e.updater=n;n=e.state;void 0===n&&(e.state=n=null);if(\"function\"===typeof e.UNSAFE_componentWillMount||\"function\"===typeof e.componentWillMount)if(\"function\"===typeof e.componentWillMount&&\"function\"!==typeof h.getDerivedStateFromProps&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof h.getDerivedStateFromProps&&e.UNSAFE_componentWillMount(),t.length){n=t;var v=\ng;t=null;g=!1;if(v&&1===n.length)e.state=n[0];else{k=v?n[0]:e.state;var H=!0;for(v=v?1:0;v<n.length;v++){var x=n[v];x=\"function\"===typeof x?x.call(e,k,d.props,f):x;null!=x&&(H?(H=!1,k=l({},k,x)):l(k,x))}e.state=k}}else t=null;a=e.render();$a(a,h);if(\"function\"===typeof e.getChildContext&&(d=h.childContextTypes,\"object\"===typeof d)){var y=e.getChildContext();for(var A in y)if(!(A in d))throw Error(p(108,F(h)||\"Unknown\",A));}y&&(b=l({},b,y))}for(;m.isValidElement(a);){var f=a,h=f.type;if(\"function\"!==\ntypeof h)break;d(f,h)}return{child:a,context:b}}\nvar bb=function(){function a(a,b,f){m.isValidElement(a)?a.type!==r?a=[a]:(a=a.props.children,a=m.isValidElement(a)?[a]:Z(a)):a=Z(a);a={type:null,domNamespace:La.html,children:a,childIndex:0,context:ma,footer:\"\"};var c=J[0];if(0===c){var d=J;c=d.length;var g=2*c;if(!(65536>=g))throw Error(p(304));var e=new Uint16Array(g);e.set(d);J=e;J[0]=c+1;for(d=c;d<g-1;d++)J[d]=d+1;J[g-1]=0}else J[0]=J[c];this.threadID=c;this.stack=[a];this.exhausted=!1;this.currentSelectValue=null;this.previousWasTextNode=!1;\nthis.makeStaticMarkup=b;this.suspenseDepth=0;this.contextIndex=-1;this.contextStack=[];this.contextValueStack=[];this.uniqueID=0;this.identifierPrefix=f&&f.identifierPrefix||\"\"}var b=a.prototype;b.destroy=function(){if(!this.exhausted){this.exhausted=!0;this.clearProviders();var a=this.threadID;J[a]=J[0];J[0]=a}};b.pushProvider=function(a){var b=++this.contextIndex,c=a.type._context,h=this.threadID;I(c,h);var t=c[h];this.contextStack[b]=c;this.contextValueStack[b]=t;c[h]=a.props.value};b.popProvider=\nfunction(){var a=this.contextIndex,b=this.contextStack[a],f=this.contextValueStack[a];this.contextStack[a]=null;this.contextValueStack[a]=null;this.contextIndex--;b[this.threadID]=f};b.clearProviders=function(){for(var a=this.contextIndex;0<=a;a--)this.contextStack[a][this.threadID]=this.contextValueStack[a]};b.read=function(a){if(this.exhausted)return null;var b=X;X=this;var c=Sa.current;Sa.current=Ka;try{for(var h=[\"\"],t=!1;h[0].length<a;){if(0===this.stack.length){this.exhausted=!0;var g=this.threadID;\nJ[g]=J[0];J[0]=g;break}var e=this.stack[this.stack.length-1];if(t||e.childIndex>=e.children.length){var L=e.footer;\"\"!==L&&(this.previousWasTextNode=!1);this.stack.pop();if(\"select\"===e.type)this.currentSelectValue=null;else if(null!=e.type&&null!=e.type.type&&e.type.type.$$typeof===B)this.popProvider(e.type);else if(e.type===D){this.suspenseDepth--;var G=h.pop();if(t){t=!1;var C=e.fallbackFrame;if(!C)throw Error(p(303));this.stack.push(C);h[this.suspenseDepth]+=\"\\x3c!--$!--\\x3e\";continue}else h[this.suspenseDepth]+=\nG}h[this.suspenseDepth]+=L}else{var n=e.children[e.childIndex++],k=\"\";try{k+=this.render(n,e.context,e.domNamespace)}catch(v){if(null!=v&&\"function\"===typeof v.then)throw Error(p(294));throw v;}finally{}h.length<=this.suspenseDepth&&h.push(\"\");h[this.suspenseDepth]+=k}}return h[0]}finally{Sa.current=c,X=b,Ea()}};b.render=function(a,b,f){if(\"string\"===typeof a||\"number\"===typeof a){f=\"\"+a;if(\"\"===f)return\"\";if(this.makeStaticMarkup)return O(f);if(this.previousWasTextNode)return\"\\x3c!-- --\\x3e\"+O(f);\nthis.previousWasTextNode=!0;return O(f)}b=ab(a,b,this.threadID);a=b.child;b=b.context;if(null===a||!1===a)return\"\";if(!m.isValidElement(a)){if(null!=a&&null!=a.$$typeof){f=a.$$typeof;if(f===q)throw Error(p(257));throw Error(p(258,f.toString()));}a=Z(a);this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,context:b,footer:\"\"});return\"\"}var c=a.type;if(\"string\"===typeof c)return this.renderDOM(a,b,f);switch(c){case ka:case ja:case u:case z:case ca:case r:return a=Z(a.props.children),this.stack.push({type:null,\ndomNamespace:f,children:a,childIndex:0,context:b,footer:\"\"}),\"\";case D:throw Error(p(294));case ia:throw Error(p(343));}if(\"object\"===typeof c&&null!==c)switch(c.$$typeof){case ba:P={};var d=c.render(a.props,a.ref);d=Da(c.render,a.props,d,a.ref);d=Z(d);this.stack.push({type:null,domNamespace:f,children:d,childIndex:0,context:b,footer:\"\"});return\"\";case da:return a=[m.createElement(c.type,l({ref:a.ref},a.props))],this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,context:b,footer:\"\"}),\n\"\";case B:return c=Z(a.props.children),f={type:a,domNamespace:f,children:c,childIndex:0,context:b,footer:\"\"},this.pushProvider(a),this.stack.push(f),\"\";case aa:c=a.type;d=a.props;var g=this.threadID;I(c,g);c=Z(d.children(c[g]));this.stack.push({type:a,domNamespace:f,children:c,childIndex:0,context:b,footer:\"\"});return\"\";case ha:throw Error(p(338));case ea:return c=a.type,d=c._init,c=d(c._payload),a=[m.createElement(c,l({ref:a.ref},a.props))],this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,\ncontext:b,footer:\"\"}),\"\"}throw Error(p(130,null==c?c:typeof c,\"\"));};b.renderDOM=function(a,b,f){var c=a.type.toLowerCase();f===La.html&&Ma(c);if(!Va.hasOwnProperty(c)){if(!Ua.test(c))throw Error(p(65,c));Va[c]=!0}var d=a.props;if(\"input\"===c)d=l({type:void 0},d,{defaultChecked:void 0,defaultValue:void 0,value:null!=d.value?d.value:d.defaultValue,checked:null!=d.checked?d.checked:d.defaultChecked});else if(\"textarea\"===c){var g=d.value;if(null==g){g=d.defaultValue;var e=d.children;if(null!=e){if(null!=\ng)throw Error(p(92));if(Array.isArray(e)){if(!(1>=e.length))throw Error(p(93));e=e[0]}g=\"\"+e}null==g&&(g=\"\")}d=l({},d,{value:void 0,children:\"\"+g})}else if(\"select\"===c)this.currentSelectValue=null!=d.value?d.value:d.defaultValue,d=l({},d,{value:void 0});else if(\"option\"===c){e=this.currentSelectValue;var L=Xa(d.children);if(null!=e){var G=null!=d.value?d.value+\"\":L;g=!1;if(Array.isArray(e))for(var C=0;C<e.length;C++){if(\"\"+e[C]===G){g=!0;break}}else g=\"\"+e===G;d=l({selected:void 0,children:void 0},\nd,{selected:g,children:L})}}if(g=d){if(Oa[c]&&(null!=g.children||null!=g.dangerouslySetInnerHTML))throw Error(p(137,c));if(null!=g.dangerouslySetInnerHTML){if(null!=g.children)throw Error(p(60));if(!(\"object\"===typeof g.dangerouslySetInnerHTML&&\"__html\"in g.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=g.style&&\"object\"!==typeof g.style)throw Error(p(62));}g=d;e=this.makeStaticMarkup;L=1===this.stack.length;G=\"<\"+a.type;b:if(-1===c.indexOf(\"-\"))C=\"string\"===typeof g.is;else switch(c){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":C=\n!1;break b;default:C=!0}for(w in g)if(Ya.call(g,w)){var n=g[w];if(null!=n){if(\"style\"===w){var k=void 0,v=\"\",H=\"\";for(k in n)if(n.hasOwnProperty(k)){var x=0===k.indexOf(\"--\"),y=n[k];if(null!=y){if(x)var A=k;else if(A=k,Wa.hasOwnProperty(A))A=Wa[A];else{var cb=A.replace(Qa,\"-$1\").toLowerCase().replace(Ra,\"-ms-\");A=Wa[A]=cb}v+=H+A+\":\";H=k;x=null==y||\"boolean\"===typeof y||\"\"===y?\"\":x||\"number\"!==typeof y||0===y||Y.hasOwnProperty(H)&&Y[H]?(\"\"+y).trim():y+\"px\";v+=x;H=\";\"}}n=v||null}k=null;C?Za.hasOwnProperty(w)||\n(k=w,k=sa(k)&&null!=n?k+'=\"'+(O(n)+'\"'):\"\"):k=ya(w,n);k&&(G+=\" \"+k)}}e||L&&(G+=' data-reactroot=\"\"');var w=G;g=\"\";Na.hasOwnProperty(c)?w+=\"/>\":(w+=\">\",g=\"</\"+a.type+\">\");a:{e=d.dangerouslySetInnerHTML;if(null!=e){if(null!=e.__html){e=e.__html;break a}}else if(e=d.children,\"string\"===typeof e||\"number\"===typeof e){e=O(e);break a}e=null}null!=e?(d=[],Ta.hasOwnProperty(c)&&\"\\n\"===e.charAt(0)&&(w+=\"\\n\"),w+=e):d=Z(d.children);a=a.type;f=null==f||\"http://www.w3.org/1999/xhtml\"===f?Ma(a):\"http://www.w3.org/2000/svg\"===\nf&&\"foreignObject\"===a?\"http://www.w3.org/1999/xhtml\":f;this.stack.push({domNamespace:f,type:c,children:d,childIndex:0,context:b,footer:g});this.previousWasTextNode=!1;return w};return a}();exports.renderToNodeStream=function(){throw Error(p(207));};exports.renderToStaticMarkup=function(a,b){a=new bb(a,!0,b);try{return a.read(Infinity)}finally{a.destroy()}};exports.renderToStaticNodeStream=function(){throw Error(p(208));};exports.renderToString=function(a,b){a=new bb(a,!1,b);try{return a.read(Infinity)}finally{a.destroy()}};\nexports.version=\"17.0.2\";\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’s 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’s 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 * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n */\n\n/**\n * @typedef {CONTINUE|SKIP|EXIT} Action Union of the action types\n * @typedef {number} Index Move to the sibling at index next (after node itself is completely traversed). Useful if mutating the tree, such as removing the node the visitor is currently on, or any of its previous siblings (or next siblings, in case of reverse) Results less than 0 or greater than or equal to children.length stop traversing the parent\n * @typedef {[(Action|null|undefined|void)?, (Index|null|undefined)?]} ActionTuple List with one or two values, the first an action, the second an index.\n * @typedef {null|undefined|Action|Index|ActionTuple|void} VisitorResult Any value that can be returned from a visitor\n */\n\n/**\n * Invoked when a node (matching test, if given) is found.\n * Visitors are free to transform node.\n * They can also transform the parent of node (the last of ancestors).\n * Replacing node itself, if `SKIP` is not returned, still causes its descendants to be visited.\n * If adding or removing previous siblings (or next siblings, in case of reverse) of node,\n * visitor should return a new index (number) to specify the sibling to traverse after node is traversed.\n * Adding or removing next siblings of node (or previous siblings, in case of reverse)\n * is handled as expected without needing to return a new index.\n * Removing the children property of an ancestor still results in them being traversed.\n *\n * @template {Node} V\n * @callback Visitor\n * @param {V} node Found node\n * @param {Array.<Parent>} ancestors Ancestors of node\n * @returns {VisitorResult}\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’s 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 a test\n *\n * @param tree Abstract syntax tree to walk\n * @param test Test node, optional\n * @param visitor Function to run for each node\n * @param reverse Visit the tree in reverse order, defaults to false\n */\nexport const visitParents =\n /**\n * @type {(\n * (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: Visitor<import('./complex-types').Matches<import('./complex-types').InclusiveDescendant<Tree>, Check>>, reverse?: boolean) => void) &\n * (<Tree extends Node>(tree: Tree, visitor: Visitor<import('./complex-types').InclusiveDescendant<Tree>>, reverse?: boolean) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor<Node>} visitor\n * @param {boolean} [reverse]\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 {Object.<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 {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * Called when a node (matching test, if given) is found.\n * Visitors are free to transform node.\n * They can also transform the parent of node (the last of ancestors).\n * Replacing node itself, if `SKIP` is not returned, still causes its descendants to be visited.\n * If adding or removing previous siblings (or next siblings, in case of reverse) of node,\n * visitor should return a new index (number) to specify the sibling to traverse after node is traversed.\n * Adding or removing next siblings of node (or previous siblings, in case of reverse)\n * is handled as expected without needing to return a new index.\n * Removing the children property of an ancestor still results in them being traversed.\n *\n * @template {Node} V\n * @callback Visitor\n * @param {V} node Found node\n * @param {number|null} index Position of `node` in `parent`\n * @param {Parent|null} parent Parent of `node`\n * @returns {VisitorResult}\n */\n\nimport {visitParents, CONTINUE, SKIP, EXIT} from 'unist-util-visit-parents'\n\nexport {CONTINUE, SKIP, EXIT}\n\n/**\n * Visit children of tree which pass a test\n *\n * @param tree Abstract syntax tree to walk\n * @param test Test, optional\n * @param visitor Function to run for each node\n * @param reverse Fisit the tree in reverse, defaults to false\n */\nexport const visit =\n /**\n * @type {(\n * (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: Visitor<import('unist-util-visit-parents/complex-types').Matches<import('unist-util-visit-parents/complex-types').InclusiveDescendant<Tree>, Check>>, reverse?: boolean) => void) &\n * (<Tree extends Node>(tree: Tree, visitor: Visitor<import('unist-util-visit-parents/complex-types').InclusiveDescendant<Tree>>, reverse?: boolean) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor<Node>} visitor\n * @param {boolean} [reverse]\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {Node} node\n * @param {Array.<Parent>} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n return visitor(\n node,\n parent ? parent.children.indexOf(node) : null,\n parent\n )\n }\n }\n )\n","export var emoticon = [\n {\n name: 'angry',\n emoji: '😠',\n tags: ['mad', 'annoyed'],\n description: 'angry face',\n emoticons: ['>:(', '>:[', '>:-(', '>:-[', '>=(', '>=[', '>=-(', '>=-[']\n },\n {\n name: 'blush',\n emoji: '😊',\n tags: ['proud'],\n description: 'smiling face with smiling eyes',\n emoticons: [\n ':\")',\n ':\"]',\n ':\"D',\n ':-\")',\n ':-\"]',\n ':-\"D',\n '=\")',\n '=\"]',\n '=\"D',\n '=-\")',\n '=-\"]',\n '=-\"D'\n ]\n },\n {\n name: 'broken_heart',\n emoji: '💔',\n tags: [],\n description: 'broken heart',\n emoticons: ['<\\\\3', '</3']\n },\n {\n name: 'confused',\n emoji: '😕',\n tags: [],\n description: 'confused face',\n emoticons: [':/', ':\\\\', ':-/', ':-\\\\', '=/', '=\\\\', '=-/', '=-\\\\']\n },\n {\n name: 'cry',\n emoji: '😢',\n tags: ['sad', 'tear'],\n description: 'crying face',\n emoticons: [\n ':,(',\n ':,[',\n ':,|',\n ':,-(',\n ':,-[',\n ':,-|',\n \":'(\",\n \":'[\",\n \":'|\",\n \":'-(\",\n \":'-[\",\n \":'-|\",\n '=,(',\n '=,[',\n '=,|',\n '=,-(',\n '=,-[',\n '=,-|',\n \"='(\",\n \"='[\",\n \"='|\",\n \"='-(\",\n \"='-[\",\n \"='-|\"\n ]\n },\n {\n name: 'frowning',\n emoji: '😦',\n tags: [],\n description: 'frowning face with open mouth',\n emoticons: [':(', ':[', ':-(', ':-[', '=(', '=[', '=-(', '=-[']\n },\n {\n name: 'heart',\n emoji: '❤️',\n tags: ['love'],\n description: 'red heart',\n emoticons: ['<3']\n },\n {\n name: 'imp',\n emoji: '👿',\n tags: ['angry', 'devil', 'evil', 'horns'],\n description: 'angry face with horns',\n emoticons: [']:(', ']:[', ']:-(', ']:-[', ']=(', ']=[', ']=-(', ']=-[']\n },\n {\n name: 'innocent',\n emoji: '😇',\n tags: ['angel'],\n description: 'smiling face with halo',\n emoticons: [\n 'o:)',\n 'o:]',\n 'o:D',\n 'o:-)',\n 'o:-]',\n 'o:-D',\n 'o=)',\n 'o=]',\n 'o=D',\n 'o=-)',\n 'o=-]',\n 'o=-D',\n 'O:)',\n 'O:]',\n 'O:D',\n 'O:-)',\n 'O:-]',\n 'O:-D',\n 'O=)',\n 'O=]',\n 'O=D',\n 'O=-)',\n 'O=-]',\n 'O=-D',\n '0:)',\n '0:]',\n '0:D',\n '0:-)',\n '0:-]',\n '0:-D',\n '0=)',\n '0=]',\n '0=D',\n '0=-)',\n '0=-]',\n '0=-D'\n ]\n },\n {\n name: 'joy',\n emoji: '😂',\n tags: ['tears'],\n description: 'face with tears of joy',\n emoticons: [\n ':,)',\n ':,]',\n ':,D',\n ':,-)',\n ':,-]',\n ':,-D',\n \":')\",\n \":']\",\n \":'D\",\n \":'-)\",\n \":'-]\",\n \":'-D\",\n '=,)',\n '=,]',\n '=,D',\n '=,-)',\n '=,-]',\n '=,-D',\n \"=')\",\n \"=']\",\n \"='D\",\n \"='-)\",\n \"='-]\",\n \"='-D\"\n ]\n },\n {\n name: 'kissing',\n emoji: '😗',\n tags: [],\n description: 'kissing face',\n emoticons: [':*', ':-*', '=*', '=-*']\n },\n {\n name: 'laughing',\n emoji: '😆',\n tags: ['happy', 'haha'],\n description: 'grinning squinting face',\n emoticons: [\n 'x)',\n 'x]',\n 'xD',\n 'x-)',\n 'x-]',\n 'x-D',\n 'X)',\n 'X]',\n 'X-)',\n 'X-]',\n 'X-D'\n ]\n },\n {\n name: 'man',\n emoji: '👨',\n tags: ['mustache', 'father', 'dad'],\n description: 'man',\n emoticons: [':3', ':-3', '=3', '=-3', ';3', ';-3', 'x3', 'x-3', 'X3', 'X-3']\n },\n {\n name: 'neutral_face',\n emoji: '😐',\n tags: ['meh'],\n description: 'neutral face',\n emoticons: [':|', ':-|', '=|', '=-|']\n },\n {\n name: 'no_mouth',\n emoji: '😶',\n tags: ['mute', 'silence'],\n description: 'face without mouth',\n emoticons: [':-']\n },\n {\n name: 'open_mouth',\n emoji: '😮',\n tags: ['surprise', 'impressed', 'wow'],\n description: 'face with open mouth',\n emoticons: [\n ':o',\n ':O',\n ':0',\n ':-o',\n ':-O',\n ':-0',\n '=o',\n '=O',\n '=0',\n '=-o',\n '=-O',\n '=-0'\n ]\n },\n {\n name: 'rage',\n emoji: '😡',\n tags: ['angry'],\n description: 'pouting face',\n emoticons: [':@', ':-@', '=@', '=-@']\n },\n {\n name: 'smile',\n emoji: '😄',\n tags: ['happy', 'joy', 'laugh', 'pleased'],\n description: 'grinning face with smiling eyes',\n emoticons: [':D', ':-D', '=D', '=-D']\n },\n {\n name: 'smiley',\n emoji: '😃',\n tags: ['happy', 'joy', 'haha'],\n description: 'grinning face with big eyes',\n emoticons: [':)', ':]', ':-)', ':-]', '=)', '=]', '=-)', '=-]']\n },\n {\n name: 'smiling_imp',\n emoji: '😈',\n tags: ['devil', 'evil', 'horns'],\n description: 'smiling face with horns',\n emoticons: [\n ']:)',\n ']:]',\n ']:D',\n ']:-)',\n ']:-]',\n ']:-D',\n ']=)',\n ']=]',\n ']=D',\n ']=-)',\n ']=-]',\n ']=-D'\n ]\n },\n {\n name: 'sob',\n emoji: '😭',\n tags: ['sad', 'cry', 'bawling'],\n description: 'loudly crying face',\n emoticons: [\n \":,'(\",\n \":,'[\",\n \":,'-(\",\n \":,'-[\",\n \":',(\",\n \":',[\",\n \":',-(\",\n \":',-[\",\n \"=,'(\",\n \"=,'[\",\n \"=,'-(\",\n \"=,'-[\",\n \"=',(\",\n \"=',[\",\n \"=',-(\",\n \"=',-[\"\n ]\n },\n {\n name: 'stuck_out_tongue',\n emoji: '😛',\n tags: [],\n description: 'face with tongue',\n emoticons: [\n ':p',\n ':P',\n ':d',\n ':-p',\n ':-P',\n ':-d',\n '=p',\n '=P',\n '=d',\n '=-p',\n '=-P',\n '=-d'\n ]\n },\n {\n name: 'stuck_out_tongue_closed_eyes',\n emoji: '😝',\n tags: ['prank'],\n description: 'squinting face with tongue',\n emoticons: ['xP', 'x-p', 'x-P', 'x-d', 'Xp', 'Xd', 'X-p', 'X-P', 'X-d']\n },\n {\n name: 'stuck_out_tongue_winking_eye',\n emoji: '😜',\n tags: ['prank', 'silly'],\n description: 'winking face with tongue',\n emoticons: [';p', ';P', ';d', ';-p', ';-P', ';-d']\n },\n {\n name: 'sunglasses',\n emoji: '😎',\n tags: ['cool'],\n description: 'smiling face with sunglasses',\n emoticons: [\n '8)',\n '8]',\n '8D',\n '8-)',\n '8-]',\n '8-D',\n 'B)',\n 'B]',\n 'B-)',\n 'B-]',\n 'B-D'\n ]\n },\n {\n name: 'sweat',\n emoji: '😓',\n tags: [],\n description: 'downcast face with sweat',\n emoticons: [\n ',:(',\n ',:[',\n ',:-(',\n ',:-[',\n ',=(',\n ',=[',\n ',=-(',\n ',=-[',\n \"':(\",\n \"':[\",\n \"':-(\",\n \"':-[\",\n \"'=(\",\n \"'=[\",\n \"'=-(\",\n \"'=-[\"\n ]\n },\n {\n name: 'sweat_smile',\n emoji: '😅',\n tags: ['hot'],\n description: 'grinning face with sweat',\n emoticons: [\n ',:)',\n ',:]',\n ',:D',\n ',:-)',\n ',:-]',\n ',:-D',\n ',=)',\n ',=]',\n ',=D',\n ',=-)',\n ',=-]',\n ',=-D',\n \"':)\",\n \"':]\",\n \"':D\",\n \"':-)\",\n \"':-]\",\n \"':-D\",\n \"'=)\",\n \"'=]\",\n \"'=D\",\n \"'=-)\",\n \"'=-]\",\n \"'=-D\"\n ]\n },\n {\n name: 'unamused',\n emoji: '😒',\n tags: ['meh'],\n description: 'unamused face',\n emoticons: [\n ':$',\n ':s',\n ':z',\n ':S',\n ':Z',\n ':-$',\n ':-s',\n ':-z',\n ':-S',\n ':-Z',\n '=$',\n '=s',\n '=z',\n '=S',\n '=Z',\n '=-$',\n '=-s',\n '=-z',\n '=-S',\n '=-Z'\n ]\n },\n {\n name: 'wink',\n emoji: '😉',\n tags: ['flirt'],\n description: 'winking face',\n emoticons: [';)', ';]', ';D', ';-)', ';-]', ';-D']\n }\n]\n","import { visit } from 'unist-util-visit';\nimport emoji from 'node-emoji';\nimport { emoticon } from 'emoticon';\n\nconst RE_EMOJI = /:\\+1:|:-1:|:[\\w-]+:/g;\nconst RE_SHORT = /[$@|*'\",;.=:\\-)([\\]\\\\/<>038BOopPsSdDxXzZ]{2,5}/g;\n\nconst DEFAULT_SETTINGS = {\n padSpaceAfter: false,\n emoticon: false,\n};\n\nexport default function plugin(options) {\n const settings = Object.assign({}, DEFAULT_SETTINGS, options);\n const pad = !!settings.padSpaceAfter;\n const emoticonEnable = !!settings.emoticon;\n\n function getEmojiByShortCode(match) {\n // find emoji by shortcode - full match or with-out last char as it could be from text e.g. :-),\n const iconFull = emoticon.find(e => e.emoticons.includes(match)); // full match\n const iconPart = emoticon.find(e => e.emoticons.includes(match.slice(0, -1))); // second search pattern\n const trimmedChar = iconPart ? match.slice(-1) : '';\n const addPad = pad ? ' ' : '';\n let icon = iconFull ? iconFull.emoji + addPad : iconPart && iconPart.emoji + addPad + trimmedChar;\n return icon || match;\n }\n\n function getEmoji(match) {\n const got = emoji.get(match);\n if (pad && got !== match) {\n return got + ' ';\n }\n return got;\n }\n\n function transformer(tree) {\n visit(tree, 'text', function (node) {\n node.value = node.value.replace(RE_EMOJI, getEmoji);\n if (emoticonEnable) {\n node.value = node.value.replace(RE_SHORT, getEmojiByShortCode);\n }\n });\n }\n\n return transformer;\n}\n","/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\n/**\n * prism-react-renderer:\n * This file has been modified to remove:\n * - globals and window dependency\n * - worker support\n * - highlightAll and other element dependent methods\n * - _.hooks helpers\n * - UMD/node-specific hacks\n * It has also been run through prettier\n */\nvar Prism = function () {\n var uniqueId = 0;\n var _ = {\n util: {\n encode: function (tokens) {\n if (tokens instanceof Token) {\n return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n } else if (_.util.type(tokens) === \"Array\") {\n return tokens.map(_.util.encode);\n } else {\n return tokens.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/\\u00a0/g, \" \");\n }\n },\n type: function (o) {\n return Object.prototype.toString.call(o).match(/\\[object (\\w+)\\]/)[1];\n },\n objId: function (obj) {\n if (!obj[\"__id\"]) {\n Object.defineProperty(obj, \"__id\", {\n value: ++uniqueId\n });\n }\n\n return obj[\"__id\"];\n },\n // Deep clone a language definition (e.g. to extend it)\n clone: function (o, visited) {\n var type = _.util.type(o);\n\n visited = visited || {};\n\n switch (type) {\n case \"Object\":\n if (visited[_.util.objId(o)]) {\n return visited[_.util.objId(o)];\n }\n\n var clone = {};\n visited[_.util.objId(o)] = clone;\n\n for (var key in o) {\n if (o.hasOwnProperty(key)) {\n clone[key] = _.util.clone(o[key], visited);\n }\n }\n\n return clone;\n\n case \"Array\":\n if (visited[_.util.objId(o)]) {\n return visited[_.util.objId(o)];\n }\n\n var clone = [];\n visited[_.util.objId(o)] = clone;\n o.forEach(function (v, i) {\n clone[i] = _.util.clone(v, visited);\n });\n return clone;\n }\n\n return o;\n }\n },\n languages: {\n extend: function (id, redef) {\n var lang = _.util.clone(_.languages[id]);\n\n for (var key in redef) {\n lang[key] = redef[key];\n }\n\n return lang;\n },\n\n /**\n * Insert a token before another token in a language literal\n * As this needs to recreate the object (we cannot actually insert before keys in object literals),\n * we cannot just provide an object, we need anobject and a key.\n * @param inside The key (or language id) of the parent\n * @param before The key to insert before. If not provided, the function appends instead.\n * @param insert Object with the key/value pairs to insert\n * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.\n */\n insertBefore: function (inside, before, insert, root) {\n root = root || _.languages;\n var grammar = root[inside];\n\n if (arguments.length == 2) {\n insert = arguments[1];\n\n for (var newToken in insert) {\n if (insert.hasOwnProperty(newToken)) {\n grammar[newToken] = insert[newToken];\n }\n }\n\n return grammar;\n }\n\n var ret = {};\n\n for (var token in grammar) {\n if (grammar.hasOwnProperty(token)) {\n if (token == before) {\n for (var newToken in insert) {\n if (insert.hasOwnProperty(newToken)) {\n ret[newToken] = insert[newToken];\n }\n }\n }\n\n ret[token] = grammar[token];\n }\n } // Update references in other language definitions\n\n\n _.languages.DFS(_.languages, function (key, value) {\n if (value === root[inside] && key != inside) {\n this[key] = ret;\n }\n });\n\n return root[inside] = ret;\n },\n // Traverse a language definition with Depth First Search\n DFS: function (o, callback, type, visited) {\n visited = visited || {};\n\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n callback.call(o, i, o[i], type || i);\n\n if (_.util.type(o[i]) === \"Object\" && !visited[_.util.objId(o[i])]) {\n visited[_.util.objId(o[i])] = true;\n\n _.languages.DFS(o[i], callback, null, visited);\n } else if (_.util.type(o[i]) === \"Array\" && !visited[_.util.objId(o[i])]) {\n visited[_.util.objId(o[i])] = true;\n\n _.languages.DFS(o[i], callback, i, visited);\n }\n }\n }\n }\n },\n plugins: {},\n highlight: function (text, grammar, language) {\n var env = {\n code: text,\n grammar: grammar,\n language: language\n };\n\n _.hooks.run(\"before-tokenize\", env);\n\n env.tokens = _.tokenize(env.code, env.grammar);\n\n _.hooks.run(\"after-tokenize\", env);\n\n return Token.stringify(_.util.encode(env.tokens), env.language);\n },\n matchGrammar: function (text, strarr, grammar, index, startPos, oneshot, target) {\n var Token = _.Token;\n\n for (var token in grammar) {\n if (!grammar.hasOwnProperty(token) || !grammar[token]) {\n continue;\n }\n\n if (token == target) {\n return;\n }\n\n var patterns = grammar[token];\n patterns = _.util.type(patterns) === \"Array\" ? patterns : [patterns];\n\n for (var j = 0; j < patterns.length; ++j) {\n var pattern = patterns[j],\n inside = pattern.inside,\n lookbehind = !!pattern.lookbehind,\n greedy = !!pattern.greedy,\n lookbehindLength = 0,\n alias = pattern.alias;\n\n if (greedy && !pattern.pattern.global) {\n // Without the global flag, lastIndex won't work\n var flags = pattern.pattern.toString().match(/[imuy]*$/)[0];\n pattern.pattern = RegExp(pattern.pattern.source, flags + \"g\");\n }\n\n pattern = pattern.pattern || pattern; // Don’t cache length as it changes during the loop\n\n for (var i = index, pos = startPos; i < strarr.length; pos += strarr[i].length, ++i) {\n var str = strarr[i];\n\n if (strarr.length > text.length) {\n // Something went terribly wrong, ABORT, ABORT!\n return;\n }\n\n if (str instanceof Token) {\n continue;\n }\n\n if (greedy && i != strarr.length - 1) {\n pattern.lastIndex = pos;\n var match = pattern.exec(text);\n\n if (!match) {\n break;\n }\n\n var from = match.index + (lookbehind ? match[1].length : 0),\n to = match.index + match[0].length,\n k = i,\n p = pos;\n\n for (var len = strarr.length; k < len && (p < to || !strarr[k].type && !strarr[k - 1].greedy); ++k) {\n p += strarr[k].length; // Move the index i to the element in strarr that is closest to from\n\n if (from >= p) {\n ++i;\n pos = p;\n }\n } // If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\n\n if (strarr[i] instanceof Token) {\n continue;\n } // Number of tokens to delete and replace with the new match\n\n\n delNum = k - i;\n str = text.slice(pos, p);\n match.index -= pos;\n } else {\n pattern.lastIndex = 0;\n var match = pattern.exec(str),\n delNum = 1;\n }\n\n if (!match) {\n if (oneshot) {\n break;\n }\n\n continue;\n }\n\n if (lookbehind) {\n lookbehindLength = match[1] ? match[1].length : 0;\n }\n\n var from = match.index + lookbehindLength,\n match = match[0].slice(lookbehindLength),\n to = from + match.length,\n before = str.slice(0, from),\n after = str.slice(to);\n var args = [i, delNum];\n\n if (before) {\n ++i;\n pos += before.length;\n args.push(before);\n }\n\n var wrapped = new Token(token, inside ? _.tokenize(match, inside) : match, alias, match, greedy);\n args.push(wrapped);\n\n if (after) {\n args.push(after);\n }\n\n Array.prototype.splice.apply(strarr, args);\n\n if (delNum != 1) {\n _.matchGrammar(text, strarr, grammar, i, pos, true, token);\n }\n\n if (oneshot) {\n break;\n }\n }\n }\n }\n },\n hooks: {\n add: function () {},\n run: function (name, env) {}\n },\n tokenize: function (text, grammar, language) {\n var strarr = [text];\n var rest = grammar.rest;\n\n if (rest) {\n for (var token in rest) {\n grammar[token] = rest[token];\n }\n\n delete grammar.rest;\n }\n\n _.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n return strarr;\n }\n };\n\n var Token = _.Token = function (type, content, alias, matchedStr, greedy) {\n this.type = type;\n this.content = content;\n this.alias = alias; // Copy of the full string this token was created from\n\n this.length = (matchedStr || \"\").length | 0;\n this.greedy = !!greedy;\n };\n\n Token.stringify = function (o, language, parent) {\n if (typeof o == \"string\") {\n return o;\n }\n\n if (_.util.type(o) === \"Array\") {\n return o.map(function (element) {\n return Token.stringify(element, language, o);\n }).join(\"\");\n }\n\n var env = {\n type: o.type,\n content: Token.stringify(o.content, language, parent),\n tag: \"span\",\n classes: [\"token\", o.type],\n attributes: {},\n language: language,\n parent: parent\n };\n\n if (o.alias) {\n var aliases = _.util.type(o.alias) === \"Array\" ? o.alias : [o.alias];\n Array.prototype.push.apply(env.classes, aliases);\n }\n\n var attributes = Object.keys(env.attributes).map(function (name) {\n return name + '=\"' + (env.attributes[name] || \"\").replace(/\"/g, \"&quot;\") + '\"';\n }).join(\" \");\n return \"<\" + env.tag + ' class=\"' + env.classes.join(\" \") + '\"' + (attributes ? \" \" + attributes : \"\") + \">\" + env.content + \"</\" + env.tag + \">\";\n };\n\n return _;\n}();\n\n/* This content is auto-generated to include some prismjs language components: */\n\n/* \"prismjs/components/prism-markup\" */\n\nPrism.languages.markup = {\n 'comment': /<!--[\\s\\S]*?-->/,\n 'prolog': /<\\?[\\s\\S]+?\\?>/,\n 'doctype': {\n // https://www.w3.org/TR/xml/#NT-doctypedecl\n pattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n greedy: true,\n inside: {\n 'internal-subset': {\n pattern: /(\\[)[\\s\\S]+(?=\\]>$)/,\n lookbehind: true,\n greedy: true,\n inside: null // see below\n\n },\n 'string': {\n pattern: /\"[^\"]*\"|'[^']*'/,\n greedy: true\n },\n 'punctuation': /^<!|>$|[[\\]]/,\n 'doctype-tag': /^DOCTYPE/,\n 'name': /[^\\s<>'\"]+/\n }\n },\n 'cdata': /<!\\[CDATA\\[[\\s\\S]*?]]>/i,\n 'tag': {\n pattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n greedy: true,\n inside: {\n 'tag': {\n pattern: /^<\\/?[^\\s>\\/]+/,\n inside: {\n 'punctuation': /^<\\/?/,\n 'namespace': /^[^\\s>\\/:]+:/\n }\n },\n 'attr-value': {\n pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n inside: {\n 'punctuation': [{\n pattern: /^=/,\n alias: 'attr-equals'\n }, /\"|'/]\n }\n },\n 'punctuation': /\\/?>/,\n 'attr-name': {\n pattern: /[^\\s>\\/]+/,\n inside: {\n 'namespace': /^[^\\s>\\/:]+:/\n }\n }\n }\n },\n 'entity': [{\n pattern: /&[\\da-z]{1,8};/i,\n alias: 'named-entity'\n }, /&#x?[\\da-f]{1,8};/i]\n};\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] = Prism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup; // Plugin to make entity title show the real entity, idea by Roman Komarov\n\nPrism.hooks.add('wrap', function (env) {\n if (env.type === 'entity') {\n env.attributes['title'] = env.content.replace(/&amp;/, '&');\n }\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n /**\n * Adds an inlined language to markup.\n *\n * An example of an inlined language is CSS with `<style>` tags.\n *\n * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n * case insensitive.\n * @param {string} lang The language key.\n * @example\n * addInlined('style', 'css');\n */\n value: function addInlined(tagName, lang) {\n var includedCdataInside = {};\n includedCdataInside['language-' + lang] = {\n pattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n lookbehind: true,\n inside: Prism.languages[lang]\n };\n includedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n var inside = {\n 'included-cdata': {\n pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n inside: includedCdataInside\n }\n };\n inside['language-' + lang] = {\n pattern: /[\\s\\S]+/,\n inside: Prism.languages[lang]\n };\n var def = {};\n def[tagName] = {\n pattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () {\n return tagName;\n }), 'i'),\n lookbehind: true,\n greedy: true,\n inside: inside\n };\n Prism.languages.insertBefore('markup', 'cdata', def);\n }\n});\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n/* \"prismjs/components/prism-bash\" */\n\n(function (Prism) {\n // $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n // + LC_ALL, RANDOM, REPLY, SECONDS.\n // + make sure PS1..4 are here as they are not always set,\n // - some useless things.\n var envVars = '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b';\n var commandAfterHeredoc = {\n pattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n lookbehind: true,\n alias: 'punctuation',\n // this looks reasonably well in all themes\n inside: null // see below\n\n };\n var insideString = {\n 'bash': commandAfterHeredoc,\n 'environment': {\n pattern: RegExp(\"\\\\$\" + envVars),\n alias: 'constant'\n },\n 'variable': [// [0]: Arithmetic Environment\n {\n pattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n greedy: true,\n inside: {\n // If there is a $ sign at the beginning highlight $(( and )) as variable\n 'variable': [{\n pattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n lookbehind: true\n }, /^\\$\\(\\(/],\n 'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n // Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n 'operator': /--?|-=|\\+\\+?|\\+=|!=?|~|\\*\\*?|\\*=|\\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\\^=?|\\|\\|?|\\|=|\\?|:/,\n // If there is no $ sign at the beginning highlight (( and )) as punctuation\n 'punctuation': /\\(\\(?|\\)\\)?|,|;/\n }\n }, // [1]: Command Substitution\n {\n pattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n greedy: true,\n inside: {\n 'variable': /^\\$\\(|^`|\\)$|`$/\n }\n }, // [2]: Brace expansion\n {\n pattern: /\\$\\{[^}]+\\}/,\n greedy: true,\n inside: {\n 'operator': /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n 'punctuation': /[\\[\\]]/,\n 'environment': {\n pattern: RegExp(\"(\\\\{)\" + envVars),\n lookbehind: true,\n alias: 'constant'\n }\n }\n }, /\\$(?:\\w+|[#?*!@$])/],\n // Escape sequences from echo and printf's manuals, and escaped quotes.\n 'entity': /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/\n };\n Prism.languages.bash = {\n 'shebang': {\n pattern: /^#!\\s*\\/.*/,\n alias: 'important'\n },\n 'comment': {\n pattern: /(^|[^\"{\\\\$])#.*/,\n lookbehind: true\n },\n 'function-name': [// a) function foo {\n // b) foo() {\n // c) function foo() {\n // but not “foo {”\n {\n // a) and c)\n pattern: /(\\bfunction\\s+)\\w+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n lookbehind: true,\n alias: 'function'\n }, {\n // b)\n pattern: /\\b\\w+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n alias: 'function'\n }],\n // Highlight variable names as variables in for and select beginnings.\n 'for-or-select': {\n pattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n alias: 'variable',\n lookbehind: true\n },\n // Highlight variable names as variables in the left-hand part\n // of assignments (“=” and “+=”).\n 'assign-left': {\n pattern: /(^|[\\s;|&]|[<>]\\()\\w+(?=\\+?=)/,\n inside: {\n 'environment': {\n pattern: RegExp(\"(^|[\\\\s;|&]|[<>]\\\\()\" + envVars),\n lookbehind: true,\n alias: 'constant'\n }\n },\n alias: 'variable',\n lookbehind: true\n },\n 'string': [// Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n {\n pattern: /((?:^|[^<])<<-?\\s*)(\\w+?)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n lookbehind: true,\n greedy: true,\n inside: insideString\n }, // Here-document with quotes around the tag\n // → No expansion (so no “inside”).\n {\n pattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n lookbehind: true,\n greedy: true,\n inside: {\n 'bash': commandAfterHeredoc\n }\n }, // “Normal” string\n {\n pattern: /(^|[^\\\\](?:\\\\\\\\)*)([\"'])(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|(?!\\2)[^\\\\`$])*\\2/,\n lookbehind: true,\n greedy: true,\n inside: insideString\n }],\n 'environment': {\n pattern: RegExp(\"\\\\$?\" + envVars),\n alias: 'constant'\n },\n 'variable': insideString.variable,\n 'function': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n 'keyword': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n // https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n 'builtin': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\\s;|&])/,\n lookbehind: true,\n // Alias added to make those easier to distinguish from strings.\n alias: 'class-name'\n },\n 'boolean': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:true|false)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n 'file-descriptor': {\n pattern: /\\B&\\d\\b/,\n alias: 'important'\n },\n 'operator': {\n // Lots of redirections here, but not just that.\n pattern: /\\d?<>|>\\||\\+=|==?|!=?|=~|<<[<-]?|[&\\d]?>>|\\d?[<>]&?|&[>&]?|\\|[&|]?|<=?|>=?/,\n inside: {\n 'file-descriptor': {\n pattern: /^\\d/,\n alias: 'important'\n }\n }\n },\n 'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n 'number': {\n pattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n lookbehind: true\n }\n };\n commandAfterHeredoc.inside = Prism.languages.bash;\n /* Patterns in command substitution. */\n\n var toBeCopied = ['comment', 'function-name', 'for-or-select', 'assign-left', 'string', 'environment', 'function', 'keyword', 'builtin', 'boolean', 'file-descriptor', 'operator', 'punctuation', 'number'];\n var inside = insideString.variable[1].inside;\n\n for (var i = 0; i < toBeCopied.length; i++) {\n inside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]];\n }\n\n Prism.languages.shell = Prism.languages.bash;\n})(Prism);\n/* \"prismjs/components/prism-clike\" */\n\n\nPrism.languages.clike = {\n 'comment': [{\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n lookbehind: true,\n greedy: true\n }, {\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true,\n greedy: true\n }],\n 'string': {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n 'class-name': {\n pattern: /(\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n lookbehind: true,\n inside: {\n 'punctuation': /[.\\\\]/\n }\n },\n 'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n 'boolean': /\\b(?:true|false)\\b/,\n 'function': /\\w+(?=\\()/,\n 'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n 'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n 'punctuation': /[{}[\\];(),.:]/\n};\n/* \"prismjs/components/prism-c\" */\n\nPrism.languages.c = Prism.languages.extend('clike', {\n 'comment': {\n pattern: /\\/\\/(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n?|\\n|(?![\\r\\n])))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n greedy: true\n },\n 'class-name': {\n pattern: /(\\b(?:enum|struct)\\s+(?:__attribute__\\s*\\(\\([\\s\\S]*?\\)\\)\\s*)?)\\w+|\\b[a-z]\\w*_t\\b/,\n lookbehind: true\n },\n 'keyword': /\\b(?:__attribute__|_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\\b/,\n 'function': /[a-z_]\\w*(?=\\s*\\()/i,\n 'number': /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,\n 'operator': />>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/\n});\nPrism.languages.insertBefore('c', 'string', {\n 'macro': {\n // allow for multiline macro definitions\n // spaces after the # character compile fine with gcc\n pattern: /(^\\s*)#\\s*[a-z](?:[^\\r\\n\\\\/]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n lookbehind: true,\n greedy: true,\n alias: 'property',\n inside: {\n 'string': [{\n // highlight the path of the include statement as a string\n pattern: /^(#\\s*include\\s*)<[^>]+>/,\n lookbehind: true\n }, Prism.languages.c['string']],\n 'comment': Prism.languages.c['comment'],\n 'macro-name': [{\n pattern: /(^#\\s*define\\s+)\\w+\\b(?!\\()/i,\n lookbehind: true\n }, {\n pattern: /(^#\\s*define\\s+)\\w+\\b(?=\\()/i,\n lookbehind: true,\n alias: 'function'\n }],\n // highlight macro directives as keywords\n 'directive': {\n pattern: /^(#\\s*)[a-z]+/,\n lookbehind: true,\n alias: 'keyword'\n },\n 'directive-hash': /^#/,\n 'punctuation': /##|\\\\(?=[\\r\\n])/,\n 'expression': {\n pattern: /\\S[\\s\\S]*/,\n inside: Prism.languages.c\n }\n }\n },\n // highlight predefined macros as constants\n 'constant': /\\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\\b/\n});\ndelete Prism.languages.c['boolean'];\n/* \"prismjs/components/prism-cpp\" */\n\n(function (Prism) {\n var keyword = /\\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/;\n Prism.languages.cpp = Prism.languages.extend('c', {\n 'class-name': [{\n pattern: RegExp(/(\\b(?:class|concept|enum|struct|typename)\\s+)(?!<keyword>)\\w+/.source.replace(/<keyword>/g, function () {\n return keyword.source;\n })),\n lookbehind: true\n }, // This is intended to capture the class name of method implementations like:\n // void foo::bar() const {}\n // However! The `foo` in the above example could also be a namespace, so we only capture the class name if\n // it starts with an uppercase letter. This approximation should give decent results.\n /\\b[A-Z]\\w*(?=\\s*::\\s*\\w+\\s*\\()/, // This will capture the class name before destructors like:\n // Foo::~Foo() {}\n /\\b[A-Z_]\\w*(?=\\s*::\\s*~\\w+\\s*\\()/i, // This also intends to capture the class name of method implementations but here the class has template\n // parameters, so it can't be a namespace (until C++ adds generic namespaces).\n /\\w+(?=\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\\s*::\\s*\\w+\\s*\\()/],\n 'keyword': keyword,\n 'number': {\n pattern: /(?:\\b0b[01']+|\\b0x(?:[\\da-f']+(?:\\.[\\da-f']*)?|\\.[\\da-f']+)(?:p[+-]?[\\d']+)?|(?:\\b[\\d']+(?:\\.[\\d']*)?|\\B\\.[\\d']+)(?:e[+-]?[\\d']+)?)[ful]{0,4}/i,\n greedy: true\n },\n 'operator': />>=?|<<=?|->|([-+&|:])\\1|[?:~]|<=>|[-+*/%&|^!=<>]=?|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/,\n 'boolean': /\\b(?:true|false)\\b/\n });\n Prism.languages.insertBefore('cpp', 'string', {\n 'raw-string': {\n pattern: /R\"([^()\\\\ ]{0,16})\\([\\s\\S]*?\\)\\1\"/,\n alias: 'string',\n greedy: true\n }\n });\n Prism.languages.insertBefore('cpp', 'class-name', {\n // the base clause is an optional list of parent classes\n // https://en.cppreference.com/w/cpp/language/class\n 'base-clause': {\n pattern: /(\\b(?:class|struct)\\s+\\w+\\s*:\\s*)[^;{}\"'\\s]+(?:\\s+[^;{}\"'\\s]+)*(?=\\s*[;{])/,\n lookbehind: true,\n greedy: true,\n inside: Prism.languages.extend('cpp', {})\n }\n });\n Prism.languages.insertBefore('inside', 'operator', {\n // All untokenized words that are not namespaces should be class names\n 'class-name': /\\b[a-z_]\\w*\\b(?!\\s*::)/i\n }, Prism.languages.cpp['base-clause']);\n})(Prism);\n/* \"prismjs/components/prism-css\" */\n\n\n(function (Prism) {\n var string = /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/;\n Prism.languages.css = {\n 'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n 'atrule': {\n pattern: /@[\\w-](?:[^;{\\s]|\\s+(?![\\s{]))*(?:;|(?=\\s*\\{))/,\n inside: {\n 'rule': /^@[\\w-]+/,\n 'selector-function-argument': {\n pattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n lookbehind: true,\n alias: 'selector'\n },\n 'keyword': {\n pattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n lookbehind: true\n } // See rest below\n\n }\n },\n 'url': {\n // https://drafts.csswg.org/css-values-3/#urls\n pattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n greedy: true,\n inside: {\n 'function': /^url/i,\n 'punctuation': /^\\(|\\)$/,\n 'string': {\n pattern: RegExp('^' + string.source + '$'),\n alias: 'url'\n }\n }\n },\n 'selector': RegExp('[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n 'string': {\n pattern: string,\n greedy: true\n },\n 'property': /(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n 'important': /!important\\b/i,\n 'function': /[-a-z0-9]+(?=\\()/i,\n 'punctuation': /[(){};:,]/\n };\n Prism.languages.css['atrule'].inside.rest = Prism.languages.css;\n var markup = Prism.languages.markup;\n\n if (markup) {\n markup.tag.addInlined('style', 'css');\n Prism.languages.insertBefore('inside', 'attr-value', {\n 'style-attr': {\n pattern: /(^|[\"'\\s])style\\s*=\\s*(?:\"[^\"]*\"|'[^']*')/i,\n lookbehind: true,\n inside: {\n 'attr-value': {\n pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n inside: {\n 'style': {\n pattern: /([\"'])[\\s\\S]+(?=[\"']$)/,\n lookbehind: true,\n alias: 'language-css',\n inside: Prism.languages.css\n },\n 'punctuation': [{\n pattern: /^=/,\n alias: 'attr-equals'\n }, /\"|'/]\n }\n },\n 'attr-name': /^style/i\n }\n }\n }, markup.tag);\n }\n})(Prism);\n/* \"prismjs/components/prism-css-extras\" */\n\n\n(function (Prism) {\n var string = /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/;\n var selectorInside;\n Prism.languages.css.selector = {\n pattern: Prism.languages.css.selector,\n inside: selectorInside = {\n 'pseudo-element': /:(?:after|before|first-letter|first-line|selection)|::[-\\w]+/,\n 'pseudo-class': /:[-\\w]+/,\n 'class': /\\.[-\\w]+/,\n 'id': /#[-\\w]+/,\n 'attribute': {\n pattern: RegExp('\\\\[(?:[^[\\\\]\"\\']|' + string.source + ')*\\\\]'),\n greedy: true,\n inside: {\n 'punctuation': /^\\[|\\]$/,\n 'case-sensitivity': {\n pattern: /(\\s)[si]$/i,\n lookbehind: true,\n alias: 'keyword'\n },\n 'namespace': {\n pattern: /^(\\s*)(?:(?!\\s)[-*\\w\\xA0-\\uFFFF])*\\|(?!=)/,\n lookbehind: true,\n inside: {\n 'punctuation': /\\|$/\n }\n },\n 'attr-name': {\n pattern: /^(\\s*)(?:(?!\\s)[-\\w\\xA0-\\uFFFF])+/,\n lookbehind: true\n },\n 'attr-value': [string, {\n pattern: /(=\\s*)(?:(?!\\s)[-\\w\\xA0-\\uFFFF])+(?=\\s*$)/,\n lookbehind: true\n }],\n 'operator': /[|~*^$]?=/\n }\n },\n 'n-th': [{\n pattern: /(\\(\\s*)[+-]?\\d*[\\dn](?:\\s*[+-]\\s*\\d+)?(?=\\s*\\))/,\n lookbehind: true,\n inside: {\n 'number': /[\\dn]+/,\n 'operator': /[+-]/\n }\n }, {\n pattern: /(\\(\\s*)(?:even|odd)(?=\\s*\\))/i,\n lookbehind: true\n }],\n 'combinator': />|\\+|~|\\|\\|/,\n // the `tag` token has been existed and removed.\n // because we can't find a perfect tokenize to match it.\n // if you want to add it, please read https://github.com/PrismJS/prism/pull/2373 first.\n 'punctuation': /[(),]/\n }\n };\n Prism.languages.css['atrule'].inside['selector-function-argument'].inside = selectorInside;\n Prism.languages.insertBefore('css', 'property', {\n 'variable': {\n pattern: /(^|[^-\\w\\xA0-\\uFFFF])--(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*/i,\n lookbehind: true\n }\n });\n var unit = {\n pattern: /(\\b\\d+)(?:%|[a-z]+\\b)/,\n lookbehind: true\n }; // 123 -123 .123 -.123 12.3 -12.3\n\n var number = {\n pattern: /(^|[^\\w.-])-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/,\n lookbehind: true\n };\n Prism.languages.insertBefore('css', 'function', {\n 'operator': {\n pattern: /(\\s)[+\\-*\\/](?=\\s)/,\n lookbehind: true\n },\n // CAREFUL!\n // Previewers and Inline color use hexcode and color.\n 'hexcode': {\n pattern: /\\B#(?:[\\da-f]{1,2}){3,4}\\b/i,\n alias: 'color'\n },\n 'color': [/\\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\\b/i, {\n pattern: /\\b(?:rgb|hsl)\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\)\\B|\\b(?:rgb|hsl)a\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*,\\s*(?:0|0?\\.\\d+|1)\\s*\\)\\B/i,\n inside: {\n 'unit': unit,\n 'number': number,\n 'function': /[\\w-]+(?=\\()/,\n 'punctuation': /[(),]/\n }\n }],\n // it's important that there is no boundary assertion after the hex digits\n 'entity': /\\\\[\\da-f]{1,8}/i,\n 'unit': unit,\n 'number': number\n });\n})(Prism);\n/* \"prismjs/components/prism-javascript\" */\n\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n 'class-name': [Prism.languages.clike['class-name'], {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:prototype|constructor))/,\n lookbehind: true\n }],\n 'keyword': [{\n pattern: /((?:^|})\\s*)(?:catch|finally)\\b/,\n lookbehind: true\n }, {\n pattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|(?:get|set)(?=\\s*[\\[$\\w\\xA0-\\uFFFF])|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n lookbehind: true\n }],\n // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n 'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n 'number': /\\b(?:(?:0[xX](?:[\\dA-Fa-f](?:_[\\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\\d(?:_\\d)?)+n|NaN|Infinity)\\b|(?:\\b(?:\\d(?:_\\d)?)+\\.?(?:\\d(?:_\\d)?)*|\\B\\.(?:\\d(?:_\\d)?)+)(?:[Ee][+-]?(?:\\d(?:_\\d)?)+)?/,\n 'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|interface|extends|implements|instanceof|new)\\s+)[\\w.\\\\]+/;\nPrism.languages.insertBefore('javascript', 'keyword', {\n 'regex': {\n pattern: /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)\\/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyus]{0,6}(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/,\n lookbehind: true,\n greedy: true,\n inside: {\n 'regex-source': {\n pattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n lookbehind: true,\n alias: 'language-regex',\n inside: Prism.languages.regex\n },\n 'regex-flags': /[a-z]+$/,\n 'regex-delimiter': /^\\/|\\/$/\n }\n },\n // This must be declared before keyword because we use \"function\" inside the look-forward\n 'function-variable': {\n pattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n alias: 'function'\n },\n 'parameter': [{\n pattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n lookbehind: true,\n inside: Prism.languages.javascript\n }, {\n pattern: /(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n inside: Prism.languages.javascript\n }, {\n pattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n lookbehind: true,\n inside: Prism.languages.javascript\n }, {\n pattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n lookbehind: true,\n inside: Prism.languages.javascript\n }],\n 'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\nPrism.languages.insertBefore('javascript', 'string', {\n 'template-string': {\n pattern: /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\\${)[^\\\\`])*`/,\n greedy: true,\n inside: {\n 'template-punctuation': {\n pattern: /^`|`$/,\n alias: 'string'\n },\n 'interpolation': {\n pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,\n lookbehind: true,\n inside: {\n 'interpolation-punctuation': {\n pattern: /^\\${|}$/,\n alias: 'punctuation'\n },\n rest: Prism.languages.javascript\n }\n },\n 'string': /[\\s\\S]+/\n }\n }\n});\n\nif (Prism.languages.markup) {\n Prism.languages.markup.tag.addInlined('script', 'javascript');\n}\n\nPrism.languages.js = Prism.languages.javascript;\n/* \"prismjs/components/prism-jsx\" */\n\n(function (Prism) {\n var javascript = Prism.util.clone(Prism.languages.javascript);\n Prism.languages.jsx = Prism.languages.extend('markup', javascript);\n Prism.languages.jsx.tag.pattern = /<\\/?(?:[\\w.:-]+(?:\\s+(?:[\\w.:$-]+(?:=(?:\"(?:\\\\[^]|[^\\\\\"])*\"|'(?:\\\\[^]|[^\\\\'])*'|[^\\s{'\">=]+|\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])+\\}))?|\\{\\s*\\.{3}\\s*[a-z_$][\\w$]*(?:\\.[a-z_$][\\w$]*)*\\s*\\}))*\\s*\\/?)?>/i;\n Prism.languages.jsx.tag.inside['tag'].pattern = /^<\\/?[^\\s>\\/]*/i;\n Prism.languages.jsx.tag.inside['attr-value'].pattern = /=(?!\\{)(?:\"(?:\\\\[^]|[^\\\\\"])*\"|'(?:\\\\[^]|[^\\\\'])*'|[^\\s'\">]+)/i;\n Prism.languages.jsx.tag.inside['tag'].inside['class-name'] = /^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/;\n Prism.languages.insertBefore('inside', 'attr-name', {\n 'spread': {\n pattern: /\\{\\s*\\.{3}\\s*[a-z_$][\\w$]*(?:\\.[a-z_$][\\w$]*)*\\s*\\}/,\n inside: {\n 'punctuation': /\\.{3}|[{}.]/,\n 'attr-value': /\\w+/\n }\n }\n }, Prism.languages.jsx.tag);\n Prism.languages.insertBefore('inside', 'attr-value', {\n 'script': {\n // Allow for two levels of nesting\n pattern: /=(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])+\\})/i,\n inside: {\n 'script-punctuation': {\n pattern: /^=(?={)/,\n alias: 'punctuation'\n },\n rest: Prism.languages.jsx\n },\n 'alias': 'language-javascript'\n }\n }, Prism.languages.jsx.tag); // The following will handle plain text inside tags\n\n var stringifyToken = function (token) {\n if (!token) {\n return '';\n }\n\n if (typeof token === 'string') {\n return token;\n }\n\n if (typeof token.content === 'string') {\n return token.content;\n }\n\n return token.content.map(stringifyToken).join('');\n };\n\n var walkTokens = function (tokens) {\n var openedTags = [];\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var notTagNorBrace = false;\n\n if (typeof token !== 'string') {\n if (token.type === 'tag' && token.content[0] && token.content[0].type === 'tag') {\n // We found a tag, now find its kind\n if (token.content[0].content[0].content === '</') {\n // Closing tag\n if (openedTags.length > 0 && openedTags[openedTags.length - 1].tagName === stringifyToken(token.content[0].content[1])) {\n // Pop matching opening tag\n openedTags.pop();\n }\n } else {\n if (token.content[token.content.length - 1].content === '/>') ; else {\n // Opening tag\n openedTags.push({\n tagName: stringifyToken(token.content[0].content[1]),\n openedBraces: 0\n });\n }\n }\n } else if (openedTags.length > 0 && token.type === 'punctuation' && token.content === '{') {\n // Here we might have entered a JSX context inside a tag\n openedTags[openedTags.length - 1].openedBraces++;\n } else if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces > 0 && token.type === 'punctuation' && token.content === '}') {\n // Here we might have left a JSX context inside a tag\n openedTags[openedTags.length - 1].openedBraces--;\n } else {\n notTagNorBrace = true;\n }\n }\n\n if (notTagNorBrace || typeof token === 'string') {\n if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces === 0) {\n // Here we are inside a tag, and not inside a JSX context.\n // That's plain text: drop any tokens matched.\n var plainText = stringifyToken(token); // And merge text with adjacent text\n\n if (i < tokens.length - 1 && (typeof tokens[i + 1] === 'string' || tokens[i + 1].type === 'plain-text')) {\n plainText += stringifyToken(tokens[i + 1]);\n tokens.splice(i + 1, 1);\n }\n\n if (i > 0 && (typeof tokens[i - 1] === 'string' || tokens[i - 1].type === 'plain-text')) {\n plainText = stringifyToken(tokens[i - 1]) + plainText;\n tokens.splice(i - 1, 1);\n i--;\n }\n\n tokens[i] = new Prism.Token('plain-text', plainText, null, plainText);\n }\n }\n\n if (token.content && typeof token.content !== 'string') {\n walkTokens(token.content);\n }\n }\n };\n\n Prism.hooks.add('after-tokenize', function (env) {\n if (env.language !== 'jsx' && env.language !== 'tsx') {\n return;\n }\n\n walkTokens(env.tokens);\n });\n})(Prism);\n/* \"prismjs/components/prism-js-extras\" */\n\n\n(function (Prism) {\n Prism.languages.insertBefore('javascript', 'function-variable', {\n 'method-variable': {\n pattern: RegExp('(\\\\.\\\\s*)' + Prism.languages.javascript['function-variable'].pattern.source),\n lookbehind: true,\n alias: ['function-variable', 'method', 'function', 'property-access']\n }\n });\n Prism.languages.insertBefore('javascript', 'function', {\n 'method': {\n pattern: RegExp('(\\\\.\\\\s*)' + Prism.languages.javascript['function'].source),\n lookbehind: true,\n alias: ['function', 'property-access']\n }\n });\n Prism.languages.insertBefore('javascript', 'constant', {\n 'known-class-name': [{\n // standard built-ins\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\n pattern: /\\b(?:(?:(?:Uint|Int)(?:8|16|32)|Uint8Clamped|Float(?:32|64))?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|(?:Weak)?(?:Set|Map)|WebAssembly)\\b/,\n alias: 'class-name'\n }, {\n // errors\n pattern: /\\b(?:[A-Z]\\w*)Error\\b/,\n alias: 'class-name'\n }]\n });\n /**\n * Replaces the `<ID>` placeholder in the given pattern with a pattern for general JS identifiers.\n *\n * @param {string} source\n * @param {string} [flags]\n * @returns {RegExp}\n */\n\n function withId(source, flags) {\n return RegExp(source.replace(/<ID>/g, function () {\n return /(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/.source;\n }), flags);\n }\n\n Prism.languages.insertBefore('javascript', 'keyword', {\n 'imports': {\n // https://tc39.es/ecma262/#sec-imports\n pattern: withId(/(\\bimport\\b\\s*)(?:<ID>(?:\\s*,\\s*(?:\\*\\s*as\\s+<ID>|\\{[^{}]*\\}))?|\\*\\s*as\\s+<ID>|\\{[^{}]*\\})(?=\\s*\\bfrom\\b)/.source),\n lookbehind: true,\n inside: Prism.languages.javascript\n },\n 'exports': {\n // https://tc39.es/ecma262/#sec-exports\n pattern: withId(/(\\bexport\\b\\s*)(?:\\*(?:\\s*as\\s+<ID>)?(?=\\s*\\bfrom\\b)|\\{[^{}]*\\})/.source),\n lookbehind: true,\n inside: Prism.languages.javascript\n }\n });\n Prism.languages.javascript['keyword'].unshift({\n pattern: /\\b(?:as|default|export|from|import)\\b/,\n alias: 'module'\n }, {\n pattern: /\\b(?:await|break|catch|continue|do|else|for|finally|if|return|switch|throw|try|while|yield)\\b/,\n alias: 'control-flow'\n }, {\n pattern: /\\bnull\\b/,\n alias: ['null', 'nil']\n }, {\n pattern: /\\bundefined\\b/,\n alias: 'nil'\n });\n Prism.languages.insertBefore('javascript', 'operator', {\n 'spread': {\n pattern: /\\.{3}/,\n alias: 'operator'\n },\n 'arrow': {\n pattern: /=>/,\n alias: 'operator'\n }\n });\n Prism.languages.insertBefore('javascript', 'punctuation', {\n 'property-access': {\n pattern: withId(/(\\.\\s*)#?<ID>/.source),\n lookbehind: true\n },\n 'maybe-class-name': {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])[A-Z][$\\w\\xA0-\\uFFFF]+/,\n lookbehind: true\n },\n 'dom': {\n // this contains only a few commonly used DOM variables\n pattern: /\\b(?:document|location|navigator|performance|(?:local|session)Storage|window)\\b/,\n alias: 'variable'\n },\n 'console': {\n pattern: /\\bconsole(?=\\s*\\.)/,\n alias: 'class-name'\n }\n }); // add 'maybe-class-name' to tokens which might be a class name\n\n var maybeClassNameTokens = ['function', 'function-variable', 'method', 'method-variable', 'property-access'];\n\n for (var i = 0; i < maybeClassNameTokens.length; i++) {\n var token = maybeClassNameTokens[i];\n var value = Prism.languages.javascript[token]; // convert regex to object\n\n if (Prism.util.type(value) === 'RegExp') {\n value = Prism.languages.javascript[token] = {\n pattern: value\n };\n } // keep in mind that we don't support arrays\n\n\n var inside = value.inside || {};\n value.inside = inside;\n inside['maybe-class-name'] = /^[A-Z][\\s\\S]*/;\n }\n})(Prism);\n/* \"prismjs/components/prism-coffeescript\" */\n\n\n(function (Prism) {\n // Ignore comments starting with { to privilege string interpolation highlighting\n var comment = /#(?!\\{).+/,\n interpolation = {\n pattern: /#\\{[^}]+\\}/,\n alias: 'variable'\n };\n Prism.languages.coffeescript = Prism.languages.extend('javascript', {\n 'comment': comment,\n 'string': [// Strings are multiline\n {\n pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n greedy: true\n }, {\n // Strings are multiline\n pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n greedy: true,\n inside: {\n 'interpolation': interpolation\n }\n }],\n 'keyword': /\\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/,\n 'class-member': {\n pattern: /@(?!\\d)\\w+/,\n alias: 'variable'\n }\n });\n Prism.languages.insertBefore('coffeescript', 'comment', {\n 'multiline-comment': {\n pattern: /###[\\s\\S]+?###/,\n alias: 'comment'\n },\n // Block regexp can contain comments and interpolation\n 'block-regex': {\n pattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n alias: 'regex',\n inside: {\n 'comment': comment,\n 'interpolation': interpolation\n }\n }\n });\n Prism.languages.insertBefore('coffeescript', 'string', {\n 'inline-javascript': {\n pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n inside: {\n 'delimiter': {\n pattern: /^`|`$/,\n alias: 'punctuation'\n },\n 'script': {\n pattern: /[\\s\\S]+/,\n alias: 'language-javascript',\n inside: Prism.languages.javascript\n }\n }\n },\n // Block strings\n 'multiline-string': [{\n pattern: /'''[\\s\\S]*?'''/,\n greedy: true,\n alias: 'string'\n }, {\n pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n greedy: true,\n alias: 'string',\n inside: {\n interpolation: interpolation\n }\n }]\n });\n Prism.languages.insertBefore('coffeescript', 'keyword', {\n // Object property\n 'property': /(?!\\d)\\w+(?=\\s*:(?!:))/\n });\n delete Prism.languages.coffeescript['template-string'];\n Prism.languages.coffee = Prism.languages.coffeescript;\n})(Prism);\n/* \"prismjs/components/prism-diff\" */\n\n\n(function (Prism) {\n Prism.languages.diff = {\n 'coord': [// Match all kinds of coord lines (prefixed by \"+++\", \"---\" or \"***\").\n /^(?:\\*{3}|-{3}|\\+{3}).*$/m, // Match \"@@ ... @@\" coord lines in unified diff.\n /^@@.*@@$/m, // Match coord lines in normal diff (starts with a number).\n /^\\d.*$/m] // deleted, inserted, unchanged, diff\n\n };\n /**\n * A map from the name of a block to its line prefix.\n *\n * @type {Object<string, string>}\n */\n\n var PREFIXES = {\n 'deleted-sign': '-',\n 'deleted-arrow': '<',\n 'inserted-sign': '+',\n 'inserted-arrow': '>',\n 'unchanged': ' ',\n 'diff': '!'\n }; // add a token for each prefix\n\n Object.keys(PREFIXES).forEach(function (name) {\n var prefix = PREFIXES[name];\n var alias = [];\n\n if (!/^\\w+$/.test(name)) {\n // \"deleted-sign\" -> \"deleted\"\n alias.push(/\\w+/.exec(name)[0]);\n }\n\n if (name === \"diff\") {\n alias.push(\"bold\");\n }\n\n Prism.languages.diff[name] = {\n pattern: RegExp('^(?:[' + prefix + '].*(?:\\r\\n?|\\n|(?![\\\\s\\\\S])))+', 'm'),\n alias: alias,\n inside: {\n 'line': {\n pattern: /(.)(?=[\\s\\S]).*(?:\\r\\n?|\\n)?/,\n lookbehind: true\n },\n 'prefix': {\n pattern: /[\\s\\S]/,\n alias: /\\w+/.exec(name)[0]\n }\n }\n };\n }); // make prefixes available to Diff plugin\n\n Object.defineProperty(Prism.languages.diff, 'PREFIXES', {\n value: PREFIXES\n });\n})(Prism);\n/* \"prismjs/components/prism-git\" */\n\n\nPrism.languages.git = {\n /*\n * A simple one line comment like in a git status command\n * For instance:\n * $ git status\n * # On branch infinite-scroll\n * # Your branch and 'origin/sharedBranches/frontendTeam/infinite-scroll' have diverged,\n * # and have 1 and 2 different commits each, respectively.\n * nothing to commit (working directory clean)\n */\n 'comment': /^#.*/m,\n\n /*\n * Regexp to match the changed lines in a git diff output. Check the example below.\n */\n 'deleted': /^[-–].*/m,\n 'inserted': /^\\+.*/m,\n\n /*\n * a string (double and simple quote)\n */\n 'string': /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/m,\n\n /*\n * a git command. It starts with a random prompt finishing by a $, then \"git\" then some other parameters\n * For instance:\n * $ git add file.txt\n */\n 'command': {\n pattern: /^.*\\$ git .*$/m,\n inside: {\n /*\n * A git command can contain a parameter starting by a single or a double dash followed by a string\n * For instance:\n * $ git diff --cached\n * $ git log -p\n */\n 'parameter': /\\s--?\\w+/m\n }\n },\n\n /*\n * Coordinates displayed in a git diff command\n * For instance:\n * $ git diff\n * diff --git file.txt file.txt\n * index 6214953..1d54a52 100644\n * --- file.txt\n * +++ file.txt\n * @@ -1 +1,2 @@\n * -Here's my tetx file\n * +Here's my text file\n * +And this is the second line\n */\n 'coord': /^@@.*@@$/m,\n\n /*\n * Match a \"commit [SHA1]\" line in a git log output.\n * For instance:\n * $ git log\n * commit a11a14ef7e26f2ca62d4b35eac455ce636d0dc09\n * Author: lgiraudel\n * Date: Mon Feb 17 11:18:34 2014 +0100\n *\n * Add of a new line\n */\n 'commit-sha1': /^commit \\w{40}$/m\n};\n/* \"prismjs/components/prism-go\" */\n\nPrism.languages.go = Prism.languages.extend('clike', {\n 'string': {\n pattern: /([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n greedy: true\n },\n 'keyword': /\\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n 'boolean': /\\b(?:_|iota|nil|true|false)\\b/,\n 'number': /(?:\\b0x[a-f\\d]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[-+]?\\d+)?)i?/i,\n 'operator': /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n 'builtin': /\\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\\b/\n});\ndelete Prism.languages.go['class-name'];\n/* \"prismjs/components/prism-graphql\" */\n\nPrism.languages.graphql = {\n 'comment': /#.*/,\n 'description': {\n pattern: /(?:\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")(?=\\s*[a-z_])/i,\n greedy: true,\n alias: 'string',\n inside: {\n 'language-markdown': {\n pattern: /(^\"(?:\"\")?)(?!\\1)[\\s\\S]+(?=\\1$)/,\n lookbehind: true,\n inside: Prism.languages.markdown\n }\n }\n },\n 'string': {\n pattern: /\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n greedy: true\n },\n 'number': /(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n 'boolean': /\\b(?:true|false)\\b/,\n 'variable': /\\$[a-z_]\\w*/i,\n 'directive': {\n pattern: /@[a-z_]\\w*/i,\n alias: 'function'\n },\n 'attr-name': {\n pattern: /[a-z_]\\w*(?=\\s*(?:\\((?:[^()\"]|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")*\\))?:)/i,\n greedy: true\n },\n 'class-name': {\n pattern: /(\\b(?:enum|implements|interface|on|scalar|type|union)\\s+|&\\s*)[a-zA-Z_]\\w*/,\n lookbehind: true\n },\n 'fragment': {\n pattern: /(\\bfragment\\s+|\\.{3}\\s*(?!on\\b))[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: 'function'\n },\n 'keyword': /\\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\\b/,\n 'operator': /[!=|&]|\\.{3}/,\n 'punctuation': /[!(){}\\[\\]:=,]/,\n 'constant': /\\b(?!ID\\b)[A-Z][A-Z_\\d]*\\b/\n};\n/* \"prismjs/components/prism-markup-templating\" */\n\n(function (Prism) {\n /**\n * Returns the placeholder for the given language id and index.\n *\n * @param {string} language\n * @param {string|number} index\n * @returns {string}\n */\n function getPlaceholder(language, index) {\n return '___' + language.toUpperCase() + index + '___';\n }\n\n Object.defineProperties(Prism.languages['markup-templating'] = {}, {\n buildPlaceholders: {\n /**\n * Tokenize all inline templating expressions matching `placeholderPattern`.\n *\n * If `replaceFilter` is provided, only matches of `placeholderPattern` for which `replaceFilter` returns\n * `true` will be replaced.\n *\n * @param {object} env The environment of the `before-tokenize` hook.\n * @param {string} language The language id.\n * @param {RegExp} placeholderPattern The matches of this pattern will be replaced by placeholders.\n * @param {(match: string) => boolean} [replaceFilter]\n */\n value: function (env, language, placeholderPattern, replaceFilter) {\n if (env.language !== language) {\n return;\n }\n\n var tokenStack = env.tokenStack = [];\n env.code = env.code.replace(placeholderPattern, function (match) {\n if (typeof replaceFilter === 'function' && !replaceFilter(match)) {\n return match;\n }\n\n var i = tokenStack.length;\n var placeholder; // Check for existing strings\n\n while (env.code.indexOf(placeholder = getPlaceholder(language, i)) !== -1) {\n ++i;\n } // Create a sparse array\n\n\n tokenStack[i] = match;\n return placeholder;\n }); // Switch the grammar to markup\n\n env.grammar = Prism.languages.markup;\n }\n },\n tokenizePlaceholders: {\n /**\n * Replace placeholders with proper tokens after tokenizing.\n *\n * @param {object} env The environment of the `after-tokenize` hook.\n * @param {string} language The language id.\n */\n value: function (env, language) {\n if (env.language !== language || !env.tokenStack) {\n return;\n } // Switch the grammar back\n\n\n env.grammar = Prism.languages[language];\n var j = 0;\n var keys = Object.keys(env.tokenStack);\n\n function walkTokens(tokens) {\n for (var i = 0; i < tokens.length; i++) {\n // all placeholders are replaced already\n if (j >= keys.length) {\n break;\n }\n\n var token = tokens[i];\n\n if (typeof token === 'string' || token.content && typeof token.content === 'string') {\n var k = keys[j];\n var t = env.tokenStack[k];\n var s = typeof token === 'string' ? token : token.content;\n var placeholder = getPlaceholder(language, k);\n var index = s.indexOf(placeholder);\n\n if (index > -1) {\n ++j;\n var before = s.substring(0, index);\n var middle = new Prism.Token(language, Prism.tokenize(t, env.grammar), 'language-' + language, t);\n var after = s.substring(index + placeholder.length);\n var replacement = [];\n\n if (before) {\n replacement.push.apply(replacement, walkTokens([before]));\n }\n\n replacement.push(middle);\n\n if (after) {\n replacement.push.apply(replacement, walkTokens([after]));\n }\n\n if (typeof token === 'string') {\n tokens.splice.apply(tokens, [i, 1].concat(replacement));\n } else {\n token.content = replacement;\n }\n }\n } else if (token.content\n /* && typeof token.content !== 'string' */\n ) {\n walkTokens(token.content);\n }\n }\n\n return tokens;\n }\n\n walkTokens(env.tokens);\n }\n }\n });\n})(Prism);\n/* \"prismjs/components/prism-handlebars\" */\n\n\n(function (Prism) {\n Prism.languages.handlebars = {\n 'comment': /\\{\\{![\\s\\S]*?\\}\\}/,\n 'delimiter': {\n pattern: /^\\{\\{\\{?|\\}\\}\\}?$/i,\n alias: 'punctuation'\n },\n 'string': /([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n 'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee][+-]?\\d+)?/,\n 'boolean': /\\b(?:true|false)\\b/,\n 'block': {\n pattern: /^(\\s*(?:~\\s*)?)[#\\/]\\S+?(?=\\s*(?:~\\s*)?$|\\s)/i,\n lookbehind: true,\n alias: 'keyword'\n },\n 'brackets': {\n pattern: /\\[[^\\]]+\\]/,\n inside: {\n punctuation: /\\[|\\]/,\n variable: /[\\s\\S]+/\n }\n },\n 'punctuation': /[!\"#%&':()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]/,\n 'variable': /[^!\"#%&'()*+,\\/;<=>@\\[\\\\\\]^`{|}~\\s]+/\n };\n Prism.hooks.add('before-tokenize', function (env) {\n var handlebarsPattern = /\\{\\{\\{[\\s\\S]+?\\}\\}\\}|\\{\\{[\\s\\S]+?\\}\\}/g;\n Prism.languages['markup-templating'].buildPlaceholders(env, 'handlebars', handlebarsPattern);\n });\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'handlebars');\n });\n})(Prism);\n/* \"prismjs/components/prism-json\" */\n// https://www.json.org/json-en.html\n\n\nPrism.languages.json = {\n 'property': {\n pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n greedy: true\n },\n 'string': {\n pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,\n greedy: true\n },\n 'comment': {\n pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n greedy: true\n },\n 'number': /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n 'punctuation': /[{}[\\],]/,\n 'operator': /:/,\n 'boolean': /\\b(?:true|false)\\b/,\n 'null': {\n pattern: /\\bnull\\b/,\n alias: 'keyword'\n }\n};\nPrism.languages.webmanifest = Prism.languages.json;\n/* \"prismjs/components/prism-less\" */\n\n/* FIXME :\n :extend() is not handled specifically : its highlighting is buggy.\n Mixin usage must be inside a ruleset to be highlighted.\n At-rules (e.g. import) containing interpolations are buggy.\n Detached rulesets are highlighted as at-rules.\n A comment before a mixin usage prevents the latter to be properly highlighted.\n */\n\nPrism.languages.less = Prism.languages.extend('css', {\n 'comment': [/\\/\\*[\\s\\S]*?\\*\\//, {\n pattern: /(^|[^\\\\])\\/\\/.*/,\n lookbehind: true\n }],\n 'atrule': {\n pattern: /@[\\w-](?:\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,\n inside: {\n 'punctuation': /[:()]/\n }\n },\n // selectors and mixins are considered the same\n 'selector': {\n pattern: /(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};@\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,\n inside: {\n // mixin parameters\n 'variable': /@+[\\w-]+/\n }\n },\n 'property': /(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/i,\n 'operator': /[+\\-*\\/]/\n});\nPrism.languages.insertBefore('less', 'property', {\n 'variable': [// Variable declaration (the colon must be consumed!)\n {\n pattern: /@[\\w-]+\\s*:/,\n inside: {\n \"punctuation\": /:/\n }\n }, // Variable usage\n /@@?[\\w-]+/],\n 'mixin-usage': {\n pattern: /([{;]\\s*)[.#](?!\\d)[\\w-].*?(?=[(;])/,\n lookbehind: true,\n alias: 'function'\n }\n});\n/* \"prismjs/components/prism-makefile\" */\n\nPrism.languages.makefile = {\n 'comment': {\n pattern: /(^|[^\\\\])#(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])*/,\n lookbehind: true\n },\n 'string': {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n // Built-in target names\n 'builtin': /\\.[A-Z][^:#=\\s]+(?=\\s*:(?!=))/,\n // Targets\n 'symbol': {\n pattern: /^(?:[^:=\\s]|[ \\t]+(?![\\s:]))+(?=\\s*:(?!=))/m,\n inside: {\n 'variable': /\\$+(?:(?!\\$)[^(){}:#=\\s]+|(?=[({]))/\n }\n },\n 'variable': /\\$+(?:(?!\\$)[^(){}:#=\\s]+|\\([@*%<^+?][DF]\\)|(?=[({]))/,\n 'keyword': [// Directives\n /-include\\b|\\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\\b/, // Functions\n {\n pattern: /(\\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \\t])/,\n lookbehind: true\n }],\n 'operator': /(?:::|[?:+!])?=|[|@]/,\n 'punctuation': /[:;(){}]/\n};\n/* \"prismjs/components/prism-markdown\" */\n\n(function (Prism) {\n // Allow only one line break\n var inner = /(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?!\\n|\\r\\n?))/.source;\n /**\n * This function is intended for the creation of the bold or italic pattern.\n *\n * This also adds a lookbehind group to the given pattern to ensure that the pattern is not backslash-escaped.\n *\n * _Note:_ Keep in mind that this adds a capturing group.\n *\n * @param {string} pattern\n * @returns {RegExp}\n */\n\n function createInline(pattern) {\n pattern = pattern.replace(/<inner>/g, function () {\n return inner;\n });\n return RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + '(?:' + pattern + ')');\n }\n\n var tableCell = /(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+/.source;\n var tableRow = /\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))/.source.replace(/__/g, function () {\n return tableCell;\n });\n var tableLine = /\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)/.source;\n Prism.languages.markdown = Prism.languages.extend('markup', {});\n Prism.languages.insertBefore('markdown', 'prolog', {\n 'front-matter-block': {\n pattern: /(^(?:\\s*[\\r\\n])?)---(?!.)[\\s\\S]*?[\\r\\n]---(?!.)/,\n lookbehind: true,\n greedy: true,\n inside: {\n 'punctuation': /^---|---$/,\n 'font-matter': {\n pattern: /\\S+(?:\\s+\\S+)*/,\n alias: ['yaml', 'language-yaml'],\n inside: Prism.languages.yaml\n }\n }\n },\n 'blockquote': {\n // > ...\n pattern: /^>(?:[\\t ]*>)*/m,\n alias: 'punctuation'\n },\n 'table': {\n pattern: RegExp('^' + tableRow + tableLine + '(?:' + tableRow + ')*', 'm'),\n inside: {\n 'table-data-rows': {\n pattern: RegExp('^(' + tableRow + tableLine + ')(?:' + tableRow + ')*$'),\n lookbehind: true,\n inside: {\n 'table-data': {\n pattern: RegExp(tableCell),\n inside: Prism.languages.markdown\n },\n 'punctuation': /\\|/\n }\n },\n 'table-line': {\n pattern: RegExp('^(' + tableRow + ')' + tableLine + '$'),\n lookbehind: true,\n inside: {\n 'punctuation': /\\||:?-{3,}:?/\n }\n },\n 'table-header-row': {\n pattern: RegExp('^' + tableRow + '$'),\n inside: {\n 'table-header': {\n pattern: RegExp(tableCell),\n alias: 'important',\n inside: Prism.languages.markdown\n },\n 'punctuation': /\\|/\n }\n }\n }\n },\n 'code': [{\n // Prefixed by 4 spaces or 1 tab and preceded by an empty line\n pattern: /((?:^|\\n)[ \\t]*\\n|(?:^|\\r\\n?)[ \\t]*\\r\\n?)(?: {4}|\\t).+(?:(?:\\n|\\r\\n?)(?: {4}|\\t).+)*/,\n lookbehind: true,\n alias: 'keyword'\n }, {\n // `code`\n // ``code``\n pattern: /``.+?``|`[^`\\r\\n]+`/,\n alias: 'keyword'\n }, {\n // ```optional language\n // code block\n // ```\n pattern: /^```[\\s\\S]*?^```$/m,\n greedy: true,\n inside: {\n 'code-block': {\n pattern: /^(```.*(?:\\n|\\r\\n?))[\\s\\S]+?(?=(?:\\n|\\r\\n?)^```$)/m,\n lookbehind: true\n },\n 'code-language': {\n pattern: /^(```).+/,\n lookbehind: true\n },\n 'punctuation': /```/\n }\n }],\n 'title': [{\n // title 1\n // =======\n // title 2\n // -------\n pattern: /\\S.*(?:\\n|\\r\\n?)(?:==+|--+)(?=[ \\t]*$)/m,\n alias: 'important',\n inside: {\n punctuation: /==+$|--+$/\n }\n }, {\n // # title 1\n // ###### title 6\n pattern: /(^\\s*)#.+/m,\n lookbehind: true,\n alias: 'important',\n inside: {\n punctuation: /^#+|#+$/\n }\n }],\n 'hr': {\n // ***\n // ---\n // * * *\n // -----------\n pattern: /(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,\n lookbehind: true,\n alias: 'punctuation'\n },\n 'list': {\n // * item\n // + item\n // - item\n // 1. item\n pattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n lookbehind: true,\n alias: 'punctuation'\n },\n 'url-reference': {\n // [id]: http://example.com \"Optional title\"\n // [id]: http://example.com 'Optional title'\n // [id]: http://example.com (Optional title)\n // [id]: <http://example.com> \"Optional title\"\n pattern: /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n inside: {\n 'variable': {\n pattern: /^(!?\\[)[^\\]]+/,\n lookbehind: true\n },\n 'string': /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n 'punctuation': /^[\\[\\]!:]|[<>]/\n },\n alias: 'url'\n },\n 'bold': {\n // **strong**\n // __strong__\n // allow one nested instance of italic text using the same delimiter\n pattern: createInline(/\\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\\b|\\*\\*(?:(?!\\*)<inner>|\\*(?:(?!\\*)<inner>)+\\*)+\\*\\*/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n 'content': {\n pattern: /(^..)[\\s\\S]+(?=..$)/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'punctuation': /\\*\\*|__/\n }\n },\n 'italic': {\n // *em*\n // _em_\n // allow one nested instance of bold text using the same delimiter\n pattern: createInline(/\\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\\b|\\*(?:(?!\\*)<inner>|\\*\\*(?:(?!\\*)<inner>)+\\*\\*)+\\*/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n 'content': {\n pattern: /(^.)[\\s\\S]+(?=.$)/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'punctuation': /[*_]/\n }\n },\n 'strike': {\n // ~~strike through~~\n // ~strike~\n pattern: createInline(/(~~?)(?:(?!~)<inner>)+?\\2/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n 'content': {\n pattern: /(^~~?)[\\s\\S]+(?=\\1$)/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'punctuation': /~~?/\n }\n },\n 'url': {\n // [example](http://example.com \"Optional title\")\n // [example][id]\n // [example] [id]\n pattern: createInline(/!?\\[(?:(?!\\])<inner>)+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)|[ \\t]?\\[(?:(?!\\])<inner>)+\\])/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n 'operator': /^!/,\n 'content': {\n pattern: /(^\\[)[^\\]]+(?=\\])/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'variable': {\n pattern: /(^\\][ \\t]?\\[)[^\\]]+(?=\\]$)/,\n lookbehind: true\n },\n 'url': {\n pattern: /(^\\]\\()[^\\s)]+/,\n lookbehind: true\n },\n 'string': {\n pattern: /(^[ \\t]+)\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/,\n lookbehind: true\n }\n }\n }\n });\n ['url', 'bold', 'italic', 'strike'].forEach(function (token) {\n ['url', 'bold', 'italic', 'strike'].forEach(function (inside) {\n if (token !== inside) {\n Prism.languages.markdown[token].inside.content.inside[inside] = Prism.languages.markdown[inside];\n }\n });\n });\n Prism.hooks.add('after-tokenize', function (env) {\n if (env.language !== 'markdown' && env.language !== 'md') {\n return;\n }\n\n function walkTokens(tokens) {\n if (!tokens || typeof tokens === 'string') {\n return;\n }\n\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i];\n\n if (token.type !== 'code') {\n walkTokens(token.content);\n continue;\n }\n /*\n * Add the correct `language-xxxx` class to this code block. Keep in mind that the `code-language` token\n * is optional. But the grammar is defined so that there is only one case we have to handle:\n *\n * token.content = [\n * <span class=\"punctuation\">```</span>,\n * <span class=\"code-language\">xxxx</span>,\n * '\\n', // exactly one new lines (\\r or \\n or \\r\\n)\n * <span class=\"code-block\">...</span>,\n * '\\n', // exactly one new lines again\n * <span class=\"punctuation\">```</span>\n * ];\n */\n\n\n var codeLang = token.content[1];\n var codeBlock = token.content[3];\n\n if (codeLang && codeBlock && codeLang.type === 'code-language' && codeBlock.type === 'code-block' && typeof codeLang.content === 'string') {\n // this might be a language that Prism does not support\n // do some replacements to support C++, C#, and F#\n var lang = codeLang.content.replace(/\\b#/g, 'sharp').replace(/\\b\\+\\+/g, 'pp'); // only use the first word\n\n lang = (/[a-z][\\w-]*/i.exec(lang) || [''])[0].toLowerCase();\n var alias = 'language-' + lang; // add alias\n\n if (!codeBlock.alias) {\n codeBlock.alias = [alias];\n } else if (typeof codeBlock.alias === 'string') {\n codeBlock.alias = [codeBlock.alias, alias];\n } else {\n codeBlock.alias.push(alias);\n }\n }\n }\n }\n\n walkTokens(env.tokens);\n });\n Prism.hooks.add('wrap', function (env) {\n if (env.type !== 'code-block') {\n return;\n }\n\n var codeLang = '';\n\n for (var i = 0, l = env.classes.length; i < l; i++) {\n var cls = env.classes[i];\n var match = /language-(.+)/.exec(cls);\n\n if (match) {\n codeLang = match[1];\n break;\n }\n }\n\n var grammar = Prism.languages[codeLang];\n\n if (!grammar) {\n if (codeLang && codeLang !== 'none' && Prism.plugins.autoloader) {\n var id = 'md-' + new Date().valueOf() + '-' + Math.floor(Math.random() * 1e16);\n env.attributes['id'] = id;\n Prism.plugins.autoloader.loadLanguages(codeLang, function () {\n var ele = document.getElementById(id);\n\n if (ele) {\n ele.innerHTML = Prism.highlight(ele.textContent, Prism.languages[codeLang], codeLang);\n }\n });\n }\n } else {\n // reverse Prism.util.encode\n var code = env.content.replace(/&lt;/g, '<').replace(/&amp;/g, '&');\n env.content = Prism.highlight(code, grammar, codeLang);\n }\n });\n Prism.languages.md = Prism.languages.markdown;\n})(Prism);\n/* \"prismjs/components/prism-objectivec\" */\n\n\nPrism.languages.objectivec = Prism.languages.extend('c', {\n 'string': /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|@\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n 'keyword': /\\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n 'operator': /-[->]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n});\ndelete Prism.languages.objectivec['class-name'];\nPrism.languages.objc = Prism.languages.objectivec;\n/* \"prismjs/components/prism-ocaml\" */\n\nPrism.languages.ocaml = {\n 'comment': /\\(\\*[\\s\\S]*?\\*\\)/,\n 'string': [{\n pattern: /\"(?:\\\\.|[^\\\\\\r\\n\"])*\"/,\n greedy: true\n }, {\n pattern: /(['`])(?:\\\\(?:\\d+|x[\\da-f]+|.)|(?!\\1)[^\\\\\\r\\n])\\1/i,\n greedy: true\n }],\n 'number': /\\b(?:0x[\\da-f][\\da-f_]+|(?:0[bo])?\\d[\\d_]*(?:\\.[\\d_]*)?(?:e[+-]?[\\d_]+)?)/i,\n 'directive': {\n pattern: /\\B#\\w+/,\n alias: 'important'\n },\n 'label': {\n pattern: /\\B~\\w+/,\n alias: 'function'\n },\n 'type-variable': {\n pattern: /\\B'\\w+/,\n alias: 'function'\n },\n 'variant': {\n pattern: /`\\w+/,\n alias: 'variable'\n },\n 'module': {\n pattern: /\\b[A-Z]\\w+/,\n alias: 'variable'\n },\n // For the list of keywords and operators,\n // see: http://caml.inria.fr/pub/docs/manual-ocaml/lex.html#sec84\n 'keyword': /\\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\\b/,\n 'boolean': /\\b(?:false|true)\\b/,\n // Custom operators are allowed\n 'operator': /:=|[=<>@^|&+\\-*\\/$%!?~][!$%&*+\\-.\\/:<=>?@^|~]*|\\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\\b/,\n 'punctuation': /[(){}\\[\\]|.,:;]|\\b_\\b/\n};\n/* \"prismjs/components/prism-python\" */\n\nPrism.languages.python = {\n 'comment': {\n pattern: /(^|[^\\\\])#.*/,\n lookbehind: true\n },\n 'string-interpolation': {\n pattern: /(?:f|rf|fr)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,\n greedy: true,\n inside: {\n 'interpolation': {\n // \"{\" <expression> <optional \"!s\", \"!r\", or \"!a\"> <optional \":\" format specifier> \"}\"\n pattern: /((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/,\n lookbehind: true,\n inside: {\n 'format-spec': {\n pattern: /(:)[^:(){}]+(?=}$)/,\n lookbehind: true\n },\n 'conversion-option': {\n pattern: /![sra](?=[:}]$)/,\n alias: 'punctuation'\n },\n rest: null\n }\n },\n 'string': /[\\s\\S]+/\n }\n },\n 'triple-quoted-string': {\n pattern: /(?:[rub]|rb|br)?(\"\"\"|''')[\\s\\S]*?\\1/i,\n greedy: true,\n alias: 'string'\n },\n 'string': {\n pattern: /(?:[rub]|rb|br)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,\n greedy: true\n },\n 'function': {\n pattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n lookbehind: true\n },\n 'class-name': {\n pattern: /(\\bclass\\s+)\\w+/i,\n lookbehind: true\n },\n 'decorator': {\n pattern: /(^\\s*)@\\w+(?:\\.\\w+)*/im,\n lookbehind: true,\n alias: ['annotation', 'punctuation'],\n inside: {\n 'punctuation': /\\./\n }\n },\n 'keyword': /\\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,\n 'builtin': /\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n 'boolean': /\\b(?:True|False|None)\\b/,\n 'number': /(?:\\b(?=\\d)|\\B(?=\\.))(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?j?\\b/i,\n 'operator': /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n 'punctuation': /[{}[\\];(),.:]/\n};\nPrism.languages.python['string-interpolation'].inside['interpolation'].inside.rest = Prism.languages.python;\nPrism.languages.py = Prism.languages.python;\n/* \"prismjs/components/prism-reason\" */\n\nPrism.languages.reason = Prism.languages.extend('clike', {\n 'string': {\n pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n\"])*\"/,\n greedy: true\n },\n // 'class-name' must be matched *after* 'constructor' defined below\n 'class-name': /\\b[A-Z]\\w*/,\n 'keyword': /\\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\\b/,\n 'operator': /\\.{3}|:[:=]|\\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\\-*\\/]\\.?|\\b(?:mod|land|lor|lxor|lsl|lsr|asr)\\b/\n});\nPrism.languages.insertBefore('reason', 'class-name', {\n 'character': {\n pattern: /'(?:\\\\x[\\da-f]{2}|\\\\o[0-3][0-7][0-7]|\\\\\\d{3}|\\\\.|[^'\\\\\\r\\n])'/,\n alias: 'string'\n },\n 'constructor': {\n // Negative look-ahead prevents from matching things like String.capitalize\n pattern: /\\b[A-Z]\\w*\\b(?!\\s*\\.)/,\n alias: 'variable'\n },\n 'label': {\n pattern: /\\b[a-z]\\w*(?=::)/,\n alias: 'symbol'\n }\n}); // We can't match functions property, so let's not even try.\n\ndelete Prism.languages.reason.function;\n/* \"prismjs/components/prism-sass\" */\n\n(function (Prism) {\n Prism.languages.sass = Prism.languages.extend('css', {\n // Sass comments don't need to be closed, only indented\n 'comment': {\n pattern: /^([ \\t]*)\\/[\\/*].*(?:(?:\\r?\\n|\\r)\\1[ \\t].+)*/m,\n lookbehind: true\n }\n });\n Prism.languages.insertBefore('sass', 'atrule', {\n // We want to consume the whole line\n 'atrule-line': {\n // Includes support for = and + shortcuts\n pattern: /^(?:[ \\t]*)[@+=].+/m,\n inside: {\n 'atrule': /(?:@[\\w-]+|[+=])/m\n }\n }\n });\n delete Prism.languages.sass.atrule;\n var variable = /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/;\n var operator = [/[+*\\/%]|[=!]=|<=?|>=?|\\b(?:and|or|not)\\b/, {\n pattern: /(\\s+)-(?=\\s)/,\n lookbehind: true\n }];\n Prism.languages.insertBefore('sass', 'property', {\n // We want to consume the whole line\n 'variable-line': {\n pattern: /^[ \\t]*\\$.+/m,\n inside: {\n 'punctuation': /:/,\n 'variable': variable,\n 'operator': operator\n }\n },\n // We want to consume the whole line\n 'property-line': {\n pattern: /^[ \\t]*(?:[^:\\s]+ *:.*|:[^:\\s].*)/m,\n inside: {\n 'property': [/[^:\\s]+(?=\\s*:)/, {\n pattern: /(:)[^:\\s]+/,\n lookbehind: true\n }],\n 'punctuation': /:/,\n 'variable': variable,\n 'operator': operator,\n 'important': Prism.languages.sass.important\n }\n }\n });\n delete Prism.languages.sass.property;\n delete Prism.languages.sass.important; // Now that whole lines for other patterns are consumed,\n // what's left should be selectors\n\n Prism.languages.insertBefore('sass', 'punctuation', {\n 'selector': {\n pattern: /([ \\t]*)\\S(?:,[^,\\r\\n]+|[^,\\r\\n]*)(?:,[^,\\r\\n]+)*(?:,(?:\\r?\\n|\\r)\\1[ \\t]+\\S(?:,[^,\\r\\n]+|[^,\\r\\n]*)(?:,[^,\\r\\n]+)*)*/,\n lookbehind: true\n }\n });\n})(Prism);\n/* \"prismjs/components/prism-scss\" */\n\n\nPrism.languages.scss = Prism.languages.extend('css', {\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true\n },\n 'atrule': {\n pattern: /@[\\w-](?:\\([^()]+\\)|[^()\\s]|\\s+(?!\\s))*?(?=\\s+[{;])/,\n inside: {\n 'rule': /@[\\w-]+/ // See rest below\n\n }\n },\n // url, compassified\n 'url': /(?:[-a-z]+-)?url(?=\\()/i,\n // CSS selector regex is not appropriate for Sass\n // since there can be lot more things (var, @ directive, nesting..)\n // a selector must start at the end of a property or after a brace (end of other rules or nesting)\n // it can contain some characters that aren't used for defining rules or end of selector, & (parent selector), or interpolated variable\n // the end of a selector is found when there is no rules in it ( {} or {\\s}) or if there is a property (because an interpolated var\n // can \"pass\" as a selector- e.g: proper#{$erty})\n // this one was hard to do, so please be careful if you edit this one :)\n 'selector': {\n // Initial look-ahead is used to prevent matching of blank selectors\n pattern: /(?=\\S)[^@;{}()]?(?:[^@;{}()\\s]|\\s+(?!\\s)|#\\{\\$[-\\w]+\\})+(?=\\s*\\{(?:\\}|\\s|[^}][^:{}]*[:{][^}]+))/m,\n inside: {\n 'parent': {\n pattern: /&/,\n alias: 'important'\n },\n 'placeholder': /%[-\\w]+/,\n 'variable': /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n }\n },\n 'property': {\n pattern: /(?:[-\\w]|\\$[-\\w]|#\\{\\$[-\\w]+\\})+(?=\\s*:)/,\n inside: {\n 'variable': /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n }\n }\n});\nPrism.languages.insertBefore('scss', 'atrule', {\n 'keyword': [/@(?:if|else(?: if)?|forward|for|each|while|import|use|extend|debug|warn|mixin|include|function|return|content)\\b/i, {\n pattern: /( +)(?:from|through)(?= )/,\n lookbehind: true\n }]\n});\nPrism.languages.insertBefore('scss', 'important', {\n // var and interpolated vars\n 'variable': /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n});\nPrism.languages.insertBefore('scss', 'function', {\n 'module-modifier': {\n pattern: /\\b(?:as|with|show|hide)\\b/i,\n alias: 'keyword'\n },\n 'placeholder': {\n pattern: /%[-\\w]+/,\n alias: 'selector'\n },\n 'statement': {\n pattern: /\\B!(?:default|optional)\\b/i,\n alias: 'keyword'\n },\n 'boolean': /\\b(?:true|false)\\b/,\n 'null': {\n pattern: /\\bnull\\b/,\n alias: 'keyword'\n },\n 'operator': {\n pattern: /(\\s)(?:[-+*\\/%]|[=!]=|<=?|>=?|and|or|not)(?=\\s)/,\n lookbehind: true\n }\n});\nPrism.languages.scss['atrule'].inside.rest = Prism.languages.scss;\n/* \"prismjs/components/prism-sql\" */\n\nPrism.languages.sql = {\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n lookbehind: true\n },\n 'variable': [{\n pattern: /@([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1/,\n greedy: true\n }, /@[\\w.$]+/],\n 'string': {\n pattern: /(^|[^@\\\\])(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\]|\\2\\2)*\\2/,\n greedy: true,\n lookbehind: true\n },\n 'function': /\\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\\s*\\()/i,\n // Should we highlight user defined functions too?\n 'keyword': /\\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:S|ING)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\\b/i,\n 'boolean': /\\b(?:TRUE|FALSE|NULL)\\b/i,\n 'number': /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/i,\n 'operator': /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n 'punctuation': /[;[\\]()`,.]/\n};\n/* \"prismjs/components/prism-stylus\" */\n\n(function (Prism) {\n var unit = {\n pattern: /(\\b\\d+)(?:%|[a-z]+)/,\n lookbehind: true\n }; // 123 -123 .123 -.123 12.3 -12.3\n\n var number = {\n pattern: /(^|[^\\w.-])-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/,\n lookbehind: true\n };\n var inside = {\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true\n },\n 'url': {\n pattern: /url\\(([\"']?).*?\\1\\)/i,\n greedy: true\n },\n 'string': {\n pattern: /(\"|')(?:(?!\\1)[^\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\\1/,\n greedy: true\n },\n 'interpolation': null,\n // See below\n 'func': null,\n // See below\n 'important': /\\B!(?:important|optional)\\b/i,\n 'keyword': {\n pattern: /(^|\\s+)(?:(?:if|else|for|return|unless)(?=\\s+|$)|@[\\w-]+)/,\n lookbehind: true\n },\n 'hexcode': /#[\\da-f]{3,6}/i,\n 'color': [/\\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\\b/i, {\n pattern: /\\b(?:rgb|hsl)\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\)\\B|\\b(?:rgb|hsl)a\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*,\\s*(?:0|0?\\.\\d+|1)\\s*\\)\\B/i,\n inside: {\n 'unit': unit,\n 'number': number,\n 'function': /[\\w-]+(?=\\()/,\n 'punctuation': /[(),]/\n }\n }],\n 'entity': /\\\\[\\da-f]{1,8}/i,\n 'unit': unit,\n 'boolean': /\\b(?:true|false)\\b/,\n 'operator': [// We want non-word chars around \"-\" because it is\n // accepted in property names.\n /~|[+!\\/%<>?=]=?|[-:]=|\\*[*=]?|\\.{2,3}|&&|\\|\\||\\B-\\B|\\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\\b/],\n 'number': number,\n 'punctuation': /[{}()\\[\\];:,]/\n };\n inside['interpolation'] = {\n pattern: /\\{[^\\r\\n}:]+\\}/,\n alias: 'variable',\n inside: {\n 'delimiter': {\n pattern: /^{|}$/,\n alias: 'punctuation'\n },\n rest: inside\n }\n };\n inside['func'] = {\n pattern: /[\\w-]+\\([^)]*\\).*/,\n inside: {\n 'function': /^[^(]+/,\n rest: inside\n }\n };\n Prism.languages.stylus = {\n 'atrule-declaration': {\n pattern: /(^\\s*)@.+/m,\n lookbehind: true,\n inside: {\n 'atrule': /^@[\\w-]+/,\n rest: inside\n }\n },\n 'variable-declaration': {\n pattern: /(^[ \\t]*)[\\w$-]+\\s*.?=[ \\t]*(?:\\{[^{}]*\\}|\\S.*|$)/m,\n lookbehind: true,\n inside: {\n 'variable': /^\\S+/,\n rest: inside\n }\n },\n 'statement': {\n pattern: /(^[ \\t]*)(?:if|else|for|return|unless)[ \\t].+/m,\n lookbehind: true,\n inside: {\n 'keyword': /^\\S+/,\n rest: inside\n }\n },\n // A property/value pair cannot end with a comma or a brace\n // It cannot have indented content unless it ended with a semicolon\n 'property-declaration': {\n pattern: /((?:^|\\{)([ \\t]*))(?:[\\w-]|\\{[^}\\r\\n]+\\})+(?:\\s*:\\s*|[ \\t]+)(?!\\s)[^{\\r\\n]*(?:;|[^{\\r\\n,](?=$)(?!(?:\\r?\\n|\\r)(?:\\{|\\2[ \\t]+)))/m,\n lookbehind: true,\n inside: {\n 'property': {\n pattern: /^[^\\s:]+/,\n inside: {\n 'interpolation': inside.interpolation\n }\n },\n rest: inside\n }\n },\n // A selector can contain parentheses only as part of a pseudo-element\n // It can span multiple lines.\n // It must end with a comma or an accolade or have indented content.\n 'selector': {\n pattern: /(^[ \\t]*)(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\)|(?![\\w-]))|\\{[^}\\r\\n]+\\})+)(?:(?:\\r?\\n|\\r)(?:\\1(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\)|(?![\\w-]))|\\{[^}\\r\\n]+\\})+)))*(?:,$|\\{|(?=(?:\\r?\\n|\\r)(?:\\{|\\1[ \\t]+)))/m,\n lookbehind: true,\n inside: {\n 'interpolation': inside.interpolation,\n 'comment': inside.comment,\n 'punctuation': /[{},]/\n }\n },\n 'func': inside.func,\n 'string': inside.string,\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true,\n greedy: true\n },\n 'interpolation': inside.interpolation,\n 'punctuation': /[{}()\\[\\];:.]/\n };\n})(Prism);\n/* \"prismjs/components/prism-typescript\" */\n\n\n(function (Prism) {\n Prism.languages.typescript = Prism.languages.extend('javascript', {\n 'class-name': {\n pattern: /(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,\n lookbehind: true,\n greedy: true,\n inside: null // see below\n\n },\n // From JavaScript Prism keyword list and TypeScript language spec: https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#221-reserved-words\n 'keyword': /\\b(?:abstract|as|asserts|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|undefined|var|void|while|with|yield)\\b/,\n 'builtin': /\\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\\b/\n }); // doesn't work with TS because TS is too complex\n\n delete Prism.languages.typescript['parameter']; // a version of typescript specifically for highlighting types\n\n var typeInside = Prism.languages.extend('typescript', {});\n delete typeInside['class-name'];\n Prism.languages.typescript['class-name'].inside = typeInside;\n Prism.languages.insertBefore('typescript', 'function', {\n 'generic-function': {\n // e.g. foo<T extends \"bar\" | \"baz\">( ...\n pattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/,\n greedy: true,\n inside: {\n 'function': /^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/,\n 'generic': {\n pattern: /<[\\s\\S]+/,\n // everything after the first <\n alias: 'class-name',\n inside: typeInside\n }\n }\n }\n });\n Prism.languages.ts = Prism.languages.typescript;\n})(Prism);\n/* \"prismjs/components/prism-tsx\" */\n\n\n(function (Prism) {\n var typescript = Prism.util.clone(Prism.languages.typescript);\n Prism.languages.tsx = Prism.languages.extend('jsx', typescript); // This will prevent collisions between TSX tags and TS generic types.\n // Idea by https://github.com/karlhorky\n // Discussion: https://github.com/PrismJS/prism/issues/2594#issuecomment-710666928\n\n var tag = Prism.languages.tsx.tag;\n tag.pattern = RegExp(/(^|[^\\w$]|(?=<\\/))/.source + '(?:' + tag.pattern.source + ')', tag.pattern.flags);\n tag.lookbehind = true;\n})(Prism);\n/* \"prismjs/components/prism-wasm\" */\n\n\nPrism.languages.wasm = {\n 'comment': [/\\(;[\\s\\S]*?;\\)/, {\n pattern: /;;.*/,\n greedy: true\n }],\n 'string': {\n pattern: /\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"/,\n greedy: true\n },\n 'keyword': [{\n pattern: /\\b(?:align|offset)=/,\n inside: {\n 'operator': /=/\n }\n }, {\n pattern: /\\b(?:(?:f32|f64|i32|i64)(?:\\.(?:abs|add|and|ceil|clz|const|convert_[su]\\/i(?:32|64)|copysign|ctz|demote\\/f64|div(?:_[su])?|eqz?|extend_[su]\\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\\/f32|reinterpret\\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\\/f(?:32|64))?|wrap\\/i64|xor))?|memory\\.(?:grow|size))\\b/,\n inside: {\n 'punctuation': /\\./\n }\n }, /\\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\\b/],\n 'variable': /\\$[\\w!#$%&'*+\\-./:<=>?@\\\\^_`|~]+/i,\n 'number': /[+-]?\\b(?:\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:[eE][+-]?\\d(?:_?\\d)*)?|0x[\\da-fA-F](?:_?[\\da-fA-F])*(?:\\.[\\da-fA-F](?:_?[\\da-fA-D])*)?(?:[pP][+-]?\\d(?:_?\\d)*)?)\\b|\\binf\\b|\\bnan(?::0x[\\da-fA-F](?:_?[\\da-fA-D])*)?\\b/,\n 'punctuation': /[()]/\n};\n/* \"prismjs/components/prism-yaml\" */\n\n(function (Prism) {\n // https://yaml.org/spec/1.2/spec.html#c-ns-anchor-property\n // https://yaml.org/spec/1.2/spec.html#c-ns-alias-node\n var anchorOrAlias = /[*&][^\\s[\\]{},]+/; // https://yaml.org/spec/1.2/spec.html#c-ns-tag-property\n\n var tag = /!(?:<[\\w\\-%#;/?:@&=+$,.!~*'()[\\]]+>|(?:[a-zA-Z\\d-]*!)?[\\w\\-%#;/?:@&=+$.~*'()]+)?/; // https://yaml.org/spec/1.2/spec.html#c-ns-properties(n,c)\n\n var properties = '(?:' + tag.source + '(?:[ \\t]+' + anchorOrAlias.source + ')?|' + anchorOrAlias.source + '(?:[ \\t]+' + tag.source + ')?)'; // https://yaml.org/spec/1.2/spec.html#ns-plain(n,c)\n // This is a simplified version that doesn't support \"#\" and multiline keys\n // All these long scarry character classes are simplified versions of YAML's characters\n\n var plainKey = /(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-]<PLAIN>)(?:[ \\t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g, function () {\n return /[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]/.source;\n });\n var string = /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\\\\\r\\n]|\\\\.)*'/.source;\n /**\n *\n * @param {string} value\n * @param {string} [flags]\n * @returns {RegExp}\n */\n\n function createValuePattern(value, flags) {\n flags = (flags || '').replace(/m/g, '') + 'm'; // add m flag\n\n var pattern = /([:\\-,[{]\\s*(?:\\s<<prop>>[ \\t]+)?)(?:<<value>>)(?=[ \\t]*(?:$|,|]|}|(?:[\\r\\n]\\s*)?#))/.source.replace(/<<prop>>/g, function () {\n return properties;\n }).replace(/<<value>>/g, function () {\n return value;\n });\n return RegExp(pattern, flags);\n }\n\n Prism.languages.yaml = {\n 'scalar': {\n pattern: RegExp(/([\\-:]\\s*(?:\\s<<prop>>[ \\t]+)?[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)\\S[^\\r\\n]*(?:\\2[^\\r\\n]+)*)/.source.replace(/<<prop>>/g, function () {\n return properties;\n })),\n lookbehind: true,\n alias: 'string'\n },\n 'comment': /#.*/,\n 'key': {\n pattern: RegExp(/((?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:<<prop>>[ \\t]+)?)<<key>>(?=\\s*:\\s)/.source.replace(/<<prop>>/g, function () {\n return properties;\n }).replace(/<<key>>/g, function () {\n return '(?:' + plainKey + '|' + string + ')';\n })),\n lookbehind: true,\n greedy: true,\n alias: 'atrule'\n },\n 'directive': {\n pattern: /(^[ \\t]*)%.+/m,\n lookbehind: true,\n alias: 'important'\n },\n 'datetime': {\n pattern: createValuePattern(/\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?/.source),\n lookbehind: true,\n alias: 'number'\n },\n 'boolean': {\n pattern: createValuePattern(/true|false/.source, 'i'),\n lookbehind: true,\n alias: 'important'\n },\n 'null': {\n pattern: createValuePattern(/null|~/.source, 'i'),\n lookbehind: true,\n alias: 'important'\n },\n 'string': {\n pattern: createValuePattern(string),\n lookbehind: true,\n greedy: true\n },\n 'number': {\n pattern: createValuePattern(/[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.?\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)/.source, 'i'),\n lookbehind: true\n },\n 'tag': tag,\n 'important': anchorOrAlias,\n 'punctuation': /---|[:[\\]{}\\-,|>?]|\\.\\.\\./\n };\n Prism.languages.yml = Prism.languages.yaml;\n})(Prism);\n\nexport default Prism;\n","// Duotone Dark\n// Author: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duotone-themes)\n// Conversion: Bram de Haan (http://atelierbram.github.io/Base2Tone-prism/output/prism/prism-base2tone-evening-dark.css)\n// Generated with Base16 Builder (https://github.com/base16-builder/base16-builder)\nvar theme = {\n plain: {\n backgroundColor: \"#2a2734\",\n color: \"#9a86fd\"\n },\n styles: [{\n types: [\"comment\", \"prolog\", \"doctype\", \"cdata\", \"punctuation\"],\n style: {\n color: \"#6c6783\"\n }\n }, {\n types: [\"namespace\"],\n style: {\n opacity: 0.7\n }\n }, {\n types: [\"tag\", \"operator\", \"number\"],\n style: {\n color: \"#e09142\"\n }\n }, {\n types: [\"property\", \"function\"],\n style: {\n color: \"#9a86fd\"\n }\n }, {\n types: [\"tag-id\", \"selector\", \"atrule-id\"],\n style: {\n color: \"#eeebff\"\n }\n }, {\n types: [\"attr-name\"],\n style: {\n color: \"#c4b9fe\"\n }\n }, {\n types: [\"boolean\", \"string\", \"entity\", \"url\", \"attr-value\", \"keyword\", \"control\", \"directive\", \"unit\", \"statement\", \"regex\", \"at-rule\", \"placeholder\", \"variable\"],\n style: {\n color: \"#ffcc99\"\n }\n }, {\n types: [\"deleted\"],\n style: {\n textDecorationLine: \"line-through\"\n }\n }, {\n types: [\"inserted\"],\n style: {\n textDecorationLine: \"underline\"\n }\n }, {\n types: [\"italic\"],\n style: {\n fontStyle: \"italic\"\n }\n }, {\n types: [\"important\", \"bold\"],\n style: {\n fontWeight: \"bold\"\n }\n }, {\n types: [\"important\"],\n style: {\n color: \"#c4b9fe\"\n }\n }]\n};\n\nexport default theme;\n","import Prism from '../prism/index.js';\nexport { default as Prism } from '../prism/index.js';\nimport theme from '../themes/duotoneDark';\nimport { Component } from 'react';\n\nvar defaultProps = {\n // $FlowFixMe\n Prism: Prism,\n theme: theme\n};\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar newlineRe = /\\r\\n|\\r|\\n/; // Empty lines need to contain a single empty token, denoted with { empty: true }\n\nvar normalizeEmptyLines = function (line) {\n if (line.length === 0) {\n line.push({\n types: [\"plain\"],\n content: \"\\n\",\n empty: true\n });\n } else if (line.length === 1 && line[0].content === \"\") {\n line[0].content = \"\\n\";\n line[0].empty = true;\n }\n};\n\nvar appendTypes = function (types, add) {\n var typesSize = types.length;\n\n if (typesSize > 0 && types[typesSize - 1] === add) {\n return types;\n }\n\n return types.concat(add);\n}; // Takes an array of Prism's tokens and groups them by line, turning plain\n// strings into tokens as well. Tokens can become recursive in some cases,\n// which means that their types are concatenated. Plain-string tokens however\n// are always of type \"plain\".\n// This is not recursive to avoid exceeding the call-stack limit, since it's unclear\n// how nested Prism's tokens can become\n\n\nvar normalizeTokens = function (tokens) {\n var typeArrStack = [[]];\n var tokenArrStack = [tokens];\n var tokenArrIndexStack = [0];\n var tokenArrSizeStack = [tokens.length];\n var i = 0;\n var stackIndex = 0;\n var currentLine = [];\n var acc = [currentLine];\n\n while (stackIndex > -1) {\n while ((i = tokenArrIndexStack[stackIndex]++) < tokenArrSizeStack[stackIndex]) {\n var content = void 0;\n var types = typeArrStack[stackIndex];\n var tokenArr = tokenArrStack[stackIndex];\n var token = tokenArr[i]; // Determine content and append type to types if necessary\n\n if (typeof token === \"string\") {\n types = stackIndex > 0 ? types : [\"plain\"];\n content = token;\n } else {\n types = appendTypes(types, token.type);\n\n if (token.alias) {\n types = appendTypes(types, token.alias);\n }\n\n content = token.content;\n } // If token.content is an array, increase the stack depth and repeat this while-loop\n\n\n if (typeof content !== \"string\") {\n stackIndex++;\n typeArrStack.push(types);\n tokenArrStack.push(content);\n tokenArrIndexStack.push(0);\n tokenArrSizeStack.push(content.length);\n continue;\n } // Split by newlines\n\n\n var splitByNewlines = content.split(newlineRe);\n var newlineCount = splitByNewlines.length;\n currentLine.push({\n types: types,\n content: splitByNewlines[0]\n }); // Create a new line for each string on a new line\n\n for (var i$1 = 1; i$1 < newlineCount; i$1++) {\n normalizeEmptyLines(currentLine);\n acc.push(currentLine = []);\n currentLine.push({\n types: types,\n content: splitByNewlines[i$1]\n });\n }\n } // Decreate the stack depth\n\n\n stackIndex--;\n typeArrStack.pop();\n tokenArrStack.pop();\n tokenArrIndexStack.pop();\n tokenArrSizeStack.pop();\n }\n\n normalizeEmptyLines(currentLine);\n return acc;\n};\n\nvar themeToDict = function (theme, language) {\n var plain = theme.plain; // $FlowFixMe\n\n var base = Object.create(null);\n var themeDict = theme.styles.reduce(function (acc, themeEntry) {\n var languages = themeEntry.languages;\n var style = themeEntry.style;\n\n if (languages && !languages.includes(language)) {\n return acc;\n }\n\n themeEntry.types.forEach(function (type) {\n // $FlowFixMe\n var accStyle = _extends({}, acc[type], style);\n\n acc[type] = accStyle;\n });\n return acc;\n }, base); // $FlowFixMe\n\n themeDict.root = plain; // $FlowFixMe\n\n themeDict.plain = _extends({}, plain, {\n backgroundColor: null\n });\n return themeDict;\n};\n\nfunction objectWithoutProperties(obj, exclude) {\n var target = {};\n\n for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n\n return target;\n}\n\nvar Highlight = /*@__PURE__*/function (Component) {\n function Highlight() {\n var this$1 = this;\n var args = [],\n len = arguments.length;\n\n while (len--) args[len] = arguments[len];\n\n Component.apply(this, args);\n\n _defineProperty(this, \"getThemeDict\", function (props) {\n if (this$1.themeDict !== undefined && props.theme === this$1.prevTheme && props.language === this$1.prevLanguage) {\n return this$1.themeDict;\n }\n\n this$1.prevTheme = props.theme;\n this$1.prevLanguage = props.language;\n var themeDict = props.theme ? themeToDict(props.theme, props.language) : undefined;\n return this$1.themeDict = themeDict;\n });\n\n _defineProperty(this, \"getLineProps\", function (ref) {\n var key = ref.key;\n var className = ref.className;\n var style = ref.style;\n var rest$1 = objectWithoutProperties(ref, [\"key\", \"className\", \"style\", \"line\"]);\n var rest = rest$1;\n\n var output = _extends({}, rest, {\n className: \"token-line\",\n style: undefined,\n key: undefined\n });\n\n var themeDict = this$1.getThemeDict(this$1.props);\n\n if (themeDict !== undefined) {\n output.style = themeDict.plain;\n }\n\n if (style !== undefined) {\n output.style = output.style !== undefined ? _extends({}, output.style, style) : style;\n }\n\n if (key !== undefined) {\n output.key = key;\n }\n\n if (className) {\n output.className += \" \" + className;\n }\n\n return output;\n });\n\n _defineProperty(this, \"getStyleForToken\", function (ref) {\n var types = ref.types;\n var empty = ref.empty;\n var typesSize = types.length;\n var themeDict = this$1.getThemeDict(this$1.props);\n\n if (themeDict === undefined) {\n return undefined;\n } else if (typesSize === 1 && types[0] === \"plain\") {\n return empty ? {\n display: \"inline-block\"\n } : undefined;\n } else if (typesSize === 1 && !empty) {\n return themeDict[types[0]];\n }\n\n var baseStyle = empty ? {\n display: \"inline-block\"\n } : {}; // $FlowFixMe\n\n var typeStyles = types.map(function (type) {\n return themeDict[type];\n });\n return Object.assign.apply(Object, [baseStyle].concat(typeStyles));\n });\n\n _defineProperty(this, \"getTokenProps\", function (ref) {\n var key = ref.key;\n var className = ref.className;\n var style = ref.style;\n var token = ref.token;\n var rest$1 = objectWithoutProperties(ref, [\"key\", \"className\", \"style\", \"token\"]);\n var rest = rest$1;\n\n var output = _extends({}, rest, {\n className: \"token \" + token.types.join(\" \"),\n children: token.content,\n style: this$1.getStyleForToken(token),\n key: undefined\n });\n\n if (style !== undefined) {\n output.style = output.style !== undefined ? _extends({}, output.style, style) : style;\n }\n\n if (key !== undefined) {\n output.key = key;\n }\n\n if (className) {\n output.className += \" \" + className;\n }\n\n return output;\n });\n\n _defineProperty(this, \"tokenize\", function (Prism, code, grammar, language) {\n var env = {\n code: code,\n grammar: grammar,\n language: language,\n tokens: []\n };\n Prism.hooks.run(\"before-tokenize\", env);\n var tokens = env.tokens = Prism.tokenize(env.code, env.grammar, env.language);\n Prism.hooks.run(\"after-tokenize\", env);\n return tokens;\n });\n }\n\n if (Component) Highlight.__proto__ = Component;\n Highlight.prototype = Object.create(Component && Component.prototype);\n Highlight.prototype.constructor = Highlight;\n\n Highlight.prototype.render = function render() {\n var ref = this.props;\n var Prism = ref.Prism;\n var language = ref.language;\n var code = ref.code;\n var children = ref.children;\n var themeDict = this.getThemeDict(this.props);\n var grammar = Prism.languages[language];\n var mixedTokens = grammar !== undefined ? this.tokenize(Prism, code, grammar, language) : [code];\n var tokens = normalizeTokens(mixedTokens);\n return children({\n tokens: tokens,\n className: \"prism-code language-\" + language,\n style: themeDict !== undefined ? themeDict.root : {},\n getLineProps: this.getLineProps,\n getTokenProps: this.getTokenProps\n });\n };\n\n return Highlight;\n}(Component);\n\nexport default Highlight;\nexport { defaultProps };\n","import { createIcon } from \"@chakra-ui/icon\"\nimport * as React from \"react\"\n\nexport const LinkIcon = createIcon({\n displayName: \"LinkIcon\",\n path: (\n <g fill=\"currentColor\">\n <path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\" />\n <path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\" />\n </g>\n ),\n})\n","import { useState, useCallback, useEffect } from \"react\"\nimport copy from \"copy-to-clipboard\"\n\nexport interface UseClipboardOptions {\n /**\n * timeout delay (in ms) to switch back to initial state once copied.\n */\n timeout?: number\n /**\n * Set the desired MIME type\n */\n format?: string\n}\n\n/**\n * React hook to copy content to clipboard\n *\n * @param text the text or value to copy\n * @param {Number} [optionsOrTimeout=1500] optionsOrTimeout - delay (in ms) to switch back to initial state once copied.\n * @param {Object} optionsOrTimeout\n * @param {string} optionsOrTimeout.format - set the desired MIME type\n * @param {number} optionsOrTimeout.timeout - delay (in ms) to switch back to initial state once copied.\n */\nexport function useClipboard(\n text: string,\n optionsOrTimeout: number | UseClipboardOptions = {},\n) {\n const [hasCopied, setHasCopied] = useState(false)\n\n const { timeout = 1500, ...copyOptions } =\n typeof optionsOrTimeout === \"number\"\n ? { timeout: optionsOrTimeout }\n : optionsOrTimeout\n\n const onCopy = useCallback(() => {\n const didCopy = copy(text, copyOptions)\n setHasCopied(didCopy)\n }, [text, copyOptions])\n\n useEffect(() => {\n let timeoutId: number | null = null\n\n if (hasCopied) {\n timeoutId = window.setTimeout(() => {\n setHasCopied(false)\n }, timeout)\n }\n\n return () => {\n if (timeoutId) {\n window.clearTimeout(timeoutId)\n }\n }\n }, [timeout, hasCopied])\n\n return { value: text, onCopy, hasCopied }\n}\n","import { useEnvironment } from \"@chakra-ui/react-env\"\nimport { isBrowser } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\n\nconst useSafeLayoutEffect = isBrowser ? React.useLayoutEffect : React.useEffect\n\n/**\n * React hook that tracks state of a CSS media query\n *\n * @param query the media query to match\n */\nexport function useMediaQuery(query: string | string[]): boolean[] {\n const env = useEnvironment()\n const queries = Array.isArray(query) ? query : [query]\n const isSupported = isBrowser && \"matchMedia\" in env.window\n\n const [matches, setMatches] = React.useState(\n queries.map((query) =>\n isSupported ? !!env.window.matchMedia(query).matches : false,\n ),\n )\n\n useSafeLayoutEffect(() => {\n if (!isSupported) return undefined\n\n const mediaQueryList = queries.map((query) => env.window.matchMedia(query))\n\n const listenerList = mediaQueryList.map((mediaQuery, index) => {\n const listener = () =>\n setMatches((prev) =>\n prev.map((prevValue, idx) =>\n index === idx ? !!mediaQuery.matches : prevValue,\n ),\n )\n\n mediaQuery.addListener(listener)\n\n return listener\n })\n\n return () => {\n mediaQueryList.forEach((mediaQuery, index) => {\n mediaQuery.removeListener(listenerList[index])\n })\n }\n }, [query])\n\n return matches\n}\n","import { createIcon } from \"@chakra-ui/icon\"\nimport * as React from \"react\"\n\nexport const CheckIcon = createIcon({\n viewBox: \"0 0 14 14\",\n path: (\n <g fill=\"currentColor\">\n <polygon points=\"5.5 11.9993304 14 3.49933039 12.5 2 5.5 8.99933039 1.5 4.9968652 0 6.49933039\" />\n </g>\n ),\n})\n","import { createIcon } from \"@chakra-ui/icon\"\n\nexport const CopyIcon = createIcon({\n d:\n \"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\",\n displayName: \"CopyIcon\",\n})\n","import {\n chakra,\n forwardRef,\n omitThemingProps,\n ThemingProps,\n useStyleConfig,\n HTMLChakraProps,\n} from \"@chakra-ui/system\"\nimport { cx, __DEV__ } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\n\nexport interface CodeProps\n extends HTMLChakraProps<\"code\">,\n ThemingProps<\"Code\"> {}\n\n/**\n * React component to render inline code snippets.\n *\n * @see Docs https://chakra-ui.com/code\n */\nexport const Code = forwardRef<CodeProps, \"code\">((props, ref) => {\n const styles = useStyleConfig(\"Code\", props)\n const { className, ...rest } = omitThemingProps(props)\n\n return (\n <chakra.code\n ref={ref}\n className={cx(\"chakra-code\", props.className)}\n {...rest}\n __css={{\n display: \"inline-block\",\n ...styles,\n }}\n />\n )\n})\n\nif (__DEV__) {\n Code.displayName = \"Code\"\n}\n","import {\n chakra,\n forwardRef,\n omitThemingProps,\n StylesProvider,\n ThemingProps,\n useMultiStyleConfig,\n HTMLChakraProps,\n} from \"@chakra-ui/system\"\nimport { cx, __DEV__ } from \"@chakra-ui/utils\"\nimport { getValidChildren } from \"@chakra-ui/react-utils\"\nimport * as React from \"react\"\n\nexport interface InputGroupProps\n extends HTMLChakraProps<\"div\">,\n ThemingProps<\"Input\"> {}\n\nexport const InputGroup = forwardRef<InputGroupProps, \"div\">((props, ref) => {\n const styles = useMultiStyleConfig(\"Input\", props)\n const { children, className, ...rest } = omitThemingProps(props)\n\n const _className = cx(\"chakra-input__group\", className)\n const groupStyles: InputGroupProps = {}\n\n const validChildren = getValidChildren(children)\n\n const input: any = styles.field\n\n validChildren.forEach((child: any) => {\n if (!styles) return\n\n if (input && child.type.id === \"InputLeftElement\") {\n groupStyles.paddingStart = input.height ?? input.h\n }\n\n if (input && child.type.id === \"InputRightElement\") {\n groupStyles.paddingEnd = input.height ?? input.h\n }\n\n if (child.type.id === \"InputRightAddon\") {\n groupStyles.borderEndRadius = 0\n }\n\n if (child.type.id === \"InputLeftAddon\") {\n groupStyles.borderStartRadius = 0\n }\n })\n\n const clones = validChildren.map((child: any) => {\n /**\n * Make it possible to override the size and variant from `Input`\n */\n const theming = {\n size: child.props?.size || props.size,\n variant: child.props?.variant || props.variant,\n }\n\n return child.type.id !== \"Input\"\n ? React.cloneElement(child, theming)\n : React.cloneElement(\n child,\n Object.assign(theming, groupStyles, child.props),\n )\n })\n\n return (\n <chakra.div\n className={_className}\n ref={ref}\n __css={{\n width: \"100%\",\n display: \"flex\",\n position: \"relative\",\n }}\n {...rest}\n >\n <StylesProvider value={styles}>{clones}</StylesProvider>\n </chakra.div>\n )\n})\n\nif (__DEV__) {\n InputGroup.displayName = \"InputGroup\"\n}\n","import {\n chakra,\n forwardRef,\n SystemStyleObject,\n useStyles,\n HTMLChakraProps,\n} from \"@chakra-ui/system\"\nimport { cx, __DEV__ } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\n\nexport interface InputElementProps extends HTMLChakraProps<\"div\"> {\n placement?: \"left\" | \"right\"\n}\n\nconst StyledElement = chakra(\"div\", {\n baseStyle: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"absolute\",\n top: \"0\",\n zIndex: 2,\n },\n})\n\nconst InputElement = forwardRef<InputElementProps, \"div\">((props, ref) => {\n const { placement = \"left\", ...rest } = props\n\n const styles = useStyles()\n const input: any = styles.field\n\n const attr = placement === \"left\" ? \"insetStart\" : \"insetEnd\"\n\n const elementStyles: SystemStyleObject = {\n [attr]: \"0\",\n width: input?.height ?? input?.h,\n height: input?.height ?? input?.h,\n fontSize: input?.fontSize,\n }\n\n return <StyledElement ref={ref} __css={elementStyles} {...rest} />\n})\n\n// This is used in `input-group.tsx`\nInputElement.id = \"InputElement\"\n\nif (__DEV__) {\n InputElement.displayName = \"InputElement\"\n}\n\nexport const InputLeftElement = forwardRef<InputElementProps, \"div\">(\n (props, ref) => {\n const { className, ...rest } = props\n const _className = cx(\"chakra-input__left-element\", className)\n\n return (\n <InputElement\n ref={ref}\n placement=\"left\"\n className={_className}\n {...rest}\n />\n )\n },\n)\n\n// This is used in `input-group.tsx`\nInputLeftElement.id = \"InputLeftElement\"\n\nif (__DEV__) {\n InputLeftElement.displayName = \"InputLeftElement\"\n}\n\nexport const InputRightElement = forwardRef<InputElementProps, \"div\">(\n (props, ref) => {\n const { className, ...rest } = props\n const _className = cx(\"chakra-input__right-element\", className)\n\n return (\n <InputElement\n ref={ref}\n placement=\"right\"\n className={_className}\n {...rest}\n />\n )\n },\n)\n\n// This is used in `input-group.tsx`\nInputRightElement.id = \"InputRightElement\"\n\nif (__DEV__) {\n InputRightElement.displayName = \"InputRightElement\"\n}\n","import { createIcon } from \"@chakra-ui/icon\"\n\nexport const ArrowBackIcon = createIcon({\n d: \"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\",\n displayName: \"ArrowBackIcon\",\n})\n","import { createContext } from \"@chakra-ui/react-utils\"\nimport { UsePopoverReturn } from \"./use-popover\"\n\nexport const [\n PopoverProvider,\n usePopoverContext,\n] = createContext<UsePopoverReturn>({\n name: \"PopoverContext\",\n errorMessage:\n \"usePopoverContext: `context` is undefined. Seems you forgot to wrap all popover components within `<Popover />`\",\n})\n","import { chakra, HTMLChakraProps } from \"@chakra-ui/system\"\nimport { HTMLMotionProps, motion, Variant } from \"framer-motion\"\nimport { mergeWith } from \"@chakra-ui/utils\"\nimport React from \"react\"\nimport { usePopoverContext } from \"./popover-context\"\n\n// TODO: consider moving this to some util\ntype HTMLMotionChakraProps<T extends keyof React.ReactHTML> = Omit<\n HTMLChakraProps<T>,\n keyof HTMLMotionProps<T>\n> &\n Omit<\n HTMLMotionProps<T>,\n | \"style\"\n | \"onDrag\"\n | \"onDragEnd\"\n | \"onDragStart\"\n | \"onAnimationStart\"\n | \"variants\"\n > & {\n variants?: MotionVariants\n }\n\ntype MotionVariants = Partial<Record<\"enter\" | \"exit\", Variant>>\n\nconst mergeVariants = (variants?: MotionVariants) => {\n if (!variants) return\n return mergeWith(variants, {\n enter: {\n visibility: \"visible\",\n },\n exit: {\n transitionEnd: {\n visibility: \"hidden\",\n },\n },\n })\n}\n\nconst scaleFade: MotionVariants = {\n exit: {\n opacity: 0,\n scale: 0.95,\n transition: {\n duration: 0.1,\n ease: [0.4, 0, 1, 1],\n },\n },\n enter: {\n scale: 1,\n opacity: 1,\n transition: {\n duration: 0.15,\n ease: [0, 0, 0.2, 1],\n },\n },\n}\n\nconst Section = motion(chakra.section)\n\nexport interface PopoverTransitionProps\n extends HTMLMotionChakraProps<\"section\"> {}\n\nexport const PopoverTransition = React.forwardRef(\n (props: HTMLMotionChakraProps<\"section\">, ref: React.Ref<any>) => {\n const { isOpen } = usePopoverContext()\n return (\n <Section\n ref={ref}\n variants={mergeVariants(props.variants)}\n {...props}\n initial={false}\n animate={isOpen ? \"enter\" : \"exit\"}\n />\n )\n },\n)\n\nPopoverTransition.defaultProps = {\n variants: scaleFade,\n}\n","/**\n * Credit goes to `framer-motion` of this useful utilities.\n * License can be found here: https://github.com/framer/motion\n */\n\nimport { addDomEvent, getEventWindow, isBrowser } from \"./dom\"\n\nexport type AnyPointerEvent = MouseEvent | TouchEvent | PointerEvent\n\ntype PointType = \"page\" | \"client\"\n\nexport function isMouseEvent(event: AnyPointerEvent): event is MouseEvent {\n const win = getEventWindow(event)\n\n // PointerEvent inherits from MouseEvent so we can't use a straight instanceof check.\n if (\n typeof win.PointerEvent !== \"undefined\" &&\n event instanceof win.PointerEvent\n ) {\n return !!(event.pointerType === \"mouse\")\n }\n\n return event instanceof win.MouseEvent\n}\n\nexport function isTouchEvent(event: AnyPointerEvent): event is TouchEvent {\n const hasTouches = !!(event as TouchEvent).touches\n return hasTouches\n}\n\nexport interface Point {\n x: number\n y: number\n}\n\nexport interface PointerEventInfo {\n point: Point\n}\n\nexport type EventHandler = (\n event: AnyPointerEvent,\n info: PointerEventInfo,\n) => void\n\n/**\n * Filters out events not attached to the primary pointer (currently left mouse button)\n * @param eventHandler\n */\nfunction filterPrimaryPointer(eventHandler: EventListener): EventListener {\n return (event: Event) => {\n const win = getEventWindow(event)\n const isMouseEvent = event instanceof win.MouseEvent\n const isPrimaryPointer =\n !isMouseEvent || (isMouseEvent && (event as MouseEvent).button === 0)\n if (isPrimaryPointer) {\n eventHandler(event)\n }\n }\n}\n\nexport type EventListenerWithPointInfo = (\n e: AnyPointerEvent,\n info: PointerEventInfo,\n) => void\n\nconst defaultPagePoint = { pageX: 0, pageY: 0 }\n\nfunction pointFromTouch(e: TouchEvent, pointType: PointType = \"page\") {\n const primaryTouch = e.touches[0] || e.changedTouches[0]\n const point = primaryTouch || defaultPagePoint\n\n return {\n x: point[`${pointType}X`],\n y: point[`${pointType}Y`],\n }\n}\n\nfunction pointFromMouse(\n point: MouseEvent | PointerEvent,\n pointType: PointType = \"page\",\n) {\n return {\n x: point[`${pointType}X`],\n y: point[`${pointType}Y`],\n }\n}\n\nexport function extractEventInfo(\n event: AnyPointerEvent,\n pointType: PointType = \"page\",\n): PointerEventInfo {\n return {\n point: isTouchEvent(event)\n ? pointFromTouch(event, pointType)\n : pointFromMouse(event, pointType),\n }\n}\n\nexport function getViewportPointFromEvent(event: AnyPointerEvent) {\n return extractEventInfo(event, \"client\")\n}\n\nexport const wrapPointerEventHandler = (\n handler: EventListenerWithPointInfo,\n shouldFilterPrimaryPointer = false,\n): EventListener => {\n const listener: EventListener = (event: any) =>\n handler(event, extractEventInfo(event))\n\n return shouldFilterPrimaryPointer ? filterPrimaryPointer(listener) : listener\n}\n\n// We check for event support via functions in case they've been mocked by a testing suite.\nconst supportsPointerEvents = () => isBrowser && window.onpointerdown === null\nconst supportsTouchEvents = () => isBrowser && window.ontouchstart === null\nconst supportsMouseEvents = () => isBrowser && window.onmousedown === null\n\ninterface PointerNameMap {\n pointerdown: string\n pointermove: string\n pointerup: string\n pointercancel: string\n pointerover?: string\n pointerout?: string\n pointerenter?: string\n pointerleave?: string\n}\n\nconst mouseEventNames: PointerNameMap = {\n pointerdown: \"mousedown\",\n pointermove: \"mousemove\",\n pointerup: \"mouseup\",\n pointercancel: \"mousecancel\",\n pointerover: \"mouseover\",\n pointerout: \"mouseout\",\n pointerenter: \"mouseenter\",\n pointerleave: \"mouseleave\",\n}\n\nconst touchEventNames: PointerNameMap = {\n pointerdown: \"touchstart\",\n pointermove: \"touchmove\",\n pointerup: \"touchend\",\n pointercancel: \"touchcancel\",\n}\n\nexport function getPointerEventName(name: string): string {\n if (supportsPointerEvents()) {\n return name\n }\n if (supportsTouchEvents()) {\n return touchEventNames[name]\n }\n if (supportsMouseEvents()) {\n return mouseEventNames[name]\n }\n\n return name\n}\n\nexport function addPointerEvent(\n target: EventTarget,\n eventName: string,\n handler: EventListenerWithPointInfo,\n options?: AddEventListenerOptions,\n) {\n return addDomEvent(\n target,\n getPointerEventName(eventName),\n wrapPointerEventHandler(handler, eventName === \"pointerdown\"),\n options,\n )\n}\n\nexport function isMultiTouchEvent(event: AnyPointerEvent) {\n return isTouchEvent(event) && event.touches.length > 1\n}\n","import {\n contains,\n detectBrowser,\n focus,\n getOwnerDocument,\n isActiveElement,\n isRefObject,\n} from \"@chakra-ui/utils\"\nimport { RefObject } from \"react\"\nimport { usePointerEvent } from \"./use-pointer-event\"\n\nexport interface UseFocusOnMouseDownProps {\n enabled?: boolean\n ref: RefObject<HTMLElement>\n elements?: Array<RefObject<HTMLElement> | HTMLElement | null>\n}\n\n/**\n * Polyfill to get `relatedTarget` working correctly consistently\n * across all browsers.\n *\n * It ensures that elements receives focus on pointer down if\n * it's not the active active element.\n *\n * @internal\n */\nexport function useFocusOnPointerDown(props: UseFocusOnMouseDownProps) {\n const { ref, elements, enabled } = props\n\n const isSafari = detectBrowser(\"Safari\")\n const doc = () => getOwnerDocument(ref.current)\n\n usePointerEvent(doc, \"pointerdown\", (event) => {\n if (!isSafari || !enabled) return\n const target = event.target as HTMLElement\n\n const els = elements ?? [ref]\n const isValidTarget = els.some((elementOrRef) => {\n const el = isRefObject(elementOrRef) ? elementOrRef.current : elementOrRef\n return contains(el, target)\n })\n\n if (!isActiveElement(target) && isValidTarget) {\n event.preventDefault()\n focus(target)\n }\n })\n}\n","import { isBrowser } from \"./dom\"\n\nfunction getUserAgentBrowser(navigator: Navigator) {\n const { userAgent: ua, vendor } = navigator\n const android = /(android)/i.test(ua)\n\n switch (true) {\n case /CriOS/.test(ua):\n return \"Chrome for iOS\"\n case /Edg\\//.test(ua):\n return \"Edge\"\n case android && /Silk\\//.test(ua):\n return \"Silk\"\n case /Chrome/.test(ua) && /Google Inc/.test(vendor):\n return \"Chrome\"\n case /Firefox\\/\\d+\\.\\d+$/.test(ua):\n return \"Firefox\"\n case android:\n return \"AOSP\"\n case /MSIE|Trident/.test(ua):\n return \"IE\"\n case /Safari/.test(navigator.userAgent) && /Apple Computer/.test(ua):\n return \"Safari\"\n case /AppleWebKit/.test(ua):\n return \"WebKit\"\n default:\n return null\n }\n}\n\nexport type UserAgentBrowser = NonNullable<\n ReturnType<typeof getUserAgentBrowser>\n>\n\nfunction getUserAgentOS(navigator: Navigator) {\n const { userAgent: ua, platform } = navigator\n switch (true) {\n case /Android/.test(ua):\n return \"Android\"\n case /iPhone|iPad|iPod/.test(platform):\n return \"iOS\"\n case /Win/.test(platform):\n return \"Windows\"\n case /Mac/.test(platform):\n return \"Mac\"\n case /CrOS/.test(ua):\n return \"Chrome OS\"\n case /Firefox/.test(ua):\n return \"Firefox OS\"\n default:\n return null\n }\n}\n\nexport type UserAgentOS = NonNullable<ReturnType<typeof getUserAgentOS>>\n\nexport function detectDeviceType(navigator: Navigator) {\n const { userAgent: ua } = navigator\n if (/(tablet)|(iPad)|(Nexus 9)/i.test(ua)) return \"tablet\"\n if (/(mobi)/i.test(ua)) return \"phone\"\n return \"desktop\"\n}\n\nexport type UserAgentDeviceType = NonNullable<\n ReturnType<typeof detectDeviceType>\n>\n\nexport function detectOS(os: UserAgentOS) {\n if (!isBrowser) return false\n return getUserAgentOS(window.navigator) === os\n}\n\nexport function detectBrowser(browser: UserAgentBrowser) {\n if (!isBrowser) return false\n return getUserAgentBrowser(window.navigator) === browser\n}\n\nexport function detectTouch() {\n if (!isBrowser) return false\n return (\n window.ontouchstart === null &&\n window.ontouchmove === null &&\n window.ontouchend === null\n )\n}\n","/**\n * Credit goes to `framer-motion` of this useful utilities.\n * License can be found here: https://github.com/framer/motion\n */\n\nimport {\n EventListenerWithPointInfo,\n getPointerEventName,\n wrapPointerEventHandler,\n} from \"@chakra-ui/utils\"\nimport { EventListenerEnv, useEventListener } from \"./use-event-listener\"\n\n/**\n * @internal\n */\nexport function usePointerEvent(\n env: EventListenerEnv,\n eventName: string,\n handler: EventListenerWithPointInfo,\n options?: AddEventListenerOptions,\n) {\n return useEventListener(\n getPointerEventName(eventName),\n wrapPointerEventHandler(handler, eventName === \"pointerdown\"),\n env,\n options,\n )\n}\n","import {\n contains,\n focus,\n FocusableElement,\n getAllFocusable,\n isRefObject,\n} from \"@chakra-ui/utils\"\nimport React, { useCallback } from \"react\"\nimport { useEventListener } from \"./use-event-listener\"\nimport { useUpdateEffect } from \"./use-update-effect\"\n\nexport interface UseFocusOnShowOptions {\n visible?: boolean\n shouldFocus?: boolean\n preventScroll?: boolean\n focusRef?: React.RefObject<FocusableElement>\n}\n\nconst defaultOptions: UseFocusOnShowOptions = {\n preventScroll: true,\n shouldFocus: false,\n}\n\nexport function useFocusOnShow<T extends HTMLElement>(\n target: React.RefObject<T> | T,\n options = defaultOptions,\n) {\n const { focusRef, preventScroll, shouldFocus, visible } = options\n const element = isRefObject(target) ? target.current : target\n\n const autoFocus = shouldFocus && visible\n\n const onFocus = useCallback(() => {\n if (!element || !autoFocus) return\n\n if (contains(element, document.activeElement as HTMLElement)) return\n\n if (focusRef?.current) {\n focus(focusRef.current, { preventScroll, nextTick: true })\n } else {\n const tabbableEls = getAllFocusable(element)\n if (tabbableEls.length > 0) {\n focus(tabbableEls[0], { preventScroll, nextTick: true })\n }\n }\n }, [autoFocus, preventScroll, element, focusRef])\n\n useUpdateEffect(() => {\n onFocus()\n }, [onFocus])\n\n useEventListener(\"transitionend\", onFocus, element)\n}\n","import {\n useDisclosure,\n useFocusOnHide,\n useFocusOnPointerDown,\n useFocusOnShow,\n useIds,\n} from \"@chakra-ui/hooks\"\nimport { popperCSSVars, usePopper, UsePopperProps } from \"@chakra-ui/popper\"\nimport { HTMLProps, mergeRefs, PropGetter } from \"@chakra-ui/react-utils\"\nimport {\n callAllHandlers,\n contains,\n determineLazyBehavior,\n FocusableElement,\n getRelatedTarget,\n LazyBehavior,\n px,\n} from \"@chakra-ui/utils\"\nimport { RefObject, useCallback, useEffect, useRef, useState } from \"react\"\n\nconst TRIGGER = {\n click: \"click\",\n hover: \"hover\",\n} as const\n\nexport interface UsePopoverProps extends UsePopperProps {\n /**\n * The html `id` attribute of the popover.\n * If not provided, we generate a unique id.\n *\n * This `id` is also used to auto-generate the `aria-labelledby`\n * and `aria-decribedby` attributes that points to the `PopoverHeader` and `PopoverBody`\n */\n id?: string\n /**\n * If `true`, the popover will be opened in controlled mode.\n */\n isOpen?: boolean\n /**\n * If `true`, the popover will be initially opened.\n */\n defaultIsOpen?: boolean\n /**\n * The `ref` of the element that should receive focus when the popover opens.\n */\n initialFocusRef?: RefObject<FocusableElement>\n /**\n * If `true`, focus will be returned to the element that triggers the popover\n * when it closes\n */\n returnFocusOnClose?: boolean\n /**\n * If `true`, focus will be transferred to the first interactive element\n * when the popover opens\n */\n autoFocus?: boolean\n /**\n * If `true`, the popover will close when you blur out it by\n * clicking outside or tabbing out\n */\n closeOnBlur?: boolean\n /**\n * If `true`, the popover will close when you hit the `Esc` key\n */\n closeOnEsc?: boolean\n /**\n * Callback fired when the popover opens\n */\n onOpen?: () => void\n /**\n * Callback fired when the popover closes\n */\n onClose?: () => void\n /**\n * The size of the popover arrow\n */\n arrowSize?: number\n /**\n * The `box-shadow` of the popover arrow\n */\n arrowShadowColor?: string\n /**\n * The interaction that triggers the popover.\n *\n * `hover` - means the popover will open when you hover with mouse or\n * focus with keyboard on the popover trigger\n *\n * `click` - means the popover will open on click or\n * press `Enter` to `Space` on keyboard\n */\n trigger?: keyof typeof TRIGGER\n openDelay?: number\n closeDelay?: number\n /**\n * Performance 🚀:\n * If `true`, the PopoverContent rendering will be deferred\n * until the popover is open.\n */\n isLazy?: boolean\n /**\n * Performance 🚀:\n * The lazy behavior of popover's content when not visible.\n * Only works when `isLazy={true}`\n *\n * - \"unmount\": The popover's content is always unmounted when not open.\n * - \"keepMounted\": The popover's content initially unmounted,\n * but stays mounted when popover is open.\n *\n * @default \"unmount\"\n */\n lazyBehavior?: LazyBehavior\n /**\n * If `true`, the popover will be positioned when it mounts\n * (even if it's not open)\n *\n * Note 🚨: We don't recommend using this in a popover/menu intensive UI or page\n * as it might affect scrolling performance.\n */\n computePositionOnMount?: boolean\n}\n\n/**\n * @internal\n */\nexport function usePopover(props: UsePopoverProps = {}) {\n const {\n closeOnBlur = true,\n closeOnEsc = true,\n initialFocusRef,\n id,\n returnFocusOnClose = true,\n autoFocus = true,\n arrowSize,\n arrowShadowColor,\n trigger = TRIGGER.click,\n openDelay = 200,\n closeDelay = 200,\n isLazy,\n lazyBehavior = \"unmount\",\n computePositionOnMount,\n ...popperProps\n } = props\n\n const { isOpen, onClose, onOpen, onToggle } = useDisclosure(props)\n\n const triggerRef = useRef<HTMLElement>(null)\n const popoverRef = useRef<HTMLElement>(null)\n\n const isHoveringRef = useRef(false)\n\n const hasBeenOpened = useRef(false)\n if (isOpen) {\n hasBeenOpened.current = true\n }\n\n const [hasHeader, setHasHeader] = useState(false)\n const [hasBody, setHasBody] = useState(false)\n\n const [triggerId, popoverId, headerId, bodyId] = useIds(\n id,\n \"popover-trigger\",\n \"popover-content\",\n \"popover-header\",\n \"popover-body\",\n )\n\n const {\n referenceRef,\n getArrowProps,\n getPopperProps,\n getArrowInnerProps,\n forceUpdate,\n } = usePopper({\n ...popperProps,\n enabled: isOpen || computePositionOnMount,\n })\n\n useFocusOnPointerDown({\n enabled: isOpen,\n ref: triggerRef,\n })\n\n useFocusOnHide(popoverRef, {\n focusRef: triggerRef,\n visible: isOpen,\n shouldFocus: returnFocusOnClose && trigger === TRIGGER.click,\n })\n\n useFocusOnShow(popoverRef, {\n focusRef: initialFocusRef,\n visible: isOpen,\n shouldFocus: autoFocus && trigger === TRIGGER.click,\n })\n\n const shouldRenderChildren = determineLazyBehavior({\n hasBeenSelected: hasBeenOpened.current,\n isLazy,\n lazyBehavior,\n isSelected: isOpen,\n })\n\n const getPopoverProps: PropGetter = useCallback(\n (props = {}, _ref = null) => {\n const popoverProps: HTMLProps = {\n ...props,\n style: {\n ...props.style,\n transformOrigin: popperCSSVars.transformOrigin.varRef,\n [popperCSSVars.arrowSize.var]: arrowSize ? px(arrowSize) : undefined,\n [popperCSSVars.arrowShadowColor.var]: arrowShadowColor,\n },\n ref: mergeRefs(popoverRef, _ref),\n children: shouldRenderChildren ? props.children : null,\n id: popoverId,\n tabIndex: -1,\n role: \"dialog\",\n onKeyDown: callAllHandlers(props.onKeyDown, (event) => {\n if (closeOnEsc && event.key === \"Escape\") {\n onClose()\n }\n }),\n onBlur: callAllHandlers(props.onBlur, (event) => {\n const relatedTarget = getRelatedTarget(event)\n const targetIsPopover = contains(popoverRef.current, relatedTarget)\n const targetIsTrigger = contains(triggerRef.current, relatedTarget)\n const isValidBlur = !targetIsPopover && !targetIsTrigger\n\n if (isOpen && closeOnBlur && isValidBlur) {\n onClose()\n }\n }),\n \"aria-labelledby\": hasHeader ? headerId : undefined,\n \"aria-describedby\": hasBody ? bodyId : undefined,\n }\n\n if (trigger === TRIGGER.hover) {\n popoverProps.role = \"tooltip\"\n popoverProps.onMouseEnter = callAllHandlers(props.onMouseEnter, () => {\n isHoveringRef.current = true\n })\n popoverProps.onMouseLeave = callAllHandlers(props.onMouseLeave, () => {\n isHoveringRef.current = false\n setTimeout(onClose, closeDelay)\n })\n }\n\n return popoverProps\n },\n [\n shouldRenderChildren,\n popoverId,\n hasHeader,\n headerId,\n hasBody,\n bodyId,\n trigger,\n closeOnEsc,\n onClose,\n isOpen,\n closeOnBlur,\n closeDelay,\n arrowShadowColor,\n arrowSize,\n ],\n )\n\n const getPopoverPositionerProps: PropGetter = useCallback(\n (props = {}, forwardedRef = null) =>\n getPopperProps(\n {\n ...props,\n style: {\n visibility: isOpen ? \"visible\" : \"hidden\",\n ...props.style,\n },\n },\n forwardedRef,\n ),\n [isOpen, getPopperProps],\n )\n\n const openTimeout = useRef<number>()\n const closeTimeout = useRef<number>()\n\n const getTriggerProps: PropGetter = useCallback(\n (props = {}, _ref = null) => {\n const triggerProps: HTMLProps = {\n ...props,\n ref: mergeRefs(triggerRef, _ref, referenceRef),\n id: triggerId,\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": isOpen,\n \"aria-controls\": popoverId,\n }\n\n if (trigger === TRIGGER.click) {\n triggerProps.onClick = callAllHandlers(props.onClick, onToggle)\n }\n\n if (trigger === TRIGGER.hover) {\n /**\n * Any content that shows on pointer hover should also show on keyboard focus.\n * Consider focus and blur to be the `hover` for keyboard users.\n *\n * @see https://www.w3.org/WAI/WCAG21/Understanding/content-on-hover-or-focus.html\n */\n triggerProps.onFocus = callAllHandlers(props.onFocus, onOpen)\n triggerProps.onBlur = callAllHandlers(props.onBlur, onClose)\n\n /**\n * Any content that shows on hover or focus must be dismissible.\n * This case pressing `Escape` will dismiss the popover\n */\n triggerProps.onKeyDown = callAllHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Escape\") {\n onClose()\n }\n })\n\n triggerProps.onMouseEnter = callAllHandlers(props.onMouseEnter, () => {\n isHoveringRef.current = true\n openTimeout.current = window.setTimeout(onOpen, openDelay)\n })\n\n triggerProps.onMouseLeave = callAllHandlers(props.onMouseLeave, () => {\n isHoveringRef.current = false\n\n if (openTimeout.current) {\n clearTimeout(openTimeout.current)\n openTimeout.current = undefined\n }\n\n closeTimeout.current = window.setTimeout(() => {\n if (isHoveringRef.current === false) {\n onClose()\n }\n }, closeDelay)\n })\n }\n\n return triggerProps\n },\n [\n triggerId,\n isOpen,\n popoverId,\n trigger,\n referenceRef,\n onToggle,\n onOpen,\n onClose,\n openDelay,\n closeDelay,\n ],\n )\n\n useEffect(() => {\n return () => {\n if (openTimeout.current) {\n clearTimeout(openTimeout.current)\n }\n if (closeTimeout.current) {\n clearTimeout(closeTimeout.current)\n }\n }\n }, [])\n\n const getHeaderProps: PropGetter = useCallback(\n (props = {}, ref = null) => ({\n ...props,\n id: headerId,\n ref: mergeRefs(ref, (node: HTMLElement | null) => {\n setHasHeader(!!node)\n }),\n }),\n [headerId],\n )\n\n const getBodyProps: PropGetter = useCallback(\n (props = {}, ref = null) => ({\n ...props,\n id: bodyId,\n ref: mergeRefs(ref, (node) => {\n setHasBody(!!node)\n }),\n }),\n [bodyId],\n )\n\n return {\n forceUpdate,\n isOpen,\n onClose,\n getArrowProps,\n getArrowInnerProps,\n getPopoverPositionerProps,\n getPopoverProps,\n getTriggerProps,\n getHeaderProps,\n getBodyProps,\n }\n}\n\nexport type UsePopoverReturn = ReturnType<typeof usePopover>\n","import { CloseButton, CloseButtonProps } from \"@chakra-ui/close-button\"\nimport { MaybeRenderProp } from \"@chakra-ui/react-utils\"\nimport {\n chakra,\n forwardRef,\n HTMLChakraProps,\n omitThemingProps,\n StylesProvider,\n SystemStyleObject,\n ThemingProps,\n useMultiStyleConfig,\n useStyles,\n} from \"@chakra-ui/system\"\nimport { cx, runIfFn, __DEV__ } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\nimport { PopoverProvider, usePopoverContext } from \"./popover-context\"\nimport { PopoverTransition, PopoverTransitionProps } from \"./popover-transition\"\nimport { usePopover, UsePopoverProps } from \"./use-popover\"\n\nexport { usePopoverContext }\n\nexport interface PopoverProps extends UsePopoverProps, ThemingProps<\"Popover\"> {\n /**\n * The content of the popover. It is usually the `PopoverTrigger`,\n * and `PopoverContent`\n */\n children?: MaybeRenderProp<{\n isOpen: boolean\n onClose: () => void\n forceUpdate: (() => void) | undefined\n }>\n}\n\n/**\n * Popover is used to bring attention to specific user interface elements,\n * typically to suggest an action or to guide users through a new experience.\n */\nexport const Popover: React.FC<PopoverProps> = (props) => {\n const styles = useMultiStyleConfig(\"Popover\", props)\n\n const { children, ...rest } = omitThemingProps(props)\n const context = usePopover(rest)\n\n return (\n <PopoverProvider value={context}>\n <StylesProvider value={styles}>\n {runIfFn(children, {\n isOpen: context.isOpen,\n onClose: context.onClose,\n forceUpdate: context.forceUpdate,\n })}\n </StylesProvider>\n </PopoverProvider>\n )\n}\n\nif (__DEV__) {\n Popover.displayName = \"Popover\"\n}\n\n/**\n * PopoverTrigger opens the popover's content. It must be an interactive element\n * such as `button` or `a`.\n */\nexport const PopoverTrigger: React.FC = (props) => {\n // enforce a single child\n const child: any = React.Children.only(props.children)\n const { getTriggerProps } = usePopoverContext()\n return React.cloneElement(child, getTriggerProps(child.props, child.ref))\n}\n\nif (__DEV__) {\n PopoverTrigger.displayName = \"PopoverTrigger\"\n}\n\nexport interface PopoverContentProps extends PopoverTransitionProps {\n rootProps?: HTMLChakraProps<\"div\">\n}\n\nexport const PopoverContent = forwardRef<PopoverContentProps, \"section\">(\n (props, ref) => {\n const { rootProps, ...contentProps } = props\n\n const { getPopoverProps, getPopoverPositionerProps } = usePopoverContext()\n\n const styles = useStyles()\n const contentStyles: SystemStyleObject = {\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"column\",\n ...styles.content,\n }\n\n return (\n <chakra.div\n {...getPopoverPositionerProps(rootProps)}\n __css={styles.popper}\n className=\"chakra-popover__popper\"\n >\n <PopoverTransition\n {...getPopoverProps(contentProps, ref)}\n className={cx(\"chakra-popover__content\", props.className)}\n __css={contentStyles}\n />\n </chakra.div>\n )\n },\n)\n\nif (__DEV__) {\n PopoverContent.displayName = \"PopoverContent\"\n}\n\nexport interface PopoverHeaderProps extends HTMLChakraProps<\"header\"> {}\n\n/**\n * PopoverHeader is the accessible header or label\n * for the popover's content and it is first announced by screenreaders.\n */\nexport const PopoverHeader = forwardRef<PopoverHeaderProps, \"header\">(\n (props, ref) => {\n const { getHeaderProps } = usePopoverContext()\n\n const styles = useStyles()\n\n return (\n <chakra.header\n {...getHeaderProps(props, ref)}\n className={cx(\"chakra-popover__header\", props.className)}\n __css={styles.header}\n />\n )\n },\n)\n\nif (__DEV__) {\n PopoverHeader.displayName = \"PopoverHeader\"\n}\n\nexport interface PopoverBodyProps extends HTMLChakraProps<\"div\"> {}\n\n/**\n * PopoverBody is the main content area for the popover. Should contain\n * at least one interactive element.\n */\nexport const PopoverBody = forwardRef<PopoverBodyProps, \"div\">((props, ref) => {\n const { getBodyProps } = usePopoverContext()\n\n const styles = useStyles()\n\n return (\n <chakra.div\n {...getBodyProps(props, ref)}\n className={cx(\"chakra-popover__body\", props.className)}\n __css={styles.body}\n />\n )\n})\n\nif (__DEV__) {\n PopoverBody.displayName = \"PopoverBody\"\n}\nexport interface PopoverFooterProps extends HTMLChakraProps<\"footer\"> {}\n\nexport const PopoverFooter: React.FC<PopoverFooterProps> = (props) => {\n const styles = useStyles()\n return (\n <chakra.footer\n {...props}\n className={cx(\"chakra-popover__footer\", props.className)}\n __css={styles.footer}\n />\n )\n}\n\nif (__DEV__) {\n PopoverFooter.displayName = \"PopoverFooter\"\n}\n\nexport type PopoverCloseButtonProps = CloseButtonProps\n\nexport const PopoverCloseButton: React.FC<CloseButtonProps> = (props) => {\n const { onClose } = usePopoverContext()\n return (\n <CloseButton\n size=\"sm\"\n onClick={onClose}\n position=\"absolute\"\n borderRadius=\"md\"\n top=\"0.25rem\"\n insetEnd=\"0.5rem\"\n padding=\"0.5rem\"\n {...props}\n />\n )\n}\n\nif (__DEV__) {\n PopoverCloseButton.displayName = \"PopoverCloseButton\"\n}\n\nexport interface PopoverArrowProps extends HTMLChakraProps<\"div\"> {}\n\nexport const PopoverArrow: React.FC<PopoverArrowProps> = (props) => {\n const { bg, bgColor, backgroundColor } = props\n const { getArrowProps, getArrowInnerProps } = usePopoverContext()\n const styles = useStyles()\n const arrowBg = bg ?? bgColor ?? backgroundColor\n return (\n <chakra.div\n {...getArrowProps()}\n className=\"chakra-popover__arrow-positioner\"\n >\n <chakra.div\n className={cx(\"chakra-popover__arrow\", props.className)}\n {...getArrowInnerProps(props)}\n __css={{\n ...styles.arrow,\n \"--popper-arrow-bg\": arrowBg\n ? `colors.${arrowBg}, ${arrowBg}`\n : undefined,\n }}\n />\n </chakra.div>\n )\n}\n\nif (__DEV__) {\n PopoverArrow.displayName = \"PopoverArrow\"\n}\n"],"sourceRoot":""}