Included
\nIncluded
\n| {h} | ))}\n
|---|
| {h} | ))}\n
|---|
{note}
\n )}\n| {h} | ))}\n
|---|
{note}
\n )}\n| {h} | ))}\n
|---|
My text.
\n \nMy text.
\n \n${e.children.map(t).join("")}
`:`Unsupported markdown: ${e.type}`}return r.map(t).join("")}function Or(n){return Intl.Segmenter?[...new Intl.Segmenter().segment(n)].map(r=>r.segment):[...n]}function Dr(n,r){const t=Or(r.content);return ft(n,[],t,r.type)}function ft(n,r,t,e){if(t.length===0)return[{content:r.join(""),type:e},{content:"",type:e}];const[i,...l]=t,u=[...r,i];return n([{content:u.join(""),type:e}])?ft(n,u,l,e):(r.length===0&&i&&(r.push(i),t.shift()),[{content:r.join(""),type:e},{content:t.join(""),type:e}])}function Pr(n,r){if(n.some(({content:t})=>t.includes(` `)))throw new Error("splitLineToFitWidth does not support newlines in the line");return Bn(n,r)}function Bn(n,r,t=[],e=[]){if(n.length===0)return e.length>0&&t.push(e),t.length>0?t:[];let i="";n[0].content===" "&&(i=" ",n.shift());const l=n.shift()??{content:" ",type:"normal"},u=[...e];if(i!==""&&u.push({content:i,type:"normal"}),u.push(l),r(u))return Bn(n,r,t,u);if(e.length>0)t.push(e),n.unshift(l);else if(l.content){const[a,c]=Dr(r,l);t.push([a]),c.content&&n.unshift(c)}return Bn(n,r,t)}function _r(n,r){r&&n.attr("style",r)}function Mr(n,r,t,e,i=!1){const l=n.append("foreignObject"),u=l.append("xhtml:div"),a=r.label,c=r.isNode?"nodeLabel":"edgeLabel";u.html(` "+a+""),_r(u,r.labelStyle),u.style("display","table-cell"),u.style("white-space","nowrap"),u.style("max-width",t+"px"),u.attr("xmlns","http://www.w3.org/1999/xhtml"),i&&u.attr("class","labelBkg");let p=u.node().getBoundingClientRect();return p.width===t&&(u.style("display","table"),u.style("white-space","break-spaces"),u.style("width",t+"px"),p=u.node().getBoundingClientRect()),l.style("width",p.width),l.style("height",p.height),l.node()}function xt(n,r,t){return n.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",r*t-.1+"em").attr("dy",t+"em")}function jr(n,r,t){const e=n.append("text"),i=xt(e,1,r);gt(i,t);const l=i.node().getComputedTextLength();return e.remove(),l}function Rr(n,r,t,e=!1){const l=r.append("g"),u=l.insert("rect").attr("class","background"),a=l.append("text").attr("y","-10.1");let c=0;for(const p of t){const h=g=>jr(l,1.1,g)<=n,x=h(p)?[p]:Pr(p,h);for(const g of x){const f=xt(a,c,1.1);gt(f,g),c++}}if(e){const p=a.node().getBBox(),h=2;return u.attr("x",-h).attr("y",-h).attr("width",p.width+2*h).attr("height",p.height+2*h),l.node()}else return a.node()}function gt(n,r){n.text(""),r.forEach((t,e)=>{const i=n.append("tspan").attr("font-style",t.type==="emphasis"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",t.type==="strong"?"bold":"normal");e===0?i.text(t.content):i.text(" "+t.content)})}const Nr=(n,r="",{style:t="",isTitle:e=!1,classes:i="",useHtmlLabels:l=!0,isNode:u=!0,width:a=200,addSvgBackground:c=!1}={})=>{if(At.info("createText",r,t,e,i,l,u,c),l){const p=Lr(r),h={isNode:u,label:zt(p).replace(/fa[blrs]?:fa-[\w-]+/g,g=>``),labelStyle:t.replace("fill:","color:")};return Mr(n,h,a,i,c)}else{const p=Br(r);return Rr(a,n,p,c)}};export{Nr as c}; -//# sourceMappingURL=createText-285e50b4-3c775375.js.map +//# sourceMappingURL=createText-285e50b4-d331e256.js.map diff --git a/docs/assets/createText-285e50b4-3c775375.js.map b/docs/assets/createText-285e50b4-d331e256.js.map similarity index 99% rename from docs/assets/createText-285e50b4-3c775375.js.map rename to docs/assets/createText-285e50b4-d331e256.js.map index d9fb2848..37e17c33 100644 --- a/docs/assets/createText-285e50b4-3c775375.js.map +++ b/docs/assets/createText-285e50b4-d331e256.js.map @@ -1 +1 @@ -{"version":3,"file":"createText-285e50b4-3c775375.js","sources":["../../node_modules/mdast-util-to-string/lib/index.js","../../node_modules/micromark-util-chunked/index.js","../../node_modules/micromark-util-combine-extensions/index.js","../../node_modules/micromark-util-character/lib/unicode-punctuation-regex.js","../../node_modules/micromark-util-character/index.js","../../node_modules/micromark-factory-space/index.js","../../node_modules/micromark/lib/initialize/content.js","../../node_modules/micromark/lib/initialize/document.js","../../node_modules/micromark-util-classify-character/index.js","../../node_modules/micromark-util-resolve-all/index.js","../../node_modules/micromark-core-commonmark/lib/attention.js","../../node_modules/micromark-core-commonmark/lib/autolink.js","../../node_modules/micromark-core-commonmark/lib/blank-line.js","../../node_modules/micromark-core-commonmark/lib/block-quote.js","../../node_modules/micromark-core-commonmark/lib/character-escape.js","../../node_modules/decode-named-character-reference/index.dom.js","../../node_modules/micromark-core-commonmark/lib/character-reference.js","../../node_modules/micromark-core-commonmark/lib/code-fenced.js","../../node_modules/micromark-core-commonmark/lib/code-indented.js","../../node_modules/micromark-core-commonmark/lib/code-text.js","../../node_modules/micromark-util-subtokenize/index.js","../../node_modules/micromark-core-commonmark/lib/content.js","../../node_modules/micromark-factory-destination/index.js","../../node_modules/micromark-factory-label/index.js","../../node_modules/micromark-factory-title/index.js","../../node_modules/micromark-factory-whitespace/index.js","../../node_modules/micromark-util-normalize-identifier/index.js","../../node_modules/micromark-core-commonmark/lib/definition.js","../../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../../node_modules/micromark-core-commonmark/lib/heading-atx.js","../../node_modules/micromark-util-html-tag-name/index.js","../../node_modules/micromark-core-commonmark/lib/html-flow.js","../../node_modules/micromark-core-commonmark/lib/html-text.js","../../node_modules/micromark-core-commonmark/lib/label-end.js","../../node_modules/micromark-core-commonmark/lib/label-start-image.js","../../node_modules/micromark-core-commonmark/lib/label-start-link.js","../../node_modules/micromark-core-commonmark/lib/line-ending.js","../../node_modules/micromark-core-commonmark/lib/thematic-break.js","../../node_modules/micromark-core-commonmark/lib/list.js","../../node_modules/micromark-core-commonmark/lib/setext-underline.js","../../node_modules/micromark/lib/initialize/flow.js","../../node_modules/micromark/lib/initialize/text.js","../../node_modules/micromark/lib/create-tokenizer.js","../../node_modules/micromark/lib/constructs.js","../../node_modules/micromark/lib/parse.js","../../node_modules/micromark/lib/preprocess.js","../../node_modules/micromark/lib/postprocess.js","../../node_modules/micromark-util-decode-numeric-character-reference/index.js","../../node_modules/micromark-util-decode-string/index.js","../../node_modules/unist-util-stringify-position/lib/index.js","../../node_modules/mdast-util-from-markdown/lib/index.js","../../node_modules/mermaid/dist/createText-285e50b4.js"],"sourcesContent":["/**\n * @typedef {import('mdast').Root|import('mdast').Content} Node\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s.\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML.\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} value\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nexport function toString(value, options) {\n const settings = options || emptyOptions\n const includeImageAlt =\n typeof settings.includeImageAlt === 'boolean'\n ? settings.includeImageAlt\n : true\n const includeHtml =\n typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value\n }\n\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt\n }\n\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml)\n }\n }\n\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml)\n }\n\n return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('attentionSequence')\n marker = code\n return sequence(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n return sequence\n }\n\n const token = effects.exit('attentionSequence')\n const after = classifyCharacter(code)\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\n\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 1\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n\n return asciiAtext(code) ? emailAtext(code) : nok(code)\n }\n /** @type {State} */\n\n function schemeOrEmailAtext(code) {\n return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n ? schemeInsideOrEmailAtext(code)\n : emailAtext(code)\n }\n /** @type {State} */\n\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n return urlInside\n }\n\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n\n return emailAtext(code)\n }\n /** @type {State} */\n\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n return end(code)\n }\n\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return urlInside\n }\n /** @type {State} */\n\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n /** @type {State} */\n\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (code === 62) {\n // Exit, then change the type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n return end(code)\n }\n\n return emailValue(code)\n }\n /** @type {State} */\n\n function emailValue(code) {\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n effects.consume(code)\n return code === 45 ? emailValue : emailLabel\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function end(code) {\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlankLine(effects, ok, nok) {\n return factorySpace(effects, afterWhitespace, 'linePrefix')\n /** @type {State} */\n\n function afterWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n if (code === 62) {\n const state = self.containerState\n\n if (!state.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n state.open = true\n }\n\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace')\n effects.consume(code)\n effects.exit('blockQuotePrefixWhitespace')\n effects.exit('blockQuotePrefix')\n return ok\n }\n\n effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(blockQuote, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n/** @type {Exiter} */\n\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {asciiPunctuation} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n\n return nok(code)\n }\n}\n","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n\n let max\n /** @type {(code: Code) => code is number} */\n\n let test\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n /** @type {State} */\n\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n /** @type {State} */\n\n function value(code) {\n /** @type {Token} */\n let token\n\n if (code === 59 && size) {\n token = effects.exit('characterReferenceValue')\n\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n\n const closingFenceConstruct = {\n tokenize: tokenizeClosingFence,\n partial: true\n }\n /** @type {Construct} */\n\n const nonLazyLine = {\n tokenize: tokenizeNonLazyLine,\n partial: true\n }\n const tail = this.events[this.events.length - 1]\n const initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n marker = code\n return sequenceOpen(code)\n }\n /** @type {State} */\n\n function sequenceOpen(code) {\n if (code === marker) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n\n effects.exit('codeFencedFenceSequence')\n return sizeOpen < 3\n ? nok(code)\n : factorySpace(effects, infoOpen, 'whitespace')(code)\n }\n /** @type {State} */\n\n function infoOpen(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n /** @type {State} */\n\n function info(code) {\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, infoAfter, 'whitespace')(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return info\n }\n /** @type {State} */\n\n function infoAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n /** @type {State} */\n\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return openAfter(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return meta\n }\n /** @type {State} */\n\n function openAfter(code) {\n effects.exit('codeFencedFence')\n return self.interrupt ? ok(code) : contentStart(code)\n }\n /** @type {State} */\n\n function contentStart(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(\n nonLazyLine,\n effects.attempt(\n closingFenceConstruct,\n after,\n initialPrefix\n ? factorySpace(\n effects,\n contentStart,\n 'linePrefix',\n initialPrefix + 1\n )\n : contentStart\n ),\n after\n )(code)\n }\n\n effects.enter('codeFlowValue')\n return contentContinue(code)\n }\n /** @type {State} */\n\n function contentContinue(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return contentStart(code)\n }\n\n effects.consume(code)\n return contentContinue\n }\n /** @type {State} */\n\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n /** @type {Tokenizer} */\n\n function tokenizeNonLazyLine(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n /** @type {State} */\n\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n }\n /** @type {Tokenizer} */\n\n function tokenizeClosingFence(effects, ok, nok) {\n let size = 0\n return factorySpace(\n effects,\n closingSequenceStart,\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n /** @type {State} */\n\n function closingSequenceStart(code) {\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return closingSequence(code)\n }\n /** @type {State} */\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return closingSequence\n }\n\n if (size < sizeOpen) return nok(code)\n effects.exit('codeFencedFenceSequence')\n return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n }\n /** @type {State} */\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n\n return nok(code)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n}\n/** @type {Construct} */\n\nconst indentedContent = {\n tokenize: tokenizeIndentedContent,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeIndented')\n return factorySpace(effects, afterStartPrefix, 'linePrefix', 4 + 1)(code)\n }\n /** @type {State} */\n\n function afterStartPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? afterPrefix(code)\n : nok(code)\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(indentedContent, afterPrefix, after)(code)\n }\n\n effects.enter('codeFlowValue')\n return content(code)\n }\n /** @type {State} */\n\n function content(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return afterPrefix(code)\n }\n\n effects.consume(code)\n return content\n }\n /** @type {State} */\n\n function after(code) {\n effects.exit('codeIndented')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n // If this is a lazy line, it can’t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? ok(code)\n : markdownLineEnding(code)\n ? start(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n/** @type {Resolver} */\n\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n\n let index\n /** @type {number|undefined} */\n\n let enter // If we start and end with an EOL or a space.\n\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex // And we have data.\n\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n } // Merge adjacent spaces and data.\n\n index = headEnterIndex - 1\n tailExitIndex++\n\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return events\n}\n/** @type {Previous} */\n\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n\n let size\n /** @type {Token} */\n\n let token\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return openingSequence(code)\n }\n /** @type {State} */\n\n function openingSequence(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return openingSequence\n }\n\n effects.exit('codeTextSequence')\n return gap(code)\n }\n /** @type {State} */\n\n function gap(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n } // Closing fence?\n // Could also be data.\n\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return closingSequence(code)\n } // Tabs don’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 /** @type {State} */\n\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return gap(code)\n }\n\n effects.consume(code)\n return data\n } // Closing fence.\n\n /** @type {State} */\n\n function closingSequence(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return closingSequence\n } // Done!\n\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n } // More or less accents: mark as data.\n\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {splice} from 'micromark-util-chunked'\n\n/**\n * Tokenize subcontent.\n *\n * @param {Event[]} events\n * @returns {boolean}\n */\nexport function subtokenize(events) {\n /** @type {Record} */\n const jumps = {}\n let index = -1\n /** @type {Event} */\n\n let event\n /** @type {number|undefined} */\n\n let lineIndex\n /** @type {number} */\n\n let otherIndex\n /** @type {Event} */\n\n let otherEvent\n /** @type {Event[]} */\n\n let parameters\n /** @type {Event[]} */\n\n let subevents\n /** @type {boolean|undefined} */\n\n let more\n\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n\n event = events[index] // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n\n if (\n index &&\n event[1].type === 'chunkFlow' &&\n events[index - 1][1].type === 'listItemPrefix'\n ) {\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'lineEndingBlank'\n ) {\n otherIndex += 2\n }\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'content'\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break\n }\n\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n } // Enter.\n\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n } // Exit.\n else if (event[1]._container) {\n otherIndex = index\n lineIndex = undefined\n\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n\n if (\n otherEvent[1].type === 'lineEnding' ||\n otherEvent[1].type === 'lineEndingBlank'\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n }\n\n otherEvent[1].type = 'lineEnding'\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n\n if (lineIndex) {\n // Fix position.\n event[1].end = Object.assign({}, events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n splice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n\n return !more\n}\n/**\n * Tokenize embedded tokens.\n *\n * @param {Event[]} events\n * @param {number} eventIndex\n * @returns {Record}\n */\n\nfunction subcontent(events, eventIndex) {\n const token = events[eventIndex][1]\n const context = events[eventIndex][2]\n let startPosition = eventIndex - 1\n /** @type {number[]} */\n\n const startPositions = []\n const tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n const childEvents = tokenizer.events\n /** @type {[number, number][]} */\n\n const jumps = []\n /** @type {Record} */\n\n const gaps = {}\n /** @type {Chunk[]} */\n\n let stream\n /** @type {Token|undefined} */\n\n let previous\n let index = -1\n /** @type {Token|undefined} */\n\n let current = token\n let adjust = 0\n let start = 0\n const breaks = [start] // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n\n while (current) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== current) {\n // Empty.\n }\n\n startPositions.push(startPosition)\n\n if (!current._tokenizer) {\n stream = context.sliceStream(current)\n\n if (!current.next) {\n stream.push(null)\n }\n\n if (previous) {\n tokenizer.defineSkip(current.start)\n }\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n\n tokenizer.write(stream)\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n } // Unravel the next token.\n\n previous = current\n current = current.next\n } // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n\n current = token\n\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' &&\n childEvents[index - 1][0] === 'enter' &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n start = index + 1\n breaks.push(start) // Help GC.\n\n current._tokenizer = undefined\n current.previous = undefined\n current = current.next\n }\n } // Help GC.\n\n tokenizer.events = [] // If there’s one more token (which is the cases for lines that end in an\n // EOF), that’s perfect: the last point we found starts it.\n // If there isn’t then make sure any remaining content is added to it.\n\n if (current) {\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n } else {\n breaks.pop()\n } // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren’t affected.\n\n index = breaks.length\n\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1])\n const start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n splice(events, start, 2, slice)\n }\n\n index = -1\n\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n adjust += jumps[index][1] - jumps[index][0] - 1\n }\n\n return gaps\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n tokenize: tokenizeContent,\n resolve: resolveContent\n}\n/** @type {Construct} */\n\nconst continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n}\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\n\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContent(effects, ok) {\n /** @type {Token} */\n let previous\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return data(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null) {\n return contentEnd(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.check(\n continuationConstruct,\n contentContinue,\n contentEnd\n )(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n /** @type {State} */\n\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\n }\n /** @type {State} */\n\n function contentContinue(code) {\n effects.consume(code)\n effects.exit('chunkContent')\n previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous\n })\n previous = previous.next\n return data\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this\n return startLookahead\n /** @type {State} */\n\n function startLookahead(code) {\n effects.exit('chunkContent')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n /** @type {State} */\n\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n const tail = self.events[self.events.length - 1]\n\n if (\n !self.parser.constructs.disable.null.includes('codeIndented') &&\n tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ) {\n return ok(code)\n }\n\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n asciiControl,\n markdownLineEndingOrSpace,\n markdownLineEnding\n} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} literalType\n * @param {string} literalMarkerType\n * @param {string} rawType\n * @param {string} stringType\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryDestination(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n const limit = max || Number.POSITIVE_INFINITY\n let balance = 0\n return start\n /** @type {State} */\n\n function start(code) {\n if (code === 60) {\n effects.enter(type)\n effects.enter(literalType)\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n return destinationEnclosedBefore\n }\n\n if (code === null || code === 41 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationRaw(code)\n }\n /** @type {State} */\n\n function destinationEnclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n effects.exit(literalType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationEnclosed(code)\n }\n /** @type {State} */\n\n function destinationEnclosed(code) {\n if (code === 62) {\n effects.exit('chunkString')\n effects.exit(stringType)\n return destinationEnclosedBefore(code)\n }\n\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return code === 92 ? destinationEnclosedEscape : destinationEnclosed\n }\n /** @type {State} */\n\n function destinationEnclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code)\n return destinationEnclosed\n }\n\n return destinationEnclosed(code)\n }\n /** @type {State} */\n\n function destinationRaw(code) {\n if (code === 40) {\n if (++balance > limit) return nok(code)\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === 41) {\n if (!balance--) {\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n if (balance) return nok(code)\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n if (asciiControl(code)) return nok(code)\n effects.consume(code)\n return code === 92 ? destinationRawEscape : destinationRaw\n }\n /** @type {State} */\n\n function destinationRawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code)\n return destinationRaw\n }\n\n return destinationRaw(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @this {TokenizeContext}\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this\n let size = 0\n /** @type {boolean} */\n\n let data\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.enter(stringType)\n return atBreak\n }\n /** @type {State} */\n\n function atBreak(code) {\n if (\n code === null ||\n code === 91 ||\n (code === 93 && !data) ||\n /* To do: remove in the future once we’ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn’t need this */\n\n /* Hidden footnotes hook */\n\n /* c8 ignore next 3 */\n (code === 94 &&\n !size &&\n '_hiddenFootnoteSupport' in self.parser.constructs) ||\n size > 999\n ) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return atBreak\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return label(code)\n }\n /** @type {State} */\n\n function label(code) {\n if (\n code === null ||\n code === 91 ||\n code === 93 ||\n markdownLineEnding(code) ||\n size++ > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n\n effects.consume(code)\n data = data || !markdownSpace(code)\n return code === 92 ? labelEscape : label\n }\n /** @type {State} */\n\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return label\n }\n\n return label(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable} */\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === 40 ? 41 : code\n return atFirstTitleBreak\n }\n /** @type {State} */\n\n function atFirstTitleBreak(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n return atTitleBreak(code)\n }\n /** @type {State} */\n\n function atTitleBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return atFirstTitleBreak(marker)\n }\n\n if (code === null) {\n return nok(code)\n } // Note: blank lines can’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 /** @type {State} */\n\n function title(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atTitleBreak(code)\n }\n\n effects.consume(code)\n return code === 92 ? titleEscape : title\n }\n /** @type {State} */\n\n function titleEscape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return title\n }\n\n return title(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen\n return start\n /** @type {State} */\n\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n seen = true\n return start\n }\n\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n\n return ok(code)\n }\n}\n","/**\n * Normalize an identifier (such as used in definitions).\n *\n * @param {string} value\n * @returns {string}\n */\nexport function normalizeIdentifier(value) {\n return (\n value // Collapse Markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n .replace(/^ | $/g, '') // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factorySpace} from 'micromark-factory-space'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\n/** @type {Construct} */\n\nconst titleConstruct = {\n tokenize: tokenizeTitle,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this\n /** @type {string} */\n\n let identifier\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('definition')\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n /** @type {State} */\n\n function labelAfter(code) {\n identifier = normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker') // Note: blank lines can’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 /** @type {State} */\n\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n if (!self.parser.defined.includes(identifier)) {\n self.parser.defined.push(identifier)\n }\n\n return ok(code)\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeTitle(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, before)(code)\n : nok(code)\n }\n /** @type {State} */\n\n function before(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factorySpace(effects, after, 'whitespace'),\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (markdownLineEnding(code)) {\n effects.exit('escapeMarker')\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n/** @type {Resolver} */\n\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2\n let contentStart = 3\n /** @type {Token} */\n\n let content\n /** @type {Token} */\n\n let text // Prefix whitespace, part of the opening.\n\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n } // Suffix whitespace, part of the closing.\n\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\n }\n\n if (\n events[contentEnd][1].type === 'atxHeadingSequence' &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === 'whitespace'))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\n\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n // @ts-expect-error Constants are fine to assign.\n contentType: 'text'\n }\n splice(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n const self = this\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('atxHeading')\n effects.enter('atxHeadingSequence')\n return fenceOpenInside(code)\n }\n /** @type {State} */\n\n function fenceOpenInside(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return fenceOpenInside\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return self.interrupt ? ok(code) : headingBreak(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function headingBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequence(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n return ok(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, headingBreak, 'whitespace')(code)\n }\n\n effects.enter('atxHeadingText')\n return data(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === 35) {\n effects.consume(code)\n return sequence\n }\n\n effects.exit('atxHeadingSequence')\n return headingBreak(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return headingBreak(code)\n }\n\n effects.consume(code)\n return data\n }\n}\n","/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result\n * in more relaxed rules (condition 6): because they are known blocks, the\n * HTML-like syntax doesn’t have to be strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * .\n */\nexport const htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result in\n * HTML that can include lines w/o exiting, until a closing tag also in this\n * list is found (condition 1).\n *\n * This module is copied from:\n * .\n *\n * Note that `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {htmlBlockNames, htmlRawNames} from 'micromark-util-html-tag-name'\nimport {blankLine} from './blank-line.js'\n/** @type {Construct} */\n\nexport const htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\n/** @type {Construct} */\n\nconst nextBlankConstruct = {\n tokenize: tokenizeNextBlank,\n partial: true\n}\n/** @type {Resolver} */\n\nfunction resolveToHtmlFlow(events) {\n let index = events.length\n\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break\n }\n }\n\n if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start // Add the prefix start to the HTML line token.\n\n events[index + 1][1].start = events[index - 2][1].start // Remove the line prefix.\n\n events.splice(index - 2, 2)\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this\n /** @type {number} */\n\n let kind\n /** @type {boolean} */\n\n let startTag\n /** @type {string} */\n\n let buffer\n /** @type {number} */\n\n let index\n /** @type {Code} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationStart\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n kind = 3 // While we’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 = String.fromCharCode(code)\n startTag = true\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function declarationStart(code) {\n if (code === 45) {\n effects.consume(code)\n kind = 2\n return commentOpenInside\n }\n\n if (code === 91) {\n effects.consume(code)\n kind = 5\n buffer = 'CDATA['\n index = 0\n return cdataOpenInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n kind = 4\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function cdataOpenInside(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length\n ? self.interrupt\n ? ok\n : continuation\n : cdataOpenInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagName(code) {\n if (\n code === null ||\n code === 47 ||\n code === 62 ||\n markdownLineEndingOrSpace(code)\n ) {\n if (\n code !== 47 &&\n startTag &&\n htmlRawNames.includes(buffer.toLowerCase())\n ) {\n kind = 1\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n kind = 6\n\n if (code === 47) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n kind = 7 // Do not support complete HTML when interrupting\n\n return self.interrupt && !self.parser.lazy[self.now().line]\n ? nok(code)\n : startTag\n ? completeAttributeNameBefore(code)\n : completeClosingTagAfter(code)\n }\n\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code)\n return self.interrupt ? ok : continuation\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n\n return completeEnd(code)\n }\n /** @type {State} */\n\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code)\n return completeEnd\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n\n return completeEnd(code)\n }\n /** @type {State} */\n\n function completeAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return completeAttributeName\n }\n\n return completeAttributeNameAfter(code)\n }\n /** @type {State} */\n\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n\n return completeAttributeNameBefore(code)\n }\n /** @type {State} */\n\n function completeAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return completeAttributeValueQuoted\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n marker = null\n return completeAttributeValueUnquoted(code)\n }\n /** @type {State} */\n\n function completeAttributeValueQuoted(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n if (code === marker) {\n effects.consume(code)\n return completeAttributeValueQuotedAfter\n }\n\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n /** @type {State} */\n\n function completeAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n markdownLineEndingOrSpace(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n /** @type {State} */\n\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAfter\n }\n\n return code === null || markdownLineEnding(code)\n ? continuation(code)\n : nok(code)\n }\n /** @type {State} */\n\n function continuation(code) {\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationCommentInside\n }\n\n if (code === 60 && kind === 1) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n\n if (code === 62 && kind === 4) {\n effects.consume(code)\n return continuationClose\n }\n\n if (code === 63 && kind === 3) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n if (code === 93 && kind === 5) {\n effects.consume(code)\n return continuationCharacterDataInside\n }\n\n if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {\n return effects.check(\n nextBlankConstruct,\n continuationClose,\n continuationAtLineEnding\n )(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n return continuationAtLineEnding(code)\n }\n\n effects.consume(code)\n return continuation\n }\n /** @type {State} */\n\n function continuationAtLineEnding(code) {\n effects.exit('htmlFlowData')\n return htmlContinueStart(code)\n }\n /** @type {State} */\n\n function htmlContinueStart(code) {\n if (code === null) {\n return done(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(\n {\n tokenize: htmlLineEnd,\n partial: true\n },\n htmlContinueStart,\n done\n )(code)\n }\n\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n /** @type {Tokenizer} */\n\n function htmlLineEnd(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n /** @type {State} */\n\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n }\n /** @type {State} */\n\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationRawEndTag(code) {\n if (code === 62 && htmlRawNames.includes(buffer.toLowerCase())) {\n effects.consume(code)\n return continuationClose\n }\n\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationCharacterDataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n } // More dashes.\n\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return done(code)\n }\n\n effects.consume(code)\n return continuationClose\n }\n /** @type {State} */\n\n function done(code) {\n effects.exit('htmlFlow')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.exit('htmlFlowData')\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable|undefined} */\n\n let marker\n /** @type {string} */\n\n let buffer\n /** @type {number} */\n\n let index\n /** @type {State} */\n\n let returnState\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpen\n }\n\n if (code === 91) {\n effects.consume(code)\n buffer = 'CDATA['\n index = 0\n return cdataOpen\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentStart\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentStart(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentStartDash\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function commentStartDash(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = comment\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return comment\n }\n /** @type {State} */\n\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return end\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function cdataOpen(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length ? cdata : cdataOpen\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = cdata\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return cdata\n }\n /** @type {State} */\n\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n /** @type {State} */\n\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n /** @type {State} */\n\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = declaration\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return declaration\n }\n /** @type {State} */\n\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = instruction\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return instruction\n }\n /** @type {State} */\n\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n /** @type {State} */\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagClose(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return tagCloseBetween(code)\n }\n /** @type {State} */\n\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function tagOpen(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n return tagOpenAttributeNameAfter(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n\n return tagOpenBetween(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueUnquoted\n }\n /** @type {State} */\n\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return tagOpenAttributeValueQuotedAfter\n }\n\n if (code === null) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n /** @type {State} */\n\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n } // We can’t have blank lines in content, so no need to worry about empty\n // tokens.\n\n /** @type {State} */\n\n function atLineEnding(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(\n effects,\n afterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n /** @type {State} */\n\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n/** @type {Construct} */\n\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\n\nconst fullReferenceConstruct = {\n tokenize: tokenizeFullReference\n}\n/** @type {Construct} */\n\nconst collapsedReferenceConstruct = {\n tokenize: tokenizeCollapsedReference\n}\n/** @type {Resolver} */\n\nfunction resolveAllLabelEnd(events) {\n let index = -1\n /** @type {Token} */\n\n let token\n\n while (++index < events.length) {\n token = events[index][1]\n\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n\n return events\n}\n/** @type {Resolver} */\n\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n\n let token\n /** @type {number|undefined} */\n\n let open\n /** @type {number|undefined} */\n\n let close\n /** @type {Event[]} */\n\n let media // Find an opening.\n\n while (index--) {\n token = events[index][1]\n\n if (open) {\n // If we see another link, or inactive link label, we’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 const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ] // Opening marker.\n\n media = push(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n media = push(media, [['enter', text, context]]) // Between.\n\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n ) // Text close, marker close, label close.\n\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ]) // Reference, resource, or so.\n\n media = push(media, events.slice(close + 1)) // Media close.\n\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n\n let labelStart\n /** @type {boolean} */\n\n let defined // Find an opening.\n\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!labelStart) {\n return nok(code)\n } // It’s a balanced bracket, but contains a link.\n\n if (labelStart._inactive) return balanced(code)\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return afterLabelEnd\n }\n /** @type {State} */\n\n function afterLabelEnd(code) {\n // Resource: `[asd](fgh)`.\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n ok,\n defined ? ok : balanced\n )(code)\n } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n if (code === 91) {\n return effects.attempt(\n fullReferenceConstruct,\n ok,\n defined\n ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n : balanced\n )(code)\n } // Shortcut reference: `[asd]`?\n\n return defined ? ok(code) : balanced(code)\n }\n /** @type {State} */\n\n function balanced(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeResource(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return factoryWhitespace(effects, open)\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 41) {\n return end(code)\n }\n\n return factoryDestination(\n effects,\n destinationAfter,\n nok,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n /** @type {State} */\n\n function destinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, between)(code)\n : end(code)\n }\n /** @type {State} */\n\n function between(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factoryWhitespace(effects, end),\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function end(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeFullReference(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n return factoryLabel.call(\n self,\n effects,\n afterLabel,\n nok,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n /** @type {State} */\n\n function afterLabel(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n /* To do: remove in the future once we’ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn’t need this */\n\n /* Hidden footnotes hook */\n\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n /** @type {State} */\n\n function after(code) {\n /* To do: remove in the future once we’ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn’t need this */\n\n /* Hidden footnotes hook. */\n\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLineEnding(effects, ok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0\n /** @type {NonNullable} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('thematicBreak')\n marker = code\n return atBreak(code)\n }\n /** @type {State} */\n\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n if (size < 3 || (code !== null && !markdownLineEnding(code))) {\n return nok(code)\n }\n\n effects.exit('thematicBreak')\n return ok(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n\n effects.exit('thematicBreakSequence')\n return atBreak(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @typedef {Record & {marker: Code, type: string, size: number}} ListContainerState\n * @typedef {TokenizeContext & {containerState: ListContainerState}} TokenizeContextWithState\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {asciiDigit, markdownSpace} from 'micromark-util-character'\nimport {blankLine} from './blank-line.js'\nimport {thematicBreak} from './thematic-break.js'\n/** @type {Construct} */\n\nexport const list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\n/** @type {Construct} */\n\nconst listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\n/** @type {Construct} */\n\nconst indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this\n const tail = self.events[self.events.length - 1]\n let initialSize =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n const kind =\n self.containerState.type ||\n (code === 42 || code === 43 || code === 45\n ? 'listUnordered'\n : 'listOrdered')\n\n if (\n kind === 'listUnordered'\n ? !self.containerState.marker || code === self.containerState.marker\n : asciiDigit(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {\n _container: true\n })\n }\n\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix')\n return code === 42 || code === 45\n ? effects.check(thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix')\n effects.enter('listItemValue')\n return inside(code)\n }\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code)\n return inside\n }\n\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === 41 || code === 46)\n ) {\n effects.exit('listItemValue')\n return atMarker(code)\n }\n\n return nok(code)\n }\n /**\n * @type {State}\n **/\n\n function atMarker(code) {\n effects.enter('listItemMarker')\n effects.consume(code)\n effects.exit('listItemMarker')\n self.containerState.marker = self.containerState.marker || code\n return effects.check(\n blankLine, // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n /** @type {State} */\n\n function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n /** @type {State} */\n\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter('listItemPrefixWhitespace')\n effects.consume(code)\n effects.exit('listItemPrefixWhitespace')\n return endOfPrefix\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize +\n self.sliceSerialize(effects.exit('listItemPrefix'), true).length\n return ok(code)\n }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this\n self.containerState._closeFlow = undefined\n return effects.check(blankLine, onBlank, notBlank)\n /** @type {State} */\n\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine // We have a blank line.\n // Still, try to consume at most the items size.\n\n return factorySpace(\n effects,\n ok,\n 'listItemIndent',\n self.containerState.size + 1\n )(code)\n }\n /** @type {State} */\n\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n /** @type {State} */\n\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true // As we’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.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'listItemIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n/**\n * @type {Exiter}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4 + 1\n )\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return !markdownSpace(code) &&\n tail &&\n tail[1].type === 'listItemPrefixWhitespace'\n ? ok(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n/** @type {Resolver} */\n\nfunction resolveToSetextUnderline(events, context) {\n let index = events.length\n /** @type {number|undefined} */\n\n let content\n /** @type {number|undefined} */\n\n let text\n /** @type {number|undefined} */\n\n let definition // Find the opening of the content.\n // It’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 const heading = {\n type: 'setextHeading',\n start: Object.assign({}, events[text][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n } // Change the paragraph to setext heading text.\n\n events[text][1].type = 'setextHeadingText' // If we have definitions in the content, we’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 = Object.assign({}, events[definition][1].end)\n } else {\n events[content][1] = heading\n } // Add the heading exit at the end.\n\n events.push(['exit', heading, context])\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {NonNullable} */\n\n let marker\n /** @type {boolean} */\n\n let paragraph // Find an opening.\n\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (\n self.events[index][1].type !== 'lineEnding' &&\n self.events[index][1].type !== 'linePrefix' &&\n self.events[index][1].type !== 'content'\n ) {\n paragraph = self.events[index][1].type === 'paragraph'\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine')\n effects.enter('setextHeadingLineSequence')\n marker = code\n return closingSequence(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n return closingSequence\n }\n\n effects.exit('setextHeadingLineSequence')\n return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code)\n }\n /** @type {State} */\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n}\n/** @type {Initializer} */\n\nfunction initializeFlow(effects) {\n const self = this\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine,\n atBlankEnding, // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n /** @type {State} */\n\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n /** @type {State} */\n\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nexport const resolver = {\n resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n/**\n * @param {'string'|'text'} field\n * @returns {InitialConstruct}\n */\n\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n /** @type {Initializer} */\n\n function initializeText(effects) {\n const self = this\n const constructs = this.parser.constructs[field]\n const text = effects.attempt(constructs, start, notText)\n return start\n /** @type {State} */\n\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n /** @type {State} */\n\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('data')\n effects.consume(code)\n return data\n }\n /** @type {State} */\n\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n\n function atBreak(code) {\n if (code === null) {\n return true\n }\n\n const list = constructs[code]\n let index = -1\n\n if (list) {\n while (++index < list.length) {\n const item = list[index]\n\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true\n }\n }\n }\n\n return false\n }\n }\n}\n/**\n * @param {Resolver} [extraResolver]\n * @returns {Resolver}\n */\n\nfunction createResolver(extraResolver) {\n return resolveAllText\n /** @type {Resolver} */\n\n function resolveAllText(events, context) {\n let index = -1\n /** @type {number|undefined} */\n\n let enter // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’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}\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\n\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0 // Skip first.\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === 'lineEnding') &&\n events[eventIndex - 1][1].type === 'data'\n ) {\n const data = events[eventIndex - 1][1]\n const chunks = context.sliceStream(data)\n let index = chunks.length\n let bufferIndex = -1\n let size = 0\n /** @type {boolean|undefined} */\n\n let tabs\n\n while (index--) {\n const chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n\n if (bufferIndex) break\n bufferIndex = -1\n } // Number\n else if (chunk === -2) {\n tabs = true\n size++\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++\n break\n }\n }\n\n if (size) {\n const token = {\n type:\n eventIndex === events.length || tabs || size < 2\n ? 'lineSuffix'\n : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: Object.assign({}, data.end)\n }\n data.end = Object.assign({}, token.start)\n\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n\n eventIndex++\n }\n }\n\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n */\n\n/**\n * @typedef Info\n * @property {() => void} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit} [from]\n * @returns {TokenizeContext}\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = Object.assign(\n from\n ? Object.assign({}, from)\n : {\n line: 1,\n column: 1,\n offset: 0\n },\n {\n _index: 0,\n _bufferIndex: -1\n }\n )\n /** @type {Record} */\n\n const columnStart = {}\n /** @type {Array} */\n\n const resolveAllConstructs = []\n /** @type {Array} */\n\n let chunks = []\n /** @type {Array} */\n\n let stack = []\n /** @type {boolean|undefined} */\n\n let consumed = true\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n\n const effects = {\n consume,\n enter,\n exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n }\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n\n const context = {\n previous: null,\n code: null,\n containerState: {},\n events: [],\n parser,\n sliceStream,\n sliceSerialize,\n now,\n defineSkip,\n write\n }\n /**\n * The state function.\n *\n * @type {State|void}\n */\n\n let state = initialize.tokenize.call(context, effects)\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n\n let expectedCode\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n }\n\n return context\n /** @type {TokenizeContext['write']} */\n\n function write(slice) {\n chunks = push(chunks, slice)\n main() // Exit if we’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 /** @type {TokenizeContext['sliceSerialize']} */\n\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs)\n }\n /** @type {TokenizeContext['sliceStream']} */\n\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n /** @type {TokenizeContext['now']} */\n\n function now() {\n return Object.assign({}, point)\n }\n /** @type {TokenizeContext['defineSkip']} */\n\n function defineSkip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n } //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {void}\n */\n\n function main() {\n /** @type {number} */\n let chunkIndex\n\n while (point._index < chunks.length) {\n const chunk = chunks[point._index] // If we’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 }\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n\n function go(code) {\n consumed = undefined\n expectedCode = code\n state = state(code)\n }\n /** @type {Effects['consume']} */\n\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++\n point.column = 1\n point.offset += code === -3 ? 2 : 1\n accountForPotentialSkip()\n } else if (code !== -1) {\n point.column++\n point.offset++\n } // Not in a string chunk.\n\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++ // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n } // Expose the previous character.\n\n context.previous = code // Mark as consumed.\n\n consumed = true\n }\n /** @type {Effects['enter']} */\n\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {}\n token.type = type\n token.start = now()\n context.events.push(['enter', token, context])\n stack.push(token)\n return token\n }\n /** @type {Effects['exit']} */\n\n function exit(type) {\n const token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n }\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n }\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n\n function onsuccessfulcheck(_, info) {\n info.restore()\n }\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {Record} [fields]\n */\n\n function constructFactory(onreturn, fields) {\n return hook\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Construct|Array|ConstructRecord} constructs\n * @param {State} returnState\n * @param {State} [bogusState]\n * @returns {State}\n */\n\n function hook(constructs, returnState, bogusState) {\n /** @type {Array} */\n let listOfConstructs\n /** @type {number} */\n\n let constructIndex\n /** @type {Construct} */\n\n let currentConstruct\n /** @type {Info} */\n\n let info\n return Array.isArray(constructs)\n ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs)\n : 'tokenize' in constructs // @ts-expect-error Looks like a construct.\n ? handleListOfConstructs([constructs])\n : handleMapOfConstructs(constructs)\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n\n function handleMapOfConstructs(map) {\n return start\n /** @type {State} */\n\n function start(code) {\n const def = code !== null && map[code]\n const all = code !== null && map.null\n const list = [\n // To do: add more extension tests.\n\n /* c8 ignore next 2 */\n ...(Array.isArray(def) ? def : def ? [def] : []),\n ...(Array.isArray(all) ? all : all ? [all] : [])\n ]\n return handleListOfConstructs(list)(code)\n }\n }\n /**\n * Handle a list of construct.\n *\n * @param {Array} list\n * @returns {State}\n */\n\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n\n if (list.length === 0) {\n return bogusState\n }\n\n return handleConstruct(list[constructIndex])\n }\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n\n function handleConstruct(construct) {\n return start\n /** @type {State} */\n\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’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.includes(construct.name)\n ) {\n return nok(code)\n }\n\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n /** @type {State} */\n\n function ok(code) {\n consumed = true\n onreturn(currentConstruct, info)\n return returnState\n }\n /** @type {State} */\n\n function nok(code) {\n consumed = true\n info.restore()\n\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n\n return bogusState\n }\n }\n }\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct)\n }\n\n if (construct.resolve) {\n splice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n /**\n * Store state.\n *\n * @returns {Info}\n */\n\n function store() {\n const startPoint = now()\n const startPrevious = context.previous\n const startCurrentConstruct = context.currentConstruct\n const startEventsIndex = context.events.length\n const startStack = Array.from(stack)\n return {\n restore,\n from: startEventsIndex\n }\n /**\n * Restore state.\n *\n * @returns {void}\n */\n\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n }\n }\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {void}\n */\n\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line]\n point.offset += columnStart[point.line] - 1\n }\n }\n}\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array} chunks\n * @param {Pick} token\n * @returns {Array}\n */\n\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index\n const startBufferIndex = token.start._bufferIndex\n const endIndex = token.end._index\n const endBufferIndex = token.end._bufferIndex\n /** @type {Array} */\n\n let view\n\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n\n if (startBufferIndex > -1) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view[0] = view[0].slice(startBufferIndex)\n }\n\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n\n return view\n}\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array} chunks\n * @param {boolean} [expandTabs=false]\n * @returns {string}\n */\n\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1\n /** @type {Array} */\n\n const result = []\n /** @type {boolean|undefined} */\n\n let atTab\n\n while (++index < chunks.length) {\n const chunk = chunks[index]\n /** @type {string} */\n\n let value\n\n if (typeof chunk === 'string') {\n value = chunk\n } else\n switch (chunk) {\n case -5: {\n value = '\\r'\n break\n }\n\n case -4: {\n value = '\\n'\n break\n }\n\n case -3: {\n value = '\\r' + '\\n'\n break\n }\n\n case -2: {\n value = expandTabs ? ' ' : '\\t'\n break\n }\n\n case -1: {\n if (!expandTabs && atTab) continue\n value = ' '\n break\n }\n\n default: {\n // Currently only replacement character.\n value = String.fromCharCode(chunk)\n }\n }\n\n atTab = chunk === -2\n result.push(value)\n }\n\n return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n/** @type {Extension['document']} */\n\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n/** @type {Extension['contentInitial']} */\n\nexport const contentInitial = {\n [91]: definition\n}\n/** @type {Extension['flowInitial']} */\n\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n/** @type {Extension['flow']} */\n\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n/** @type {Extension['string']} */\n\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n/** @type {Extension['text']} */\n\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n/** @type {Extension['insideSpan']} */\n\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n/** @type {Extension['attentionMarkers']} */\n\nexport const attentionMarkers = {\n null: [42, 95]\n}\n/** @type {Extension['disable']} */\n\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Create} Create\n */\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n/**\n * @param {ParseOptions} [options]\n * @returns {ParseContext}\n */\n\nexport function parse(options = {}) {\n /** @type {FullNormalizedExtension} */\n // @ts-expect-error `defaultConstructs` is full, so the result will be too.\n const constructs = combineExtensions(\n // @ts-expect-error Same as above.\n [defaultConstructs].concat(options.extensions || [])\n )\n /** @type {ParseContext} */\n\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n /**\n * @param {InitialConstruct} initial\n */\n\n function create(initial) {\n return creator\n /** @type {Create} */\n\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding} [encoding]\n * @param {boolean} [end=false]\n * @returns {Array}\n */\nconst search = /[\\0\\t\\n\\r]/g\n/**\n * @returns {Preprocessor}\n */\n\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean|undefined} */\n\n let start = true\n /** @type {boolean|undefined} */\n\n let atCarriageReturn\n return preprocessor\n /** @type {Preprocessor} */\n\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray|null} */\n\n let match\n /** @type {number} */\n\n let next\n /** @type {number} */\n\n let startPosition\n /** @type {number} */\n\n let endPosition\n /** @type {Code} */\n\n let code // @ts-expect-error `Buffer` does allow an encoding.\n\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n\n if (start) {\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n\n start = undefined\n }\n\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n\n while (column++ < next) chunks.push(-1)\n\n break\n }\n\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n\n startPosition = endPosition + 1\n }\n\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n\n return chunks\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {subtokenize} from 'micromark-util-subtokenize'\n/**\n * @param {Array} events\n * @returns {Array}\n */\n\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n\n return events\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n\n if (\n // C0 except for HT, LF, FF, CR, space\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.\n (code > 126 && code < 160) || // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) || // Noncharacters.\n (code > 64975 && code < 65008) ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 || // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n\n return String.fromCharCode(code)\n}\n","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n/**\n * Utility to decode markdown strings (which occur in places such as fenced\n * code info strings, destinations, labels, and titles).\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * @returns {string}\n */\n\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\n\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n } // Reference.\n\n const head = $2.charCodeAt(0)\n\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Position | PositionLike | Point | PointLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').StaticPhrasingContent} StaticPhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Root | Content} Node\n * @typedef {Extract} Parent\n *\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | undefined | null | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(key: Key) => CompileData[Key]} getData\n * Get data from the key/value store.\n * @property {(key: Key, value?: CompileData[Key]) => void} setData\n * Set data into the key/value store.\n * @property {(this: CompileContext) => void} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Kind, token: Token, onError?: OnEnterError) => Kind} enter\n * Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n * Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\n// To do: micromark: create a registry of tokens?\n// To do: next major: don’t return given `Node` from `enter`.\n// To do: next major: remove setter/getter.\n\nimport {toString} from 'mdast-util-to-string'\nimport {parse} from 'micromark/lib/parse.js'\nimport {preprocess} from 'micromark/lib/preprocess.js'\nimport {postprocess} from 'micromark/lib/postprocess.js'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n\n/**\n * @param value\n * Markdown to parse.\n * @param encoding\n * Character encoding for when `value` is `Buffer`.\n * @param options\n * Configuration.\n * @returns\n * mdast tree.\n */\nexport const fromMarkdown =\n /**\n * @type {(\n * ((value: Value, encoding: Encoding, options?: Options | null | undefined) => Root) &\n * ((value: Value, options?: Options | null | undefined) => Root)\n * )}\n */\n\n /**\n * @param {Value} value\n * @param {Encoding | Options | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n */\n function (value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n }\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }\n configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n setData,\n getData\n }\n /** @type {Array} */\n const listStack = []\n let index = -1\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n index = -1\n while (++index < events.length) {\n const handler = config[events[index][0]]\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n return tree\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token | undefined} */\n let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n while (++index <= length) {\n const event = events[index]\n 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 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 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 if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\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 if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n }\n // @ts-expect-error: `listItem` is most definitely defined, TS...\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Set data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @param {CompileData[Key]} [value]\n * New value.\n * @returns {void}\n * Nothing.\n */\n function setData(key, value) {\n data[key] = value\n }\n\n /**\n * Get data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @returns {CompileData[Key]}\n * Value.\n */\n function getData(key) {\n return data[key]\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Node} create\n * Create a node.\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {void}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n\n /**\n * @template {Node} Kind\n * Node type.\n * @this {CompileContext}\n * Context.\n * @param {Kind} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {Kind}\n * The given node.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n parent.children.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler])\n // @ts-expect-error: `end` will be patched later.\n node.position = {\n start: point(token.start)\n }\n return node\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {Node}\n * The closed node.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n node.position.end = point(token.end)\n return node\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n const ancestor = this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n setData('expectingFirstListItemValue')\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return\n this.buffer()\n setData('flowCodeInside', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n setData('flowCodeInside')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n let tail = node.children[node.children.length - 1]\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n // @ts-expect-error: we’ll add `end` later.\n tail.position = {\n start: point(token.start)\n }\n // @ts-expect-error: Assume `parent` accepts `text`.\n node.children.push(tail)\n }\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n setData('atHardBreak')\n return\n }\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n // Assume a reference.\n setData('inReference', true)\n if (node.type === 'link') {\n /** @type {Array} */\n // @ts-expect-error: Assume static phrasing content.\n const children = fragment.children\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n setData('inReference')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = getData('characterReferenceType')\n /** @type {string} */\n let value\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n setData('characterReferenceType')\n } else {\n const result = decodeNamedCharacterReference(data)\n value = result\n }\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n\n /** @returns {Heading} */\n function heading() {\n // @ts-expect-error `depth` will be set later.\n return {\n type: 'heading',\n depth: undefined,\n children: []\n }\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n\n /** @returns {HTML} */\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Array>} extensions\n * @returns {void}\n */\nfunction configure(combined, extensions) {\n let index = -1\n while (++index < extensions.length) {\n const value = extensions[index]\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {void}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n for (key in extension) {\n if (own.call(extension, key)) {\n if (key === 'canContainEols') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'transforms') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'enter' || key === 'exit') {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","import { l as log, H as decodeEntities } from \"./mermaid-a98f434b.js\";\nimport { fromMarkdown } from \"mdast-util-from-markdown\";\nimport { dedent } from \"ts-dedent\";\nfunction preprocessMarkdown(markdown) {\n const withoutMultipleNewlines = markdown.replace(/\\n{2,}/g, \"\\n\");\n const withoutExtraSpaces = dedent(withoutMultipleNewlines);\n return withoutExtraSpaces;\n}\nfunction markdownToLines(markdown) {\n const preprocessedMarkdown = preprocessMarkdown(markdown);\n const { children } = fromMarkdown(preprocessedMarkdown);\n const lines = [[]];\n let currentLine = 0;\n function processNode(node, parentType = \"normal\") {\n if (node.type === \"text\") {\n const textLines = node.value.split(\"\\n\");\n textLines.forEach((textLine, index) => {\n if (index !== 0) {\n currentLine++;\n lines.push([]);\n }\n textLine.split(\" \").forEach((word) => {\n if (word) {\n lines[currentLine].push({ content: word, type: parentType });\n }\n });\n });\n } else if (node.type === \"strong\" || node.type === \"emphasis\") {\n node.children.forEach((contentNode) => {\n processNode(contentNode, node.type);\n });\n }\n }\n children.forEach((treeNode) => {\n if (treeNode.type === \"paragraph\") {\n treeNode.children.forEach((contentNode) => {\n processNode(contentNode);\n });\n }\n });\n return lines;\n}\nfunction markdownToHTML(markdown) {\n const { children } = fromMarkdown(markdown);\n function output(node) {\n if (node.type === \"text\") {\n return node.value.replace(/\\n/g, \"
\");\n } else if (node.type === \"strong\") {\n return `${node.children.map(output).join(\"\")}`;\n } else if (node.type === \"emphasis\") {\n return `${node.children.map(output).join(\"\")}`;\n } else if (node.type === \"paragraph\") {\n return `${node.children.map(output).join(\"\")}
`;\n }\n return `Unsupported markdown: ${node.type}`;\n }\n return children.map(output).join(\"\");\n}\nfunction splitTextToChars(text) {\n if (Intl.Segmenter) {\n return [...new Intl.Segmenter().segment(text)].map((s) => s.segment);\n }\n return [...text];\n}\nfunction splitWordToFitWidth(checkFit, word) {\n const characters = splitTextToChars(word.content);\n return splitWordToFitWidthRecursion(checkFit, [], characters, word.type);\n}\nfunction splitWordToFitWidthRecursion(checkFit, usedChars, remainingChars, type) {\n if (remainingChars.length === 0) {\n return [\n { content: usedChars.join(\"\"), type },\n { content: \"\", type }\n ];\n }\n const [nextChar, ...rest] = remainingChars;\n const newWord = [...usedChars, nextChar];\n if (checkFit([{ content: newWord.join(\"\"), type }])) {\n return splitWordToFitWidthRecursion(checkFit, newWord, rest, type);\n }\n if (usedChars.length === 0 && nextChar) {\n usedChars.push(nextChar);\n remainingChars.shift();\n }\n return [\n { content: usedChars.join(\"\"), type },\n { content: remainingChars.join(\"\"), type }\n ];\n}\nfunction splitLineToFitWidth(line, checkFit) {\n if (line.some(({ content }) => content.includes(\"\\n\"))) {\n throw new Error(\"splitLineToFitWidth does not support newlines in the line\");\n }\n return splitLineToFitWidthRecursion(line, checkFit);\n}\nfunction splitLineToFitWidthRecursion(words, checkFit, lines = [], newLine = []) {\n if (words.length === 0) {\n if (newLine.length > 0) {\n lines.push(newLine);\n }\n return lines.length > 0 ? lines : [];\n }\n let joiner = \"\";\n if (words[0].content === \" \") {\n joiner = \" \";\n words.shift();\n }\n const nextWord = words.shift() ?? { content: \" \", type: \"normal\" };\n const lineWithNextWord = [...newLine];\n if (joiner !== \"\") {\n lineWithNextWord.push({ content: joiner, type: \"normal\" });\n }\n lineWithNextWord.push(nextWord);\n if (checkFit(lineWithNextWord)) {\n return splitLineToFitWidthRecursion(words, checkFit, lines, lineWithNextWord);\n }\n if (newLine.length > 0) {\n lines.push(newLine);\n words.unshift(nextWord);\n } else if (nextWord.content) {\n const [line, rest] = splitWordToFitWidth(checkFit, nextWord);\n lines.push([line]);\n if (rest.content) {\n words.unshift(rest);\n }\n }\n return splitLineToFitWidthRecursion(words, checkFit, lines);\n}\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\nfunction addHtmlSpan(element, node, width, classes, addBackground = false) {\n const fo = element.append(\"foreignObject\");\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n div.html(\n `\n \" + label + \"\"\n );\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"table-cell\");\n div.style(\"white-space\", \"nowrap\");\n div.style(\"max-width\", width + \"px\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n if (addBackground) {\n div.attr(\"class\", \"labelBkg\");\n }\n let bbox = div.node().getBoundingClientRect();\n if (bbox.width === width) {\n div.style(\"display\", \"table\");\n div.style(\"white-space\", \"break-spaces\");\n div.style(\"width\", width + \"px\");\n bbox = div.node().getBoundingClientRect();\n }\n fo.style(\"width\", bbox.width);\n fo.style(\"height\", bbox.height);\n return fo.node();\n}\nfunction createTspan(textElement, lineIndex, lineHeight) {\n return textElement.append(\"tspan\").attr(\"class\", \"text-outer-tspan\").attr(\"x\", 0).attr(\"y\", lineIndex * lineHeight - 0.1 + \"em\").attr(\"dy\", lineHeight + \"em\");\n}\nfunction computeWidthOfText(parentNode, lineHeight, line) {\n const testElement = parentNode.append(\"text\");\n const testSpan = createTspan(testElement, 1, lineHeight);\n updateTextContentAndStyles(testSpan, line);\n const textLength = testSpan.node().getComputedTextLength();\n testElement.remove();\n return textLength;\n}\nfunction createFormattedText(width, g, structuredText, addBackground = false) {\n const lineHeight = 1.1;\n const labelGroup = g.append(\"g\");\n const bkg = labelGroup.insert(\"rect\").attr(\"class\", \"background\");\n const textElement = labelGroup.append(\"text\").attr(\"y\", \"-10.1\");\n let lineIndex = 0;\n for (const line of structuredText) {\n const checkWidth = (line2) => computeWidthOfText(labelGroup, lineHeight, line2) <= width;\n const linesUnderWidth = checkWidth(line) ? [line] : splitLineToFitWidth(line, checkWidth);\n for (const preparedLine of linesUnderWidth) {\n const tspan = createTspan(textElement, lineIndex, lineHeight);\n updateTextContentAndStyles(tspan, preparedLine);\n lineIndex++;\n }\n }\n if (addBackground) {\n const bbox = textElement.node().getBBox();\n const padding = 2;\n bkg.attr(\"x\", -padding).attr(\"y\", -padding).attr(\"width\", bbox.width + 2 * padding).attr(\"height\", bbox.height + 2 * padding);\n return labelGroup.node();\n } else {\n return textElement.node();\n }\n}\nfunction updateTextContentAndStyles(tspan, wrappedLine) {\n tspan.text(\"\");\n wrappedLine.forEach((word, index) => {\n const innerTspan = tspan.append(\"tspan\").attr(\"font-style\", word.type === \"emphasis\" ? \"italic\" : \"normal\").attr(\"class\", \"text-inner-tspan\").attr(\"font-weight\", word.type === \"strong\" ? \"bold\" : \"normal\");\n if (index === 0) {\n innerTspan.text(word.content);\n } else {\n innerTspan.text(\" \" + word.content);\n }\n });\n}\nconst createText = (el, text = \"\", {\n style = \"\",\n isTitle = false,\n classes = \"\",\n useHtmlLabels = true,\n isNode = true,\n width = 200,\n addSvgBackground = false\n} = {}) => {\n log.info(\"createText\", text, style, isTitle, classes, useHtmlLabels, isNode, addSvgBackground);\n if (useHtmlLabels) {\n const htmlText = markdownToHTML(text);\n const node = {\n isNode,\n label: decodeEntities(htmlText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n ),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n const vertexNode = addHtmlSpan(el, node, width, classes, addSvgBackground);\n return vertexNode;\n } else {\n const structuredText = markdownToLines(text);\n const svgLabel = createFormattedText(width, el, structuredText, addSvgBackground);\n return svgLabel;\n }\n};\nexport {\n createText as c\n};\n"],"names":["emptyOptions","toString","value","options","settings","includeImageAlt","includeHtml","one","node","all","values","result","index","splice","list","start","remove","items","end","chunkStart","parameters","push","hasOwnProperty","combineExtensions","extensions","syntaxExtension","extension","hook","left","right","code","constructs","existing","before","unicodePunctuationRegex","asciiAlpha","regexCheck","asciiDigit","asciiHexDigit","asciiAlphanumeric","asciiPunctuation","asciiAtext","asciiControl","markdownLineEndingOrSpace","markdownLineEnding","markdownSpace","unicodeWhitespace","unicodePunctuation","regex","check","factorySpace","effects","ok","type","max","limit","size","prefix","content","initializeContent","contentStart","afterContentStartConstruct","paragraphInitial","previous","lineStart","token","data","document","initializeDocument","containerConstruct","tokenizeContainer","self","stack","continued","childFlow","childToken","lineStartOffset","item","documentContinue","checkNewContainers","closeFlow","indexBeforeExits","indexBeforeFlow","point","exitContainers","documentContinued","flowStart","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flowContinue","writeToChild","eof","stream","seen","entry","nok","classifyCharacter","resolveAll","events","context","called","resolve","attention","tokenizeAttention","resolveAllAttention","open","group","text","openingSequence","closingSequence","use","nextEvents","offset","movePoint","attentionMarkers","marker","sequence","after","close","autolink","tokenizeAutolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","blankLine","tokenizeBlankLine","afterWhitespace","blockQuote","tokenizeBlockQuoteStart","tokenizeBlockQuoteContinuation","exit","state","characterEscape","tokenizeCharacterEscape","element","decodeNamedCharacterReference","characterReference","char","tokenizeCharacterReference","test","numeric","codeFenced","tokenizeCodeFenced","closingFenceConstruct","tokenizeClosingFence","nonLazyLine","tokenizeNonLazyLine","tail","initialPrefix","sizeOpen","sequenceOpen","infoOpen","openAfter","info","infoAfter","meta","contentContinue","closingSequenceStart","closingSequenceEnd","codeIndented","tokenizeCodeIndented","indentedContent","tokenizeIndentedContent","afterStartPrefix","afterPrefix","codeText","tokenizeCodeText","resolveCodeText","tailExitIndex","headEnterIndex","enter","gap","subtokenize","jumps","event","lineIndex","otherIndex","otherEvent","subevents","more","subcontent","eventIndex","startPosition","startPositions","tokenizer","childEvents","gaps","current","adjust","breaks","slice","tokenizeContent","resolveContent","continuationConstruct","tokenizeContinuation","contentEnd","startLookahead","prefixed","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","destinationEnclosedBefore","destinationRaw","destinationEnclosed","destinationEnclosedEscape","destinationRawEscape","factoryLabel","markerType","atBreak","label","labelEscape","factoryTitle","atFirstTitleBreak","atTitleBreak","title","titleEscape","factoryWhitespace","normalizeIdentifier","definition","tokenizeDefinition","titleConstruct","tokenizeTitle","identifier","labelAfter","hardBreakEscape","tokenizeHardBreakEscape","headingAtx","tokenizeHeadingAtx","resolveHeadingAtx","fenceOpenInside","headingBreak","htmlBlockNames","htmlRawNames","htmlFlow","tokenizeHtmlFlow","resolveToHtmlFlow","nextBlankConstruct","tokenizeNextBlank","kind","startTag","buffer","declarationStart","tagCloseStart","continuationDeclarationInside","tagName","commentOpenInside","cdataOpenInside","continuation","basicSelfClosing","completeAttributeNameBefore","completeClosingTagAfter","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCharacterDataInside","continuationAtLineEnding","htmlContinueStart","done","htmlLineEnd","continuationRawEndTag","htmlText","tokenizeHtmlText","returnState","declarationOpen","instruction","tagOpen","commentOpen","cdataOpen","declaration","commentStart","commentStartDash","comment","commentClose","atLineEnding","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","labelEnd","tokenizeLabelEnd","resolveToLabelEnd","resolveAllLabelEnd","resourceConstruct","tokenizeResource","fullReferenceConstruct","tokenizeFullReference","collapsedReferenceConstruct","tokenizeCollapsedReference","media","labelStart","defined","balanced","afterLabelEnd","destinationAfter","between","afterLabel","labelStartImage","tokenizeLabelStartImage","labelStartLink","tokenizeLabelStartLink","lineEnding","tokenizeLineEnding","thematicBreak","tokenizeThematicBreak","tokenizeListStart","tokenizeListContinuation","tokenizeListEnd","listItemPrefixWhitespaceConstruct","tokenizeListItemPrefixWhitespace","indentConstruct","tokenizeIndent","initialSize","atMarker","inside","onBlank","endOfPrefix","otherPrefix","notBlank","notInCurrentItem","setextUnderline","tokenizeSetextUnderline","resolveToSetextUnderline","heading","paragraph","flow","initializeFlow","initial","atBlankEnding","afterConstruct","resolver","createResolver","string","initializeFactory","field","initializeText","resolveAllLineSuffixes","notText","extraResolver","resolveAllText","chunks","bufferIndex","tabs","chunk","createTokenizer","parser","initialize","from","columnStart","resolveAllConstructs","consume","constructFactory","onsuccessfulconstruct","onsuccessfulcheck","sliceStream","sliceSerialize","now","defineSkip","write","main","addResult","expandTabs","serializeChunks","sliceChunks","accountForPotentialSkip","chunkIndex","go","fields","construct","_","onreturn","bogusState","listOfConstructs","constructIndex","currentConstruct","handleListOfConstructs","handleMapOfConstructs","map","def","handleConstruct","store","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","restore","startIndex","startBufferIndex","endIndex","endBufferIndex","view","atTab","contentInitial","flowInitial","insideSpan","resolveText","disable","parse","defaultConstructs","create","creator","search","preprocess","column","atCarriageReturn","preprocessor","encoding","match","next","endPosition","postprocess","decodeNumericCharacterReference","base","characterEscapeOrReference","decodeString","decode","$0","$1","$2","head","hex","stringifyPosition","position","pos","own","fromMarkdown","compiler","config","opener","link","onenterdata","codeFlow","emphasis","hardBreak","html","image","listItem","onenterlistitemvalue","onenterlistordered","onenterreference","strong","closer","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","onexitdata","onexitcharacterreferencemarker","onexitcharacterreferencevalue","onexitcodefenced","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","onexitsetextheadinglinesequence","onexitsetextheadingtext","configure","compile","tree","resume","setData","getData","listStack","prepareList","handler","defaultOnError","length","containerBalance","listSpread","firstBlankLineIndex","tailIndex","tailEvent","key","and","errorHandler","onExitError","ancestor","depth","referenceType","fragment","children","d","combined","preprocessMarkdown","markdown","withoutMultipleNewlines","dedent","markdownToLines","preprocessedMarkdown","lines","currentLine","processNode","parentType","textLine","word","contentNode","treeNode","markdownToHTML","output","splitTextToChars","s","splitWordToFitWidth","checkFit","characters","splitWordToFitWidthRecursion","usedChars","remainingChars","nextChar","rest","newWord","splitLineToFitWidth","line","splitLineToFitWidthRecursion","words","newLine","joiner","nextWord","lineWithNextWord","applyStyle","dom","styleFn","addHtmlSpan","width","classes","addBackground","fo","div","labelClass","bbox","createTspan","textElement","lineHeight","computeWidthOfText","parentNode","testElement","testSpan","updateTextContentAndStyles","textLength","createFormattedText","g","structuredText","labelGroup","bkg","checkWidth","line2","linesUnderWidth","preparedLine","tspan","padding","wrappedLine","innerTspan","createText","el","style","isTitle","useHtmlLabels","isNode","addSvgBackground","log","decodeEntities"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51]}
\ No newline at end of file
+{"version":3,"file":"createText-285e50b4-d331e256.js","sources":["../../node_modules/mdast-util-to-string/lib/index.js","../../node_modules/micromark-util-chunked/index.js","../../node_modules/micromark-util-combine-extensions/index.js","../../node_modules/micromark-util-character/lib/unicode-punctuation-regex.js","../../node_modules/micromark-util-character/index.js","../../node_modules/micromark-factory-space/index.js","../../node_modules/micromark/lib/initialize/content.js","../../node_modules/micromark/lib/initialize/document.js","../../node_modules/micromark-util-classify-character/index.js","../../node_modules/micromark-util-resolve-all/index.js","../../node_modules/micromark-core-commonmark/lib/attention.js","../../node_modules/micromark-core-commonmark/lib/autolink.js","../../node_modules/micromark-core-commonmark/lib/blank-line.js","../../node_modules/micromark-core-commonmark/lib/block-quote.js","../../node_modules/micromark-core-commonmark/lib/character-escape.js","../../node_modules/decode-named-character-reference/index.dom.js","../../node_modules/micromark-core-commonmark/lib/character-reference.js","../../node_modules/micromark-core-commonmark/lib/code-fenced.js","../../node_modules/micromark-core-commonmark/lib/code-indented.js","../../node_modules/micromark-core-commonmark/lib/code-text.js","../../node_modules/micromark-util-subtokenize/index.js","../../node_modules/micromark-core-commonmark/lib/content.js","../../node_modules/micromark-factory-destination/index.js","../../node_modules/micromark-factory-label/index.js","../../node_modules/micromark-factory-title/index.js","../../node_modules/micromark-factory-whitespace/index.js","../../node_modules/micromark-util-normalize-identifier/index.js","../../node_modules/micromark-core-commonmark/lib/definition.js","../../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../../node_modules/micromark-core-commonmark/lib/heading-atx.js","../../node_modules/micromark-util-html-tag-name/index.js","../../node_modules/micromark-core-commonmark/lib/html-flow.js","../../node_modules/micromark-core-commonmark/lib/html-text.js","../../node_modules/micromark-core-commonmark/lib/label-end.js","../../node_modules/micromark-core-commonmark/lib/label-start-image.js","../../node_modules/micromark-core-commonmark/lib/label-start-link.js","../../node_modules/micromark-core-commonmark/lib/line-ending.js","../../node_modules/micromark-core-commonmark/lib/thematic-break.js","../../node_modules/micromark-core-commonmark/lib/list.js","../../node_modules/micromark-core-commonmark/lib/setext-underline.js","../../node_modules/micromark/lib/initialize/flow.js","../../node_modules/micromark/lib/initialize/text.js","../../node_modules/micromark/lib/create-tokenizer.js","../../node_modules/micromark/lib/constructs.js","../../node_modules/micromark/lib/parse.js","../../node_modules/micromark/lib/preprocess.js","../../node_modules/micromark/lib/postprocess.js","../../node_modules/micromark-util-decode-numeric-character-reference/index.js","../../node_modules/micromark-util-decode-string/index.js","../../node_modules/unist-util-stringify-position/lib/index.js","../../node_modules/mdast-util-from-markdown/lib/index.js","../../node_modules/mermaid/dist/createText-285e50b4.js"],"sourcesContent":["/**\n * @typedef {import('mdast').Root|import('mdast').Content} Node\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s.\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML.\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} value\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nexport function toString(value, options) {\n const settings = options || emptyOptions\n const includeImageAlt =\n typeof settings.includeImageAlt === 'boolean'\n ? settings.includeImageAlt\n : true\n const includeHtml =\n typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value\n }\n\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt\n }\n\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml)\n }\n }\n\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml)\n }\n\n return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array} values\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml)\n }\n\n return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n * Thing.\n * @returns {value is Node}\n * Whether `value` is a node.\n */\nfunction node(value) {\n return Boolean(value && typeof value === 'object')\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * @param {T[]} list\n * @param {number} start\n * @param {number} remove\n * @param {T[]} items\n * @returns {void}\n */\nexport function splice(list, start, remove, items) {\n const end = list.length\n let chunkStart = 0\n /** @type {unknown[]} */\n\n let parameters // Make start between zero and `end` (included).\n\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n\n remove = remove > 0 ? remove : 0 // No need to chunk the items if there’s only a couple (10k) items.\n\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove) // @ts-expect-error Hush, it’s fine.\n ;[].splice.apply(list, parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) [].splice.apply(list, [start, remove]) // Insert the items in chunks to not cause stack overflows.\n\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000)\n parameters.unshift(start, 0) // @ts-expect-error Hush, it’s fine.\n ;[].splice.apply(list, parameters)\n chunkStart += 10000\n start += 10000\n }\n }\n}\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * @param {T[]} list\n * @param {T[]} items\n * @returns {T[]}\n */\n\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items)\n return list\n }\n\n return items\n}\n","/**\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine several syntax extensions into one.\n *\n * @param {Extension[]} extensions List of syntax extensions.\n * @returns {NormalizedExtension} A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all Extension to merge into.\n * @param {Extension} extension Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n /** @type {string} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {string} */\n let code\n\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {unknown[]} existing\n * @param {unknown[]} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {unknown[]} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n splice(existing, 0, 0, before)\n}\n\n/**\n * Combine several HTML extensions into one.\n *\n * @param {HtmlExtension[]} htmlExtensions List of HTML extensions.\n * @returns {HtmlExtension} A single combined extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all Extension to merge into.\n * @param {HtmlExtension} extension Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n /** @type {string} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {string} */\n let type\n\n if (right) {\n for (type in right) {\n left[type] = right[type]\n }\n }\n }\n}\n","// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\nexport const unicodePunctuationRegex =\n /[!-/:-@[-`{-~\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js'\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n */\n\nexport const asciiAlpha = regexCheck(/[A-Za-z]/)\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n */\n\nexport const asciiDigit = regexCheck(/\\d/)\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n */\n\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n */\n\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n */\n\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n */\n\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n )\n}\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32)\n}\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownLineEnding(code) {\n return code !== null && code < -2\n}\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n */\n\nexport const unicodeWhitespace = regexCheck(/\\s/)\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n */\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n\nexport const unicodePunctuation = regexCheck(unicodePunctuationRegex)\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => code is number}\n */\n\nfunction regexCheck(regex) {\n return check\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code Character code\n * @returns {code is number} Whether the character code matches the bound regex\n */\n\n function check(code) {\n return code !== null && regex.test(String.fromCharCode(code))\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownSpace} from 'micromark-util-character'\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {string} type\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type)\n return prefix(code)\n }\n\n return ok(code)\n }\n /** @type {State} */\n\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n\n effects.exit(type)\n return ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n}\n/** @type {Initializer} */\n\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n /** @type {Token} */\n\n let previous\n return contentStart\n /** @type {State} */\n\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n /** @type {State} */\n\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n /** @type {State} */\n\n function lineStart(code) {\n const token = effects.enter('chunkText', {\n contentType: 'text',\n previous\n })\n\n if (previous) {\n previous.next = token\n }\n\n previous = token\n return data(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n } // Data.\n\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Point} Point\n */\n\n/**\n * @typedef {Record} StackState\n * @typedef {[Construct, StackState]} StackItem\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {InitialConstruct} */\n\nexport const document = {\n tokenize: initializeDocument\n}\n/** @type {Construct} */\n\nconst containerConstruct = {\n tokenize: tokenizeContainer\n}\n/** @type {Initializer} */\n\nfunction initializeDocument(effects) {\n const self = this\n /** @type {Array} */\n\n const stack = []\n let continued = 0\n /** @type {TokenizeContext|undefined} */\n\n let childFlow\n /** @type {Token|undefined} */\n\n let childToken\n /** @type {number} */\n\n let lineStartOffset\n return start\n /** @type {State} */\n\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued]\n self.containerState = item[1]\n return effects.attempt(\n item[0].continuation,\n documentContinue,\n checkNewContainers\n )(code)\n } // Done.\n\n return checkNewContainers(code)\n }\n /** @type {State} */\n\n function documentContinue(code) {\n continued++ // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined\n\n if (childFlow) {\n closeFlow()\n } // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {Point|undefined} */\n\n let point // Find the flow chunk.\n\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n }\n\n exitContainers(continued) // Fix positions.\n\n let index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n } // Inject the exits earlier (they’re still also at the end).\n\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n ) // Discard the duplicate exits.\n\n self.events.length = index\n return checkNewContainers(code)\n }\n\n return start(code)\n }\n /** @type {State} */\n\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code)\n } // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce” into them, so we can immediately\n // start.\n\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code)\n } // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n\n self.interrupt = Boolean(\n childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n )\n } // Check if there is a new container.\n\n self.containerState = {}\n return effects.check(\n containerConstruct,\n thereIsANewContainer,\n thereIsNoNewContainer\n )(code)\n }\n /** @type {State} */\n\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow()\n exitContainers(continued)\n return documentContinued(code)\n }\n /** @type {State} */\n\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length\n lineStartOffset = self.now().offset\n return flowStart(code)\n }\n /** @type {State} */\n\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n /** @type {State} */\n\n function containerContinue(code) {\n continued++\n stack.push([self.currentConstruct, self.containerState]) // Try another.\n\n return documentContinued(code)\n }\n /** @type {State} */\n\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow()\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n })\n return flowContinue(code)\n }\n /** @type {State} */\n\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit('chunkFlow'), true)\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n writeToChild(effects.exit('chunkFlow')) // Get ready for the next line.\n\n continued = 0\n self.interrupt = undefined\n return start\n }\n\n effects.consume(code)\n return flowContinue\n }\n /**\n * @param {Token} token\n * @param {boolean} [eof]\n * @returns {void}\n */\n\n function writeToChild(token, eof) {\n const stream = self.sliceStream(token)\n if (eof) stream.push(null)\n token.previous = childToken\n if (childToken) childToken.next = token\n childToken = token\n childFlow.defineSkip(token.start)\n childFlow.write(stream) // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake” it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes” the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length\n\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset && // …and either is not ended yet…\n (!childFlow.events[index][1].end || // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)\n ) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return\n }\n } // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {boolean|undefined} */\n\n let seen\n /** @type {Point|undefined} */\n\n let point // Find the previous chunk (the one before the lazy line).\n\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n\n seen = true\n }\n }\n\n exitContainers(continued) // Fix positions.\n\n index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n } // Inject the exits earlier (they’re still also at the end).\n\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n ) // Discard the duplicate exits.\n\n self.events.length = index\n }\n }\n /**\n * @param {number} size\n * @returns {void}\n */\n\n function exitContainers(size) {\n let index = stack.length // Exit open containers.\n\n while (index-- > size) {\n const entry = stack[index]\n self.containerState = entry[1]\n entry[0].exit.call(self, effects)\n }\n\n stack.length = size\n }\n\n function closeFlow() {\n childFlow.write([null])\n childToken = undefined\n childFlow = undefined\n self.containerState._closeFlow = undefined\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContainer(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n\n/**\n * Classify whether a character code represents whitespace, punctuation, or\n * something else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * Note that eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * @returns {number|undefined}\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {{resolveAll?: Resolver}[]} constructs\n * @param {Event[]} events\n * @param {TokenizeContext} context\n * @returns {Event[]}\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Resolver[]} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Point} Point\n */\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n\n let open\n /** @type {Token} */\n\n let group\n /** @type {Token} */\n\n let text\n /** @type {Token} */\n\n let openingSequence\n /** @type {Token} */\n\n let closingSequence\n /** @type {number} */\n\n let use\n /** @type {Event[]} */\n\n let nextEvents\n /** @type {number} */\n\n let offset // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’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 const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = [] // If there are more markers in the opening, add them before.\n\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n } // Opening.\n\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ]) // Between.\n\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n ) // Closing.\n\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ]) // If there are more markers in the closing, add them after.\n\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n } // Remove remaining sequences.\n\n index = -1\n\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n /** @type {NonNullable} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('attentionSequence')\n marker = code\n return sequence(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n return sequence\n }\n\n const token = effects.exit('attentionSequence')\n const after = classifyCharacter(code)\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\n\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 1\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n\n return asciiAtext(code) ? emailAtext(code) : nok(code)\n }\n /** @type {State} */\n\n function schemeOrEmailAtext(code) {\n return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n ? schemeInsideOrEmailAtext(code)\n : emailAtext(code)\n }\n /** @type {State} */\n\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n return urlInside\n }\n\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n\n return emailAtext(code)\n }\n /** @type {State} */\n\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n return end(code)\n }\n\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return urlInside\n }\n /** @type {State} */\n\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n /** @type {State} */\n\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (code === 62) {\n // Exit, then change the type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n return end(code)\n }\n\n return emailValue(code)\n }\n /** @type {State} */\n\n function emailValue(code) {\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n effects.consume(code)\n return code === 45 ? emailValue : emailLabel\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function end(code) {\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlankLine(effects, ok, nok) {\n return factorySpace(effects, afterWhitespace, 'linePrefix')\n /** @type {State} */\n\n function afterWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n if (code === 62) {\n const state = self.containerState\n\n if (!state.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n state.open = true\n }\n\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace')\n effects.consume(code)\n effects.exit('blockQuotePrefixWhitespace')\n effects.exit('blockQuotePrefix')\n return ok\n }\n\n effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(blockQuote, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n/** @type {Exiter} */\n\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {asciiPunctuation} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n\n return nok(code)\n }\n}\n","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n\n let max\n /** @type {(code: Code) => code is number} */\n\n let test\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n /** @type {State} */\n\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n /** @type {State} */\n\n function value(code) {\n /** @type {Token} */\n let token\n\n if (code === 59 && size) {\n token = effects.exit('characterReferenceValue')\n\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n\n const closingFenceConstruct = {\n tokenize: tokenizeClosingFence,\n partial: true\n }\n /** @type {Construct} */\n\n const nonLazyLine = {\n tokenize: tokenizeNonLazyLine,\n partial: true\n }\n const tail = this.events[this.events.length - 1]\n const initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n marker = code\n return sequenceOpen(code)\n }\n /** @type {State} */\n\n function sequenceOpen(code) {\n if (code === marker) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n\n effects.exit('codeFencedFenceSequence')\n return sizeOpen < 3\n ? nok(code)\n : factorySpace(effects, infoOpen, 'whitespace')(code)\n }\n /** @type {State} */\n\n function infoOpen(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n /** @type {State} */\n\n function info(code) {\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, infoAfter, 'whitespace')(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return info\n }\n /** @type {State} */\n\n function infoAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n /** @type {State} */\n\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return openAfter(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return meta\n }\n /** @type {State} */\n\n function openAfter(code) {\n effects.exit('codeFencedFence')\n return self.interrupt ? ok(code) : contentStart(code)\n }\n /** @type {State} */\n\n function contentStart(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(\n nonLazyLine,\n effects.attempt(\n closingFenceConstruct,\n after,\n initialPrefix\n ? factorySpace(\n effects,\n contentStart,\n 'linePrefix',\n initialPrefix + 1\n )\n : contentStart\n ),\n after\n )(code)\n }\n\n effects.enter('codeFlowValue')\n return contentContinue(code)\n }\n /** @type {State} */\n\n function contentContinue(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return contentStart(code)\n }\n\n effects.consume(code)\n return contentContinue\n }\n /** @type {State} */\n\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n /** @type {Tokenizer} */\n\n function tokenizeNonLazyLine(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n /** @type {State} */\n\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n }\n /** @type {Tokenizer} */\n\n function tokenizeClosingFence(effects, ok, nok) {\n let size = 0\n return factorySpace(\n effects,\n closingSequenceStart,\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n /** @type {State} */\n\n function closingSequenceStart(code) {\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return closingSequence(code)\n }\n /** @type {State} */\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return closingSequence\n }\n\n if (size < sizeOpen) return nok(code)\n effects.exit('codeFencedFenceSequence')\n return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n }\n /** @type {State} */\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n\n return nok(code)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n}\n/** @type {Construct} */\n\nconst indentedContent = {\n tokenize: tokenizeIndentedContent,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeIndented')\n return factorySpace(effects, afterStartPrefix, 'linePrefix', 4 + 1)(code)\n }\n /** @type {State} */\n\n function afterStartPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? afterPrefix(code)\n : nok(code)\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(indentedContent, afterPrefix, after)(code)\n }\n\n effects.enter('codeFlowValue')\n return content(code)\n }\n /** @type {State} */\n\n function content(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return afterPrefix(code)\n }\n\n effects.consume(code)\n return content\n }\n /** @type {State} */\n\n function after(code) {\n effects.exit('codeIndented')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n // If this is a lazy line, it can’t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? ok(code)\n : markdownLineEnding(code)\n ? start(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n/** @type {Resolver} */\n\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n\n let index\n /** @type {number|undefined} */\n\n let enter // If we start and end with an EOL or a space.\n\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex // And we have data.\n\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n } // Merge adjacent spaces and data.\n\n index = headEnterIndex - 1\n tailExitIndex++\n\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return events\n}\n/** @type {Previous} */\n\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n\n let size\n /** @type {Token} */\n\n let token\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return openingSequence(code)\n }\n /** @type {State} */\n\n function openingSequence(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return openingSequence\n }\n\n effects.exit('codeTextSequence')\n return gap(code)\n }\n /** @type {State} */\n\n function gap(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n } // Closing fence?\n // Could also be data.\n\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return closingSequence(code)\n } // Tabs don’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 /** @type {State} */\n\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return gap(code)\n }\n\n effects.consume(code)\n return data\n } // Closing fence.\n\n /** @type {State} */\n\n function closingSequence(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return closingSequence\n } // Done!\n\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n } // More or less accents: mark as data.\n\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {splice} from 'micromark-util-chunked'\n\n/**\n * Tokenize subcontent.\n *\n * @param {Event[]} events\n * @returns {boolean}\n */\nexport function subtokenize(events) {\n /** @type {Record} */\n const jumps = {}\n let index = -1\n /** @type {Event} */\n\n let event\n /** @type {number|undefined} */\n\n let lineIndex\n /** @type {number} */\n\n let otherIndex\n /** @type {Event} */\n\n let otherEvent\n /** @type {Event[]} */\n\n let parameters\n /** @type {Event[]} */\n\n let subevents\n /** @type {boolean|undefined} */\n\n let more\n\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n\n event = events[index] // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n\n if (\n index &&\n event[1].type === 'chunkFlow' &&\n events[index - 1][1].type === 'listItemPrefix'\n ) {\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'lineEndingBlank'\n ) {\n otherIndex += 2\n }\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'content'\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break\n }\n\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n } // Enter.\n\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n } // Exit.\n else if (event[1]._container) {\n otherIndex = index\n lineIndex = undefined\n\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n\n if (\n otherEvent[1].type === 'lineEnding' ||\n otherEvent[1].type === 'lineEndingBlank'\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n }\n\n otherEvent[1].type = 'lineEnding'\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n\n if (lineIndex) {\n // Fix position.\n event[1].end = Object.assign({}, events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n splice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n\n return !more\n}\n/**\n * Tokenize embedded tokens.\n *\n * @param {Event[]} events\n * @param {number} eventIndex\n * @returns {Record}\n */\n\nfunction subcontent(events, eventIndex) {\n const token = events[eventIndex][1]\n const context = events[eventIndex][2]\n let startPosition = eventIndex - 1\n /** @type {number[]} */\n\n const startPositions = []\n const tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n const childEvents = tokenizer.events\n /** @type {[number, number][]} */\n\n const jumps = []\n /** @type {Record} */\n\n const gaps = {}\n /** @type {Chunk[]} */\n\n let stream\n /** @type {Token|undefined} */\n\n let previous\n let index = -1\n /** @type {Token|undefined} */\n\n let current = token\n let adjust = 0\n let start = 0\n const breaks = [start] // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n\n while (current) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== current) {\n // Empty.\n }\n\n startPositions.push(startPosition)\n\n if (!current._tokenizer) {\n stream = context.sliceStream(current)\n\n if (!current.next) {\n stream.push(null)\n }\n\n if (previous) {\n tokenizer.defineSkip(current.start)\n }\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n\n tokenizer.write(stream)\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n } // Unravel the next token.\n\n previous = current\n current = current.next\n } // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n\n current = token\n\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' &&\n childEvents[index - 1][0] === 'enter' &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n start = index + 1\n breaks.push(start) // Help GC.\n\n current._tokenizer = undefined\n current.previous = undefined\n current = current.next\n }\n } // Help GC.\n\n tokenizer.events = [] // If there’s one more token (which is the cases for lines that end in an\n // EOF), that’s perfect: the last point we found starts it.\n // If there isn’t then make sure any remaining content is added to it.\n\n if (current) {\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n } else {\n breaks.pop()\n } // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren’t affected.\n\n index = breaks.length\n\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1])\n const start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n splice(events, start, 2, slice)\n }\n\n index = -1\n\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n adjust += jumps[index][1] - jumps[index][0] - 1\n }\n\n return gaps\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n tokenize: tokenizeContent,\n resolve: resolveContent\n}\n/** @type {Construct} */\n\nconst continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n}\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\n\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContent(effects, ok) {\n /** @type {Token} */\n let previous\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return data(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null) {\n return contentEnd(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.check(\n continuationConstruct,\n contentContinue,\n contentEnd\n )(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n /** @type {State} */\n\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\n }\n /** @type {State} */\n\n function contentContinue(code) {\n effects.consume(code)\n effects.exit('chunkContent')\n previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous\n })\n previous = previous.next\n return data\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this\n return startLookahead\n /** @type {State} */\n\n function startLookahead(code) {\n effects.exit('chunkContent')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n /** @type {State} */\n\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n const tail = self.events[self.events.length - 1]\n\n if (\n !self.parser.constructs.disable.null.includes('codeIndented') &&\n tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ) {\n return ok(code)\n }\n\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n asciiControl,\n markdownLineEndingOrSpace,\n markdownLineEnding\n} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} literalType\n * @param {string} literalMarkerType\n * @param {string} rawType\n * @param {string} stringType\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryDestination(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n const limit = max || Number.POSITIVE_INFINITY\n let balance = 0\n return start\n /** @type {State} */\n\n function start(code) {\n if (code === 60) {\n effects.enter(type)\n effects.enter(literalType)\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n return destinationEnclosedBefore\n }\n\n if (code === null || code === 41 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationRaw(code)\n }\n /** @type {State} */\n\n function destinationEnclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n effects.exit(literalType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationEnclosed(code)\n }\n /** @type {State} */\n\n function destinationEnclosed(code) {\n if (code === 62) {\n effects.exit('chunkString')\n effects.exit(stringType)\n return destinationEnclosedBefore(code)\n }\n\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return code === 92 ? destinationEnclosedEscape : destinationEnclosed\n }\n /** @type {State} */\n\n function destinationEnclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code)\n return destinationEnclosed\n }\n\n return destinationEnclosed(code)\n }\n /** @type {State} */\n\n function destinationRaw(code) {\n if (code === 40) {\n if (++balance > limit) return nok(code)\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === 41) {\n if (!balance--) {\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n if (balance) return nok(code)\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n if (asciiControl(code)) return nok(code)\n effects.consume(code)\n return code === 92 ? destinationRawEscape : destinationRaw\n }\n /** @type {State} */\n\n function destinationRawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code)\n return destinationRaw\n }\n\n return destinationRaw(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @this {TokenizeContext}\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this\n let size = 0\n /** @type {boolean} */\n\n let data\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.enter(stringType)\n return atBreak\n }\n /** @type {State} */\n\n function atBreak(code) {\n if (\n code === null ||\n code === 91 ||\n (code === 93 && !data) ||\n /* To do: remove in the future once we’ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn’t need this */\n\n /* Hidden footnotes hook */\n\n /* c8 ignore next 3 */\n (code === 94 &&\n !size &&\n '_hiddenFootnoteSupport' in self.parser.constructs) ||\n size > 999\n ) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return atBreak\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return label(code)\n }\n /** @type {State} */\n\n function label(code) {\n if (\n code === null ||\n code === 91 ||\n code === 93 ||\n markdownLineEnding(code) ||\n size++ > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n\n effects.consume(code)\n data = data || !markdownSpace(code)\n return code === 92 ? labelEscape : label\n }\n /** @type {State} */\n\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return label\n }\n\n return label(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable} */\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === 40 ? 41 : code\n return atFirstTitleBreak\n }\n /** @type {State} */\n\n function atFirstTitleBreak(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n return atTitleBreak(code)\n }\n /** @type {State} */\n\n function atTitleBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return atFirstTitleBreak(marker)\n }\n\n if (code === null) {\n return nok(code)\n } // Note: blank lines can’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 /** @type {State} */\n\n function title(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atTitleBreak(code)\n }\n\n effects.consume(code)\n return code === 92 ? titleEscape : title\n }\n /** @type {State} */\n\n function titleEscape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return title\n }\n\n return title(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen\n return start\n /** @type {State} */\n\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n seen = true\n return start\n }\n\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n\n return ok(code)\n }\n}\n","/**\n * Normalize an identifier (such as used in definitions).\n *\n * @param {string} value\n * @returns {string}\n */\nexport function normalizeIdentifier(value) {\n return (\n value // Collapse Markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n .replace(/^ | $/g, '') // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factorySpace} from 'micromark-factory-space'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\n/** @type {Construct} */\n\nconst titleConstruct = {\n tokenize: tokenizeTitle,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this\n /** @type {string} */\n\n let identifier\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('definition')\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n /** @type {State} */\n\n function labelAfter(code) {\n identifier = normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker') // Note: blank lines can’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 /** @type {State} */\n\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n if (!self.parser.defined.includes(identifier)) {\n self.parser.defined.push(identifier)\n }\n\n return ok(code)\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeTitle(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, before)(code)\n : nok(code)\n }\n /** @type {State} */\n\n function before(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factorySpace(effects, after, 'whitespace'),\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (markdownLineEnding(code)) {\n effects.exit('escapeMarker')\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n/** @type {Resolver} */\n\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2\n let contentStart = 3\n /** @type {Token} */\n\n let content\n /** @type {Token} */\n\n let text // Prefix whitespace, part of the opening.\n\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n } // Suffix whitespace, part of the closing.\n\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\n }\n\n if (\n events[contentEnd][1].type === 'atxHeadingSequence' &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === 'whitespace'))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\n\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n // @ts-expect-error Constants are fine to assign.\n contentType: 'text'\n }\n splice(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n const self = this\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('atxHeading')\n effects.enter('atxHeadingSequence')\n return fenceOpenInside(code)\n }\n /** @type {State} */\n\n function fenceOpenInside(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return fenceOpenInside\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return self.interrupt ? ok(code) : headingBreak(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function headingBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequence(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n return ok(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, headingBreak, 'whitespace')(code)\n }\n\n effects.enter('atxHeadingText')\n return data(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === 35) {\n effects.consume(code)\n return sequence\n }\n\n effects.exit('atxHeadingSequence')\n return headingBreak(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return headingBreak(code)\n }\n\n effects.consume(code)\n return data\n }\n}\n","/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result\n * in more relaxed rules (condition 6): because they are known blocks, the\n * HTML-like syntax doesn’t have to be strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * .\n */\nexport const htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result in\n * HTML that can include lines w/o exiting, until a closing tag also in this\n * list is found (condition 1).\n *\n * This module is copied from:\n * .\n *\n * Note that `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {htmlBlockNames, htmlRawNames} from 'micromark-util-html-tag-name'\nimport {blankLine} from './blank-line.js'\n/** @type {Construct} */\n\nexport const htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\n/** @type {Construct} */\n\nconst nextBlankConstruct = {\n tokenize: tokenizeNextBlank,\n partial: true\n}\n/** @type {Resolver} */\n\nfunction resolveToHtmlFlow(events) {\n let index = events.length\n\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break\n }\n }\n\n if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start // Add the prefix start to the HTML line token.\n\n events[index + 1][1].start = events[index - 2][1].start // Remove the line prefix.\n\n events.splice(index - 2, 2)\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this\n /** @type {number} */\n\n let kind\n /** @type {boolean} */\n\n let startTag\n /** @type {string} */\n\n let buffer\n /** @type {number} */\n\n let index\n /** @type {Code} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationStart\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n kind = 3 // While we’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 = String.fromCharCode(code)\n startTag = true\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function declarationStart(code) {\n if (code === 45) {\n effects.consume(code)\n kind = 2\n return commentOpenInside\n }\n\n if (code === 91) {\n effects.consume(code)\n kind = 5\n buffer = 'CDATA['\n index = 0\n return cdataOpenInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n kind = 4\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function cdataOpenInside(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length\n ? self.interrupt\n ? ok\n : continuation\n : cdataOpenInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagName(code) {\n if (\n code === null ||\n code === 47 ||\n code === 62 ||\n markdownLineEndingOrSpace(code)\n ) {\n if (\n code !== 47 &&\n startTag &&\n htmlRawNames.includes(buffer.toLowerCase())\n ) {\n kind = 1\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n kind = 6\n\n if (code === 47) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n kind = 7 // Do not support complete HTML when interrupting\n\n return self.interrupt && !self.parser.lazy[self.now().line]\n ? nok(code)\n : startTag\n ? completeAttributeNameBefore(code)\n : completeClosingTagAfter(code)\n }\n\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code)\n return self.interrupt ? ok : continuation\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n\n return completeEnd(code)\n }\n /** @type {State} */\n\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code)\n return completeEnd\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n\n return completeEnd(code)\n }\n /** @type {State} */\n\n function completeAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return completeAttributeName\n }\n\n return completeAttributeNameAfter(code)\n }\n /** @type {State} */\n\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n\n return completeAttributeNameBefore(code)\n }\n /** @type {State} */\n\n function completeAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return completeAttributeValueQuoted\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n marker = null\n return completeAttributeValueUnquoted(code)\n }\n /** @type {State} */\n\n function completeAttributeValueQuoted(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n if (code === marker) {\n effects.consume(code)\n return completeAttributeValueQuotedAfter\n }\n\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n /** @type {State} */\n\n function completeAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n markdownLineEndingOrSpace(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n /** @type {State} */\n\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAfter\n }\n\n return code === null || markdownLineEnding(code)\n ? continuation(code)\n : nok(code)\n }\n /** @type {State} */\n\n function continuation(code) {\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationCommentInside\n }\n\n if (code === 60 && kind === 1) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n\n if (code === 62 && kind === 4) {\n effects.consume(code)\n return continuationClose\n }\n\n if (code === 63 && kind === 3) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n if (code === 93 && kind === 5) {\n effects.consume(code)\n return continuationCharacterDataInside\n }\n\n if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {\n return effects.check(\n nextBlankConstruct,\n continuationClose,\n continuationAtLineEnding\n )(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n return continuationAtLineEnding(code)\n }\n\n effects.consume(code)\n return continuation\n }\n /** @type {State} */\n\n function continuationAtLineEnding(code) {\n effects.exit('htmlFlowData')\n return htmlContinueStart(code)\n }\n /** @type {State} */\n\n function htmlContinueStart(code) {\n if (code === null) {\n return done(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(\n {\n tokenize: htmlLineEnd,\n partial: true\n },\n htmlContinueStart,\n done\n )(code)\n }\n\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n /** @type {Tokenizer} */\n\n function htmlLineEnd(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n /** @type {State} */\n\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n }\n /** @type {State} */\n\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationRawEndTag(code) {\n if (code === 62 && htmlRawNames.includes(buffer.toLowerCase())) {\n effects.consume(code)\n return continuationClose\n }\n\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationCharacterDataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n } // More dashes.\n\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return done(code)\n }\n\n effects.consume(code)\n return continuationClose\n }\n /** @type {State} */\n\n function done(code) {\n effects.exit('htmlFlow')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.exit('htmlFlowData')\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable|undefined} */\n\n let marker\n /** @type {string} */\n\n let buffer\n /** @type {number} */\n\n let index\n /** @type {State} */\n\n let returnState\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpen\n }\n\n if (code === 91) {\n effects.consume(code)\n buffer = 'CDATA['\n index = 0\n return cdataOpen\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentStart\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentStart(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentStartDash\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function commentStartDash(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = comment\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return comment\n }\n /** @type {State} */\n\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return end\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function cdataOpen(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length ? cdata : cdataOpen\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = cdata\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return cdata\n }\n /** @type {State} */\n\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n /** @type {State} */\n\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n /** @type {State} */\n\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = declaration\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return declaration\n }\n /** @type {State} */\n\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = instruction\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return instruction\n }\n /** @type {State} */\n\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n /** @type {State} */\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagClose(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return tagCloseBetween(code)\n }\n /** @type {State} */\n\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function tagOpen(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n return tagOpenAttributeNameAfter(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n\n return tagOpenBetween(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueUnquoted\n }\n /** @type {State} */\n\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return tagOpenAttributeValueQuotedAfter\n }\n\n if (code === null) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n /** @type {State} */\n\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n } // We can’t have blank lines in content, so no need to worry about empty\n // tokens.\n\n /** @type {State} */\n\n function atLineEnding(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(\n effects,\n afterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n /** @type {State} */\n\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n/** @type {Construct} */\n\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\n\nconst fullReferenceConstruct = {\n tokenize: tokenizeFullReference\n}\n/** @type {Construct} */\n\nconst collapsedReferenceConstruct = {\n tokenize: tokenizeCollapsedReference\n}\n/** @type {Resolver} */\n\nfunction resolveAllLabelEnd(events) {\n let index = -1\n /** @type {Token} */\n\n let token\n\n while (++index < events.length) {\n token = events[index][1]\n\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n\n return events\n}\n/** @type {Resolver} */\n\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n\n let token\n /** @type {number|undefined} */\n\n let open\n /** @type {number|undefined} */\n\n let close\n /** @type {Event[]} */\n\n let media // Find an opening.\n\n while (index--) {\n token = events[index][1]\n\n if (open) {\n // If we see another link, or inactive link label, we’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 const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ] // Opening marker.\n\n media = push(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n media = push(media, [['enter', text, context]]) // Between.\n\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n ) // Text close, marker close, label close.\n\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ]) // Reference, resource, or so.\n\n media = push(media, events.slice(close + 1)) // Media close.\n\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n\n let labelStart\n /** @type {boolean} */\n\n let defined // Find an opening.\n\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!labelStart) {\n return nok(code)\n } // It’s a balanced bracket, but contains a link.\n\n if (labelStart._inactive) return balanced(code)\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return afterLabelEnd\n }\n /** @type {State} */\n\n function afterLabelEnd(code) {\n // Resource: `[asd](fgh)`.\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n ok,\n defined ? ok : balanced\n )(code)\n } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n if (code === 91) {\n return effects.attempt(\n fullReferenceConstruct,\n ok,\n defined\n ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n : balanced\n )(code)\n } // Shortcut reference: `[asd]`?\n\n return defined ? ok(code) : balanced(code)\n }\n /** @type {State} */\n\n function balanced(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeResource(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return factoryWhitespace(effects, open)\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 41) {\n return end(code)\n }\n\n return factoryDestination(\n effects,\n destinationAfter,\n nok,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n /** @type {State} */\n\n function destinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, between)(code)\n : end(code)\n }\n /** @type {State} */\n\n function between(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factoryWhitespace(effects, end),\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function end(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeFullReference(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n return factoryLabel.call(\n self,\n effects,\n afterLabel,\n nok,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n /** @type {State} */\n\n function afterLabel(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n /* To do: remove in the future once we’ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn’t need this */\n\n /* Hidden footnotes hook */\n\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n /** @type {State} */\n\n function after(code) {\n /* To do: remove in the future once we’ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn’t need this */\n\n /* Hidden footnotes hook. */\n\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLineEnding(effects, ok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0\n /** @type {NonNullable} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('thematicBreak')\n marker = code\n return atBreak(code)\n }\n /** @type {State} */\n\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n if (size < 3 || (code !== null && !markdownLineEnding(code))) {\n return nok(code)\n }\n\n effects.exit('thematicBreak')\n return ok(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n\n effects.exit('thematicBreakSequence')\n return atBreak(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @typedef {Record & {marker: Code, type: string, size: number}} ListContainerState\n * @typedef {TokenizeContext & {containerState: ListContainerState}} TokenizeContextWithState\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {asciiDigit, markdownSpace} from 'micromark-util-character'\nimport {blankLine} from './blank-line.js'\nimport {thematicBreak} from './thematic-break.js'\n/** @type {Construct} */\n\nexport const list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\n/** @type {Construct} */\n\nconst listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\n/** @type {Construct} */\n\nconst indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this\n const tail = self.events[self.events.length - 1]\n let initialSize =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n const kind =\n self.containerState.type ||\n (code === 42 || code === 43 || code === 45\n ? 'listUnordered'\n : 'listOrdered')\n\n if (\n kind === 'listUnordered'\n ? !self.containerState.marker || code === self.containerState.marker\n : asciiDigit(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {\n _container: true\n })\n }\n\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix')\n return code === 42 || code === 45\n ? effects.check(thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix')\n effects.enter('listItemValue')\n return inside(code)\n }\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code)\n return inside\n }\n\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === 41 || code === 46)\n ) {\n effects.exit('listItemValue')\n return atMarker(code)\n }\n\n return nok(code)\n }\n /**\n * @type {State}\n **/\n\n function atMarker(code) {\n effects.enter('listItemMarker')\n effects.consume(code)\n effects.exit('listItemMarker')\n self.containerState.marker = self.containerState.marker || code\n return effects.check(\n blankLine, // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n /** @type {State} */\n\n function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n /** @type {State} */\n\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter('listItemPrefixWhitespace')\n effects.consume(code)\n effects.exit('listItemPrefixWhitespace')\n return endOfPrefix\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize +\n self.sliceSerialize(effects.exit('listItemPrefix'), true).length\n return ok(code)\n }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this\n self.containerState._closeFlow = undefined\n return effects.check(blankLine, onBlank, notBlank)\n /** @type {State} */\n\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine // We have a blank line.\n // Still, try to consume at most the items size.\n\n return factorySpace(\n effects,\n ok,\n 'listItemIndent',\n self.containerState.size + 1\n )(code)\n }\n /** @type {State} */\n\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n /** @type {State} */\n\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true // As we’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.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'listItemIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n/**\n * @type {Exiter}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4 + 1\n )\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return !markdownSpace(code) &&\n tail &&\n tail[1].type === 'listItemPrefixWhitespace'\n ? ok(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n/** @type {Resolver} */\n\nfunction resolveToSetextUnderline(events, context) {\n let index = events.length\n /** @type {number|undefined} */\n\n let content\n /** @type {number|undefined} */\n\n let text\n /** @type {number|undefined} */\n\n let definition // Find the opening of the content.\n // It’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 const heading = {\n type: 'setextHeading',\n start: Object.assign({}, events[text][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n } // Change the paragraph to setext heading text.\n\n events[text][1].type = 'setextHeadingText' // If we have definitions in the content, we’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 = Object.assign({}, events[definition][1].end)\n } else {\n events[content][1] = heading\n } // Add the heading exit at the end.\n\n events.push(['exit', heading, context])\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {NonNullable} */\n\n let marker\n /** @type {boolean} */\n\n let paragraph // Find an opening.\n\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (\n self.events[index][1].type !== 'lineEnding' &&\n self.events[index][1].type !== 'linePrefix' &&\n self.events[index][1].type !== 'content'\n ) {\n paragraph = self.events[index][1].type === 'paragraph'\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine')\n effects.enter('setextHeadingLineSequence')\n marker = code\n return closingSequence(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n return closingSequence\n }\n\n effects.exit('setextHeadingLineSequence')\n return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code)\n }\n /** @type {State} */\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n}\n/** @type {Initializer} */\n\nfunction initializeFlow(effects) {\n const self = this\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine,\n atBlankEnding, // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n /** @type {State} */\n\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n /** @type {State} */\n\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nexport const resolver = {\n resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n/**\n * @param {'string'|'text'} field\n * @returns {InitialConstruct}\n */\n\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n /** @type {Initializer} */\n\n function initializeText(effects) {\n const self = this\n const constructs = this.parser.constructs[field]\n const text = effects.attempt(constructs, start, notText)\n return start\n /** @type {State} */\n\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n /** @type {State} */\n\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('data')\n effects.consume(code)\n return data\n }\n /** @type {State} */\n\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n\n function atBreak(code) {\n if (code === null) {\n return true\n }\n\n const list = constructs[code]\n let index = -1\n\n if (list) {\n while (++index < list.length) {\n const item = list[index]\n\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true\n }\n }\n }\n\n return false\n }\n }\n}\n/**\n * @param {Resolver} [extraResolver]\n * @returns {Resolver}\n */\n\nfunction createResolver(extraResolver) {\n return resolveAllText\n /** @type {Resolver} */\n\n function resolveAllText(events, context) {\n let index = -1\n /** @type {number|undefined} */\n\n let enter // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’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}\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\n\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0 // Skip first.\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === 'lineEnding') &&\n events[eventIndex - 1][1].type === 'data'\n ) {\n const data = events[eventIndex - 1][1]\n const chunks = context.sliceStream(data)\n let index = chunks.length\n let bufferIndex = -1\n let size = 0\n /** @type {boolean|undefined} */\n\n let tabs\n\n while (index--) {\n const chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n\n if (bufferIndex) break\n bufferIndex = -1\n } // Number\n else if (chunk === -2) {\n tabs = true\n size++\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++\n break\n }\n }\n\n if (size) {\n const token = {\n type:\n eventIndex === events.length || tabs || size < 2\n ? 'lineSuffix'\n : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: Object.assign({}, data.end)\n }\n data.end = Object.assign({}, token.start)\n\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n\n eventIndex++\n }\n }\n\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n */\n\n/**\n * @typedef Info\n * @property {() => void} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit} [from]\n * @returns {TokenizeContext}\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = Object.assign(\n from\n ? Object.assign({}, from)\n : {\n line: 1,\n column: 1,\n offset: 0\n },\n {\n _index: 0,\n _bufferIndex: -1\n }\n )\n /** @type {Record} */\n\n const columnStart = {}\n /** @type {Array} */\n\n const resolveAllConstructs = []\n /** @type {Array} */\n\n let chunks = []\n /** @type {Array} */\n\n let stack = []\n /** @type {boolean|undefined} */\n\n let consumed = true\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n\n const effects = {\n consume,\n enter,\n exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n }\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n\n const context = {\n previous: null,\n code: null,\n containerState: {},\n events: [],\n parser,\n sliceStream,\n sliceSerialize,\n now,\n defineSkip,\n write\n }\n /**\n * The state function.\n *\n * @type {State|void}\n */\n\n let state = initialize.tokenize.call(context, effects)\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n\n let expectedCode\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n }\n\n return context\n /** @type {TokenizeContext['write']} */\n\n function write(slice) {\n chunks = push(chunks, slice)\n main() // Exit if we’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 /** @type {TokenizeContext['sliceSerialize']} */\n\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs)\n }\n /** @type {TokenizeContext['sliceStream']} */\n\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n /** @type {TokenizeContext['now']} */\n\n function now() {\n return Object.assign({}, point)\n }\n /** @type {TokenizeContext['defineSkip']} */\n\n function defineSkip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n } //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {void}\n */\n\n function main() {\n /** @type {number} */\n let chunkIndex\n\n while (point._index < chunks.length) {\n const chunk = chunks[point._index] // If we’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 }\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n\n function go(code) {\n consumed = undefined\n expectedCode = code\n state = state(code)\n }\n /** @type {Effects['consume']} */\n\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++\n point.column = 1\n point.offset += code === -3 ? 2 : 1\n accountForPotentialSkip()\n } else if (code !== -1) {\n point.column++\n point.offset++\n } // Not in a string chunk.\n\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++ // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n } // Expose the previous character.\n\n context.previous = code // Mark as consumed.\n\n consumed = true\n }\n /** @type {Effects['enter']} */\n\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {}\n token.type = type\n token.start = now()\n context.events.push(['enter', token, context])\n stack.push(token)\n return token\n }\n /** @type {Effects['exit']} */\n\n function exit(type) {\n const token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n }\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n }\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n\n function onsuccessfulcheck(_, info) {\n info.restore()\n }\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {Record} [fields]\n */\n\n function constructFactory(onreturn, fields) {\n return hook\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Construct|Array|ConstructRecord} constructs\n * @param {State} returnState\n * @param {State} [bogusState]\n * @returns {State}\n */\n\n function hook(constructs, returnState, bogusState) {\n /** @type {Array} */\n let listOfConstructs\n /** @type {number} */\n\n let constructIndex\n /** @type {Construct} */\n\n let currentConstruct\n /** @type {Info} */\n\n let info\n return Array.isArray(constructs)\n ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs)\n : 'tokenize' in constructs // @ts-expect-error Looks like a construct.\n ? handleListOfConstructs([constructs])\n : handleMapOfConstructs(constructs)\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n\n function handleMapOfConstructs(map) {\n return start\n /** @type {State} */\n\n function start(code) {\n const def = code !== null && map[code]\n const all = code !== null && map.null\n const list = [\n // To do: add more extension tests.\n\n /* c8 ignore next 2 */\n ...(Array.isArray(def) ? def : def ? [def] : []),\n ...(Array.isArray(all) ? all : all ? [all] : [])\n ]\n return handleListOfConstructs(list)(code)\n }\n }\n /**\n * Handle a list of construct.\n *\n * @param {Array} list\n * @returns {State}\n */\n\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n\n if (list.length === 0) {\n return bogusState\n }\n\n return handleConstruct(list[constructIndex])\n }\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n\n function handleConstruct(construct) {\n return start\n /** @type {State} */\n\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’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.includes(construct.name)\n ) {\n return nok(code)\n }\n\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n /** @type {State} */\n\n function ok(code) {\n consumed = true\n onreturn(currentConstruct, info)\n return returnState\n }\n /** @type {State} */\n\n function nok(code) {\n consumed = true\n info.restore()\n\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n\n return bogusState\n }\n }\n }\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct)\n }\n\n if (construct.resolve) {\n splice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n /**\n * Store state.\n *\n * @returns {Info}\n */\n\n function store() {\n const startPoint = now()\n const startPrevious = context.previous\n const startCurrentConstruct = context.currentConstruct\n const startEventsIndex = context.events.length\n const startStack = Array.from(stack)\n return {\n restore,\n from: startEventsIndex\n }\n /**\n * Restore state.\n *\n * @returns {void}\n */\n\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n }\n }\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {void}\n */\n\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line]\n point.offset += columnStart[point.line] - 1\n }\n }\n}\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array} chunks\n * @param {Pick} token\n * @returns {Array}\n */\n\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index\n const startBufferIndex = token.start._bufferIndex\n const endIndex = token.end._index\n const endBufferIndex = token.end._bufferIndex\n /** @type {Array} */\n\n let view\n\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n\n if (startBufferIndex > -1) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view[0] = view[0].slice(startBufferIndex)\n }\n\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n\n return view\n}\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array} chunks\n * @param {boolean} [expandTabs=false]\n * @returns {string}\n */\n\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1\n /** @type {Array} */\n\n const result = []\n /** @type {boolean|undefined} */\n\n let atTab\n\n while (++index < chunks.length) {\n const chunk = chunks[index]\n /** @type {string} */\n\n let value\n\n if (typeof chunk === 'string') {\n value = chunk\n } else\n switch (chunk) {\n case -5: {\n value = '\\r'\n break\n }\n\n case -4: {\n value = '\\n'\n break\n }\n\n case -3: {\n value = '\\r' + '\\n'\n break\n }\n\n case -2: {\n value = expandTabs ? ' ' : '\\t'\n break\n }\n\n case -1: {\n if (!expandTabs && atTab) continue\n value = ' '\n break\n }\n\n default: {\n // Currently only replacement character.\n value = String.fromCharCode(chunk)\n }\n }\n\n atTab = chunk === -2\n result.push(value)\n }\n\n return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n/** @type {Extension['document']} */\n\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n/** @type {Extension['contentInitial']} */\n\nexport const contentInitial = {\n [91]: definition\n}\n/** @type {Extension['flowInitial']} */\n\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n/** @type {Extension['flow']} */\n\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n/** @type {Extension['string']} */\n\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n/** @type {Extension['text']} */\n\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n/** @type {Extension['insideSpan']} */\n\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n/** @type {Extension['attentionMarkers']} */\n\nexport const attentionMarkers = {\n null: [42, 95]\n}\n/** @type {Extension['disable']} */\n\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Create} Create\n */\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n/**\n * @param {ParseOptions} [options]\n * @returns {ParseContext}\n */\n\nexport function parse(options = {}) {\n /** @type {FullNormalizedExtension} */\n // @ts-expect-error `defaultConstructs` is full, so the result will be too.\n const constructs = combineExtensions(\n // @ts-expect-error Same as above.\n [defaultConstructs].concat(options.extensions || [])\n )\n /** @type {ParseContext} */\n\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n /**\n * @param {InitialConstruct} initial\n */\n\n function create(initial) {\n return creator\n /** @type {Create} */\n\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding} [encoding]\n * @param {boolean} [end=false]\n * @returns {Array}\n */\nconst search = /[\\0\\t\\n\\r]/g\n/**\n * @returns {Preprocessor}\n */\n\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean|undefined} */\n\n let start = true\n /** @type {boolean|undefined} */\n\n let atCarriageReturn\n return preprocessor\n /** @type {Preprocessor} */\n\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray|null} */\n\n let match\n /** @type {number} */\n\n let next\n /** @type {number} */\n\n let startPosition\n /** @type {number} */\n\n let endPosition\n /** @type {Code} */\n\n let code // @ts-expect-error `Buffer` does allow an encoding.\n\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n\n if (start) {\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n\n start = undefined\n }\n\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n\n while (column++ < next) chunks.push(-1)\n\n break\n }\n\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n\n startPosition = endPosition + 1\n }\n\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n\n return chunks\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {subtokenize} from 'micromark-util-subtokenize'\n/**\n * @param {Array} events\n * @returns {Array}\n */\n\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n\n return events\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n\n if (\n // C0 except for HT, LF, FF, CR, space\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.\n (code > 126 && code < 160) || // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) || // Noncharacters.\n (code > 64975 && code < 65008) ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 || // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n\n return String.fromCharCode(code)\n}\n","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n/**\n * Utility to decode markdown strings (which occur in places such as fenced\n * code info strings, destinations, labels, and titles).\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * @returns {string}\n */\n\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\n\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n } // Reference.\n\n const head = $2.charCodeAt(0)\n\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Position | PositionLike | Point | PointLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').StaticPhrasingContent} StaticPhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Root | Content} Node\n * @typedef {Extract} Parent\n *\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | undefined | null | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(key: Key) => CompileData[Key]} getData\n * Get data from the key/value store.\n * @property {(key: Key, value?: CompileData[Key]) => void} setData\n * Set data into the key/value store.\n * @property {(this: CompileContext) => void} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Kind, token: Token, onError?: OnEnterError) => Kind} enter\n * Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n * Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\n// To do: micromark: create a registry of tokens?\n// To do: next major: don’t return given `Node` from `enter`.\n// To do: next major: remove setter/getter.\n\nimport {toString} from 'mdast-util-to-string'\nimport {parse} from 'micromark/lib/parse.js'\nimport {preprocess} from 'micromark/lib/preprocess.js'\nimport {postprocess} from 'micromark/lib/postprocess.js'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n\n/**\n * @param value\n * Markdown to parse.\n * @param encoding\n * Character encoding for when `value` is `Buffer`.\n * @param options\n * Configuration.\n * @returns\n * mdast tree.\n */\nexport const fromMarkdown =\n /**\n * @type {(\n * ((value: Value, encoding: Encoding, options?: Options | null | undefined) => Root) &\n * ((value: Value, options?: Options | null | undefined) => Root)\n * )}\n */\n\n /**\n * @param {Value} value\n * @param {Encoding | Options | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n */\n function (value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n }\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }\n configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n setData,\n getData\n }\n /** @type {Array} */\n const listStack = []\n let index = -1\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n index = -1\n while (++index < events.length) {\n const handler = config[events[index][0]]\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n return tree\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token | undefined} */\n let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n while (++index <= length) {\n const event = events[index]\n 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 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 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 if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\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 if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n }\n // @ts-expect-error: `listItem` is most definitely defined, TS...\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Set data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @param {CompileData[Key]} [value]\n * New value.\n * @returns {void}\n * Nothing.\n */\n function setData(key, value) {\n data[key] = value\n }\n\n /**\n * Get data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @returns {CompileData[Key]}\n * Value.\n */\n function getData(key) {\n return data[key]\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Node} create\n * Create a node.\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {void}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n\n /**\n * @template {Node} Kind\n * Node type.\n * @this {CompileContext}\n * Context.\n * @param {Kind} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {Kind}\n * The given node.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n parent.children.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler])\n // @ts-expect-error: `end` will be patched later.\n node.position = {\n start: point(token.start)\n }\n return node\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {Node}\n * The closed node.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n node.position.end = point(token.end)\n return node\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n const ancestor = this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n setData('expectingFirstListItemValue')\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return\n this.buffer()\n setData('flowCodeInside', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n setData('flowCodeInside')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n let tail = node.children[node.children.length - 1]\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n // @ts-expect-error: we’ll add `end` later.\n tail.position = {\n start: point(token.start)\n }\n // @ts-expect-error: Assume `parent` accepts `text`.\n node.children.push(tail)\n }\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n setData('atHardBreak')\n return\n }\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n // Assume a reference.\n setData('inReference', true)\n if (node.type === 'link') {\n /** @type {Array} */\n // @ts-expect-error: Assume static phrasing content.\n const children = fragment.children\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n setData('inReference')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = getData('characterReferenceType')\n /** @type {string} */\n let value\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n setData('characterReferenceType')\n } else {\n const result = decodeNamedCharacterReference(data)\n value = result\n }\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n\n /** @returns {Heading} */\n function heading() {\n // @ts-expect-error `depth` will be set later.\n return {\n type: 'heading',\n depth: undefined,\n children: []\n }\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n\n /** @returns {HTML} */\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Array>} extensions\n * @returns {void}\n */\nfunction configure(combined, extensions) {\n let index = -1\n while (++index < extensions.length) {\n const value = extensions[index]\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {void}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n for (key in extension) {\n if (own.call(extension, key)) {\n if (key === 'canContainEols') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'transforms') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'enter' || key === 'exit') {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","import { l as log, H as decodeEntities } from \"./mermaid-a98f434b.js\";\nimport { fromMarkdown } from \"mdast-util-from-markdown\";\nimport { dedent } from \"ts-dedent\";\nfunction preprocessMarkdown(markdown) {\n const withoutMultipleNewlines = markdown.replace(/\\n{2,}/g, \"\\n\");\n const withoutExtraSpaces = dedent(withoutMultipleNewlines);\n return withoutExtraSpaces;\n}\nfunction markdownToLines(markdown) {\n const preprocessedMarkdown = preprocessMarkdown(markdown);\n const { children } = fromMarkdown(preprocessedMarkdown);\n const lines = [[]];\n let currentLine = 0;\n function processNode(node, parentType = \"normal\") {\n if (node.type === \"text\") {\n const textLines = node.value.split(\"\\n\");\n textLines.forEach((textLine, index) => {\n if (index !== 0) {\n currentLine++;\n lines.push([]);\n }\n textLine.split(\" \").forEach((word) => {\n if (word) {\n lines[currentLine].push({ content: word, type: parentType });\n }\n });\n });\n } else if (node.type === \"strong\" || node.type === \"emphasis\") {\n node.children.forEach((contentNode) => {\n processNode(contentNode, node.type);\n });\n }\n }\n children.forEach((treeNode) => {\n if (treeNode.type === \"paragraph\") {\n treeNode.children.forEach((contentNode) => {\n processNode(contentNode);\n });\n }\n });\n return lines;\n}\nfunction markdownToHTML(markdown) {\n const { children } = fromMarkdown(markdown);\n function output(node) {\n if (node.type === \"text\") {\n return node.value.replace(/\\n/g, \"
\");\n } else if (node.type === \"strong\") {\n return `${node.children.map(output).join(\"\")}`;\n } else if (node.type === \"emphasis\") {\n return `${node.children.map(output).join(\"\")}`;\n } else if (node.type === \"paragraph\") {\n return `${node.children.map(output).join(\"\")}
`;\n }\n return `Unsupported markdown: ${node.type}`;\n }\n return children.map(output).join(\"\");\n}\nfunction splitTextToChars(text) {\n if (Intl.Segmenter) {\n return [...new Intl.Segmenter().segment(text)].map((s) => s.segment);\n }\n return [...text];\n}\nfunction splitWordToFitWidth(checkFit, word) {\n const characters = splitTextToChars(word.content);\n return splitWordToFitWidthRecursion(checkFit, [], characters, word.type);\n}\nfunction splitWordToFitWidthRecursion(checkFit, usedChars, remainingChars, type) {\n if (remainingChars.length === 0) {\n return [\n { content: usedChars.join(\"\"), type },\n { content: \"\", type }\n ];\n }\n const [nextChar, ...rest] = remainingChars;\n const newWord = [...usedChars, nextChar];\n if (checkFit([{ content: newWord.join(\"\"), type }])) {\n return splitWordToFitWidthRecursion(checkFit, newWord, rest, type);\n }\n if (usedChars.length === 0 && nextChar) {\n usedChars.push(nextChar);\n remainingChars.shift();\n }\n return [\n { content: usedChars.join(\"\"), type },\n { content: remainingChars.join(\"\"), type }\n ];\n}\nfunction splitLineToFitWidth(line, checkFit) {\n if (line.some(({ content }) => content.includes(\"\\n\"))) {\n throw new Error(\"splitLineToFitWidth does not support newlines in the line\");\n }\n return splitLineToFitWidthRecursion(line, checkFit);\n}\nfunction splitLineToFitWidthRecursion(words, checkFit, lines = [], newLine = []) {\n if (words.length === 0) {\n if (newLine.length > 0) {\n lines.push(newLine);\n }\n return lines.length > 0 ? lines : [];\n }\n let joiner = \"\";\n if (words[0].content === \" \") {\n joiner = \" \";\n words.shift();\n }\n const nextWord = words.shift() ?? { content: \" \", type: \"normal\" };\n const lineWithNextWord = [...newLine];\n if (joiner !== \"\") {\n lineWithNextWord.push({ content: joiner, type: \"normal\" });\n }\n lineWithNextWord.push(nextWord);\n if (checkFit(lineWithNextWord)) {\n return splitLineToFitWidthRecursion(words, checkFit, lines, lineWithNextWord);\n }\n if (newLine.length > 0) {\n lines.push(newLine);\n words.unshift(nextWord);\n } else if (nextWord.content) {\n const [line, rest] = splitWordToFitWidth(checkFit, nextWord);\n lines.push([line]);\n if (rest.content) {\n words.unshift(rest);\n }\n }\n return splitLineToFitWidthRecursion(words, checkFit, lines);\n}\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\nfunction addHtmlSpan(element, node, width, classes, addBackground = false) {\n const fo = element.append(\"foreignObject\");\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n div.html(\n `\n \" + label + \"\"\n );\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"table-cell\");\n div.style(\"white-space\", \"nowrap\");\n div.style(\"max-width\", width + \"px\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n if (addBackground) {\n div.attr(\"class\", \"labelBkg\");\n }\n let bbox = div.node().getBoundingClientRect();\n if (bbox.width === width) {\n div.style(\"display\", \"table\");\n div.style(\"white-space\", \"break-spaces\");\n div.style(\"width\", width + \"px\");\n bbox = div.node().getBoundingClientRect();\n }\n fo.style(\"width\", bbox.width);\n fo.style(\"height\", bbox.height);\n return fo.node();\n}\nfunction createTspan(textElement, lineIndex, lineHeight) {\n return textElement.append(\"tspan\").attr(\"class\", \"text-outer-tspan\").attr(\"x\", 0).attr(\"y\", lineIndex * lineHeight - 0.1 + \"em\").attr(\"dy\", lineHeight + \"em\");\n}\nfunction computeWidthOfText(parentNode, lineHeight, line) {\n const testElement = parentNode.append(\"text\");\n const testSpan = createTspan(testElement, 1, lineHeight);\n updateTextContentAndStyles(testSpan, line);\n const textLength = testSpan.node().getComputedTextLength();\n testElement.remove();\n return textLength;\n}\nfunction createFormattedText(width, g, structuredText, addBackground = false) {\n const lineHeight = 1.1;\n const labelGroup = g.append(\"g\");\n const bkg = labelGroup.insert(\"rect\").attr(\"class\", \"background\");\n const textElement = labelGroup.append(\"text\").attr(\"y\", \"-10.1\");\n let lineIndex = 0;\n for (const line of structuredText) {\n const checkWidth = (line2) => computeWidthOfText(labelGroup, lineHeight, line2) <= width;\n const linesUnderWidth = checkWidth(line) ? [line] : splitLineToFitWidth(line, checkWidth);\n for (const preparedLine of linesUnderWidth) {\n const tspan = createTspan(textElement, lineIndex, lineHeight);\n updateTextContentAndStyles(tspan, preparedLine);\n lineIndex++;\n }\n }\n if (addBackground) {\n const bbox = textElement.node().getBBox();\n const padding = 2;\n bkg.attr(\"x\", -padding).attr(\"y\", -padding).attr(\"width\", bbox.width + 2 * padding).attr(\"height\", bbox.height + 2 * padding);\n return labelGroup.node();\n } else {\n return textElement.node();\n }\n}\nfunction updateTextContentAndStyles(tspan, wrappedLine) {\n tspan.text(\"\");\n wrappedLine.forEach((word, index) => {\n const innerTspan = tspan.append(\"tspan\").attr(\"font-style\", word.type === \"emphasis\" ? \"italic\" : \"normal\").attr(\"class\", \"text-inner-tspan\").attr(\"font-weight\", word.type === \"strong\" ? \"bold\" : \"normal\");\n if (index === 0) {\n innerTspan.text(word.content);\n } else {\n innerTspan.text(\" \" + word.content);\n }\n });\n}\nconst createText = (el, text = \"\", {\n style = \"\",\n isTitle = false,\n classes = \"\",\n useHtmlLabels = true,\n isNode = true,\n width = 200,\n addSvgBackground = false\n} = {}) => {\n log.info(\"createText\", text, style, isTitle, classes, useHtmlLabels, isNode, addSvgBackground);\n if (useHtmlLabels) {\n const htmlText = markdownToHTML(text);\n const node = {\n isNode,\n label: decodeEntities(htmlText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n ),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n const vertexNode = addHtmlSpan(el, node, width, classes, addSvgBackground);\n return vertexNode;\n } else {\n const structuredText = markdownToLines(text);\n const svgLabel = createFormattedText(width, el, structuredText, addSvgBackground);\n return svgLabel;\n }\n};\nexport {\n createText as c\n};\n"],"names":["emptyOptions","toString","value","options","settings","includeImageAlt","includeHtml","one","node","all","values","result","index","splice","list","start","remove","items","end","chunkStart","parameters","push","hasOwnProperty","combineExtensions","extensions","syntaxExtension","extension","hook","left","right","code","constructs","existing","before","unicodePunctuationRegex","asciiAlpha","regexCheck","asciiDigit","asciiHexDigit","asciiAlphanumeric","asciiPunctuation","asciiAtext","asciiControl","markdownLineEndingOrSpace","markdownLineEnding","markdownSpace","unicodeWhitespace","unicodePunctuation","regex","check","factorySpace","effects","ok","type","max","limit","size","prefix","content","initializeContent","contentStart","afterContentStartConstruct","paragraphInitial","previous","lineStart","token","data","document","initializeDocument","containerConstruct","tokenizeContainer","self","stack","continued","childFlow","childToken","lineStartOffset","item","documentContinue","checkNewContainers","closeFlow","indexBeforeExits","indexBeforeFlow","point","exitContainers","documentContinued","flowStart","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flowContinue","writeToChild","eof","stream","seen","entry","nok","classifyCharacter","resolveAll","events","context","called","resolve","attention","tokenizeAttention","resolveAllAttention","open","group","text","openingSequence","closingSequence","use","nextEvents","offset","movePoint","attentionMarkers","marker","sequence","after","close","autolink","tokenizeAutolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","blankLine","tokenizeBlankLine","afterWhitespace","blockQuote","tokenizeBlockQuoteStart","tokenizeBlockQuoteContinuation","exit","state","characterEscape","tokenizeCharacterEscape","element","decodeNamedCharacterReference","characterReference","char","tokenizeCharacterReference","test","numeric","codeFenced","tokenizeCodeFenced","closingFenceConstruct","tokenizeClosingFence","nonLazyLine","tokenizeNonLazyLine","tail","initialPrefix","sizeOpen","sequenceOpen","infoOpen","openAfter","info","infoAfter","meta","contentContinue","closingSequenceStart","closingSequenceEnd","codeIndented","tokenizeCodeIndented","indentedContent","tokenizeIndentedContent","afterStartPrefix","afterPrefix","codeText","tokenizeCodeText","resolveCodeText","tailExitIndex","headEnterIndex","enter","gap","subtokenize","jumps","event","lineIndex","otherIndex","otherEvent","subevents","more","subcontent","eventIndex","startPosition","startPositions","tokenizer","childEvents","gaps","current","adjust","breaks","slice","tokenizeContent","resolveContent","continuationConstruct","tokenizeContinuation","contentEnd","startLookahead","prefixed","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","destinationEnclosedBefore","destinationRaw","destinationEnclosed","destinationEnclosedEscape","destinationRawEscape","factoryLabel","markerType","atBreak","label","labelEscape","factoryTitle","atFirstTitleBreak","atTitleBreak","title","titleEscape","factoryWhitespace","normalizeIdentifier","definition","tokenizeDefinition","titleConstruct","tokenizeTitle","identifier","labelAfter","hardBreakEscape","tokenizeHardBreakEscape","headingAtx","tokenizeHeadingAtx","resolveHeadingAtx","fenceOpenInside","headingBreak","htmlBlockNames","htmlRawNames","htmlFlow","tokenizeHtmlFlow","resolveToHtmlFlow","nextBlankConstruct","tokenizeNextBlank","kind","startTag","buffer","declarationStart","tagCloseStart","continuationDeclarationInside","tagName","commentOpenInside","cdataOpenInside","continuation","basicSelfClosing","completeAttributeNameBefore","completeClosingTagAfter","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCharacterDataInside","continuationAtLineEnding","htmlContinueStart","done","htmlLineEnd","continuationRawEndTag","htmlText","tokenizeHtmlText","returnState","declarationOpen","instruction","tagOpen","commentOpen","cdataOpen","declaration","commentStart","commentStartDash","comment","commentClose","atLineEnding","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","labelEnd","tokenizeLabelEnd","resolveToLabelEnd","resolveAllLabelEnd","resourceConstruct","tokenizeResource","fullReferenceConstruct","tokenizeFullReference","collapsedReferenceConstruct","tokenizeCollapsedReference","media","labelStart","defined","balanced","afterLabelEnd","destinationAfter","between","afterLabel","labelStartImage","tokenizeLabelStartImage","labelStartLink","tokenizeLabelStartLink","lineEnding","tokenizeLineEnding","thematicBreak","tokenizeThematicBreak","tokenizeListStart","tokenizeListContinuation","tokenizeListEnd","listItemPrefixWhitespaceConstruct","tokenizeListItemPrefixWhitespace","indentConstruct","tokenizeIndent","initialSize","atMarker","inside","onBlank","endOfPrefix","otherPrefix","notBlank","notInCurrentItem","setextUnderline","tokenizeSetextUnderline","resolveToSetextUnderline","heading","paragraph","flow","initializeFlow","initial","atBlankEnding","afterConstruct","resolver","createResolver","string","initializeFactory","field","initializeText","resolveAllLineSuffixes","notText","extraResolver","resolveAllText","chunks","bufferIndex","tabs","chunk","createTokenizer","parser","initialize","from","columnStart","resolveAllConstructs","consume","constructFactory","onsuccessfulconstruct","onsuccessfulcheck","sliceStream","sliceSerialize","now","defineSkip","write","main","addResult","expandTabs","serializeChunks","sliceChunks","accountForPotentialSkip","chunkIndex","go","fields","construct","_","onreturn","bogusState","listOfConstructs","constructIndex","currentConstruct","handleListOfConstructs","handleMapOfConstructs","map","def","handleConstruct","store","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","restore","startIndex","startBufferIndex","endIndex","endBufferIndex","view","atTab","contentInitial","flowInitial","insideSpan","resolveText","disable","parse","defaultConstructs","create","creator","search","preprocess","column","atCarriageReturn","preprocessor","encoding","match","next","endPosition","postprocess","decodeNumericCharacterReference","base","characterEscapeOrReference","decodeString","decode","$0","$1","$2","head","hex","stringifyPosition","position","pos","own","fromMarkdown","compiler","config","opener","link","onenterdata","codeFlow","emphasis","hardBreak","html","image","listItem","onenterlistitemvalue","onenterlistordered","onenterreference","strong","closer","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","onexitdata","onexitcharacterreferencemarker","onexitcharacterreferencevalue","onexitcodefenced","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","onexitsetextheadinglinesequence","onexitsetextheadingtext","configure","compile","tree","resume","setData","getData","listStack","prepareList","handler","defaultOnError","length","containerBalance","listSpread","firstBlankLineIndex","tailIndex","tailEvent","key","and","errorHandler","onExitError","ancestor","depth","referenceType","fragment","children","d","combined","preprocessMarkdown","markdown","withoutMultipleNewlines","dedent","markdownToLines","preprocessedMarkdown","lines","currentLine","processNode","parentType","textLine","word","contentNode","treeNode","markdownToHTML","output","splitTextToChars","s","splitWordToFitWidth","checkFit","characters","splitWordToFitWidthRecursion","usedChars","remainingChars","nextChar","rest","newWord","splitLineToFitWidth","line","splitLineToFitWidthRecursion","words","newLine","joiner","nextWord","lineWithNextWord","applyStyle","dom","styleFn","addHtmlSpan","width","classes","addBackground","fo","div","labelClass","bbox","createTspan","textElement","lineHeight","computeWidthOfText","parentNode","testElement","testSpan","updateTextContentAndStyles","textLength","createFormattedText","g","structuredText","labelGroup","bkg","checkWidth","line2","linesUnderWidth","preparedLine","tspan","padding","wrappedLine","innerTspan","createText","el","style","isTitle","useHtmlLabels","isNode","addSvgBackground","log","decodeEntities"],"mappings":"kGAYA,MAAMA,GAAe,CAAE,EAehB,SAASC,GAASC,EAAOC,EAAS,CACvC,MAAMC,EAAWD,GAAWH,GACtBK,EACJ,OAAOD,EAAS,iBAAoB,UAChCA,EAAS,gBACT,GACAE,EACJ,OAAOF,EAAS,aAAgB,UAAYA,EAAS,YAAc,GAErE,OAAOG,GAAIL,EAAOG,EAAiBC,CAAW,CAChD,CAcA,SAASC,GAAIL,EAAOG,EAAiBC,EAAa,CAChD,GAAIE,GAAKN,CAAK,EAAG,CACf,GAAI,UAAWA,EACb,OAAOA,EAAM,OAAS,QAAU,CAACI,EAAc,GAAKJ,EAAM,MAG5D,GAAIG,GAAmB,QAASH,GAASA,EAAM,IAC7C,OAAOA,EAAM,IAGf,GAAI,aAAcA,EAChB,OAAOO,GAAIP,EAAM,SAAUG,EAAiBC,CAAW,CAE1D,CAED,OAAI,MAAM,QAAQJ,CAAK,EACdO,GAAIP,EAAOG,EAAiBC,CAAW,EAGzC,EACT,CAcA,SAASG,GAAIC,EAAQL,EAAiBC,EAAa,CAEjD,MAAMK,EAAS,CAAE,EACjB,IAAIC,EAAQ,GAEZ,KAAO,EAAEA,EAAQF,EAAO,QACtBC,EAAOC,CAAK,EAAIL,GAAIG,EAAOE,CAAK,EAAGP,EAAiBC,CAAW,EAGjE,OAAOK,EAAO,KAAK,EAAE,CACvB,CAUA,SAASH,GAAKN,EAAO,CACnB,MAAO,GAAQA,GAAS,OAAOA,GAAU,SAC3C,CC3FO,SAASW,GAAOC,EAAMC,EAAOC,EAAQC,EAAO,CACjD,MAAMC,EAAMJ,EAAK,OACjB,IAAIK,EAAa,EAGbC,EAUJ,GARIL,EAAQ,EACVA,EAAQ,CAACA,EAAQG,EAAM,EAAIA,EAAMH,EAEjCA,EAAQA,EAAQG,EAAMA,EAAMH,EAG9BC,EAASA,EAAS,EAAIA,EAAS,EAE3BC,EAAM,OAAS,IACjBG,EAAa,MAAM,KAAKH,CAAK,EAC7BG,EAAW,QAAQL,EAAOC,CAAM,EAC/B,CAAA,EAAG,OAAO,MAAMF,EAAMM,CAAU,MAKjC,KAFIJ,GAAQ,CAAE,EAAC,OAAO,MAAMF,EAAM,CAACC,EAAOC,CAAM,CAAC,EAE1CG,EAAaF,EAAM,QACxBG,EAAaH,EAAM,MAAME,EAAYA,EAAa,GAAK,EACvDC,EAAW,QAAQL,EAAO,CAAC,EAC1B,CAAA,EAAG,OAAO,MAAMD,EAAMM,CAAU,EACjCD,GAAc,IACdJ,GAAS,GAGf,CAcO,SAASM,EAAKP,EAAMG,EAAO,CAChC,OAAIH,EAAK,OAAS,GAChBD,GAAOC,EAAMA,EAAK,OAAQ,EAAGG,CAAK,EAC3BH,GAGFG,CACT,CC3DA,MAAMK,GAAiB,CAAE,EAAC,eAQnB,SAASC,GAAkBC,EAAY,CAE5C,MAAMf,EAAM,CAAE,EACd,IAAIG,EAAQ,GAEZ,KAAO,EAAEA,EAAQY,EAAW,QAC1BC,GAAgBhB,EAAKe,EAAWZ,CAAK,CAAC,EAGxC,OAAOH,CACT,CASA,SAASgB,GAAgBhB,EAAKiB,EAAW,CAEvC,IAAIC,EAEJ,IAAKA,KAAQD,EAAW,CAEtB,MAAME,GADQN,GAAe,KAAKb,EAAKkB,CAAI,EAAIlB,EAAIkB,CAAI,EAAI,UACpClB,EAAIkB,CAAI,EAAI,CAAA,GAC7BE,EAAQH,EAAUC,CAAI,EAE5B,IAAIG,EAEJ,IAAKA,KAAQD,EAAO,CACbP,GAAe,KAAKM,EAAME,CAAI,IAAGF,EAAKE,CAAI,EAAI,CAAE,GACrD,MAAM5B,EAAQ2B,EAAMC,CAAI,EACxBC,GAEEH,EAAKE,CAAI,EACT,MAAM,QAAQ5B,CAAK,EAAIA,EAAQA,EAAQ,CAACA,CAAK,EAAI,CAAE,CACpD,CACF,CACF,CACH,CAUA,SAAS6B,GAAWC,EAAUlB,EAAM,CAClC,IAAIF,EAAQ,GAEZ,MAAMqB,EAAS,CAAE,EAEjB,KAAO,EAAErB,EAAQE,EAAK,SAElBA,EAAKF,CAAK,EAAE,MAAQ,QAAUoB,EAAWC,GAAQ,KAAKnB,EAAKF,CAAK,CAAC,EAGrEC,GAAOmB,EAAU,EAAG,EAAGC,CAAM,CAC/B,CCxEO,MAAMC,GACX,8vCCUWC,GAAaC,GAAW,UAAU,EAQlCC,GAAaD,GAAW,IAAI,EAe5BE,GAAgBF,GAAW,YAAY,EASvCG,EAAoBH,GAAW,YAAY,EAU3CI,GAAmBJ,GAAW,gBAAgB,EAkB9CK,GAAaL,GAAW,qBAAqB,EAWnD,SAASM,GAAaZ,EAAM,CACjC,OAGEA,IAAS,OAASA,EAAO,IAAMA,IAAS,IAE5C,CASO,SAASa,EAA0Bb,EAAM,CAC9C,OAAOA,IAAS,OAASA,EAAO,GAAKA,IAAS,GAChD,CAeO,SAASc,EAAmBd,EAAM,CACvC,OAAOA,IAAS,MAAQA,EAAO,EACjC,CAeO,SAASe,EAAcf,EAAM,CAClC,OAAOA,IAAS,IAAMA,IAAS,IAAMA,IAAS,EAChD,CAiBO,MAAMgB,GAAoBV,GAAW,IAAI,EAkBnCW,GAAqBX,GAAWF,EAAuB,EAQpE,SAASE,GAAWY,EAAO,CACzB,OAAOC,EAQP,SAASA,EAAMnB,EAAM,CACnB,OAAOA,IAAS,MAAQkB,EAAM,KAAK,OAAO,aAAalB,CAAI,CAAC,CAC7D,CACH,CCrLO,SAASoB,EAAaC,EAASC,EAAIC,EAAMC,EAAK,CACnD,MAAMC,EAAQD,EAAMA,EAAM,EAAI,OAAO,kBACrC,IAAIE,EAAO,EACX,OAAOzC,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAIe,EAAcf,CAAI,GACpBqB,EAAQ,MAAME,CAAI,EACXI,EAAO3B,CAAI,GAGbsB,EAAGtB,CAAI,CACf,CAGD,SAAS2B,EAAO3B,EAAM,CACpB,OAAIe,EAAcf,CAAI,GAAK0B,IAASD,GAClCJ,EAAQ,QAAQrB,CAAI,EACb2B,IAGTN,EAAQ,KAAKE,CAAI,EACVD,EAAGtB,CAAI,EACf,CACH,CC5BO,MAAM4B,GAAU,CACrB,SAAUC,EACZ,EAGA,SAASA,GAAkBR,EAAS,CAClC,MAAMS,EAAeT,EAAQ,QAC3B,KAAK,OAAO,WAAW,eACvBU,EACAC,CACD,EAGD,IAAIC,EACJ,OAAOH,EAGP,SAASC,EAA2B/B,EAAM,CACxC,GAAIA,IAAS,KAAM,CACjBqB,EAAQ,QAAQrB,CAAI,EACpB,MACD,CAED,OAAAqB,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,YAAY,EAClBD,EAAaC,EAASS,EAAc,YAAY,CACxD,CAGD,SAASE,EAAiBhC,EAAM,CAC9B,OAAAqB,EAAQ,MAAM,WAAW,EAClBa,EAAUlC,CAAI,CACtB,CAGD,SAASkC,EAAUlC,EAAM,CACvB,MAAMmC,EAAQd,EAAQ,MAAM,YAAa,CACvC,YAAa,OACb,SAAAY,CACN,CAAK,EAED,OAAIA,IACFA,EAAS,KAAOE,GAGlBF,EAAWE,EACJC,EAAKpC,CAAI,CACjB,CAGD,SAASoC,EAAKpC,EAAM,CAClB,GAAIA,IAAS,KAAM,CACjBqB,EAAQ,KAAK,WAAW,EACxBA,EAAQ,KAAK,WAAW,EACxBA,EAAQ,QAAQrB,CAAI,EACpB,MACD,CAED,OAAIc,EAAmBd,CAAI,GACzBqB,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,WAAW,EACjBa,IAGTb,EAAQ,QAAQrB,CAAI,EACboC,EACR,CACH,CC1DO,MAAMC,GAAW,CACtB,SAAUC,EACZ,EAGMC,GAAqB,CACzB,SAAUC,EACZ,EAGA,SAASF,GAAmBjB,EAAS,CACnC,MAAMoB,EAAO,KAGPC,EAAQ,CAAE,EAChB,IAAIC,EAAY,EAGZC,EAGAC,EAGAC,EACJ,OAAO7D,EAGP,SAASA,EAAMe,EAAM,CAWnB,GAAI2C,EAAYD,EAAM,OAAQ,CAC5B,MAAMK,EAAOL,EAAMC,CAAS,EAC5B,OAAAF,EAAK,eAAiBM,EAAK,CAAC,EACrB1B,EAAQ,QACb0B,EAAK,CAAC,EAAE,aACRC,EACAC,CACD,EAACjD,CAAI,CACP,CAED,OAAOiD,EAAmBjD,CAAI,CAC/B,CAGD,SAASgD,EAAiBhD,EAAM,CAK9B,GAJA2C,IAIIF,EAAK,eAAe,WAAY,CAClCA,EAAK,eAAe,WAAa,OAE7BG,GACFM,EAAW,EAIb,MAAMC,EAAmBV,EAAK,OAAO,OACrC,IAAIW,EAAkBD,EAGlBE,EAEJ,KAAOD,KACL,GACEX,EAAK,OAAOW,CAAe,EAAE,CAAC,IAAM,QACpCX,EAAK,OAAOW,CAAe,EAAE,CAAC,EAAE,OAAS,YACzC,CACAC,EAAQZ,EAAK,OAAOW,CAAe,EAAE,CAAC,EAAE,IACxC,KACD,CAGHE,EAAeX,CAAS,EAExB,IAAI7D,EAAQqE,EAEZ,KAAOrE,EAAQ2D,EAAK,OAAO,QACzBA,EAAK,OAAO3D,CAAK,EAAE,CAAC,EAAE,IAAM,OAAO,OAAO,CAAE,EAAEuE,CAAK,EACnDvE,IAGF,OAAAC,GACE0D,EAAK,OACLW,EAAkB,EAClB,EACAX,EAAK,OAAO,MAAMU,CAAgB,CACnC,EAEDV,EAAK,OAAO,OAAS3D,EACdmE,EAAmBjD,CAAI,CAC/B,CAED,OAAOf,EAAMe,CAAI,CAClB,CAGD,SAASiD,EAAmBjD,EAAM,CAMhC,GAAI2C,IAAcD,EAAM,OAAQ,CAI9B,GAAI,CAACE,EACH,OAAOW,EAAkBvD,CAAI,EAK/B,GAAI4C,EAAU,kBAAoBA,EAAU,iBAAiB,SAC3D,OAAOY,EAAUxD,CAAI,EAKvByC,EAAK,UAAY,GACfG,EAAU,kBAAoB,CAACA,EAAU,8BAE5C,CAED,OAAAH,EAAK,eAAiB,CAAE,EACjBpB,EAAQ,MACbkB,GACAkB,EACAC,CACD,EAAC1D,CAAI,CACP,CAGD,SAASyD,EAAqBzD,EAAM,CAClC,OAAI4C,GAAWM,EAAW,EAC1BI,EAAeX,CAAS,EACjBY,EAAkBvD,CAAI,CAC9B,CAGD,SAAS0D,EAAsB1D,EAAM,CACnC,OAAAyC,EAAK,OAAO,KAAKA,EAAK,IAAK,EAAC,IAAI,EAAIE,IAAcD,EAAM,OACxDI,EAAkBL,EAAK,IAAG,EAAG,OACtBe,EAAUxD,CAAI,CACtB,CAGD,SAASuD,EAAkBvD,EAAM,CAE/B,OAAAyC,EAAK,eAAiB,CAAE,EACjBpB,EAAQ,QACbkB,GACAoB,EACAH,CACD,EAACxD,CAAI,CACP,CAGD,SAAS2D,EAAkB3D,EAAM,CAC/B,OAAA2C,IACAD,EAAM,KAAK,CAACD,EAAK,iBAAkBA,EAAK,cAAc,CAAC,EAEhDc,EAAkBvD,CAAI,CAC9B,CAGD,SAASwD,EAAUxD,EAAM,CACvB,GAAIA,IAAS,KAAM,CACb4C,GAAWM,EAAW,EAC1BI,EAAe,CAAC,EAChBjC,EAAQ,QAAQrB,CAAI,EACpB,MACD,CAED,OAAA4C,EAAYA,GAAaH,EAAK,OAAO,KAAKA,EAAK,KAAK,EACpDpB,EAAQ,MAAM,YAAa,CACzB,YAAa,OACb,SAAUwB,EACV,WAAYD,CAClB,CAAK,EACMgB,EAAa5D,CAAI,CACzB,CAGD,SAAS4D,EAAa5D,EAAM,CAC1B,GAAIA,IAAS,KAAM,CACjB6D,EAAaxC,EAAQ,KAAK,WAAW,EAAG,EAAI,EAC5CiC,EAAe,CAAC,EAChBjC,EAAQ,QAAQrB,CAAI,EACpB,MACD,CAED,OAAIc,EAAmBd,CAAI,GACzBqB,EAAQ,QAAQrB,CAAI,EACpB6D,EAAaxC,EAAQ,KAAK,WAAW,CAAC,EAEtCsB,EAAY,EACZF,EAAK,UAAY,OACVxD,IAGToC,EAAQ,QAAQrB,CAAI,EACb4D,EACR,CAOD,SAASC,EAAa1B,EAAO2B,EAAK,CAChC,MAAMC,EAAStB,EAAK,YAAYN,CAAK,EAwCrC,GAvCI2B,GAAKC,EAAO,KAAK,IAAI,EACzB5B,EAAM,SAAWU,EACbA,IAAYA,EAAW,KAAOV,GAClCU,EAAaV,EACbS,EAAU,WAAWT,EAAM,KAAK,EAChCS,EAAU,MAAMmB,CAAM,EAkClBtB,EAAK,OAAO,KAAKN,EAAM,MAAM,IAAI,EAAG,CACtC,IAAIrD,EAAQ8D,EAAU,OAAO,OAE7B,KAAO9D,KACL,GAEE8D,EAAU,OAAO9D,CAAK,EAAE,CAAC,EAAE,MAAM,OAASgE,IACzC,CAACF,EAAU,OAAO9D,CAAK,EAAE,CAAC,EAAE,KAC3B8D,EAAU,OAAO9D,CAAK,EAAE,CAAC,EAAE,IAAI,OAASgE,GAI1C,OAKJ,MAAMK,EAAmBV,EAAK,OAAO,OACrC,IAAIW,EAAkBD,EAGlBa,EAGAX,EAEJ,KAAOD,KACL,GACEX,EAAK,OAAOW,CAAe,EAAE,CAAC,IAAM,QACpCX,EAAK,OAAOW,CAAe,EAAE,CAAC,EAAE,OAAS,YACzC,CACA,GAAIY,EAAM,CACRX,EAAQZ,EAAK,OAAOW,CAAe,EAAE,CAAC,EAAE,IACxC,KACD,CAEDY,EAAO,EACR,CAOH,IAJAV,EAAeX,CAAS,EAExB7D,EAAQqE,EAEDrE,EAAQ2D,EAAK,OAAO,QACzBA,EAAK,OAAO3D,CAAK,EAAE,CAAC,EAAE,IAAM,OAAO,OAAO,CAAE,EAAEuE,CAAK,EACnDvE,IAGFC,GACE0D,EAAK,OACLW,EAAkB,EAClB,EACAX,EAAK,OAAO,MAAMU,CAAgB,CACnC,EAEDV,EAAK,OAAO,OAAS3D,CACtB,CACF,CAMD,SAASwE,EAAe5B,EAAM,CAC5B,IAAI5C,EAAQ4D,EAAM,OAElB,KAAO5D,KAAU4C,GAAM,CACrB,MAAMuC,EAAQvB,EAAM5D,CAAK,EACzB2D,EAAK,eAAiBwB,EAAM,CAAC,EAC7BA,EAAM,CAAC,EAAE,KAAK,KAAKxB,EAAMpB,CAAO,CACjC,CAEDqB,EAAM,OAAShB,CAChB,CAED,SAASwB,GAAY,CACnBN,EAAU,MAAM,CAAC,IAAI,CAAC,EACtBC,EAAa,OACbD,EAAY,OACZH,EAAK,eAAe,WAAa,MAClC,CACH,CAGA,SAASD,GAAkBnB,EAASC,EAAI4C,EAAK,CAC3C,OAAO9C,EACLC,EACAA,EAAQ,QAAQ,KAAK,OAAO,WAAW,SAAUC,EAAI4C,CAAG,EACxD,aACA,KAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EAAI,OAAY,CAC5E,CACH,CC/VO,SAASC,GAAkBnE,EAAM,CACtC,GACEA,IAAS,MACTa,EAA0Bb,CAAI,GAC9BgB,GAAkBhB,CAAI,EAEtB,MAAO,GAGT,GAAIiB,GAAmBjB,CAAI,EACzB,MAAO,EAEX,CCnBO,SAASoE,GAAWnE,EAAYoE,EAAQC,EAAS,CAEtD,MAAMC,EAAS,CAAE,EACjB,IAAIzF,EAAQ,GAEZ,KAAO,EAAEA,EAAQmB,EAAW,QAAQ,CAClC,MAAMuE,EAAUvE,EAAWnB,CAAK,EAAE,WAE9B0F,GAAW,CAACD,EAAO,SAASC,CAAO,IACrCH,EAASG,EAAQH,EAAQC,CAAO,EAChCC,EAAO,KAAKC,CAAO,EAEtB,CAED,OAAOH,CACT,CCdO,MAAMI,GAAY,CACvB,KAAM,YACN,SAAUC,GACV,WAAYC,EACd,EAOA,SAASA,GAAoBN,EAAQC,EAAS,CAC5C,IAAIxF,EAAQ,GAGR8F,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAKJ,KAAO,EAAErG,EAAQuF,EAAO,QAEtB,GACEA,EAAOvF,CAAK,EAAE,CAAC,IAAM,SACrBuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,OAAS,qBAC1BuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,QAIjB,IAFA8F,EAAO9F,EAEA8F,KAEL,GACEP,EAAOO,CAAI,EAAE,CAAC,IAAM,QACpBP,EAAOO,CAAI,EAAE,CAAC,EAAE,OAAS,qBACzBP,EAAOO,CAAI,EAAE,CAAC,EAAE,OAChBN,EAAQ,eAAeD,EAAOO,CAAI,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,IAClDN,EAAQ,eAAeD,EAAOvF,CAAK,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,EACvD,CAKA,IACGuF,EAAOO,CAAI,EAAE,CAAC,EAAE,QAAUP,EAAOvF,CAAK,EAAE,CAAC,EAAE,SAC3CuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,IAAI,OAASuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,MAAM,QAAU,GAChE,GACGuF,EAAOO,CAAI,EAAE,CAAC,EAAE,IAAI,OACnBP,EAAOO,CAAI,EAAE,CAAC,EAAE,MAAM,OACtBP,EAAOvF,CAAK,EAAE,CAAC,EAAE,IAAI,OACrBuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,MAAM,QACzB,GAGF,SAGFmG,EACEZ,EAAOO,CAAI,EAAE,CAAC,EAAE,IAAI,OAASP,EAAOO,CAAI,EAAE,CAAC,EAAE,MAAM,OAAS,GAC5DP,EAAOvF,CAAK,EAAE,CAAC,EAAE,IAAI,OAASuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,MAAM,OAAS,EAC1D,EACA,EACN,MAAMG,EAAQ,OAAO,OAAO,CAAE,EAAEoF,EAAOO,CAAI,EAAE,CAAC,EAAE,GAAG,EAC7CxF,EAAM,OAAO,OAAO,CAAE,EAAEiF,EAAOvF,CAAK,EAAE,CAAC,EAAE,KAAK,EACpDsG,GAAUnG,EAAO,CAACgG,CAAG,EACrBG,GAAUhG,EAAK6F,CAAG,EAClBF,EAAkB,CAChB,KAAME,EAAM,EAAI,iBAAmB,mBACnC,MAAAhG,EACA,IAAK,OAAO,OAAO,CAAE,EAAEoF,EAAOO,CAAI,EAAE,CAAC,EAAE,GAAG,CAC3C,EACDI,EAAkB,CAChB,KAAMC,EAAM,EAAI,iBAAmB,mBACnC,MAAO,OAAO,OAAO,CAAE,EAAEZ,EAAOvF,CAAK,EAAE,CAAC,EAAE,KAAK,EAC/C,IAAAM,CACD,EACD0F,EAAO,CACL,KAAMG,EAAM,EAAI,aAAe,eAC/B,MAAO,OAAO,OAAO,CAAE,EAAEZ,EAAOO,CAAI,EAAE,CAAC,EAAE,GAAG,EAC5C,IAAK,OAAO,OAAO,CAAE,EAAEP,EAAOvF,CAAK,EAAE,CAAC,EAAE,KAAK,CAC9C,EACD+F,EAAQ,CACN,KAAMI,EAAM,EAAI,SAAW,WAC3B,MAAO,OAAO,OAAO,CAAA,EAAIF,EAAgB,KAAK,EAC9C,IAAK,OAAO,OAAO,CAAA,EAAIC,EAAgB,GAAG,CAC3C,EACDX,EAAOO,CAAI,EAAE,CAAC,EAAE,IAAM,OAAO,OAAO,CAAA,EAAIG,EAAgB,KAAK,EAC7DV,EAAOvF,CAAK,EAAE,CAAC,EAAE,MAAQ,OAAO,OAAO,CAAA,EAAIkG,EAAgB,GAAG,EAC9DE,EAAa,CAAE,EAEXb,EAAOO,CAAI,EAAE,CAAC,EAAE,IAAI,OAASP,EAAOO,CAAI,EAAE,CAAC,EAAE,MAAM,SACrDM,EAAa3F,EAAK2F,EAAY,CAC5B,CAAC,QAASb,EAAOO,CAAI,EAAE,CAAC,EAAGN,CAAO,EAClC,CAAC,OAAQD,EAAOO,CAAI,EAAE,CAAC,EAAGN,CAAO,CAC/C,CAAa,GAGHY,EAAa3F,EAAK2F,EAAY,CAC5B,CAAC,QAASL,EAAOP,CAAO,EACxB,CAAC,QAASS,EAAiBT,CAAO,EAClC,CAAC,OAAQS,EAAiBT,CAAO,EACjC,CAAC,QAASQ,EAAMR,CAAO,CACnC,CAAW,EAEDY,EAAa3F,EACX2F,EACAd,GACEE,EAAQ,OAAO,WAAW,WAAW,KACrCD,EAAO,MAAMO,EAAO,EAAG9F,CAAK,EAC5BwF,CACD,CACF,EAEDY,EAAa3F,EAAK2F,EAAY,CAC5B,CAAC,OAAQJ,EAAMR,CAAO,EACtB,CAAC,QAASU,EAAiBV,CAAO,EAClC,CAAC,OAAQU,EAAiBV,CAAO,EACjC,CAAC,OAAQO,EAAOP,CAAO,CACnC,CAAW,EAEGD,EAAOvF,CAAK,EAAE,CAAC,EAAE,IAAI,OAASuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,MAAM,QACvDqG,EAAS,EACTD,EAAa3F,EAAK2F,EAAY,CAC5B,CAAC,QAASb,EAAOvF,CAAK,EAAE,CAAC,EAAGwF,CAAO,EACnC,CAAC,OAAQD,EAAOvF,CAAK,EAAE,CAAC,EAAGwF,CAAO,CAChD,CAAa,GAEDa,EAAS,EAGXpG,GAAOsF,EAAQO,EAAO,EAAG9F,EAAQ8F,EAAO,EAAGM,CAAU,EACrDpG,EAAQ8F,EAAOM,EAAW,OAASC,EAAS,EAC5C,KACD,EAOP,IAFArG,EAAQ,GAED,EAAEA,EAAQuF,EAAO,QAClBA,EAAOvF,CAAK,EAAE,CAAC,EAAE,OAAS,sBAC5BuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,KAAO,QAI5B,OAAOuF,CACT,CAGA,SAASK,GAAkBrD,EAASC,EAAI,CACtC,MAAM+D,EAAmB,KAAK,OAAO,WAAW,iBAAiB,KAC3DpD,EAAW,KAAK,SAChB9B,EAASgE,GAAkBlC,CAAQ,EAGzC,IAAIqD,EACJ,OAAOrG,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,mBAAmB,EACjCiE,EAAStF,EACFuF,EAASvF,CAAI,CACrB,CAGD,SAASuF,EAASvF,EAAM,CACtB,GAAIA,IAASsF,EACX,OAAAjE,EAAQ,QAAQrB,CAAI,EACbuF,EAGT,MAAMpD,EAAQd,EAAQ,KAAK,mBAAmB,EACxCmE,EAAQrB,GAAkBnE,CAAI,EAC9B4E,EACJ,CAACY,GAAUA,IAAU,GAAKrF,GAAWkF,EAAiB,SAASrF,CAAI,EAC/DyF,EACJ,CAACtF,GAAWA,IAAW,GAAKqF,GAAUH,EAAiB,SAASpD,CAAQ,EAC1E,OAAAE,EAAM,MAAQ,GAAQmD,IAAW,GAAKV,EAAOA,IAASzE,GAAU,CAACsF,IACjEtD,EAAM,OAAS,GAAQmD,IAAW,GAAKG,EAAQA,IAAUD,GAAS,CAACZ,IAC5DtD,EAAGtB,CAAI,CACf,CACH,CAYA,SAASoF,GAAU/B,EAAO8B,EAAQ,CAChC9B,EAAM,QAAU8B,EAChB9B,EAAM,QAAU8B,EAChB9B,EAAM,cAAgB8B,CACxB,CC7NO,MAAMO,GAAW,CACtB,KAAM,WACN,SAAUC,EACZ,EAGA,SAASA,GAAiBtE,EAASC,EAAI4C,EAAK,CAC1C,IAAIxC,EAAO,EACX,OAAOzC,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,gBAAgB,EAC7BA,EAAQ,MAAM,kBAAkB,EACzBuD,CACR,CAGD,SAASA,EAAK5E,EAAM,CAClB,OAAIK,GAAWL,CAAI,GACjBqB,EAAQ,QAAQrB,CAAI,EACb4F,GAGFjF,GAAWX,CAAI,EAAI6F,EAAW7F,CAAI,EAAIkE,EAAIlE,CAAI,CACtD,CAGD,SAAS4F,EAAmB5F,EAAM,CAChC,OAAOA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMS,EAAkBT,CAAI,EACtE8F,EAAyB9F,CAAI,EAC7B6F,EAAW7F,CAAI,CACpB,CAGD,SAAS8F,EAAyB9F,EAAM,CACtC,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACb+F,IAIN/F,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMS,EAAkBT,CAAI,IACpE0B,IAAS,IAETL,EAAQ,QAAQrB,CAAI,EACb8F,GAGFD,EAAW7F,CAAI,CACvB,CAGD,SAAS+F,EAAU/F,EAAM,CACvB,OAAIA,IAAS,IACXqB,EAAQ,KAAK,kBAAkB,EACxBjC,EAAIY,CAAI,GAGbA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMY,GAAaZ,CAAI,EAC3DkE,EAAIlE,CAAI,GAGjBqB,EAAQ,QAAQrB,CAAI,EACb+F,EACR,CAGD,SAASF,EAAW7F,EAAM,CACxB,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACpB0B,EAAO,EACAsE,GAGLrF,GAAWX,CAAI,GACjBqB,EAAQ,QAAQrB,CAAI,EACb6F,GAGF3B,EAAIlE,CAAI,CAChB,CAGD,SAASgG,EAAiBhG,EAAM,CAC9B,OAAOS,EAAkBT,CAAI,EAAIiG,EAAWjG,CAAI,EAAIkE,EAAIlE,CAAI,CAC7D,CAGD,SAASiG,EAAWjG,EAAM,CACxB,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACpB0B,EAAO,EACAsE,GAGLhG,IAAS,IAEXqB,EAAQ,KAAK,kBAAkB,EAAE,KAAO,gBACjCjC,EAAIY,CAAI,GAGVkG,EAAWlG,CAAI,CACvB,CAGD,SAASkG,EAAWlG,EAAM,CACxB,OAAKA,IAAS,IAAMS,EAAkBT,CAAI,IAAM0B,IAAS,IACvDL,EAAQ,QAAQrB,CAAI,EACbA,IAAS,GAAKkG,EAAaD,GAG7B/B,EAAIlE,CAAI,CAChB,CAGD,SAASZ,EAAIY,EAAM,CACjB,OAAAqB,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,gBAAgB,EAC7BA,EAAQ,KAAK,UAAU,EAChBC,CACR,CACH,CClIO,MAAM6E,GAAY,CACvB,SAAUC,GACV,QAAS,EACX,EAGA,SAASA,GAAkB/E,EAASC,EAAI4C,EAAK,CAC3C,OAAO9C,EAAaC,EAASgF,EAAiB,YAAY,EAG1D,SAASA,EAAgBrG,EAAM,CAC7B,OAAOA,IAAS,MAAQc,EAAmBd,CAAI,EAAIsB,EAAGtB,CAAI,EAAIkE,EAAIlE,CAAI,CACvE,CACH,CCZO,MAAMsG,GAAa,CACxB,KAAM,aACN,SAAUC,GACV,aAAc,CACZ,SAAUC,EACX,EACD,KAAAC,EACF,EAGA,SAASF,GAAwBlF,EAASC,EAAI4C,EAAK,CACjD,MAAMzB,EAAO,KACb,OAAOxD,EAGP,SAASA,EAAMe,EAAM,CACnB,GAAIA,IAAS,GAAI,CACf,MAAM0G,EAAQjE,EAAK,eAEnB,OAAKiE,EAAM,OACTrF,EAAQ,MAAM,aAAc,CAC1B,WAAY,EACtB,CAAS,EACDqF,EAAM,KAAO,IAGfrF,EAAQ,MAAM,kBAAkB,EAChCA,EAAQ,MAAM,kBAAkB,EAChCA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,kBAAkB,EACxBmE,CACR,CAED,OAAOtB,EAAIlE,CAAI,CAChB,CAGD,SAASwF,EAAMxF,EAAM,CACnB,OAAIe,EAAcf,CAAI,GACpBqB,EAAQ,MAAM,4BAA4B,EAC1CA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,4BAA4B,EACzCA,EAAQ,KAAK,kBAAkB,EACxBC,IAGTD,EAAQ,KAAK,kBAAkB,EACxBC,EAAGtB,CAAI,EACf,CACH,CAGA,SAASwG,GAA+BnF,EAASC,EAAI4C,EAAK,CACxD,OAAO9C,EACLC,EACAA,EAAQ,QAAQiF,GAAYhF,EAAI4C,CAAG,EACnC,aACA,KAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EAAI,OAAY,CAC5E,CACH,CAGA,SAASuC,GAAKpF,EAAS,CACrBA,EAAQ,KAAK,YAAY,CAC3B,CClEO,MAAMsF,GAAkB,CAC7B,KAAM,kBACN,SAAUC,EACZ,EAGA,SAASA,GAAwBvF,EAASC,EAAI4C,EAAK,CACjD,OAAOjF,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,MAAM,cAAc,EAC5BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,cAAc,EACpBuD,CACR,CAGD,SAASA,EAAK5E,EAAM,CAClB,OAAIU,GAAiBV,CAAI,GACvBqB,EAAQ,MAAM,sBAAsB,EACpCA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,sBAAsB,EACnCA,EAAQ,KAAK,iBAAiB,EACvBC,GAGF4C,EAAIlE,CAAI,CAChB,CACH,CClCA,MAAM6G,GAAU,SAAS,cAAc,GAAG,EAMnC,SAASC,GAA8B1I,EAAO,CACnD,MAAM2I,EAAqB,IAAM3I,EAAQ,IACzCyI,GAAQ,UAAYE,EACpB,MAAMC,EAAOH,GAAQ,YAUrB,OAAIG,EAAK,WAAWA,EAAK,OAAS,CAAC,IAAM,IAAgB5I,IAAU,QAQ5D4I,IAASD,EAPP,GAOoCC,CAC/C,CCjBO,MAAMD,GAAqB,CAChC,KAAM,qBACN,SAAUE,EACZ,EAGA,SAASA,GAA2B5F,EAASC,EAAI4C,EAAK,CACpD,MAAMzB,EAAO,KACb,IAAIf,EAAO,EAGPF,EAGA0F,EACJ,OAAOjI,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,oBAAoB,EAClCA,EAAQ,MAAM,0BAA0B,EACxCA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,0BAA0B,EAChCuD,CACR,CAGD,SAASA,EAAK5E,EAAM,CAClB,OAAIA,IAAS,IACXqB,EAAQ,MAAM,iCAAiC,EAC/CA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,iCAAiC,EACvC8F,IAGT9F,EAAQ,MAAM,yBAAyB,EACvCG,EAAM,GACN0F,EAAOzG,EACArC,EAAM4B,CAAI,EAClB,CAGD,SAASmH,EAAQnH,EAAM,CACrB,OAAIA,IAAS,IAAMA,IAAS,KAC1BqB,EAAQ,MAAM,qCAAqC,EACnDA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,qCAAqC,EAClDA,EAAQ,MAAM,yBAAyB,EACvCG,EAAM,EACN0F,EAAO1G,GACApC,IAGTiD,EAAQ,MAAM,yBAAyB,EACvCG,EAAM,EACN0F,EAAO3G,GACAnC,EAAM4B,CAAI,EAClB,CAGD,SAAS5B,EAAM4B,EAAM,CAEnB,IAAImC,EAEJ,OAAInC,IAAS,IAAM0B,GACjBS,EAAQd,EAAQ,KAAK,yBAAyB,EAG5C6F,IAASzG,GACT,CAACqG,GAA8BrE,EAAK,eAAeN,CAAK,CAAC,EAElD+B,EAAIlE,CAAI,GAGjBqB,EAAQ,MAAM,0BAA0B,EACxCA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,0BAA0B,EACvCA,EAAQ,KAAK,oBAAoB,EAC1BC,IAGL4F,EAAKlH,CAAI,GAAK0B,IAASF,GACzBH,EAAQ,QAAQrB,CAAI,EACb5B,GAGF8F,EAAIlE,CAAI,CAChB,CACH,CC1FO,MAAMoH,GAAa,CACxB,KAAM,aACN,SAAUC,GACV,SAAU,EACZ,EAGA,SAASA,GAAmBhG,EAASC,EAAI4C,EAAK,CAC5C,MAAMzB,EAAO,KAGP6E,EAAwB,CAC5B,SAAUC,EACV,QAAS,EACV,EAGKC,EAAc,CAClB,SAAUC,EACV,QAAS,EACV,EACKC,EAAO,KAAK,OAAO,KAAK,OAAO,OAAS,CAAC,EACzCC,EACJD,GAAQA,EAAK,CAAC,EAAE,OAAS,aACrBA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,OACtC,EACN,IAAIE,EAAW,EAGXtC,EACJ,OAAOrG,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,MAAM,yBAAyB,EACvCiE,EAAStF,EACF6H,EAAa7H,CAAI,CACzB,CAGD,SAAS6H,EAAa7H,EAAM,CAC1B,OAAIA,IAASsF,GACXjE,EAAQ,QAAQrB,CAAI,EACpB4H,IACOC,IAGTxG,EAAQ,KAAK,yBAAyB,EAC/BuG,EAAW,EACd1D,EAAIlE,CAAI,EACRoB,EAAaC,EAASyG,EAAU,YAAY,EAAE9H,CAAI,EACvD,CAGD,SAAS8H,EAAS9H,EAAM,CACtB,OAAIA,IAAS,MAAQc,EAAmBd,CAAI,EACnC+H,EAAU/H,CAAI,GAGvBqB,EAAQ,MAAM,qBAAqB,EACnCA,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACnB,CAAK,EACM2G,EAAKhI,CAAI,EACjB,CAGD,SAASgI,EAAKhI,EAAM,CAClB,OAAIA,IAAS,MAAQa,EAA0Bb,CAAI,GACjDqB,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,qBAAqB,EAC3BD,EAAaC,EAAS4G,EAAW,YAAY,EAAEjI,CAAI,GAGxDA,IAAS,IAAMA,IAASsF,EAAepB,EAAIlE,CAAI,GACnDqB,EAAQ,QAAQrB,CAAI,EACbgI,EACR,CAGD,SAASC,EAAUjI,EAAM,CACvB,OAAIA,IAAS,MAAQc,EAAmBd,CAAI,EACnC+H,EAAU/H,CAAI,GAGvBqB,EAAQ,MAAM,qBAAqB,EACnCA,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACnB,CAAK,EACM6G,EAAKlI,CAAI,EACjB,CAGD,SAASkI,EAAKlI,EAAM,CAClB,OAAIA,IAAS,MAAQc,EAAmBd,CAAI,GAC1CqB,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,qBAAqB,EAC3B0G,EAAU/H,CAAI,GAGnBA,IAAS,IAAMA,IAASsF,EAAepB,EAAIlE,CAAI,GACnDqB,EAAQ,QAAQrB,CAAI,EACbkI,EACR,CAGD,SAASH,EAAU/H,EAAM,CACvB,OAAAqB,EAAQ,KAAK,iBAAiB,EACvBoB,EAAK,UAAYnB,EAAGtB,CAAI,EAAI8B,EAAa9B,CAAI,CACrD,CAGD,SAAS8B,EAAa9B,EAAM,CAC1B,OAAIA,IAAS,KACJwF,EAAMxF,CAAI,EAGfc,EAAmBd,CAAI,EAClBqB,EAAQ,QACbmG,EACAnG,EAAQ,QACNiG,EACA9B,EACAmC,EACIvG,EACEC,EACAS,EACA,aACA6F,EAAgB,CACjB,EACD7F,CACL,EACD0D,CACD,EAACxF,CAAI,GAGRqB,EAAQ,MAAM,eAAe,EACtB8G,EAAgBnI,CAAI,EAC5B,CAGD,SAASmI,EAAgBnI,EAAM,CAC7B,OAAIA,IAAS,MAAQc,EAAmBd,CAAI,GAC1CqB,EAAQ,KAAK,eAAe,EACrBS,EAAa9B,CAAI,IAG1BqB,EAAQ,QAAQrB,CAAI,EACbmI,EACR,CAGD,SAAS3C,EAAMxF,EAAM,CACnB,OAAAqB,EAAQ,KAAK,YAAY,EAClBC,EAAGtB,CAAI,CACf,CAGD,SAASyH,EAAoBpG,EAASC,EAAI4C,EAAK,CAC7C,MAAMzB,EAAO,KACb,OAAOxD,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,YAAY,EAClBa,CACR,CAGD,SAASA,EAAUlC,EAAM,CACvB,OAAOyC,EAAK,OAAO,KAAKA,EAAK,IAAG,EAAG,IAAI,EAAIyB,EAAIlE,CAAI,EAAIsB,EAAGtB,CAAI,CAC/D,CACF,CAGD,SAASuH,EAAqBlG,EAASC,EAAI4C,EAAK,CAC9C,IAAIxC,EAAO,EACX,OAAON,EACLC,EACA+G,EACA,aACA,KAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EACvD,OACA,CACL,EAGD,SAASA,EAAqBpI,EAAM,CAClC,OAAAqB,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,MAAM,yBAAyB,EAChC2D,EAAgBhF,CAAI,CAC5B,CAGD,SAASgF,EAAgBhF,EAAM,CAC7B,OAAIA,IAASsF,GACXjE,EAAQ,QAAQrB,CAAI,EACpB0B,IACOsD,GAGLtD,EAAOkG,EAAiB1D,EAAIlE,CAAI,GACpCqB,EAAQ,KAAK,yBAAyB,EAC/BD,EAAaC,EAASgH,EAAoB,YAAY,EAAErI,CAAI,EACpE,CAGD,SAASqI,EAAmBrI,EAAM,CAChC,OAAIA,IAAS,MAAQc,EAAmBd,CAAI,GAC1CqB,EAAQ,KAAK,iBAAiB,EACvBC,EAAGtB,CAAI,GAGTkE,EAAIlE,CAAI,CAChB,CACF,CACH,CC9NO,MAAMsI,GAAe,CAC1B,KAAM,eACN,SAAUC,EACZ,EAGMC,GAAkB,CACtB,SAAUC,GACV,QAAS,EACX,EAGA,SAASF,GAAqBlH,EAASC,EAAI4C,EAAK,CAC9C,MAAMzB,EAAO,KACb,OAAOxD,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,cAAc,EACrBD,EAAaC,EAASqH,EAAkB,aAAc,EAAI,CAAC,EAAE1I,CAAI,CACzE,CAGD,SAAS0I,EAAiB1I,EAAM,CAC9B,MAAM0H,EAAOjF,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,OAAOiF,GACLA,EAAK,CAAC,EAAE,OAAS,cACjBA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,QAAU,EAC9CiB,EAAY3I,CAAI,EAChBkE,EAAIlE,CAAI,CACb,CAGD,SAAS2I,EAAY3I,EAAM,CACzB,OAAIA,IAAS,KACJwF,EAAMxF,CAAI,EAGfc,EAAmBd,CAAI,EAClBqB,EAAQ,QAAQmH,GAAiBG,EAAanD,CAAK,EAAExF,CAAI,GAGlEqB,EAAQ,MAAM,eAAe,EACtBO,EAAQ5B,CAAI,EACpB,CAGD,SAAS4B,EAAQ5B,EAAM,CACrB,OAAIA,IAAS,MAAQc,EAAmBd,CAAI,GAC1CqB,EAAQ,KAAK,eAAe,EACrBsH,EAAY3I,CAAI,IAGzBqB,EAAQ,QAAQrB,CAAI,EACb4B,EACR,CAGD,SAAS4D,EAAMxF,EAAM,CACnB,OAAAqB,EAAQ,KAAK,cAAc,EACpBC,EAAGtB,CAAI,CACf,CACH,CAGA,SAASyI,GAAwBpH,EAASC,EAAI4C,EAAK,CACjD,MAAMzB,EAAO,KACb,OAAOxD,EAGP,SAASA,EAAMe,EAAM,CAEnB,OAAIyC,EAAK,OAAO,KAAKA,EAAK,IAAG,EAAG,IAAI,EAC3ByB,EAAIlE,CAAI,EAGbc,EAAmBd,CAAI,GACzBqB,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,YAAY,EAClBpC,GAGFmC,EAAaC,EAASsH,EAAa,aAAc,EAAI,CAAC,EAAE3I,CAAI,CACpE,CAGD,SAAS2I,EAAY3I,EAAM,CACzB,MAAM0H,EAAOjF,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,OAAOiF,GACLA,EAAK,CAAC,EAAE,OAAS,cACjBA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,QAAU,EAC9CpG,EAAGtB,CAAI,EACPc,EAAmBd,CAAI,EACvBf,EAAMe,CAAI,EACVkE,EAAIlE,CAAI,CACb,CACH,CCjGO,MAAM4I,GAAW,CACtB,KAAM,WACN,SAAUC,GACV,QAASC,GACT,SAAA7G,EACF,EAGA,SAAS6G,GAAgBzE,EAAQ,CAC/B,IAAI0E,EAAgB1E,EAAO,OAAS,EAChC2E,EAAiB,EAGjBlK,EAGAmK,EAEJ,IACG5E,EAAO2E,CAAc,EAAE,CAAC,EAAE,OAAS,cAClC3E,EAAO2E,CAAc,EAAE,CAAC,EAAE,OAAS,WACpC3E,EAAO0E,CAAa,EAAE,CAAC,EAAE,OAAS,cACjC1E,EAAO0E,CAAa,EAAE,CAAC,EAAE,OAAS,UAIpC,IAFAjK,EAAQkK,EAED,EAAElK,EAAQiK,GACf,GAAI1E,EAAOvF,CAAK,EAAE,CAAC,EAAE,OAAS,eAAgB,CAE5CuF,EAAO2E,CAAc,EAAE,CAAC,EAAE,KAAO,kBACjC3E,EAAO0E,CAAa,EAAE,CAAC,EAAE,KAAO,kBAChCC,GAAkB,EAClBD,GAAiB,EACjB,KACD,EAOL,IAHAjK,EAAQkK,EAAiB,EACzBD,IAEO,EAAEjK,GAASiK,GACZE,IAAU,OACRnK,IAAUiK,GAAiB1E,EAAOvF,CAAK,EAAE,CAAC,EAAE,OAAS,eACvDmK,EAAQnK,IAGVA,IAAUiK,GACV1E,EAAOvF,CAAK,EAAE,CAAC,EAAE,OAAS,gBAE1BuF,EAAO4E,CAAK,EAAE,CAAC,EAAE,KAAO,eAEpBnK,IAAUmK,EAAQ,IACpB5E,EAAO4E,CAAK,EAAE,CAAC,EAAE,IAAM5E,EAAOvF,EAAQ,CAAC,EAAE,CAAC,EAAE,IAC5CuF,EAAO,OAAO4E,EAAQ,EAAGnK,EAAQmK,EAAQ,CAAC,EAC1CF,GAAiBjK,EAAQmK,EAAQ,EACjCnK,EAAQmK,EAAQ,GAGlBA,EAAQ,QAIZ,OAAO5E,CACT,CAGA,SAASpC,GAASjC,EAAM,CAEtB,OACEA,IAAS,IACT,KAAK,OAAO,KAAK,OAAO,OAAS,CAAC,EAAE,CAAC,EAAE,OAAS,iBAEpD,CAGA,SAAS6I,GAAiBxH,EAASC,EAAI4C,EAAK,CAE1C,IAAI0D,EAAW,EAGXlG,EAGAS,EACJ,OAAOlD,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,kBAAkB,EACzB0D,EAAgB/E,CAAI,CAC5B,CAGD,SAAS+E,EAAgB/E,EAAM,CAC7B,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACpB4H,IACO7C,IAGT1D,EAAQ,KAAK,kBAAkB,EACxB6H,EAAIlJ,CAAI,EAChB,CAGD,SAASkJ,EAAIlJ,EAAM,CAEjB,OAAIA,IAAS,KACJkE,EAAIlE,CAAI,EAIbA,IAAS,IACXmC,EAAQd,EAAQ,MAAM,kBAAkB,EACxCK,EAAO,EACAsD,EAAgBhF,CAAI,GAGzBA,IAAS,IACXqB,EAAQ,MAAM,OAAO,EACrBA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,OAAO,EACb6H,GAGLpI,EAAmBd,CAAI,GACzBqB,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,YAAY,EAClB6H,IAGT7H,EAAQ,MAAM,cAAc,EACrBe,EAAKpC,CAAI,EACjB,CAID,SAASoC,EAAKpC,EAAM,CAClB,OACEA,IAAS,MACTA,IAAS,IACTA,IAAS,IACTc,EAAmBd,CAAI,GAEvBqB,EAAQ,KAAK,cAAc,EACpB6H,EAAIlJ,CAAI,IAGjBqB,EAAQ,QAAQrB,CAAI,EACboC,EACR,CAID,SAAS4C,EAAgBhF,EAAM,CAE7B,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACpB0B,IACOsD,GAGLtD,IAASkG,GACXvG,EAAQ,KAAK,kBAAkB,EAC/BA,EAAQ,KAAK,UAAU,EAChBC,EAAGtB,CAAI,IAGhBmC,EAAM,KAAO,eACNC,EAAKpC,CAAI,EACjB,CACH,CC5KO,SAASmJ,GAAY9E,EAAQ,CAElC,MAAM+E,EAAQ,CAAE,EAChB,IAAItK,EAAQ,GAGRuK,EAGAC,EAGAC,EAGAC,EAGAlK,EAGAmK,EAGAC,EAEJ,KAAO,EAAE5K,EAAQuF,EAAO,QAAQ,CAC9B,KAAOvF,KAASsK,GACdtK,EAAQsK,EAAMtK,CAAK,EAMrB,GAHAuK,EAAQhF,EAAOvF,CAAK,EAIlBA,GACAuK,EAAM,CAAC,EAAE,OAAS,aAClBhF,EAAOvF,EAAQ,CAAC,EAAE,CAAC,EAAE,OAAS,mBAE9B2K,EAAYJ,EAAM,CAAC,EAAE,WAAW,OAChCE,EAAa,EAGXA,EAAaE,EAAU,QACvBA,EAAUF,CAAU,EAAE,CAAC,EAAE,OAAS,oBAElCA,GAAc,GAIdA,EAAaE,EAAU,QACvBA,EAAUF,CAAU,EAAE,CAAC,EAAE,OAAS,WAElC,KAAO,EAAEA,EAAaE,EAAU,QAC1BA,EAAUF,CAAU,EAAE,CAAC,EAAE,OAAS,WAIlCE,EAAUF,CAAU,EAAE,CAAC,EAAE,OAAS,cACpCE,EAAUF,CAAU,EAAE,CAAC,EAAE,4BAA8B,GACvDA,KAMR,GAAIF,EAAM,CAAC,IAAM,QACXA,EAAM,CAAC,EAAE,cACX,OAAO,OAAOD,EAAOO,GAAWtF,EAAQvF,CAAK,CAAC,EAC9CA,EAAQsK,EAAMtK,CAAK,EACnB4K,EAAO,YAGFL,EAAM,CAAC,EAAE,WAAY,CAI5B,IAHAE,EAAazK,EACbwK,EAAY,OAELC,MACLC,EAAanF,EAAOkF,CAAU,EAG5BC,EAAW,CAAC,EAAE,OAAS,cACvBA,EAAW,CAAC,EAAE,OAAS,oBAEnBA,EAAW,CAAC,IAAM,UAChBF,IACFjF,EAAOiF,CAAS,EAAE,CAAC,EAAE,KAAO,mBAG9BE,EAAW,CAAC,EAAE,KAAO,aACrBF,EAAYC,GAOdD,IAEFD,EAAM,CAAC,EAAE,IAAM,OAAO,OAAO,GAAIhF,EAAOiF,CAAS,EAAE,CAAC,EAAE,KAAK,EAE3DhK,EAAa+E,EAAO,MAAMiF,EAAWxK,CAAK,EAC1CQ,EAAW,QAAQ+J,CAAK,EACxBtK,GAAOsF,EAAQiF,EAAWxK,EAAQwK,EAAY,EAAGhK,CAAU,EAE9D,CACF,CAED,MAAO,CAACoK,CACV,CASA,SAASC,GAAWtF,EAAQuF,EAAY,CACtC,MAAMzH,EAAQkC,EAAOuF,CAAU,EAAE,CAAC,EAC5BtF,EAAUD,EAAOuF,CAAU,EAAE,CAAC,EACpC,IAAIC,EAAgBD,EAAa,EAGjC,MAAME,EAAiB,CAAE,EACnBC,EACJ5H,EAAM,YAAcmC,EAAQ,OAAOnC,EAAM,WAAW,EAAEA,EAAM,KAAK,EAC7D6H,EAAcD,EAAU,OAGxBX,EAAQ,CAAE,EAGVa,EAAO,CAAE,EAGf,IAAIlG,EAGA9B,EACAnD,EAAQ,GAGRoL,EAAU/H,EACVgI,EAAS,EACTlL,EAAQ,EACZ,MAAMmL,EAAS,CAACnL,CAAK,EAGrB,KAAOiL,GAAS,CAEd,KAAO7F,EAAO,EAAEwF,CAAa,EAAE,CAAC,IAAMK,GAAS,CAI/CJ,EAAe,KAAKD,CAAa,EAE5BK,EAAQ,aACXnG,EAASO,EAAQ,YAAY4F,CAAO,EAE/BA,EAAQ,MACXnG,EAAO,KAAK,IAAI,EAGd9B,GACF8H,EAAU,WAAWG,EAAQ,KAAK,EAGhCA,EAAQ,8BACVH,EAAU,mCAAqC,IAGjDA,EAAU,MAAMhG,CAAM,EAElBmG,EAAQ,8BACVH,EAAU,mCAAqC,SAInD9H,EAAWiI,EACXA,EAAUA,EAAQ,IACnB,CAKD,IAFAA,EAAU/H,EAEH,EAAErD,EAAQkL,EAAY,QAGzBA,EAAYlL,CAAK,EAAE,CAAC,IAAM,QAC1BkL,EAAYlL,EAAQ,CAAC,EAAE,CAAC,IAAM,SAC9BkL,EAAYlL,CAAK,EAAE,CAAC,EAAE,OAASkL,EAAYlL,EAAQ,CAAC,EAAE,CAAC,EAAE,MACzDkL,EAAYlL,CAAK,EAAE,CAAC,EAAE,MAAM,OAASkL,EAAYlL,CAAK,EAAE,CAAC,EAAE,IAAI,OAE/DG,EAAQH,EAAQ,EAChBsL,EAAO,KAAKnL,CAAK,EAEjBiL,EAAQ,WAAa,OACrBA,EAAQ,SAAW,OACnBA,EAAUA,EAAQ,MAmBtB,IAfAH,EAAU,OAAS,CAAE,EAIjBG,GAEFA,EAAQ,WAAa,OACrBA,EAAQ,SAAW,QAEnBE,EAAO,IAAK,EAIdtL,EAAQsL,EAAO,OAERtL,KAAS,CACd,MAAMuL,EAAQL,EAAY,MAAMI,EAAOtL,CAAK,EAAGsL,EAAOtL,EAAQ,CAAC,CAAC,EAC1DG,EAAQ6K,EAAe,IAAK,EAClCV,EAAM,QAAQ,CAACnK,EAAOA,EAAQoL,EAAM,OAAS,CAAC,CAAC,EAC/CtL,GAAOsF,EAAQpF,EAAO,EAAGoL,CAAK,CAC/B,CAID,IAFAvL,EAAQ,GAED,EAAEA,EAAQsK,EAAM,QACrBa,EAAKE,EAASf,EAAMtK,CAAK,EAAE,CAAC,CAAC,EAAIqL,EAASf,EAAMtK,CAAK,EAAE,CAAC,EACxDqL,GAAUf,EAAMtK,CAAK,EAAE,CAAC,EAAIsK,EAAMtK,CAAK,EAAE,CAAC,EAAI,EAGhD,OAAOmL,CACT,CCvOO,MAAMrI,GAAU,CACrB,SAAU0I,GACV,QAASC,EACX,EAGMC,GAAwB,CAC5B,SAAUC,GACV,QAAS,EACX,EAQA,SAASF,GAAelG,EAAQ,CAC9B,OAAA8E,GAAY9E,CAAM,EACXA,CACT,CAGA,SAASiG,GAAgBjJ,EAASC,EAAI,CAEpC,IAAIW,EACJ,OAAOhD,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,SAAS,EACvBY,EAAWZ,EAAQ,MAAM,eAAgB,CACvC,YAAa,SACnB,CAAK,EACMe,EAAKpC,CAAI,CACjB,CAGD,SAASoC,EAAKpC,EAAM,CAClB,OAAIA,IAAS,KACJ0K,EAAW1K,CAAI,EAGpBc,EAAmBd,CAAI,EAClBqB,EAAQ,MACbmJ,GACArC,EACAuC,CACD,EAAC1K,CAAI,GAGRqB,EAAQ,QAAQrB,CAAI,EACboC,EACR,CAGD,SAASsI,EAAW1K,EAAM,CACxB,OAAAqB,EAAQ,KAAK,cAAc,EAC3BA,EAAQ,KAAK,SAAS,EACfC,EAAGtB,CAAI,CACf,CAGD,SAASmI,EAAgBnI,EAAM,CAC7B,OAAAqB,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,cAAc,EAC3BY,EAAS,KAAOZ,EAAQ,MAAM,eAAgB,CAC5C,YAAa,UACb,SAAAY,CACN,CAAK,EACDA,EAAWA,EAAS,KACbG,CACR,CACH,CAGA,SAASqI,GAAqBpJ,EAASC,EAAI4C,EAAK,CAC9C,MAAMzB,EAAO,KACb,OAAOkI,EAGP,SAASA,EAAe3K,EAAM,CAC5B,OAAAqB,EAAQ,KAAK,cAAc,EAC3BA,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,YAAY,EAClBD,EAAaC,EAASuJ,EAAU,YAAY,CACpD,CAGD,SAASA,EAAS5K,EAAM,CACtB,GAAIA,IAAS,MAAQc,EAAmBd,CAAI,EAC1C,OAAOkE,EAAIlE,CAAI,EAGjB,MAAM0H,EAAOjF,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAE/C,MACE,CAACA,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,GAC5DiF,GACAA,EAAK,CAAC,EAAE,OAAS,cACjBA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,QAAU,EAEzCpG,EAAGtB,CAAI,EAGTqB,EAAQ,UAAUoB,EAAK,OAAO,WAAW,KAAMyB,EAAK5C,CAAE,EAAEtB,CAAI,CACpE,CACH,CCpGO,SAAS6K,GACdxJ,EACAC,EACA4C,EACA3C,EACAuJ,EACAC,EACAC,EACAC,EACAzJ,EACA,CACA,MAAMC,EAAQD,GAAO,OAAO,kBAC5B,IAAI0J,EAAU,EACd,OAAOjM,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAIA,IAAS,IACXqB,EAAQ,MAAME,CAAI,EAClBF,EAAQ,MAAMyJ,CAAW,EACzBzJ,EAAQ,MAAM0J,CAAiB,EAC/B1J,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK0J,CAAiB,EACvBI,GAGLnL,IAAS,MAAQA,IAAS,IAAMY,GAAaZ,CAAI,EAC5CkE,EAAIlE,CAAI,GAGjBqB,EAAQ,MAAME,CAAI,EAClBF,EAAQ,MAAM2J,CAAO,EACrB3J,EAAQ,MAAM4J,CAAU,EACxB5J,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACnB,CAAK,EACM+J,EAAepL,CAAI,EAC3B,CAGD,SAASmL,EAA0BnL,EAAM,CACvC,OAAIA,IAAS,IACXqB,EAAQ,MAAM0J,CAAiB,EAC/B1J,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK0J,CAAiB,EAC9B1J,EAAQ,KAAKyJ,CAAW,EACxBzJ,EAAQ,KAAKE,CAAI,EACVD,IAGTD,EAAQ,MAAM4J,CAAU,EACxB5J,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACnB,CAAK,EACMgK,EAAoBrL,CAAI,EAChC,CAGD,SAASqL,EAAoBrL,EAAM,CACjC,OAAIA,IAAS,IACXqB,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK4J,CAAU,EAChBE,EAA0BnL,CAAI,GAGnCA,IAAS,MAAQA,IAAS,IAAMc,EAAmBd,CAAI,EAClDkE,EAAIlE,CAAI,GAGjBqB,EAAQ,QAAQrB,CAAI,EACbA,IAAS,GAAKsL,EAA4BD,EAClD,CAGD,SAASC,EAA0BtL,EAAM,CACvC,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IACzCqB,EAAQ,QAAQrB,CAAI,EACbqL,GAGFA,EAAoBrL,CAAI,CAChC,CAGD,SAASoL,EAAepL,EAAM,CAC5B,OAAIA,IAAS,GACP,EAAEkL,EAAUzJ,EAAcyC,EAAIlE,CAAI,GACtCqB,EAAQ,QAAQrB,CAAI,EACboL,GAGLpL,IAAS,GACNkL,KAQL7J,EAAQ,QAAQrB,CAAI,EACboL,IARL/J,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK4J,CAAU,EACvB5J,EAAQ,KAAK2J,CAAO,EACpB3J,EAAQ,KAAKE,CAAI,EACVD,EAAGtB,CAAI,GAOdA,IAAS,MAAQa,EAA0Bb,CAAI,EAC7CkL,EAAgBhH,EAAIlE,CAAI,GAC5BqB,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK4J,CAAU,EACvB5J,EAAQ,KAAK2J,CAAO,EACpB3J,EAAQ,KAAKE,CAAI,EACVD,EAAGtB,CAAI,GAGZY,GAAaZ,CAAI,EAAUkE,EAAIlE,CAAI,GACvCqB,EAAQ,QAAQrB,CAAI,EACbA,IAAS,GAAKuL,EAAuBH,EAC7C,CAGD,SAASG,EAAqBvL,EAAM,CAClC,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IACzCqB,EAAQ,QAAQrB,CAAI,EACboL,GAGFA,EAAepL,CAAI,CAC3B,CACH,CCpIO,SAASwL,GAAanK,EAASC,EAAI4C,EAAK3C,EAAMkK,EAAYR,EAAY,CAC3E,MAAMxI,EAAO,KACb,IAAIf,EAAO,EAGPU,EACJ,OAAOnD,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAME,CAAI,EAClBF,EAAQ,MAAMoK,CAAU,EACxBpK,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAKoK,CAAU,EACvBpK,EAAQ,MAAM4J,CAAU,EACjBS,CACR,CAGD,SAASA,EAAQ1L,EAAM,CACrB,OACEA,IAAS,MACTA,IAAS,IACRA,IAAS,IAAM,CAACoC,GAQhBpC,IAAS,IACR,CAAC0B,GACD,2BAA4Be,EAAK,OAAO,YAC1Cf,EAAO,IAEAwC,EAAIlE,CAAI,EAGbA,IAAS,IACXqB,EAAQ,KAAK4J,CAAU,EACvB5J,EAAQ,MAAMoK,CAAU,EACxBpK,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAKoK,CAAU,EACvBpK,EAAQ,KAAKE,CAAI,EACVD,GAGLR,EAAmBd,CAAI,GACzBqB,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,YAAY,EAClBqK,IAGTrK,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACnB,CAAK,EACMsK,EAAM3L,CAAI,EAClB,CAGD,SAAS2L,EAAM3L,EAAM,CACnB,OACEA,IAAS,MACTA,IAAS,IACTA,IAAS,IACTc,EAAmBd,CAAI,GACvB0B,IAAS,KAETL,EAAQ,KAAK,aAAa,EACnBqK,EAAQ1L,CAAI,IAGrBqB,EAAQ,QAAQrB,CAAI,EACpBoC,EAAOA,GAAQ,CAACrB,EAAcf,CAAI,EAC3BA,IAAS,GAAK4L,EAAcD,EACpC,CAGD,SAASC,EAAY5L,EAAM,CACzB,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IACzCqB,EAAQ,QAAQrB,CAAI,EACpB0B,IACOiK,GAGFA,EAAM3L,CAAI,CAClB,CACH,CCzFO,SAAS6L,GAAaxK,EAASC,EAAI4C,EAAK3C,EAAMkK,EAAYR,EAAY,CAE3E,IAAI3F,EACJ,OAAOrG,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAME,CAAI,EAClBF,EAAQ,MAAMoK,CAAU,EACxBpK,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAKoK,CAAU,EACvBnG,EAAStF,IAAS,GAAK,GAAKA,EACrB8L,CACR,CAGD,SAASA,EAAkB9L,EAAM,CAC/B,OAAIA,IAASsF,GACXjE,EAAQ,MAAMoK,CAAU,EACxBpK,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAKoK,CAAU,EACvBpK,EAAQ,KAAKE,CAAI,EACVD,IAGTD,EAAQ,MAAM4J,CAAU,EACjBc,EAAa/L,CAAI,EACzB,CAGD,SAAS+L,EAAa/L,EAAM,CAC1B,OAAIA,IAASsF,GACXjE,EAAQ,KAAK4J,CAAU,EAChBa,EAAkBxG,CAAM,GAG7BtF,IAAS,KACJkE,EAAIlE,CAAI,EAGbc,EAAmBd,CAAI,GACzBqB,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,YAAY,EAClBD,EAAaC,EAAS0K,EAAc,YAAY,IAGzD1K,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACnB,CAAK,EACM2K,EAAMhM,CAAI,EAClB,CAGD,SAASgM,EAAMhM,EAAM,CACnB,OAAIA,IAASsF,GAAUtF,IAAS,MAAQc,EAAmBd,CAAI,GAC7DqB,EAAQ,KAAK,aAAa,EACnB0K,EAAa/L,CAAI,IAG1BqB,EAAQ,QAAQrB,CAAI,EACbA,IAAS,GAAKiM,EAAcD,EACpC,CAGD,SAASC,EAAYjM,EAAM,CACzB,OAAIA,IAASsF,GAAUtF,IAAS,IAC9BqB,EAAQ,QAAQrB,CAAI,EACbgM,GAGFA,EAAMhM,CAAI,CAClB,CACH,CChFO,SAASkM,GAAkB7K,EAASC,EAAI,CAE7C,IAAI0C,EACJ,OAAO/E,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAIc,EAAmBd,CAAI,GACzBqB,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,YAAY,EACzB2C,EAAO,GACA/E,GAGL8B,EAAcf,CAAI,EACboB,EACLC,EACApC,EACA+E,EAAO,aAAe,YACvB,EAAChE,CAAI,EAGDsB,EAAGtB,CAAI,CACf,CACH,CC9BO,SAASmM,GAAoB/N,EAAO,CACzC,OACEA,EACG,QAAQ,cAAe,GAAG,EAC1B,QAAQ,SAAU,EAAE,EAMpB,YAAa,EACb,YAAa,CAEpB,CCFO,MAAMgO,GAAa,CACxB,KAAM,aACN,SAAUC,EACZ,EAGMC,GAAiB,CACrB,SAAUC,GACV,QAAS,EACX,EAGA,SAASF,GAAmBhL,EAASC,EAAI4C,EAAK,CAC5C,MAAMzB,EAAO,KAGb,IAAI+J,EACJ,OAAOvN,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,YAAY,EACnBmK,GAAa,KAClB/I,EACApB,EACAoL,EACAvI,EACA,kBACA,wBACA,uBACD,EAAClE,CAAI,CACP,CAGD,SAASyM,EAAWzM,EAAM,CAKxB,OAJAwM,EAAaL,GACX1J,EAAK,eAAeA,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAG,EAAE,CACxE,EAEGzC,IAAS,IACXqB,EAAQ,MAAM,kBAAkB,EAChCA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,kBAAkB,EAExB6K,GACL7K,EACAwJ,GACExJ,EACAA,EAAQ,QACNiL,GACAlL,EAAaC,EAASmE,EAAO,YAAY,EACzCpE,EAAaC,EAASmE,EAAO,YAAY,CAC1C,EACDtB,EACA,wBACA,+BACA,qCACA,2BACA,6BACD,CACF,GAGIA,EAAIlE,CAAI,CAChB,CAGD,SAASwF,EAAMxF,EAAM,CACnB,OAAIA,IAAS,MAAQc,EAAmBd,CAAI,GAC1CqB,EAAQ,KAAK,YAAY,EAEpBoB,EAAK,OAAO,QAAQ,SAAS+J,CAAU,GAC1C/J,EAAK,OAAO,QAAQ,KAAK+J,CAAU,EAG9BlL,EAAGtB,CAAI,GAGTkE,EAAIlE,CAAI,CAChB,CACH,CAGA,SAASuM,GAAclL,EAASC,EAAI4C,EAAK,CACvC,OAAOjF,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAOa,EAA0Bb,CAAI,EACjCkM,GAAkB7K,EAASlB,CAAM,EAAEH,CAAI,EACvCkE,EAAIlE,CAAI,CACb,CAGD,SAASG,EAAOH,EAAM,CACpB,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,GAClC6L,GACLxK,EACAD,EAAaC,EAASmE,EAAO,YAAY,EACzCtB,EACA,kBACA,wBACA,uBACD,EAAClE,CAAI,EAGDkE,EAAIlE,CAAI,CAChB,CAGD,SAASwF,EAAMxF,EAAM,CACnB,OAAOA,IAAS,MAAQc,EAAmBd,CAAI,EAAIsB,EAAGtB,CAAI,EAAIkE,EAAIlE,CAAI,CACvE,CACH,CC1HO,MAAM0M,GAAkB,CAC7B,KAAM,kBACN,SAAUC,EACZ,EAGA,SAASA,GAAwBtL,EAASC,EAAI4C,EAAK,CACjD,OAAOjF,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,MAAM,cAAc,EAC5BA,EAAQ,QAAQrB,CAAI,EACb4E,CACR,CAGD,SAASA,EAAK5E,EAAM,CAClB,OAAIc,EAAmBd,CAAI,GACzBqB,EAAQ,KAAK,cAAc,EAC3BA,EAAQ,KAAK,iBAAiB,EACvBC,EAAGtB,CAAI,GAGTkE,EAAIlE,CAAI,CAChB,CACH,CCnBO,MAAM4M,GAAa,CACxB,KAAM,aACN,SAAUC,GACV,QAASC,EACX,EAGA,SAASA,GAAkBzI,EAAQC,EAAS,CAC1C,IAAIoG,EAAarG,EAAO,OAAS,EAC7BvC,EAAe,EAGfF,EAGAkD,EAEJ,OAAIT,EAAOvC,CAAY,EAAE,CAAC,EAAE,OAAS,eACnCA,GAAgB,GAIhB4I,EAAa,EAAI5I,GACjBuC,EAAOqG,CAAU,EAAE,CAAC,EAAE,OAAS,eAE/BA,GAAc,GAIdrG,EAAOqG,CAAU,EAAE,CAAC,EAAE,OAAS,uBAC9B5I,IAAiB4I,EAAa,GAC5BA,EAAa,EAAI5I,GAChBuC,EAAOqG,EAAa,CAAC,EAAE,CAAC,EAAE,OAAS,gBAEvCA,GAAc5I,EAAe,IAAM4I,EAAa,EAAI,GAGlDA,EAAa5I,IACfF,EAAU,CACR,KAAM,iBACN,MAAOyC,EAAOvC,CAAY,EAAE,CAAC,EAAE,MAC/B,IAAKuC,EAAOqG,CAAU,EAAE,CAAC,EAAE,GAC5B,EACD5F,EAAO,CACL,KAAM,YACN,MAAOT,EAAOvC,CAAY,EAAE,CAAC,EAAE,MAC/B,IAAKuC,EAAOqG,CAAU,EAAE,CAAC,EAAE,IAE3B,YAAa,MACd,EACD3L,GAAOsF,EAAQvC,EAAc4I,EAAa5I,EAAe,EAAG,CAC1D,CAAC,QAASF,EAAS0C,CAAO,EAC1B,CAAC,QAASQ,EAAMR,CAAO,EACvB,CAAC,OAAQQ,EAAMR,CAAO,EACtB,CAAC,OAAQ1C,EAAS0C,CAAO,CAC/B,CAAK,GAGID,CACT,CAGA,SAASwI,GAAmBxL,EAASC,EAAI4C,EAAK,CAC5C,MAAMzB,EAAO,KACb,IAAIf,EAAO,EACX,OAAOzC,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,MAAM,oBAAoB,EAC3B0L,EAAgB/M,CAAI,CAC5B,CAGD,SAAS+M,EAAgB/M,EAAM,CAC7B,OAAIA,IAAS,IAAM0B,IAAS,GAC1BL,EAAQ,QAAQrB,CAAI,EACb+M,GAGL/M,IAAS,MAAQa,EAA0Bb,CAAI,GACjDqB,EAAQ,KAAK,oBAAoB,EAC1BoB,EAAK,UAAYnB,EAAGtB,CAAI,EAAIgN,EAAahN,CAAI,GAG/CkE,EAAIlE,CAAI,CAChB,CAGD,SAASgN,EAAahN,EAAM,CAC1B,OAAIA,IAAS,IACXqB,EAAQ,MAAM,oBAAoB,EAC3BkE,EAASvF,CAAI,GAGlBA,IAAS,MAAQc,EAAmBd,CAAI,GAC1CqB,EAAQ,KAAK,YAAY,EAClBC,EAAGtB,CAAI,GAGZe,EAAcf,CAAI,EACboB,EAAaC,EAAS2L,EAAc,YAAY,EAAEhN,CAAI,GAG/DqB,EAAQ,MAAM,gBAAgB,EACvBe,EAAKpC,CAAI,EACjB,CAGD,SAASuF,EAASvF,EAAM,CACtB,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACbuF,IAGTlE,EAAQ,KAAK,oBAAoB,EAC1B2L,EAAahN,CAAI,EACzB,CAGD,SAASoC,EAAKpC,EAAM,CAClB,OAAIA,IAAS,MAAQA,IAAS,IAAMa,EAA0Bb,CAAI,GAChEqB,EAAQ,KAAK,gBAAgB,EACtB2L,EAAahN,CAAI,IAG1BqB,EAAQ,QAAQrB,CAAI,EACboC,EACR,CACH,CCxIO,MAAM6K,GAAiB,CAC5B,UACA,UACA,QACA,OACA,WACA,aACA,OACA,UACA,SACA,MACA,WACA,KACA,UACA,SACA,MACA,MACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,QACA,WACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,KACA,OACA,SACA,SACA,KACA,OACA,OACA,OACA,WACA,MACA,WACA,KACA,WACA,SACA,IACA,QACA,UACA,UACA,QACA,QACA,KACA,QACA,KACA,QACA,QACA,KACA,QACA,IACF,EAYaC,GAAe,CAAC,MAAO,SAAU,QAAS,UAAU,EClEpDC,GAAW,CACtB,KAAM,WACN,SAAUC,GACV,UAAWC,GACX,SAAU,EACZ,EAGMC,GAAqB,CACzB,SAAUC,GACV,QAAS,EACX,EAGA,SAASF,GAAkBhJ,EAAQ,CACjC,IAAIvF,EAAQuF,EAAO,OAEnB,KAAOvF,KACD,EAAAuF,EAAOvF,CAAK,EAAE,CAAC,IAAM,SAAWuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,OAAS,aAA9D,CAKF,OAAIA,EAAQ,GAAKuF,EAAOvF,EAAQ,CAAC,EAAE,CAAC,EAAE,OAAS,eAE7CuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,MAAQuF,EAAOvF,EAAQ,CAAC,EAAE,CAAC,EAAE,MAE9CuF,EAAOvF,EAAQ,CAAC,EAAE,CAAC,EAAE,MAAQuF,EAAOvF,EAAQ,CAAC,EAAE,CAAC,EAAE,MAElDuF,EAAO,OAAOvF,EAAQ,EAAG,CAAC,GAGrBuF,CACT,CAGA,SAAS+I,GAAiB/L,EAASC,EAAI4C,EAAK,CAC1C,MAAMzB,EAAO,KAGb,IAAI+K,EAGAC,EAGAC,EAGA5O,EAGAwG,EACJ,OAAOrG,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,cAAc,EAC5BA,EAAQ,QAAQrB,CAAI,EACb4E,CACR,CAGD,SAASA,EAAK5E,EAAM,CAClB,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACb2N,GAGL3N,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACb4N,GAGL5N,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACpBwN,EAAO,EAGA/K,EAAK,UAAYnB,EAAKuM,GAG3BxN,GAAWL,CAAI,GACjBqB,EAAQ,QAAQrB,CAAI,EACpB0N,EAAS,OAAO,aAAa1N,CAAI,EACjCyN,EAAW,GACJK,GAGF5J,EAAIlE,CAAI,CAChB,CAGD,SAAS2N,EAAiB3N,EAAM,CAC9B,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACpBwN,EAAO,EACAO,GAGL/N,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACpBwN,EAAO,EACPE,EAAS,SACT5O,EAAQ,EACDkP,GAGL3N,GAAWL,CAAI,GACjBqB,EAAQ,QAAQrB,CAAI,EACpBwN,EAAO,EACA/K,EAAK,UAAYnB,EAAKuM,GAGxB3J,EAAIlE,CAAI,CAChB,CAGD,SAAS+N,EAAkB/N,EAAM,CAC/B,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACbyC,EAAK,UAAYnB,EAAKuM,GAGxB3J,EAAIlE,CAAI,CAChB,CAGD,SAASgO,EAAgBhO,EAAM,CAC7B,OAAIA,IAAS0N,EAAO,WAAW5O,GAAO,GACpCuC,EAAQ,QAAQrB,CAAI,EACblB,IAAU4O,EAAO,OACpBjL,EAAK,UACHnB,EACA2M,EACFD,GAGC9J,EAAIlE,CAAI,CAChB,CAGD,SAAS4N,EAAc5N,EAAM,CAC3B,OAAIK,GAAWL,CAAI,GACjBqB,EAAQ,QAAQrB,CAAI,EACpB0N,EAAS,OAAO,aAAa1N,CAAI,EAC1B8N,GAGF5J,EAAIlE,CAAI,CAChB,CAGD,SAAS8N,EAAQ9N,EAAM,CACrB,OACEA,IAAS,MACTA,IAAS,IACTA,IAAS,IACTa,EAA0Bb,CAAI,EAG5BA,IAAS,IACTyN,GACAP,GAAa,SAASQ,EAAO,aAAa,GAE1CF,EAAO,EACA/K,EAAK,UAAYnB,EAAGtB,CAAI,EAAIiO,EAAajO,CAAI,GAGlDiN,GAAe,SAASS,EAAO,YAAa,CAAA,GAC9CF,EAAO,EAEHxN,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACbkO,GAGFzL,EAAK,UAAYnB,EAAGtB,CAAI,EAAIiO,EAAajO,CAAI,IAGtDwN,EAAO,EAEA/K,EAAK,WAAa,CAACA,EAAK,OAAO,KAAKA,EAAK,IAAK,EAAC,IAAI,EACtDyB,EAAIlE,CAAI,EACRyN,EACAU,EAA4BnO,CAAI,EAChCoO,EAAwBpO,CAAI,GAG9BA,IAAS,IAAMS,EAAkBT,CAAI,GACvCqB,EAAQ,QAAQrB,CAAI,EACpB0N,GAAU,OAAO,aAAa1N,CAAI,EAC3B8N,GAGF5J,EAAIlE,CAAI,CAChB,CAGD,SAASkO,EAAiBlO,EAAM,CAC9B,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACbyC,EAAK,UAAYnB,EAAK2M,GAGxB/J,EAAIlE,CAAI,CAChB,CAGD,SAASoO,EAAwBpO,EAAM,CACrC,OAAIe,EAAcf,CAAI,GACpBqB,EAAQ,QAAQrB,CAAI,EACboO,GAGFC,EAAYrO,CAAI,CACxB,CAGD,SAASmO,EAA4BnO,EAAM,CACzC,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACbqO,GAGLrO,IAAS,IAAMA,IAAS,IAAMK,GAAWL,CAAI,GAC/CqB,EAAQ,QAAQrB,CAAI,EACbsO,GAGLvN,EAAcf,CAAI,GACpBqB,EAAQ,QAAQrB,CAAI,EACbmO,GAGFE,EAAYrO,CAAI,CACxB,CAGD,SAASsO,EAAsBtO,EAAM,CACnC,OACEA,IAAS,IACTA,IAAS,IACTA,IAAS,IACTA,IAAS,IACTS,EAAkBT,CAAI,GAEtBqB,EAAQ,QAAQrB,CAAI,EACbsO,GAGFC,EAA2BvO,CAAI,CACvC,CAGD,SAASuO,EAA2BvO,EAAM,CACxC,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACbwO,GAGLzN,EAAcf,CAAI,GACpBqB,EAAQ,QAAQrB,CAAI,EACbuO,GAGFJ,EAA4BnO,CAAI,CACxC,CAGD,SAASwO,EAA6BxO,EAAM,CAC1C,OACEA,IAAS,MACTA,IAAS,IACTA,IAAS,IACTA,IAAS,IACTA,IAAS,GAEFkE,EAAIlE,CAAI,EAGbA,IAAS,IAAMA,IAAS,IAC1BqB,EAAQ,QAAQrB,CAAI,EACpBsF,EAAStF,EACFyO,GAGL1N,EAAcf,CAAI,GACpBqB,EAAQ,QAAQrB,CAAI,EACbwO,IAGTlJ,EAAS,KACFoJ,EAA+B1O,CAAI,EAC3C,CAGD,SAASyO,EAA6BzO,EAAM,CAC1C,OAAIA,IAAS,MAAQc,EAAmBd,CAAI,EACnCkE,EAAIlE,CAAI,EAGbA,IAASsF,GACXjE,EAAQ,QAAQrB,CAAI,EACb2O,IAGTtN,EAAQ,QAAQrB,CAAI,EACbyO,EACR,CAGD,SAASC,EAA+B1O,EAAM,CAC5C,OACEA,IAAS,MACTA,IAAS,IACTA,IAAS,IACTA,IAAS,IACTA,IAAS,IACTA,IAAS,IACTA,IAAS,IACTa,EAA0Bb,CAAI,EAEvBuO,EAA2BvO,CAAI,GAGxCqB,EAAQ,QAAQrB,CAAI,EACb0O,EACR,CAGD,SAASC,EAAkC3O,EAAM,CAC/C,OAAIA,IAAS,IAAMA,IAAS,IAAMe,EAAcf,CAAI,EAC3CmO,EAA4BnO,CAAI,EAGlCkE,EAAIlE,CAAI,CAChB,CAGD,SAASqO,EAAYrO,EAAM,CACzB,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACb4O,GAGF1K,EAAIlE,CAAI,CAChB,CAGD,SAAS4O,EAAc5O,EAAM,CAC3B,OAAIe,EAAcf,CAAI,GACpBqB,EAAQ,QAAQrB,CAAI,EACb4O,GAGF5O,IAAS,MAAQc,EAAmBd,CAAI,EAC3CiO,EAAajO,CAAI,EACjBkE,EAAIlE,CAAI,CACb,CAGD,SAASiO,EAAajO,EAAM,CAC1B,OAAIA,IAAS,IAAMwN,IAAS,GAC1BnM,EAAQ,QAAQrB,CAAI,EACb6O,GAGL7O,IAAS,IAAMwN,IAAS,GAC1BnM,EAAQ,QAAQrB,CAAI,EACb8O,IAGL9O,IAAS,IAAMwN,IAAS,GAC1BnM,EAAQ,QAAQrB,CAAI,EACb+O,GAGL/O,IAAS,IAAMwN,IAAS,GAC1BnM,EAAQ,QAAQrB,CAAI,EACb6N,GAGL7N,IAAS,IAAMwN,IAAS,GAC1BnM,EAAQ,QAAQrB,CAAI,EACbgP,GAGLlO,EAAmBd,CAAI,IAAMwN,IAAS,GAAKA,IAAS,GAC/CnM,EAAQ,MACbiM,GACAyB,EACAE,CACD,EAACjP,CAAI,EAGJA,IAAS,MAAQc,EAAmBd,CAAI,EACnCiP,EAAyBjP,CAAI,GAGtCqB,EAAQ,QAAQrB,CAAI,EACbiO,EACR,CAGD,SAASgB,EAAyBjP,EAAM,CACtC,OAAAqB,EAAQ,KAAK,cAAc,EACpB6N,EAAkBlP,CAAI,CAC9B,CAGD,SAASkP,EAAkBlP,EAAM,CAC/B,OAAIA,IAAS,KACJmP,EAAKnP,CAAI,EAGdc,EAAmBd,CAAI,EAClBqB,EAAQ,QACb,CACE,SAAU+N,EACV,QAAS,EACV,EACDF,EACAC,CACD,EAACnP,CAAI,GAGRqB,EAAQ,MAAM,cAAc,EACrB4M,EAAajO,CAAI,EACzB,CAGD,SAASoP,EAAY/N,EAASC,GAAI4C,GAAK,CACrC,OAAOjF,GAGP,SAASA,GAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,YAAY,EAClBa,CACR,CAGD,SAASA,EAAUlC,EAAM,CACvB,OAAOyC,EAAK,OAAO,KAAKA,EAAK,IAAG,EAAG,IAAI,EAAIyB,GAAIlE,CAAI,EAAIsB,GAAGtB,CAAI,CAC/D,CACF,CAGD,SAAS6O,EAA0B7O,EAAM,CACvC,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACb6N,GAGFI,EAAajO,CAAI,CACzB,CAGD,SAAS8O,GAAuB9O,EAAM,CACpC,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACpB0N,EAAS,GACF2B,GAGFpB,EAAajO,CAAI,CACzB,CAGD,SAASqP,EAAsBrP,EAAM,CACnC,OAAIA,IAAS,IAAMkN,GAAa,SAASQ,EAAO,YAAW,CAAE,GAC3DrM,EAAQ,QAAQrB,CAAI,EACb+O,GAGL1O,GAAWL,CAAI,GAAK0N,EAAO,OAAS,GACtCrM,EAAQ,QAAQrB,CAAI,EACpB0N,GAAU,OAAO,aAAa1N,CAAI,EAC3BqP,GAGFpB,EAAajO,CAAI,CACzB,CAGD,SAASgP,EAAgChP,EAAM,CAC7C,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACb6N,GAGFI,EAAajO,CAAI,CACzB,CAGD,SAAS6N,EAA8B7N,EAAM,CAC3C,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACb+O,GAGL/O,IAAS,IAAMwN,IAAS,GAC1BnM,EAAQ,QAAQrB,CAAI,EACb6N,GAGFI,EAAajO,CAAI,CACzB,CAGD,SAAS+O,EAAkB/O,EAAM,CAC/B,OAAIA,IAAS,MAAQc,EAAmBd,CAAI,GAC1CqB,EAAQ,KAAK,cAAc,EACpB8N,EAAKnP,CAAI,IAGlBqB,EAAQ,QAAQrB,CAAI,EACb+O,EACR,CAGD,SAASI,EAAKnP,EAAM,CAClB,OAAAqB,EAAQ,KAAK,UAAU,EAChBC,EAAGtB,CAAI,CACf,CACH,CAGA,SAASuN,GAAkBlM,EAASC,EAAI4C,EAAK,CAC3C,OAAOjF,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,KAAK,cAAc,EAC3BA,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,iBAAiB,EACvBA,EAAQ,QAAQ8E,GAAW7E,EAAI4C,CAAG,CAC1C,CACH,CChiBO,MAAMoL,GAAW,CACtB,KAAM,WACN,SAAUC,EACZ,EAGA,SAASA,GAAiBlO,EAASC,EAAI4C,EAAK,CAC1C,MAAMzB,EAAO,KAGb,IAAI6C,EAGAoI,EAGA5O,EAGA0Q,EACJ,OAAOvQ,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,cAAc,EAC5BA,EAAQ,QAAQrB,CAAI,EACb4E,CACR,CAGD,SAASA,EAAK5E,EAAM,CAClB,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACbyP,GAGLzP,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACb4N,GAGL5N,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACb0P,GAGLrP,GAAWL,CAAI,GACjBqB,EAAQ,QAAQrB,CAAI,EACb2P,GAGFzL,EAAIlE,CAAI,CAChB,CAGD,SAASyP,EAAgBzP,EAAM,CAC7B,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACb4P,GAGL5P,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACpB0N,EAAS,SACT5O,EAAQ,EACD+Q,GAGLxP,GAAWL,CAAI,GACjBqB,EAAQ,QAAQrB,CAAI,EACb8P,GAGF5L,EAAIlE,CAAI,CAChB,CAGD,SAAS4P,EAAY5P,EAAM,CACzB,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACb+P,GAGF7L,EAAIlE,CAAI,CAChB,CAGD,SAAS+P,EAAa/P,EAAM,CAC1B,OAAIA,IAAS,MAAQA,IAAS,GACrBkE,EAAIlE,CAAI,EAGbA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACbgQ,GAGFC,EAAQjQ,CAAI,CACpB,CAGD,SAASgQ,EAAiBhQ,EAAM,CAC9B,OAAIA,IAAS,MAAQA,IAAS,GACrBkE,EAAIlE,CAAI,EAGViQ,EAAQjQ,CAAI,CACpB,CAGD,SAASiQ,EAAQjQ,EAAM,CACrB,OAAIA,IAAS,KACJkE,EAAIlE,CAAI,EAGbA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACbkQ,GAGLpP,EAAmBd,CAAI,GACzBwP,EAAcS,EACPE,EAAanQ,CAAI,IAG1BqB,EAAQ,QAAQrB,CAAI,EACbiQ,EACR,CAGD,SAASC,EAAalQ,EAAM,CAC1B,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACbZ,GAGF6Q,EAAQjQ,CAAI,CACpB,CAGD,SAAS6P,EAAU7P,EAAM,CACvB,OAAIA,IAAS0N,EAAO,WAAW5O,GAAO,GACpCuC,EAAQ,QAAQrB,CAAI,EACblB,IAAU4O,EAAO,OAAS0C,EAAQP,GAGpC3L,EAAIlE,CAAI,CAChB,CAGD,SAASoQ,EAAMpQ,EAAM,CACnB,OAAIA,IAAS,KACJkE,EAAIlE,CAAI,EAGbA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACbqQ,GAGLvP,EAAmBd,CAAI,GACzBwP,EAAcY,EACPD,EAAanQ,CAAI,IAG1BqB,EAAQ,QAAQrB,CAAI,EACboQ,EACR,CAGD,SAASC,EAAWrQ,EAAM,CACxB,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACbsQ,GAGFF,EAAMpQ,CAAI,CAClB,CAGD,SAASsQ,EAAStQ,EAAM,CACtB,OAAIA,IAAS,GACJZ,EAAIY,CAAI,EAGbA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACbsQ,GAGFF,EAAMpQ,CAAI,CAClB,CAGD,SAAS8P,EAAY9P,EAAM,CACzB,OAAIA,IAAS,MAAQA,IAAS,GACrBZ,EAAIY,CAAI,EAGbc,EAAmBd,CAAI,GACzBwP,EAAcM,EACPK,EAAanQ,CAAI,IAG1BqB,EAAQ,QAAQrB,CAAI,EACb8P,EACR,CAGD,SAASJ,EAAY1P,EAAM,CACzB,OAAIA,IAAS,KACJkE,EAAIlE,CAAI,EAGbA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACbuQ,GAGLzP,EAAmBd,CAAI,GACzBwP,EAAcE,EACPS,EAAanQ,CAAI,IAG1BqB,EAAQ,QAAQrB,CAAI,EACb0P,EACR,CAGD,SAASa,EAAiBvQ,EAAM,CAC9B,OAAOA,IAAS,GAAKZ,EAAIY,CAAI,EAAI0P,EAAY1P,CAAI,CAClD,CAGD,SAAS4N,EAAc5N,EAAM,CAC3B,OAAIK,GAAWL,CAAI,GACjBqB,EAAQ,QAAQrB,CAAI,EACbwQ,GAGFtM,EAAIlE,CAAI,CAChB,CAGD,SAASwQ,EAASxQ,EAAM,CACtB,OAAIA,IAAS,IAAMS,EAAkBT,CAAI,GACvCqB,EAAQ,QAAQrB,CAAI,EACbwQ,GAGFC,EAAgBzQ,CAAI,CAC5B,CAGD,SAASyQ,EAAgBzQ,EAAM,CAC7B,OAAIc,EAAmBd,CAAI,GACzBwP,EAAciB,EACPN,EAAanQ,CAAI,GAGtBe,EAAcf,CAAI,GACpBqB,EAAQ,QAAQrB,CAAI,EACbyQ,GAGFrR,EAAIY,CAAI,CAChB,CAGD,SAAS2P,EAAQ3P,EAAM,CACrB,OAAIA,IAAS,IAAMS,EAAkBT,CAAI,GACvCqB,EAAQ,QAAQrB,CAAI,EACb2P,GAGL3P,IAAS,IAAMA,IAAS,IAAMa,EAA0Bb,CAAI,EACvD0Q,EAAe1Q,CAAI,EAGrBkE,EAAIlE,CAAI,CAChB,CAGD,SAAS0Q,EAAe1Q,EAAM,CAC5B,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACbZ,GAGLY,IAAS,IAAMA,IAAS,IAAMK,GAAWL,CAAI,GAC/CqB,EAAQ,QAAQrB,CAAI,EACb2Q,GAGL7P,EAAmBd,CAAI,GACzBwP,EAAckB,EACPP,EAAanQ,CAAI,GAGtBe,EAAcf,CAAI,GACpBqB,EAAQ,QAAQrB,CAAI,EACb0Q,GAGFtR,EAAIY,CAAI,CAChB,CAGD,SAAS2Q,EAAqB3Q,EAAM,CAClC,OACEA,IAAS,IACTA,IAAS,IACTA,IAAS,IACTA,IAAS,IACTS,EAAkBT,CAAI,GAEtBqB,EAAQ,QAAQrB,CAAI,EACb2Q,GAGFC,EAA0B5Q,CAAI,CACtC,CAGD,SAAS4Q,EAA0B5Q,EAAM,CACvC,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACb6Q,GAGL/P,EAAmBd,CAAI,GACzBwP,EAAcoB,EACPT,EAAanQ,CAAI,GAGtBe,EAAcf,CAAI,GACpBqB,EAAQ,QAAQrB,CAAI,EACb4Q,GAGFF,EAAe1Q,CAAI,CAC3B,CAGD,SAAS6Q,EAA4B7Q,EAAM,CACzC,OACEA,IAAS,MACTA,IAAS,IACTA,IAAS,IACTA,IAAS,IACTA,IAAS,GAEFkE,EAAIlE,CAAI,EAGbA,IAAS,IAAMA,IAAS,IAC1BqB,EAAQ,QAAQrB,CAAI,EACpBsF,EAAStF,EACF8Q,GAGLhQ,EAAmBd,CAAI,GACzBwP,EAAcqB,EACPV,EAAanQ,CAAI,GAGtBe,EAAcf,CAAI,GACpBqB,EAAQ,QAAQrB,CAAI,EACb6Q,IAGTxP,EAAQ,QAAQrB,CAAI,EACpBsF,EAAS,OACFyL,EACR,CAGD,SAASD,EAA4B9Q,EAAM,CACzC,OAAIA,IAASsF,GACXjE,EAAQ,QAAQrB,CAAI,EACbgR,IAGLhR,IAAS,KACJkE,EAAIlE,CAAI,EAGbc,EAAmBd,CAAI,GACzBwP,EAAcsB,EACPX,EAAanQ,CAAI,IAG1BqB,EAAQ,QAAQrB,CAAI,EACb8Q,EACR,CAGD,SAASE,GAAiChR,EAAM,CAC9C,OAAIA,IAAS,IAAMA,IAAS,IAAMa,EAA0Bb,CAAI,EACvD0Q,EAAe1Q,CAAI,EAGrBkE,EAAIlE,CAAI,CAChB,CAGD,SAAS+Q,EAA8B/Q,EAAM,CAC3C,OACEA,IAAS,MACTA,IAAS,IACTA,IAAS,IACTA,IAAS,IACTA,IAAS,IACTA,IAAS,GAEFkE,EAAIlE,CAAI,EAGbA,IAAS,IAAMa,EAA0Bb,CAAI,EACxC0Q,EAAe1Q,CAAI,GAG5BqB,EAAQ,QAAQrB,CAAI,EACb+Q,EACR,CAKD,SAASZ,EAAanQ,EAAM,CAC1B,OAAAqB,EAAQ,KAAK,cAAc,EAC3BA,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,YAAY,EAClBD,EACLC,EACAsH,EACA,aACAlG,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EACvD,OACA,CACL,CACF,CAGD,SAASkG,EAAY3I,EAAM,CACzB,OAAAqB,EAAQ,MAAM,cAAc,EACrBmO,EAAYxP,CAAI,CACxB,CAGD,SAASZ,EAAIY,EAAM,CACjB,OAAIA,IAAS,IACXqB,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,cAAc,EAC3BA,EAAQ,KAAK,UAAU,EAChBC,GAGF4C,EAAIlE,CAAI,CAChB,CACH,CC3cO,MAAMiR,GAAW,CACtB,KAAM,WACN,SAAUC,GACV,UAAWC,GACX,WAAYC,EACd,EAGMC,GAAoB,CACxB,SAAUC,EACZ,EAGMC,GAAyB,CAC7B,SAAUC,EACZ,EAGMC,GAA8B,CAClC,SAAUC,EACZ,EAGA,SAASN,GAAmB/M,EAAQ,CAClC,IAAIvF,EAAQ,GAGRqD,EAEJ,KAAO,EAAErD,EAAQuF,EAAO,QACtBlC,EAAQkC,EAAOvF,CAAK,EAAE,CAAC,GAGrBqD,EAAM,OAAS,cACfA,EAAM,OAAS,aACfA,EAAM,OAAS,cAGfkC,EAAO,OAAOvF,EAAQ,EAAGqD,EAAM,OAAS,aAAe,EAAI,CAAC,EAC5DA,EAAM,KAAO,OACbrD,KAIJ,OAAOuF,CACT,CAGA,SAAS8M,GAAkB9M,EAAQC,EAAS,CAC1C,IAAIxF,EAAQuF,EAAO,OACfc,EAAS,EAGThD,EAGAyC,EAGAa,EAGAkM,EAEJ,KAAO7S,KAGL,GAFAqD,EAAQkC,EAAOvF,CAAK,EAAE,CAAC,EAEnB8F,EAAM,CAER,GACEzC,EAAM,OAAS,QACdA,EAAM,OAAS,aAAeA,EAAM,UAErC,MAIEkC,EAAOvF,CAAK,EAAE,CAAC,IAAM,SAAWqD,EAAM,OAAS,cACjDA,EAAM,UAAY,GAErB,SAAUsD,GACT,GACEpB,EAAOvF,CAAK,EAAE,CAAC,IAAM,UACpBqD,EAAM,OAAS,cAAgBA,EAAM,OAAS,cAC/C,CAACA,EAAM,YAEPyC,EAAO9F,EAEHqD,EAAM,OAAS,aAAa,CAC9BgD,EAAS,EACT,KACD,OAEMhD,EAAM,OAAS,aACxBsD,EAAQ3G,GAIZ,MAAM+F,EAAQ,CACZ,KAAMR,EAAOO,CAAI,EAAE,CAAC,EAAE,OAAS,YAAc,OAAS,QACtD,MAAO,OAAO,OAAO,CAAE,EAAEP,EAAOO,CAAI,EAAE,CAAC,EAAE,KAAK,EAC9C,IAAK,OAAO,OAAO,CAAA,EAAIP,EAAOA,EAAO,OAAS,CAAC,EAAE,CAAC,EAAE,GAAG,CACxD,EACKsH,EAAQ,CACZ,KAAM,QACN,MAAO,OAAO,OAAO,CAAE,EAAEtH,EAAOO,CAAI,EAAE,CAAC,EAAE,KAAK,EAC9C,IAAK,OAAO,OAAO,CAAE,EAAEP,EAAOoB,CAAK,EAAE,CAAC,EAAE,GAAG,CAC5C,EACKX,EAAO,CACX,KAAM,YACN,MAAO,OAAO,OAAO,CAAA,EAAIT,EAAOO,EAAOO,EAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EACzD,IAAK,OAAO,OAAO,GAAId,EAAOoB,EAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,CAClD,EACD,OAAAkM,EAAQ,CACN,CAAC,QAAS9M,EAAOP,CAAO,EACxB,CAAC,QAASqH,EAAOrH,CAAO,CACzB,EAEDqN,EAAQpS,EAAKoS,EAAOtN,EAAO,MAAMO,EAAO,EAAGA,EAAOO,EAAS,CAAC,CAAC,EAE7DwM,EAAQpS,EAAKoS,EAAO,CAAC,CAAC,QAAS7M,EAAMR,CAAO,CAAC,CAAC,EAE9CqN,EAAQpS,EACNoS,EACAvN,GACEE,EAAQ,OAAO,WAAW,WAAW,KACrCD,EAAO,MAAMO,EAAOO,EAAS,EAAGM,EAAQ,CAAC,EACzCnB,CACD,CACF,EAEDqN,EAAQpS,EAAKoS,EAAO,CAClB,CAAC,OAAQ7M,EAAMR,CAAO,EACtBD,EAAOoB,EAAQ,CAAC,EAChBpB,EAAOoB,EAAQ,CAAC,EAChB,CAAC,OAAQkG,EAAOrH,CAAO,CAC3B,CAAG,EAEDqN,EAAQpS,EAAKoS,EAAOtN,EAAO,MAAMoB,EAAQ,CAAC,CAAC,EAE3CkM,EAAQpS,EAAKoS,EAAO,CAAC,CAAC,OAAQ9M,EAAOP,CAAO,CAAC,CAAC,EAC9CvF,GAAOsF,EAAQO,EAAMP,EAAO,OAAQsN,CAAK,EAClCtN,CACT,CAGA,SAAS6M,GAAiB7P,EAASC,EAAI4C,EAAK,CAC1C,MAAMzB,EAAO,KACb,IAAI3D,EAAQ2D,EAAK,OAAO,OAGpBmP,EAGAC,EAEJ,KAAO/S,KACL,IACG2D,EAAK,OAAO3D,CAAK,EAAE,CAAC,EAAE,OAAS,cAC9B2D,EAAK,OAAO3D,CAAK,EAAE,CAAC,EAAE,OAAS,cACjC,CAAC2D,EAAK,OAAO3D,CAAK,EAAE,CAAC,EAAE,UACvB,CACA8S,EAAanP,EAAK,OAAO3D,CAAK,EAAE,CAAC,EACjC,KACD,CAGH,OAAOG,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAK4R,EAIDA,EAAW,UAAkBE,EAAS9R,CAAI,GAC9C6R,EAAUpP,EAAK,OAAO,QAAQ,SAC5B0J,GACE1J,EAAK,eAAe,CAClB,MAAOmP,EAAW,IAClB,IAAKnP,EAAK,IAAK,CACzB,CAAS,CACF,CACF,EACDpB,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,aAAa,EAC3BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,UAAU,EAChB0Q,GAjBE7N,EAAIlE,CAAI,CAkBlB,CAGD,SAAS+R,EAAc/R,EAAM,CAE3B,OAAIA,IAAS,GACJqB,EAAQ,QACbgQ,GACA/P,EACAuQ,EAAUvQ,EAAKwQ,CAChB,EAAC9R,CAAI,EAGJA,IAAS,GACJqB,EAAQ,QACbkQ,GACAjQ,EACAuQ,EACIxQ,EAAQ,QAAQoQ,GAA6BnQ,EAAIwQ,CAAQ,EACzDA,CACL,EAAC9R,CAAI,EAGD6R,EAAUvQ,EAAGtB,CAAI,EAAI8R,EAAS9R,CAAI,CAC1C,CAGD,SAAS8R,EAAS9R,EAAM,CACtB,OAAA4R,EAAW,UAAY,GAChB1N,EAAIlE,CAAI,CAChB,CACH,CAGA,SAASsR,GAAiBjQ,EAASC,EAAI4C,EAAK,CAC1C,OAAOjF,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,gBAAgB,EACtB6K,GAAkB7K,EAASuD,CAAI,CACvC,CAGD,SAASA,EAAK5E,EAAM,CAClB,OAAIA,IAAS,GACJZ,EAAIY,CAAI,EAGV6K,GACLxJ,EACA2Q,EACA9N,EACA,sBACA,6BACA,mCACA,yBACA,4BACA,EACD,EAAClE,CAAI,CACP,CAGD,SAASgS,EAAiBhS,EAAM,CAC9B,OAAOa,EAA0Bb,CAAI,EACjCkM,GAAkB7K,EAAS4Q,CAAO,EAAEjS,CAAI,EACxCZ,EAAIY,CAAI,CACb,CAGD,SAASiS,EAAQjS,EAAM,CACrB,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,GAClC6L,GACLxK,EACA6K,GAAkB7K,EAASjC,CAAG,EAC9B8E,EACA,gBACA,sBACA,qBACD,EAAClE,CAAI,EAGDZ,EAAIY,CAAI,CAChB,CAGD,SAASZ,EAAIY,EAAM,CACjB,OAAIA,IAAS,IACXqB,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,gBAAgB,EAC7BA,EAAQ,KAAK,UAAU,EAChBC,GAGF4C,EAAIlE,CAAI,CAChB,CACH,CAGA,SAASwR,GAAsBnQ,EAASC,EAAI4C,EAAK,CAC/C,MAAMzB,EAAO,KACb,OAAOxD,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAOwL,GAAa,KAClB/I,EACApB,EACA6Q,EACAhO,EACA,YACA,kBACA,iBACD,EAAClE,CAAI,CACP,CAGD,SAASkS,EAAWlS,EAAM,CACxB,OAAOyC,EAAK,OAAO,QAAQ,SACzB0J,GACE1J,EAAK,eAAeA,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAG,EAAE,CACxE,CACF,EACGnB,EAAGtB,CAAI,EACPkE,EAAIlE,CAAI,CACb,CACH,CAGA,SAAS0R,GAA2BrQ,EAASC,EAAI4C,EAAK,CACpD,OAAOjF,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,WAAW,EACzBA,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,iBAAiB,EACvBuD,CACR,CAGD,SAASA,EAAK5E,EAAM,CAClB,OAAIA,IAAS,IACXqB,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,iBAAiB,EAC9BA,EAAQ,KAAK,WAAW,EACjBC,GAGF4C,EAAIlE,CAAI,CAChB,CACH,CCtWO,MAAMmS,GAAkB,CAC7B,KAAM,kBACN,SAAUC,GACV,WAAYnB,GAAS,UACvB,EAGA,SAASmB,GAAwB/Q,EAASC,EAAI4C,EAAK,CACjD,MAAMzB,EAAO,KACb,OAAOxD,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,MAAM,kBAAkB,EAChCA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,kBAAkB,EACxBuD,CACR,CAGD,SAASA,EAAK5E,EAAM,CAClB,OAAIA,IAAS,IACXqB,EAAQ,MAAM,aAAa,EAC3BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,YAAY,EAClBmE,GAGFtB,EAAIlE,CAAI,CAChB,CAGD,SAASwF,EAAMxF,EAAM,CAQnB,OAAOA,IAAS,IAAM,2BAA4ByC,EAAK,OAAO,WAC1DyB,EAAIlE,CAAI,EACRsB,EAAGtB,CAAI,CACZ,CACH,CC9CO,MAAMqS,GAAiB,CAC5B,KAAM,iBACN,SAAUC,GACV,WAAYrB,GAAS,UACvB,EAGA,SAASqB,GAAuBjR,EAASC,EAAI4C,EAAK,CAChD,MAAMzB,EAAO,KACb,OAAOxD,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,WAAW,EACzBA,EAAQ,MAAM,aAAa,EAC3BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,WAAW,EACjBmE,CACR,CAGD,SAASA,EAAMxF,EAAM,CAQnB,OAAOA,IAAS,IAAM,2BAA4ByC,EAAK,OAAO,WAC1DyB,EAAIlE,CAAI,EACRsB,EAAGtB,CAAI,CACZ,CACH,CCjCO,MAAMuS,GAAa,CACxB,KAAM,aACN,SAAUC,EACZ,EAGA,SAASA,GAAmBnR,EAASC,EAAI,CACvC,OAAOrC,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,YAAY,EAClBD,EAAaC,EAASC,EAAI,YAAY,CAC9C,CACH,CCfO,MAAMmR,GAAgB,CAC3B,KAAM,gBACN,SAAUC,EACZ,EAGA,SAASA,GAAsBrR,EAASC,EAAI4C,EAAK,CAC/C,IAAIxC,EAAO,EAGP4D,EACJ,OAAOrG,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAAqB,EAAQ,MAAM,eAAe,EAC7BiE,EAAStF,EACF0L,EAAQ1L,CAAI,CACpB,CAGD,SAAS0L,EAAQ1L,EAAM,CACrB,OAAIA,IAASsF,GACXjE,EAAQ,MAAM,uBAAuB,EAC9BkE,EAASvF,CAAI,GAGlBe,EAAcf,CAAI,EACboB,EAAaC,EAASqK,EAAS,YAAY,EAAE1L,CAAI,EAGtD0B,EAAO,GAAM1B,IAAS,MAAQ,CAACc,EAAmBd,CAAI,EACjDkE,EAAIlE,CAAI,GAGjBqB,EAAQ,KAAK,eAAe,EACrBC,EAAGtB,CAAI,EACf,CAGD,SAASuF,EAASvF,EAAM,CACtB,OAAIA,IAASsF,GACXjE,EAAQ,QAAQrB,CAAI,EACpB0B,IACO6D,IAGTlE,EAAQ,KAAK,uBAAuB,EAC7BqK,EAAQ1L,CAAI,EACpB,CACH,CCzCO,MAAMhB,EAAO,CAClB,KAAM,OACN,SAAU2T,GACV,aAAc,CACZ,SAAUC,EACX,EACD,KAAMC,EACR,EAGMC,GAAoC,CACxC,SAAUC,GACV,QAAS,EACX,EAGMC,GAAkB,CACtB,SAAUC,GACV,QAAS,EACX,EAMA,SAASN,GAAkBtR,EAASC,EAAI4C,EAAK,CAC3C,MAAMzB,EAAO,KACPiF,EAAOjF,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,IAAIyQ,EACFxL,GAAQA,EAAK,CAAC,EAAE,OAAS,aACrBA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,OACtC,EACFhG,EAAO,EACX,OAAOzC,EAGP,SAASA,EAAMe,EAAM,CACnB,MAAMwN,EACJ/K,EAAK,eAAe,OACnBzC,IAAS,IAAMA,IAAS,IAAMA,IAAS,GACpC,gBACA,eAEN,GACEwN,IAAS,gBACL,CAAC/K,EAAK,eAAe,QAAUzC,IAASyC,EAAK,eAAe,OAC5DlC,GAAWP,CAAI,EACnB,CAQA,GAPKyC,EAAK,eAAe,OACvBA,EAAK,eAAe,KAAO+K,EAC3BnM,EAAQ,MAAMmM,EAAM,CAClB,WAAY,EACtB,CAAS,GAGCA,IAAS,gBACX,OAAAnM,EAAQ,MAAM,gBAAgB,EACvBrB,IAAS,IAAMA,IAAS,GAC3BqB,EAAQ,MAAMoR,GAAevO,EAAKiP,CAAQ,EAAEnT,CAAI,EAChDmT,EAASnT,CAAI,EAGnB,GAAI,CAACyC,EAAK,WAAazC,IAAS,GAC9B,OAAAqB,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,MAAM,eAAe,EACtB+R,EAAOpT,CAAI,CAErB,CAED,OAAOkE,EAAIlE,CAAI,CAChB,CAGD,SAASoT,EAAOpT,EAAM,CACpB,OAAIO,GAAWP,CAAI,GAAK,EAAE0B,EAAO,IAC/BL,EAAQ,QAAQrB,CAAI,EACboT,IAIN,CAAC3Q,EAAK,WAAaf,EAAO,KAC1Be,EAAK,eAAe,OACjBzC,IAASyC,EAAK,eAAe,OAC7BzC,IAAS,IAAMA,IAAS,KAE5BqB,EAAQ,KAAK,eAAe,EACrB8R,EAASnT,CAAI,GAGfkE,EAAIlE,CAAI,CAChB,CAKD,SAASmT,EAASnT,EAAM,CACtB,OAAAqB,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,gBAAgB,EAC7BoB,EAAK,eAAe,OAASA,EAAK,eAAe,QAAUzC,EACpDqB,EAAQ,MACb8E,GACA1D,EAAK,UAAYyB,EAAMmP,EACvBhS,EAAQ,QACNyR,GACAQ,EACAC,CACD,CACF,CACF,CAGD,SAASF,EAAQrT,EAAM,CACrB,OAAAyC,EAAK,eAAe,iBAAmB,GACvCyQ,IACOI,EAAYtT,CAAI,CACxB,CAGD,SAASuT,EAAYvT,EAAM,CACzB,OAAIe,EAAcf,CAAI,GACpBqB,EAAQ,MAAM,0BAA0B,EACxCA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,0BAA0B,EAChCiS,GAGFpP,EAAIlE,CAAI,CAChB,CAGD,SAASsT,EAAYtT,EAAM,CACzB,OAAAyC,EAAK,eAAe,KAClByQ,EACAzQ,EAAK,eAAepB,EAAQ,KAAK,gBAAgB,EAAG,EAAI,EAAE,OACrDC,EAAGtB,CAAI,CACf,CACH,CAMA,SAAS4S,GAAyBvR,EAASC,EAAI4C,EAAK,CAClD,MAAMzB,EAAO,KACb,OAAAA,EAAK,eAAe,WAAa,OAC1BpB,EAAQ,MAAM8E,GAAWkN,EAASG,CAAQ,EAGjD,SAASH,EAAQrT,EAAM,CACrB,OAAAyC,EAAK,eAAe,kBAClBA,EAAK,eAAe,mBACpBA,EAAK,eAAe,iBAGfrB,EACLC,EACAC,EACA,iBACAmB,EAAK,eAAe,KAAO,CAC5B,EAACzC,CAAI,CACP,CAGD,SAASwT,EAASxT,EAAM,CACtB,OAAIyC,EAAK,eAAe,mBAAqB,CAAC1B,EAAcf,CAAI,GAC9DyC,EAAK,eAAe,kBAAoB,OACxCA,EAAK,eAAe,iBAAmB,OAChCgR,EAAiBzT,CAAI,IAG9ByC,EAAK,eAAe,kBAAoB,OACxCA,EAAK,eAAe,iBAAmB,OAChCpB,EAAQ,QAAQ2R,GAAiB1R,EAAImS,CAAgB,EAAEzT,CAAI,EACnE,CAGD,SAASyT,EAAiBzT,EAAM,CAE9B,OAAAyC,EAAK,eAAe,WAAa,GAEjCA,EAAK,UAAY,OACVrB,EACLC,EACAA,EAAQ,QAAQrC,EAAMsC,EAAI4C,CAAG,EAC7B,aACAzB,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EACvD,OACA,CACL,EAACzC,CAAI,CACP,CACH,CAMA,SAASiT,GAAe5R,EAASC,EAAI4C,EAAK,CACxC,MAAMzB,EAAO,KACb,OAAOrB,EACLC,EACAsH,EACA,iBACAlG,EAAK,eAAe,KAAO,CAC5B,EAGD,SAASkG,EAAY3I,EAAM,CACzB,MAAM0H,EAAOjF,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,OAAOiF,GACLA,EAAK,CAAC,EAAE,OAAS,kBACjBA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,SAAWjF,EAAK,eAAe,KACnEnB,EAAGtB,CAAI,EACPkE,EAAIlE,CAAI,CACb,CACH,CAMA,SAAS6S,GAAgBxR,EAAS,CAChCA,EAAQ,KAAK,KAAK,eAAe,IAAI,CACvC,CAMA,SAAS0R,GAAiC1R,EAASC,EAAI4C,EAAK,CAC1D,MAAMzB,EAAO,KACb,OAAOrB,EACLC,EACAsH,EACA,2BACAlG,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EACvD,OACA,EAAI,CACT,EAGD,SAASkG,EAAY3I,EAAM,CACzB,MAAM0H,EAAOjF,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,MAAO,CAAC1B,EAAcf,CAAI,GACxB0H,GACAA,EAAK,CAAC,EAAE,OAAS,2BACfpG,EAAGtB,CAAI,EACPkE,EAAIlE,CAAI,CACb,CACH,CCjQO,MAAM0T,GAAkB,CAC7B,KAAM,kBACN,SAAUC,GACV,UAAWC,EACb,EAGA,SAASA,GAAyBvP,EAAQC,EAAS,CACjD,IAAIxF,EAAQuF,EAAO,OAGfzC,EAGAkD,EAGAsH,EAGJ,KAAOtN,KACL,GAAIuF,EAAOvF,CAAK,EAAE,CAAC,IAAM,QAAS,CAChC,GAAIuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,OAAS,UAAW,CACvC8C,EAAU9C,EACV,KACD,CAEGuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,OAAS,cAC5BgG,EAAOhG,EAEV,MAEKuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,OAAS,WAE5BuF,EAAO,OAAOvF,EAAO,CAAC,EAGpB,CAACsN,GAAc/H,EAAOvF,CAAK,EAAE,CAAC,EAAE,OAAS,eAC3CsN,EAAatN,GAKnB,MAAM+U,EAAU,CACd,KAAM,gBACN,MAAO,OAAO,OAAO,CAAE,EAAExP,EAAOS,CAAI,EAAE,CAAC,EAAE,KAAK,EAC9C,IAAK,OAAO,OAAO,CAAA,EAAIT,EAAOA,EAAO,OAAS,CAAC,EAAE,CAAC,EAAE,GAAG,CACxD,EAED,OAAAA,EAAOS,CAAI,EAAE,CAAC,EAAE,KAAO,oBAGnBsH,GACF/H,EAAO,OAAOS,EAAM,EAAG,CAAC,QAAS+O,EAASvP,CAAO,CAAC,EAClDD,EAAO,OAAO+H,EAAa,EAAG,EAAG,CAAC,OAAQ/H,EAAOzC,CAAO,EAAE,CAAC,EAAG0C,CAAO,CAAC,EACtED,EAAOzC,CAAO,EAAE,CAAC,EAAE,IAAM,OAAO,OAAO,CAAA,EAAIyC,EAAO+H,CAAU,EAAE,CAAC,EAAE,GAAG,GAEpE/H,EAAOzC,CAAO,EAAE,CAAC,EAAIiS,EAGvBxP,EAAO,KAAK,CAAC,OAAQwP,EAASvP,CAAO,CAAC,EAC/BD,CACT,CAGA,SAASsP,GAAwBtS,EAASC,EAAI4C,EAAK,CACjD,MAAMzB,EAAO,KACb,IAAI3D,EAAQ2D,EAAK,OAAO,OAGpB6C,EAGAwO,EAEJ,KAAOhV,KAGL,GACE2D,EAAK,OAAO3D,CAAK,EAAE,CAAC,EAAE,OAAS,cAC/B2D,EAAK,OAAO3D,CAAK,EAAE,CAAC,EAAE,OAAS,cAC/B2D,EAAK,OAAO3D,CAAK,EAAE,CAAC,EAAE,OAAS,UAC/B,CACAgV,EAAYrR,EAAK,OAAO3D,CAAK,EAAE,CAAC,EAAE,OAAS,YAC3C,KACD,CAGH,OAAOG,EAGP,SAASA,EAAMe,EAAM,CACnB,MAAI,CAACyC,EAAK,OAAO,KAAKA,EAAK,MAAM,IAAI,IAAMA,EAAK,WAAaqR,IAC3DzS,EAAQ,MAAM,mBAAmB,EACjCA,EAAQ,MAAM,2BAA2B,EACzCiE,EAAStF,EACFgF,EAAgBhF,CAAI,GAGtBkE,EAAIlE,CAAI,CAChB,CAGD,SAASgF,EAAgBhF,EAAM,CAC7B,OAAIA,IAASsF,GACXjE,EAAQ,QAAQrB,CAAI,EACbgF,IAGT3D,EAAQ,KAAK,2BAA2B,EACjCD,EAAaC,EAASgH,EAAoB,YAAY,EAAErI,CAAI,EACpE,CAGD,SAASqI,EAAmBrI,EAAM,CAChC,OAAIA,IAAS,MAAQc,EAAmBd,CAAI,GAC1CqB,EAAQ,KAAK,mBAAmB,EACzBC,EAAGtB,CAAI,GAGTkE,EAAIlE,CAAI,CAChB,CACH,CC3HO,MAAM+T,GAAO,CAClB,SAAUC,EACZ,EAGA,SAASA,GAAe3S,EAAS,CAC/B,MAAMoB,EAAO,KACPwR,EAAU5S,EAAQ,QAEtB8E,GACA+N,EACA7S,EAAQ,QACN,KAAK,OAAO,WAAW,YACvB8S,EACA/S,EACEC,EACAA,EAAQ,QACN,KAAK,OAAO,WAAW,KACvB8S,EACA9S,EAAQ,QAAQO,GAASuS,CAAc,CACxC,EACD,YACD,CACF,CACF,EACD,OAAOF,EAGP,SAASC,EAAclU,EAAM,CAC3B,GAAIA,IAAS,KAAM,CACjBqB,EAAQ,QAAQrB,CAAI,EACpB,MACD,CAED,OAAAqB,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,iBAAiB,EAC9BoB,EAAK,iBAAmB,OACjBwR,CACR,CAGD,SAASE,EAAenU,EAAM,CAC5B,GAAIA,IAAS,KAAM,CACjBqB,EAAQ,QAAQrB,CAAI,EACpB,MACD,CAED,OAAAqB,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQrB,CAAI,EACpBqB,EAAQ,KAAK,YAAY,EACzBoB,EAAK,iBAAmB,OACjBwR,CACR,CACH,CCxDO,MAAMG,GAAW,CACtB,WAAYC,GAAgB,CAC9B,EACaC,GAASC,GAAkB,QAAQ,EACnCzP,GAAOyP,GAAkB,MAAM,EAM5C,SAASA,GAAkBC,EAAO,CAChC,MAAO,CACL,SAAUC,EACV,WAAYJ,GACVG,IAAU,OAASE,GAAyB,MAC7C,CACF,EAGD,SAASD,EAAepT,EAAS,CAC/B,MAAMoB,EAAO,KACPxC,EAAa,KAAK,OAAO,WAAWuU,CAAK,EACzC1P,EAAOzD,EAAQ,QAAQpB,EAAYhB,EAAO0V,CAAO,EACvD,OAAO1V,EAGP,SAASA,EAAMe,EAAM,CACnB,OAAO0L,EAAQ1L,CAAI,EAAI8E,EAAK9E,CAAI,EAAI2U,EAAQ3U,CAAI,CACjD,CAGD,SAAS2U,EAAQ3U,EAAM,CACrB,GAAIA,IAAS,KAAM,CACjBqB,EAAQ,QAAQrB,CAAI,EACpB,MACD,CAED,OAAAqB,EAAQ,MAAM,MAAM,EACpBA,EAAQ,QAAQrB,CAAI,EACboC,CACR,CAGD,SAASA,EAAKpC,EAAM,CAClB,OAAI0L,EAAQ1L,CAAI,GACdqB,EAAQ,KAAK,MAAM,EACZyD,EAAK9E,CAAI,IAGlBqB,EAAQ,QAAQrB,CAAI,EACboC,EACR,CAMD,SAASsJ,EAAQ1L,EAAM,CACrB,GAAIA,IAAS,KACX,MAAO,GAGT,MAAMhB,EAAOiB,EAAWD,CAAI,EAC5B,IAAIlB,EAAQ,GAEZ,GAAIE,EACF,KAAO,EAAEF,EAAQE,EAAK,QAAQ,CAC5B,MAAM+D,EAAO/D,EAAKF,CAAK,EAEvB,GAAI,CAACiE,EAAK,UAAYA,EAAK,SAAS,KAAKN,EAAMA,EAAK,QAAQ,EAC1D,MAAO,EAEV,CAGH,MAAO,EACR,CACF,CACH,CAMA,SAAS4R,GAAeO,EAAe,CACrC,OAAOC,EAGP,SAASA,EAAexQ,EAAQC,EAAS,CACvC,IAAIxF,EAAQ,GAGRmK,EAGJ,KAAO,EAAEnK,GAASuF,EAAO,QACnB4E,IAAU,OACR5E,EAAOvF,CAAK,GAAKuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,OAAS,SAC7CmK,EAAQnK,EACRA,MAEO,CAACuF,EAAOvF,CAAK,GAAKuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,OAAS,UAEjDA,IAAUmK,EAAQ,IACpB5E,EAAO4E,CAAK,EAAE,CAAC,EAAE,IAAM5E,EAAOvF,EAAQ,CAAC,EAAE,CAAC,EAAE,IAC5CuF,EAAO,OAAO4E,EAAQ,EAAGnK,EAAQmK,EAAQ,CAAC,EAC1CnK,EAAQmK,EAAQ,GAGlBA,EAAQ,QAIZ,OAAO2L,EAAgBA,EAAcvQ,EAAQC,CAAO,EAAID,CACzD,CACH,CAaA,SAASqQ,GAAuBrQ,EAAQC,EAAS,CAC/C,IAAIsF,EAAa,EAEjB,KAAO,EAAEA,GAAcvF,EAAO,QAC5B,IACGuF,IAAevF,EAAO,QACrBA,EAAOuF,CAAU,EAAE,CAAC,EAAE,OAAS,eACjCvF,EAAOuF,EAAa,CAAC,EAAE,CAAC,EAAE,OAAS,OACnC,CACA,MAAMxH,EAAOiC,EAAOuF,EAAa,CAAC,EAAE,CAAC,EAC/BkL,EAASxQ,EAAQ,YAAYlC,CAAI,EACvC,IAAItD,EAAQgW,EAAO,OACfC,EAAc,GACdrT,EAAO,EAGPsT,EAEJ,KAAOlW,KAAS,CACd,MAAMmW,EAAQH,EAAOhW,CAAK,EAE1B,GAAI,OAAOmW,GAAU,SAAU,CAG7B,IAFAF,EAAcE,EAAM,OAEbA,EAAM,WAAWF,EAAc,CAAC,IAAM,IAC3CrT,IACAqT,IAGF,GAAIA,EAAa,MACjBA,EAAc,EACf,SACQE,IAAU,GACjBD,EAAO,GACPtT,YACSuT,IAAU,GAEd,CAELnW,IACA,KACD,CACF,CAED,GAAI4C,EAAM,CACR,MAAMS,EAAQ,CACZ,KACEyH,IAAevF,EAAO,QAAU2Q,GAAQtT,EAAO,EAC3C,aACA,oBACN,MAAO,CACL,KAAMU,EAAK,IAAI,KACf,OAAQA,EAAK,IAAI,OAASV,EAC1B,OAAQU,EAAK,IAAI,OAASV,EAC1B,OAAQU,EAAK,MAAM,OAAStD,EAC5B,aAAcA,EACViW,EACA3S,EAAK,MAAM,aAAe2S,CAC/B,EACD,IAAK,OAAO,OAAO,CAAA,EAAI3S,EAAK,GAAG,CAChC,EACDA,EAAK,IAAM,OAAO,OAAO,CAAE,EAAED,EAAM,KAAK,EAEpCC,EAAK,MAAM,SAAWA,EAAK,IAAI,OACjC,OAAO,OAAOA,EAAMD,CAAK,GAEzBkC,EAAO,OACLuF,EACA,EACA,CAAC,QAASzH,EAAOmC,CAAO,EACxB,CAAC,OAAQnC,EAAOmC,CAAO,CACxB,EACDsF,GAAc,EAEjB,CAEDA,GACD,CAGH,OAAOvF,CACT,CC9KO,SAAS6Q,GAAgBC,EAAQC,EAAYC,EAAM,CAExD,IAAIhS,EAAQ,OAAO,OACjBgS,EACI,OAAO,OAAO,CAAE,EAAEA,CAAI,EACtB,CACE,KAAM,EACN,OAAQ,EACR,OAAQ,CACT,EACL,CACE,OAAQ,EACR,aAAc,EACf,CACF,EAGD,MAAMC,EAAc,CAAE,EAGhBC,EAAuB,CAAE,EAG/B,IAAIT,EAAS,CAAE,EAGXpS,EAAQ,CAAE,EAUd,MAAMrB,EAAU,CACd,QAAAmU,EACA,MAAAvM,EACA,KAAAxC,EACA,QAASgP,EAAiBC,CAAqB,EAC/C,MAAOD,EAAiBE,CAAiB,EACzC,UAAWF,EAAiBE,EAAmB,CAC7C,UAAW,EACjB,CAAK,CACF,EAOKrR,EAAU,CACd,SAAU,KACV,KAAM,KACN,eAAgB,CAAE,EAClB,OAAQ,CAAE,EACV,OAAA6Q,EACA,YAAAS,EACA,eAAAC,EACA,IAAAC,EACA,WAAAC,EACA,MAAAC,CACD,EAOD,IAAItP,EAAQ0O,EAAW,SAAS,KAAK9Q,EAASjD,CAAO,EASrD,OAAI+T,EAAW,YACbG,EAAqB,KAAKH,CAAU,EAG/B9Q,EAGP,SAAS0R,EAAM3L,EAAO,CAIpB,OAHAyK,EAASvV,EAAKuV,EAAQzK,CAAK,EAC3B4L,EAAM,EAEFnB,EAAOA,EAAO,OAAS,CAAC,IAAM,KACzB,CAAE,GAGXoB,EAAUd,EAAY,CAAC,EAEvB9Q,EAAQ,OAASF,GAAWmR,EAAsBjR,EAAQ,OAAQA,CAAO,EAClEA,EAAQ,OAChB,CAMD,SAASuR,EAAe1T,EAAOgU,EAAY,CACzC,OAAOC,GAAgBR,EAAYzT,CAAK,EAAGgU,CAAU,CACtD,CAGD,SAASP,EAAYzT,EAAO,CAC1B,OAAOkU,GAAYvB,EAAQ3S,CAAK,CACjC,CAGD,SAAS2T,GAAM,CACb,OAAO,OAAO,OAAO,CAAE,EAAEzS,CAAK,CAC/B,CAGD,SAAS0S,EAAW3X,EAAO,CACzBkX,EAAYlX,EAAM,IAAI,EAAIA,EAAM,OAChCkY,EAAyB,CAC1B,CAeD,SAASL,GAAO,CAEd,IAAIM,EAEJ,KAAOlT,EAAM,OAASyR,EAAO,QAAQ,CACnC,MAAMG,EAAQH,EAAOzR,EAAM,MAAM,EAEjC,GAAI,OAAO4R,GAAU,SAOnB,IANAsB,EAAalT,EAAM,OAEfA,EAAM,aAAe,IACvBA,EAAM,aAAe,GAIrBA,EAAM,SAAWkT,GACjBlT,EAAM,aAAe4R,EAAM,QAE3BuB,EAAGvB,EAAM,WAAW5R,EAAM,YAAY,CAAC,OAGzCmT,EAAGvB,CAAK,CAEX,CACF,CAQD,SAASuB,EAAGxW,EAAM,CAGhB0G,EAAQA,EAAM1G,CAAI,CACnB,CAGD,SAASwV,EAAQxV,EAAM,CACjBc,EAAmBd,CAAI,GACzBqD,EAAM,OACNA,EAAM,OAAS,EACfA,EAAM,QAAUrD,IAAS,GAAK,EAAI,EAClCsW,EAAyB,GAChBtW,IAAS,KAClBqD,EAAM,SACNA,EAAM,UAGJA,EAAM,aAAe,EACvBA,EAAM,UAENA,EAAM,eAIFA,EAAM,eAAiByR,EAAOzR,EAAM,MAAM,EAAE,SAC9CA,EAAM,aAAe,GACrBA,EAAM,WAIViB,EAAQ,SAAWtE,CAGpB,CAGD,SAASiJ,EAAM1H,EAAMkV,EAAQ,CAG3B,MAAMtU,EAAQsU,GAAU,CAAE,EAC1B,OAAAtU,EAAM,KAAOZ,EACbY,EAAM,MAAQ2T,EAAK,EACnBxR,EAAQ,OAAO,KAAK,CAAC,QAASnC,EAAOmC,CAAO,CAAC,EAC7C5B,EAAM,KAAKP,CAAK,EACTA,CACR,CAGD,SAASsE,EAAKlF,EAAM,CAClB,MAAMY,EAAQO,EAAM,IAAK,EACzB,OAAAP,EAAM,IAAM2T,EAAK,EACjBxR,EAAQ,OAAO,KAAK,CAAC,OAAQnC,EAAOmC,CAAO,CAAC,EACrCnC,CACR,CAOD,SAASuT,EAAsBgB,EAAW1O,EAAM,CAC9CkO,EAAUQ,EAAW1O,EAAK,IAAI,CAC/B,CAOD,SAAS2N,EAAkBgB,EAAG3O,EAAM,CAClCA,EAAK,QAAS,CACf,CAQD,SAASyN,EAAiBmB,EAAUH,EAAQ,CAC1C,OAAO5W,EAWP,SAASA,EAAKI,EAAYuP,EAAaqH,GAAY,CAEjD,IAAIC,EAGAC,EAGAC,EAGAhP,EACJ,OAAO,MAAM,QAAQ/H,CAAU,EAE3BgX,EAAuBhX,CAAU,EACjC,aAAcA,EACdgX,EAAuB,CAAChX,CAAU,CAAC,EACnCiX,EAAsBjX,CAAU,EAQpC,SAASiX,EAAsBC,EAAK,CAClC,OAAOlY,EAGP,SAASA,EAAMe,GAAM,CACnB,MAAMoX,GAAMpX,KAAS,MAAQmX,EAAInX,EAAI,EAC/BrB,GAAMqB,KAAS,MAAQmX,EAAI,KAC3BnY,GAAO,CAIX,GAAI,MAAM,QAAQoY,EAAG,EAAIA,GAAMA,GAAM,CAACA,EAAG,EAAI,GAC7C,GAAI,MAAM,QAAQzY,EAAG,EAAIA,GAAMA,GAAM,CAACA,EAAG,EAAI,EAC9C,EACD,OAAOsY,EAAuBjY,EAAI,EAAEgB,EAAI,CACzC,CACF,CAQD,SAASiX,EAAuBjY,EAAM,CAIpC,OAHA8X,EAAmB9X,EACnB+X,EAAiB,EAEb/X,EAAK,SAAW,EACX6X,GAGFQ,GAAgBrY,EAAK+X,CAAc,CAAC,CAC5C,CAQD,SAASM,GAAgBX,EAAW,CAClC,OAAOzX,EAGP,SAASA,EAAMe,GAAM,CAYnB,OAPAgI,EAAOsP,EAAO,EACdN,EAAmBN,EAEdA,EAAU,UACbpS,EAAQ,iBAAmBoS,GAI3BA,EAAU,MACVpS,EAAQ,OAAO,WAAW,QAAQ,KAAK,SAASoS,EAAU,IAAI,EAEvDxS,GAAQ,EAGVwS,EAAU,SAAS,KAIxBD,EAAS,OAAO,OAAO,OAAO,OAAOnS,CAAO,EAAGmS,CAAM,EAAInS,EACzDjD,EACAC,GACA4C,EACD,EAAClE,EAAI,CACP,CACF,CAGD,SAASsB,GAAGtB,EAAM,CAEhB,OAAA4W,EAASI,EAAkBhP,CAAI,EACxBwH,CACR,CAGD,SAAStL,GAAIlE,EAAM,CAIjB,OAFAgI,EAAK,QAAS,EAEV,EAAE+O,EAAiBD,EAAiB,OAC/BO,GAAgBP,EAAiBC,CAAc,CAAC,EAGlDF,EACR,CACF,CACF,CAOD,SAASX,EAAUQ,EAAWrB,EAAM,CAC9BqB,EAAU,YAAc,CAACnB,EAAqB,SAASmB,CAAS,GAClEnB,EAAqB,KAAKmB,CAAS,EAGjCA,EAAU,SACZ3X,GACEuF,EAAQ,OACR+Q,EACA/Q,EAAQ,OAAO,OAAS+Q,EACxBqB,EAAU,QAAQpS,EAAQ,OAAO,MAAM+Q,CAAI,EAAG/Q,CAAO,CACtD,EAGCoS,EAAU,YACZpS,EAAQ,OAASoS,EAAU,UAAUpS,EAAQ,OAAQA,CAAO,EAE/D,CAOD,SAASgT,GAAQ,CACf,MAAMC,EAAazB,EAAK,EAClB0B,EAAgBlT,EAAQ,SACxBmT,EAAwBnT,EAAQ,iBAChCoT,EAAmBpT,EAAQ,OAAO,OAClCqT,EAAa,MAAM,KAAKjV,CAAK,EACnC,MAAO,CACL,QAAAkV,GACA,KAAMF,CACP,EAOD,SAASE,IAAU,CACjBvU,EAAQkU,EACRjT,EAAQ,SAAWkT,EACnBlT,EAAQ,iBAAmBmT,EAC3BnT,EAAQ,OAAO,OAASoT,EACxBhV,EAAQiV,EACRrB,EAAyB,CAC1B,CACF,CAQD,SAASA,GAA0B,CAC7BjT,EAAM,QAAQiS,GAAejS,EAAM,OAAS,IAC9CA,EAAM,OAASiS,EAAYjS,EAAM,IAAI,EACrCA,EAAM,QAAUiS,EAAYjS,EAAM,IAAI,EAAI,EAE7C,CACH,CASA,SAASgT,GAAYvB,EAAQ3S,EAAO,CAClC,MAAM0V,EAAa1V,EAAM,MAAM,OACzB2V,EAAmB3V,EAAM,MAAM,aAC/B4V,EAAW5V,EAAM,IAAI,OACrB6V,EAAiB7V,EAAM,IAAI,aAGjC,IAAI8V,EAEJ,OAAIJ,IAAeE,EAEjBE,EAAO,CAACnD,EAAO+C,CAAU,EAAE,MAAMC,EAAkBE,CAAc,CAAC,GAElEC,EAAOnD,EAAO,MAAM+C,EAAYE,CAAQ,EAEpCD,EAAmB,KAErBG,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAE,MAAMH,CAAgB,GAGtCE,EAAiB,GAEnBC,EAAK,KAAKnD,EAAOiD,CAAQ,EAAE,MAAM,EAAGC,CAAc,CAAC,GAIhDC,CACT,CASA,SAAS7B,GAAgBtB,EAAQqB,EAAY,CAC3C,IAAIrX,EAAQ,GAGZ,MAAMD,EAAS,CAAE,EAGjB,IAAIqZ,EAEJ,KAAO,EAAEpZ,EAAQgW,EAAO,QAAQ,CAC9B,MAAMG,EAAQH,EAAOhW,CAAK,EAG1B,IAAIV,EAEJ,GAAI,OAAO6W,GAAU,SACnB7W,EAAQ6W,MAER,QAAQA,EAAK,CACX,IAAK,GAAI,CACP7W,EAAQ,KACR,KACD,CAED,IAAK,GAAI,CACPA,EAAQ;AAAA,EACR,KACD,CAED,IAAK,GAAI,CACPA,EAAQ;AAAA,EACR,KACD,CAED,IAAK,GAAI,CACPA,EAAQ+X,EAAa,IAAM,IAC3B,KACD,CAED,IAAK,GAAI,CACP,GAAI,CAACA,GAAc+B,EAAO,SAC1B9Z,EAAQ,IACR,KACD,CAED,QAEEA,EAAQ,OAAO,aAAa6W,CAAK,CAEpC,CAEHiD,EAAQjD,IAAU,GAClBpW,EAAO,KAAKT,CAAK,CAClB,CAED,OAAOS,EAAO,KAAK,EAAE,CACvB,CCtjBO,MAAMwD,GAAW,CACrB,GAAKrD,EACL,GAAKA,EACL,GAAKA,EACL,GAAKA,EACL,GAAKA,EACL,GAAKA,EACL,GAAKA,EACL,GAAKA,EACL,GAAKA,EACL,GAAKA,EACL,GAAKA,EACL,GAAKA,EACL,GAAKA,EACL,GAAKsH,EACR,EAGa6R,GAAiB,CAC3B,GAAK/L,EACR,EAGagM,GAAc,CACzB,CAAC,EAAE,EAAG9P,GACN,CAAC,EAAE,EAAGA,GACL,GAAKA,EACR,EAGayL,GAAO,CACjB,GAAKnH,GACL,GAAK6F,GACL,GAAK,CAACiB,GAAiBjB,EAAa,EACpC,GAAKtF,GACL,GAAKuG,GACL,GAAKjB,GACL,GAAKrL,GACL,IAAMA,EACT,EAGakN,GAAS,CACnB,GAAKvN,GACL,GAAKJ,EACR,EAGa7B,GAAO,CAClB,CAAC,EAAE,EAAGyN,GACN,CAAC,EAAE,EAAGA,GACN,CAAC,EAAE,EAAGA,GACL,GAAKJ,GACL,GAAKpL,GACL,GAAKtC,GACL,GAAK,CAACiB,GAAU4J,EAAQ,EACxB,GAAK+C,GACL,GAAK,CAAC3F,GAAiB/F,EAAe,EACtC,GAAKsK,GACL,GAAKxM,GACL,GAAKmE,EACR,EAGayP,GAAa,CACxB,KAAM,CAAC5T,GAAW6T,EAAW,CAC/B,EAGajT,GAAmB,CAC9B,KAAM,CAAC,GAAI,EAAE,CACf,EAGakT,GAAU,CACrB,KAAM,CAAE,CACV,oNCrFO,SAASC,GAAMna,EAAU,GAAI,CAGlC,MAAM4B,EAAaR,GAEjB,CAACgZ,EAAiB,EAAE,OAAOpa,EAAQ,YAAc,CAAA,CAAE,CACpD,EAGK8W,EAAS,CACb,QAAS,CAAE,EACX,KAAM,CAAE,EACR,WAAAlV,EACA,QAASyY,EAAO9W,EAAO,EACvB,SAAU8W,EAAOrW,EAAQ,EACzB,KAAMqW,EAAO3E,EAAI,EACjB,OAAQ2E,EAAOpE,EAAM,EACrB,KAAMoE,EAAO5T,EAAI,CAClB,EACD,OAAOqQ,EAKP,SAASuD,EAAOzE,EAAS,CACvB,OAAO0E,EAGP,SAASA,EAAQtD,EAAM,CACrB,OAAOH,GAAgBC,EAAQlB,EAASoB,CAAI,CAC7C,CACF,CACH,CCrCA,MAAMuD,GAAS,cAKR,SAASC,IAAa,CAC3B,IAAIC,EAAS,EACTpL,EAAS,GAGTzO,EAAQ,GAGR8Z,EACJ,OAAOC,EAGP,SAASA,EAAa5a,EAAO6a,EAAU7Z,EAAK,CAE1C,MAAM0V,EAAS,CAAE,EAGjB,IAAIoE,EAGAC,EAGAtP,EAGAuP,EAGApZ,EAcJ,IAZA5B,EAAQsP,EAAStP,EAAM,SAAS6a,CAAQ,EACxCpP,EAAgB,EAChB6D,EAAS,GAELzO,IACEb,EAAM,WAAW,CAAC,IAAM,OAC1ByL,IAGF5K,EAAQ,QAGH4K,EAAgBzL,EAAM,QAAQ,CAOnC,GANAwa,GAAO,UAAY/O,EACnBqP,EAAQN,GAAO,KAAKxa,CAAK,EACzBgb,EACEF,GAASA,EAAM,QAAU,OAAYA,EAAM,MAAQ9a,EAAM,OAC3D4B,EAAO5B,EAAM,WAAWgb,CAAW,EAE/B,CAACF,EAAO,CACVxL,EAAStP,EAAM,MAAMyL,CAAa,EAClC,KACD,CAED,GAAI7J,IAAS,IAAM6J,IAAkBuP,GAAeL,EAClDjE,EAAO,KAAK,EAAE,EACdiE,EAAmB,WAYnB,QAVIA,IACFjE,EAAO,KAAK,EAAE,EACdiE,EAAmB,QAGjBlP,EAAgBuP,IAClBtE,EAAO,KAAK1W,EAAM,MAAMyL,EAAeuP,CAAW,CAAC,EACnDN,GAAUM,EAAcvP,GAGlB7J,EAAI,CACV,IAAK,GAAG,CACN8U,EAAO,KAAK,KAAK,EACjBgE,IACA,KACD,CAED,IAAK,GAAG,CAIN,IAHAK,EAAO,KAAK,KAAKL,EAAS,CAAC,EAAI,EAC/BhE,EAAO,KAAK,EAAE,EAEPgE,IAAWK,GAAMrE,EAAO,KAAK,EAAE,EAEtC,KACD,CAED,IAAK,IAAI,CACPA,EAAO,KAAK,EAAE,EACdgE,EAAS,EACT,KACD,CAED,QACEC,EAAmB,GACnBD,EAAS,CAEZ,CAGHjP,EAAgBuP,EAAc,CAC/B,CAED,OAAIha,IACE2Z,GAAkBjE,EAAO,KAAK,EAAE,EAChCpH,GAAQoH,EAAO,KAAKpH,CAAM,EAC9BoH,EAAO,KAAK,IAAI,GAGXA,CACR,CACH,CCvHO,SAASuE,GAAYhV,EAAQ,CAClC,KAAO,CAAC8E,GAAY9E,CAAM,GAAG,CAI7B,OAAOA,CACT,CCLO,SAASiV,GAAgClb,EAAOmb,EAAM,CAC3D,MAAMvZ,EAAO,OAAO,SAAS5B,EAAOmb,CAAI,EAExC,OAEEvZ,EAAO,GACPA,IAAS,IACRA,EAAO,IAAMA,EAAO,IACpBA,EAAO,KAAOA,EAAO,KACrBA,EAAO,OAASA,EAAO,OACvBA,EAAO,OAASA,EAAO,QACvBA,EAAO,SAAW,QAClBA,EAAO,SAAW,OACnBA,EAAO,QAEA,IAGF,OAAO,aAAaA,CAAI,CACjC,CC3BA,MAAMwZ,GACJ,oEAWK,SAASC,GAAarb,EAAO,CAClC,OAAOA,EAAM,QAAQob,GAA4BE,EAAM,CACzD,CAQA,SAASA,GAAOC,EAAIC,EAAIC,EAAI,CAC1B,GAAID,EAEF,OAAOA,EAKT,GAFaC,EAAG,WAAW,CAAC,IAEf,GAAI,CACf,MAAMC,EAAOD,EAAG,WAAW,CAAC,EACtBE,EAAMD,IAAS,KAAOA,IAAS,GACrC,OAAOR,GAAgCO,EAAG,MAAME,EAAM,EAAI,CAAC,EAAGA,EAAM,GAAK,EAAE,CAC5E,CAED,OAAOjT,GAA8B+S,CAAE,GAAKF,CAC9C,CCHO,SAASK,GAAkB5b,EAAO,CAEvC,MAAI,CAACA,GAAS,OAAOA,GAAU,SACtB,GAIL,aAAcA,GAAS,SAAUA,EAC5B6b,GAAS7b,EAAM,QAAQ,EAI5B,UAAWA,GAAS,QAASA,EACxB6b,GAAS7b,CAAK,EAInB,SAAUA,GAAS,WAAYA,EAC1BiF,GAAMjF,CAAK,EAIb,EACT,CAMA,SAASiF,GAAMA,EAAO,CACpB,OAAOvE,GAAMuE,GAASA,EAAM,IAAI,EAAI,IAAMvE,GAAMuE,GAASA,EAAM,MAAM,CACvE,CAMA,SAAS4W,GAASC,EAAK,CACrB,OAAO7W,GAAM6W,GAAOA,EAAI,KAAK,EAAI,IAAM7W,GAAM6W,GAAOA,EAAI,GAAG,CAC7D,CAMA,SAASpb,GAAMV,EAAO,CACpB,OAAOA,GAAS,OAAOA,GAAU,SAAWA,EAAQ,CACtD,CCwEA,MAAM+b,GAAM,CAAE,EAAC,eAYFC,GAcX,SAAUhc,EAAO6a,EAAU5a,EAAS,CAClC,OAAI,OAAO4a,GAAa,WACtB5a,EAAU4a,EACVA,EAAW,QAENoB,GAAShc,CAAO,EACrBgb,GACEb,GAAMna,CAAO,EAAE,WAAW,MAAMwa,GAAU,EAAGza,EAAO6a,EAAU,EAAI,CAAC,CACpE,CACF,CACF,EAOH,SAASoB,GAAShc,EAAS,CAEzB,MAAMic,EAAS,CACb,WAAY,CAAE,EACd,eAAgB,CAAC,WAAY,WAAY,UAAW,YAAa,QAAQ,EACzE,MAAO,CACL,SAAUC,EAAOC,EAAI,EACrB,iBAAkBC,EAClB,cAAeA,EACf,WAAYF,EAAO1G,EAAO,EAC1B,WAAY0G,EAAOjU,EAAU,EAC7B,gBAAiBmU,EACjB,mBAAoBA,EACpB,WAAYF,EAAOG,EAAQ,EAC3B,oBAAqBhN,EACrB,oBAAqBA,EACrB,aAAc6M,EAAOG,GAAUhN,CAAM,EACrC,SAAU6M,EAAO3R,GAAU8E,CAAM,EACjC,aAAc+M,EACd,KAAMA,EACN,cAAeA,EACf,WAAYF,EAAOnO,EAAU,EAC7B,4BAA6BsB,EAC7B,sBAAuBA,EACvB,sBAAuBA,EACvB,SAAU6M,EAAOI,EAAQ,EACzB,gBAAiBJ,EAAOK,EAAS,EACjC,kBAAmBL,EAAOK,EAAS,EACnC,SAAUL,EAAOM,GAAMnN,CAAM,EAC7B,aAAc+M,EACd,SAAUF,EAAOM,GAAMnN,CAAM,EAC7B,aAAc+M,EACd,MAAOF,EAAOO,EAAK,EACnB,MAAOpN,EACP,KAAM6M,EAAOC,EAAI,EACjB,SAAUD,EAAOQ,EAAQ,EACzB,cAAeC,EACf,YAAaT,EAAOvb,GAAMic,CAAkB,EAC5C,cAAeV,EAAOvb,EAAI,EAC1B,UAAWub,EAAOzG,EAAS,EAC3B,UAAWoH,GACX,gBAAiBxN,EACjB,0BAA2BA,EAC3B,oBAAqBA,EACrB,cAAe6M,EAAO1G,EAAO,EAC7B,OAAQ0G,EAAOY,EAAM,EACrB,cAAeZ,EAAO9H,EAAa,CACpC,EACD,KAAM,CACJ,WAAY2I,EAAQ,EACpB,mBAAoBC,EACpB,SAAUD,EAAQ,EAClB,cAAeE,GACf,iBAAkBC,GAClB,WAAYH,EAAQ,EACpB,qBAAsBI,EACtB,oCAAqCC,EACrC,gCAAiCA,EACjC,wBAAyBC,GACzB,WAAYN,EAAOO,CAAgB,EACnC,gBAAiBC,EACjB,oBAAqBC,EACrB,oBAAqBC,EACrB,cAAeN,EACf,aAAcJ,EAAOW,CAAkB,EACvC,SAAUX,EAAOY,CAAc,EAC/B,aAAcR,EACd,KAAMA,EACN,WAAYJ,EAAQ,EACpB,4BAA6Ba,EAC7B,sBAAuBC,EACvB,sBAAuBC,EACvB,SAAUf,EAAQ,EAClB,gBAAiBA,EAAOgB,CAAe,EACvC,kBAAmBhB,EAAOgB,CAAe,EACzC,SAAUhB,EAAOiB,CAAc,EAC/B,aAAcb,EACd,SAAUJ,EAAOkB,EAAc,EAC/B,aAAcd,EACd,MAAOJ,EAAOmB,CAAW,EACzB,MAAOC,EACP,UAAWC,EACX,WAAYC,EACZ,KAAMtB,EAAOuB,CAAU,EACvB,SAAUvB,EAAQ,EAClB,YAAaA,EAAQ,EACrB,cAAeA,EAAQ,EACvB,UAAWA,EAAQ,EACnB,gBAAiBwB,EACjB,0BAA2BC,EAC3B,oBAAqBC,GACrB,SAAUC,GACV,cAAe3B,EAAO4B,CAAmB,EACzC,0BAA2BC,EAC3B,kBAAmBC,EACnB,OAAQ9B,EAAQ,EAChB,cAAeA,EAAQ,CACxB,CACF,EACD+B,GAAU7C,GAASjc,GAAW,CAAA,GAAI,iBAAmB,CAAA,CAAE,EAGvD,MAAM+D,EAAO,CAAE,EACf,OAAOgb,EAUP,SAASA,EAAQ/Y,EAAQ,CAEvB,IAAIgZ,EAAO,CACT,KAAM,OACN,SAAU,CAAE,CACb,EAED,MAAM/Y,EAAU,CACd,MAAO,CAAC+Y,CAAI,EACZ,WAAY,CAAE,EACd,OAAA/C,EACA,MAAArR,EACA,KAAAxC,EACA,OAAAiH,EACA,OAAA4P,EACA,QAAAC,EACA,QAAAC,CACD,EAEKC,EAAY,CAAE,EACpB,IAAI3e,EAAQ,GACZ,KAAO,EAAEA,EAAQuF,EAAO,QAGtB,GACEA,EAAOvF,CAAK,EAAE,CAAC,EAAE,OAAS,eAC1BuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,OAAS,gBAE1B,GAAIuF,EAAOvF,CAAK,EAAE,CAAC,IAAM,QACvB2e,EAAU,KAAK3e,CAAK,MACf,CACL,MAAM4I,EAAO+V,EAAU,IAAK,EAC5B3e,EAAQ4e,EAAYrZ,EAAQqD,EAAM5I,CAAK,CACxC,CAIL,IADAA,EAAQ,GACD,EAAEA,EAAQuF,EAAO,QAAQ,CAC9B,MAAMsZ,EAAUrD,EAAOjW,EAAOvF,CAAK,EAAE,CAAC,CAAC,EACnCqb,GAAI,KAAKwD,EAAStZ,EAAOvF,CAAK,EAAE,CAAC,EAAE,IAAI,GACzC6e,EAAQtZ,EAAOvF,CAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAC7B,OAAO,OACL,CACE,eAAgBuF,EAAOvF,CAAK,EAAE,CAAC,EAAE,cAClC,EACDwF,CACD,EACDD,EAAOvF,CAAK,EAAE,CAAC,CAChB,CAEJ,CAGD,GAAIwF,EAAQ,WAAW,OAAS,EAAG,CACjC,MAAMoD,EAAOpD,EAAQ,WAAWA,EAAQ,WAAW,OAAS,CAAC,GAC7CoD,EAAK,CAAC,GAAKkW,IACnB,KAAKtZ,EAAS,OAAWoD,EAAK,CAAC,CAAC,CACzC,CA0BD,IAvBA2V,EAAK,SAAW,CACd,MAAOha,GACLgB,EAAO,OAAS,EACZA,EAAO,CAAC,EAAE,CAAC,EAAE,MACb,CACE,KAAM,EACN,OAAQ,EACR,OAAQ,CACT,CACN,EACD,IAAKhB,GACHgB,EAAO,OAAS,EACZA,EAAOA,EAAO,OAAS,CAAC,EAAE,CAAC,EAAE,IAC7B,CACE,KAAM,EACN,OAAQ,EACR,OAAQ,CACT,CACN,CACF,EAGDvF,EAAQ,GACD,EAAEA,EAAQwb,EAAO,WAAW,QACjC+C,EAAO/C,EAAO,WAAWxb,CAAK,EAAEue,CAAI,GAAKA,EAE3C,OAAOA,CACR,CAQD,SAASK,EAAYrZ,EAAQpF,EAAO4e,EAAQ,CAC1C,IAAI/e,EAAQG,EAAQ,EAChB6e,EAAmB,GACnBC,EAAa,GAEbhD,GAEAzR,GAEA0U,GAEA7K,GACJ,KAAO,EAAErU,GAAS+e,GAAQ,CACxB,MAAMxU,EAAQhF,EAAOvF,CAAK,EAmC1B,GAjCEuK,EAAM,CAAC,EAAE,OAAS,iBAClBA,EAAM,CAAC,EAAE,OAAS,eAClBA,EAAM,CAAC,EAAE,OAAS,cAEdA,EAAM,CAAC,IAAM,QACfyU,IAEAA,IAEF3K,GAAW,QACF9J,EAAM,CAAC,EAAE,OAAS,kBACvBA,EAAM,CAAC,IAAM,UAEb0R,IACA,CAAC5H,IACD,CAAC2K,GACD,CAACE,KAEDA,GAAsBlf,GAExBqU,GAAW,QAGb9J,EAAM,CAAC,EAAE,OAAS,cAClBA,EAAM,CAAC,EAAE,OAAS,iBAClBA,EAAM,CAAC,EAAE,OAAS,kBAClBA,EAAM,CAAC,EAAE,OAAS,kBAClBA,EAAM,CAAC,EAAE,OAAS,6BAIlB8J,GAAW,QAGV,CAAC2K,GACAzU,EAAM,CAAC,IAAM,SACbA,EAAM,CAAC,EAAE,OAAS,kBACnByU,IAAqB,IACpBzU,EAAM,CAAC,IAAM,SACZA,EAAM,CAAC,EAAE,OAAS,iBACjBA,EAAM,CAAC,EAAE,OAAS,eACtB,CACA,GAAI0R,GAAU,CACZ,IAAIkD,GAAYnf,EAEhB,IADAwK,GAAY,OACL2U,MAAa,CAClB,MAAMC,GAAY7Z,EAAO4Z,EAAS,EAClC,GACEC,GAAU,CAAC,EAAE,OAAS,cACtBA,GAAU,CAAC,EAAE,OAAS,kBACtB,CACA,GAAIA,GAAU,CAAC,IAAM,OAAQ,SACzB5U,KACFjF,EAAOiF,EAAS,EAAE,CAAC,EAAE,KAAO,kBAC5ByU,EAAa,IAEfG,GAAU,CAAC,EAAE,KAAO,aACpB5U,GAAY2U,EAC1B,SACc,EAAAC,GAAU,CAAC,EAAE,OAAS,cACtBA,GAAU,CAAC,EAAE,OAAS,oBACtBA,GAAU,CAAC,EAAE,OAAS,8BACtBA,GAAU,CAAC,EAAE,OAAS,oBACtBA,GAAU,CAAC,EAAE,OAAS,kBAItB,KAEH,CAECF,KACC,CAAC1U,IAAa0U,GAAsB1U,MAErCyR,GAAS,QAAU,IAIrBA,GAAS,IAAM,OAAO,OACpB,CAAE,EACFzR,GAAYjF,EAAOiF,EAAS,EAAE,CAAC,EAAE,MAAQD,EAAM,CAAC,EAAE,GACnD,EACDhF,EAAO,OAAOiF,IAAaxK,EAAO,EAAG,CAAC,OAAQic,GAAU1R,EAAM,CAAC,CAAC,CAAC,EACjEvK,IACA+e,GACD,CAGGxU,EAAM,CAAC,EAAE,OAAS,mBACpB0R,GAAW,CACT,KAAM,WACN,QAAS,GACT,MAAO,OAAO,OAAO,CAAA,EAAI1R,EAAM,CAAC,EAAE,KAAK,EAEvC,IAAK,MACN,EAEDhF,EAAO,OAAOvF,EAAO,EAAG,CAAC,QAASic,GAAU1R,EAAM,CAAC,CAAC,CAAC,EACrDvK,IACA+e,IACAG,GAAsB,OACtB7K,GAAW,GAEd,CACF,CACD,OAAA9O,EAAOpF,CAAK,EAAE,CAAC,EAAE,QAAU8e,EACpBF,CACR,CAcD,SAASN,EAAQY,EAAK/f,EAAO,CAC3BgE,EAAK+b,CAAG,EAAI/f,CACb,CAYD,SAASof,EAAQW,EAAK,CACpB,OAAO/b,EAAK+b,CAAG,CAChB,CAYD,SAAS5D,EAAO7B,EAAQ0F,EAAK,CAC3B,OAAOxZ,EAOP,SAASA,EAAKzC,EAAO,CACnB8G,EAAM,KAAK,KAAMyP,EAAOvW,CAAK,EAAGA,CAAK,EACjCic,GAAKA,EAAI,KAAK,KAAMjc,CAAK,CAC9B,CACF,CAMD,SAASuL,GAAS,CAChB,KAAK,MAAM,KAAK,CACd,KAAM,WACN,SAAU,CAAE,CAClB,CAAK,CACF,CAgBD,SAASzE,EAAMvK,EAAMyD,EAAOkc,EAAc,CAGxC,OAFe,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAExC,SAAS,KAAK3f,CAAI,EACzB,KAAK,MAAM,KAAKA,CAAI,EACpB,KAAK,WAAW,KAAK,CAACyD,EAAOkc,CAAY,CAAC,EAE1C3f,EAAK,SAAW,CACd,MAAO2E,GAAMlB,EAAM,KAAK,CACzB,EACMzD,CACR,CAUD,SAAS0c,EAAOgD,EAAK,CACnB,OAAO3Y,EAOP,SAASA,EAAMtD,EAAO,CAChBic,GAAKA,EAAI,KAAK,KAAMjc,CAAK,EAC7BsE,EAAK,KAAK,KAAMtE,CAAK,CACtB,CACF,CAYD,SAASsE,EAAKtE,EAAOmc,EAAa,CAChC,MAAM5f,EAAO,KAAK,MAAM,IAAK,EACvBkG,EAAO,KAAK,WAAW,IAAK,EAClC,GAAKA,EAWMA,EAAK,CAAC,EAAE,OAASzC,EAAM,OAC5Bmc,EACFA,EAAY,KAAK,KAAMnc,EAAOyC,EAAK,CAAC,CAAC,GAErBA,EAAK,CAAC,GAAKgZ,IACnB,KAAK,KAAMzb,EAAOyC,EAAK,CAAC,CAAC,OAfnC,OAAM,IAAI,MACR,iBACEzC,EAAM,KACN,MACA6X,GAAkB,CAChB,MAAO7X,EAAM,MACb,IAAKA,EAAM,GACvB,CAAW,EACD,kBACH,EASH,OAAAzD,EAAK,SAAS,IAAM2E,GAAMlB,EAAM,GAAG,EAC5BzD,CACR,CAMD,SAAS4e,GAAS,CAChB,OAAOnf,GAAS,KAAK,MAAM,IAAG,CAAE,CACjC,CAUD,SAAS8c,GAAqB,CAC5BsC,EAAQ,8BAA+B,EAAI,CAC5C,CAMD,SAASvC,EAAqB7Y,EAAO,CACnC,GAAIqb,EAAQ,6BAA6B,EAAG,CAC1C,MAAMe,EAAW,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EACjDA,EAAS,MAAQ,OAAO,SAAS,KAAK,eAAepc,CAAK,EAAG,EAAE,EAC/Dob,EAAQ,6BAA6B,CACtC,CACF,CAMD,SAAS1B,GAA4B,CACnC,MAAMzZ,EAAO,KAAK,OAAQ,EACpB1D,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,KAAO0D,CACb,CAMD,SAAS0Z,GAA4B,CACnC,MAAM1Z,EAAO,KAAK,OAAQ,EACpB1D,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,KAAO0D,CACb,CAMD,SAASwZ,GAAwB,CAE3B4B,EAAQ,gBAAgB,IAC5B,KAAK,OAAQ,EACbD,EAAQ,iBAAkB,EAAI,EAC/B,CAMD,SAAS5B,GAAmB,CAC1B,MAAMvZ,EAAO,KAAK,OAAQ,EACpB1D,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQ0D,EAAK,QAAQ,2BAA4B,EAAE,EACxDmb,EAAQ,gBAAgB,CACzB,CAMD,SAASxB,GAAqB,CAC5B,MAAM3Z,EAAO,KAAK,OAAQ,EACpB1D,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQ0D,EAAK,QAAQ,eAAgB,EAAE,CAC7C,CAMD,SAAS8Z,EAA4B/Z,EAAO,CAC1C,MAAMwJ,EAAQ,KAAK,OAAQ,EACrBjN,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQiN,EACbjN,EAAK,WAAayN,GAChB,KAAK,eAAehK,CAAK,CAC1B,EAAC,YAAa,CAChB,CAMD,SAASga,GAA8B,CACrC,MAAM/Z,EAAO,KAAK,OAAQ,EACpB1D,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQ0D,CACd,CAMD,SAAS6Z,GAAoC,CAC3C,MAAM7Z,EAAO,KAAK,OAAQ,EACpB1D,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,IAAM0D,CACZ,CAMD,SAASiZ,EAAyBlZ,EAAO,CACvC,MAAMzD,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7C,GAAI,CAACA,EAAK,MAAO,CACf,MAAM8f,EAAQ,KAAK,eAAerc,CAAK,EAAE,OACzCzD,EAAK,MAAQ8f,CACd,CACF,CAMD,SAAStB,GAA0B,CACjCK,EAAQ,+BAAgC,EAAI,CAC7C,CAMD,SAASN,EAAgC9a,EAAO,CAC9C,MAAMzD,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQ,KAAK,eAAeyD,CAAK,EAAE,WAAW,CAAC,IAAM,GAAK,EAAI,CACpE,CAMD,SAAS6a,GAAsB,CAC7BO,EAAQ,8BAA8B,CACvC,CAOD,SAAS9C,EAAYtY,EAAO,CAC1B,MAAMzD,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7C,IAAIgJ,EAAOhJ,EAAK,SAASA,EAAK,SAAS,OAAS,CAAC,GAC7C,CAACgJ,GAAQA,EAAK,OAAS,UAEzBA,EAAO5C,GAAM,EAEb4C,EAAK,SAAW,CACd,MAAOrE,GAAMlB,EAAM,KAAK,CACzB,EAEDzD,EAAK,SAAS,KAAKgJ,CAAI,GAEzB,KAAK,MAAM,KAAKA,CAAI,CACrB,CAOD,SAAS8T,EAAWrZ,EAAO,CACzB,MAAMuF,EAAO,KAAK,MAAM,IAAK,EAC7BA,EAAK,OAAS,KAAK,eAAevF,CAAK,EACvCuF,EAAK,SAAS,IAAMrE,GAAMlB,EAAM,GAAG,CACpC,CAOD,SAASua,EAAiBva,EAAO,CAC/B,MAAMmC,EAAU,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAEhD,GAAIkZ,EAAQ,aAAa,EAAG,CAC1B,MAAM9V,EAAOpD,EAAQ,SAASA,EAAQ,SAAS,OAAS,CAAC,EACzDoD,EAAK,SAAS,IAAMrE,GAAMlB,EAAM,GAAG,EACnCob,EAAQ,aAAa,EACrB,MACD,CAEC,CAACC,EAAQ,8BAA8B,GACvClD,EAAO,eAAe,SAAShW,EAAQ,IAAI,IAE3CmW,EAAY,KAAK,KAAMtY,CAAK,EAC5BqZ,EAAW,KAAK,KAAMrZ,CAAK,EAE9B,CAOD,SAASia,GAAkB,CACzBmB,EAAQ,cAAe,EAAI,CAC5B,CAOD,SAASlB,GAAiB,CACxB,MAAMja,EAAO,KAAK,OAAQ,EACpB1D,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQ0D,CACd,CAOD,SAASka,IAAiB,CACxB,MAAMla,EAAO,KAAK,OAAQ,EACpB1D,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQ0D,CACd,CAOD,SAAS4Z,GAAiB,CACxB,MAAM5Z,EAAO,KAAK,OAAQ,EACpB1D,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQ0D,CACd,CAOD,SAASua,GAAa,CACpB,MAAMje,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAI7C,GAAI8e,EAAQ,aAAa,EAAG,CAE1B,MAAMiB,EAAgBjB,EAAQ,eAAe,GAAK,WAClD9e,EAAK,MAAQ,YAEbA,EAAK,cAAgB+f,EAErB,OAAO/f,EAAK,IACZ,OAAOA,EAAK,KAClB,MAEM,OAAOA,EAAK,WAEZ,OAAOA,EAAK,MAEd6e,EAAQ,eAAe,CACxB,CAOD,SAAShB,GAAc,CACrB,MAAM7d,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAI7C,GAAI8e,EAAQ,aAAa,EAAG,CAE1B,MAAMiB,EAAgBjB,EAAQ,eAAe,GAAK,WAClD9e,EAAK,MAAQ,YAEbA,EAAK,cAAgB+f,EAErB,OAAO/f,EAAK,IACZ,OAAOA,EAAK,KAClB,MAEM,OAAOA,EAAK,WAEZ,OAAOA,EAAK,MAEd6e,EAAQ,eAAe,CACxB,CAOD,SAASd,EAAgBta,EAAO,CAC9B,MAAMmS,EAAS,KAAK,eAAenS,CAAK,EAClCoc,EAAW,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAGjDA,EAAS,MAAQ9E,GAAanF,CAAM,EAEpCiK,EAAS,WAAapS,GAAoBmI,CAAM,EAAE,YAAa,CAChE,CAOD,SAASkI,GAAc,CACrB,MAAMkC,EAAW,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC3CtgB,EAAQ,KAAK,OAAQ,EACrBM,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAG7C,GADA6e,EAAQ,cAAe,EAAI,EACvB7e,EAAK,OAAS,OAAQ,CAGxB,MAAMigB,EAAWD,EAAS,SAC1BhgB,EAAK,SAAWigB,CACtB,MACMjgB,EAAK,IAAMN,CAEd,CAOD,SAASye,GAAkC,CACzC,MAAMza,EAAO,KAAK,OAAQ,EACpB1D,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,IAAM0D,CACZ,CAOD,SAAS0a,IAA4B,CACnC,MAAM1a,EAAO,KAAK,OAAQ,EACpB1D,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQ0D,CACd,CAOD,SAAS2a,IAAiB,CACxBQ,EAAQ,aAAa,CACtB,CAOD,SAASrC,IAAmB,CAC1BqC,EAAQ,gBAAiB,WAAW,CACrC,CAOD,SAASX,EAAsBza,EAAO,CACpC,MAAMwJ,EAAQ,KAAK,OAAQ,EACrBjN,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAG7CA,EAAK,MAAQiN,EAEbjN,EAAK,WAAayN,GAChB,KAAK,eAAehK,CAAK,CAC1B,EAAC,YAAa,EACfob,EAAQ,gBAAiB,MAAM,CAChC,CAOD,SAAS9B,EAA+BtZ,EAAO,CAC7Cob,EAAQ,yBAA0Bpb,EAAM,IAAI,CAC7C,CAMD,SAASuZ,GAA8BvZ,EAAO,CAC5C,MAAMC,EAAO,KAAK,eAAeD,CAAK,EAChCZ,EAAOic,EAAQ,wBAAwB,EAE7C,IAAIpf,EACAmD,GACFnD,EAAQkb,GACNlX,EACAb,IAAS,kCAAoC,GAAK,EACnD,EACDgc,EAAQ,wBAAwB,GAGhCnf,EADe0I,GAA8B1E,CAAI,EAGnD,MAAMsF,EAAO,KAAK,MAAM,IAAK,EAC7BA,EAAK,OAAStJ,EACdsJ,EAAK,SAAS,IAAMrE,GAAMlB,EAAM,GAAG,CACpC,CAMD,SAASoZ,GAAuBpZ,EAAO,CACrCqZ,EAAW,KAAK,KAAMrZ,CAAK,EAC3B,MAAMzD,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,IAAM,KAAK,eAAeyD,CAAK,CACrC,CAMD,SAASmZ,GAAoBnZ,EAAO,CAClCqZ,EAAW,KAAK,KAAMrZ,CAAK,EAC3B,MAAMzD,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,IAAM,UAAY,KAAK,eAAeyD,CAAK,CACjD,CAOD,SAASmE,IAAa,CACpB,MAAO,CACL,KAAM,aACN,SAAU,CAAE,CACb,CACF,CAGD,SAASoU,IAAW,CAClB,MAAO,CACL,KAAM,OACN,KAAM,KACN,KAAM,KACN,MAAO,EACR,CACF,CAGD,SAAS9R,IAAW,CAClB,MAAO,CACL,KAAM,aACN,MAAO,EACR,CACF,CAGD,SAASwD,IAAa,CACpB,MAAO,CACL,KAAM,aACN,WAAY,GACZ,MAAO,KACP,MAAO,KACP,IAAK,EACN,CACF,CAGD,SAASuO,IAAW,CAClB,MAAO,CACL,KAAM,WACN,SAAU,CAAE,CACb,CACF,CAGD,SAAS9G,IAAU,CAEjB,MAAO,CACL,KAAM,UACN,MAAO,OACP,SAAU,CAAE,CACb,CACF,CAGD,SAAS+G,IAAY,CACnB,MAAO,CACL,KAAM,OACP,CACF,CAGD,SAASC,IAAO,CACd,MAAO,CACL,KAAM,OACN,MAAO,EACR,CACF,CAGD,SAASC,IAAQ,CACf,MAAO,CACL,KAAM,QACN,MAAO,KACP,IAAK,GACL,IAAK,IACN,CACF,CAGD,SAASN,IAAO,CACd,MAAO,CACL,KAAM,OACN,MAAO,KACP,IAAK,GACL,SAAU,CAAE,CACb,CACF,CAMD,SAASxb,GAAKmD,EAAO,CACnB,MAAO,CACL,KAAM,OACN,QAASA,EAAM,OAAS,cACxB,MAAO,KACP,OAAQA,EAAM,QACd,SAAU,CAAE,CACb,CACF,CAMD,SAAS4Y,GAAS5Y,EAAO,CACvB,MAAO,CACL,KAAM,WACN,OAAQA,EAAM,QACd,QAAS,KACT,SAAU,CAAE,CACb,CACF,CAGD,SAAS2R,IAAY,CACnB,MAAO,CACL,KAAM,YACN,SAAU,CAAE,CACb,CACF,CAGD,SAASqH,IAAS,CAChB,MAAO,CACL,KAAM,SACN,SAAU,CAAE,CACb,CACF,CAGD,SAASrW,IAAO,CACd,MAAO,CACL,KAAM,OACN,MAAO,EACR,CACF,CAGD,SAAS2N,IAAgB,CACvB,MAAO,CACL,KAAM,eACP,CACF,CACH,CAUA,SAASpP,GAAMub,EAAG,CAChB,MAAO,CACL,KAAMA,EAAE,KACR,OAAQA,EAAE,OACV,OAAQA,EAAE,MACX,CACH,CAOA,SAASzB,GAAU0B,EAAUnf,EAAY,CACvC,IAAIZ,EAAQ,GACZ,KAAO,EAAEA,EAAQY,EAAW,QAAQ,CAClC,MAAMtB,EAAQsB,EAAWZ,CAAK,EAC1B,MAAM,QAAQV,CAAK,EACrB+e,GAAU0B,EAAUzgB,CAAK,EAEzBwB,GAAUif,EAAUzgB,CAAK,CAE5B,CACH,CAOA,SAASwB,GAAUif,EAAUjf,EAAW,CAEtC,IAAIue,EACJ,IAAKA,KAAOve,EACV,GAAIua,GAAI,KAAKva,EAAWue,CAAG,GACzB,GAAIA,IAAQ,iBAAkB,CAC5B,MAAMpe,EAAQH,EAAUue,CAAG,EACvBpe,GACF8e,EAASV,CAAG,EAAE,KAAK,GAAGpe,CAAK,CAErC,SAAiBoe,IAAQ,aAAc,CAC/B,MAAMpe,EAAQH,EAAUue,CAAG,EACvBpe,GACF8e,EAASV,CAAG,EAAE,KAAK,GAAGpe,CAAK,CAE9B,SAAUoe,IAAQ,SAAWA,IAAQ,OAAQ,CAC5C,MAAMpe,EAAQH,EAAUue,CAAG,EACvBpe,GACF,OAAO,OAAO8e,EAASV,CAAG,EAAGpe,CAAK,CAErC,EAGP,CAGA,SAAS6d,GAAe9d,EAAMC,EAAO,CACnC,MAAID,EACI,IAAI,MACR,iBACEA,EAAK,KACL,MACAka,GAAkB,CAChB,MAAOla,EAAK,MACZ,IAAKA,EAAK,GACpB,CAAS,EACD,0BACAC,EAAM,KACN,MACAia,GAAkB,CAChB,MAAOja,EAAM,MACb,IAAKA,EAAM,GACrB,CAAS,EACD,WACH,EAEK,IAAI,MACR,oCACEA,EAAM,KACN,MACAia,GAAkB,CAChB,MAAOja,EAAM,MACb,IAAKA,EAAM,GACrB,CAAS,EACD,iBACH,CAEL,CCn2CA,SAAS+e,GAAmBC,EAAU,CACpC,MAAMC,EAA0BD,EAAS,QAAQ,UAAW;AAAA,CAAI,EAEhE,OAD2BE,GAAOD,CAAuB,CAE3D,CACA,SAASE,GAAgBH,EAAU,CACjC,MAAMI,EAAuBL,GAAmBC,CAAQ,EAClD,CAAE,SAAAJ,CAAQ,EAAKvE,GAAa+E,CAAoB,EAChDC,EAAQ,CAAC,CAAA,CAAE,EACjB,IAAIC,EAAc,EAClB,SAASC,EAAY5gB,EAAM6gB,EAAa,SAAU,CAC5C7gB,EAAK,OAAS,OACEA,EAAK,MAAM,MAAM;AAAA,CAAI,EAC7B,QAAQ,CAAC8gB,EAAU1gB,IAAU,CACjCA,IAAU,IACZugB,IACAD,EAAM,KAAK,CAAA,CAAE,GAEfI,EAAS,MAAM,GAAG,EAAE,QAASC,GAAS,CAChCA,GACFL,EAAMC,CAAW,EAAE,KAAK,CAAE,QAASI,EAAM,KAAMF,CAAU,CAAE,CAEvE,CAAS,CACT,CAAO,GACQ7gB,EAAK,OAAS,UAAYA,EAAK,OAAS,aACjDA,EAAK,SAAS,QAASghB,GAAgB,CACrCJ,EAAYI,EAAahhB,EAAK,IAAI,CAC1C,CAAO,CAEJ,CACD,OAAAigB,EAAS,QAASgB,GAAa,CACzBA,EAAS,OAAS,aACpBA,EAAS,SAAS,QAASD,GAAgB,CACzCJ,EAAYI,CAAW,CAC/B,CAAO,CAEP,CAAG,EACMN,CACT,CACA,SAASQ,GAAeb,EAAU,CAChC,KAAM,CAAE,SAAAJ,CAAQ,EAAKvE,GAAa2E,CAAQ,EAC1C,SAASc,EAAOnhB,EAAM,CACpB,OAAIA,EAAK,OAAS,OACTA,EAAK,MAAM,QAAQ,MAAO,OAAO,EAC/BA,EAAK,OAAS,SAChB,WAAWA,EAAK,SAAS,IAAImhB,CAAM,EAAE,KAAK,EAAE,CAAC,YAC3CnhB,EAAK,OAAS,WAChB,OAAOA,EAAK,SAAS,IAAImhB,CAAM,EAAE,KAAK,EAAE,CAAC,QACvCnhB,EAAK,OAAS,YAChB,MAAMA,EAAK,SAAS,IAAImhB,CAAM,EAAE,KAAK,EAAE,CAAC,OAE1C,yBAAyBnhB,EAAK,IAAI,EAC1C,CACD,OAAOigB,EAAS,IAAIkB,CAAM,EAAE,KAAK,EAAE,CACrC,CACA,SAASC,GAAiBhb,EAAM,CAC9B,OAAI,KAAK,UACA,CAAC,GAAG,IAAI,KAAK,UAAS,EAAG,QAAQA,CAAI,CAAC,EAAE,IAAKib,GAAMA,EAAE,OAAO,EAE9D,CAAC,GAAGjb,CAAI,CACjB,CACA,SAASkb,GAAoBC,EAAUR,EAAM,CAC3C,MAAMS,EAAaJ,GAAiBL,EAAK,OAAO,EAChD,OAAOU,GAA6BF,EAAU,CAAA,EAAIC,EAAYT,EAAK,IAAI,CACzE,CACA,SAASU,GAA6BF,EAAUG,EAAWC,EAAgB9e,EAAM,CAC/E,GAAI8e,EAAe,SAAW,EAC5B,MAAO,CACL,CAAE,QAASD,EAAU,KAAK,EAAE,EAAG,KAAA7e,CAAM,EACrC,CAAE,QAAS,GAAI,KAAAA,CAAM,CAC3B,EAEE,KAAM,CAAC+e,EAAU,GAAGC,CAAI,EAAIF,EACtBG,EAAU,CAAC,GAAGJ,EAAWE,CAAQ,EACvC,OAAIL,EAAS,CAAC,CAAE,QAASO,EAAQ,KAAK,EAAE,EAAG,KAAAjf,CAAM,CAAA,CAAC,EACzC4e,GAA6BF,EAAUO,EAASD,EAAMhf,CAAI,GAE/D6e,EAAU,SAAW,GAAKE,IAC5BF,EAAU,KAAKE,CAAQ,EACvBD,EAAe,MAAK,GAEf,CACL,CAAE,QAASD,EAAU,KAAK,EAAE,EAAG,KAAA7e,CAAM,EACrC,CAAE,QAAS8e,EAAe,KAAK,EAAE,EAAG,KAAA9e,CAAM,CAC9C,EACA,CACA,SAASkf,GAAoBC,EAAMT,EAAU,CAC3C,GAAIS,EAAK,KAAK,CAAC,CAAE,QAAA9e,CAAS,IAAKA,EAAQ,SAAS;AAAA,CAAI,CAAC,EACnD,MAAM,IAAI,MAAM,2DAA2D,EAE7E,OAAO+e,GAA6BD,EAAMT,CAAQ,CACpD,CACA,SAASU,GAA6BC,EAAOX,EAAUb,EAAQ,CAAE,EAAEyB,EAAU,GAAI,CAC/E,GAAID,EAAM,SAAW,EACnB,OAAIC,EAAQ,OAAS,GACnBzB,EAAM,KAAKyB,CAAO,EAEbzB,EAAM,OAAS,EAAIA,EAAQ,CAAA,EAEpC,IAAI0B,EAAS,GACTF,EAAM,CAAC,EAAE,UAAY,MACvBE,EAAS,IACTF,EAAM,MAAK,GAEb,MAAMG,EAAWH,EAAM,MAAO,GAAI,CAAE,QAAS,IAAK,KAAM,UAClDI,EAAmB,CAAC,GAAGH,CAAO,EAKpC,GAJIC,IAAW,IACbE,EAAiB,KAAK,CAAE,QAASF,EAAQ,KAAM,QAAQ,CAAE,EAE3DE,EAAiB,KAAKD,CAAQ,EAC1Bd,EAASe,CAAgB,EAC3B,OAAOL,GAA6BC,EAAOX,EAAUb,EAAO4B,CAAgB,EAE9E,GAAIH,EAAQ,OAAS,EACnBzB,EAAM,KAAKyB,CAAO,EAClBD,EAAM,QAAQG,CAAQ,UACbA,EAAS,QAAS,CAC3B,KAAM,CAACL,EAAMH,CAAI,EAAIP,GAAoBC,EAAUc,CAAQ,EAC3D3B,EAAM,KAAK,CAACsB,CAAI,CAAC,EACbH,EAAK,SACPK,EAAM,QAAQL,CAAI,CAErB,CACD,OAAOI,GAA6BC,EAAOX,EAAUb,CAAK,CAC5D,CACA,SAAS6B,GAAWC,EAAKC,EAAS,CAC5BA,GACFD,EAAI,KAAK,QAASC,CAAO,CAE7B,CACA,SAASC,GAAYva,EAASnI,EAAM2iB,EAAOC,EAASC,EAAgB,GAAO,CACzE,MAAMC,EAAK3a,EAAQ,OAAO,eAAe,EACnC4a,EAAMD,EAAG,OAAO,WAAW,EAC3B7V,EAAQjN,EAAK,MACbgjB,EAAahjB,EAAK,OAAS,YAAc,YAC/C+iB,EAAI,KACF;AAAA,mBACeC,CAAU,IAAIJ,CAAO,MAAQ5iB,EAAK,WAAa,UAAYA,EAAK,WAAa,IAAM,IAAM,IAAMiN,EAAQ,SAC1H,EACEsV,GAAWQ,EAAK/iB,EAAK,UAAU,EAC/B+iB,EAAI,MAAM,UAAW,YAAY,EACjCA,EAAI,MAAM,cAAe,QAAQ,EACjCA,EAAI,MAAM,YAAaJ,EAAQ,IAAI,EACnCI,EAAI,KAAK,QAAS,8BAA8B,EAC5CF,GACFE,EAAI,KAAK,QAAS,UAAU,EAE9B,IAAIE,EAAOF,EAAI,KAAM,EAAC,sBAAqB,EAC3C,OAAIE,EAAK,QAAUN,IACjBI,EAAI,MAAM,UAAW,OAAO,EAC5BA,EAAI,MAAM,cAAe,cAAc,EACvCA,EAAI,MAAM,QAASJ,EAAQ,IAAI,EAC/BM,EAAOF,EAAI,KAAM,EAAC,sBAAqB,GAEzCD,EAAG,MAAM,QAASG,EAAK,KAAK,EAC5BH,EAAG,MAAM,SAAUG,EAAK,MAAM,EACvBH,EAAG,MACZ,CACA,SAASI,GAAYC,EAAavY,EAAWwY,EAAY,CACvD,OAAOD,EAAY,OAAO,OAAO,EAAE,KAAK,QAAS,kBAAkB,EAAE,KAAK,IAAK,CAAC,EAAE,KAAK,IAAKvY,EAAYwY,EAAa,GAAM,IAAI,EAAE,KAAK,KAAMA,EAAa,IAAI,CAC/J,CACA,SAASC,GAAmBC,EAAYF,EAAYpB,EAAM,CACxD,MAAMuB,EAAcD,EAAW,OAAO,MAAM,EACtCE,EAAWN,GAAYK,EAAa,EAAGH,CAAU,EACvDK,GAA2BD,EAAUxB,CAAI,EACzC,MAAM0B,EAAaF,EAAS,KAAM,EAAC,sBAAqB,EACxD,OAAAD,EAAY,OAAM,EACXG,CACT,CACA,SAASC,GAAoBhB,EAAOiB,EAAGC,EAAgBhB,EAAgB,GAAO,CAE5E,MAAMiB,EAAaF,EAAE,OAAO,GAAG,EACzBG,EAAMD,EAAW,OAAO,MAAM,EAAE,KAAK,QAAS,YAAY,EAC1DX,EAAcW,EAAW,OAAO,MAAM,EAAE,KAAK,IAAK,OAAO,EAC/D,IAAIlZ,EAAY,EAChB,UAAWoX,KAAQ6B,EAAgB,CACjC,MAAMG,EAAcC,GAAUZ,GAAmBS,EAAY,IAAYG,CAAK,GAAKtB,EAC7EuB,EAAkBF,EAAWhC,CAAI,EAAI,CAACA,CAAI,EAAID,GAAoBC,EAAMgC,CAAU,EACxF,UAAWG,KAAgBD,EAAiB,CAC1C,MAAME,EAAQlB,GAAYC,EAAavY,EAAW,GAAU,EAC5D6Y,GAA2BW,EAAOD,CAAY,EAC9CvZ,GACD,CACF,CACD,GAAIiY,EAAe,CACjB,MAAMI,EAAOE,EAAY,KAAM,EAAC,QAAO,EACjCkB,EAAU,EAChB,OAAAN,EAAI,KAAK,IAAK,CAACM,CAAO,EAAE,KAAK,IAAK,CAACA,CAAO,EAAE,KAAK,QAASpB,EAAK,MAAQ,EAAIoB,CAAO,EAAE,KAAK,SAAUpB,EAAK,OAAS,EAAIoB,CAAO,EACrHP,EAAW,MACtB,KACI,QAAOX,EAAY,MAEvB,CACA,SAASM,GAA2BW,EAAOE,EAAa,CACtDF,EAAM,KAAK,EAAE,EACbE,EAAY,QAAQ,CAACvD,EAAM3gB,IAAU,CACnC,MAAMmkB,EAAaH,EAAM,OAAO,OAAO,EAAE,KAAK,aAAcrD,EAAK,OAAS,WAAa,SAAW,QAAQ,EAAE,KAAK,QAAS,kBAAkB,EAAE,KAAK,cAAeA,EAAK,OAAS,SAAW,OAAS,QAAQ,EACxM3gB,IAAU,EACZmkB,EAAW,KAAKxD,EAAK,OAAO,EAE5BwD,EAAW,KAAK,IAAMxD,EAAK,OAAO,CAExC,CAAG,CACH,CACK,MAACyD,GAAa,CAACC,EAAIre,EAAO,GAAI,CACjC,MAAAse,EAAQ,GACR,QAAAC,EAAU,GACV,QAAA/B,EAAU,GACV,cAAAgC,EAAgB,GAChB,OAAAC,EAAS,GACT,MAAAlC,EAAQ,IACR,iBAAAmC,EAAmB,EACrB,EAAI,KAAO,CAET,GADAC,GAAI,KAAK,aAAc3e,EAAMse,EAAOC,EAAS/B,EAASgC,EAAeC,EAAQC,CAAgB,EACzFF,EAAe,CACjB,MAAMhU,EAAWsQ,GAAe9a,CAAI,EAC9BpG,EAAO,CACX,OAAA6kB,EACA,MAAOG,GAAepU,CAAQ,EAAE,QAC9B,uBACCyQ,GAAM,aAAaA,EAAE,QAAQ,IAAK,GAAG,CAAC,QACxC,EACD,WAAYqD,EAAM,QAAQ,QAAS,QAAQ,CACjD,EAEI,OADmBhC,GAAY+B,EAAIzkB,EAAM2iB,EAAOC,EAASkC,CAAgB,CAE7E,KAAS,CACL,MAAMjB,EAAiBrD,GAAgBpa,CAAI,EAE3C,OADiBud,GAAoBhB,EAAO8B,EAAIZ,EAAgBiB,CAAgB,CAEjF,CACH","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51]}
\ No newline at end of file
diff --git a/docs/assets/css-variables.stories-58002866.js b/docs/assets/css-variables.stories-ed3bb845.js
similarity index 94%
rename from docs/assets/css-variables.stories-58002866.js
rename to docs/assets/css-variables.stories-ed3bb845.js
index bcbf2ff8..964d0977 100644
--- a/docs/assets/css-variables.stories-58002866.js
+++ b/docs/assets/css-variables.stories-ed3bb845.js
@@ -1,4 +1,4 @@
-import{M as i}from"./chunk-S4VUQJ4A-6012e64b.js";import{p as t,j as e}from"./jsx-runtime-bcef64ff.js";import{u as a}from"./index-f12770ea.js";import"./iframe-8b410132.js";import"../sb-preview/runtime.js";import"./index-20ac22d7.js";import"./_commonjsHelpers-de833af9.js";import"./index-d37d4223.js";import"./index-e04ae519.js";import"./index-356e4a49.js";function o(n){const s=Object.assign({p:"p",img:"img",h1:"h1",a:"a",code:"code",strong:"strong",blockquote:"blockquote",h2:"h2",pre:"pre"},a(),n.components);return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Theming/CSS variables",parameters:{...t}}),`
+import{M as i}from"./chunk-S4VUQJ4A-89907381.js";import{p as t,j as e}from"./jsx-runtime-f67a1dbf.js";import{u as a}from"./index-97648d8f.js";import"./iframe-0b438e8e.js";import"../sb-preview/runtime.js";import"./index-54730943.js";import"./_commonjsHelpers-de833af9.js";import"./index-d37d4223.js";import"./index-e04ae519.js";import"./index-356e4a49.js";function o(n){const s=Object.assign({p:"p",img:"img",h1:"h1",a:"a",code:"code",strong:"strong",blockquote:"blockquote",h2:"h2",pre:"pre"},a(),n.components);return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Theming/CSS variables",parameters:{...t}}),`
`,e.jsx(s.p,{children:e.jsx(s.img,{src:"https://graphics.thomsonreuters.com/style-assets/images/logos/reuters-graphics-logo/svg/graphics-logo-color-dark.svg",alt:""})}),`
`,e.jsx(s.h1,{id:"css-variables",children:"CSS variables"}),`
`,e.jsxs(s.p,{children:["The ",e.jsx(s.a,{href:"?path=/docs/components-theme--default",children:e.jsx(s.code,{children:"Theme"})})," component uses ",e.jsx(s.strong,{children:e.jsx(s.a,{href:"https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties",target:"_blank",rel:"nofollow noopener noreferrer",children:"CSS variables"})})," to control major parts of your page's theme."]}),`
@@ -77,4 +77,4 @@ import{M as i}from"./chunk-S4VUQJ4A-6012e64b.js";import{p as t,j as e}from"./jsx
`})})]})}function l(n={}){const{wrapper:s}=Object.assign({},a(),n.components);return s?e.jsx(s,{...n,children:e.jsx(o,{...n})}):o(n)}const c=()=>{throw new Error("Docs-only story")};c.parameters={docsOnly:!0};const r={title:"Theming/CSS variables",parameters:{...t},tags:["stories-mdx"],includeStories:["__page"]};r.parameters=r.parameters||{};r.parameters.docs={...r.parameters.docs||{},page:l};const y=["__page"];export{y as __namedExportsOrder,c as __page,r as default};
-//# sourceMappingURL=css-variables.stories-58002866.js.map
+//# sourceMappingURL=css-variables.stories-ed3bb845.js.map
diff --git a/docs/assets/css-variables.stories-58002866.js.map b/docs/assets/css-variables.stories-ed3bb845.js.map
similarity index 99%
rename from docs/assets/css-variables.stories-58002866.js.map
rename to docs/assets/css-variables.stories-ed3bb845.js.map
index da6bffb8..b987c7dd 100644
--- a/docs/assets/css-variables.stories-58002866.js.map
+++ b/docs/assets/css-variables.stories-ed3bb845.js.map
@@ -1 +1 @@
-{"version":3,"file":"css-variables.stories-58002866.js","sources":["../../src/docs/theming/css-variables.stories.mdx"],"sourcesContent":["import { Meta } from '@storybook/addon-docs';\nimport { parameters } from '$docs/utils/docsPage.js';\n\n\n\n\n\n# CSS variables\n\nThe [`Theme`](?path=/docs/components-theme--default) component uses **[CSS variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties)** to control major parts of your page's theme.\n\nAll other components in this library use those variables for styling basic colours and typography, helping keep our pages uniform and making it easier to customise the theme. CSS variables also allow our clients to easily change elements of our theme to match their brand.\n\nThis doc explains which variables are set and how you can use them in custom components you create.\n\n> **Note:** CSS variables do not currently affect [ai2svelte](https://github.com/reuters-graphics/ai2svelte/) graphics, so you should continue to make sure your colours match the theme of your page directly in Adobe Illustrator for those graphics.\n\n## Using CSS variables directly\n\nIf you're new to how CSS variables work, [here's a video](https://www.youtube.com/watch?v=PHO6TBq_auI) that does a decent job explaining what they are, how they work and why they're useful.\n\nYou can use any of the CSS variables the `Theme` component sets in your own code with the [`var()`](https://www.w3schools.com/css/css3_variables.asp) function.\n\n```svelte\nMy custom text
\n\n\n```\n\n## Customising variables\n\nYou can redefine any of the above CSS variables in the `` component. Read more in [the docs](/docs/theming-theme--custom-theme) and **use the [Theme builder](/docs/theming-theme-builder--docs)**.\n\n```svelte\n\n \n \n```\n\n## Adding extra variables\n\nYou can even add custom variables through the `Theme` component.\n\nFor example, let's say you want to define a border radius for some card elements on your page. You can add a custom property to the `theme` prop like this:\n\n```svelte\n\n \n \n```\n\n... and then access the CSS variable in your code like this:\n\n```svelte\n\n\n\n```\n\nUsing the `Theme` component for your own CSS variables helps unify important style values across a project. It also lets clients more easily customise those values for whatever matches their brand.\n\nYou can also change a variable's value based on some condition. For example, to set a smaller border radius on mobile screens, you might:\n\n```svelte\n\n\n \n\n 475 ? '22px' : '11px',\n },\n }}\"\n>\n \n \n```\n"],"names":["_createMdxContent","props","_components","_provideComponents","_jsxs","_Fragment","_jsx","Meta","parameters","MDXContent","MDXLayout","__page","componentMeta","__namedExportsOrder"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"css-variables.stories-ed3bb845.js","sources":["../../src/docs/theming/css-variables.stories.mdx"],"sourcesContent":["import { Meta } from '@storybook/addon-docs';\nimport { parameters } from '$docs/utils/docsPage.js';\n\n\n\n\n\n# CSS variables\n\nThe [`Theme`](?path=/docs/components-theme--default) component uses **[CSS variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties)** to control major parts of your page's theme.\n\nAll other components in this library use those variables for styling basic colours and typography, helping keep our pages uniform and making it easier to customise the theme. CSS variables also allow our clients to easily change elements of our theme to match their brand.\n\nThis doc explains which variables are set and how you can use them in custom components you create.\n\n> **Note:** CSS variables do not currently affect [ai2svelte](https://github.com/reuters-graphics/ai2svelte/) graphics, so you should continue to make sure your colours match the theme of your page directly in Adobe Illustrator for those graphics.\n\n## Using CSS variables directly\n\nIf you're new to how CSS variables work, [here's a video](https://www.youtube.com/watch?v=PHO6TBq_auI) that does a decent job explaining what they are, how they work and why they're useful.\n\nYou can use any of the CSS variables the `Theme` component sets in your own code with the [`var()`](https://www.w3schools.com/css/css3_variables.asp) function.\n\n```svelte\nMy custom text
\n\n\n```\n\n## Customising variables\n\nYou can redefine any of the above CSS variables in the `` component. Read more in [the docs](/docs/theming-theme--custom-theme) and **use the [Theme builder](/docs/theming-theme-builder--docs)**.\n\n```svelte\n\n \n \n```\n\n## Adding extra variables\n\nYou can even add custom variables through the `Theme` component.\n\nFor example, let's say you want to define a border radius for some card elements on your page. You can add a custom property to the `theme` prop like this:\n\n```svelte\n\n \n \n```\n\n... and then access the CSS variable in your code like this:\n\n```svelte\n\n\n\n```\n\nUsing the `Theme` component for your own CSS variables helps unify important style values across a project. It also lets clients more easily customise those values for whatever matches their brand.\n\nYou can also change a variable's value based on some condition. For example, to set a smaller border radius on mobile screens, you might:\n\n```svelte\n\n\n \n\n 475 ? '22px' : '11px',\n },\n }}\"\n>\n \n \n```\n"],"names":["_createMdxContent","props","_components","_provideComponents","_jsxs","_Fragment","_jsx","Meta","parameters","MDXContent","MDXLayout","__page","componentMeta","__namedExportsOrder"],"mappings":"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"}
\ No newline at end of file
diff --git a/docs/assets/cssVariables.stories-b8b796cd.js b/docs/assets/cssVariables.stories-b3f17ec3.js
similarity index 86%
rename from docs/assets/cssVariables.stories-b8b796cd.js
rename to docs/assets/cssVariables.stories-b3f17ec3.js
index b880dd89..236cd6d9 100644
--- a/docs/assets/cssVariables.stories-b8b796cd.js
+++ b/docs/assets/cssVariables.stories-b3f17ec3.js
@@ -1,4 +1,4 @@
-import{M as i}from"./chunk-S4VUQJ4A-6012e64b.js";import{p as o,j as e}from"./jsx-runtime-bcef64ff.js";import{u as a}from"./index-f12770ea.js";import"./iframe-8b410132.js";import"../sb-preview/runtime.js";import"./index-20ac22d7.js";import"./_commonjsHelpers-de833af9.js";import"./index-d37d4223.js";import"./index-e04ae519.js";import"./index-356e4a49.js";function n(t){const s=Object.assign({p:"p",img:"img",h1:"h1",code:"code",a:"a",pre:"pre"},a(),t.components);return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Actions/cssVariables",parameters:{...o}}),`
+import{M as i}from"./chunk-S4VUQJ4A-89907381.js";import{p as o,j as e}from"./jsx-runtime-f67a1dbf.js";import{u as a}from"./index-97648d8f.js";import"./iframe-0b438e8e.js";import"../sb-preview/runtime.js";import"./index-54730943.js";import"./_commonjsHelpers-de833af9.js";import"./index-d37d4223.js";import"./index-e04ae519.js";import"./index-356e4a49.js";function n(t){const s=Object.assign({p:"p",img:"img",h1:"h1",code:"code",a:"a",pre:"pre"},a(),t.components);return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Actions/cssVariables",parameters:{...o}}),`
`,e.jsx(s.p,{children:e.jsx(s.img,{src:"https://graphics.thomsonreuters.com/style-assets/images/logos/reuters-graphics-logo/svg/graphics-logo-color-dark.svg",alt:""})}),`
`,e.jsx(s.h1,{id:"cssvariables",children:e.jsx(s.code,{children:"cssVariables"})}),`
`,e.jsxs(s.p,{children:["An action you can use to easily set ",e.jsx(s.a,{href:"https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties",target:"_blank",rel:"nofollow noopener noreferrer",children:"CSS variables"})," on HTML elements. Useful for passing JavaScript values to your component SCSS like this:"]}),`
@@ -32,4 +32,4 @@ import{M as i}from"./chunk-S4VUQJ4A-6012e64b.js";import{p as o,j as e}from"./jsx
}
`})})]})}function c(t={}){const{wrapper:s}=Object.assign({},a(),t.components);return s?e.jsx(s,{...t,children:e.jsx(n,{...t})}):n(t)}const l=()=>{throw new Error("Docs-only story")};l.parameters={docsOnly:!0};const r={title:"Actions/cssVariables",parameters:{...o},tags:["stories-mdx"],includeStories:["__page"]};r.parameters=r.parameters||{};r.parameters.docs={...r.parameters.docs||{},page:c};const b=["__page"];export{b as __namedExportsOrder,l as __page,r as default};
-//# sourceMappingURL=cssVariables.stories-b8b796cd.js.map
+//# sourceMappingURL=cssVariables.stories-b3f17ec3.js.map
diff --git a/docs/assets/cssVariables.stories-b8b796cd.js.map b/docs/assets/cssVariables.stories-b3f17ec3.js.map
similarity index 97%
rename from docs/assets/cssVariables.stories-b8b796cd.js.map
rename to docs/assets/cssVariables.stories-b3f17ec3.js.map
index f44b3be7..636a77c4 100644
--- a/docs/assets/cssVariables.stories-b8b796cd.js.map
+++ b/docs/assets/cssVariables.stories-b3f17ec3.js.map
@@ -1 +1 @@
-{"version":3,"file":"cssVariables.stories-b8b796cd.js","sources":["../../src/actions/cssVariables/cssVariables.stories.mdx"],"sourcesContent":["import { Meta } from '@storybook/addon-docs';\nimport { parameters } from '$docs/utils/docsPage.js';\n\n\n\n\n\n# `cssVariables`\n\nAn action you can use to easily set [CSS variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties) on HTML elements. Useful for passing JavaScript values to your component SCSS like this:\n\n```svelte\n\n\n\n\n My text...
\n\n\n\n```\n"],"names":["_createMdxContent","props","_components","_provideComponents","_jsxs","_Fragment","_jsx","Meta","parameters","MDXContent","MDXLayout","__page","componentMeta","__namedExportsOrder"],"mappings":"mWAMA,SAASA,EAAkBC,EAAO,CAChC,MAAMC,EAAc,OAAO,OAAO,CAChC,EAAG,IACH,IAAK,MACL,GAAI,KACJ,KAAM,OACN,EAAG,IACH,IAAK,KACN,EAAEC,EAAoB,EAAEF,EAAM,UAAU,EACzC,OAAoBG,EAAAA,KAAMC,EAAAA,SAAW,CACnC,SAAU,CAAcC,EAAI,IAACC,EAAM,CACjC,MAAO,uBACP,WAAY,CACV,GAAGC,CACJ,CACF,CAAA,EAAG;AAAA,EAAmBF,MAAKJ,EAAY,EAAG,CACzC,SAAuBI,EAAAA,IAAKJ,EAAY,IAAK,CAC3C,IAAK,uHACL,IAAK,EACb,CAAO,CACF,CAAA,EAAG;AAAA,EAAmBI,MAAKJ,EAAY,GAAI,CAC1C,GAAI,eACJ,SAAuBI,EAAAA,IAAKJ,EAAY,KAAM,CAC5C,SAAU,cAClB,CAAO,CACF,CAAA,EAAG;AAAA,EAAmBE,OAAMF,EAAY,EAAG,CAC1C,SAAU,CAAC,uCAAqDI,MAAKJ,EAAY,EAAG,CAClF,KAAM,+EACN,OAAQ,SACR,IAAK,+BACL,SAAU,eACX,CAAA,EAAG,2FAA2F,CAChG,CAAA,EAAG;AAAA,EAAmBI,MAAKJ,EAAY,IAAK,CAC3C,SAAuBI,EAAAA,IAAKJ,EAAY,KAAM,CAC5C,UAAW,kBACX,SAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAClB,CAAO,CACP,CAAK,CAAC,CACN,CAAG,CACH,CACA,SAASO,EAAWR,EAAQ,GAAI,CAC9B,KAAM,CACJ,QAASS,CACb,EAAM,OAAO,OAAO,CAAE,EAAEP,EAAkB,EAAIF,EAAM,UAAU,EAC5D,OAAOS,EAAyBJ,EAAI,IAACI,EAAW,CAC9C,GAAGT,EACH,SAAuBK,EAAI,IAACN,EAAmB,CAC7C,GAAGC,CACT,CAAK,CACL,CAAG,EAAID,EAAkBC,CAAK,CAC9B,CAEY,MAACU,EAAS,IAAM,CAC1B,MAAM,IAAI,MAAM,iBAAiB,CACnC,EACAA,EAAO,WAAa,CAClB,SAAU,EACZ,EACK,MAACC,EAAgB,CACpB,MAAO,uBACP,WAAY,CACV,GAAGJ,CACJ,EACD,KAAM,CAAC,aAAa,EACpB,eAAgB,CAAC,QAAQ,CAC3B,EACAI,EAAc,WAAaA,EAAc,YAAc,GACvDA,EAAc,WAAW,KAAO,CAC9B,GAAIA,EAAc,WAAW,MAAQ,GACrC,KAAMH,CACR,EAC4B,MAAAI,EAAA,CAAA,QAAA"}
\ No newline at end of file
+{"version":3,"file":"cssVariables.stories-b3f17ec3.js","sources":["../../src/actions/cssVariables/cssVariables.stories.mdx"],"sourcesContent":["import { Meta } from '@storybook/addon-docs';\nimport { parameters } from '$docs/utils/docsPage.js';\n\n\n\n\n\n# `cssVariables`\n\nAn action you can use to easily set [CSS variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties) on HTML elements. Useful for passing JavaScript values to your component SCSS like this:\n\n```svelte\n\n\n\n\n My text...
\n\n\n\n```\n"],"names":["_createMdxContent","props","_components","_provideComponents","_jsxs","_Fragment","_jsx","Meta","parameters","MDXContent","MDXLayout","__page","componentMeta","__namedExportsOrder"],"mappings":"mWAMA,SAASA,EAAkBC,EAAO,CAChC,MAAMC,EAAc,OAAO,OAAO,CAChC,EAAG,IACH,IAAK,MACL,GAAI,KACJ,KAAM,OACN,EAAG,IACH,IAAK,KACN,EAAEC,EAAoB,EAAEF,EAAM,UAAU,EACzC,OAAoBG,EAAAA,KAAMC,EAAAA,SAAW,CACnC,SAAU,CAAcC,EAAI,IAACC,EAAM,CACjC,MAAO,uBACP,WAAY,CACV,GAAGC,CACJ,CACF,CAAA,EAAG;AAAA,EAAmBF,MAAKJ,EAAY,EAAG,CACzC,SAAuBI,EAAAA,IAAKJ,EAAY,IAAK,CAC3C,IAAK,uHACL,IAAK,EACb,CAAO,CACF,CAAA,EAAG;AAAA,EAAmBI,MAAKJ,EAAY,GAAI,CAC1C,GAAI,eACJ,SAAuBI,EAAAA,IAAKJ,EAAY,KAAM,CAC5C,SAAU,cAClB,CAAO,CACF,CAAA,EAAG;AAAA,EAAmBE,OAAMF,EAAY,EAAG,CAC1C,SAAU,CAAC,uCAAqDI,MAAKJ,EAAY,EAAG,CAClF,KAAM,+EACN,OAAQ,SACR,IAAK,+BACL,SAAU,eACX,CAAA,EAAG,2FAA2F,CAChG,CAAA,EAAG;AAAA,EAAmBI,MAAKJ,EAAY,IAAK,CAC3C,SAAuBI,EAAAA,IAAKJ,EAAY,KAAM,CAC5C,UAAW,kBACX,SAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAClB,CAAO,CACP,CAAK,CAAC,CACN,CAAG,CACH,CACA,SAASO,EAAWR,EAAQ,GAAI,CAC9B,KAAM,CACJ,QAASS,CACb,EAAM,OAAO,OAAO,CAAE,EAAEP,EAAkB,EAAIF,EAAM,UAAU,EAC5D,OAAOS,EAAyBJ,EAAI,IAACI,EAAW,CAC9C,GAAGT,EACH,SAAuBK,EAAI,IAACN,EAAmB,CAC7C,GAAGC,CACT,CAAK,CACL,CAAG,EAAID,EAAkBC,CAAK,CAC9B,CAEY,MAACU,EAAS,IAAM,CAC1B,MAAM,IAAI,MAAM,iBAAiB,CACnC,EACAA,EAAO,WAAa,CAClB,SAAU,EACZ,EACK,MAACC,EAAgB,CACpB,MAAO,uBACP,WAAY,CACV,GAAGJ,CACJ,EACD,KAAM,CAAC,aAAa,EACpB,eAAgB,CAAC,QAAQ,CAC3B,EACAI,EAAc,WAAaA,EAAc,YAAc,GACvDA,EAAc,WAAW,KAAO,CAC9B,GAAIA,EAAc,WAAW,MAAQ,GACrC,KAAMH,CACR,EAC4B,MAAAI,EAAA,CAAA,QAAA"}
\ No newline at end of file
diff --git a/docs/assets/customising-with-scss.stories-6d722c04.js b/docs/assets/customising-with-scss.stories-6637e61d.js
similarity index 94%
rename from docs/assets/customising-with-scss.stories-6d722c04.js
rename to docs/assets/customising-with-scss.stories-6637e61d.js
index 350d8c8f..7a14cee1 100644
--- a/docs/assets/customising-with-scss.stories-6d722c04.js
+++ b/docs/assets/customising-with-scss.stories-6637e61d.js
@@ -1,4 +1,4 @@
-import{M as a}from"./chunk-S4VUQJ4A-6012e64b.js";import{p as o,j as e}from"./jsx-runtime-bcef64ff.js";import{u as i}from"./index-f12770ea.js";import"./iframe-8b410132.js";import"../sb-preview/runtime.js";import"./index-20ac22d7.js";import"./_commonjsHelpers-de833af9.js";import"./index-d37d4223.js";import"./index-e04ae519.js";import"./index-356e4a49.js";const c=""+new URL("scss-start-2a80c71b.png",import.meta.url).href,h=""+new URL("scss-highlight-be092e13.png",import.meta.url).href,l=""+new URL("scss-inspector-ad61f9f6.png",import.meta.url).href,d=""+new URL("scss-change-08eee85b.png",import.meta.url).href,p=""+new URL("scss-test-248bae69.png",import.meta.url).href,m=""+new URL("scss-winning-4f1df231.png",import.meta.url).href;function r(t){const s=Object.assign({p:"p",img:"img",h1:"h1",h2:"h2",code:"code",em:"em",pre:"pre",h4:"h4",strong:"strong"},i(),t.components);return e.jsxs(e.Fragment,{children:[e.jsx(a,{title:"Guides/Customising components with SCSS",parameters:{...o}}),`
+import{M as a}from"./chunk-S4VUQJ4A-89907381.js";import{p as o,j as e}from"./jsx-runtime-f67a1dbf.js";import{u as i}from"./index-97648d8f.js";import"./iframe-0b438e8e.js";import"../sb-preview/runtime.js";import"./index-54730943.js";import"./_commonjsHelpers-de833af9.js";import"./index-d37d4223.js";import"./index-e04ae519.js";import"./index-356e4a49.js";const c=""+new URL("scss-start-2a80c71b.png",import.meta.url).href,h=""+new URL("scss-highlight-be092e13.png",import.meta.url).href,l=""+new URL("scss-inspector-ad61f9f6.png",import.meta.url).href,d=""+new URL("scss-change-08eee85b.png",import.meta.url).href,p=""+new URL("scss-test-248bae69.png",import.meta.url).href,m=""+new URL("scss-winning-4f1df231.png",import.meta.url).href;function r(t){const s=Object.assign({p:"p",img:"img",h1:"h1",h2:"h2",code:"code",em:"em",pre:"pre",h4:"h4",strong:"strong"},i(),t.components);return e.jsxs(e.Fragment,{children:[e.jsx(a,{title:"Guides/Customising components with SCSS",parameters:{...o}}),`
`,e.jsx(s.p,{children:e.jsx(s.img,{src:"https://graphics.thomsonreuters.com/style-assets/images/logos/reuters-graphics-logo/svg/graphics-logo-color-dark.svg",alt:""})}),`
`,e.jsx(s.h1,{id:"customising-components-with-scss",children:"Customising components with SCSS"}),`
`,e.jsx(s.p,{children:"One of the most powerful ways to customise components isn't props or, even, Svelte."}),`
@@ -40,4 +40,4 @@ import{M as a}from"./chunk-S4VUQJ4A-6012e64b.js";import{p as o,j as e}from"./jsx
`,e.jsx(s.p,{children:"Done!"}),`
`,e.jsxs(s.h4,{id:"can-i-just-important-it",children:["Can I just... ",e.jsx(s.code,{children:"important!"})," it?"]}),`
`,e.jsxs(s.p,{children:["Yep, as a last result. Just be sure your style rule is ",e.jsx(s.strong,{children:"very specific"})," and not something generic that might apply to other elements like ",e.jsx(s.code,{children:"div.container"}),"."]})]})}function g(t={}){const{wrapper:s}=Object.assign({},i(),t.components);return s?e.jsx(s,{...t,children:e.jsx(r,{...t})}):r(t)}const u=()=>{throw new Error("Docs-only story")};u.parameters={docsOnly:!0};const n={title:"Guides/Customising components with SCSS",parameters:{...o},tags:["stories-mdx"],includeStories:["__page"]};n.parameters=n.parameters||{};n.parameters.docs={...n.parameters.docs||{},page:g};const I=["__page"];export{I as __namedExportsOrder,u as __page,n as default};
-//# sourceMappingURL=customising-with-scss.stories-6d722c04.js.map
+//# sourceMappingURL=customising-with-scss.stories-6637e61d.js.map
diff --git a/docs/assets/customising-with-scss.stories-6d722c04.js.map b/docs/assets/customising-with-scss.stories-6637e61d.js.map
similarity index 99%
rename from docs/assets/customising-with-scss.stories-6d722c04.js.map
rename to docs/assets/customising-with-scss.stories-6637e61d.js.map
index ac8d7854..db23ee62 100644
--- a/docs/assets/customising-with-scss.stories-6d722c04.js.map
+++ b/docs/assets/customising-with-scss.stories-6637e61d.js.map
@@ -1 +1 @@
-{"version":3,"file":"customising-with-scss.stories-6d722c04.js","sources":["../../src/docs/guides/imgs/scss-start.png","../../src/docs/guides/imgs/scss-highlight.png","../../src/docs/guides/imgs/scss-inspector.png","../../src/docs/guides/imgs/scss-change.png","../../src/docs/guides/imgs/scss-test.png","../../src/docs/guides/imgs/scss-winning.png","../../src/docs/guides/customising-with-scss.stories.mdx"],"sourcesContent":["export default \"__VITE_ASSET__72648eef__\"","export default \"__VITE_ASSET__c5a97c31__\"","export default \"__VITE_ASSET__8330892c__\"","export default \"__VITE_ASSET__a6065c0f__\"","export default \"__VITE_ASSET__9b74b964__\"","export default \"__VITE_ASSET__2b7e908e__\"","import { Meta } from '@storybook/addon-docs';\nimport { parameters } from '$docs/utils/docsPage.js';\n\nimport startImg from './imgs/scss-start.png';\nimport highlightImg from './imgs/scss-highlight.png';\nimport inspectorImg from './imgs/scss-inspector.png';\nimport changeImg from './imgs/scss-change.png';\nimport testImg from './imgs/scss-test.png';\nimport winningImg from './imgs/scss-winning.png';\n\n\n\n\n\n# Customising components with SCSS\n\nOne of the most powerful ways to customise components isn't props or, even, Svelte.\n\n\n It's SCSS and your web inspector!\n
\n\n## How's that??\n\nLet's say you wanted to change our `BeforeAfter` component. You want the text overlays to be at the bottom of the image instead of the top like this:\n\n
\n\nThe first thing you should do is check out the elements you want to change in your web inspector and see if CSS can make the change you want.\n\n
\n\n
\n\nIn our case, we want to change the absolute position of those elements. To test that'll actually work, we can try it directly in the inspector first!\n\n
\n\n
\n\nNow that we know we can change what we need through CSS it's time to write some SCSS, either in your `global.scss` file or directly in a component like `App.svelte`.\n\nFirst, let's look at the class of the style rule we changed in the inspector:\n\n`figure.before-after-container.s-khJY-w4TYkp5 .overlay-container.before.s-khJY-w4TYkp5`\n\nOne thing we always need to do is strip out any Svelte class names, i.e., those weird `.s-khJY-w4TYkp5` classes. Why? Those are random classes Svelte adds to CSS, and we can't guarantee they won't change.\n\nThat leaves us with:\n\n`figure.before-after-container .overlay-container.before`\n\nBut we need our style rule to _beat_ the original style in the CSS cascade, and right now, it's less specific without those class names we stripped.\n\nThe easiest way to make sure your style rule wins out is to add an ID either directly to the element or to a parent. In our case, let's add an ID through the `BeforeAfter` `id` prop. Now we can use it! (For extra credit, though, we'll drop the `.before` so our new style rule applies to _both_ overlays.)\n\n```scss\nfigure#my-before-after .overlay-container {\n bottom: 0;\n}\n```\n\nNow our selector is more specific. We win!\n\nIf you don't see a way to add an ID through a component's props, then just wrap the component in a `div` in your code:\n\n```svelte\n\n \n\n```\n\n... and use that, instead!\n\n```scss\ndiv#my-before-after figure .overlay-container {\n bottom: 0;\n}\n```\n\nWe can confirm the new style rule is winning by looking at its order back in our web inspector!\n\n
\n\nDone!\n\n#### Can I just... `important!` it?\n\nYep, as a last result. Just be sure your style rule is **very specific** and not something generic that might apply to other elements like `div.container`.\n"],"names":["startImg","highlightImg","inspectorImg","changeImg","testImg","winningImg","_createMdxContent","props","_components","_provideComponents","_jsxs","_Fragment","_jsx","Meta","parameters","MDXContent","MDXLayout","__page","componentMeta","__namedExportsOrder"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"customising-with-scss.stories-6637e61d.js","sources":["../../src/docs/guides/imgs/scss-start.png","../../src/docs/guides/imgs/scss-highlight.png","../../src/docs/guides/imgs/scss-inspector.png","../../src/docs/guides/imgs/scss-change.png","../../src/docs/guides/imgs/scss-test.png","../../src/docs/guides/imgs/scss-winning.png","../../src/docs/guides/customising-with-scss.stories.mdx"],"sourcesContent":["export default \"__VITE_ASSET__72648eef__\"","export default \"__VITE_ASSET__c5a97c31__\"","export default \"__VITE_ASSET__8330892c__\"","export default \"__VITE_ASSET__a6065c0f__\"","export default \"__VITE_ASSET__9b74b964__\"","export default \"__VITE_ASSET__2b7e908e__\"","import { Meta } from '@storybook/addon-docs';\nimport { parameters } from '$docs/utils/docsPage.js';\n\nimport startImg from './imgs/scss-start.png';\nimport highlightImg from './imgs/scss-highlight.png';\nimport inspectorImg from './imgs/scss-inspector.png';\nimport changeImg from './imgs/scss-change.png';\nimport testImg from './imgs/scss-test.png';\nimport winningImg from './imgs/scss-winning.png';\n\n\n\n\n\n# Customising components with SCSS\n\nOne of the most powerful ways to customise components isn't props or, even, Svelte.\n\n\n It's SCSS and your web inspector!\n
\n\n## How's that??\n\nLet's say you wanted to change our `BeforeAfter` component. You want the text overlays to be at the bottom of the image instead of the top like this:\n\n
\n\nThe first thing you should do is check out the elements you want to change in your web inspector and see if CSS can make the change you want.\n\n
\n\n
\n\nIn our case, we want to change the absolute position of those elements. To test that'll actually work, we can try it directly in the inspector first!\n\n
\n\n
\n\nNow that we know we can change what we need through CSS it's time to write some SCSS, either in your `global.scss` file or directly in a component like `App.svelte`.\n\nFirst, let's look at the class of the style rule we changed in the inspector:\n\n`figure.before-after-container.s-khJY-w4TYkp5 .overlay-container.before.s-khJY-w4TYkp5`\n\nOne thing we always need to do is strip out any Svelte class names, i.e., those weird `.s-khJY-w4TYkp5` classes. Why? Those are random classes Svelte adds to CSS, and we can't guarantee they won't change.\n\nThat leaves us with:\n\n`figure.before-after-container .overlay-container.before`\n\nBut we need our style rule to _beat_ the original style in the CSS cascade, and right now, it's less specific without those class names we stripped.\n\nThe easiest way to make sure your style rule wins out is to add an ID either directly to the element or to a parent. In our case, let's add an ID through the `BeforeAfter` `id` prop. Now we can use it! (For extra credit, though, we'll drop the `.before` so our new style rule applies to _both_ overlays.)\n\n```scss\nfigure#my-before-after .overlay-container {\n bottom: 0;\n}\n```\n\nNow our selector is more specific. We win!\n\nIf you don't see a way to add an ID through a component's props, then just wrap the component in a `div` in your code:\n\n```svelte\n\n \n\n```\n\n... and use that, instead!\n\n```scss\ndiv#my-before-after figure .overlay-container {\n bottom: 0;\n}\n```\n\nWe can confirm the new style rule is winning by looking at its order back in our web inspector!\n\n
\n\nDone!\n\n#### Can I just... `important!` it?\n\nYep, as a last result. Just be sure your style rule is **very specific** and not something generic that might apply to other elements like `div.container`.\n"],"names":["startImg","highlightImg","inspectorImg","changeImg","testImg","winningImg","_createMdxContent","props","_components","_provideComponents","_jsxs","_Fragment","_jsx","Meta","parameters","MDXContent","MDXLayout","__page","componentMeta","__namedExportsOrder"],"mappings":"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"}
\ No newline at end of file
diff --git a/docs/assets/edges-b00f0ec2-fbc7a231.js b/docs/assets/edges-b00f0ec2-8fed315f.js
similarity index 99%
rename from docs/assets/edges-b00f0ec2-fbc7a231.js
rename to docs/assets/edges-b00f0ec2-8fed315f.js
index 8efce0fe..e6a810e2 100644
--- a/docs/assets/edges-b00f0ec2-fbc7a231.js
+++ b/docs/assets/edges-b00f0ec2-8fed315f.js
@@ -1,5 +1,5 @@
-import{t as H,c as w,d as Z,v as j,h as B,l as x,u as U,x as F}from"./intro.stories-4d939548.js";import{c as P}from"./createText-285e50b4-3c775375.js";import{p as Q}from"./svgDraw-5d8a058e-2897ef7d.js";import{l as et}from"./line-0cec4b1f.js";const st=(r,t,e,n)=>{t.forEach(a=>{yt[a](r,e,n)})},it=(r,t,e)=>{x.trace("Making markers for ",e),r.append("defs").append("marker").attr("id",t+"-extensionStart").attr("class","marker extension "+t).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),r.append("defs").append("marker").attr("id",t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},nt=(r,t)=>{r.append("defs").append("marker").attr("id",t+"-compositionStart").attr("class","marker composition "+t).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},lt=(r,t)=>{r.append("defs").append("marker").attr("id",t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},ct=(r,t)=>{r.append("defs").append("marker").attr("id",t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},ht=(r,t)=>{r.append("defs").append("marker").attr("id",t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","white").attr("cx",6).attr("cy",7).attr("r",6)},ot=(r,t)=>{r.append("marker").attr("id",t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",10).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),r.append("marker").attr("id",t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},ft=(r,t)=>{r.append("marker").attr("id",t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),r.append("marker").attr("id",t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},dt=(r,t)=>{r.append("marker").attr("id",t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),r.append("marker").attr("id",t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},pt=(r,t)=>{r.append("defs").append("marker").attr("id",t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},yt={extension:it,composition:nt,aggregation:lt,dependency:ct,lollipop:ht,point:ot,circle:ft,cross:dt,barb:pt},Kt=st;function bt(r,t){t&&r.attr("style",t)}function xt(r){const t=B(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),e=t.append("xhtml:div"),n=r.label,a=r.isNode?"nodeLabel":"edgeLabel";return e.html('"+n+""),bt(e,r.labelStyle),e.style("display","inline-block"),e.style("white-space","nowrap"),e.attr("xmlns","http://www.w3.org/1999/xhtml"),t.node()}const gt=(r,t,e,n)=>{let a=r||"";if(typeof a=="object"&&(a=a[0]),H(w().flowchart.htmlLabels)){a=a.replace(/\\n|\n/g,"
"),x.info("vertexText"+a);const s={isNode:n,label:j(a).replace(/fa[blrs]?:fa-[\w-]+/g,l=>``),labelStyle:t.replace("fill:","color:")};return xt(s)}else{const s=document.createElementNS("http://www.w3.org/2000/svg","text");s.setAttribute("style",t.replace("color:","fill:"));let i=[];typeof a=="string"?i=a.split(/\\n|\n|
/gi):Array.isArray(a)?i=a:i=[];for(const l of i){const c=document.createElementNS("http://www.w3.org/2000/svg","tspan");c.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),c.setAttribute("dy","1em"),c.setAttribute("x","0"),e?c.setAttribute("class","title-row"):c.setAttribute("class","row"),c.textContent=l.trim(),s.appendChild(c)}return s}},R=gt,E=async(r,t,e,n)=>{let a;const s=t.useHtmlLabels||H(w().flowchart.htmlLabels);e?a=e:a="node default";const i=r.insert("g").attr("class",a).attr("id",t.domId||t.id),l=i.insert("g").attr("class","label").attr("style",t.labelStyle);let c;t.labelText===void 0?c="":c=typeof t.labelText=="string"?t.labelText:t.labelText[0];const o=l.node();let h;t.labelType==="markdown"?h=P(l,Z(j(c),w()),{useHtmlLabels:s,width:t.width||w().flowchart.wrappingWidth,classes:"markdown-node-label"}):h=o.appendChild(R(Z(j(c),w()),t.labelStyle,!1,n));let f=h.getBBox();const b=t.padding/2;if(H(w().flowchart.htmlLabels)){const d=h.children[0],p=B(h),y=d.getElementsByTagName("img");if(y){const g=c.replace(/
]*>/g,"").trim()==="";await Promise.all([...y].map(u=>new Promise(I=>{function T(){if(u.style.display="flex",u.style.flexDirection="column",g){const M=w().fontSize?w().fontSize:window.getComputedStyle(document.body).fontSize,_=5;u.style.width=parseInt(M,10)*_+"px"}else u.style.width="100%";I(u)}setTimeout(()=>{u.complete&&T()}),u.addEventListener("error",T),u.addEventListener("load",T)})))}f=d.getBoundingClientRect(),p.attr("width",f.width),p.attr("height",f.height)}return s?l.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):l.attr("transform","translate(0, "+-f.height/2+")"),t.centerLabel&&l.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),l.insert("rect",":first-child"),{shapeSvg:i,bbox:f,halfPadding:b,label:l}},k=(r,t)=>{const e=t.node().getBBox();r.width=e.width,r.height=e.height};function N(r,t,e,n){return r.insert("polygon",":first-child").attr("points",n.map(function(a){return a.x+","+a.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+e/2+")")}function ut(r,t){return r.intersect(t)}function tt(r,t,e,n){var a=r.x,s=r.y,i=a-n.x,l=s-n.y,c=Math.sqrt(t*t*l*l+e*e*i*i),o=Math.abs(t*e*i/c);n.x0}function kt(r,t,e){var n=r.x,a=r.y,s=[],i=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(p){i=Math.min(i,p.x),l=Math.min(l,p.y)}):(i=Math.min(i,t.x),l=Math.min(l,t.y));for(var c=n-r.width/2-i,o=a-r.height/2-l,h=0;h1&&s.sort(function(p,y){var g=p.x-e.x,u=p.y-e.y,I=Math.sqrt(g*g+u*u),T=y.x-e.x,M=y.y-e.y,_=Math.sqrt(T*T+M*M);return I<_?-1:I===_?0:1}),s[0]):r}const vt=(r,t)=>{var e=r.x,n=r.y,a=t.x-e,s=t.y-n,i=r.width/2,l=r.height/2,c,o;return Math.abs(s)*i>Math.abs(a)*l?(s<0&&(l=-l),c=s===0?0:l*a/s,o=l):(a<0&&(i=-i),c=i,o=a===0?0:i*s/a),{x:e+c,y:n+o}},Lt=vt,m={node:ut,circle:wt,ellipse:tt,polygon:kt,rect:Lt},St=async(r,t)=>{t.useHtmlLabels||w().flowchart.htmlLabels||(t.centerLabel=!0);const{shapeSvg:n,bbox:a,halfPadding:s}=await E(r,t,"node "+t.classes,!0);x.info("Classes = ",t.classes);const i=n.insert("rect",":first-child");return i.attr("rx",t.rx).attr("ry",t.ry).attr("x",-a.width/2-s).attr("y",-a.height/2-s).attr("width",a.width+t.padding).attr("height",a.height+t.padding),k(t,i),t.intersect=function(l){return m.rect(t,l)},n},Bt=St,J=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=n.height+t.padding,i=a+s,l=[{x:i/2,y:0},{x:i,y:-i/2},{x:i/2,y:-i},{x:0,y:-i/2}];x.info("Question main (Circle)");const c=N(e,i,i,l);return c.attr("style",t.style),k(t,c),t.intersect=function(o){return x.warn("Intersect called"),m.polygon(t,l,o)},e},Et=(r,t)=>{const e=r.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=28,a=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return e.insert("polygon",":first-child").attr("points",a.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(i){return m.circle(t,14,i)},e},Mt=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=4,s=n.height+t.padding,i=s/a,l=n.width+2*i+t.padding,c=[{x:i,y:0},{x:l-i,y:0},{x:l,y:-s/2},{x:l-i,y:-s},{x:i,y:-s},{x:0,y:-s/2}],o=N(e,l,s,c);return o.attr("style",t.style),k(t,o),t.intersect=function(h){return m.polygon(t,c,h)},e},Ct=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=n.height+t.padding,i=[{x:-s/2,y:0},{x:a,y:0},{x:a,y:-s},{x:-s/2,y:-s},{x:0,y:-s/2}];return N(e,a,s,i).attr("style",t.style),t.width=a+s,t.height=s,t.intersect=function(c){return m.polygon(t,i,c)},e},Tt=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=n.height+t.padding,i=[{x:-2*s/6,y:0},{x:a-s/6,y:0},{x:a+2*s/6,y:-s},{x:s/6,y:-s}],l=N(e,a,s,i);return l.attr("style",t.style),k(t,l),t.intersect=function(c){return m.polygon(t,i,c)},e},Rt=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=n.height+t.padding,i=[{x:2*s/6,y:0},{x:a+s/6,y:0},{x:a-2*s/6,y:-s},{x:-s/6,y:-s}],l=N(e,a,s,i);return l.attr("style",t.style),k(t,l),t.intersect=function(c){return m.polygon(t,i,c)},e},It=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=n.height+t.padding,i=[{x:-2*s/6,y:0},{x:a+2*s/6,y:0},{x:a-s/6,y:-s},{x:s/6,y:-s}],l=N(e,a,s,i);return l.attr("style",t.style),k(t,l),t.intersect=function(c){return m.polygon(t,i,c)},e},Ht=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=n.height+t.padding,i=[{x:s/6,y:0},{x:a-s/6,y:0},{x:a+2*s/6,y:-s},{x:-2*s/6,y:-s}],l=N(e,a,s,i);return l.attr("style",t.style),k(t,l),t.intersect=function(c){return m.polygon(t,i,c)},e},$t=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=n.height+t.padding,i=[{x:0,y:0},{x:a+s/2,y:0},{x:a,y:-s/2},{x:a+s/2,y:-s},{x:0,y:-s}],l=N(e,a,s,i);return l.attr("style",t.style),k(t,l),t.intersect=function(c){return m.polygon(t,i,c)},e},Nt=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=a/2,i=s/(2.5+a/50),l=n.height+i+t.padding,c="M 0,"+i+" a "+s+","+i+" 0,0,0 "+a+" 0 a "+s+","+i+" 0,0,0 "+-a+" 0 l 0,"+l+" a "+s+","+i+" 0,0,0 "+a+" 0 l 0,"+-l,o=e.attr("label-offset-y",i).insert("path",":first-child").attr("style",t.style).attr("d",c).attr("transform","translate("+-a/2+","+-(l/2+i)+")");return k(t,o),t.intersect=function(h){const f=m.rect(t,h),b=f.x-t.x;if(s!=0&&(Math.abs(b)t.height/2-i)){let d=i*i*(1-b*b/(s*s));d!=0&&(d=Math.sqrt(d)),d=i-d,h.y-t.y>0&&(d=-d),f.y+=d}return f},e},_t=async(r,t)=>{const{shapeSvg:e,bbox:n,halfPadding:a}=await E(r,t,"node "+t.classes,!0),s=e.insert("rect",":first-child"),i=n.width+t.padding,l=n.height+t.padding;if(s.attr("class","basic label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",-n.width/2-a).attr("y",-n.height/2-a).attr("width",i).attr("height",l),t.props){const c=new Set(Object.keys(t.props));t.props.borders&&(rt(s,t.props.borders,i,l),c.delete("borders")),c.forEach(o=>{x.warn(`Unknown node property ${o}`)})}return k(t,s),t.intersect=function(c){return m.rect(t,c)},e},Wt=async(r,t)=>{const{shapeSvg:e}=await E(r,t,"label",!0);x.trace("Classes = ",t.classes);const n=e.insert("rect",":first-child"),a=0,s=0;if(n.attr("width",a).attr("height",s),e.attr("class","label edgeLabel"),t.props){const i=new Set(Object.keys(t.props));t.props.borders&&(rt(n,t.props.borders,a,s),i.delete("borders")),i.forEach(l=>{x.warn(`Unknown node property ${l}`)})}return k(t,n),t.intersect=function(i){return m.rect(t,i)},e};function rt(r,t,e,n){const a=[],s=l=>{a.push(l,0)},i=l=>{a.push(0,l)};t.includes("t")?(x.debug("add top border"),s(e)):i(e),t.includes("r")?(x.debug("add right border"),s(n)):i(n),t.includes("b")?(x.debug("add bottom border"),s(e)):i(e),t.includes("l")?(x.debug("add left border"),s(n)):i(n),r.attr("stroke-dasharray",a.join(" "))}const Xt=(r,t)=>{let e;t.classes?e="node "+t.classes:e="node default";const n=r.insert("g").attr("class",e).attr("id",t.domId||t.id),a=n.insert("rect",":first-child"),s=n.insert("line"),i=n.insert("g").attr("class","label"),l=t.labelText.flat?t.labelText.flat():t.labelText;let c="";typeof l=="object"?c=l[0]:c=l,x.info("Label text abc79",c,l,typeof l=="object");const o=i.node().appendChild(R(c,t.labelStyle,!0,!0));let h={width:0,height:0};if(H(w().flowchart.htmlLabels)){const y=o.children[0],g=B(o);h=y.getBoundingClientRect(),g.attr("width",h.width),g.attr("height",h.height)}x.info("Text 2",l);const f=l.slice(1,l.length);let b=o.getBBox();const d=i.node().appendChild(R(f.join?f.join("
"):f,t.labelStyle,!0,!0));if(H(w().flowchart.htmlLabels)){const y=d.children[0],g=B(d);h=y.getBoundingClientRect(),g.attr("width",h.width),g.attr("height",h.height)}const p=t.padding/2;return B(d).attr("transform","translate( "+(h.width>b.width?0:(b.width-h.width)/2)+", "+(b.height+p+5)+")"),B(o).attr("transform","translate( "+(h.width{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.height+t.padding,s=n.width+a/4+t.padding,i=e.insert("rect",":first-child").attr("style",t.style).attr("rx",a/2).attr("ry",a/2).attr("x",-s/2).attr("y",-a/2).attr("width",s).attr("height",a);return k(t,i),t.intersect=function(l){return m.rect(t,l)},e},Ut=async(r,t)=>{const{shapeSvg:e,bbox:n,halfPadding:a}=await E(r,t,void 0,!0),s=e.insert("circle",":first-child");return s.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+a).attr("width",n.width+t.padding).attr("height",n.height+t.padding),x.info("Circle main"),k(t,s),t.intersect=function(i){return x.info("Circle intersect",t,n.width/2+a,i),m.circle(t,n.width/2+a,i)},e},At=async(r,t)=>{const{shapeSvg:e,bbox:n,halfPadding:a}=await E(r,t,void 0,!0),s=5,i=e.insert("g",":first-child"),l=i.insert("circle"),c=i.insert("circle");return i.attr("class",t.class),l.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+a+s).attr("width",n.width+t.padding+s*2).attr("height",n.height+t.padding+s*2),c.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+a).attr("width",n.width+t.padding).attr("height",n.height+t.padding),x.info("DoubleCircle main"),k(t,l),t.intersect=function(o){return x.info("DoubleCircle intersect",t,n.width/2+a+s,o),m.circle(t,n.width/2+a+s,o)},e},Dt=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=n.height+t.padding,i=[{x:0,y:0},{x:a,y:0},{x:a,y:-s},{x:0,y:-s},{x:0,y:0},{x:-8,y:0},{x:a+8,y:0},{x:a+8,y:-s},{x:-8,y:-s},{x:-8,y:0}],l=N(e,a,s,i);return l.attr("style",t.style),k(t,l),t.intersect=function(c){return m.polygon(t,i,c)},e},Ot=(r,t)=>{const e=r.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=e.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),k(t,n),t.intersect=function(a){return m.circle(t,7,a)},e},q=(r,t,e)=>{const n=r.insert("g").attr("class","node default").attr("id",t.domId||t.id);let a=70,s=10;e==="LR"&&(a=10,s=70);const i=n.append("rect").attr("x",-1*a/2).attr("y",-1*s/2).attr("width",a).attr("height",s).attr("class","fork-join");return k(t,i),t.height=t.height+t.padding/2,t.width=t.width+t.padding/2,t.intersect=function(l){return m.rect(t,l)},n},jt=(r,t)=>{const e=r.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=e.insert("circle",":first-child"),a=e.insert("circle",":first-child");return a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),k(t,a),t.intersect=function(s){return m.circle(t,7,s)},e},zt=(r,t)=>{const e=t.padding/2,n=4,a=8;let s;t.classes?s="node "+t.classes:s="node default";const i=r.insert("g").attr("class",s).attr("id",t.domId||t.id),l=i.insert("rect",":first-child"),c=i.insert("line"),o=i.insert("line");let h=0,f=n;const b=i.insert("g").attr("class","label");let d=0;const p=t.classData.annotations&&t.classData.annotations[0],y=t.classData.annotations[0]?"«"+t.classData.annotations[0]+"»":"",g=b.node().appendChild(R(y,t.labelStyle,!0,!0));let u=g.getBBox();if(H(w().flowchart.htmlLabels)){const v=g.children[0],L=B(g);u=v.getBoundingClientRect(),L.attr("width",u.width),L.attr("height",u.height)}t.classData.annotations[0]&&(f+=u.height+n,h+=u.width);let I=t.classData.label;t.classData.type!==void 0&&t.classData.type!==""&&(w().flowchart.htmlLabels?I+="<"+t.classData.type+">":I+="<"+t.classData.type+">");const T=b.node().appendChild(R(I,t.labelStyle,!0,!0));B(T).attr("class","classTitle");let M=T.getBBox();if(H(w().flowchart.htmlLabels)){const v=T.children[0],L=B(T);M=v.getBoundingClientRect(),L.attr("width",M.width),L.attr("height",M.height)}f+=M.height+n,M.width>h&&(h=M.width);const _=[];t.classData.members.forEach(v=>{const L=Q(v);let W=L.displayText;w().flowchart.htmlLabels&&(W=W.replace(//g,">"));const $=b.node().appendChild(R(W,L.cssStyle?L.cssStyle:t.labelStyle,!0,!0));let C=$.getBBox();if(H(w().flowchart.htmlLabels)){const O=$.children[0],Y=B($);C=O.getBoundingClientRect(),Y.attr("width",C.width),Y.attr("height",C.height)}C.width>h&&(h=C.width),f+=C.height+n,_.push($)}),f+=a;const z=[];if(t.classData.methods.forEach(v=>{const L=Q(v);let W=L.displayText;w().flowchart.htmlLabels&&(W=W.replace(//g,">"));const $=b.node().appendChild(R(W,L.cssStyle?L.cssStyle:t.labelStyle,!0,!0));let C=$.getBBox();if(H(w().flowchart.htmlLabels)){const O=$.children[0],Y=B($);C=O.getBoundingClientRect(),Y.attr("width",C.width),Y.attr("height",C.height)}C.width>h&&(h=C.width),f+=C.height+n,z.push($)}),f+=a,p){let v=(h-u.width)/2;B(g).attr("transform","translate( "+(-1*h/2+v)+", "+-1*f/2+")"),d=u.height+n}let at=(h-M.width)/2;return B(T).attr("transform","translate( "+(-1*h/2+at)+", "+(-1*f/2+d)+")"),d+=M.height+n,c.attr("class","divider").attr("x1",-h/2-e).attr("x2",h/2+e).attr("y1",-f/2-e+a+d).attr("y2",-f/2-e+a+d),d+=a,_.forEach(v=>{B(v).attr("transform","translate( "+-h/2+", "+(-1*f/2+d+a/2)+")");const L=v==null?void 0:v.getBBox();d+=((L==null?void 0:L.height)??0)+n}),d+=a,o.attr("class","divider").attr("x1",-h/2-e).attr("x2",h/2+e).attr("y1",-f/2-e+a+d).attr("y2",-f/2-e+a+d),d+=a,z.forEach(v=>{B(v).attr("transform","translate( "+-h/2+", "+(-1*f/2+d)+")");const L=v==null?void 0:v.getBBox();d+=((L==null?void 0:L.height)??0)+n}),l.attr("class","outer title-state").attr("x",-h/2-e).attr("y",-(f/2)-e).attr("width",h+t.padding).attr("height",f+t.padding),k(t,l),t.intersect=function(v){return m.rect(t,v)},i},K={rhombus:J,question:J,rect:_t,labelRect:Wt,rectWithTitle:Xt,choice:Et,circle:Ut,doublecircle:At,stadium:Yt,hexagon:Mt,rect_left_inv_arrow:Ct,lean_right:Tt,lean_left:Rt,trapezoid:It,inv_trapezoid:Ht,rect_right_inv_arrow:$t,cylinder:Nt,start:Ot,end:jt,note:Bt,subroutine:Dt,fork:q,join:q,class_box:zt};let X={};const Gt=async(r,t,e)=>{let n,a;if(t.link){let s;w().securityLevel==="sandbox"?s="_top":t.linkTarget&&(s=t.linkTarget||"_blank"),n=r.insert("svg:a").attr("xlink:href",t.link).attr("target",s),a=await K[t.shape](n,t,e)}else a=await K[t.shape](r,t,e),n=a;return t.tooltip&&a.attr("title",t.tooltip),t.class&&a.attr("class","node default "+t.class),X[t.id]=n,t.haveCallback&&X[t.id].attr("class",X[t.id].attr("class")+" clickable"),n},Pt=(r,t)=>{X[t.id]=r},tr=()=>{X={}},rr=r=>{const t=X[r.id];x.trace("Transforming node",r.diff,r,"translate("+(r.x-r.width/2-5)+", "+r.width/2+")");const e=8,n=r.diff||0;return r.clusterNode?t.attr("transform","translate("+(r.x+n-r.width/2)+", "+(r.y-r.height/2-e)+")"):t.attr("transform","translate("+r.x+", "+r.y+")"),n};let D={},S={};const ar=()=>{D={},S={}},er=(r,t)=>{const e=H(w().flowchart.htmlLabels),n=t.labelType==="markdown"?P(r,t.label,{style:t.labelStyle,useHtmlLabels:e,addSvgBackground:!0}):R(t.label,t.labelStyle);x.info("abc82",t,t.labelType);const a=r.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label");s.node().appendChild(n);let i=n.getBBox();if(e){const c=n.children[0],o=B(n);i=c.getBoundingClientRect(),o.attr("width",i.width),o.attr("height",i.height)}s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),D[t.id]=a,t.width=i.width,t.height=i.height;let l;if(t.startLabelLeft){const c=R(t.startLabelLeft,t.labelStyle),o=r.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),S[t.id]||(S[t.id]={}),S[t.id].startLeft=o,A(l,t.startLabelLeft)}if(t.startLabelRight){const c=R(t.startLabelRight,t.labelStyle),o=r.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=o.node().appendChild(c),h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),S[t.id]||(S[t.id]={}),S[t.id].startRight=o,A(l,t.startLabelRight)}if(t.endLabelLeft){const c=R(t.endLabelLeft,t.labelStyle),o=r.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),o.node().appendChild(c),S[t.id]||(S[t.id]={}),S[t.id].endLeft=o,A(l,t.endLabelLeft)}if(t.endLabelRight){const c=R(t.endLabelRight,t.labelStyle),o=r.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),o.node().appendChild(c),S[t.id]||(S[t.id]={}),S[t.id].endRight=o,A(l,t.endLabelRight)}return n};function A(r,t){w().flowchart.htmlLabels&&r&&(r.style.width=t.length*9+"px",r.style.height="12px")}const sr=(r,t)=>{x.info("Moving label abc78 ",r.id,r.label,D[r.id]);let e=t.updatedPath?t.updatedPath:t.originalPath;if(r.label){const n=D[r.id];let a=r.x,s=r.y;if(e){const i=U.calcLabelPosition(e);x.info("Moving label "+r.label+" from (",a,",",s,") to (",i.x,",",i.y,") abc78"),t.updatedPath&&(a=i.x,s=i.y)}n.attr("transform","translate("+a+", "+s+")")}if(r.startLabelLeft){const n=S[r.id].startLeft;let a=r.x,s=r.y;if(e){const i=U.calcTerminalLabelPosition(r.arrowTypeStart?10:0,"start_left",e);a=i.x,s=i.y}n.attr("transform","translate("+a+", "+s+")")}if(r.startLabelRight){const n=S[r.id].startRight;let a=r.x,s=r.y;if(e){const i=U.calcTerminalLabelPosition(r.arrowTypeStart?10:0,"start_right",e);a=i.x,s=i.y}n.attr("transform","translate("+a+", "+s+")")}if(r.endLabelLeft){const n=S[r.id].endLeft;let a=r.x,s=r.y;if(e){const i=U.calcTerminalLabelPosition(r.arrowTypeEnd?10:0,"end_left",e);a=i.x,s=i.y}n.attr("transform","translate("+a+", "+s+")")}if(r.endLabelRight){const n=S[r.id].endRight;let a=r.x,s=r.y;if(e){const i=U.calcTerminalLabelPosition(r.arrowTypeEnd?10:0,"end_right",e);a=i.x,s=i.y}n.attr("transform","translate("+a+", "+s+")")}},Zt=(r,t)=>{const e=r.x,n=r.y,a=Math.abs(t.x-e),s=Math.abs(t.y-n),i=r.width/2,l=r.height/2;return a>=i||s>=l},Ft=(r,t,e)=>{x.warn(`intersection calc abc89:
+import{t as H,c as w,d as Z,v as j,h as B,l as x,u as U,x as F}from"./intro.stories-6bb6b497.js";import{c as P}from"./createText-285e50b4-d331e256.js";import{p as Q}from"./svgDraw-5d8a058e-5b68b2dd.js";import{l as et}from"./line-16ea319c.js";const st=(r,t,e,n)=>{t.forEach(a=>{yt[a](r,e,n)})},it=(r,t,e)=>{x.trace("Making markers for ",e),r.append("defs").append("marker").attr("id",t+"-extensionStart").attr("class","marker extension "+t).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),r.append("defs").append("marker").attr("id",t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},nt=(r,t)=>{r.append("defs").append("marker").attr("id",t+"-compositionStart").attr("class","marker composition "+t).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},lt=(r,t)=>{r.append("defs").append("marker").attr("id",t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},ct=(r,t)=>{r.append("defs").append("marker").attr("id",t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},ht=(r,t)=>{r.append("defs").append("marker").attr("id",t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","white").attr("cx",6).attr("cy",7).attr("r",6)},ot=(r,t)=>{r.append("marker").attr("id",t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",10).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),r.append("marker").attr("id",t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},ft=(r,t)=>{r.append("marker").attr("id",t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),r.append("marker").attr("id",t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},dt=(r,t)=>{r.append("marker").attr("id",t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),r.append("marker").attr("id",t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},pt=(r,t)=>{r.append("defs").append("marker").attr("id",t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},yt={extension:it,composition:nt,aggregation:lt,dependency:ct,lollipop:ht,point:ot,circle:ft,cross:dt,barb:pt},Kt=st;function bt(r,t){t&&r.attr("style",t)}function xt(r){const t=B(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),e=t.append("xhtml:div"),n=r.label,a=r.isNode?"nodeLabel":"edgeLabel";return e.html('"+n+""),bt(e,r.labelStyle),e.style("display","inline-block"),e.style("white-space","nowrap"),e.attr("xmlns","http://www.w3.org/1999/xhtml"),t.node()}const gt=(r,t,e,n)=>{let a=r||"";if(typeof a=="object"&&(a=a[0]),H(w().flowchart.htmlLabels)){a=a.replace(/\\n|\n/g,"
"),x.info("vertexText"+a);const s={isNode:n,label:j(a).replace(/fa[blrs]?:fa-[\w-]+/g,l=>``),labelStyle:t.replace("fill:","color:")};return xt(s)}else{const s=document.createElementNS("http://www.w3.org/2000/svg","text");s.setAttribute("style",t.replace("color:","fill:"));let i=[];typeof a=="string"?i=a.split(/\\n|\n|
/gi):Array.isArray(a)?i=a:i=[];for(const l of i){const c=document.createElementNS("http://www.w3.org/2000/svg","tspan");c.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),c.setAttribute("dy","1em"),c.setAttribute("x","0"),e?c.setAttribute("class","title-row"):c.setAttribute("class","row"),c.textContent=l.trim(),s.appendChild(c)}return s}},R=gt,E=async(r,t,e,n)=>{let a;const s=t.useHtmlLabels||H(w().flowchart.htmlLabels);e?a=e:a="node default";const i=r.insert("g").attr("class",a).attr("id",t.domId||t.id),l=i.insert("g").attr("class","label").attr("style",t.labelStyle);let c;t.labelText===void 0?c="":c=typeof t.labelText=="string"?t.labelText:t.labelText[0];const o=l.node();let h;t.labelType==="markdown"?h=P(l,Z(j(c),w()),{useHtmlLabels:s,width:t.width||w().flowchart.wrappingWidth,classes:"markdown-node-label"}):h=o.appendChild(R(Z(j(c),w()),t.labelStyle,!1,n));let f=h.getBBox();const b=t.padding/2;if(H(w().flowchart.htmlLabels)){const d=h.children[0],p=B(h),y=d.getElementsByTagName("img");if(y){const g=c.replace(/
]*>/g,"").trim()==="";await Promise.all([...y].map(u=>new Promise(I=>{function T(){if(u.style.display="flex",u.style.flexDirection="column",g){const M=w().fontSize?w().fontSize:window.getComputedStyle(document.body).fontSize,_=5;u.style.width=parseInt(M,10)*_+"px"}else u.style.width="100%";I(u)}setTimeout(()=>{u.complete&&T()}),u.addEventListener("error",T),u.addEventListener("load",T)})))}f=d.getBoundingClientRect(),p.attr("width",f.width),p.attr("height",f.height)}return s?l.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):l.attr("transform","translate(0, "+-f.height/2+")"),t.centerLabel&&l.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),l.insert("rect",":first-child"),{shapeSvg:i,bbox:f,halfPadding:b,label:l}},k=(r,t)=>{const e=t.node().getBBox();r.width=e.width,r.height=e.height};function N(r,t,e,n){return r.insert("polygon",":first-child").attr("points",n.map(function(a){return a.x+","+a.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+e/2+")")}function ut(r,t){return r.intersect(t)}function tt(r,t,e,n){var a=r.x,s=r.y,i=a-n.x,l=s-n.y,c=Math.sqrt(t*t*l*l+e*e*i*i),o=Math.abs(t*e*i/c);n.x0}function kt(r,t,e){var n=r.x,a=r.y,s=[],i=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(p){i=Math.min(i,p.x),l=Math.min(l,p.y)}):(i=Math.min(i,t.x),l=Math.min(l,t.y));for(var c=n-r.width/2-i,o=a-r.height/2-l,h=0;h1&&s.sort(function(p,y){var g=p.x-e.x,u=p.y-e.y,I=Math.sqrt(g*g+u*u),T=y.x-e.x,M=y.y-e.y,_=Math.sqrt(T*T+M*M);return I<_?-1:I===_?0:1}),s[0]):r}const vt=(r,t)=>{var e=r.x,n=r.y,a=t.x-e,s=t.y-n,i=r.width/2,l=r.height/2,c,o;return Math.abs(s)*i>Math.abs(a)*l?(s<0&&(l=-l),c=s===0?0:l*a/s,o=l):(a<0&&(i=-i),c=i,o=a===0?0:i*s/a),{x:e+c,y:n+o}},Lt=vt,m={node:ut,circle:wt,ellipse:tt,polygon:kt,rect:Lt},St=async(r,t)=>{t.useHtmlLabels||w().flowchart.htmlLabels||(t.centerLabel=!0);const{shapeSvg:n,bbox:a,halfPadding:s}=await E(r,t,"node "+t.classes,!0);x.info("Classes = ",t.classes);const i=n.insert("rect",":first-child");return i.attr("rx",t.rx).attr("ry",t.ry).attr("x",-a.width/2-s).attr("y",-a.height/2-s).attr("width",a.width+t.padding).attr("height",a.height+t.padding),k(t,i),t.intersect=function(l){return m.rect(t,l)},n},Bt=St,J=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=n.height+t.padding,i=a+s,l=[{x:i/2,y:0},{x:i,y:-i/2},{x:i/2,y:-i},{x:0,y:-i/2}];x.info("Question main (Circle)");const c=N(e,i,i,l);return c.attr("style",t.style),k(t,c),t.intersect=function(o){return x.warn("Intersect called"),m.polygon(t,l,o)},e},Et=(r,t)=>{const e=r.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=28,a=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return e.insert("polygon",":first-child").attr("points",a.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(i){return m.circle(t,14,i)},e},Mt=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=4,s=n.height+t.padding,i=s/a,l=n.width+2*i+t.padding,c=[{x:i,y:0},{x:l-i,y:0},{x:l,y:-s/2},{x:l-i,y:-s},{x:i,y:-s},{x:0,y:-s/2}],o=N(e,l,s,c);return o.attr("style",t.style),k(t,o),t.intersect=function(h){return m.polygon(t,c,h)},e},Ct=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=n.height+t.padding,i=[{x:-s/2,y:0},{x:a,y:0},{x:a,y:-s},{x:-s/2,y:-s},{x:0,y:-s/2}];return N(e,a,s,i).attr("style",t.style),t.width=a+s,t.height=s,t.intersect=function(c){return m.polygon(t,i,c)},e},Tt=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=n.height+t.padding,i=[{x:-2*s/6,y:0},{x:a-s/6,y:0},{x:a+2*s/6,y:-s},{x:s/6,y:-s}],l=N(e,a,s,i);return l.attr("style",t.style),k(t,l),t.intersect=function(c){return m.polygon(t,i,c)},e},Rt=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=n.height+t.padding,i=[{x:2*s/6,y:0},{x:a+s/6,y:0},{x:a-2*s/6,y:-s},{x:-s/6,y:-s}],l=N(e,a,s,i);return l.attr("style",t.style),k(t,l),t.intersect=function(c){return m.polygon(t,i,c)},e},It=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=n.height+t.padding,i=[{x:-2*s/6,y:0},{x:a+2*s/6,y:0},{x:a-s/6,y:-s},{x:s/6,y:-s}],l=N(e,a,s,i);return l.attr("style",t.style),k(t,l),t.intersect=function(c){return m.polygon(t,i,c)},e},Ht=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=n.height+t.padding,i=[{x:s/6,y:0},{x:a-s/6,y:0},{x:a+2*s/6,y:-s},{x:-2*s/6,y:-s}],l=N(e,a,s,i);return l.attr("style",t.style),k(t,l),t.intersect=function(c){return m.polygon(t,i,c)},e},$t=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=n.height+t.padding,i=[{x:0,y:0},{x:a+s/2,y:0},{x:a,y:-s/2},{x:a+s/2,y:-s},{x:0,y:-s}],l=N(e,a,s,i);return l.attr("style",t.style),k(t,l),t.intersect=function(c){return m.polygon(t,i,c)},e},Nt=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=a/2,i=s/(2.5+a/50),l=n.height+i+t.padding,c="M 0,"+i+" a "+s+","+i+" 0,0,0 "+a+" 0 a "+s+","+i+" 0,0,0 "+-a+" 0 l 0,"+l+" a "+s+","+i+" 0,0,0 "+a+" 0 l 0,"+-l,o=e.attr("label-offset-y",i).insert("path",":first-child").attr("style",t.style).attr("d",c).attr("transform","translate("+-a/2+","+-(l/2+i)+")");return k(t,o),t.intersect=function(h){const f=m.rect(t,h),b=f.x-t.x;if(s!=0&&(Math.abs(b)t.height/2-i)){let d=i*i*(1-b*b/(s*s));d!=0&&(d=Math.sqrt(d)),d=i-d,h.y-t.y>0&&(d=-d),f.y+=d}return f},e},_t=async(r,t)=>{const{shapeSvg:e,bbox:n,halfPadding:a}=await E(r,t,"node "+t.classes,!0),s=e.insert("rect",":first-child"),i=n.width+t.padding,l=n.height+t.padding;if(s.attr("class","basic label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",-n.width/2-a).attr("y",-n.height/2-a).attr("width",i).attr("height",l),t.props){const c=new Set(Object.keys(t.props));t.props.borders&&(rt(s,t.props.borders,i,l),c.delete("borders")),c.forEach(o=>{x.warn(`Unknown node property ${o}`)})}return k(t,s),t.intersect=function(c){return m.rect(t,c)},e},Wt=async(r,t)=>{const{shapeSvg:e}=await E(r,t,"label",!0);x.trace("Classes = ",t.classes);const n=e.insert("rect",":first-child"),a=0,s=0;if(n.attr("width",a).attr("height",s),e.attr("class","label edgeLabel"),t.props){const i=new Set(Object.keys(t.props));t.props.borders&&(rt(n,t.props.borders,a,s),i.delete("borders")),i.forEach(l=>{x.warn(`Unknown node property ${l}`)})}return k(t,n),t.intersect=function(i){return m.rect(t,i)},e};function rt(r,t,e,n){const a=[],s=l=>{a.push(l,0)},i=l=>{a.push(0,l)};t.includes("t")?(x.debug("add top border"),s(e)):i(e),t.includes("r")?(x.debug("add right border"),s(n)):i(n),t.includes("b")?(x.debug("add bottom border"),s(e)):i(e),t.includes("l")?(x.debug("add left border"),s(n)):i(n),r.attr("stroke-dasharray",a.join(" "))}const Xt=(r,t)=>{let e;t.classes?e="node "+t.classes:e="node default";const n=r.insert("g").attr("class",e).attr("id",t.domId||t.id),a=n.insert("rect",":first-child"),s=n.insert("line"),i=n.insert("g").attr("class","label"),l=t.labelText.flat?t.labelText.flat():t.labelText;let c="";typeof l=="object"?c=l[0]:c=l,x.info("Label text abc79",c,l,typeof l=="object");const o=i.node().appendChild(R(c,t.labelStyle,!0,!0));let h={width:0,height:0};if(H(w().flowchart.htmlLabels)){const y=o.children[0],g=B(o);h=y.getBoundingClientRect(),g.attr("width",h.width),g.attr("height",h.height)}x.info("Text 2",l);const f=l.slice(1,l.length);let b=o.getBBox();const d=i.node().appendChild(R(f.join?f.join("
"):f,t.labelStyle,!0,!0));if(H(w().flowchart.htmlLabels)){const y=d.children[0],g=B(d);h=y.getBoundingClientRect(),g.attr("width",h.width),g.attr("height",h.height)}const p=t.padding/2;return B(d).attr("transform","translate( "+(h.width>b.width?0:(b.width-h.width)/2)+", "+(b.height+p+5)+")"),B(o).attr("transform","translate( "+(h.width{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.height+t.padding,s=n.width+a/4+t.padding,i=e.insert("rect",":first-child").attr("style",t.style).attr("rx",a/2).attr("ry",a/2).attr("x",-s/2).attr("y",-a/2).attr("width",s).attr("height",a);return k(t,i),t.intersect=function(l){return m.rect(t,l)},e},Ut=async(r,t)=>{const{shapeSvg:e,bbox:n,halfPadding:a}=await E(r,t,void 0,!0),s=e.insert("circle",":first-child");return s.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+a).attr("width",n.width+t.padding).attr("height",n.height+t.padding),x.info("Circle main"),k(t,s),t.intersect=function(i){return x.info("Circle intersect",t,n.width/2+a,i),m.circle(t,n.width/2+a,i)},e},At=async(r,t)=>{const{shapeSvg:e,bbox:n,halfPadding:a}=await E(r,t,void 0,!0),s=5,i=e.insert("g",":first-child"),l=i.insert("circle"),c=i.insert("circle");return i.attr("class",t.class),l.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+a+s).attr("width",n.width+t.padding+s*2).attr("height",n.height+t.padding+s*2),c.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+a).attr("width",n.width+t.padding).attr("height",n.height+t.padding),x.info("DoubleCircle main"),k(t,l),t.intersect=function(o){return x.info("DoubleCircle intersect",t,n.width/2+a+s,o),m.circle(t,n.width/2+a+s,o)},e},Dt=async(r,t)=>{const{shapeSvg:e,bbox:n}=await E(r,t,void 0,!0),a=n.width+t.padding,s=n.height+t.padding,i=[{x:0,y:0},{x:a,y:0},{x:a,y:-s},{x:0,y:-s},{x:0,y:0},{x:-8,y:0},{x:a+8,y:0},{x:a+8,y:-s},{x:-8,y:-s},{x:-8,y:0}],l=N(e,a,s,i);return l.attr("style",t.style),k(t,l),t.intersect=function(c){return m.polygon(t,i,c)},e},Ot=(r,t)=>{const e=r.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=e.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),k(t,n),t.intersect=function(a){return m.circle(t,7,a)},e},q=(r,t,e)=>{const n=r.insert("g").attr("class","node default").attr("id",t.domId||t.id);let a=70,s=10;e==="LR"&&(a=10,s=70);const i=n.append("rect").attr("x",-1*a/2).attr("y",-1*s/2).attr("width",a).attr("height",s).attr("class","fork-join");return k(t,i),t.height=t.height+t.padding/2,t.width=t.width+t.padding/2,t.intersect=function(l){return m.rect(t,l)},n},jt=(r,t)=>{const e=r.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=e.insert("circle",":first-child"),a=e.insert("circle",":first-child");return a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),k(t,a),t.intersect=function(s){return m.circle(t,7,s)},e},zt=(r,t)=>{const e=t.padding/2,n=4,a=8;let s;t.classes?s="node "+t.classes:s="node default";const i=r.insert("g").attr("class",s).attr("id",t.domId||t.id),l=i.insert("rect",":first-child"),c=i.insert("line"),o=i.insert("line");let h=0,f=n;const b=i.insert("g").attr("class","label");let d=0;const p=t.classData.annotations&&t.classData.annotations[0],y=t.classData.annotations[0]?"«"+t.classData.annotations[0]+"»":"",g=b.node().appendChild(R(y,t.labelStyle,!0,!0));let u=g.getBBox();if(H(w().flowchart.htmlLabels)){const v=g.children[0],L=B(g);u=v.getBoundingClientRect(),L.attr("width",u.width),L.attr("height",u.height)}t.classData.annotations[0]&&(f+=u.height+n,h+=u.width);let I=t.classData.label;t.classData.type!==void 0&&t.classData.type!==""&&(w().flowchart.htmlLabels?I+="<"+t.classData.type+">":I+="<"+t.classData.type+">");const T=b.node().appendChild(R(I,t.labelStyle,!0,!0));B(T).attr("class","classTitle");let M=T.getBBox();if(H(w().flowchart.htmlLabels)){const v=T.children[0],L=B(T);M=v.getBoundingClientRect(),L.attr("width",M.width),L.attr("height",M.height)}f+=M.height+n,M.width>h&&(h=M.width);const _=[];t.classData.members.forEach(v=>{const L=Q(v);let W=L.displayText;w().flowchart.htmlLabels&&(W=W.replace(//g,">"));const $=b.node().appendChild(R(W,L.cssStyle?L.cssStyle:t.labelStyle,!0,!0));let C=$.getBBox();if(H(w().flowchart.htmlLabels)){const O=$.children[0],Y=B($);C=O.getBoundingClientRect(),Y.attr("width",C.width),Y.attr("height",C.height)}C.width>h&&(h=C.width),f+=C.height+n,_.push($)}),f+=a;const z=[];if(t.classData.methods.forEach(v=>{const L=Q(v);let W=L.displayText;w().flowchart.htmlLabels&&(W=W.replace(//g,">"));const $=b.node().appendChild(R(W,L.cssStyle?L.cssStyle:t.labelStyle,!0,!0));let C=$.getBBox();if(H(w().flowchart.htmlLabels)){const O=$.children[0],Y=B($);C=O.getBoundingClientRect(),Y.attr("width",C.width),Y.attr("height",C.height)}C.width>h&&(h=C.width),f+=C.height+n,z.push($)}),f+=a,p){let v=(h-u.width)/2;B(g).attr("transform","translate( "+(-1*h/2+v)+", "+-1*f/2+")"),d=u.height+n}let at=(h-M.width)/2;return B(T).attr("transform","translate( "+(-1*h/2+at)+", "+(-1*f/2+d)+")"),d+=M.height+n,c.attr("class","divider").attr("x1",-h/2-e).attr("x2",h/2+e).attr("y1",-f/2-e+a+d).attr("y2",-f/2-e+a+d),d+=a,_.forEach(v=>{B(v).attr("transform","translate( "+-h/2+", "+(-1*f/2+d+a/2)+")");const L=v==null?void 0:v.getBBox();d+=((L==null?void 0:L.height)??0)+n}),d+=a,o.attr("class","divider").attr("x1",-h/2-e).attr("x2",h/2+e).attr("y1",-f/2-e+a+d).attr("y2",-f/2-e+a+d),d+=a,z.forEach(v=>{B(v).attr("transform","translate( "+-h/2+", "+(-1*f/2+d)+")");const L=v==null?void 0:v.getBBox();d+=((L==null?void 0:L.height)??0)+n}),l.attr("class","outer title-state").attr("x",-h/2-e).attr("y",-(f/2)-e).attr("width",h+t.padding).attr("height",f+t.padding),k(t,l),t.intersect=function(v){return m.rect(t,v)},i},K={rhombus:J,question:J,rect:_t,labelRect:Wt,rectWithTitle:Xt,choice:Et,circle:Ut,doublecircle:At,stadium:Yt,hexagon:Mt,rect_left_inv_arrow:Ct,lean_right:Tt,lean_left:Rt,trapezoid:It,inv_trapezoid:Ht,rect_right_inv_arrow:$t,cylinder:Nt,start:Ot,end:jt,note:Bt,subroutine:Dt,fork:q,join:q,class_box:zt};let X={};const Gt=async(r,t,e)=>{let n,a;if(t.link){let s;w().securityLevel==="sandbox"?s="_top":t.linkTarget&&(s=t.linkTarget||"_blank"),n=r.insert("svg:a").attr("xlink:href",t.link).attr("target",s),a=await K[t.shape](n,t,e)}else a=await K[t.shape](r,t,e),n=a;return t.tooltip&&a.attr("title",t.tooltip),t.class&&a.attr("class","node default "+t.class),X[t.id]=n,t.haveCallback&&X[t.id].attr("class",X[t.id].attr("class")+" clickable"),n},Pt=(r,t)=>{X[t.id]=r},tr=()=>{X={}},rr=r=>{const t=X[r.id];x.trace("Transforming node",r.diff,r,"translate("+(r.x-r.width/2-5)+", "+r.width/2+")");const e=8,n=r.diff||0;return r.clusterNode?t.attr("transform","translate("+(r.x+n-r.width/2)+", "+(r.y-r.height/2-e)+")"):t.attr("transform","translate("+r.x+", "+r.y+")"),n};let D={},S={};const ar=()=>{D={},S={}},er=(r,t)=>{const e=H(w().flowchart.htmlLabels),n=t.labelType==="markdown"?P(r,t.label,{style:t.labelStyle,useHtmlLabels:e,addSvgBackground:!0}):R(t.label,t.labelStyle);x.info("abc82",t,t.labelType);const a=r.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label");s.node().appendChild(n);let i=n.getBBox();if(e){const c=n.children[0],o=B(n);i=c.getBoundingClientRect(),o.attr("width",i.width),o.attr("height",i.height)}s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),D[t.id]=a,t.width=i.width,t.height=i.height;let l;if(t.startLabelLeft){const c=R(t.startLabelLeft,t.labelStyle),o=r.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),S[t.id]||(S[t.id]={}),S[t.id].startLeft=o,A(l,t.startLabelLeft)}if(t.startLabelRight){const c=R(t.startLabelRight,t.labelStyle),o=r.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=o.node().appendChild(c),h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),S[t.id]||(S[t.id]={}),S[t.id].startRight=o,A(l,t.startLabelRight)}if(t.endLabelLeft){const c=R(t.endLabelLeft,t.labelStyle),o=r.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),o.node().appendChild(c),S[t.id]||(S[t.id]={}),S[t.id].endLeft=o,A(l,t.endLabelLeft)}if(t.endLabelRight){const c=R(t.endLabelRight,t.labelStyle),o=r.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),o.node().appendChild(c),S[t.id]||(S[t.id]={}),S[t.id].endRight=o,A(l,t.endLabelRight)}return n};function A(r,t){w().flowchart.htmlLabels&&r&&(r.style.width=t.length*9+"px",r.style.height="12px")}const sr=(r,t)=>{x.info("Moving label abc78 ",r.id,r.label,D[r.id]);let e=t.updatedPath?t.updatedPath:t.originalPath;if(r.label){const n=D[r.id];let a=r.x,s=r.y;if(e){const i=U.calcLabelPosition(e);x.info("Moving label "+r.label+" from (",a,",",s,") to (",i.x,",",i.y,") abc78"),t.updatedPath&&(a=i.x,s=i.y)}n.attr("transform","translate("+a+", "+s+")")}if(r.startLabelLeft){const n=S[r.id].startLeft;let a=r.x,s=r.y;if(e){const i=U.calcTerminalLabelPosition(r.arrowTypeStart?10:0,"start_left",e);a=i.x,s=i.y}n.attr("transform","translate("+a+", "+s+")")}if(r.startLabelRight){const n=S[r.id].startRight;let a=r.x,s=r.y;if(e){const i=U.calcTerminalLabelPosition(r.arrowTypeStart?10:0,"start_right",e);a=i.x,s=i.y}n.attr("transform","translate("+a+", "+s+")")}if(r.endLabelLeft){const n=S[r.id].endLeft;let a=r.x,s=r.y;if(e){const i=U.calcTerminalLabelPosition(r.arrowTypeEnd?10:0,"end_left",e);a=i.x,s=i.y}n.attr("transform","translate("+a+", "+s+")")}if(r.endLabelRight){const n=S[r.id].endRight;let a=r.x,s=r.y;if(e){const i=U.calcTerminalLabelPosition(r.arrowTypeEnd?10:0,"end_right",e);a=i.x,s=i.y}n.attr("transform","translate("+a+", "+s+")")}},Zt=(r,t)=>{const e=r.x,n=r.y,a=Math.abs(t.x-e),s=Math.abs(t.y-n),i=r.width/2,l=r.height/2;return a>=i||s>=l},Ft=(r,t,e)=>{x.warn(`intersection calc abc89:
outsidePoint: ${JSON.stringify(t)}
insidePoint : ${JSON.stringify(e)}
node : x:${r.x} y:${r.y} w:${r.width} h:${r.height}`);const n=r.x,a=r.y,s=Math.abs(n-e.x),i=r.width/2;let l=e.xMath.abs(n-t.x)*c){let f=e.y{x.warn("abc88 cutPathAtIntersect",r,t);let e=[],n=r[0],a=!1;return r.forEach(s=>{if(x.info("abc88 checking point",s,t),!Zt(t,s)&&!a){const i=Ft(t,n,s);x.warn("abc88 inside",s,n,i),x.warn("abc88 intersection",i);let l=!1;e.forEach(c=>{l=l||c.x===i.x&&c.y===i.y}),e.some(c=>c.x===i.x&&c.y===i.y)?x.warn("abc88 no intersect",i,e):e.push(i),a=!0}else x.warn("abc88 outside",s,n),n=s,a||e.push(s)}),x.warn("abc88 returning points",e),e},ir=function(r,t,e,n,a,s){let i=e.points,l=!1;const c=s.node(t.v);var o=s.node(t.w);x.info("abc88 InsertEdge: ",e),o.intersect&&c.intersect&&(i=i.slice(1,e.points.length-1),i.unshift(c.intersect(i[0])),x.info("Last point",i[i.length-1],o,o.intersect(i[i.length-1])),i.push(o.intersect(i[i.length-1]))),e.toCluster&&(x.info("to cluster abc88",n[e.toCluster]),i=G(e.points,n[e.toCluster].node),l=!0),e.fromCluster&&(x.info("from cluster abc88",n[e.fromCluster]),i=G(i.reverse(),n[e.fromCluster].node).reverse(),l=!0);const h=i.filter(u=>!Number.isNaN(u.y));let f;a==="graph"||a==="flowchart"?f=e.curve||F:f=F;const b=et().x(function(u){return u.x}).y(function(u){return u.y}).curve(f);let d;switch(e.thickness){case"normal":d="edge-thickness-normal";break;case"thick":d="edge-thickness-thick";break;case"invisible":d="edge-thickness-thick";break;default:d=""}switch(e.pattern){case"solid":d+=" edge-pattern-solid";break;case"dotted":d+=" edge-pattern-dotted";break;case"dashed":d+=" edge-pattern-dashed";break}const p=r.append("path").attr("d",b(h)).attr("id",e.id).attr("class"," "+d+(e.classes?" "+e.classes:"")).attr("style",e.style);let y="";switch((w().flowchart.arrowMarkerAbsolute||w().state.arrowMarkerAbsolute)&&(y=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,y=y.replace(/\(/g,"\\("),y=y.replace(/\)/g,"\\)")),x.info("arrowTypeStart",e.arrowTypeStart),x.info("arrowTypeEnd",e.arrowTypeEnd),e.arrowTypeStart){case"arrow_cross":p.attr("marker-start","url("+y+"#"+a+"-crossStart)");break;case"arrow_point":p.attr("marker-start","url("+y+"#"+a+"-pointStart)");break;case"arrow_barb":p.attr("marker-start","url("+y+"#"+a+"-barbStart)");break;case"arrow_circle":p.attr("marker-start","url("+y+"#"+a+"-circleStart)");break;case"aggregation":p.attr("marker-start","url("+y+"#"+a+"-aggregationStart)");break;case"extension":p.attr("marker-start","url("+y+"#"+a+"-extensionStart)");break;case"composition":p.attr("marker-start","url("+y+"#"+a+"-compositionStart)");break;case"dependency":p.attr("marker-start","url("+y+"#"+a+"-dependencyStart)");break;case"lollipop":p.attr("marker-start","url("+y+"#"+a+"-lollipopStart)");break}switch(e.arrowTypeEnd){case"arrow_cross":p.attr("marker-end","url("+y+"#"+a+"-crossEnd)");break;case"arrow_point":p.attr("marker-end","url("+y+"#"+a+"-pointEnd)");break;case"arrow_barb":p.attr("marker-end","url("+y+"#"+a+"-barbEnd)");break;case"arrow_circle":p.attr("marker-end","url("+y+"#"+a+"-circleEnd)");break;case"aggregation":p.attr("marker-end","url("+y+"#"+a+"-aggregationEnd)");break;case"extension":p.attr("marker-end","url("+y+"#"+a+"-extensionEnd)");break;case"composition":p.attr("marker-end","url("+y+"#"+a+"-compositionEnd)");break;case"dependency":p.attr("marker-end","url("+y+"#"+a+"-dependencyEnd)");break;case"lollipop":p.attr("marker-end","url("+y+"#"+a+"-lollipopEnd)");break}let g={};return l&&(g.updatedPath=i),g.originalPath=e.points,g};export{Gt as a,er as b,ir as c,sr as d,tr as e,ar as f,R as g,Lt as h,Kt as i,E as l,rr as p,Pt as s,k as u};
-//# sourceMappingURL=edges-b00f0ec2-fbc7a231.js.map
+//# sourceMappingURL=edges-b00f0ec2-8fed315f.js.map
diff --git a/docs/assets/edges-b00f0ec2-fbc7a231.js.map b/docs/assets/edges-b00f0ec2-8fed315f.js.map
similarity index 99%
rename from docs/assets/edges-b00f0ec2-fbc7a231.js.map
rename to docs/assets/edges-b00f0ec2-8fed315f.js.map
index 5f16325f..71090fc1 100644
--- a/docs/assets/edges-b00f0ec2-fbc7a231.js.map
+++ b/docs/assets/edges-b00f0ec2-8fed315f.js.map
@@ -1 +1 @@
-{"version":3,"file":"edges-b00f0ec2-fbc7a231.js","sources":["../../node_modules/mermaid/dist/edges-b00f0ec2.js"],"sourcesContent":["import { l as log, n as evaluate, c as getConfig, H as decodeEntities, d as sanitizeText, u as utils } from \"./mermaid-a98f434b.js\";\nimport { select, curveBasis, line } from \"d3\";\nimport { c as createText } from \"./createText-285e50b4.js\";\nimport { p as parseMember } from \"./svgDraw-5d8a058e.js\";\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\nconst extension = (elem, type, id) => {\n log.trace(\"Making markers for \", id);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-extensionStart\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,7 L18,13 V 1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-extensionEnd\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 V 13 L18,7 Z\");\n};\nconst composition = (elem, type) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-compositionStart\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-compositionEnd\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n};\nconst aggregation = (elem, type) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-aggregationStart\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-aggregationEnd\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n};\nconst dependency = (elem, type) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-dependencyStart\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 5,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-dependencyEnd\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst lollipop = (elem, type) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-lollipopStart\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"white\").attr(\"cx\", 6).attr(\"cy\", 7).attr(\"r\", 6);\n};\nconst point = (elem, type) => {\n elem.append(\"marker\").attr(\"id\", type + \"-pointEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 10).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", type + \"-pointStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 0).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 5 L 10 10 L 10 0 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n};\nconst circle$1 = (elem, type) => {\n elem.append(\"marker\").attr(\"id\", type + \"-circleEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 11).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", type + \"-circleStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", -1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n};\nconst cross = (elem, type) => {\n elem.append(\"marker\").attr(\"id\", type + \"-crossEnd\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", 12).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", type + \"-crossStart\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", -1).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n};\nconst barb = (elem, type) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-barbEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 14).attr(\"markerUnits\", \"strokeWidth\").attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 19,7 L9,13 L14,7 L9,1 Z\");\n};\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle: circle$1,\n cross,\n barb\n};\nconst insertMarkers$1 = insertMarkers;\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\nfunction addHtmlLabel(node) {\n const fo = select(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n div.html(\n '\" + label + \"\"\n );\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \"
\");\n log.info(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: decodeEntities(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n ),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n let vertexNode = addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|
/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\nconst createLabel$1 = createLabel;\nconst labelHelper = async (parent, node, _classes, isNode) => {\n let classes;\n const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig().flowchart.htmlLabels);\n if (!_classes) {\n classes = \"node default\";\n } else {\n classes = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", node.labelStyle);\n let labelText;\n if (node.labelText === void 0) {\n labelText = \"\";\n } else {\n labelText = typeof node.labelText === \"string\" ? node.labelText : node.labelText[0];\n }\n const textNode = label.node();\n let text;\n if (node.labelType === \"markdown\") {\n text = createText(label, sanitizeText(decodeEntities(labelText), getConfig()), {\n useHtmlLabels,\n width: node.width || getConfig().flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n });\n } else {\n text = textNode.appendChild(\n createLabel$1(\n sanitizeText(decodeEntities(labelText), getConfig()),\n node.labelStyle,\n false,\n isNode\n )\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = labelText.replace(/
]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = getConfig().fontSize ? getConfig().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n img.style.width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n};\nconst updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\nfunction intersectNode(node, point2) {\n return node.intersect(point2);\n}\nfunction intersectEllipse(node, rx, ry, point2) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point2.x;\n var py = cy - point2.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point2.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point2.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\nfunction intersectCircle(node, rx, point2) {\n return intersectEllipse(node, rx, rx, point2);\n}\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\nfunction intersectPolygon(node, polyPoints, point2) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect2 = intersectLine(\n node,\n point2,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect2) {\n intersections.push(intersect2);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - point2.x;\n var pdy = p.y - point2.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point2.x;\n var qdy = q.y - point2.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\nconst intersectRect = (node, point2) => {\n var x = node.x;\n var y = node.y;\n var dx = point2.x - x;\n var dy = point2.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n};\nconst intersectRect$1 = intersectRect;\nconst intersect = {\n node: intersectNode,\n circle: intersectCircle,\n ellipse: intersectEllipse,\n polygon: intersectPolygon,\n rect: intersectRect$1\n};\nconst note = async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getConfig().flowchart.htmlLabels;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n log.info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst note$1 = note;\nconst question = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n log.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point2) {\n log.warn(\"Intersect called\");\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst choice = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return intersect.circle(node, 14, point2);\n };\n return shapeSvg;\n};\nconst hexagon = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst rect_left_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst lean_right = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst lean_left = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst inv_trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst rect_right_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst cylinder = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n const pos = intersect.rect(node, point2);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point2.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n};\nconst rect = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = bbox.width + node.padding;\n const totalHeight = bbox.height + node.padding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst labelRect = async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n log.trace(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = (length) => {\n strokeDashArray.push(length, 0);\n };\n const skipBorder = (length) => {\n strokeDashArray.push(0, length);\n };\n if (borders.includes(\"t\")) {\n log.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n log.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n log.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n log.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\nconst rectWithTitle = (parent, node) => {\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const innerLine = shapeSvg.insert(\"line\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n let title = \"\";\n if (typeof text2 === \"object\") {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info(\"Label text abc79\", title, text2, typeof text2 === \"object\");\n const text = label.node().appendChild(createLabel$1(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label.node().appendChild(\n createLabel$1(textRows.join ? textRows.join(\"
\") : textRows, node.labelStyle, true, true)\n );\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n select(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst stadium = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst circle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, void 0, true);\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"Circle main\");\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n log.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n};\nconst doublecircle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, void 0, true);\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point2) {\n log.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return intersect.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n};\nconst subroutine = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst start = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n return intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst end = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n innerCircle.attr(\"class\", \"state-end\").attr(\"r\", 5).attr(\"width\", 10).attr(\"height\", 10);\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n return intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst class_box = (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"«\" + node.classData.annotations[0] + \"»\" : \"\";\n const interfaceLabel = labelContainer.node().appendChild(createLabel$1(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if (getConfig().flowchart.htmlLabels) {\n classTitleString += \"<\" + node.classData.type + \">\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = labelContainer.node().appendChild(createLabel$1(classTitleString, node.labelStyle, true, true));\n select(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach((str) => {\n const parsedInfo = parseMember(str);\n let parsedText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n parsedText = parsedText.replace(//g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel$1(\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n maxHeight += lineHeight;\n const classMethods = [];\n node.classData.methods.forEach((str) => {\n const parsedInfo = parseMember(str);\n let displayText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n displayText = displayText.replace(//g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel$1(\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classMethods.push(lbl);\n });\n maxHeight += lineHeight;\n if (hasInterface) {\n let diffX2 = (maxWidth - interfaceBBox.width) / 2;\n select(interfaceLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX2) + \", \" + -1 * maxHeight / 2 + \")\"\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select(classTitleLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX) + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n verticalPos += classTitleBBox.height + rowPadding;\n topLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classAttributes.forEach((lbl) => {\n select(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + \")\"\n );\n const memberBBox = lbl == null ? void 0 : lbl.getBBox();\n verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;\n });\n verticalPos += lineHeight;\n bottomLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classMethods.forEach((lbl) => {\n select(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n const memberBBox = lbl == null ? void 0 : lbl.getBBox();\n verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;\n });\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -maxWidth / 2 - halfPadding).attr(\"y\", -(maxHeight / 2) - halfPadding).attr(\"width\", maxWidth + node.padding).attr(\"height\", maxHeight + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst shapes = {\n rhombus: question,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle,\n doublecircle,\n stadium,\n hexagon,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note: note$1,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\nlet nodeElems = {};\nconst insertNode = async (elem, node, dir) => {\n let newEl;\n let el;\n if (node.link) {\n let target;\n if (getConfig().securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target);\n el = await shapes[node.shape](newEl, node, dir);\n } else {\n el = await shapes[node.shape](elem, node, dir);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n if (node.class) {\n el.attr(\"class\", \"node default \" + node.class);\n }\n nodeElems[node.id] = newEl;\n if (node.haveCallback) {\n nodeElems[node.id].attr(\"class\", nodeElems[node.id].attr(\"class\") + \" clickable\");\n }\n return newEl;\n};\nconst setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nconst clear$1 = () => {\n nodeElems = {};\n};\nconst positionNode = (node) => {\n const el = nodeElems[node.id];\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n};\nlet edgeLabels = {};\nlet terminalLabels = {};\nconst clear = () => {\n edgeLabels = {};\n terminalLabels = {};\n};\nconst insertEdgeLabel = (elem, edge) => {\n const useHtmlLabels = evaluate(getConfig().flowchart.htmlLabels);\n const labelElement = edge.labelType === \"markdown\" ? createText(elem, edge.label, {\n style: edge.labelStyle,\n useHtmlLabels,\n addSvgBackground: true\n }) : createLabel$1(edge.label, edge.labelStyle);\n log.info(\"abc82\", edge, edge.labelType);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startLabelElement = createLabel$1(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startLabelElement = createLabel$1(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endLabelElement = createLabel$1(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endLabelElement = createLabel$1(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n};\nfunction setTerminalWidth(fo, value) {\n if (getConfig().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\nconst positionEdgeLabel = (edge, paths) => {\n log.info(\"Moving label abc78 \", edge.id, edge.label, edgeLabels[edge.id]);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcLabelPosition(path);\n log.info(\n \"Moving label \" + edge.label + \" from (\",\n x,\n \",\",\n y,\n \") to (\",\n pos.x,\n \",\",\n pos.y,\n \") abc78\"\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n \"start_right\",\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_right\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n};\nconst outsideNode = (node, point2) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point2.x - x);\n const dy = Math.abs(point2.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n};\nconst intersection = (node, outsidePoint, insidePoint) => {\n log.warn(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = R * q / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q\n };\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n log.warn(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n return res;\n } else {\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = Q * r / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.warn(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n return { x: _x, y: _y };\n }\n};\nconst cutPathAtIntersect = (_points, boundryNode) => {\n log.warn(\"abc88 cutPathAtIntersect\", _points, boundryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n log.info(\"abc88 checking point\", point2, boundryNode);\n if (!outsideNode(boundryNode, point2) && !isInside) {\n const inter = intersection(boundryNode, lastPointOutside, point2);\n log.warn(\"abc88 inside\", point2, lastPointOutside, inter);\n log.warn(\"abc88 intersection\", inter);\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n });\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n } else {\n log.warn(\"abc88 no intersect\", inter, points);\n }\n isInside = true;\n } else {\n log.warn(\"abc88 outside\", point2, lastPointOutside);\n lastPointOutside = point2;\n if (!isInside) {\n points.push(point2);\n }\n }\n });\n log.warn(\"abc88 returning points\", points);\n return points;\n};\nconst insertEdge = function(elem, e, edge, clusterDb, diagramType, graph) {\n let points = edge.points;\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n log.info(\"abc88 InsertEdge: \", edge);\n if (head.intersect && tail.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n log.info(\n \"Last point\",\n points[points.length - 1],\n head,\n head.intersect(points[points.length - 1])\n );\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.info(\"to cluster abc88\", clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n pointsHasChanged = true;\n }\n if (edge.fromCluster) {\n log.info(\"from cluster abc88\", clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n pointsHasChanged = true;\n }\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n let curve;\n if (diagramType === \"graph\" || diagramType === \"flowchart\") {\n curve = edge.curve || curveBasis;\n } else {\n curve = curveBasis;\n }\n const lineFunction = line().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(curve);\n let strokeClasses;\n switch (edge.thickness) {\n case \"normal\":\n strokeClasses = \"edge-thickness-normal\";\n break;\n case \"thick\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n case \"invisible\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n default:\n strokeClasses = \"\";\n }\n switch (edge.pattern) {\n case \"solid\":\n strokeClasses += \" edge-pattern-solid\";\n break;\n case \"dotted\":\n strokeClasses += \" edge-pattern-dotted\";\n break;\n case \"dashed\":\n strokeClasses += \" edge-pattern-dashed\";\n break;\n }\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", edge.id).attr(\"class\", \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\")).attr(\"style\", edge.style);\n let url = \"\";\n if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n log.info(\"arrowTypeStart\", edge.arrowTypeStart);\n log.info(\"arrowTypeEnd\", edge.arrowTypeEnd);\n switch (edge.arrowTypeStart) {\n case \"arrow_cross\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-crossStart)\");\n break;\n case \"arrow_point\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-pointStart)\");\n break;\n case \"arrow_barb\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-barbStart)\");\n break;\n case \"arrow_circle\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-circleStart)\");\n break;\n case \"aggregation\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-aggregationStart)\");\n break;\n case \"extension\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-extensionStart)\");\n break;\n case \"composition\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-compositionStart)\");\n break;\n case \"dependency\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-dependencyStart)\");\n break;\n case \"lollipop\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-lollipopStart)\");\n break;\n }\n switch (edge.arrowTypeEnd) {\n case \"arrow_cross\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-crossEnd)\");\n break;\n case \"arrow_point\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-pointEnd)\");\n break;\n case \"arrow_barb\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-barbEnd)\");\n break;\n case \"arrow_circle\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-circleEnd)\");\n break;\n case \"aggregation\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-aggregationEnd)\");\n break;\n case \"extension\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-extensionEnd)\");\n break;\n case \"composition\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-compositionEnd)\");\n break;\n case \"dependency\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-dependencyEnd)\");\n break;\n case \"lollipop\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-lollipopEnd)\");\n break;\n }\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\nexport {\n insertMarkers$1 as a,\n clear$1 as b,\n createLabel$1 as c,\n clear as d,\n insertNode as e,\n insertEdgeLabel as f,\n insertEdge as g,\n positionEdgeLabel as h,\n intersectRect$1 as i,\n labelHelper as l,\n positionNode as p,\n setNodeElem as s,\n updateNodeBounds as u\n};\n"],"names":["insertMarkers","elem","markerArray","type","id","markerName","markers","extension","log","composition","aggregation","dependency","lollipop","point","circle$1","cross","barb","insertMarkers$1","applyStyle","dom","styleFn","addHtmlLabel","node","fo","select","div","label","labelClass","createLabel","_vertexText","style","isTitle","isNode","vertexText","evaluate","getConfig","decodeEntities","s","svgLabel","rows","row","tspan","createLabel$1","labelHelper","parent","_classes","classes","useHtmlLabels","shapeSvg","labelText","textNode","text","createText","sanitizeText","bbox","halfPadding","dv","images","noImgText","img","res","setupImage","bodyFontSize","enlargingFactor","updateNodeBounds","element","insertPolygonShape","w","h","points","d","intersectNode","point2","intersectEllipse","rx","ry","cx","cy","px","py","det","dx","dy","intersectCircle","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","offset","num","x","y","sameSign","intersectPolygon","polyPoints","x1","y1","intersections","minX","minY","entry","left","top","i","intersect2","q","pdx","pdy","distp","qdx","qdy","distq","intersectRect","sx","sy","intersectRect$1","intersect","note","rect2","note$1","question","questionElem","choice","hexagon","f","m","hex","rect_left_inv_arrow","lean_right","el","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","shape","pos","rect","totalWidth","totalHeight","propKeys","applyNodePropertyBorders","propKey","labelRect","borders","strokeDashArray","addBorder","length","skipBorder","rectWithTitle","innerLine","text2","title","textRows","titleBox","descr","stadium","circle","circle2","doublecircle","gap","circleGroup","outerCircle","innerCircle","subroutine","start","forkJoin","dir","width","height","end","class_box","rowPadding","lineHeight","topLine","bottomLine","maxWidth","maxHeight","labelContainer","verticalPos","hasInterface","interfaceLabelText","interfaceLabel","interfaceBBox","classTitleString","classTitleLabel","classTitleBBox","classAttributes","str","parsedInfo","parseMember","parsedText","lbl","classMethods","displayText","diffX2","diffX","memberBBox","shapes","nodeElems","insertNode","newEl","target","setNodeElem","clear$1","positionNode","padding","diff","edgeLabels","terminalLabels","clear","insertEdgeLabel","edge","labelElement","edgeLabel","startLabelElement","startEdgeLabelLeft","inner","slBox","setTerminalWidth","startEdgeLabelRight","endLabelElement","endEdgeLabelLeft","endEdgeLabelRight","value","positionEdgeLabel","paths","path","utils","outsideNode","intersection","outsidePoint","insidePoint","r","Q","R","_x","_y","cutPathAtIntersect","_points","boundryNode","lastPointOutside","isInside","inter","pointPresent","p","e","insertEdge","clusterDb","diagramType","graph","pointsHasChanged","tail","head","lineData","curve","curveBasis","lineFunction","line","strokeClasses","svgPath","url"],"mappings":"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","x_google_ignoreList":[0]}
\ No newline at end of file
+{"version":3,"file":"edges-b00f0ec2-8fed315f.js","sources":["../../node_modules/mermaid/dist/edges-b00f0ec2.js"],"sourcesContent":["import { l as log, n as evaluate, c as getConfig, H as decodeEntities, d as sanitizeText, u as utils } from \"./mermaid-a98f434b.js\";\nimport { select, curveBasis, line } from \"d3\";\nimport { c as createText } from \"./createText-285e50b4.js\";\nimport { p as parseMember } from \"./svgDraw-5d8a058e.js\";\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\nconst extension = (elem, type, id) => {\n log.trace(\"Making markers for \", id);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-extensionStart\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,7 L18,13 V 1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-extensionEnd\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 V 13 L18,7 Z\");\n};\nconst composition = (elem, type) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-compositionStart\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-compositionEnd\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n};\nconst aggregation = (elem, type) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-aggregationStart\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-aggregationEnd\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n};\nconst dependency = (elem, type) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-dependencyStart\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 5,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-dependencyEnd\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst lollipop = (elem, type) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-lollipopStart\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"white\").attr(\"cx\", 6).attr(\"cy\", 7).attr(\"r\", 6);\n};\nconst point = (elem, type) => {\n elem.append(\"marker\").attr(\"id\", type + \"-pointEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 10).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", type + \"-pointStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 0).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 5 L 10 10 L 10 0 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n};\nconst circle$1 = (elem, type) => {\n elem.append(\"marker\").attr(\"id\", type + \"-circleEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 11).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", type + \"-circleStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", -1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n};\nconst cross = (elem, type) => {\n elem.append(\"marker\").attr(\"id\", type + \"-crossEnd\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", 12).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", type + \"-crossStart\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", -1).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n};\nconst barb = (elem, type) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-barbEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 14).attr(\"markerUnits\", \"strokeWidth\").attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 19,7 L9,13 L14,7 L9,1 Z\");\n};\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle: circle$1,\n cross,\n barb\n};\nconst insertMarkers$1 = insertMarkers;\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\nfunction addHtmlLabel(node) {\n const fo = select(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n div.html(\n '\" + label + \"\"\n );\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \"
\");\n log.info(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: decodeEntities(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n ),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n let vertexNode = addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|
/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\nconst createLabel$1 = createLabel;\nconst labelHelper = async (parent, node, _classes, isNode) => {\n let classes;\n const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig().flowchart.htmlLabels);\n if (!_classes) {\n classes = \"node default\";\n } else {\n classes = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", node.labelStyle);\n let labelText;\n if (node.labelText === void 0) {\n labelText = \"\";\n } else {\n labelText = typeof node.labelText === \"string\" ? node.labelText : node.labelText[0];\n }\n const textNode = label.node();\n let text;\n if (node.labelType === \"markdown\") {\n text = createText(label, sanitizeText(decodeEntities(labelText), getConfig()), {\n useHtmlLabels,\n width: node.width || getConfig().flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n });\n } else {\n text = textNode.appendChild(\n createLabel$1(\n sanitizeText(decodeEntities(labelText), getConfig()),\n node.labelStyle,\n false,\n isNode\n )\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = labelText.replace(/
]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = getConfig().fontSize ? getConfig().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n img.style.width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n};\nconst updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\nfunction intersectNode(node, point2) {\n return node.intersect(point2);\n}\nfunction intersectEllipse(node, rx, ry, point2) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point2.x;\n var py = cy - point2.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point2.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point2.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\nfunction intersectCircle(node, rx, point2) {\n return intersectEllipse(node, rx, rx, point2);\n}\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\nfunction intersectPolygon(node, polyPoints, point2) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect2 = intersectLine(\n node,\n point2,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect2) {\n intersections.push(intersect2);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - point2.x;\n var pdy = p.y - point2.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point2.x;\n var qdy = q.y - point2.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\nconst intersectRect = (node, point2) => {\n var x = node.x;\n var y = node.y;\n var dx = point2.x - x;\n var dy = point2.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n};\nconst intersectRect$1 = intersectRect;\nconst intersect = {\n node: intersectNode,\n circle: intersectCircle,\n ellipse: intersectEllipse,\n polygon: intersectPolygon,\n rect: intersectRect$1\n};\nconst note = async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getConfig().flowchart.htmlLabels;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n log.info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst note$1 = note;\nconst question = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n log.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point2) {\n log.warn(\"Intersect called\");\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst choice = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return intersect.circle(node, 14, point2);\n };\n return shapeSvg;\n};\nconst hexagon = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst rect_left_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst lean_right = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst lean_left = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst inv_trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst rect_right_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst cylinder = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n const pos = intersect.rect(node, point2);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point2.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n};\nconst rect = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = bbox.width + node.padding;\n const totalHeight = bbox.height + node.padding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst labelRect = async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n log.trace(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = (length) => {\n strokeDashArray.push(length, 0);\n };\n const skipBorder = (length) => {\n strokeDashArray.push(0, length);\n };\n if (borders.includes(\"t\")) {\n log.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n log.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n log.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n log.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\nconst rectWithTitle = (parent, node) => {\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const innerLine = shapeSvg.insert(\"line\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n let title = \"\";\n if (typeof text2 === \"object\") {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info(\"Label text abc79\", title, text2, typeof text2 === \"object\");\n const text = label.node().appendChild(createLabel$1(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label.node().appendChild(\n createLabel$1(textRows.join ? textRows.join(\"
\") : textRows, node.labelStyle, true, true)\n );\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n select(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst stadium = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst circle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, void 0, true);\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"Circle main\");\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n log.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n};\nconst doublecircle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, void 0, true);\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point2) {\n log.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return intersect.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n};\nconst subroutine = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst start = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n return intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst end = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n innerCircle.attr(\"class\", \"state-end\").attr(\"r\", 5).attr(\"width\", 10).attr(\"height\", 10);\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n return intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst class_box = (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"«\" + node.classData.annotations[0] + \"»\" : \"\";\n const interfaceLabel = labelContainer.node().appendChild(createLabel$1(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if (getConfig().flowchart.htmlLabels) {\n classTitleString += \"<\" + node.classData.type + \">\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = labelContainer.node().appendChild(createLabel$1(classTitleString, node.labelStyle, true, true));\n select(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach((str) => {\n const parsedInfo = parseMember(str);\n let parsedText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n parsedText = parsedText.replace(//g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel$1(\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n maxHeight += lineHeight;\n const classMethods = [];\n node.classData.methods.forEach((str) => {\n const parsedInfo = parseMember(str);\n let displayText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n displayText = displayText.replace(//g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel$1(\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classMethods.push(lbl);\n });\n maxHeight += lineHeight;\n if (hasInterface) {\n let diffX2 = (maxWidth - interfaceBBox.width) / 2;\n select(interfaceLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX2) + \", \" + -1 * maxHeight / 2 + \")\"\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select(classTitleLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX) + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n verticalPos += classTitleBBox.height + rowPadding;\n topLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classAttributes.forEach((lbl) => {\n select(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + \")\"\n );\n const memberBBox = lbl == null ? void 0 : lbl.getBBox();\n verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;\n });\n verticalPos += lineHeight;\n bottomLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classMethods.forEach((lbl) => {\n select(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n const memberBBox = lbl == null ? void 0 : lbl.getBBox();\n verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;\n });\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -maxWidth / 2 - halfPadding).attr(\"y\", -(maxHeight / 2) - halfPadding).attr(\"width\", maxWidth + node.padding).attr(\"height\", maxHeight + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst shapes = {\n rhombus: question,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle,\n doublecircle,\n stadium,\n hexagon,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note: note$1,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\nlet nodeElems = {};\nconst insertNode = async (elem, node, dir) => {\n let newEl;\n let el;\n if (node.link) {\n let target;\n if (getConfig().securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target);\n el = await shapes[node.shape](newEl, node, dir);\n } else {\n el = await shapes[node.shape](elem, node, dir);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n if (node.class) {\n el.attr(\"class\", \"node default \" + node.class);\n }\n nodeElems[node.id] = newEl;\n if (node.haveCallback) {\n nodeElems[node.id].attr(\"class\", nodeElems[node.id].attr(\"class\") + \" clickable\");\n }\n return newEl;\n};\nconst setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nconst clear$1 = () => {\n nodeElems = {};\n};\nconst positionNode = (node) => {\n const el = nodeElems[node.id];\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n};\nlet edgeLabels = {};\nlet terminalLabels = {};\nconst clear = () => {\n edgeLabels = {};\n terminalLabels = {};\n};\nconst insertEdgeLabel = (elem, edge) => {\n const useHtmlLabels = evaluate(getConfig().flowchart.htmlLabels);\n const labelElement = edge.labelType === \"markdown\" ? createText(elem, edge.label, {\n style: edge.labelStyle,\n useHtmlLabels,\n addSvgBackground: true\n }) : createLabel$1(edge.label, edge.labelStyle);\n log.info(\"abc82\", edge, edge.labelType);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startLabelElement = createLabel$1(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startLabelElement = createLabel$1(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endLabelElement = createLabel$1(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endLabelElement = createLabel$1(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n};\nfunction setTerminalWidth(fo, value) {\n if (getConfig().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\nconst positionEdgeLabel = (edge, paths) => {\n log.info(\"Moving label abc78 \", edge.id, edge.label, edgeLabels[edge.id]);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcLabelPosition(path);\n log.info(\n \"Moving label \" + edge.label + \" from (\",\n x,\n \",\",\n y,\n \") to (\",\n pos.x,\n \",\",\n pos.y,\n \") abc78\"\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n \"start_right\",\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_right\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n};\nconst outsideNode = (node, point2) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point2.x - x);\n const dy = Math.abs(point2.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n};\nconst intersection = (node, outsidePoint, insidePoint) => {\n log.warn(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = R * q / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q\n };\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n log.warn(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n return res;\n } else {\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = Q * r / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.warn(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n return { x: _x, y: _y };\n }\n};\nconst cutPathAtIntersect = (_points, boundryNode) => {\n log.warn(\"abc88 cutPathAtIntersect\", _points, boundryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n log.info(\"abc88 checking point\", point2, boundryNode);\n if (!outsideNode(boundryNode, point2) && !isInside) {\n const inter = intersection(boundryNode, lastPointOutside, point2);\n log.warn(\"abc88 inside\", point2, lastPointOutside, inter);\n log.warn(\"abc88 intersection\", inter);\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n });\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n } else {\n log.warn(\"abc88 no intersect\", inter, points);\n }\n isInside = true;\n } else {\n log.warn(\"abc88 outside\", point2, lastPointOutside);\n lastPointOutside = point2;\n if (!isInside) {\n points.push(point2);\n }\n }\n });\n log.warn(\"abc88 returning points\", points);\n return points;\n};\nconst insertEdge = function(elem, e, edge, clusterDb, diagramType, graph) {\n let points = edge.points;\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n log.info(\"abc88 InsertEdge: \", edge);\n if (head.intersect && tail.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n log.info(\n \"Last point\",\n points[points.length - 1],\n head,\n head.intersect(points[points.length - 1])\n );\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.info(\"to cluster abc88\", clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n pointsHasChanged = true;\n }\n if (edge.fromCluster) {\n log.info(\"from cluster abc88\", clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n pointsHasChanged = true;\n }\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n let curve;\n if (diagramType === \"graph\" || diagramType === \"flowchart\") {\n curve = edge.curve || curveBasis;\n } else {\n curve = curveBasis;\n }\n const lineFunction = line().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(curve);\n let strokeClasses;\n switch (edge.thickness) {\n case \"normal\":\n strokeClasses = \"edge-thickness-normal\";\n break;\n case \"thick\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n case \"invisible\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n default:\n strokeClasses = \"\";\n }\n switch (edge.pattern) {\n case \"solid\":\n strokeClasses += \" edge-pattern-solid\";\n break;\n case \"dotted\":\n strokeClasses += \" edge-pattern-dotted\";\n break;\n case \"dashed\":\n strokeClasses += \" edge-pattern-dashed\";\n break;\n }\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", edge.id).attr(\"class\", \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\")).attr(\"style\", edge.style);\n let url = \"\";\n if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n log.info(\"arrowTypeStart\", edge.arrowTypeStart);\n log.info(\"arrowTypeEnd\", edge.arrowTypeEnd);\n switch (edge.arrowTypeStart) {\n case \"arrow_cross\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-crossStart)\");\n break;\n case \"arrow_point\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-pointStart)\");\n break;\n case \"arrow_barb\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-barbStart)\");\n break;\n case \"arrow_circle\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-circleStart)\");\n break;\n case \"aggregation\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-aggregationStart)\");\n break;\n case \"extension\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-extensionStart)\");\n break;\n case \"composition\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-compositionStart)\");\n break;\n case \"dependency\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-dependencyStart)\");\n break;\n case \"lollipop\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-lollipopStart)\");\n break;\n }\n switch (edge.arrowTypeEnd) {\n case \"arrow_cross\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-crossEnd)\");\n break;\n case \"arrow_point\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-pointEnd)\");\n break;\n case \"arrow_barb\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-barbEnd)\");\n break;\n case \"arrow_circle\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-circleEnd)\");\n break;\n case \"aggregation\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-aggregationEnd)\");\n break;\n case \"extension\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-extensionEnd)\");\n break;\n case \"composition\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-compositionEnd)\");\n break;\n case \"dependency\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-dependencyEnd)\");\n break;\n case \"lollipop\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-lollipopEnd)\");\n break;\n }\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\nexport {\n insertMarkers$1 as a,\n clear$1 as b,\n createLabel$1 as c,\n clear as d,\n insertNode as e,\n insertEdgeLabel as f,\n insertEdge as g,\n positionEdgeLabel as h,\n intersectRect$1 as i,\n labelHelper as l,\n positionNode as p,\n setNodeElem as s,\n updateNodeBounds as u\n};\n"],"names":["insertMarkers","elem","markerArray","type","id","markerName","markers","extension","log","composition","aggregation","dependency","lollipop","point","circle$1","cross","barb","insertMarkers$1","applyStyle","dom","styleFn","addHtmlLabel","node","fo","select","div","label","labelClass","createLabel","_vertexText","style","isTitle","isNode","vertexText","evaluate","getConfig","decodeEntities","s","svgLabel","rows","row","tspan","createLabel$1","labelHelper","parent","_classes","classes","useHtmlLabels","shapeSvg","labelText","textNode","text","createText","sanitizeText","bbox","halfPadding","dv","images","noImgText","img","res","setupImage","bodyFontSize","enlargingFactor","updateNodeBounds","element","insertPolygonShape","w","h","points","d","intersectNode","point2","intersectEllipse","rx","ry","cx","cy","px","py","det","dx","dy","intersectCircle","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","offset","num","x","y","sameSign","intersectPolygon","polyPoints","x1","y1","intersections","minX","minY","entry","left","top","i","intersect2","q","pdx","pdy","distp","qdx","qdy","distq","intersectRect","sx","sy","intersectRect$1","intersect","note","rect2","note$1","question","questionElem","choice","hexagon","f","m","hex","rect_left_inv_arrow","lean_right","el","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","shape","pos","rect","totalWidth","totalHeight","propKeys","applyNodePropertyBorders","propKey","labelRect","borders","strokeDashArray","addBorder","length","skipBorder","rectWithTitle","innerLine","text2","title","textRows","titleBox","descr","stadium","circle","circle2","doublecircle","gap","circleGroup","outerCircle","innerCircle","subroutine","start","forkJoin","dir","width","height","end","class_box","rowPadding","lineHeight","topLine","bottomLine","maxWidth","maxHeight","labelContainer","verticalPos","hasInterface","interfaceLabelText","interfaceLabel","interfaceBBox","classTitleString","classTitleLabel","classTitleBBox","classAttributes","str","parsedInfo","parseMember","parsedText","lbl","classMethods","displayText","diffX2","diffX","memberBBox","shapes","nodeElems","insertNode","newEl","target","setNodeElem","clear$1","positionNode","padding","diff","edgeLabels","terminalLabels","clear","insertEdgeLabel","edge","labelElement","edgeLabel","startLabelElement","startEdgeLabelLeft","inner","slBox","setTerminalWidth","startEdgeLabelRight","endLabelElement","endEdgeLabelLeft","endEdgeLabelRight","value","positionEdgeLabel","paths","path","utils","outsideNode","intersection","outsidePoint","insidePoint","r","Q","R","_x","_y","cutPathAtIntersect","_points","boundryNode","lastPointOutside","isInside","inter","pointPresent","p","e","insertEdge","clusterDb","diagramType","graph","pointsHasChanged","tail","head","lineData","curve","curveBasis","lineFunction","line","strokeClasses","svgPath","url"],"mappings":"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","x_google_ignoreList":[0]}
\ No newline at end of file
diff --git a/docs/assets/erDiagram-0ccc0425-78c393e7.js b/docs/assets/erDiagram-0ccc0425-b174d459.js
similarity index 97%
rename from docs/assets/erDiagram-0ccc0425-78c393e7.js
rename to docs/assets/erDiagram-0ccc0425-b174d459.js
index c560b312..ddc852f9 100644
--- a/docs/assets/erDiagram-0ccc0425-78c393e7.js
+++ b/docs/assets/erDiagram-0ccc0425-b174d459.js
@@ -1,4 +1,4 @@
-import{c as W,s as kt,g as xt,b as Rt,a as Ot,p as bt,q as Nt,m as Tt,l as tt,r as At,h as nt,u as Mt,i as vt,x as Dt,y as It}from"./intro.stories-4d939548.js";import{G as wt,l as St}from"./layout-1a625a74.js";import"./dayjs.min-1b995edc.js";import{u as Lt}from"./stringify-ec884b6d.js";import{l as Bt}from"./line-0cec4b1f.js";import"./chunk-S4VUQJ4A-6012e64b.js";import"./iframe-8b410132.js";import"../sb-preview/runtime.js";import"./index-20ac22d7.js";import"./_commonjsHelpers-de833af9.js";import"./index-d37d4223.js";import"./index-e04ae519.js";import"./index-356e4a49.js";import"./jsx-runtime-bcef64ff.js";import"./_getTag-edecb89a.js";import"./isSymbol-50749e90.js";import"./isObject-32699ff3.js";import"./toString-25ea340b.js";import"./Table-5b2980cc.js";import"./parseCss-afe2fffb.js";import"./index-1d070ae9.js";import"./_color-087aa1f8.js";import"./index-f12770ea.js";import"./_baseSet-db0c20a6.js";import"./now-bd49f550.js";import"./array-9f3ba611.js";import"./path-53f90ab3.js";const Ct=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function Pt(t){return typeof t=="string"&&Ct.test(t)}function Yt(t){if(!Pt(t))throw TypeError("Invalid UUID");let r;const e=new Uint8Array(16);return e[0]=(r=parseInt(t.slice(0,8),16))>>>24,e[1]=r>>>16&255,e[2]=r>>>8&255,e[3]=r&255,e[4]=(r=parseInt(t.slice(9,13),16))>>>8,e[5]=r&255,e[6]=(r=parseInt(t.slice(14,18),16))>>>8,e[7]=r&255,e[8]=(r=parseInt(t.slice(19,23),16))>>>8,e[9]=r&255,e[10]=(r=parseInt(t.slice(24,36),16))/1099511627776&255,e[11]=r/4294967296&255,e[12]=r>>>24&255,e[13]=r>>>16&255,e[14]=r>>>8&255,e[15]=r&255,e}function Zt(t){t=unescape(encodeURIComponent(t));const r=[];for(let e=0;e>>32-r}function zt(t){const r=[1518500249,1859775393,2400959708,3395469782],e=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof t=="string"){const u=unescape(encodeURIComponent(t));t=[];for(let o=0;o>>0;O=g,g=m,m=st(_,30)>>>0,_=c,c=P}e[0]=e[0]+c>>>0,e[1]=e[1]+_>>>0,e[2]=e[2]+m>>>0,e[3]=e[3]+g>>>0,e[4]=e[4]+O>>>0}return[e[0]>>24&255,e[0]>>16&255,e[0]>>8&255,e[0]&255,e[1]>>24&255,e[1]>>16&255,e[1]>>8&255,e[1]&255,e[2]>>24&255,e[2]>>16&255,e[2]>>8&255,e[2]&255,e[3]>>24&255,e[3]>>16&255,e[3]>>8&255,e[3]&255,e[4]>>24&255,e[4]>>16&255,e[4]>>8&255,e[4]&255]}const Gt=Vt("v5",80,zt),Ht=Gt;var ot=function(){var t=function(A,a,l,d){for(l=l||{},d=A.length;d--;l[A[d]]=a);return l},r=[1,2],e=[1,5],n=[6,9,11,23,25,27,29,30,31,52],s=[1,17],y=[1,18],u=[1,19],o=[1,20],c=[1,21],_=[1,22],m=[1,25],g=[1,30],O=[1,31],p=[1,32],T=[1,33],P=[1,34],V=[6,9,11,15,20,23,25,27,29,30,31,44,45,46,47,48,52],K=[1,46],I=[30,31,49,50],N=[4,6,9,11,23,25,27,29,30,31,52],M=[44,45,46,47,48],k=[22,37],x=[1,66],C=[1,65],Y=[22,37,39,41],D={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,title:23,title_value:24,acc_title:25,acc_title_value:26,acc_descr:27,acc_descr_value:28,acc_descr_multiline_value:29,ALPHANUM:30,ENTITY_NAME:31,attribute:32,attributeType:33,attributeName:34,attributeKeyTypeList:35,attributeComment:36,ATTRIBUTE_WORD:37,attributeKeyType:38,COMMA:39,ATTRIBUTE_KEY:40,COMMENT:41,cardinality:42,relType:43,ZERO_OR_ONE:44,ZERO_OR_MORE:45,ONE_OR_MORE:46,ONLY_ONE:47,MD_PARENT:48,NON_IDENTIFYING:49,IDENTIFYING:50,WORD:51,open_directive:52,type_directive:53,arg_directive:54,close_directive:55,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"BLOCK_START",22:"BLOCK_STOP",23:"title",24:"title_value",25:"acc_title",26:"acc_title_value",27:"acc_descr",28:"acc_descr_value",29:"acc_descr_multiline_value",30:"ALPHANUM",31:"ENTITY_NAME",37:"ATTRIBUTE_WORD",39:"COMMA",40:"ATTRIBUTE_KEY",41:"COMMENT",44:"ZERO_OR_ONE",45:"ZERO_OR_MORE",46:"ONE_OR_MORE",47:"ONLY_ONE",48:"MD_PARENT",49:"NON_IDENTIFYING",50:"IDENTIFYING",51:"WORD",52:"open_directive",53:"type_directive",54:"arg_directive",55:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[10,2],[10,2],[10,2],[10,1],[17,1],[17,1],[21,1],[21,2],[32,2],[32,3],[32,3],[32,4],[33,1],[34,1],[35,1],[35,3],[38,1],[36,1],[18,3],[42,1],[42,1],[42,1],[42,1],[42,1],[43,1],[43,1],[19,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(a,l,d,f,E,i,X){var h=i.length-1;switch(E){case 1:break;case 3:this.$=[];break;case 4:i[h-1].push(i[h]),this.$=i[h-1];break;case 5:case 6:this.$=i[h];break;case 7:case 8:this.$=[];break;case 12:f.addEntity(i[h-4]),f.addEntity(i[h-2]),f.addRelationship(i[h-4],i[h],i[h-2],i[h-3]);break;case 13:f.addEntity(i[h-3]),f.addAttributes(i[h-3],i[h-1]);break;case 14:f.addEntity(i[h-2]);break;case 15:f.addEntity(i[h]);break;case 16:case 17:this.$=i[h].trim(),f.setAccTitle(this.$);break;case 18:case 19:this.$=i[h].trim(),f.setAccDescription(this.$);break;case 20:case 44:this.$=i[h];break;case 21:case 42:case 43:this.$=i[h].replace(/"/g,"");break;case 22:case 30:this.$=[i[h]];break;case 23:i[h].push(i[h-1]),this.$=i[h];break;case 24:this.$={attributeType:i[h-1],attributeName:i[h]};break;case 25:this.$={attributeType:i[h-2],attributeName:i[h-1],attributeKeyTypeList:i[h]};break;case 26:this.$={attributeType:i[h-2],attributeName:i[h-1],attributeComment:i[h]};break;case 27:this.$={attributeType:i[h-3],attributeName:i[h-2],attributeKeyTypeList:i[h-1],attributeComment:i[h]};break;case 28:case 29:case 32:this.$=i[h];break;case 31:i[h-2].push(i[h]),this.$=i[h-2];break;case 33:this.$=i[h].replace(/"/g,"");break;case 34:this.$={cardA:i[h],relType:i[h-1],cardB:i[h-2]};break;case 35:this.$=f.Cardinality.ZERO_OR_ONE;break;case 36:this.$=f.Cardinality.ZERO_OR_MORE;break;case 37:this.$=f.Cardinality.ONE_OR_MORE;break;case 38:this.$=f.Cardinality.ONLY_ONE;break;case 39:this.$=f.Cardinality.MD_PARENT;break;case 40:this.$=f.Identification.NON_IDENTIFYING;break;case 41:this.$=f.Identification.IDENTIFYING;break;case 45:f.parseDirective("%%{","open_directive");break;case 46:f.parseDirective(i[h],"type_directive");break;case 47:i[h]=i[h].trim().replace(/'/g,'"'),f.parseDirective(i[h],"arg_directive");break;case 48:f.parseDirective("}%%","close_directive","er");break}},table:[{3:1,4:r,7:3,12:4,52:e},{1:[3]},t(n,[2,3],{5:6}),{3:7,4:r,7:3,12:4,52:e},{13:8,53:[1,9]},{53:[2,45]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:s,25:y,27:u,29:o,30:c,31:_,52:e},{1:[2,2]},{14:23,15:[1,24],55:m},t([15,55],[2,46]),t(n,[2,8],{1:[2,1]}),t(n,[2,4]),{7:15,10:26,12:4,17:16,23:s,25:y,27:u,29:o,30:c,31:_,52:e},t(n,[2,6]),t(n,[2,7]),t(n,[2,11]),t(n,[2,15],{18:27,42:29,20:[1,28],44:g,45:O,46:p,47:T,48:P}),{24:[1,35]},{26:[1,36]},{28:[1,37]},t(n,[2,19]),t(V,[2,20]),t(V,[2,21]),{11:[1,38]},{16:39,54:[1,40]},{11:[2,48]},t(n,[2,5]),{17:41,30:c,31:_},{21:42,22:[1,43],32:44,33:45,37:K},{43:47,49:[1,48],50:[1,49]},t(I,[2,35]),t(I,[2,36]),t(I,[2,37]),t(I,[2,38]),t(I,[2,39]),t(n,[2,16]),t(n,[2,17]),t(n,[2,18]),t(N,[2,9]),{14:50,55:m},{55:[2,47]},{15:[1,51]},{22:[1,52]},t(n,[2,14]),{21:53,22:[2,22],32:44,33:45,37:K},{34:54,37:[1,55]},{37:[2,28]},{42:56,44:g,45:O,46:p,47:T,48:P},t(M,[2,40]),t(M,[2,41]),{11:[1,57]},{19:58,30:[1,61],31:[1,60],51:[1,59]},t(n,[2,13]),{22:[2,23]},t(k,[2,24],{35:62,36:63,38:64,40:x,41:C}),t([22,37,40,41],[2,29]),t([30,31],[2,34]),t(N,[2,10]),t(n,[2,12]),t(n,[2,42]),t(n,[2,43]),t(n,[2,44]),t(k,[2,25],{36:67,39:[1,68],41:C}),t(k,[2,26]),t(Y,[2,30]),t(k,[2,33]),t(Y,[2,32]),t(k,[2,27]),{38:69,40:x},t(Y,[2,31])],defaultActions:{5:[2,45],7:[2,2],25:[2,48],40:[2,47],46:[2,28],53:[2,23]},parseError:function(a,l){if(l.recoverable)this.trace(a);else{var d=new Error(a);throw d.hash=l,d}},parse:function(a){var l=this,d=[0],f=[],E=[null],i=[],X=this.table,h="",q=0,lt=0,_t=2,ht=1,mt=i.slice.call(arguments,1),b=Object.create(this.lexer),z={yy:{}};for(var et in this.yy)Object.prototype.hasOwnProperty.call(this.yy,et)&&(z.yy[et]=this.yy[et]);b.setInput(a,z.yy),z.yy.lexer=b,z.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var rt=b.yylloc;i.push(rt);var Et=b.options&&b.options.ranges;typeof z.yy.parseError=="function"?this.parseError=z.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function gt(){var F;return F=f.pop()||b.lex()||ht,typeof F!="number"&&(F instanceof Array&&(f=F,F=f.pop()),F=l.symbols_[F]||F),F}for(var v,G,S,it,H={},j,Z,dt,J;;){if(G=d[d.length-1],this.defaultActions[G]?S=this.defaultActions[G]:((v===null||typeof v>"u")&&(v=gt()),S=X[G]&&X[G][v]),typeof S>"u"||!S.length||!S[0]){var at="";J=[];for(j in X[G])this.terminals_[j]&&j>_t&&J.push("'"+this.terminals_[j]+"'");b.showPosition?at="Parse error on line "+(q+1)+`:
+import{c as W,s as kt,g as xt,b as Rt,a as Ot,p as bt,q as Nt,m as Tt,l as tt,r as At,h as nt,u as Mt,i as vt,x as Dt,y as It}from"./intro.stories-6bb6b497.js";import{G as wt,l as St}from"./layout-6e761a00.js";import"./dayjs.min-1b995edc.js";import{u as Lt}from"./stringify-ec884b6d.js";import{l as Bt}from"./line-16ea319c.js";import"./chunk-S4VUQJ4A-89907381.js";import"./iframe-0b438e8e.js";import"../sb-preview/runtime.js";import"./index-54730943.js";import"./_commonjsHelpers-de833af9.js";import"./index-d37d4223.js";import"./index-e04ae519.js";import"./index-356e4a49.js";import"./jsx-runtime-f67a1dbf.js";import"./_getTag-edecb89a.js";import"./isSymbol-50749e90.js";import"./isObject-32699ff3.js";import"./toString-25ea340b.js";import"./Table-d8495df8.js";import"./parseCss-6d58d2d1.js";import"./index-82fcde9f.js";import"./_color-087aa1f8.js";import"./index-97648d8f.js";import"./_baseSet-db0c20a6.js";import"./now-bd49f550.js";import"./array-9f3ba611.js";import"./path-53f90ab3.js";const Ct=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function Pt(t){return typeof t=="string"&&Ct.test(t)}function Yt(t){if(!Pt(t))throw TypeError("Invalid UUID");let r;const e=new Uint8Array(16);return e[0]=(r=parseInt(t.slice(0,8),16))>>>24,e[1]=r>>>16&255,e[2]=r>>>8&255,e[3]=r&255,e[4]=(r=parseInt(t.slice(9,13),16))>>>8,e[5]=r&255,e[6]=(r=parseInt(t.slice(14,18),16))>>>8,e[7]=r&255,e[8]=(r=parseInt(t.slice(19,23),16))>>>8,e[9]=r&255,e[10]=(r=parseInt(t.slice(24,36),16))/1099511627776&255,e[11]=r/4294967296&255,e[12]=r>>>24&255,e[13]=r>>>16&255,e[14]=r>>>8&255,e[15]=r&255,e}function Zt(t){t=unescape(encodeURIComponent(t));const r=[];for(let e=0;e>>32-r}function zt(t){const r=[1518500249,1859775393,2400959708,3395469782],e=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof t=="string"){const u=unescape(encodeURIComponent(t));t=[];for(let o=0;o>>0;O=g,g=m,m=st(_,30)>>>0,_=c,c=P}e[0]=e[0]+c>>>0,e[1]=e[1]+_>>>0,e[2]=e[2]+m>>>0,e[3]=e[3]+g>>>0,e[4]=e[4]+O>>>0}return[e[0]>>24&255,e[0]>>16&255,e[0]>>8&255,e[0]&255,e[1]>>24&255,e[1]>>16&255,e[1]>>8&255,e[1]&255,e[2]>>24&255,e[2]>>16&255,e[2]>>8&255,e[2]&255,e[3]>>24&255,e[3]>>16&255,e[3]>>8&255,e[3]&255,e[4]>>24&255,e[4]>>16&255,e[4]>>8&255,e[4]&255]}const Gt=Vt("v5",80,zt),Ht=Gt;var ot=function(){var t=function(A,a,l,d){for(l=l||{},d=A.length;d--;l[A[d]]=a);return l},r=[1,2],e=[1,5],n=[6,9,11,23,25,27,29,30,31,52],s=[1,17],y=[1,18],u=[1,19],o=[1,20],c=[1,21],_=[1,22],m=[1,25],g=[1,30],O=[1,31],p=[1,32],T=[1,33],P=[1,34],V=[6,9,11,15,20,23,25,27,29,30,31,44,45,46,47,48,52],K=[1,46],I=[30,31,49,50],N=[4,6,9,11,23,25,27,29,30,31,52],M=[44,45,46,47,48],k=[22,37],x=[1,66],C=[1,65],Y=[22,37,39,41],D={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,title:23,title_value:24,acc_title:25,acc_title_value:26,acc_descr:27,acc_descr_value:28,acc_descr_multiline_value:29,ALPHANUM:30,ENTITY_NAME:31,attribute:32,attributeType:33,attributeName:34,attributeKeyTypeList:35,attributeComment:36,ATTRIBUTE_WORD:37,attributeKeyType:38,COMMA:39,ATTRIBUTE_KEY:40,COMMENT:41,cardinality:42,relType:43,ZERO_OR_ONE:44,ZERO_OR_MORE:45,ONE_OR_MORE:46,ONLY_ONE:47,MD_PARENT:48,NON_IDENTIFYING:49,IDENTIFYING:50,WORD:51,open_directive:52,type_directive:53,arg_directive:54,close_directive:55,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"BLOCK_START",22:"BLOCK_STOP",23:"title",24:"title_value",25:"acc_title",26:"acc_title_value",27:"acc_descr",28:"acc_descr_value",29:"acc_descr_multiline_value",30:"ALPHANUM",31:"ENTITY_NAME",37:"ATTRIBUTE_WORD",39:"COMMA",40:"ATTRIBUTE_KEY",41:"COMMENT",44:"ZERO_OR_ONE",45:"ZERO_OR_MORE",46:"ONE_OR_MORE",47:"ONLY_ONE",48:"MD_PARENT",49:"NON_IDENTIFYING",50:"IDENTIFYING",51:"WORD",52:"open_directive",53:"type_directive",54:"arg_directive",55:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[10,2],[10,2],[10,2],[10,1],[17,1],[17,1],[21,1],[21,2],[32,2],[32,3],[32,3],[32,4],[33,1],[34,1],[35,1],[35,3],[38,1],[36,1],[18,3],[42,1],[42,1],[42,1],[42,1],[42,1],[43,1],[43,1],[19,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(a,l,d,f,E,i,X){var h=i.length-1;switch(E){case 1:break;case 3:this.$=[];break;case 4:i[h-1].push(i[h]),this.$=i[h-1];break;case 5:case 6:this.$=i[h];break;case 7:case 8:this.$=[];break;case 12:f.addEntity(i[h-4]),f.addEntity(i[h-2]),f.addRelationship(i[h-4],i[h],i[h-2],i[h-3]);break;case 13:f.addEntity(i[h-3]),f.addAttributes(i[h-3],i[h-1]);break;case 14:f.addEntity(i[h-2]);break;case 15:f.addEntity(i[h]);break;case 16:case 17:this.$=i[h].trim(),f.setAccTitle(this.$);break;case 18:case 19:this.$=i[h].trim(),f.setAccDescription(this.$);break;case 20:case 44:this.$=i[h];break;case 21:case 42:case 43:this.$=i[h].replace(/"/g,"");break;case 22:case 30:this.$=[i[h]];break;case 23:i[h].push(i[h-1]),this.$=i[h];break;case 24:this.$={attributeType:i[h-1],attributeName:i[h]};break;case 25:this.$={attributeType:i[h-2],attributeName:i[h-1],attributeKeyTypeList:i[h]};break;case 26:this.$={attributeType:i[h-2],attributeName:i[h-1],attributeComment:i[h]};break;case 27:this.$={attributeType:i[h-3],attributeName:i[h-2],attributeKeyTypeList:i[h-1],attributeComment:i[h]};break;case 28:case 29:case 32:this.$=i[h];break;case 31:i[h-2].push(i[h]),this.$=i[h-2];break;case 33:this.$=i[h].replace(/"/g,"");break;case 34:this.$={cardA:i[h],relType:i[h-1],cardB:i[h-2]};break;case 35:this.$=f.Cardinality.ZERO_OR_ONE;break;case 36:this.$=f.Cardinality.ZERO_OR_MORE;break;case 37:this.$=f.Cardinality.ONE_OR_MORE;break;case 38:this.$=f.Cardinality.ONLY_ONE;break;case 39:this.$=f.Cardinality.MD_PARENT;break;case 40:this.$=f.Identification.NON_IDENTIFYING;break;case 41:this.$=f.Identification.IDENTIFYING;break;case 45:f.parseDirective("%%{","open_directive");break;case 46:f.parseDirective(i[h],"type_directive");break;case 47:i[h]=i[h].trim().replace(/'/g,'"'),f.parseDirective(i[h],"arg_directive");break;case 48:f.parseDirective("}%%","close_directive","er");break}},table:[{3:1,4:r,7:3,12:4,52:e},{1:[3]},t(n,[2,3],{5:6}),{3:7,4:r,7:3,12:4,52:e},{13:8,53:[1,9]},{53:[2,45]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:s,25:y,27:u,29:o,30:c,31:_,52:e},{1:[2,2]},{14:23,15:[1,24],55:m},t([15,55],[2,46]),t(n,[2,8],{1:[2,1]}),t(n,[2,4]),{7:15,10:26,12:4,17:16,23:s,25:y,27:u,29:o,30:c,31:_,52:e},t(n,[2,6]),t(n,[2,7]),t(n,[2,11]),t(n,[2,15],{18:27,42:29,20:[1,28],44:g,45:O,46:p,47:T,48:P}),{24:[1,35]},{26:[1,36]},{28:[1,37]},t(n,[2,19]),t(V,[2,20]),t(V,[2,21]),{11:[1,38]},{16:39,54:[1,40]},{11:[2,48]},t(n,[2,5]),{17:41,30:c,31:_},{21:42,22:[1,43],32:44,33:45,37:K},{43:47,49:[1,48],50:[1,49]},t(I,[2,35]),t(I,[2,36]),t(I,[2,37]),t(I,[2,38]),t(I,[2,39]),t(n,[2,16]),t(n,[2,17]),t(n,[2,18]),t(N,[2,9]),{14:50,55:m},{55:[2,47]},{15:[1,51]},{22:[1,52]},t(n,[2,14]),{21:53,22:[2,22],32:44,33:45,37:K},{34:54,37:[1,55]},{37:[2,28]},{42:56,44:g,45:O,46:p,47:T,48:P},t(M,[2,40]),t(M,[2,41]),{11:[1,57]},{19:58,30:[1,61],31:[1,60],51:[1,59]},t(n,[2,13]),{22:[2,23]},t(k,[2,24],{35:62,36:63,38:64,40:x,41:C}),t([22,37,40,41],[2,29]),t([30,31],[2,34]),t(N,[2,10]),t(n,[2,12]),t(n,[2,42]),t(n,[2,43]),t(n,[2,44]),t(k,[2,25],{36:67,39:[1,68],41:C}),t(k,[2,26]),t(Y,[2,30]),t(k,[2,33]),t(Y,[2,32]),t(k,[2,27]),{38:69,40:x},t(Y,[2,31])],defaultActions:{5:[2,45],7:[2,2],25:[2,48],40:[2,47],46:[2,28],53:[2,23]},parseError:function(a,l){if(l.recoverable)this.trace(a);else{var d=new Error(a);throw d.hash=l,d}},parse:function(a){var l=this,d=[0],f=[],E=[null],i=[],X=this.table,h="",q=0,lt=0,_t=2,ht=1,mt=i.slice.call(arguments,1),b=Object.create(this.lexer),z={yy:{}};for(var et in this.yy)Object.prototype.hasOwnProperty.call(this.yy,et)&&(z.yy[et]=this.yy[et]);b.setInput(a,z.yy),z.yy.lexer=b,z.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var rt=b.yylloc;i.push(rt);var Et=b.options&&b.options.ranges;typeof z.yy.parseError=="function"?this.parseError=z.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function gt(){var F;return F=f.pop()||b.lex()||ht,typeof F!="number"&&(F instanceof Array&&(f=F,F=f.pop()),F=l.symbols_[F]||F),F}for(var v,G,S,it,H={},j,Z,dt,J;;){if(G=d[d.length-1],this.defaultActions[G]?S=this.defaultActions[G]:((v===null||typeof v>"u")&&(v=gt()),S=X[G]&&X[G][v]),typeof S>"u"||!S.length||!S[0]){var at="";J=[];for(j in X[G])this.terminals_[j]&&j>_t&&J.push("'"+this.terminals_[j]+"'");b.showPosition?at="Parse error on line "+(q+1)+`:
`+b.showPosition()+`
Expecting `+J.join(", ")+", got '"+(this.terminals_[v]||v)+"'":at="Parse error on line "+(q+1)+": Unexpected "+(v==ht?"end of input":"'"+(this.terminals_[v]||v)+"'"),this.parseError(at,{text:b.match,token:this.terminals_[v]||v,line:b.yylineno,loc:rt,expected:J})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+G+", token: "+v);switch(S[0]){case 1:d.push(v),E.push(b.yytext),i.push(b.yylloc),d.push(S[1]),v=null,lt=b.yyleng,h=b.yytext,q=b.yylineno,rt=b.yylloc;break;case 2:if(Z=this.productions_[S[1]][1],H.$=E[E.length-Z],H._$={first_line:i[i.length-(Z||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(Z||1)].first_column,last_column:i[i.length-1].last_column},Et&&(H._$.range=[i[i.length-(Z||1)].range[0],i[i.length-1].range[1]]),it=this.performAction.apply(H,[h,lt,q,z.yy,S[1],E,i].concat(mt)),typeof it<"u")return it;Z&&(d=d.slice(0,-1*Z*2),E=E.slice(0,-1*Z),i=i.slice(0,-1*Z)),d.push(this.productions_[S[1]][0]),E.push(H.$),i.push(H._$),dt=X[d[d.length-2]][d[d.length-1]],d.push(dt);break;case 3:return!0}}return!0}},U=function(){var A={EOF:1,parseError:function(l,d){if(this.yy.parser)this.yy.parser.parseError(l,d);else throw new Error(l)},setInput:function(a,l){return this.yy=l||this.yy||{},this._input=a,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var l=a.match(/(?:\r\n?|\n).*/g);return l?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var l=a.length,d=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-l),this.offset-=l;var f=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),d.length-1&&(this.yylineno-=d.length-1);var E=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:d?(d.length===f.length?this.yylloc.first_column:0)+f[f.length-d.length].length-d[0].length:this.yylloc.first_column-l},this.options.ranges&&(this.yylloc.range=[E[0],E[0]+this.yyleng-l]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),l=new Array(a.length+1).join("-");return a+this.upcomingInput()+`
@@ -49,4 +49,4 @@ Expecting `+J.join(", ")+", got '"+(this.terminals_[v]||v)+"'":at="Parse error o
}
`,_e=ye,ze={parser:Kt,db:re,renderer:pe,styles:_e};export{ze as diagram};
-//# sourceMappingURL=erDiagram-0ccc0425-78c393e7.js.map
+//# sourceMappingURL=erDiagram-0ccc0425-b174d459.js.map
diff --git a/docs/assets/erDiagram-0ccc0425-78c393e7.js.map b/docs/assets/erDiagram-0ccc0425-b174d459.js.map
similarity index 99%
rename from docs/assets/erDiagram-0ccc0425-78c393e7.js.map
rename to docs/assets/erDiagram-0ccc0425-b174d459.js.map
index 0cd0b2cd..43677575 100644
--- a/docs/assets/erDiagram-0ccc0425-78c393e7.js.map
+++ b/docs/assets/erDiagram-0ccc0425-b174d459.js.map
@@ -1 +1 @@
-{"version":3,"file":"erDiagram-0ccc0425-78c393e7.js","sources":["../../node_modules/uuid/dist/esm-browser/regex.js","../../node_modules/uuid/dist/esm-browser/validate.js","../../node_modules/uuid/dist/esm-browser/parse.js","../../node_modules/uuid/dist/esm-browser/v35.js","../../node_modules/uuid/dist/esm-browser/sha1.js","../../node_modules/uuid/dist/esm-browser/v5.js","../../node_modules/mermaid/dist/erDiagram-0ccc0425.js"],"sourcesContent":["export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","import { unsafeStringify } from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nconst v5 = v35('v5', 0x50, sha1);\nexport default v5;","import { c as getConfig, s as setAccTitle, g as getAccTitle, b as setAccDescription, a as getAccDescription, r as setDiagramTitle, t as getDiagramTitle, m as mermaidAPI, l as log, v as clear$1, u as utils, i as configureSvgSize, x as parseGenericTypes } from \"./mermaid-a98f434b.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { select, line, curveBasis } from \"d3\";\nimport { layout } from \"dagre-d3-es/src/dagre/index.js\";\nimport { v5 } from \"uuid\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 2], $V1 = [1, 5], $V2 = [6, 9, 11, 23, 25, 27, 29, 30, 31, 52], $V3 = [1, 17], $V4 = [1, 18], $V5 = [1, 19], $V6 = [1, 20], $V7 = [1, 21], $V8 = [1, 22], $V9 = [1, 25], $Va = [1, 30], $Vb = [1, 31], $Vc = [1, 32], $Vd = [1, 33], $Ve = [1, 34], $Vf = [6, 9, 11, 15, 20, 23, 25, 27, 29, 30, 31, 44, 45, 46, 47, 48, 52], $Vg = [1, 46], $Vh = [30, 31, 49, 50], $Vi = [4, 6, 9, 11, 23, 25, 27, 29, 30, 31, 52], $Vj = [44, 45, 46, 47, 48], $Vk = [22, 37], $Vl = [1, 66], $Vm = [1, 65], $Vn = [22, 37, 39, 41];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"ER_DIAGRAM\": 4, \"document\": 5, \"EOF\": 6, \"directive\": 7, \"line\": 8, \"SPACE\": 9, \"statement\": 10, \"NEWLINE\": 11, \"openDirective\": 12, \"typeDirective\": 13, \"closeDirective\": 14, \":\": 15, \"argDirective\": 16, \"entityName\": 17, \"relSpec\": 18, \"role\": 19, \"BLOCK_START\": 20, \"attributes\": 21, \"BLOCK_STOP\": 22, \"title\": 23, \"title_value\": 24, \"acc_title\": 25, \"acc_title_value\": 26, \"acc_descr\": 27, \"acc_descr_value\": 28, \"acc_descr_multiline_value\": 29, \"ALPHANUM\": 30, \"ENTITY_NAME\": 31, \"attribute\": 32, \"attributeType\": 33, \"attributeName\": 34, \"attributeKeyTypeList\": 35, \"attributeComment\": 36, \"ATTRIBUTE_WORD\": 37, \"attributeKeyType\": 38, \"COMMA\": 39, \"ATTRIBUTE_KEY\": 40, \"COMMENT\": 41, \"cardinality\": 42, \"relType\": 43, \"ZERO_OR_ONE\": 44, \"ZERO_OR_MORE\": 45, \"ONE_OR_MORE\": 46, \"ONLY_ONE\": 47, \"MD_PARENT\": 48, \"NON_IDENTIFYING\": 49, \"IDENTIFYING\": 50, \"WORD\": 51, \"open_directive\": 52, \"type_directive\": 53, \"arg_directive\": 54, \"close_directive\": 55, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"ER_DIAGRAM\", 6: \"EOF\", 9: \"SPACE\", 11: \"NEWLINE\", 15: \":\", 20: \"BLOCK_START\", 22: \"BLOCK_STOP\", 23: \"title\", 24: \"title_value\", 25: \"acc_title\", 26: \"acc_title_value\", 27: \"acc_descr\", 28: \"acc_descr_value\", 29: \"acc_descr_multiline_value\", 30: \"ALPHANUM\", 31: \"ENTITY_NAME\", 37: \"ATTRIBUTE_WORD\", 39: \"COMMA\", 40: \"ATTRIBUTE_KEY\", 41: \"COMMENT\", 44: \"ZERO_OR_ONE\", 45: \"ZERO_OR_MORE\", 46: \"ONE_OR_MORE\", 47: \"ONLY_ONE\", 48: \"MD_PARENT\", 49: \"NON_IDENTIFYING\", 50: \"IDENTIFYING\", 51: \"WORD\", 52: \"open_directive\", 53: \"type_directive\", 54: \"arg_directive\", 55: \"close_directive\" },\n productions_: [0, [3, 3], [3, 2], [5, 0], [5, 2], [8, 2], [8, 1], [8, 1], [8, 1], [7, 4], [7, 6], [10, 1], [10, 5], [10, 4], [10, 3], [10, 1], [10, 2], [10, 2], [10, 2], [10, 1], [17, 1], [17, 1], [21, 1], [21, 2], [32, 2], [32, 3], [32, 3], [32, 4], [33, 1], [34, 1], [35, 1], [35, 3], [38, 1], [36, 1], [18, 3], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [43, 1], [43, 1], [19, 1], [19, 1], [19, 1], [12, 1], [13, 1], [16, 1], [14, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n break;\n case 3:\n this.$ = [];\n break;\n case 4:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 5:\n case 6:\n this.$ = $$[$0];\n break;\n case 7:\n case 8:\n this.$ = [];\n break;\n case 12:\n yy.addEntity($$[$0 - 4]);\n yy.addEntity($$[$0 - 2]);\n yy.addRelationship($$[$0 - 4], $$[$0], $$[$0 - 2], $$[$0 - 3]);\n break;\n case 13:\n yy.addEntity($$[$0 - 3]);\n yy.addAttributes($$[$0 - 3], $$[$0 - 1]);\n break;\n case 14:\n yy.addEntity($$[$0 - 2]);\n break;\n case 15:\n yy.addEntity($$[$0]);\n break;\n case 16:\n case 17:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 18:\n case 19:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 20:\n case 44:\n this.$ = $$[$0];\n break;\n case 21:\n case 42:\n case 43:\n this.$ = $$[$0].replace(/\"/g, \"\");\n break;\n case 22:\n case 30:\n this.$ = [$$[$0]];\n break;\n case 23:\n $$[$0].push($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 24:\n this.$ = { attributeType: $$[$0 - 1], attributeName: $$[$0] };\n break;\n case 25:\n this.$ = { attributeType: $$[$0 - 2], attributeName: $$[$0 - 1], attributeKeyTypeList: $$[$0] };\n break;\n case 26:\n this.$ = { attributeType: $$[$0 - 2], attributeName: $$[$0 - 1], attributeComment: $$[$0] };\n break;\n case 27:\n this.$ = { attributeType: $$[$0 - 3], attributeName: $$[$0 - 2], attributeKeyTypeList: $$[$0 - 1], attributeComment: $$[$0] };\n break;\n case 28:\n case 29:\n case 32:\n this.$ = $$[$0];\n break;\n case 31:\n $$[$0 - 2].push($$[$0]);\n this.$ = $$[$0 - 2];\n break;\n case 33:\n this.$ = $$[$0].replace(/\"/g, \"\");\n break;\n case 34:\n this.$ = { cardA: $$[$0], relType: $$[$0 - 1], cardB: $$[$0 - 2] };\n break;\n case 35:\n this.$ = yy.Cardinality.ZERO_OR_ONE;\n break;\n case 36:\n this.$ = yy.Cardinality.ZERO_OR_MORE;\n break;\n case 37:\n this.$ = yy.Cardinality.ONE_OR_MORE;\n break;\n case 38:\n this.$ = yy.Cardinality.ONLY_ONE;\n break;\n case 39:\n this.$ = yy.Cardinality.MD_PARENT;\n break;\n case 40:\n this.$ = yy.Identification.NON_IDENTIFYING;\n break;\n case 41:\n this.$ = yy.Identification.IDENTIFYING;\n break;\n case 45:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 46:\n yy.parseDirective($$[$0], \"type_directive\");\n break;\n case 47:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 48:\n yy.parseDirective(\"}%%\", \"close_directive\", \"er\");\n break;\n }\n },\n table: [{ 3: 1, 4: $V0, 7: 3, 12: 4, 52: $V1 }, { 1: [3] }, o($V2, [2, 3], { 5: 6 }), { 3: 7, 4: $V0, 7: 3, 12: 4, 52: $V1 }, { 13: 8, 53: [1, 9] }, { 53: [2, 45] }, { 6: [1, 10], 7: 15, 8: 11, 9: [1, 12], 10: 13, 11: [1, 14], 12: 4, 17: 16, 23: $V3, 25: $V4, 27: $V5, 29: $V6, 30: $V7, 31: $V8, 52: $V1 }, { 1: [2, 2] }, { 14: 23, 15: [1, 24], 55: $V9 }, o([15, 55], [2, 46]), o($V2, [2, 8], { 1: [2, 1] }), o($V2, [2, 4]), { 7: 15, 10: 26, 12: 4, 17: 16, 23: $V3, 25: $V4, 27: $V5, 29: $V6, 30: $V7, 31: $V8, 52: $V1 }, o($V2, [2, 6]), o($V2, [2, 7]), o($V2, [2, 11]), o($V2, [2, 15], { 18: 27, 42: 29, 20: [1, 28], 44: $Va, 45: $Vb, 46: $Vc, 47: $Vd, 48: $Ve }), { 24: [1, 35] }, { 26: [1, 36] }, { 28: [1, 37] }, o($V2, [2, 19]), o($Vf, [2, 20]), o($Vf, [2, 21]), { 11: [1, 38] }, { 16: 39, 54: [1, 40] }, { 11: [2, 48] }, o($V2, [2, 5]), { 17: 41, 30: $V7, 31: $V8 }, { 21: 42, 22: [1, 43], 32: 44, 33: 45, 37: $Vg }, { 43: 47, 49: [1, 48], 50: [1, 49] }, o($Vh, [2, 35]), o($Vh, [2, 36]), o($Vh, [2, 37]), o($Vh, [2, 38]), o($Vh, [2, 39]), o($V2, [2, 16]), o($V2, [2, 17]), o($V2, [2, 18]), o($Vi, [2, 9]), { 14: 50, 55: $V9 }, { 55: [2, 47] }, { 15: [1, 51] }, { 22: [1, 52] }, o($V2, [2, 14]), { 21: 53, 22: [2, 22], 32: 44, 33: 45, 37: $Vg }, { 34: 54, 37: [1, 55] }, { 37: [2, 28] }, { 42: 56, 44: $Va, 45: $Vb, 46: $Vc, 47: $Vd, 48: $Ve }, o($Vj, [2, 40]), o($Vj, [2, 41]), { 11: [1, 57] }, { 19: 58, 30: [1, 61], 31: [1, 60], 51: [1, 59] }, o($V2, [2, 13]), { 22: [2, 23] }, o($Vk, [2, 24], { 35: 62, 36: 63, 38: 64, 40: $Vl, 41: $Vm }), o([22, 37, 40, 41], [2, 29]), o([30, 31], [2, 34]), o($Vi, [2, 10]), o($V2, [2, 12]), o($V2, [2, 42]), o($V2, [2, 43]), o($V2, [2, 44]), o($Vk, [2, 25], { 36: 67, 39: [1, 68], 41: $Vm }), o($Vk, [2, 26]), o($Vn, [2, 30]), o($Vk, [2, 33]), o($Vn, [2, 32]), o($Vk, [2, 27]), { 38: 69, 40: $Vl }, o($Vn, [2, 31])],\n defaultActions: { 5: [2, 45], 7: [2, 2], 25: [2, 48], 40: [2, 47], 46: [2, 28], 53: [2, 23] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"acc_title\");\n return 25;\n case 1:\n this.popState();\n return \"acc_title_value\";\n case 2:\n this.begin(\"acc_descr\");\n return 27;\n case 3:\n this.popState();\n return \"acc_descr_value\";\n case 4:\n this.begin(\"acc_descr_multiline\");\n break;\n case 5:\n this.popState();\n break;\n case 6:\n return \"acc_descr_multiline_value\";\n case 7:\n this.begin(\"open_directive\");\n return 52;\n case 8:\n this.begin(\"type_directive\");\n return 53;\n case 9:\n this.popState();\n this.begin(\"arg_directive\");\n return 15;\n case 10:\n this.popState();\n this.popState();\n return 55;\n case 11:\n return 54;\n case 12:\n return 11;\n case 13:\n break;\n case 14:\n return 9;\n case 15:\n return 31;\n case 16:\n return 51;\n case 17:\n return 4;\n case 18:\n this.begin(\"block\");\n return 20;\n case 19:\n return 39;\n case 20:\n break;\n case 21:\n return 40;\n case 22:\n return 37;\n case 23:\n return 37;\n case 24:\n return 41;\n case 25:\n break;\n case 26:\n this.popState();\n return 22;\n case 27:\n return yy_.yytext[0];\n case 28:\n return 44;\n case 29:\n return 46;\n case 30:\n return 46;\n case 31:\n return 46;\n case 32:\n return 44;\n case 33:\n return 44;\n case 34:\n return 45;\n case 35:\n return 45;\n case 36:\n return 45;\n case 37:\n return 45;\n case 38:\n return 45;\n case 39:\n return 46;\n case 40:\n return 45;\n case 41:\n return 46;\n case 42:\n return 47;\n case 43:\n return 47;\n case 44:\n return 47;\n case 45:\n return 47;\n case 46:\n return 44;\n case 47:\n return 45;\n case 48:\n return 46;\n case 49:\n return 48;\n case 50:\n return 49;\n case 51:\n return 50;\n case 52:\n return 50;\n case 53:\n return 49;\n case 54:\n return 49;\n case 55:\n return 49;\n case 56:\n return 30;\n case 57:\n return yy_.yytext[0];\n case 58:\n return 6;\n }\n },\n rules: [/^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:%%\\{)/i, /^(?:((?:(?!\\}%%)[^:.])*))/i, /^(?::)/i, /^(?:\\}%%)/i, /^(?:((?:(?!\\}%%).|\\n)*))/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:[\\s]+)/i, /^(?:\"[^\"%\\r\\n\\v\\b\\\\]+\")/i, /^(?:\"[^\"]*\")/i, /^(?:erDiagram\\b)/i, /^(?:\\{)/i, /^(?:,)/i, /^(?:\\s+)/i, /^(?:\\b((?:PK)|(?:FK)|(?:UK))\\b)/i, /^(?:(.*?)[~](.*?)*[~])/i, /^(?:[\\*A-Za-z_][A-Za-z0-9\\-_\\[\\]\\(\\)]*)/i, /^(?:\"[^\"]*\")/i, /^(?:[\\n]+)/i, /^(?:\\})/i, /^(?:.)/i, /^(?:one or zero\\b)/i, /^(?:one or more\\b)/i, /^(?:one or many\\b)/i, /^(?:1\\+)/i, /^(?:\\|o\\b)/i, /^(?:zero or one\\b)/i, /^(?:zero or more\\b)/i, /^(?:zero or many\\b)/i, /^(?:0\\+)/i, /^(?:\\}o\\b)/i, /^(?:many\\(0\\))/i, /^(?:many\\(1\\))/i, /^(?:many\\b)/i, /^(?:\\}\\|)/i, /^(?:one\\b)/i, /^(?:only one\\b)/i, /^(?:1\\b)/i, /^(?:\\|\\|)/i, /^(?:o\\|)/i, /^(?:o\\{)/i, /^(?:\\|\\{)/i, /^(?:\\s*u\\b)/i, /^(?:\\.\\.)/i, /^(?:--)/i, /^(?:to\\b)/i, /^(?:optionally to\\b)/i, /^(?:\\.-)/i, /^(?:-\\.)/i, /^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i, /^(?:.)/i, /^(?:$)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [5, 6], \"inclusive\": false }, \"acc_descr\": { \"rules\": [3], \"inclusive\": false }, \"acc_title\": { \"rules\": [1], \"inclusive\": false }, \"open_directive\": { \"rules\": [8], \"inclusive\": false }, \"type_directive\": { \"rules\": [9, 10], \"inclusive\": false }, \"arg_directive\": { \"rules\": [10, 11], \"inclusive\": false }, \"block\": { \"rules\": [19, 20, 21, 22, 23, 24, 25, 26, 27], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 2, 4, 7, 12, 13, 14, 15, 16, 17, 18, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst erParser = parser;\nlet entities = {};\nlet relationships = [];\nconst Cardinality = {\n ZERO_OR_ONE: \"ZERO_OR_ONE\",\n ZERO_OR_MORE: \"ZERO_OR_MORE\",\n ONE_OR_MORE: \"ONE_OR_MORE\",\n ONLY_ONE: \"ONLY_ONE\",\n MD_PARENT: \"MD_PARENT\"\n};\nconst Identification = {\n NON_IDENTIFYING: \"NON_IDENTIFYING\",\n IDENTIFYING: \"IDENTIFYING\"\n};\nconst parseDirective = function(statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\nconst addEntity = function(name) {\n if (entities[name] === void 0) {\n entities[name] = { attributes: [] };\n log.info(\"Added new entity :\", name);\n }\n return entities[name];\n};\nconst getEntities = () => entities;\nconst addAttributes = function(entityName, attribs) {\n let entity = addEntity(entityName);\n let i;\n for (i = attribs.length - 1; i >= 0; i--) {\n entity.attributes.push(attribs[i]);\n log.debug(\"Added attribute \", attribs[i].attributeName);\n }\n};\nconst addRelationship = function(entA, rolA, entB, rSpec) {\n let rel = {\n entityA: entA,\n roleA: rolA,\n entityB: entB,\n relSpec: rSpec\n };\n relationships.push(rel);\n log.debug(\"Added new relationship :\", rel);\n};\nconst getRelationships = () => relationships;\nconst clear = function() {\n entities = {};\n relationships = [];\n clear$1();\n};\nconst erDb = {\n Cardinality,\n Identification,\n parseDirective,\n getConfig: () => getConfig().er,\n addEntity,\n addAttributes,\n getEntities,\n addRelationship,\n getRelationships,\n clear,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n setDiagramTitle,\n getDiagramTitle\n};\nconst ERMarkers = {\n ONLY_ONE_START: \"ONLY_ONE_START\",\n ONLY_ONE_END: \"ONLY_ONE_END\",\n ZERO_OR_ONE_START: \"ZERO_OR_ONE_START\",\n ZERO_OR_ONE_END: \"ZERO_OR_ONE_END\",\n ONE_OR_MORE_START: \"ONE_OR_MORE_START\",\n ONE_OR_MORE_END: \"ONE_OR_MORE_END\",\n ZERO_OR_MORE_START: \"ZERO_OR_MORE_START\",\n ZERO_OR_MORE_END: \"ZERO_OR_MORE_END\",\n MD_PARENT_END: \"MD_PARENT_END\",\n MD_PARENT_START: \"MD_PARENT_START\"\n};\nconst insertMarkers = function(elem, conf2) {\n let marker;\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.MD_PARENT_START).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.MD_PARENT_END).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONLY_ONE_START).attr(\"refX\", 0).attr(\"refY\", 9).attr(\"markerWidth\", 18).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M9,0 L9,18 M15,0 L15,18\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONLY_ONE_END).attr(\"refX\", 18).attr(\"refY\", 9).attr(\"markerWidth\", 18).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M3,0 L3,18 M9,0 L9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_ONE_START).attr(\"refX\", 0).attr(\"refY\", 9).attr(\"markerWidth\", 30).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 21).attr(\"cy\", 9).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M9,0 L9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_ONE_END).attr(\"refX\", 30).attr(\"refY\", 9).attr(\"markerWidth\", 30).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 9).attr(\"cy\", 9).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M21,0 L21,18\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONE_OR_MORE_START).attr(\"refX\", 18).attr(\"refY\", 18).attr(\"markerWidth\", 45).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONE_OR_MORE_END).attr(\"refX\", 27).attr(\"refY\", 18).attr(\"markerWidth\", 45).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_MORE_START).attr(\"refX\", 18).attr(\"refY\", 18).attr(\"markerWidth\", 57).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 48).attr(\"cy\", 18).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M0,18 Q18,0 36,18 Q18,36 0,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_MORE_END).attr(\"refX\", 39).attr(\"refY\", 18).attr(\"markerWidth\", 57).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 9).attr(\"cy\", 18).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M21,18 Q39,0 57,18 Q39,36 21,18\");\n return;\n};\nconst erMarkers = {\n ERMarkers,\n insertMarkers\n};\nconst BAD_ID_CHARS_REGEXP = /[^\\dA-Za-z](\\W)*/g;\nlet conf = {};\nlet entityNameIds = /* @__PURE__ */ new Map();\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n conf[key] = cnf[key];\n }\n};\nconst drawAttributes = (groupNode, entityTextNode, attributes) => {\n const heightPadding = conf.entityPadding / 3;\n const widthPadding = conf.entityPadding / 3;\n const attrFontSize = conf.fontSize * 0.85;\n const labelBBox = entityTextNode.node().getBBox();\n const attributeNodes = [];\n let hasKeyType = false;\n let hasComment = false;\n let maxTypeWidth = 0;\n let maxNameWidth = 0;\n let maxKeyWidth = 0;\n let maxCommentWidth = 0;\n let cumulativeHeight = labelBBox.height + heightPadding * 2;\n let attrNum = 1;\n attributes.forEach((item) => {\n if (item.attributeKeyTypeList !== void 0 && item.attributeKeyTypeList.length > 0) {\n hasKeyType = true;\n }\n if (item.attributeComment !== void 0) {\n hasComment = true;\n }\n });\n attributes.forEach((item) => {\n const attrPrefix = `${entityTextNode.node().id}-attr-${attrNum}`;\n let nodeHeight = 0;\n const attributeType = parseGenericTypes(item.attributeType);\n const typeNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-type`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(attributeType);\n const nameNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-name`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(item.attributeName);\n const attributeNode = {};\n attributeNode.tn = typeNode;\n attributeNode.nn = nameNode;\n const typeBBox = typeNode.node().getBBox();\n const nameBBox = nameNode.node().getBBox();\n maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width);\n maxNameWidth = Math.max(maxNameWidth, nameBBox.width);\n nodeHeight = Math.max(typeBBox.height, nameBBox.height);\n if (hasKeyType) {\n const keyTypeNodeText = item.attributeKeyTypeList !== void 0 ? item.attributeKeyTypeList.join(\",\") : \"\";\n const keyTypeNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-key`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(keyTypeNodeText);\n attributeNode.kn = keyTypeNode;\n const keyTypeBBox = keyTypeNode.node().getBBox();\n maxKeyWidth = Math.max(maxKeyWidth, keyTypeBBox.width);\n nodeHeight = Math.max(nodeHeight, keyTypeBBox.height);\n }\n if (hasComment) {\n const commentNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-comment`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(item.attributeComment || \"\");\n attributeNode.cn = commentNode;\n const commentNodeBBox = commentNode.node().getBBox();\n maxCommentWidth = Math.max(maxCommentWidth, commentNodeBBox.width);\n nodeHeight = Math.max(nodeHeight, commentNodeBBox.height);\n }\n attributeNode.height = nodeHeight;\n attributeNodes.push(attributeNode);\n cumulativeHeight += nodeHeight + heightPadding * 2;\n attrNum += 1;\n });\n let widthPaddingFactor = 4;\n if (hasKeyType) {\n widthPaddingFactor += 2;\n }\n if (hasComment) {\n widthPaddingFactor += 2;\n }\n const maxWidth = maxTypeWidth + maxNameWidth + maxKeyWidth + maxCommentWidth;\n const bBox = {\n width: Math.max(\n conf.minEntityWidth,\n Math.max(\n labelBBox.width + conf.entityPadding * 2,\n maxWidth + widthPadding * widthPaddingFactor\n )\n ),\n height: attributes.length > 0 ? cumulativeHeight : Math.max(conf.minEntityHeight, labelBBox.height + conf.entityPadding * 2)\n };\n if (attributes.length > 0) {\n const spareColumnWidth = Math.max(\n 0,\n (bBox.width - maxWidth - widthPadding * widthPaddingFactor) / (widthPaddingFactor / 2)\n );\n entityTextNode.attr(\n \"transform\",\n \"translate(\" + bBox.width / 2 + \",\" + (heightPadding + labelBBox.height / 2) + \")\"\n );\n let heightOffset = labelBBox.height + heightPadding * 2;\n let attribStyle = \"attributeBoxOdd\";\n attributeNodes.forEach((attributeNode) => {\n const alignY = heightOffset + heightPadding + attributeNode.height / 2;\n attributeNode.tn.attr(\"transform\", \"translate(\" + widthPadding + \",\" + alignY + \")\");\n const typeRect = groupNode.insert(\"rect\", \"#\" + attributeNode.tn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", 0).attr(\"y\", heightOffset).attr(\"width\", maxTypeWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n const nameXOffset = parseFloat(typeRect.attr(\"x\")) + parseFloat(typeRect.attr(\"width\"));\n attributeNode.nn.attr(\n \"transform\",\n \"translate(\" + (nameXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n const nameRect = groupNode.insert(\"rect\", \"#\" + attributeNode.nn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", nameXOffset).attr(\"y\", heightOffset).attr(\"width\", maxNameWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n let keyTypeAndCommentXOffset = parseFloat(nameRect.attr(\"x\")) + parseFloat(nameRect.attr(\"width\"));\n if (hasKeyType) {\n attributeNode.kn.attr(\n \"transform\",\n \"translate(\" + (keyTypeAndCommentXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n const keyTypeRect = groupNode.insert(\"rect\", \"#\" + attributeNode.kn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", keyTypeAndCommentXOffset).attr(\"y\", heightOffset).attr(\"width\", maxKeyWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n keyTypeAndCommentXOffset = parseFloat(keyTypeRect.attr(\"x\")) + parseFloat(keyTypeRect.attr(\"width\"));\n }\n if (hasComment) {\n attributeNode.cn.attr(\n \"transform\",\n \"translate(\" + (keyTypeAndCommentXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n groupNode.insert(\"rect\", \"#\" + attributeNode.cn.node().id).classed(`er ${attribStyle}`, \"true\").attr(\"x\", keyTypeAndCommentXOffset).attr(\"y\", heightOffset).attr(\"width\", maxCommentWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n }\n heightOffset += attributeNode.height + heightPadding * 2;\n attribStyle = attribStyle === \"attributeBoxOdd\" ? \"attributeBoxEven\" : \"attributeBoxOdd\";\n });\n } else {\n bBox.height = Math.max(conf.minEntityHeight, cumulativeHeight);\n entityTextNode.attr(\"transform\", \"translate(\" + bBox.width / 2 + \",\" + bBox.height / 2 + \")\");\n }\n return bBox;\n};\nconst drawEntities = function(svgNode, entities2, graph) {\n const keys = Object.keys(entities2);\n let firstOne;\n keys.forEach(function(entityName) {\n const entityId = generateId(entityName, \"entity\");\n entityNameIds.set(entityName, entityId);\n const groupNode = svgNode.append(\"g\").attr(\"id\", entityId);\n firstOne = firstOne === void 0 ? entityId : firstOne;\n const textId = \"text-\" + entityId;\n const textNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", textId).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"middle\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", conf.fontSize + \"px\").text(entityName);\n const { width: entityWidth, height: entityHeight } = drawAttributes(\n groupNode,\n textNode,\n entities2[entityName].attributes\n );\n const rectNode = groupNode.insert(\"rect\", \"#\" + textId).classed(\"er entityBox\", true).attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", entityWidth).attr(\"height\", entityHeight);\n const rectBBox = rectNode.node().getBBox();\n graph.setNode(entityId, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: \"rect\",\n id: entityId\n });\n });\n return firstOne;\n};\nconst adjustEntities = function(svgNode, graph) {\n graph.nodes().forEach(function(v) {\n if (v !== void 0 && graph.node(v) !== void 0) {\n svgNode.select(\"#\" + v).attr(\n \"transform\",\n \"translate(\" + (graph.node(v).x - graph.node(v).width / 2) + \",\" + (graph.node(v).y - graph.node(v).height / 2) + \" )\"\n );\n }\n });\n};\nconst getEdgeName = function(rel) {\n return (rel.entityA + rel.roleA + rel.entityB).replace(/\\s/g, \"\");\n};\nconst addRelationships = function(relationships2, g) {\n relationships2.forEach(function(r) {\n g.setEdge(\n entityNameIds.get(r.entityA),\n entityNameIds.get(r.entityB),\n { relationship: r },\n getEdgeName(r)\n );\n });\n return relationships2;\n};\nlet relCnt = 0;\nconst drawRelationshipFromLayout = function(svg, rel, g, insert, diagObj) {\n relCnt++;\n const edge = g.edge(\n entityNameIds.get(rel.entityA),\n entityNameIds.get(rel.entityB),\n getEdgeName(rel)\n );\n const lineFunction = line().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(curveBasis);\n const svgPath = svg.insert(\"path\", \"#\" + insert).classed(\"er relationshipLine\", true).attr(\"d\", lineFunction(edge.points)).style(\"stroke\", conf.stroke).style(\"fill\", \"none\");\n if (rel.relSpec.relType === diagObj.db.Identification.NON_IDENTIFYING) {\n svgPath.attr(\"stroke-dasharray\", \"8,8\");\n }\n let url = \"\";\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n switch (rel.relSpec.cardA) {\n case diagObj.db.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_ONE_END + \")\");\n break;\n case diagObj.db.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_MORE_END + \")\");\n break;\n case diagObj.db.Cardinality.ONE_OR_MORE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONE_OR_MORE_END + \")\");\n break;\n case diagObj.db.Cardinality.ONLY_ONE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONLY_ONE_END + \")\");\n break;\n case diagObj.db.Cardinality.MD_PARENT:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.MD_PARENT_END + \")\");\n break;\n }\n switch (rel.relSpec.cardB) {\n case diagObj.db.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_ONE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_MORE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ONE_OR_MORE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONE_OR_MORE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ONLY_ONE:\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONLY_ONE_START + \")\");\n break;\n case diagObj.db.Cardinality.MD_PARENT:\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.MD_PARENT_START + \")\");\n break;\n }\n const len = svgPath.node().getTotalLength();\n const labelPoint = svgPath.node().getPointAtLength(len * 0.5);\n const labelId = \"rel\" + relCnt;\n const labelNode = svg.append(\"text\").classed(\"er relationshipLabel\", true).attr(\"id\", labelId).attr(\"x\", labelPoint.x).attr(\"y\", labelPoint.y).style(\"text-anchor\", \"middle\").style(\"dominant-baseline\", \"middle\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", conf.fontSize + \"px\").text(rel.roleA);\n const labelBBox = labelNode.node().getBBox();\n svg.insert(\"rect\", \"#\" + labelId).classed(\"er relationshipLabelBox\", true).attr(\"x\", labelPoint.x - labelBBox.width / 2).attr(\"y\", labelPoint.y - labelBBox.height / 2).attr(\"width\", labelBBox.width).attr(\"height\", labelBBox.height);\n};\nconst draw = function(text, id, _version, diagObj) {\n conf = getConfig().er;\n log.info(\"Drawing ER diagram\");\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(`[id='${id}']`);\n erMarkers.insertMarkers(svg, conf);\n let g;\n g = new graphlib.Graph({\n multigraph: true,\n directed: true,\n compound: false\n }).setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n const firstEntity = drawEntities(svg, diagObj.db.getEntities(), g);\n const relationships2 = addRelationships(diagObj.db.getRelationships(), g);\n layout(g);\n adjustEntities(svg, g);\n relationships2.forEach(function(rel) {\n drawRelationshipFromLayout(svg, rel, g, firstEntity, diagObj);\n });\n const padding = conf.diagramPadding;\n utils.insertTitle(svg, \"entityTitleText\", conf.titleTopMargin, diagObj.db.getDiagramTitle());\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n svg.attr(\"viewBox\", `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`);\n};\nconst MERMAID_ERDIAGRAM_UUID = \"28e9f9db-3c8d-5aa5-9faf-44286ae5937c\";\nfunction generateId(str = \"\", prefix = \"\") {\n const simplifiedStr = str.replace(BAD_ID_CHARS_REGEXP, \"\");\n return `${strWithHyphen(prefix)}${strWithHyphen(simplifiedStr)}${v5(\n str,\n MERMAID_ERDIAGRAM_UUID\n )}`;\n}\nfunction strWithHyphen(str = \"\") {\n return str.length > 0 ? `${str}-` : \"\";\n}\nconst erRenderer = {\n setConf,\n draw\n};\nconst getStyles = (options) => `\n .entityBox {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n }\n\n .attributeBoxOdd {\n fill: ${options.attributeBackgroundColorOdd};\n stroke: ${options.nodeBorder};\n }\n\n .attributeBoxEven {\n fill: ${options.attributeBackgroundColorEven};\n stroke: ${options.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${options.tertiaryColor};\n opacity: 0.7;\n background-color: ${options.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${options.lineColor};\n }\n\n .entityTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n } \n #MD_PARENT_START {\n fill: #f5f5f5 !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n }\n #MD_PARENT_END {\n fill: #f5f5f5 !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n }\n \n`;\nconst erStyles = getStyles;\nconst diagram = {\n parser: erParser,\n db: erDb,\n renderer: erRenderer,\n styles: erStyles\n};\nexport {\n diagram\n};\n"],"names":["REGEX","validate","uuid","parse","v","arr","stringToBytes","str","bytes","i","DNS","URL","v35","name","version","hashfunc","generateUUID","value","namespace","buf","offset","_namespace","unsafeStringify","f","s","x","y","z","ROTL","n","sha1","K","H","msg","l","N","M","j","W","t","a","b","c","d","e","T","v5","v5$1","parser","o","k","o2","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","parser2","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","hash","error","input","self","stack","tstack","vstack","lstack","table","TERROR","EOF","args","lexer2","sharedState","yyloc","ranges","lex","token","symbol","state","action","r","yyval","p","len","newState","expected","errStr","lexer","ch","lines","oldLines","past","next","pre","match","indexed_rule","backup","tempMatch","index","rules","condition","yy_","$avoiding_name_collisions","YY_START","Parser","erParser","entities","relationships","Cardinality","Identification","parseDirective","statement","context","type","mermaidAPI","addEntity","log","getEntities","addAttributes","entityName","attribs","entity","addRelationship","entA","rolA","entB","rSpec","rel","getRelationships","clear","clear$1","erDb","getConfig","setAccTitle","getAccTitle","setAccDescription","getAccDescription","setDiagramTitle","getDiagramTitle","ERMarkers","insertMarkers","elem","conf2","marker","erMarkers","BAD_ID_CHARS_REGEXP","conf","entityNameIds","setConf","cnf","keys","key","drawAttributes","groupNode","entityTextNode","attributes","heightPadding","widthPadding","attrFontSize","labelBBox","attributeNodes","hasKeyType","hasComment","maxTypeWidth","maxNameWidth","maxKeyWidth","maxCommentWidth","cumulativeHeight","attrNum","item","attrPrefix","nodeHeight","attributeType","parseGenericTypes","typeNode","nameNode","attributeNode","typeBBox","nameBBox","keyTypeNodeText","keyTypeNode","keyTypeBBox","commentNode","commentNodeBBox","widthPaddingFactor","maxWidth","bBox","spareColumnWidth","heightOffset","attribStyle","alignY","typeRect","nameXOffset","nameRect","keyTypeAndCommentXOffset","keyTypeRect","drawEntities","svgNode","entities2","graph","firstOne","entityId","generateId","textId","textNode","entityWidth","entityHeight","rectBBox","adjustEntities","getEdgeName","addRelationships","relationships2","g","relCnt","drawRelationshipFromLayout","svg","insert","diagObj","edge","lineFunction","line","curveBasis","svgPath","url","labelPoint","labelId","draw","text","id","_version","securityLevel","sandboxElement","select","graphlib.Graph","firstEntity","layout","padding","utils","svgBounds","width","height","configureSvgSize","MERMAID_ERDIAGRAM_UUID","prefix","simplifiedStr","strWithHyphen","erRenderer","getStyles","options","erStyles","diagram"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
\ No newline at end of file
+{"version":3,"file":"erDiagram-0ccc0425-b174d459.js","sources":["../../node_modules/uuid/dist/esm-browser/regex.js","../../node_modules/uuid/dist/esm-browser/validate.js","../../node_modules/uuid/dist/esm-browser/parse.js","../../node_modules/uuid/dist/esm-browser/v35.js","../../node_modules/uuid/dist/esm-browser/sha1.js","../../node_modules/uuid/dist/esm-browser/v5.js","../../node_modules/mermaid/dist/erDiagram-0ccc0425.js"],"sourcesContent":["export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","import { unsafeStringify } from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nconst v5 = v35('v5', 0x50, sha1);\nexport default v5;","import { c as getConfig, s as setAccTitle, g as getAccTitle, b as setAccDescription, a as getAccDescription, r as setDiagramTitle, t as getDiagramTitle, m as mermaidAPI, l as log, v as clear$1, u as utils, i as configureSvgSize, x as parseGenericTypes } from \"./mermaid-a98f434b.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { select, line, curveBasis } from \"d3\";\nimport { layout } from \"dagre-d3-es/src/dagre/index.js\";\nimport { v5 } from \"uuid\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 2], $V1 = [1, 5], $V2 = [6, 9, 11, 23, 25, 27, 29, 30, 31, 52], $V3 = [1, 17], $V4 = [1, 18], $V5 = [1, 19], $V6 = [1, 20], $V7 = [1, 21], $V8 = [1, 22], $V9 = [1, 25], $Va = [1, 30], $Vb = [1, 31], $Vc = [1, 32], $Vd = [1, 33], $Ve = [1, 34], $Vf = [6, 9, 11, 15, 20, 23, 25, 27, 29, 30, 31, 44, 45, 46, 47, 48, 52], $Vg = [1, 46], $Vh = [30, 31, 49, 50], $Vi = [4, 6, 9, 11, 23, 25, 27, 29, 30, 31, 52], $Vj = [44, 45, 46, 47, 48], $Vk = [22, 37], $Vl = [1, 66], $Vm = [1, 65], $Vn = [22, 37, 39, 41];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"ER_DIAGRAM\": 4, \"document\": 5, \"EOF\": 6, \"directive\": 7, \"line\": 8, \"SPACE\": 9, \"statement\": 10, \"NEWLINE\": 11, \"openDirective\": 12, \"typeDirective\": 13, \"closeDirective\": 14, \":\": 15, \"argDirective\": 16, \"entityName\": 17, \"relSpec\": 18, \"role\": 19, \"BLOCK_START\": 20, \"attributes\": 21, \"BLOCK_STOP\": 22, \"title\": 23, \"title_value\": 24, \"acc_title\": 25, \"acc_title_value\": 26, \"acc_descr\": 27, \"acc_descr_value\": 28, \"acc_descr_multiline_value\": 29, \"ALPHANUM\": 30, \"ENTITY_NAME\": 31, \"attribute\": 32, \"attributeType\": 33, \"attributeName\": 34, \"attributeKeyTypeList\": 35, \"attributeComment\": 36, \"ATTRIBUTE_WORD\": 37, \"attributeKeyType\": 38, \"COMMA\": 39, \"ATTRIBUTE_KEY\": 40, \"COMMENT\": 41, \"cardinality\": 42, \"relType\": 43, \"ZERO_OR_ONE\": 44, \"ZERO_OR_MORE\": 45, \"ONE_OR_MORE\": 46, \"ONLY_ONE\": 47, \"MD_PARENT\": 48, \"NON_IDENTIFYING\": 49, \"IDENTIFYING\": 50, \"WORD\": 51, \"open_directive\": 52, \"type_directive\": 53, \"arg_directive\": 54, \"close_directive\": 55, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"ER_DIAGRAM\", 6: \"EOF\", 9: \"SPACE\", 11: \"NEWLINE\", 15: \":\", 20: \"BLOCK_START\", 22: \"BLOCK_STOP\", 23: \"title\", 24: \"title_value\", 25: \"acc_title\", 26: \"acc_title_value\", 27: \"acc_descr\", 28: \"acc_descr_value\", 29: \"acc_descr_multiline_value\", 30: \"ALPHANUM\", 31: \"ENTITY_NAME\", 37: \"ATTRIBUTE_WORD\", 39: \"COMMA\", 40: \"ATTRIBUTE_KEY\", 41: \"COMMENT\", 44: \"ZERO_OR_ONE\", 45: \"ZERO_OR_MORE\", 46: \"ONE_OR_MORE\", 47: \"ONLY_ONE\", 48: \"MD_PARENT\", 49: \"NON_IDENTIFYING\", 50: \"IDENTIFYING\", 51: \"WORD\", 52: \"open_directive\", 53: \"type_directive\", 54: \"arg_directive\", 55: \"close_directive\" },\n productions_: [0, [3, 3], [3, 2], [5, 0], [5, 2], [8, 2], [8, 1], [8, 1], [8, 1], [7, 4], [7, 6], [10, 1], [10, 5], [10, 4], [10, 3], [10, 1], [10, 2], [10, 2], [10, 2], [10, 1], [17, 1], [17, 1], [21, 1], [21, 2], [32, 2], [32, 3], [32, 3], [32, 4], [33, 1], [34, 1], [35, 1], [35, 3], [38, 1], [36, 1], [18, 3], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [43, 1], [43, 1], [19, 1], [19, 1], [19, 1], [12, 1], [13, 1], [16, 1], [14, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n break;\n case 3:\n this.$ = [];\n break;\n case 4:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 5:\n case 6:\n this.$ = $$[$0];\n break;\n case 7:\n case 8:\n this.$ = [];\n break;\n case 12:\n yy.addEntity($$[$0 - 4]);\n yy.addEntity($$[$0 - 2]);\n yy.addRelationship($$[$0 - 4], $$[$0], $$[$0 - 2], $$[$0 - 3]);\n break;\n case 13:\n yy.addEntity($$[$0 - 3]);\n yy.addAttributes($$[$0 - 3], $$[$0 - 1]);\n break;\n case 14:\n yy.addEntity($$[$0 - 2]);\n break;\n case 15:\n yy.addEntity($$[$0]);\n break;\n case 16:\n case 17:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 18:\n case 19:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 20:\n case 44:\n this.$ = $$[$0];\n break;\n case 21:\n case 42:\n case 43:\n this.$ = $$[$0].replace(/\"/g, \"\");\n break;\n case 22:\n case 30:\n this.$ = [$$[$0]];\n break;\n case 23:\n $$[$0].push($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 24:\n this.$ = { attributeType: $$[$0 - 1], attributeName: $$[$0] };\n break;\n case 25:\n this.$ = { attributeType: $$[$0 - 2], attributeName: $$[$0 - 1], attributeKeyTypeList: $$[$0] };\n break;\n case 26:\n this.$ = { attributeType: $$[$0 - 2], attributeName: $$[$0 - 1], attributeComment: $$[$0] };\n break;\n case 27:\n this.$ = { attributeType: $$[$0 - 3], attributeName: $$[$0 - 2], attributeKeyTypeList: $$[$0 - 1], attributeComment: $$[$0] };\n break;\n case 28:\n case 29:\n case 32:\n this.$ = $$[$0];\n break;\n case 31:\n $$[$0 - 2].push($$[$0]);\n this.$ = $$[$0 - 2];\n break;\n case 33:\n this.$ = $$[$0].replace(/\"/g, \"\");\n break;\n case 34:\n this.$ = { cardA: $$[$0], relType: $$[$0 - 1], cardB: $$[$0 - 2] };\n break;\n case 35:\n this.$ = yy.Cardinality.ZERO_OR_ONE;\n break;\n case 36:\n this.$ = yy.Cardinality.ZERO_OR_MORE;\n break;\n case 37:\n this.$ = yy.Cardinality.ONE_OR_MORE;\n break;\n case 38:\n this.$ = yy.Cardinality.ONLY_ONE;\n break;\n case 39:\n this.$ = yy.Cardinality.MD_PARENT;\n break;\n case 40:\n this.$ = yy.Identification.NON_IDENTIFYING;\n break;\n case 41:\n this.$ = yy.Identification.IDENTIFYING;\n break;\n case 45:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 46:\n yy.parseDirective($$[$0], \"type_directive\");\n break;\n case 47:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 48:\n yy.parseDirective(\"}%%\", \"close_directive\", \"er\");\n break;\n }\n },\n table: [{ 3: 1, 4: $V0, 7: 3, 12: 4, 52: $V1 }, { 1: [3] }, o($V2, [2, 3], { 5: 6 }), { 3: 7, 4: $V0, 7: 3, 12: 4, 52: $V1 }, { 13: 8, 53: [1, 9] }, { 53: [2, 45] }, { 6: [1, 10], 7: 15, 8: 11, 9: [1, 12], 10: 13, 11: [1, 14], 12: 4, 17: 16, 23: $V3, 25: $V4, 27: $V5, 29: $V6, 30: $V7, 31: $V8, 52: $V1 }, { 1: [2, 2] }, { 14: 23, 15: [1, 24], 55: $V9 }, o([15, 55], [2, 46]), o($V2, [2, 8], { 1: [2, 1] }), o($V2, [2, 4]), { 7: 15, 10: 26, 12: 4, 17: 16, 23: $V3, 25: $V4, 27: $V5, 29: $V6, 30: $V7, 31: $V8, 52: $V1 }, o($V2, [2, 6]), o($V2, [2, 7]), o($V2, [2, 11]), o($V2, [2, 15], { 18: 27, 42: 29, 20: [1, 28], 44: $Va, 45: $Vb, 46: $Vc, 47: $Vd, 48: $Ve }), { 24: [1, 35] }, { 26: [1, 36] }, { 28: [1, 37] }, o($V2, [2, 19]), o($Vf, [2, 20]), o($Vf, [2, 21]), { 11: [1, 38] }, { 16: 39, 54: [1, 40] }, { 11: [2, 48] }, o($V2, [2, 5]), { 17: 41, 30: $V7, 31: $V8 }, { 21: 42, 22: [1, 43], 32: 44, 33: 45, 37: $Vg }, { 43: 47, 49: [1, 48], 50: [1, 49] }, o($Vh, [2, 35]), o($Vh, [2, 36]), o($Vh, [2, 37]), o($Vh, [2, 38]), o($Vh, [2, 39]), o($V2, [2, 16]), o($V2, [2, 17]), o($V2, [2, 18]), o($Vi, [2, 9]), { 14: 50, 55: $V9 }, { 55: [2, 47] }, { 15: [1, 51] }, { 22: [1, 52] }, o($V2, [2, 14]), { 21: 53, 22: [2, 22], 32: 44, 33: 45, 37: $Vg }, { 34: 54, 37: [1, 55] }, { 37: [2, 28] }, { 42: 56, 44: $Va, 45: $Vb, 46: $Vc, 47: $Vd, 48: $Ve }, o($Vj, [2, 40]), o($Vj, [2, 41]), { 11: [1, 57] }, { 19: 58, 30: [1, 61], 31: [1, 60], 51: [1, 59] }, o($V2, [2, 13]), { 22: [2, 23] }, o($Vk, [2, 24], { 35: 62, 36: 63, 38: 64, 40: $Vl, 41: $Vm }), o([22, 37, 40, 41], [2, 29]), o([30, 31], [2, 34]), o($Vi, [2, 10]), o($V2, [2, 12]), o($V2, [2, 42]), o($V2, [2, 43]), o($V2, [2, 44]), o($Vk, [2, 25], { 36: 67, 39: [1, 68], 41: $Vm }), o($Vk, [2, 26]), o($Vn, [2, 30]), o($Vk, [2, 33]), o($Vn, [2, 32]), o($Vk, [2, 27]), { 38: 69, 40: $Vl }, o($Vn, [2, 31])],\n defaultActions: { 5: [2, 45], 7: [2, 2], 25: [2, 48], 40: [2, 47], 46: [2, 28], 53: [2, 23] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"acc_title\");\n return 25;\n case 1:\n this.popState();\n return \"acc_title_value\";\n case 2:\n this.begin(\"acc_descr\");\n return 27;\n case 3:\n this.popState();\n return \"acc_descr_value\";\n case 4:\n this.begin(\"acc_descr_multiline\");\n break;\n case 5:\n this.popState();\n break;\n case 6:\n return \"acc_descr_multiline_value\";\n case 7:\n this.begin(\"open_directive\");\n return 52;\n case 8:\n this.begin(\"type_directive\");\n return 53;\n case 9:\n this.popState();\n this.begin(\"arg_directive\");\n return 15;\n case 10:\n this.popState();\n this.popState();\n return 55;\n case 11:\n return 54;\n case 12:\n return 11;\n case 13:\n break;\n case 14:\n return 9;\n case 15:\n return 31;\n case 16:\n return 51;\n case 17:\n return 4;\n case 18:\n this.begin(\"block\");\n return 20;\n case 19:\n return 39;\n case 20:\n break;\n case 21:\n return 40;\n case 22:\n return 37;\n case 23:\n return 37;\n case 24:\n return 41;\n case 25:\n break;\n case 26:\n this.popState();\n return 22;\n case 27:\n return yy_.yytext[0];\n case 28:\n return 44;\n case 29:\n return 46;\n case 30:\n return 46;\n case 31:\n return 46;\n case 32:\n return 44;\n case 33:\n return 44;\n case 34:\n return 45;\n case 35:\n return 45;\n case 36:\n return 45;\n case 37:\n return 45;\n case 38:\n return 45;\n case 39:\n return 46;\n case 40:\n return 45;\n case 41:\n return 46;\n case 42:\n return 47;\n case 43:\n return 47;\n case 44:\n return 47;\n case 45:\n return 47;\n case 46:\n return 44;\n case 47:\n return 45;\n case 48:\n return 46;\n case 49:\n return 48;\n case 50:\n return 49;\n case 51:\n return 50;\n case 52:\n return 50;\n case 53:\n return 49;\n case 54:\n return 49;\n case 55:\n return 49;\n case 56:\n return 30;\n case 57:\n return yy_.yytext[0];\n case 58:\n return 6;\n }\n },\n rules: [/^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:%%\\{)/i, /^(?:((?:(?!\\}%%)[^:.])*))/i, /^(?::)/i, /^(?:\\}%%)/i, /^(?:((?:(?!\\}%%).|\\n)*))/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:[\\s]+)/i, /^(?:\"[^\"%\\r\\n\\v\\b\\\\]+\")/i, /^(?:\"[^\"]*\")/i, /^(?:erDiagram\\b)/i, /^(?:\\{)/i, /^(?:,)/i, /^(?:\\s+)/i, /^(?:\\b((?:PK)|(?:FK)|(?:UK))\\b)/i, /^(?:(.*?)[~](.*?)*[~])/i, /^(?:[\\*A-Za-z_][A-Za-z0-9\\-_\\[\\]\\(\\)]*)/i, /^(?:\"[^\"]*\")/i, /^(?:[\\n]+)/i, /^(?:\\})/i, /^(?:.)/i, /^(?:one or zero\\b)/i, /^(?:one or more\\b)/i, /^(?:one or many\\b)/i, /^(?:1\\+)/i, /^(?:\\|o\\b)/i, /^(?:zero or one\\b)/i, /^(?:zero or more\\b)/i, /^(?:zero or many\\b)/i, /^(?:0\\+)/i, /^(?:\\}o\\b)/i, /^(?:many\\(0\\))/i, /^(?:many\\(1\\))/i, /^(?:many\\b)/i, /^(?:\\}\\|)/i, /^(?:one\\b)/i, /^(?:only one\\b)/i, /^(?:1\\b)/i, /^(?:\\|\\|)/i, /^(?:o\\|)/i, /^(?:o\\{)/i, /^(?:\\|\\{)/i, /^(?:\\s*u\\b)/i, /^(?:\\.\\.)/i, /^(?:--)/i, /^(?:to\\b)/i, /^(?:optionally to\\b)/i, /^(?:\\.-)/i, /^(?:-\\.)/i, /^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i, /^(?:.)/i, /^(?:$)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [5, 6], \"inclusive\": false }, \"acc_descr\": { \"rules\": [3], \"inclusive\": false }, \"acc_title\": { \"rules\": [1], \"inclusive\": false }, \"open_directive\": { \"rules\": [8], \"inclusive\": false }, \"type_directive\": { \"rules\": [9, 10], \"inclusive\": false }, \"arg_directive\": { \"rules\": [10, 11], \"inclusive\": false }, \"block\": { \"rules\": [19, 20, 21, 22, 23, 24, 25, 26, 27], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 2, 4, 7, 12, 13, 14, 15, 16, 17, 18, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst erParser = parser;\nlet entities = {};\nlet relationships = [];\nconst Cardinality = {\n ZERO_OR_ONE: \"ZERO_OR_ONE\",\n ZERO_OR_MORE: \"ZERO_OR_MORE\",\n ONE_OR_MORE: \"ONE_OR_MORE\",\n ONLY_ONE: \"ONLY_ONE\",\n MD_PARENT: \"MD_PARENT\"\n};\nconst Identification = {\n NON_IDENTIFYING: \"NON_IDENTIFYING\",\n IDENTIFYING: \"IDENTIFYING\"\n};\nconst parseDirective = function(statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\nconst addEntity = function(name) {\n if (entities[name] === void 0) {\n entities[name] = { attributes: [] };\n log.info(\"Added new entity :\", name);\n }\n return entities[name];\n};\nconst getEntities = () => entities;\nconst addAttributes = function(entityName, attribs) {\n let entity = addEntity(entityName);\n let i;\n for (i = attribs.length - 1; i >= 0; i--) {\n entity.attributes.push(attribs[i]);\n log.debug(\"Added attribute \", attribs[i].attributeName);\n }\n};\nconst addRelationship = function(entA, rolA, entB, rSpec) {\n let rel = {\n entityA: entA,\n roleA: rolA,\n entityB: entB,\n relSpec: rSpec\n };\n relationships.push(rel);\n log.debug(\"Added new relationship :\", rel);\n};\nconst getRelationships = () => relationships;\nconst clear = function() {\n entities = {};\n relationships = [];\n clear$1();\n};\nconst erDb = {\n Cardinality,\n Identification,\n parseDirective,\n getConfig: () => getConfig().er,\n addEntity,\n addAttributes,\n getEntities,\n addRelationship,\n getRelationships,\n clear,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n setDiagramTitle,\n getDiagramTitle\n};\nconst ERMarkers = {\n ONLY_ONE_START: \"ONLY_ONE_START\",\n ONLY_ONE_END: \"ONLY_ONE_END\",\n ZERO_OR_ONE_START: \"ZERO_OR_ONE_START\",\n ZERO_OR_ONE_END: \"ZERO_OR_ONE_END\",\n ONE_OR_MORE_START: \"ONE_OR_MORE_START\",\n ONE_OR_MORE_END: \"ONE_OR_MORE_END\",\n ZERO_OR_MORE_START: \"ZERO_OR_MORE_START\",\n ZERO_OR_MORE_END: \"ZERO_OR_MORE_END\",\n MD_PARENT_END: \"MD_PARENT_END\",\n MD_PARENT_START: \"MD_PARENT_START\"\n};\nconst insertMarkers = function(elem, conf2) {\n let marker;\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.MD_PARENT_START).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.MD_PARENT_END).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONLY_ONE_START).attr(\"refX\", 0).attr(\"refY\", 9).attr(\"markerWidth\", 18).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M9,0 L9,18 M15,0 L15,18\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONLY_ONE_END).attr(\"refX\", 18).attr(\"refY\", 9).attr(\"markerWidth\", 18).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M3,0 L3,18 M9,0 L9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_ONE_START).attr(\"refX\", 0).attr(\"refY\", 9).attr(\"markerWidth\", 30).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 21).attr(\"cy\", 9).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M9,0 L9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_ONE_END).attr(\"refX\", 30).attr(\"refY\", 9).attr(\"markerWidth\", 30).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 9).attr(\"cy\", 9).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M21,0 L21,18\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONE_OR_MORE_START).attr(\"refX\", 18).attr(\"refY\", 18).attr(\"markerWidth\", 45).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONE_OR_MORE_END).attr(\"refX\", 27).attr(\"refY\", 18).attr(\"markerWidth\", 45).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_MORE_START).attr(\"refX\", 18).attr(\"refY\", 18).attr(\"markerWidth\", 57).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 48).attr(\"cy\", 18).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M0,18 Q18,0 36,18 Q18,36 0,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_MORE_END).attr(\"refX\", 39).attr(\"refY\", 18).attr(\"markerWidth\", 57).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 9).attr(\"cy\", 18).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M21,18 Q39,0 57,18 Q39,36 21,18\");\n return;\n};\nconst erMarkers = {\n ERMarkers,\n insertMarkers\n};\nconst BAD_ID_CHARS_REGEXP = /[^\\dA-Za-z](\\W)*/g;\nlet conf = {};\nlet entityNameIds = /* @__PURE__ */ new Map();\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n conf[key] = cnf[key];\n }\n};\nconst drawAttributes = (groupNode, entityTextNode, attributes) => {\n const heightPadding = conf.entityPadding / 3;\n const widthPadding = conf.entityPadding / 3;\n const attrFontSize = conf.fontSize * 0.85;\n const labelBBox = entityTextNode.node().getBBox();\n const attributeNodes = [];\n let hasKeyType = false;\n let hasComment = false;\n let maxTypeWidth = 0;\n let maxNameWidth = 0;\n let maxKeyWidth = 0;\n let maxCommentWidth = 0;\n let cumulativeHeight = labelBBox.height + heightPadding * 2;\n let attrNum = 1;\n attributes.forEach((item) => {\n if (item.attributeKeyTypeList !== void 0 && item.attributeKeyTypeList.length > 0) {\n hasKeyType = true;\n }\n if (item.attributeComment !== void 0) {\n hasComment = true;\n }\n });\n attributes.forEach((item) => {\n const attrPrefix = `${entityTextNode.node().id}-attr-${attrNum}`;\n let nodeHeight = 0;\n const attributeType = parseGenericTypes(item.attributeType);\n const typeNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-type`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(attributeType);\n const nameNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-name`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(item.attributeName);\n const attributeNode = {};\n attributeNode.tn = typeNode;\n attributeNode.nn = nameNode;\n const typeBBox = typeNode.node().getBBox();\n const nameBBox = nameNode.node().getBBox();\n maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width);\n maxNameWidth = Math.max(maxNameWidth, nameBBox.width);\n nodeHeight = Math.max(typeBBox.height, nameBBox.height);\n if (hasKeyType) {\n const keyTypeNodeText = item.attributeKeyTypeList !== void 0 ? item.attributeKeyTypeList.join(\",\") : \"\";\n const keyTypeNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-key`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(keyTypeNodeText);\n attributeNode.kn = keyTypeNode;\n const keyTypeBBox = keyTypeNode.node().getBBox();\n maxKeyWidth = Math.max(maxKeyWidth, keyTypeBBox.width);\n nodeHeight = Math.max(nodeHeight, keyTypeBBox.height);\n }\n if (hasComment) {\n const commentNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-comment`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(item.attributeComment || \"\");\n attributeNode.cn = commentNode;\n const commentNodeBBox = commentNode.node().getBBox();\n maxCommentWidth = Math.max(maxCommentWidth, commentNodeBBox.width);\n nodeHeight = Math.max(nodeHeight, commentNodeBBox.height);\n }\n attributeNode.height = nodeHeight;\n attributeNodes.push(attributeNode);\n cumulativeHeight += nodeHeight + heightPadding * 2;\n attrNum += 1;\n });\n let widthPaddingFactor = 4;\n if (hasKeyType) {\n widthPaddingFactor += 2;\n }\n if (hasComment) {\n widthPaddingFactor += 2;\n }\n const maxWidth = maxTypeWidth + maxNameWidth + maxKeyWidth + maxCommentWidth;\n const bBox = {\n width: Math.max(\n conf.minEntityWidth,\n Math.max(\n labelBBox.width + conf.entityPadding * 2,\n maxWidth + widthPadding * widthPaddingFactor\n )\n ),\n height: attributes.length > 0 ? cumulativeHeight : Math.max(conf.minEntityHeight, labelBBox.height + conf.entityPadding * 2)\n };\n if (attributes.length > 0) {\n const spareColumnWidth = Math.max(\n 0,\n (bBox.width - maxWidth - widthPadding * widthPaddingFactor) / (widthPaddingFactor / 2)\n );\n entityTextNode.attr(\n \"transform\",\n \"translate(\" + bBox.width / 2 + \",\" + (heightPadding + labelBBox.height / 2) + \")\"\n );\n let heightOffset = labelBBox.height + heightPadding * 2;\n let attribStyle = \"attributeBoxOdd\";\n attributeNodes.forEach((attributeNode) => {\n const alignY = heightOffset + heightPadding + attributeNode.height / 2;\n attributeNode.tn.attr(\"transform\", \"translate(\" + widthPadding + \",\" + alignY + \")\");\n const typeRect = groupNode.insert(\"rect\", \"#\" + attributeNode.tn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", 0).attr(\"y\", heightOffset).attr(\"width\", maxTypeWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n const nameXOffset = parseFloat(typeRect.attr(\"x\")) + parseFloat(typeRect.attr(\"width\"));\n attributeNode.nn.attr(\n \"transform\",\n \"translate(\" + (nameXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n const nameRect = groupNode.insert(\"rect\", \"#\" + attributeNode.nn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", nameXOffset).attr(\"y\", heightOffset).attr(\"width\", maxNameWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n let keyTypeAndCommentXOffset = parseFloat(nameRect.attr(\"x\")) + parseFloat(nameRect.attr(\"width\"));\n if (hasKeyType) {\n attributeNode.kn.attr(\n \"transform\",\n \"translate(\" + (keyTypeAndCommentXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n const keyTypeRect = groupNode.insert(\"rect\", \"#\" + attributeNode.kn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", keyTypeAndCommentXOffset).attr(\"y\", heightOffset).attr(\"width\", maxKeyWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n keyTypeAndCommentXOffset = parseFloat(keyTypeRect.attr(\"x\")) + parseFloat(keyTypeRect.attr(\"width\"));\n }\n if (hasComment) {\n attributeNode.cn.attr(\n \"transform\",\n \"translate(\" + (keyTypeAndCommentXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n groupNode.insert(\"rect\", \"#\" + attributeNode.cn.node().id).classed(`er ${attribStyle}`, \"true\").attr(\"x\", keyTypeAndCommentXOffset).attr(\"y\", heightOffset).attr(\"width\", maxCommentWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n }\n heightOffset += attributeNode.height + heightPadding * 2;\n attribStyle = attribStyle === \"attributeBoxOdd\" ? \"attributeBoxEven\" : \"attributeBoxOdd\";\n });\n } else {\n bBox.height = Math.max(conf.minEntityHeight, cumulativeHeight);\n entityTextNode.attr(\"transform\", \"translate(\" + bBox.width / 2 + \",\" + bBox.height / 2 + \")\");\n }\n return bBox;\n};\nconst drawEntities = function(svgNode, entities2, graph) {\n const keys = Object.keys(entities2);\n let firstOne;\n keys.forEach(function(entityName) {\n const entityId = generateId(entityName, \"entity\");\n entityNameIds.set(entityName, entityId);\n const groupNode = svgNode.append(\"g\").attr(\"id\", entityId);\n firstOne = firstOne === void 0 ? entityId : firstOne;\n const textId = \"text-\" + entityId;\n const textNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", textId).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"middle\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", conf.fontSize + \"px\").text(entityName);\n const { width: entityWidth, height: entityHeight } = drawAttributes(\n groupNode,\n textNode,\n entities2[entityName].attributes\n );\n const rectNode = groupNode.insert(\"rect\", \"#\" + textId).classed(\"er entityBox\", true).attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", entityWidth).attr(\"height\", entityHeight);\n const rectBBox = rectNode.node().getBBox();\n graph.setNode(entityId, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: \"rect\",\n id: entityId\n });\n });\n return firstOne;\n};\nconst adjustEntities = function(svgNode, graph) {\n graph.nodes().forEach(function(v) {\n if (v !== void 0 && graph.node(v) !== void 0) {\n svgNode.select(\"#\" + v).attr(\n \"transform\",\n \"translate(\" + (graph.node(v).x - graph.node(v).width / 2) + \",\" + (graph.node(v).y - graph.node(v).height / 2) + \" )\"\n );\n }\n });\n};\nconst getEdgeName = function(rel) {\n return (rel.entityA + rel.roleA + rel.entityB).replace(/\\s/g, \"\");\n};\nconst addRelationships = function(relationships2, g) {\n relationships2.forEach(function(r) {\n g.setEdge(\n entityNameIds.get(r.entityA),\n entityNameIds.get(r.entityB),\n { relationship: r },\n getEdgeName(r)\n );\n });\n return relationships2;\n};\nlet relCnt = 0;\nconst drawRelationshipFromLayout = function(svg, rel, g, insert, diagObj) {\n relCnt++;\n const edge = g.edge(\n entityNameIds.get(rel.entityA),\n entityNameIds.get(rel.entityB),\n getEdgeName(rel)\n );\n const lineFunction = line().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(curveBasis);\n const svgPath = svg.insert(\"path\", \"#\" + insert).classed(\"er relationshipLine\", true).attr(\"d\", lineFunction(edge.points)).style(\"stroke\", conf.stroke).style(\"fill\", \"none\");\n if (rel.relSpec.relType === diagObj.db.Identification.NON_IDENTIFYING) {\n svgPath.attr(\"stroke-dasharray\", \"8,8\");\n }\n let url = \"\";\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n switch (rel.relSpec.cardA) {\n case diagObj.db.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_ONE_END + \")\");\n break;\n case diagObj.db.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_MORE_END + \")\");\n break;\n case diagObj.db.Cardinality.ONE_OR_MORE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONE_OR_MORE_END + \")\");\n break;\n case diagObj.db.Cardinality.ONLY_ONE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONLY_ONE_END + \")\");\n break;\n case diagObj.db.Cardinality.MD_PARENT:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.MD_PARENT_END + \")\");\n break;\n }\n switch (rel.relSpec.cardB) {\n case diagObj.db.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_ONE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_MORE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ONE_OR_MORE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONE_OR_MORE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ONLY_ONE:\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONLY_ONE_START + \")\");\n break;\n case diagObj.db.Cardinality.MD_PARENT:\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.MD_PARENT_START + \")\");\n break;\n }\n const len = svgPath.node().getTotalLength();\n const labelPoint = svgPath.node().getPointAtLength(len * 0.5);\n const labelId = \"rel\" + relCnt;\n const labelNode = svg.append(\"text\").classed(\"er relationshipLabel\", true).attr(\"id\", labelId).attr(\"x\", labelPoint.x).attr(\"y\", labelPoint.y).style(\"text-anchor\", \"middle\").style(\"dominant-baseline\", \"middle\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", conf.fontSize + \"px\").text(rel.roleA);\n const labelBBox = labelNode.node().getBBox();\n svg.insert(\"rect\", \"#\" + labelId).classed(\"er relationshipLabelBox\", true).attr(\"x\", labelPoint.x - labelBBox.width / 2).attr(\"y\", labelPoint.y - labelBBox.height / 2).attr(\"width\", labelBBox.width).attr(\"height\", labelBBox.height);\n};\nconst draw = function(text, id, _version, diagObj) {\n conf = getConfig().er;\n log.info(\"Drawing ER diagram\");\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(`[id='${id}']`);\n erMarkers.insertMarkers(svg, conf);\n let g;\n g = new graphlib.Graph({\n multigraph: true,\n directed: true,\n compound: false\n }).setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n const firstEntity = drawEntities(svg, diagObj.db.getEntities(), g);\n const relationships2 = addRelationships(diagObj.db.getRelationships(), g);\n layout(g);\n adjustEntities(svg, g);\n relationships2.forEach(function(rel) {\n drawRelationshipFromLayout(svg, rel, g, firstEntity, diagObj);\n });\n const padding = conf.diagramPadding;\n utils.insertTitle(svg, \"entityTitleText\", conf.titleTopMargin, diagObj.db.getDiagramTitle());\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n svg.attr(\"viewBox\", `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`);\n};\nconst MERMAID_ERDIAGRAM_UUID = \"28e9f9db-3c8d-5aa5-9faf-44286ae5937c\";\nfunction generateId(str = \"\", prefix = \"\") {\n const simplifiedStr = str.replace(BAD_ID_CHARS_REGEXP, \"\");\n return `${strWithHyphen(prefix)}${strWithHyphen(simplifiedStr)}${v5(\n str,\n MERMAID_ERDIAGRAM_UUID\n )}`;\n}\nfunction strWithHyphen(str = \"\") {\n return str.length > 0 ? `${str}-` : \"\";\n}\nconst erRenderer = {\n setConf,\n draw\n};\nconst getStyles = (options) => `\n .entityBox {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n }\n\n .attributeBoxOdd {\n fill: ${options.attributeBackgroundColorOdd};\n stroke: ${options.nodeBorder};\n }\n\n .attributeBoxEven {\n fill: ${options.attributeBackgroundColorEven};\n stroke: ${options.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${options.tertiaryColor};\n opacity: 0.7;\n background-color: ${options.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${options.lineColor};\n }\n\n .entityTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n } \n #MD_PARENT_START {\n fill: #f5f5f5 !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n }\n #MD_PARENT_END {\n fill: #f5f5f5 !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n }\n \n`;\nconst erStyles = getStyles;\nconst diagram = {\n parser: erParser,\n db: erDb,\n renderer: erRenderer,\n styles: erStyles\n};\nexport {\n diagram\n};\n"],"names":["REGEX","validate","uuid","parse","v","arr","stringToBytes","str","bytes","i","DNS","URL","v35","name","version","hashfunc","generateUUID","value","namespace","buf","offset","_namespace","unsafeStringify","f","s","x","y","z","ROTL","n","sha1","K","H","msg","l","N","M","j","W","t","a","b","c","d","e","T","v5","v5$1","parser","o","k","o2","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","parser2","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","hash","error","input","self","stack","tstack","vstack","lstack","table","TERROR","EOF","args","lexer2","sharedState","yyloc","ranges","lex","token","symbol","state","action","r","yyval","p","len","newState","expected","errStr","lexer","ch","lines","oldLines","past","next","pre","match","indexed_rule","backup","tempMatch","index","rules","condition","yy_","$avoiding_name_collisions","YY_START","Parser","erParser","entities","relationships","Cardinality","Identification","parseDirective","statement","context","type","mermaidAPI","addEntity","log","getEntities","addAttributes","entityName","attribs","entity","addRelationship","entA","rolA","entB","rSpec","rel","getRelationships","clear","clear$1","erDb","getConfig","setAccTitle","getAccTitle","setAccDescription","getAccDescription","setDiagramTitle","getDiagramTitle","ERMarkers","insertMarkers","elem","conf2","marker","erMarkers","BAD_ID_CHARS_REGEXP","conf","entityNameIds","setConf","cnf","keys","key","drawAttributes","groupNode","entityTextNode","attributes","heightPadding","widthPadding","attrFontSize","labelBBox","attributeNodes","hasKeyType","hasComment","maxTypeWidth","maxNameWidth","maxKeyWidth","maxCommentWidth","cumulativeHeight","attrNum","item","attrPrefix","nodeHeight","attributeType","parseGenericTypes","typeNode","nameNode","attributeNode","typeBBox","nameBBox","keyTypeNodeText","keyTypeNode","keyTypeBBox","commentNode","commentNodeBBox","widthPaddingFactor","maxWidth","bBox","spareColumnWidth","heightOffset","attribStyle","alignY","typeRect","nameXOffset","nameRect","keyTypeAndCommentXOffset","keyTypeRect","drawEntities","svgNode","entities2","graph","firstOne","entityId","generateId","textId","textNode","entityWidth","entityHeight","rectBBox","adjustEntities","getEdgeName","addRelationships","relationships2","g","relCnt","drawRelationshipFromLayout","svg","insert","diagObj","edge","lineFunction","line","curveBasis","svgPath","url","labelPoint","labelId","draw","text","id","_version","securityLevel","sandboxElement","select","graphlib.Graph","firstEntity","layout","padding","utils","svgBounds","width","height","configureSvgSize","MERMAID_ERDIAGRAM_UUID","prefix","simplifiedStr","strWithHyphen","erRenderer","getStyles","options","erStyles","diagram"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
\ No newline at end of file
diff --git a/docs/assets/flowDb-8f9fc471-1afb4b26.js b/docs/assets/flowDb-8f9fc471-183d3c57.js
similarity index 99%
rename from docs/assets/flowDb-8f9fc471-1afb4b26.js
rename to docs/assets/flowDb-8f9fc471-183d3c57.js
index 1466a1b4..15d91fe8 100644
--- a/docs/assets/flowDb-8f9fc471-1afb4b26.js
+++ b/docs/assets/flowDb-8f9fc471-183d3c57.js
@@ -1,7 +1,7 @@
-import{c as U2,o as Ne,s as Oe,g as Pe,a as we,b as Ue,p as Me,q as Ge,m as Ke,l as M2,u as G2,r as je,j as We,h as n2}from"./intro.stories-4d939548.js";var P2=function(){var e=function(z1,a,o,T){for(o=o||{},T=z1.length;T--;o[z1[T]]=a);return o},u=[1,9],r=[1,7],i=[1,6],c=[1,8],_=[1,20,21,22,23,38,44,46,48,52,67,68,88,89,90,91,92,93,97,107,108,111,113,114,120,121,122,123,124,125,126,127,128,129],B=[2,10],u1=[1,20],z=[1,21],s1=[1,22],f1=[1,23],Y1=[1,30],Q1=[1,32],X1=[1,33],s2=[1,34],q=[1,63],c1=[1,49],m1=[1,53],o2=[1,36],l2=[1,37],h2=[1,38],A2=[1,39],f2=[1,40],v1=[1,57],V1=[1,64],x1=[1,52],R1=[1,54],L1=[1,56],I1=[1,60],N1=[1,61],p2=[1,41],d2=[1,42],E2=[1,43],b2=[1,44],O1=[1,62],P1=[1,51],w1=[1,55],U1=[1,58],M1=[1,59],G1=[1,50],j2=[1,67],u2=[1,72],Q=[1,20,21,22,23,38,42,44,46,48,52,67,68,88,89,90,91,92,93,97,107,108,111,113,114,120,121,122,123,124,125,126,127,128,129],p1=[1,76],d1=[1,75],E1=[1,77],k2=[20,21,23,82,83],r1=[1,100],l=[1,105],h=[1,108],A=[1,109],i1=[1,102],f=[1,107],p=[1,110],n1=[1,103],d=[1,115],E=[1,114],b=[1,104],k=[1,106],D=[1,111],g=[1,112],F=[1,113],C=[1,116],D2=[20,21,22,23,82,83],t1=[20,21,22,23,54,82,83],Z=[20,21,22,23,40,52,54,56,58,60,62,64,66,67,68,70,72,74,75,77,82,83,93,97,107,108,111,113,114,124,125,126,127,128,129],Y=[20,21,23],W2=[20,21,23,52,67,68,82,83,93,97,107,108,111,113,114,124,125,126,127,128,129],v2=[1,12,20,21,22,23,24,38,42,44,46,48,52,67,68,88,89,90,91,92,93,97,107,108,111,113,114,120,121,122,123,124,125,126,127,128,129],r2=[52,67,68,93,97,107,108,111,113,114,124,125,126,127,128,129],S=[1,151],m=[1,159],v=[1,160],V=[1,161],x=[1,162],R=[1,146],L=[1,147],J=[1,142],$=[1,143],I=[1,154],N=[1,155],O=[1,156],P=[1,157],w=[1,158],U=[1,163],M=[1,164],G=[1,149],K=[1,152],j=[1,148],W=[1,145],V2=[20,21,22,23,38,42,44,46,48,52,67,68,88,89,90,91,92,93,97,107,108,111,113,114,120,121,122,123,124,125,126,127,128,129],Y2=[1,167],$1=[20,21,22,23,26,52,67,68,93,107,108,111,113,114,124,125,126,127,128,129],y=[20,21,22,23,24,26,38,40,41,42,52,57,59,61,63,65,67,68,69,71,73,74,76,78,82,83,88,89,90,91,92,93,94,97,107,108,111,113,114,115,116,124,125,126,127,128,129],H2=[12,21,22,24],z2=[22,108],b1=[1,252],k1=[1,247],D1=[1,248],g1=[1,256],F1=[1,253],C1=[1,250],_1=[1,249],B1=[1,251],T1=[1,254],y1=[1,255],S1=[1,257],H1=[1,275],Q2=[20,21,23,108],o1=[20,21,22,23,67,68,88,104,107,108,111,112,113,114,115],x2={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,openDirective:6,typeDirective:7,closeDirective:8,separator:9,":":10,argDirective:11,open_directive:12,type_directive:13,arg_directive:14,close_directive:15,graphConfig:16,document:17,line:18,statement:19,SEMI:20,NEWLINE:21,SPACE:22,EOF:23,GRAPH:24,NODIR:25,DIR:26,FirstStmtSeperator:27,ending:28,endToken:29,spaceList:30,spaceListNewline:31,verticeStatement:32,styleStatement:33,linkStyleStatement:34,classDefStatement:35,classStatement:36,clickStatement:37,subgraph:38,text:39,SQS:40,SQE:41,end:42,direction:43,acc_title:44,acc_title_value:45,acc_descr:46,acc_descr_value:47,acc_descr_multiline_value:48,link:49,node:50,styledVertex:51,AMP:52,vertex:53,STYLE_SEPARATOR:54,idString:55,DOUBLECIRCLESTART:56,DOUBLECIRCLEEND:57,PS:58,PE:59,"(-":60,"-)":61,STADIUMSTART:62,STADIUMEND:63,SUBROUTINESTART:64,SUBROUTINEEND:65,VERTEX_WITH_PROPS_START:66,ALPHA:67,COLON:68,PIPE:69,CYLINDERSTART:70,CYLINDEREND:71,DIAMOND_START:72,DIAMOND_STOP:73,TAGEND:74,TRAPSTART:75,TRAPEND:76,INVTRAPSTART:77,INVTRAPEND:78,linkStatement:79,arrowText:80,TESTSTR:81,START_LINK:82,LINK:83,textToken:84,STR:85,MD_STR:86,keywords:87,STYLE:88,LINKSTYLE:89,CLASSDEF:90,CLASS:91,CLICK:92,DOWN:93,UP:94,textNoTags:95,textNoTagsToken:96,DEFAULT:97,stylesOpt:98,alphaNum:99,CALLBACKNAME:100,CALLBACKARGS:101,HREF:102,LINK_TARGET:103,HEX:104,numList:105,INTERPOLATE:106,NUM:107,COMMA:108,style:109,styleComponent:110,MINUS:111,UNIT:112,BRKT:113,DOT:114,PCT:115,TAGSTART:116,alphaNumToken:117,idStringToken:118,alphaNumStatement:119,direction_tb:120,direction_bt:121,direction_rl:122,direction_lr:123,PUNCTUATION:124,UNICODE_TEXT:125,PLUS:126,EQUALS:127,MULT:128,UNDERSCORE:129,graphCodeTokens:130,ARROW_CROSS:131,ARROW_POINT:132,ARROW_CIRCLE:133,ARROW_OPEN:134,QUOTE:135,$accept:0,$end:1},terminals_:{2:"error",10:":",12:"open_directive",13:"type_directive",14:"arg_directive",15:"close_directive",20:"SEMI",21:"NEWLINE",22:"SPACE",23:"EOF",24:"GRAPH",25:"NODIR",26:"DIR",38:"subgraph",40:"SQS",41:"SQE",42:"end",44:"acc_title",45:"acc_title_value",46:"acc_descr",47:"acc_descr_value",48:"acc_descr_multiline_value",52:"AMP",54:"STYLE_SEPARATOR",56:"DOUBLECIRCLESTART",57:"DOUBLECIRCLEEND",58:"PS",59:"PE",60:"(-",61:"-)",62:"STADIUMSTART",63:"STADIUMEND",64:"SUBROUTINESTART",65:"SUBROUTINEEND",66:"VERTEX_WITH_PROPS_START",67:"ALPHA",68:"COLON",69:"PIPE",70:"CYLINDERSTART",71:"CYLINDEREND",72:"DIAMOND_START",73:"DIAMOND_STOP",74:"TAGEND",75:"TRAPSTART",76:"TRAPEND",77:"INVTRAPSTART",78:"INVTRAPEND",81:"TESTSTR",82:"START_LINK",83:"LINK",85:"STR",86:"MD_STR",88:"STYLE",89:"LINKSTYLE",90:"CLASSDEF",91:"CLASS",92:"CLICK",93:"DOWN",94:"UP",97:"DEFAULT",100:"CALLBACKNAME",101:"CALLBACKARGS",102:"HREF",103:"LINK_TARGET",104:"HEX",106:"INTERPOLATE",107:"NUM",108:"COMMA",111:"MINUS",112:"UNIT",113:"BRKT",114:"DOT",115:"PCT",116:"TAGSTART",120:"direction_tb",121:"direction_bt",122:"direction_rl",123:"direction_lr",124:"PUNCTUATION",125:"UNICODE_TEXT",126:"PLUS",127:"EQUALS",128:"MULT",129:"UNDERSCORE",131:"ARROW_CROSS",132:"ARROW_POINT",133:"ARROW_CIRCLE",134:"ARROW_OPEN",135:"QUOTE"},productions_:[0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[19,2],[19,2],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[50,1],[50,5],[51,1],[51,3],[53,4],[53,4],[53,6],[53,4],[53,4],[53,4],[53,8],[53,4],[53,4],[53,4],[53,6],[53,4],[53,4],[53,4],[53,4],[53,4],[53,1],[49,2],[49,3],[49,3],[49,1],[49,3],[79,1],[80,3],[39,1],[39,2],[39,1],[39,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[95,1],[95,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[105,1],[105,3],[98,1],[98,3],[109,1],[109,2],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[84,1],[84,1],[84,1],[84,1],[84,1],[84,1],[96,1],[96,1],[96,1],[96,1],[55,1],[55,2],[99,1],[99,2],[119,1],[119,1],[119,1],[119,1],[43,1],[43,1],[43,1],[43,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1]],performAction:function(a,o,T,n,X,t,i2){var s=t.length-1;switch(X){case 5:n.parseDirective("%%{","open_directive");break;case 6:n.parseDirective(t[s],"type_directive");break;case 7:t[s]=t[s].trim().replace(/'/g,'"'),n.parseDirective(t[s],"arg_directive");break;case 8:n.parseDirective("}%%","close_directive","flowchart");break;case 10:this.$=[];break;case 11:(!Array.isArray(t[s])||t[s].length>0)&&t[s-1].push(t[s]),this.$=t[s-1];break;case 12:case 98:case 154:case 156:case 157:this.$=t[s];break;case 19:n.setDirection("TB"),this.$="TB";break;case 20:n.setDirection(t[s-1]),this.$=t[s-1];break;case 35:this.$=t[s-1].nodes;break;case 36:case 37:case 38:case 39:case 40:this.$=[];break;case 41:this.$=n.addSubGraph(t[s-6],t[s-1],t[s-4]);break;case 42:this.$=n.addSubGraph(t[s-3],t[s-1],t[s-3]);break;case 43:this.$=n.addSubGraph(void 0,t[s-1],void 0);break;case 45:this.$=t[s].trim(),n.setAccTitle(this.$);break;case 46:case 47:this.$=t[s].trim(),n.setAccDescription(this.$);break;case 51:n.addLink(t[s-2].stmt,t[s],t[s-1]),this.$={stmt:t[s],nodes:t[s].concat(t[s-2].nodes)};break;case 52:n.addLink(t[s-3].stmt,t[s-1],t[s-2]),this.$={stmt:t[s-1],nodes:t[s-1].concat(t[s-3].nodes)};break;case 53:this.$={stmt:t[s-1],nodes:t[s-1]};break;case 54:this.$={stmt:t[s],nodes:t[s]};break;case 55:this.$=[t[s]];break;case 56:this.$=t[s-4].concat(t[s]);break;case 57:this.$=t[s];break;case 58:this.$=t[s-2],n.setClass(t[s-2],t[s]);break;case 59:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"square");break;case 60:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"doublecircle");break;case 61:this.$=t[s-5],n.addVertex(t[s-5],t[s-2],"circle");break;case 62:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"ellipse");break;case 63:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"stadium");break;case 64:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"subroutine");break;case 65:this.$=t[s-7],n.addVertex(t[s-7],t[s-1],"rect",void 0,void 0,void 0,Object.fromEntries([[t[s-5],t[s-3]]]));break;case 66:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"cylinder");break;case 67:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"round");break;case 68:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"diamond");break;case 69:this.$=t[s-5],n.addVertex(t[s-5],t[s-2],"hexagon");break;case 70:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"odd");break;case 71:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"trapezoid");break;case 72:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"inv_trapezoid");break;case 73:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"lean_right");break;case 74:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"lean_left");break;case 75:this.$=t[s],n.addVertex(t[s]);break;case 76:t[s-1].text=t[s],this.$=t[s-1];break;case 77:case 78:t[s-2].text=t[s-1],this.$=t[s-2];break;case 79:this.$=t[s];break;case 80:var l1=n.destructLink(t[s],t[s-2]);this.$={type:l1.type,stroke:l1.stroke,length:l1.length,text:t[s-1]};break;case 81:var l1=n.destructLink(t[s]);this.$={type:l1.type,stroke:l1.stroke,length:l1.length};break;case 82:this.$=t[s-1];break;case 83:this.$={text:t[s],type:"text"};break;case 84:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 85:this.$={text:t[s],type:"text"};break;case 86:this.$={text:t[s],type:"markdown"};break;case 99:case 155:this.$=t[s-1]+""+t[s];break;case 100:case 101:this.$=t[s-4],n.addClass(t[s-2],t[s]);break;case 102:this.$=t[s-4],n.setClass(t[s-2],t[s]);break;case 103:case 111:this.$=t[s-1],n.setClickEvent(t[s-1],t[s]);break;case 104:case 112:this.$=t[s-3],n.setClickEvent(t[s-3],t[s-2]),n.setTooltip(t[s-3],t[s]);break;case 105:this.$=t[s-2],n.setClickEvent(t[s-2],t[s-1],t[s]);break;case 106:this.$=t[s-4],n.setClickEvent(t[s-4],t[s-3],t[s-2]),n.setTooltip(t[s-4],t[s]);break;case 107:case 113:this.$=t[s-1],n.setLink(t[s-1],t[s]);break;case 108:case 114:this.$=t[s-3],n.setLink(t[s-3],t[s-2]),n.setTooltip(t[s-3],t[s]);break;case 109:case 115:this.$=t[s-3],n.setLink(t[s-3],t[s-2],t[s]);break;case 110:case 116:this.$=t[s-5],n.setLink(t[s-5],t[s-4],t[s]),n.setTooltip(t[s-5],t[s-2]);break;case 117:this.$=t[s-4],n.addVertex(t[s-2],void 0,void 0,t[s]);break;case 118:case 120:this.$=t[s-4],n.updateLink(t[s-2],t[s]);break;case 119:this.$=t[s-4],n.updateLink([t[s-2]],t[s]);break;case 121:this.$=t[s-8],n.updateLinkInterpolate([t[s-6]],t[s-2]),n.updateLink([t[s-6]],t[s]);break;case 122:this.$=t[s-8],n.updateLinkInterpolate(t[s-6],t[s-2]),n.updateLink(t[s-6],t[s]);break;case 123:this.$=t[s-6],n.updateLinkInterpolate([t[s-4]],t[s]);break;case 124:this.$=t[s-6],n.updateLinkInterpolate(t[s-4],t[s]);break;case 125:case 127:this.$=[t[s]];break;case 126:case 128:t[s-2].push(t[s]),this.$=t[s-2];break;case 130:this.$=t[s-1]+t[s];break;case 152:this.$=t[s];break;case 153:this.$=t[s-1]+""+t[s];break;case 158:this.$="v";break;case 159:this.$="-";break;case 160:this.$={stmt:"dir",value:"TB"};break;case 161:this.$={stmt:"dir",value:"BT"};break;case 162:this.$={stmt:"dir",value:"RL"};break;case 163:this.$={stmt:"dir",value:"LR"};break}},table:[{3:1,4:2,5:3,6:5,12:u,16:4,21:r,22:i,24:c},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:u,16:4,21:r,22:i,24:c},e(_,B,{17:11}),{7:12,13:[1,13]},{16:14,21:r,22:i,24:c},{16:15,21:r,22:i,24:c},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:u1,21:z,22:s1,23:f1,32:24,33:25,34:26,35:27,36:28,37:29,38:Y1,43:31,44:Q1,46:X1,48:s2,50:35,51:45,52:q,53:46,55:47,67:c1,68:m1,88:o2,89:l2,90:h2,91:A2,92:f2,93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,118:48,120:p2,121:d2,122:E2,123:b2,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1},{8:65,10:[1,66],15:j2},e([10,15],[2,6]),e(_,[2,17]),e(_,[2,18]),e(_,[2,19]),{20:[1,69],21:[1,70],22:u2,27:68,30:71},e(Q,[2,11]),e(Q,[2,12]),e(Q,[2,13]),e(Q,[2,14]),e(Q,[2,15]),e(Q,[2,16]),{9:73,20:p1,21:d1,23:E1,49:74,79:78,82:[1,79],83:[1,80]},{9:81,20:p1,21:d1,23:E1},{9:82,20:p1,21:d1,23:E1},{9:83,20:p1,21:d1,23:E1},{9:84,20:p1,21:d1,23:E1},{9:85,20:p1,21:d1,23:E1},{9:87,20:p1,21:d1,22:[1,86],23:E1},e(Q,[2,44]),{45:[1,88]},{47:[1,89]},e(Q,[2,47]),e(k2,[2,54],{30:90,22:u2}),{22:[1,91]},{22:[1,92]},{22:[1,93]},{22:[1,94]},{26:r1,52:l,67:h,68:A,85:[1,98],93:i1,99:97,100:[1,95],102:[1,96],107:f,108:p,111:n1,113:d,114:E,117:101,119:99,124:b,125:k,126:D,127:g,128:F,129:C},e(Q,[2,160]),e(Q,[2,161]),e(Q,[2,162]),e(Q,[2,163]),e(D2,[2,55]),e(D2,[2,57],{54:[1,117]}),e(t1,[2,75],{118:130,40:[1,118],52:q,56:[1,119],58:[1,120],60:[1,121],62:[1,122],64:[1,123],66:[1,124],67:c1,68:m1,70:[1,125],72:[1,126],74:[1,127],75:[1,128],77:[1,129],93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1}),e(Z,[2,152]),e(Z,[2,177]),e(Z,[2,178]),e(Z,[2,179]),e(Z,[2,180]),e(Z,[2,181]),e(Z,[2,182]),e(Z,[2,183]),e(Z,[2,184]),e(Z,[2,185]),e(Z,[2,186]),e(Z,[2,187]),e(Z,[2,188]),e(Z,[2,189]),e(Z,[2,190]),e(Z,[2,191]),e(Z,[2,192]),{9:131,20:p1,21:d1,23:E1},{11:132,14:[1,133]},e(Y,[2,8]),e(_,[2,20]),e(_,[2,26]),e(_,[2,27]),{21:[1,134]},e(W2,[2,34],{30:135,22:u2}),e(Q,[2,35]),{50:136,51:45,52:q,53:46,55:47,67:c1,68:m1,93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,118:48,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1},e(v2,[2,48]),e(v2,[2,49]),e(v2,[2,50]),e(r2,[2,79],{80:137,69:[1,139],81:[1,138]}),{22:S,24:m,26:v,38:V,39:140,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e([52,67,68,69,81,93,97,107,108,111,113,114,124,125,126,127,128,129],[2,81]),e(Q,[2,36]),e(Q,[2,37]),e(Q,[2,38]),e(Q,[2,39]),e(Q,[2,40]),{22:S,24:m,26:v,38:V,39:165,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e(V2,B,{17:166}),e(Q,[2,45]),e(Q,[2,46]),e(k2,[2,53],{52:Y2}),{26:r1,52:l,67:h,68:A,93:i1,99:168,104:[1,169],107:f,108:p,111:n1,113:d,114:E,117:101,119:99,124:b,125:k,126:D,127:g,128:F,129:C},{97:[1,170],105:171,107:[1,172]},{26:r1,52:l,67:h,68:A,93:i1,97:[1,173],99:174,107:f,108:p,111:n1,113:d,114:E,117:101,119:99,124:b,125:k,126:D,127:g,128:F,129:C},{26:r1,52:l,67:h,68:A,93:i1,99:175,107:f,108:p,111:n1,113:d,114:E,117:101,119:99,124:b,125:k,126:D,127:g,128:F,129:C},e(Y,[2,103],{22:[1,176],101:[1,177]}),e(Y,[2,107],{22:[1,178]}),e(Y,[2,111],{117:101,119:180,22:[1,179],26:r1,52:l,67:h,68:A,93:i1,107:f,108:p,111:n1,113:d,114:E,124:b,125:k,126:D,127:g,128:F,129:C}),e(Y,[2,113],{22:[1,181]}),e($1,[2,154]),e($1,[2,156]),e($1,[2,157]),e($1,[2,158]),e($1,[2,159]),e(y,[2,164]),e(y,[2,165]),e(y,[2,166]),e(y,[2,167]),e(y,[2,168]),e(y,[2,169]),e(y,[2,170]),e(y,[2,171]),e(y,[2,172]),e(y,[2,173]),e(y,[2,174]),e(y,[2,175]),e(y,[2,176]),{52:q,55:182,67:c1,68:m1,93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,118:48,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1},{22:S,24:m,26:v,38:V,39:183,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:184,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:186,42:x,52:l,58:[1,185],67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:187,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:188,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:189,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{67:[1,190]},{22:S,24:m,26:v,38:V,39:191,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:192,42:x,52:l,67:h,68:A,72:[1,193],74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:194,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:195,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:196,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e(Z,[2,153]),e(H2,[2,3]),{8:197,15:j2},{15:[2,7]},e(_,[2,28]),e(W2,[2,33]),e(k2,[2,51],{30:198,22:u2}),e(r2,[2,76],{22:[1,199]}),{22:[1,200]},{22:S,24:m,26:v,38:V,39:201,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,67:h,68:A,74:R,82:L,83:[1,202],84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e(y,[2,83]),e(y,[2,85]),e(y,[2,86]),e(y,[2,142]),e(y,[2,143]),e(y,[2,144]),e(y,[2,145]),e(y,[2,146]),e(y,[2,147]),e(y,[2,148]),e(y,[2,149]),e(y,[2,150]),e(y,[2,151]),e(y,[2,87]),e(y,[2,88]),e(y,[2,89]),e(y,[2,90]),e(y,[2,91]),e(y,[2,92]),e(y,[2,93]),e(y,[2,94]),e(y,[2,95]),e(y,[2,96]),e(y,[2,97]),{9:205,20:p1,21:d1,22:S,23:E1,24:m,26:v,38:V,40:[1,204],42:x,52:l,67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{18:18,19:19,20:u1,21:z,22:s1,23:f1,32:24,33:25,34:26,35:27,36:28,37:29,38:Y1,42:[1,206],43:31,44:Q1,46:X1,48:s2,50:35,51:45,52:q,53:46,55:47,67:c1,68:m1,88:o2,89:l2,90:h2,91:A2,92:f2,93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,118:48,120:p2,121:d2,122:E2,123:b2,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1},{22:u2,30:207},{22:[1,208],26:r1,52:l,67:h,68:A,93:i1,107:f,108:p,111:n1,113:d,114:E,117:101,119:180,124:b,125:k,126:D,127:g,128:F,129:C},{22:[1,209]},{22:[1,210]},{22:[1,211],108:[1,212]},e(z2,[2,125]),{22:[1,213]},{22:[1,214],26:r1,52:l,67:h,68:A,93:i1,107:f,108:p,111:n1,113:d,114:E,117:101,119:180,124:b,125:k,126:D,127:g,128:F,129:C},{22:[1,215],26:r1,52:l,67:h,68:A,93:i1,107:f,108:p,111:n1,113:d,114:E,117:101,119:180,124:b,125:k,126:D,127:g,128:F,129:C},{85:[1,216]},e(Y,[2,105],{22:[1,217]}),{85:[1,218],103:[1,219]},{85:[1,220]},e($1,[2,155]),{85:[1,221],103:[1,222]},e(D2,[2,58],{118:130,52:q,67:c1,68:m1,93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1}),{22:S,24:m,26:v,38:V,41:[1,223],42:x,52:l,67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,57:[1,224],67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:225,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,59:[1,226],67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,61:[1,227],67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,63:[1,228],67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,65:[1,229],67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{68:[1,230]},{22:S,24:m,26:v,38:V,42:x,52:l,67:h,68:A,71:[1,231],74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,67:h,68:A,73:[1,232],74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:233,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,41:[1,234],42:x,52:l,67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,67:h,68:A,74:R,76:[1,235],78:[1,236],82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,67:h,68:A,74:R,76:[1,238],78:[1,237],82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{9:239,20:p1,21:d1,23:E1},e(k2,[2,52],{52:Y2}),e(r2,[2,78]),e(r2,[2,77]),{22:S,24:m,26:v,38:V,42:x,52:l,67:h,68:A,69:[1,240],74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e(r2,[2,80]),e(y,[2,84]),{22:S,24:m,26:v,38:V,39:241,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e(V2,B,{17:242}),e(Q,[2,43]),{51:243,52:q,53:46,55:47,67:c1,68:m1,93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,118:48,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1},{22:b1,67:k1,68:D1,88:g1,98:244,104:F1,107:C1,109:245,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},{22:b1,67:k1,68:D1,88:g1,98:258,104:F1,107:C1,109:245,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},{22:b1,67:k1,68:D1,88:g1,98:259,104:F1,106:[1,260],107:C1,109:245,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},{22:b1,67:k1,68:D1,88:g1,98:261,104:F1,106:[1,262],107:C1,109:245,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},{107:[1,263]},{22:b1,67:k1,68:D1,88:g1,98:264,104:F1,107:C1,109:245,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},{22:b1,67:k1,68:D1,88:g1,98:265,104:F1,107:C1,109:245,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},{26:r1,52:l,67:h,68:A,93:i1,99:266,107:f,108:p,111:n1,113:d,114:E,117:101,119:99,124:b,125:k,126:D,127:g,128:F,129:C},e(Y,[2,104]),{85:[1,267]},e(Y,[2,108],{22:[1,268]}),e(Y,[2,109]),e(Y,[2,112]),e(Y,[2,114],{22:[1,269]}),e(Y,[2,115]),e(t1,[2,59]),e(t1,[2,60]),{22:S,24:m,26:v,38:V,42:x,52:l,59:[1,270],67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e(t1,[2,67]),e(t1,[2,62]),e(t1,[2,63]),e(t1,[2,64]),{67:[1,271]},e(t1,[2,66]),e(t1,[2,68]),{22:S,24:m,26:v,38:V,42:x,52:l,67:h,68:A,73:[1,272],74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e(t1,[2,70]),e(t1,[2,71]),e(t1,[2,73]),e(t1,[2,72]),e(t1,[2,74]),e(H2,[2,4]),e([22,52,67,68,93,97,107,108,111,113,114,124,125,126,127,128,129],[2,82]),{22:S,24:m,26:v,38:V,41:[1,273],42:x,52:l,67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{18:18,19:19,20:u1,21:z,22:s1,23:f1,32:24,33:25,34:26,35:27,36:28,37:29,38:Y1,42:[1,274],43:31,44:Q1,46:X1,48:s2,50:35,51:45,52:q,53:46,55:47,67:c1,68:m1,88:o2,89:l2,90:h2,91:A2,92:f2,93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,118:48,120:p2,121:d2,122:E2,123:b2,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1},e(D2,[2,56]),e(Y,[2,117],{108:H1}),e(Q2,[2,127],{110:276,22:b1,67:k1,68:D1,88:g1,104:F1,107:C1,111:_1,112:B1,113:T1,114:y1,115:S1}),e(o1,[2,129]),e(o1,[2,131]),e(o1,[2,132]),e(o1,[2,133]),e(o1,[2,134]),e(o1,[2,135]),e(o1,[2,136]),e(o1,[2,137]),e(o1,[2,138]),e(o1,[2,139]),e(o1,[2,140]),e(o1,[2,141]),e(Y,[2,118],{108:H1}),e(Y,[2,119],{108:H1}),{22:[1,277]},e(Y,[2,120],{108:H1}),{22:[1,278]},e(z2,[2,126]),e(Y,[2,100],{108:H1}),e(Y,[2,101],{108:H1}),e(Y,[2,102],{117:101,119:180,26:r1,52:l,67:h,68:A,93:i1,107:f,108:p,111:n1,113:d,114:E,124:b,125:k,126:D,127:g,128:F,129:C}),e(Y,[2,106]),{103:[1,279]},{103:[1,280]},{59:[1,281]},{69:[1,282]},{73:[1,283]},{9:284,20:p1,21:d1,23:E1},e(Q,[2,42]),{22:b1,67:k1,68:D1,88:g1,104:F1,107:C1,109:285,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},e(o1,[2,130]),{26:r1,52:l,67:h,68:A,93:i1,99:286,107:f,108:p,111:n1,113:d,114:E,117:101,119:99,124:b,125:k,126:D,127:g,128:F,129:C},{26:r1,52:l,67:h,68:A,93:i1,99:287,107:f,108:p,111:n1,113:d,114:E,117:101,119:99,124:b,125:k,126:D,127:g,128:F,129:C},e(Y,[2,110]),e(Y,[2,116]),e(t1,[2,61]),{22:S,24:m,26:v,38:V,39:288,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e(t1,[2,69]),e(V2,B,{17:289}),e(Q2,[2,128],{110:276,22:b1,67:k1,68:D1,88:g1,104:F1,107:C1,111:_1,112:B1,113:T1,114:y1,115:S1}),e(Y,[2,123],{117:101,119:180,22:[1,290],26:r1,52:l,67:h,68:A,93:i1,107:f,108:p,111:n1,113:d,114:E,124:b,125:k,126:D,127:g,128:F,129:C}),e(Y,[2,124],{117:101,119:180,22:[1,291],26:r1,52:l,67:h,68:A,93:i1,107:f,108:p,111:n1,113:d,114:E,124:b,125:k,126:D,127:g,128:F,129:C}),{22:S,24:m,26:v,38:V,41:[1,292],42:x,52:l,67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{18:18,19:19,20:u1,21:z,22:s1,23:f1,32:24,33:25,34:26,35:27,36:28,37:29,38:Y1,42:[1,293],43:31,44:Q1,46:X1,48:s2,50:35,51:45,52:q,53:46,55:47,67:c1,68:m1,88:o2,89:l2,90:h2,91:A2,92:f2,93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,118:48,120:p2,121:d2,122:E2,123:b2,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1},{22:b1,67:k1,68:D1,88:g1,98:294,104:F1,107:C1,109:245,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},{22:b1,67:k1,68:D1,88:g1,98:295,104:F1,107:C1,109:245,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},e(t1,[2,65]),e(Q,[2,41]),e(Y,[2,121],{108:H1}),e(Y,[2,122],{108:H1})],defaultActions:{2:[2,1],9:[2,5],10:[2,2],133:[2,7]},parseError:function(a,o){if(o.recoverable)this.trace(a);else{var T=new Error(a);throw T.hash=o,T}},parse:function(a){var o=this,T=[0],n=[],X=[null],t=[],i2=this.table,s="",l1=0,X2=0,xe=2,q2=1,Re=t.slice.call(arguments,1),e1=Object.create(this.lexer),q1={yy:{}};for(var L2 in this.yy)Object.prototype.hasOwnProperty.call(this.yy,L2)&&(q1.yy[L2]=this.yy[L2]);e1.setInput(a,q1.yy),q1.yy.lexer=e1,q1.yy.parser=this,typeof e1.yylloc>"u"&&(e1.yylloc={});var I2=e1.yylloc;t.push(I2);var Le=e1.options&&e1.options.ranges;typeof q1.yy.parseError=="function"?this.parseError=q1.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ie(){var j1;return j1=n.pop()||e1.lex()||q2,typeof j1!="number"&&(j1 instanceof Array&&(n=j1,j1=n.pop()),j1=o.symbols_[j1]||j1),j1}for(var a1,Z1,h1,N2,e2={},g2,K1,Z2,F2;;){if(Z1=T[T.length-1],this.defaultActions[Z1]?h1=this.defaultActions[Z1]:((a1===null||typeof a1>"u")&&(a1=Ie()),h1=i2[Z1]&&i2[Z1][a1]),typeof h1>"u"||!h1.length||!h1[0]){var O2="";F2=[];for(g2 in i2[Z1])this.terminals_[g2]&&g2>xe&&F2.push("'"+this.terminals_[g2]+"'");e1.showPosition?O2="Parse error on line "+(l1+1)+`:
+import{c as U2,o as Ne,s as Oe,g as Pe,a as we,b as Ue,p as Me,q as Ge,m as Ke,l as M2,u as G2,r as je,j as We,h as n2}from"./intro.stories-6bb6b497.js";var P2=function(){var e=function(z1,a,o,T){for(o=o||{},T=z1.length;T--;o[z1[T]]=a);return o},u=[1,9],r=[1,7],i=[1,6],c=[1,8],_=[1,20,21,22,23,38,44,46,48,52,67,68,88,89,90,91,92,93,97,107,108,111,113,114,120,121,122,123,124,125,126,127,128,129],B=[2,10],u1=[1,20],z=[1,21],s1=[1,22],f1=[1,23],Y1=[1,30],Q1=[1,32],X1=[1,33],s2=[1,34],q=[1,63],c1=[1,49],m1=[1,53],o2=[1,36],l2=[1,37],h2=[1,38],A2=[1,39],f2=[1,40],v1=[1,57],V1=[1,64],x1=[1,52],R1=[1,54],L1=[1,56],I1=[1,60],N1=[1,61],p2=[1,41],d2=[1,42],E2=[1,43],b2=[1,44],O1=[1,62],P1=[1,51],w1=[1,55],U1=[1,58],M1=[1,59],G1=[1,50],j2=[1,67],u2=[1,72],Q=[1,20,21,22,23,38,42,44,46,48,52,67,68,88,89,90,91,92,93,97,107,108,111,113,114,120,121,122,123,124,125,126,127,128,129],p1=[1,76],d1=[1,75],E1=[1,77],k2=[20,21,23,82,83],r1=[1,100],l=[1,105],h=[1,108],A=[1,109],i1=[1,102],f=[1,107],p=[1,110],n1=[1,103],d=[1,115],E=[1,114],b=[1,104],k=[1,106],D=[1,111],g=[1,112],F=[1,113],C=[1,116],D2=[20,21,22,23,82,83],t1=[20,21,22,23,54,82,83],Z=[20,21,22,23,40,52,54,56,58,60,62,64,66,67,68,70,72,74,75,77,82,83,93,97,107,108,111,113,114,124,125,126,127,128,129],Y=[20,21,23],W2=[20,21,23,52,67,68,82,83,93,97,107,108,111,113,114,124,125,126,127,128,129],v2=[1,12,20,21,22,23,24,38,42,44,46,48,52,67,68,88,89,90,91,92,93,97,107,108,111,113,114,120,121,122,123,124,125,126,127,128,129],r2=[52,67,68,93,97,107,108,111,113,114,124,125,126,127,128,129],S=[1,151],m=[1,159],v=[1,160],V=[1,161],x=[1,162],R=[1,146],L=[1,147],J=[1,142],$=[1,143],I=[1,154],N=[1,155],O=[1,156],P=[1,157],w=[1,158],U=[1,163],M=[1,164],G=[1,149],K=[1,152],j=[1,148],W=[1,145],V2=[20,21,22,23,38,42,44,46,48,52,67,68,88,89,90,91,92,93,97,107,108,111,113,114,120,121,122,123,124,125,126,127,128,129],Y2=[1,167],$1=[20,21,22,23,26,52,67,68,93,107,108,111,113,114,124,125,126,127,128,129],y=[20,21,22,23,24,26,38,40,41,42,52,57,59,61,63,65,67,68,69,71,73,74,76,78,82,83,88,89,90,91,92,93,94,97,107,108,111,113,114,115,116,124,125,126,127,128,129],H2=[12,21,22,24],z2=[22,108],b1=[1,252],k1=[1,247],D1=[1,248],g1=[1,256],F1=[1,253],C1=[1,250],_1=[1,249],B1=[1,251],T1=[1,254],y1=[1,255],S1=[1,257],H1=[1,275],Q2=[20,21,23,108],o1=[20,21,22,23,67,68,88,104,107,108,111,112,113,114,115],x2={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,openDirective:6,typeDirective:7,closeDirective:8,separator:9,":":10,argDirective:11,open_directive:12,type_directive:13,arg_directive:14,close_directive:15,graphConfig:16,document:17,line:18,statement:19,SEMI:20,NEWLINE:21,SPACE:22,EOF:23,GRAPH:24,NODIR:25,DIR:26,FirstStmtSeperator:27,ending:28,endToken:29,spaceList:30,spaceListNewline:31,verticeStatement:32,styleStatement:33,linkStyleStatement:34,classDefStatement:35,classStatement:36,clickStatement:37,subgraph:38,text:39,SQS:40,SQE:41,end:42,direction:43,acc_title:44,acc_title_value:45,acc_descr:46,acc_descr_value:47,acc_descr_multiline_value:48,link:49,node:50,styledVertex:51,AMP:52,vertex:53,STYLE_SEPARATOR:54,idString:55,DOUBLECIRCLESTART:56,DOUBLECIRCLEEND:57,PS:58,PE:59,"(-":60,"-)":61,STADIUMSTART:62,STADIUMEND:63,SUBROUTINESTART:64,SUBROUTINEEND:65,VERTEX_WITH_PROPS_START:66,ALPHA:67,COLON:68,PIPE:69,CYLINDERSTART:70,CYLINDEREND:71,DIAMOND_START:72,DIAMOND_STOP:73,TAGEND:74,TRAPSTART:75,TRAPEND:76,INVTRAPSTART:77,INVTRAPEND:78,linkStatement:79,arrowText:80,TESTSTR:81,START_LINK:82,LINK:83,textToken:84,STR:85,MD_STR:86,keywords:87,STYLE:88,LINKSTYLE:89,CLASSDEF:90,CLASS:91,CLICK:92,DOWN:93,UP:94,textNoTags:95,textNoTagsToken:96,DEFAULT:97,stylesOpt:98,alphaNum:99,CALLBACKNAME:100,CALLBACKARGS:101,HREF:102,LINK_TARGET:103,HEX:104,numList:105,INTERPOLATE:106,NUM:107,COMMA:108,style:109,styleComponent:110,MINUS:111,UNIT:112,BRKT:113,DOT:114,PCT:115,TAGSTART:116,alphaNumToken:117,idStringToken:118,alphaNumStatement:119,direction_tb:120,direction_bt:121,direction_rl:122,direction_lr:123,PUNCTUATION:124,UNICODE_TEXT:125,PLUS:126,EQUALS:127,MULT:128,UNDERSCORE:129,graphCodeTokens:130,ARROW_CROSS:131,ARROW_POINT:132,ARROW_CIRCLE:133,ARROW_OPEN:134,QUOTE:135,$accept:0,$end:1},terminals_:{2:"error",10:":",12:"open_directive",13:"type_directive",14:"arg_directive",15:"close_directive",20:"SEMI",21:"NEWLINE",22:"SPACE",23:"EOF",24:"GRAPH",25:"NODIR",26:"DIR",38:"subgraph",40:"SQS",41:"SQE",42:"end",44:"acc_title",45:"acc_title_value",46:"acc_descr",47:"acc_descr_value",48:"acc_descr_multiline_value",52:"AMP",54:"STYLE_SEPARATOR",56:"DOUBLECIRCLESTART",57:"DOUBLECIRCLEEND",58:"PS",59:"PE",60:"(-",61:"-)",62:"STADIUMSTART",63:"STADIUMEND",64:"SUBROUTINESTART",65:"SUBROUTINEEND",66:"VERTEX_WITH_PROPS_START",67:"ALPHA",68:"COLON",69:"PIPE",70:"CYLINDERSTART",71:"CYLINDEREND",72:"DIAMOND_START",73:"DIAMOND_STOP",74:"TAGEND",75:"TRAPSTART",76:"TRAPEND",77:"INVTRAPSTART",78:"INVTRAPEND",81:"TESTSTR",82:"START_LINK",83:"LINK",85:"STR",86:"MD_STR",88:"STYLE",89:"LINKSTYLE",90:"CLASSDEF",91:"CLASS",92:"CLICK",93:"DOWN",94:"UP",97:"DEFAULT",100:"CALLBACKNAME",101:"CALLBACKARGS",102:"HREF",103:"LINK_TARGET",104:"HEX",106:"INTERPOLATE",107:"NUM",108:"COMMA",111:"MINUS",112:"UNIT",113:"BRKT",114:"DOT",115:"PCT",116:"TAGSTART",120:"direction_tb",121:"direction_bt",122:"direction_rl",123:"direction_lr",124:"PUNCTUATION",125:"UNICODE_TEXT",126:"PLUS",127:"EQUALS",128:"MULT",129:"UNDERSCORE",131:"ARROW_CROSS",132:"ARROW_POINT",133:"ARROW_CIRCLE",134:"ARROW_OPEN",135:"QUOTE"},productions_:[0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[19,2],[19,2],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[50,1],[50,5],[51,1],[51,3],[53,4],[53,4],[53,6],[53,4],[53,4],[53,4],[53,8],[53,4],[53,4],[53,4],[53,6],[53,4],[53,4],[53,4],[53,4],[53,4],[53,1],[49,2],[49,3],[49,3],[49,1],[49,3],[79,1],[80,3],[39,1],[39,2],[39,1],[39,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[95,1],[95,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[105,1],[105,3],[98,1],[98,3],[109,1],[109,2],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[84,1],[84,1],[84,1],[84,1],[84,1],[84,1],[96,1],[96,1],[96,1],[96,1],[55,1],[55,2],[99,1],[99,2],[119,1],[119,1],[119,1],[119,1],[43,1],[43,1],[43,1],[43,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1],[130,1]],performAction:function(a,o,T,n,X,t,i2){var s=t.length-1;switch(X){case 5:n.parseDirective("%%{","open_directive");break;case 6:n.parseDirective(t[s],"type_directive");break;case 7:t[s]=t[s].trim().replace(/'/g,'"'),n.parseDirective(t[s],"arg_directive");break;case 8:n.parseDirective("}%%","close_directive","flowchart");break;case 10:this.$=[];break;case 11:(!Array.isArray(t[s])||t[s].length>0)&&t[s-1].push(t[s]),this.$=t[s-1];break;case 12:case 98:case 154:case 156:case 157:this.$=t[s];break;case 19:n.setDirection("TB"),this.$="TB";break;case 20:n.setDirection(t[s-1]),this.$=t[s-1];break;case 35:this.$=t[s-1].nodes;break;case 36:case 37:case 38:case 39:case 40:this.$=[];break;case 41:this.$=n.addSubGraph(t[s-6],t[s-1],t[s-4]);break;case 42:this.$=n.addSubGraph(t[s-3],t[s-1],t[s-3]);break;case 43:this.$=n.addSubGraph(void 0,t[s-1],void 0);break;case 45:this.$=t[s].trim(),n.setAccTitle(this.$);break;case 46:case 47:this.$=t[s].trim(),n.setAccDescription(this.$);break;case 51:n.addLink(t[s-2].stmt,t[s],t[s-1]),this.$={stmt:t[s],nodes:t[s].concat(t[s-2].nodes)};break;case 52:n.addLink(t[s-3].stmt,t[s-1],t[s-2]),this.$={stmt:t[s-1],nodes:t[s-1].concat(t[s-3].nodes)};break;case 53:this.$={stmt:t[s-1],nodes:t[s-1]};break;case 54:this.$={stmt:t[s],nodes:t[s]};break;case 55:this.$=[t[s]];break;case 56:this.$=t[s-4].concat(t[s]);break;case 57:this.$=t[s];break;case 58:this.$=t[s-2],n.setClass(t[s-2],t[s]);break;case 59:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"square");break;case 60:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"doublecircle");break;case 61:this.$=t[s-5],n.addVertex(t[s-5],t[s-2],"circle");break;case 62:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"ellipse");break;case 63:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"stadium");break;case 64:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"subroutine");break;case 65:this.$=t[s-7],n.addVertex(t[s-7],t[s-1],"rect",void 0,void 0,void 0,Object.fromEntries([[t[s-5],t[s-3]]]));break;case 66:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"cylinder");break;case 67:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"round");break;case 68:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"diamond");break;case 69:this.$=t[s-5],n.addVertex(t[s-5],t[s-2],"hexagon");break;case 70:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"odd");break;case 71:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"trapezoid");break;case 72:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"inv_trapezoid");break;case 73:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"lean_right");break;case 74:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"lean_left");break;case 75:this.$=t[s],n.addVertex(t[s]);break;case 76:t[s-1].text=t[s],this.$=t[s-1];break;case 77:case 78:t[s-2].text=t[s-1],this.$=t[s-2];break;case 79:this.$=t[s];break;case 80:var l1=n.destructLink(t[s],t[s-2]);this.$={type:l1.type,stroke:l1.stroke,length:l1.length,text:t[s-1]};break;case 81:var l1=n.destructLink(t[s]);this.$={type:l1.type,stroke:l1.stroke,length:l1.length};break;case 82:this.$=t[s-1];break;case 83:this.$={text:t[s],type:"text"};break;case 84:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 85:this.$={text:t[s],type:"text"};break;case 86:this.$={text:t[s],type:"markdown"};break;case 99:case 155:this.$=t[s-1]+""+t[s];break;case 100:case 101:this.$=t[s-4],n.addClass(t[s-2],t[s]);break;case 102:this.$=t[s-4],n.setClass(t[s-2],t[s]);break;case 103:case 111:this.$=t[s-1],n.setClickEvent(t[s-1],t[s]);break;case 104:case 112:this.$=t[s-3],n.setClickEvent(t[s-3],t[s-2]),n.setTooltip(t[s-3],t[s]);break;case 105:this.$=t[s-2],n.setClickEvent(t[s-2],t[s-1],t[s]);break;case 106:this.$=t[s-4],n.setClickEvent(t[s-4],t[s-3],t[s-2]),n.setTooltip(t[s-4],t[s]);break;case 107:case 113:this.$=t[s-1],n.setLink(t[s-1],t[s]);break;case 108:case 114:this.$=t[s-3],n.setLink(t[s-3],t[s-2]),n.setTooltip(t[s-3],t[s]);break;case 109:case 115:this.$=t[s-3],n.setLink(t[s-3],t[s-2],t[s]);break;case 110:case 116:this.$=t[s-5],n.setLink(t[s-5],t[s-4],t[s]),n.setTooltip(t[s-5],t[s-2]);break;case 117:this.$=t[s-4],n.addVertex(t[s-2],void 0,void 0,t[s]);break;case 118:case 120:this.$=t[s-4],n.updateLink(t[s-2],t[s]);break;case 119:this.$=t[s-4],n.updateLink([t[s-2]],t[s]);break;case 121:this.$=t[s-8],n.updateLinkInterpolate([t[s-6]],t[s-2]),n.updateLink([t[s-6]],t[s]);break;case 122:this.$=t[s-8],n.updateLinkInterpolate(t[s-6],t[s-2]),n.updateLink(t[s-6],t[s]);break;case 123:this.$=t[s-6],n.updateLinkInterpolate([t[s-4]],t[s]);break;case 124:this.$=t[s-6],n.updateLinkInterpolate(t[s-4],t[s]);break;case 125:case 127:this.$=[t[s]];break;case 126:case 128:t[s-2].push(t[s]),this.$=t[s-2];break;case 130:this.$=t[s-1]+t[s];break;case 152:this.$=t[s];break;case 153:this.$=t[s-1]+""+t[s];break;case 158:this.$="v";break;case 159:this.$="-";break;case 160:this.$={stmt:"dir",value:"TB"};break;case 161:this.$={stmt:"dir",value:"BT"};break;case 162:this.$={stmt:"dir",value:"RL"};break;case 163:this.$={stmt:"dir",value:"LR"};break}},table:[{3:1,4:2,5:3,6:5,12:u,16:4,21:r,22:i,24:c},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:u,16:4,21:r,22:i,24:c},e(_,B,{17:11}),{7:12,13:[1,13]},{16:14,21:r,22:i,24:c},{16:15,21:r,22:i,24:c},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:u1,21:z,22:s1,23:f1,32:24,33:25,34:26,35:27,36:28,37:29,38:Y1,43:31,44:Q1,46:X1,48:s2,50:35,51:45,52:q,53:46,55:47,67:c1,68:m1,88:o2,89:l2,90:h2,91:A2,92:f2,93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,118:48,120:p2,121:d2,122:E2,123:b2,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1},{8:65,10:[1,66],15:j2},e([10,15],[2,6]),e(_,[2,17]),e(_,[2,18]),e(_,[2,19]),{20:[1,69],21:[1,70],22:u2,27:68,30:71},e(Q,[2,11]),e(Q,[2,12]),e(Q,[2,13]),e(Q,[2,14]),e(Q,[2,15]),e(Q,[2,16]),{9:73,20:p1,21:d1,23:E1,49:74,79:78,82:[1,79],83:[1,80]},{9:81,20:p1,21:d1,23:E1},{9:82,20:p1,21:d1,23:E1},{9:83,20:p1,21:d1,23:E1},{9:84,20:p1,21:d1,23:E1},{9:85,20:p1,21:d1,23:E1},{9:87,20:p1,21:d1,22:[1,86],23:E1},e(Q,[2,44]),{45:[1,88]},{47:[1,89]},e(Q,[2,47]),e(k2,[2,54],{30:90,22:u2}),{22:[1,91]},{22:[1,92]},{22:[1,93]},{22:[1,94]},{26:r1,52:l,67:h,68:A,85:[1,98],93:i1,99:97,100:[1,95],102:[1,96],107:f,108:p,111:n1,113:d,114:E,117:101,119:99,124:b,125:k,126:D,127:g,128:F,129:C},e(Q,[2,160]),e(Q,[2,161]),e(Q,[2,162]),e(Q,[2,163]),e(D2,[2,55]),e(D2,[2,57],{54:[1,117]}),e(t1,[2,75],{118:130,40:[1,118],52:q,56:[1,119],58:[1,120],60:[1,121],62:[1,122],64:[1,123],66:[1,124],67:c1,68:m1,70:[1,125],72:[1,126],74:[1,127],75:[1,128],77:[1,129],93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1}),e(Z,[2,152]),e(Z,[2,177]),e(Z,[2,178]),e(Z,[2,179]),e(Z,[2,180]),e(Z,[2,181]),e(Z,[2,182]),e(Z,[2,183]),e(Z,[2,184]),e(Z,[2,185]),e(Z,[2,186]),e(Z,[2,187]),e(Z,[2,188]),e(Z,[2,189]),e(Z,[2,190]),e(Z,[2,191]),e(Z,[2,192]),{9:131,20:p1,21:d1,23:E1},{11:132,14:[1,133]},e(Y,[2,8]),e(_,[2,20]),e(_,[2,26]),e(_,[2,27]),{21:[1,134]},e(W2,[2,34],{30:135,22:u2}),e(Q,[2,35]),{50:136,51:45,52:q,53:46,55:47,67:c1,68:m1,93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,118:48,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1},e(v2,[2,48]),e(v2,[2,49]),e(v2,[2,50]),e(r2,[2,79],{80:137,69:[1,139],81:[1,138]}),{22:S,24:m,26:v,38:V,39:140,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e([52,67,68,69,81,93,97,107,108,111,113,114,124,125,126,127,128,129],[2,81]),e(Q,[2,36]),e(Q,[2,37]),e(Q,[2,38]),e(Q,[2,39]),e(Q,[2,40]),{22:S,24:m,26:v,38:V,39:165,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e(V2,B,{17:166}),e(Q,[2,45]),e(Q,[2,46]),e(k2,[2,53],{52:Y2}),{26:r1,52:l,67:h,68:A,93:i1,99:168,104:[1,169],107:f,108:p,111:n1,113:d,114:E,117:101,119:99,124:b,125:k,126:D,127:g,128:F,129:C},{97:[1,170],105:171,107:[1,172]},{26:r1,52:l,67:h,68:A,93:i1,97:[1,173],99:174,107:f,108:p,111:n1,113:d,114:E,117:101,119:99,124:b,125:k,126:D,127:g,128:F,129:C},{26:r1,52:l,67:h,68:A,93:i1,99:175,107:f,108:p,111:n1,113:d,114:E,117:101,119:99,124:b,125:k,126:D,127:g,128:F,129:C},e(Y,[2,103],{22:[1,176],101:[1,177]}),e(Y,[2,107],{22:[1,178]}),e(Y,[2,111],{117:101,119:180,22:[1,179],26:r1,52:l,67:h,68:A,93:i1,107:f,108:p,111:n1,113:d,114:E,124:b,125:k,126:D,127:g,128:F,129:C}),e(Y,[2,113],{22:[1,181]}),e($1,[2,154]),e($1,[2,156]),e($1,[2,157]),e($1,[2,158]),e($1,[2,159]),e(y,[2,164]),e(y,[2,165]),e(y,[2,166]),e(y,[2,167]),e(y,[2,168]),e(y,[2,169]),e(y,[2,170]),e(y,[2,171]),e(y,[2,172]),e(y,[2,173]),e(y,[2,174]),e(y,[2,175]),e(y,[2,176]),{52:q,55:182,67:c1,68:m1,93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,118:48,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1},{22:S,24:m,26:v,38:V,39:183,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:184,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:186,42:x,52:l,58:[1,185],67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:187,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:188,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:189,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{67:[1,190]},{22:S,24:m,26:v,38:V,39:191,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:192,42:x,52:l,67:h,68:A,72:[1,193],74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:194,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:195,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:196,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e(Z,[2,153]),e(H2,[2,3]),{8:197,15:j2},{15:[2,7]},e(_,[2,28]),e(W2,[2,33]),e(k2,[2,51],{30:198,22:u2}),e(r2,[2,76],{22:[1,199]}),{22:[1,200]},{22:S,24:m,26:v,38:V,39:201,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,67:h,68:A,74:R,82:L,83:[1,202],84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e(y,[2,83]),e(y,[2,85]),e(y,[2,86]),e(y,[2,142]),e(y,[2,143]),e(y,[2,144]),e(y,[2,145]),e(y,[2,146]),e(y,[2,147]),e(y,[2,148]),e(y,[2,149]),e(y,[2,150]),e(y,[2,151]),e(y,[2,87]),e(y,[2,88]),e(y,[2,89]),e(y,[2,90]),e(y,[2,91]),e(y,[2,92]),e(y,[2,93]),e(y,[2,94]),e(y,[2,95]),e(y,[2,96]),e(y,[2,97]),{9:205,20:p1,21:d1,22:S,23:E1,24:m,26:v,38:V,40:[1,204],42:x,52:l,67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{18:18,19:19,20:u1,21:z,22:s1,23:f1,32:24,33:25,34:26,35:27,36:28,37:29,38:Y1,42:[1,206],43:31,44:Q1,46:X1,48:s2,50:35,51:45,52:q,53:46,55:47,67:c1,68:m1,88:o2,89:l2,90:h2,91:A2,92:f2,93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,118:48,120:p2,121:d2,122:E2,123:b2,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1},{22:u2,30:207},{22:[1,208],26:r1,52:l,67:h,68:A,93:i1,107:f,108:p,111:n1,113:d,114:E,117:101,119:180,124:b,125:k,126:D,127:g,128:F,129:C},{22:[1,209]},{22:[1,210]},{22:[1,211],108:[1,212]},e(z2,[2,125]),{22:[1,213]},{22:[1,214],26:r1,52:l,67:h,68:A,93:i1,107:f,108:p,111:n1,113:d,114:E,117:101,119:180,124:b,125:k,126:D,127:g,128:F,129:C},{22:[1,215],26:r1,52:l,67:h,68:A,93:i1,107:f,108:p,111:n1,113:d,114:E,117:101,119:180,124:b,125:k,126:D,127:g,128:F,129:C},{85:[1,216]},e(Y,[2,105],{22:[1,217]}),{85:[1,218],103:[1,219]},{85:[1,220]},e($1,[2,155]),{85:[1,221],103:[1,222]},e(D2,[2,58],{118:130,52:q,67:c1,68:m1,93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1}),{22:S,24:m,26:v,38:V,41:[1,223],42:x,52:l,67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,57:[1,224],67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:225,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,59:[1,226],67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,61:[1,227],67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,63:[1,228],67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,65:[1,229],67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{68:[1,230]},{22:S,24:m,26:v,38:V,42:x,52:l,67:h,68:A,71:[1,231],74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,67:h,68:A,73:[1,232],74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,39:233,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,41:[1,234],42:x,52:l,67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,67:h,68:A,74:R,76:[1,235],78:[1,236],82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{22:S,24:m,26:v,38:V,42:x,52:l,67:h,68:A,74:R,76:[1,238],78:[1,237],82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{9:239,20:p1,21:d1,23:E1},e(k2,[2,52],{52:Y2}),e(r2,[2,78]),e(r2,[2,77]),{22:S,24:m,26:v,38:V,42:x,52:l,67:h,68:A,69:[1,240],74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e(r2,[2,80]),e(y,[2,84]),{22:S,24:m,26:v,38:V,39:241,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e(V2,B,{17:242}),e(Q,[2,43]),{51:243,52:q,53:46,55:47,67:c1,68:m1,93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,118:48,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1},{22:b1,67:k1,68:D1,88:g1,98:244,104:F1,107:C1,109:245,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},{22:b1,67:k1,68:D1,88:g1,98:258,104:F1,107:C1,109:245,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},{22:b1,67:k1,68:D1,88:g1,98:259,104:F1,106:[1,260],107:C1,109:245,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},{22:b1,67:k1,68:D1,88:g1,98:261,104:F1,106:[1,262],107:C1,109:245,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},{107:[1,263]},{22:b1,67:k1,68:D1,88:g1,98:264,104:F1,107:C1,109:245,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},{22:b1,67:k1,68:D1,88:g1,98:265,104:F1,107:C1,109:245,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},{26:r1,52:l,67:h,68:A,93:i1,99:266,107:f,108:p,111:n1,113:d,114:E,117:101,119:99,124:b,125:k,126:D,127:g,128:F,129:C},e(Y,[2,104]),{85:[1,267]},e(Y,[2,108],{22:[1,268]}),e(Y,[2,109]),e(Y,[2,112]),e(Y,[2,114],{22:[1,269]}),e(Y,[2,115]),e(t1,[2,59]),e(t1,[2,60]),{22:S,24:m,26:v,38:V,42:x,52:l,59:[1,270],67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e(t1,[2,67]),e(t1,[2,62]),e(t1,[2,63]),e(t1,[2,64]),{67:[1,271]},e(t1,[2,66]),e(t1,[2,68]),{22:S,24:m,26:v,38:V,42:x,52:l,67:h,68:A,73:[1,272],74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e(t1,[2,70]),e(t1,[2,71]),e(t1,[2,73]),e(t1,[2,72]),e(t1,[2,74]),e(H2,[2,4]),e([22,52,67,68,93,97,107,108,111,113,114,124,125,126,127,128,129],[2,82]),{22:S,24:m,26:v,38:V,41:[1,273],42:x,52:l,67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{18:18,19:19,20:u1,21:z,22:s1,23:f1,32:24,33:25,34:26,35:27,36:28,37:29,38:Y1,42:[1,274],43:31,44:Q1,46:X1,48:s2,50:35,51:45,52:q,53:46,55:47,67:c1,68:m1,88:o2,89:l2,90:h2,91:A2,92:f2,93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,118:48,120:p2,121:d2,122:E2,123:b2,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1},e(D2,[2,56]),e(Y,[2,117],{108:H1}),e(Q2,[2,127],{110:276,22:b1,67:k1,68:D1,88:g1,104:F1,107:C1,111:_1,112:B1,113:T1,114:y1,115:S1}),e(o1,[2,129]),e(o1,[2,131]),e(o1,[2,132]),e(o1,[2,133]),e(o1,[2,134]),e(o1,[2,135]),e(o1,[2,136]),e(o1,[2,137]),e(o1,[2,138]),e(o1,[2,139]),e(o1,[2,140]),e(o1,[2,141]),e(Y,[2,118],{108:H1}),e(Y,[2,119],{108:H1}),{22:[1,277]},e(Y,[2,120],{108:H1}),{22:[1,278]},e(z2,[2,126]),e(Y,[2,100],{108:H1}),e(Y,[2,101],{108:H1}),e(Y,[2,102],{117:101,119:180,26:r1,52:l,67:h,68:A,93:i1,107:f,108:p,111:n1,113:d,114:E,124:b,125:k,126:D,127:g,128:F,129:C}),e(Y,[2,106]),{103:[1,279]},{103:[1,280]},{59:[1,281]},{69:[1,282]},{73:[1,283]},{9:284,20:p1,21:d1,23:E1},e(Q,[2,42]),{22:b1,67:k1,68:D1,88:g1,104:F1,107:C1,109:285,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},e(o1,[2,130]),{26:r1,52:l,67:h,68:A,93:i1,99:286,107:f,108:p,111:n1,113:d,114:E,117:101,119:99,124:b,125:k,126:D,127:g,128:F,129:C},{26:r1,52:l,67:h,68:A,93:i1,99:287,107:f,108:p,111:n1,113:d,114:E,117:101,119:99,124:b,125:k,126:D,127:g,128:F,129:C},e(Y,[2,110]),e(Y,[2,116]),e(t1,[2,61]),{22:S,24:m,26:v,38:V,39:288,42:x,52:l,67:h,68:A,74:R,82:L,84:141,85:J,86:$,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},e(t1,[2,69]),e(V2,B,{17:289}),e(Q2,[2,128],{110:276,22:b1,67:k1,68:D1,88:g1,104:F1,107:C1,111:_1,112:B1,113:T1,114:y1,115:S1}),e(Y,[2,123],{117:101,119:180,22:[1,290],26:r1,52:l,67:h,68:A,93:i1,107:f,108:p,111:n1,113:d,114:E,124:b,125:k,126:D,127:g,128:F,129:C}),e(Y,[2,124],{117:101,119:180,22:[1,291],26:r1,52:l,67:h,68:A,93:i1,107:f,108:p,111:n1,113:d,114:E,124:b,125:k,126:D,127:g,128:F,129:C}),{22:S,24:m,26:v,38:V,41:[1,292],42:x,52:l,67:h,68:A,74:R,82:L,84:203,87:153,88:I,89:N,90:O,91:P,92:w,93:U,94:M,96:144,97:G,107:f,108:p,111:K,113:d,114:E,115:j,116:W,117:150,124:b,125:k,126:D,127:g,128:F,129:C},{18:18,19:19,20:u1,21:z,22:s1,23:f1,32:24,33:25,34:26,35:27,36:28,37:29,38:Y1,42:[1,293],43:31,44:Q1,46:X1,48:s2,50:35,51:45,52:q,53:46,55:47,67:c1,68:m1,88:o2,89:l2,90:h2,91:A2,92:f2,93:v1,97:V1,107:x1,108:R1,111:L1,113:I1,114:N1,118:48,120:p2,121:d2,122:E2,123:b2,124:O1,125:P1,126:w1,127:U1,128:M1,129:G1},{22:b1,67:k1,68:D1,88:g1,98:294,104:F1,107:C1,109:245,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},{22:b1,67:k1,68:D1,88:g1,98:295,104:F1,107:C1,109:245,110:246,111:_1,112:B1,113:T1,114:y1,115:S1},e(t1,[2,65]),e(Q,[2,41]),e(Y,[2,121],{108:H1}),e(Y,[2,122],{108:H1})],defaultActions:{2:[2,1],9:[2,5],10:[2,2],133:[2,7]},parseError:function(a,o){if(o.recoverable)this.trace(a);else{var T=new Error(a);throw T.hash=o,T}},parse:function(a){var o=this,T=[0],n=[],X=[null],t=[],i2=this.table,s="",l1=0,X2=0,xe=2,q2=1,Re=t.slice.call(arguments,1),e1=Object.create(this.lexer),q1={yy:{}};for(var L2 in this.yy)Object.prototype.hasOwnProperty.call(this.yy,L2)&&(q1.yy[L2]=this.yy[L2]);e1.setInput(a,q1.yy),q1.yy.lexer=e1,q1.yy.parser=this,typeof e1.yylloc>"u"&&(e1.yylloc={});var I2=e1.yylloc;t.push(I2);var Le=e1.options&&e1.options.ranges;typeof q1.yy.parseError=="function"?this.parseError=q1.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ie(){var j1;return j1=n.pop()||e1.lex()||q2,typeof j1!="number"&&(j1 instanceof Array&&(n=j1,j1=n.pop()),j1=o.symbols_[j1]||j1),j1}for(var a1,Z1,h1,N2,e2={},g2,K1,Z2,F2;;){if(Z1=T[T.length-1],this.defaultActions[Z1]?h1=this.defaultActions[Z1]:((a1===null||typeof a1>"u")&&(a1=Ie()),h1=i2[Z1]&&i2[Z1][a1]),typeof h1>"u"||!h1.length||!h1[0]){var O2="";F2=[];for(g2 in i2[Z1])this.terminals_[g2]&&g2>xe&&F2.push("'"+this.terminals_[g2]+"'");e1.showPosition?O2="Parse error on line "+(l1+1)+`:
`+e1.showPosition()+`
Expecting `+F2.join(", ")+", got '"+(this.terminals_[a1]||a1)+"'":O2="Parse error on line "+(l1+1)+": Unexpected "+(a1==q2?"end of input":"'"+(this.terminals_[a1]||a1)+"'"),this.parseError(O2,{text:e1.match,token:this.terminals_[a1]||a1,line:e1.yylineno,loc:I2,expected:F2})}if(h1[0]instanceof Array&&h1.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Z1+", token: "+a1);switch(h1[0]){case 1:T.push(a1),X.push(e1.yytext),t.push(e1.yylloc),T.push(h1[1]),a1=null,X2=e1.yyleng,s=e1.yytext,l1=e1.yylineno,I2=e1.yylloc;break;case 2:if(K1=this.productions_[h1[1]][1],e2.$=X[X.length-K1],e2._$={first_line:t[t.length-(K1||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(K1||1)].first_column,last_column:t[t.length-1].last_column},Le&&(e2._$.range=[t[t.length-(K1||1)].range[0],t[t.length-1].range[1]]),N2=this.performAction.apply(e2,[s,X2,l1,q1.yy,h1[1],X,t].concat(Re)),typeof N2<"u")return N2;K1&&(T=T.slice(0,-1*K1*2),X=X.slice(0,-1*K1),t=t.slice(0,-1*K1)),T.push(this.productions_[h1[1]][0]),X.push(e2.$),t.push(e2._$),Z2=i2[T[T.length-2]][T[T.length-1]],T.push(Z2);break;case 3:return!0}}return!0}},Ve=function(){var z1={EOF:1,parseError:function(o,T){if(this.yy.parser)this.yy.parser.parseError(o,T);else throw new Error(o)},setInput:function(a,o){return this.yy=o||this.yy||{},this._input=a,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var o=a.match(/(?:\r\n?|\n).*/g);return o?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var o=a.length,T=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-o),this.offset-=o;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),T.length-1&&(this.yylineno-=T.length-1);var X=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:T?(T.length===n.length?this.yylloc.first_column:0)+n[n.length-T.length].length-T[0].length:this.yylloc.first_column-o},this.options.ranges&&(this.yylloc.range=[X[0],X[0]+this.yyleng-o]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),o=new Array(a.length+1).join("-");return a+this.upcomingInput()+`
`+o+"^"},test_match:function(a,o){var T,n,X;if(this.options.backtrack_lexer&&(X={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(X.yylloc.range=this.yylloc.range.slice(0))),n=a[0].match(/(?:\r\n?|\n).*/g),n&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+a[0].length},this.yytext+=a[0],this.match+=a[0],this.matches=a,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(a[0].length),this.matched+=a[0],T=this.performAction.call(this,this.yy,this,o,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),T)return T;if(this._backtrack){for(var t in X)this[t]=X[t];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,o,T,n;this._more||(this.yytext="",this.match="");for(var X=this._currentRules(),t=0;to[0].length)){if(o=T,n=t,this.options.backtrack_lexer){if(a=this.test_match(T,X[t]),a!==!1)return a;if(this._backtrack){o=!1;continue}else return!1}else if(!this.options.flex)break}return o?(a=this.test_match(o,X[n]),a!==!1?a:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var o=this.next();return o||this.lex()},begin:function(o){this.conditionStack.push(o)},popState:function(){var o=this.conditionStack.length-1;return o>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(o){return o=this.conditionStack.length-1-Math.abs(o||0),o>=0?this.conditionStack[o]:"INITIAL"},pushState:function(o){this.begin(o)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(o,T,n,X){switch(n){case 0:return this.begin("open_directive"),12;case 1:return this.begin("type_directive"),13;case 2:return this.popState(),this.begin("arg_directive"),10;case 3:return this.popState(),this.popState(),15;case 4:return 14;case 5:return this.begin("acc_title"),44;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),46;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:this.begin("md_string");break;case 13:return"MD_STR";case 14:this.popState();break;case 15:this.begin("string");break;case 16:this.popState();break;case 17:return"STR";case 18:return 88;case 19:return 97;case 20:return 89;case 21:return 106;case 22:return 90;case 23:return 91;case 24:this.begin("href");break;case 25:this.popState();break;case 26:return 102;case 27:this.begin("callbackname");break;case 28:this.popState();break;case 29:this.popState(),this.begin("callbackargs");break;case 30:return 100;case 31:this.popState();break;case 32:return 101;case 33:this.begin("click");break;case 34:this.popState();break;case 35:return 92;case 36:return o.lex.firstGraph()&&this.begin("dir"),24;case 37:return o.lex.firstGraph()&&this.begin("dir"),24;case 38:return o.lex.firstGraph()&&this.begin("dir"),24;case 39:return 38;case 40:return 42;case 41:return 103;case 42:return 103;case 43:return 103;case 44:return 103;case 45:return this.popState(),25;case 46:return this.popState(),26;case 47:return this.popState(),26;case 48:return this.popState(),26;case 49:return this.popState(),26;case 50:return this.popState(),26;case 51:return this.popState(),26;case 52:return this.popState(),26;case 53:return this.popState(),26;case 54:return this.popState(),26;case 55:return this.popState(),26;case 56:return 120;case 57:return 121;case 58:return 122;case 59:return 123;case 60:return 107;case 61:return 113;case 62:return 54;case 63:return 68;case 64:return 52;case 65:return 20;case 66:return 108;case 67:return 128;case 68:return 83;case 69:return 83;case 70:return 83;case 71:return 83;case 72:return 82;case 73:return 82;case 74:return 82;case 75:return 60;case 76:return 61;case 77:return 62;case 78:return 63;case 79:return 64;case 80:return 65;case 81:return 66;case 82:return 70;case 83:return 71;case 84:return 56;case 85:return 57;case 86:return 111;case 87:return 114;case 88:return 129;case 89:return 126;case 90:return 115;case 91:return 127;case 92:return 127;case 93:return 116;case 94:return 74;case 95:return 94;case 96:return"SEP";case 97:return 93;case 98:return 67;case 99:return 76;case 100:return 75;case 101:return 78;case 102:return 77;case 103:return 124;case 104:return 125;case 105:return 69;case 106:return 58;case 107:return 59;case 108:return 40;case 109:return 41;case 110:return 72;case 111:return 73;case 112:return 135;case 113:return 21;case 114:return 22;case 115:return 23}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\])/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[31,32],inclusive:!1},callbackname:{rules:[28,29,30],inclusive:!1},href:{rules:[25,26],inclusive:!1},click:{rules:[34,35],inclusive:!1},vertex:{rules:[],inclusive:!1},dir:{rules:[45,46,47,48,49,50,51,52,53,54,55],inclusive:!1},acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},md_string:{rules:[13,14],inclusive:!1},string:{rules:[16,17],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,15,18,19,20,21,22,23,24,27,33,36,37,38,39,40,41,42,43,44,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115],inclusive:!0}}};return z1}();x2.lexer=Ve;function R2(){this.yy={}}return R2.prototype=x2,x2.Parser=R2,new R2}();P2.parser=P2;const et=P2,Ye="flowchart-";let J2=0,K2=U2(),H={},J1=[],t2={},W1=[],_2={},B2={},C2=0,w2=!0,A1,T2,y2=[];const S2=e=>We.sanitizeText(e,K2),$2=function(e,u,r){Ke.parseDirective(this,e,u,r)},c2=function(e){const u=Object.keys(H);for(const r of u)if(H[r].id===e)return H[r].domId;return e},ee=function(e,u,r,i,c,_,B={}){let u1,z=e;z!==void 0&&z.trim().length!==0&&(H[z]===void 0&&(H[z]={id:z,labelType:"text",domId:Ye+z+"-"+J2,styles:[],classes:[]}),J2++,u!==void 0?(K2=U2(),u1=S2(u.text.trim()),H[z].labelType=u.type,u1[0]==='"'&&u1[u1.length-1]==='"'&&(u1=u1.substring(1,u1.length-1)),H[z].text=u1):H[z].text===void 0&&(H[z].text=e),r!==void 0&&(H[z].type=r),i!=null&&i.forEach(function(s1){H[z].styles.push(s1)}),c!=null&&c.forEach(function(s1){H[z].classes.push(s1)}),_!==void 0&&(H[z].dir=_),H[z].props===void 0?H[z].props=B:B!==void 0&&Object.assign(H[z].props,B))},te=function(e,u,r){const _={start:e,end:u,type:void 0,text:"",labelType:"text"};M2.info("abc78 Got edge...",_);const B=r.text;B!==void 0&&(_.text=S2(B.text.trim()),_.text[0]==='"'&&_.text[_.text.length-1]==='"'&&(_.text=_.text.substring(1,_.text.length-1)),_.labelType=B.type),r!==void 0&&(_.type=r.type,_.stroke=r.stroke,_.length=r.length),J1.push(_)},se=function(e,u,r){M2.info("addLink (abc78)",e,u,r);let i,c;for(i=0;i/)&&(A1="LR"),A1.match(/.*v/)&&(A1="TB"),A1==="TD"&&(A1="TB")},m2=function(e,u){e.split(",").forEach(function(r){let i=r;H[i]!==void 0&&H[i].classes.push(u),_2[i]!==void 0&&_2[i].classes.push(u)})},He=function(e,u){e.split(",").forEach(function(r){u!==void 0&&(B2[T2==="gen-1"?c2(r):r]=S2(u))})},ze=function(e,u,r){let i=c2(e);if(U2().securityLevel!=="loose"||u===void 0)return;let c=[];if(typeof r=="string"){c=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let _=0;_")),c.classed("hover",!0)}).on("mouseout",function(){u.transition().duration(500).style("opacity",0),n2(this).classed("hover",!1)})};y2.push(de);const Ee=function(e="gen-1"){H={},t2={},J1=[],y2=[de],W1=[],_2={},C2=0,B2={},w2=!0,T2=e,je()},be=e=>{T2=e||"gen-2"},ke=function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},De=function(e,u,r){let i=e.text.trim(),c=r.text;e===r&&r.text.match(/\s/)&&(i=void 0);function _(f1){const Y1={boolean:{},number:{},string:{}},Q1=[];let X1;return{nodeList:f1.filter(function(q){const c1=typeof q;return q.stmt&&q.stmt==="dir"?(X1=q.value,!1):q.trim()===""?!1:c1 in Y1?Y1[c1].hasOwnProperty(q)?!1:Y1[c1][q]=!0:Q1.includes(q)?!1:Q1.push(q)}),dir:X1}}let B=[];const{nodeList:u1,dir:z}=_(B.concat.apply(B,u));if(B=u1,T2==="gen-1")for(let f1=0;f12e3)return;if(ge[a2]=u,W1[u].id===e)return{result:!0,count:0};let i=0,c=1;for(;i=0){const B=Fe(e,_);if(B.result)return{result:!0,count:c+B.count};c=c+B.count}i=i+1}return{result:!1,count:c}},Ce=function(e){return ge[e]},_e=function(){a2=-1,W1.length>0&&Fe("none",W1.length-1)},Be=function(){return W1},Te=()=>w2?(w2=!1,!0):!1,Xe=e=>{let u=e.trim(),r="arrow_open";switch(u[0]){case"<":r="arrow_point",u=u.slice(1);break;case"x":r="arrow_cross",u=u.slice(1);break;case"o":r="arrow_circle",u=u.slice(1);break}let i="normal";return u.includes("=")&&(i="thick"),u.includes(".")&&(i="dotted"),{type:r,stroke:i}},qe=(e,u)=>{const r=u.length;let i=0;for(let c=0;c{const u=e.trim();let r=u.slice(0,-1),i="arrow_open";switch(u.slice(-1)){case"x":i="arrow_cross",u[0]==="x"&&(i="double_"+i,r=r.slice(1));break;case">":i="arrow_point",u[0]==="<"&&(i="double_"+i,r=r.slice(1));break;case"o":i="arrow_circle",u[0]==="o"&&(i="double_"+i,r=r.slice(1));break}let c="normal",_=r.length-1;r[0]==="="&&(c="thick"),r[0]==="~"&&(c="invisible");let B=qe(".",r);return B&&(c="dotted",_=B),{type:i,stroke:c,length:_}},ye=(e,u)=>{const r=Ze(e);let i;if(u){if(i=Xe(u),i.stroke!==r.stroke)return{type:"INVALID",stroke:"INVALID"};if(i.type==="arrow_open")i.type=r.type;else{if(i.type!==r.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return i.type==="double_arrow"&&(i.type="double_arrow_point"),i.length=r.length,i}return r},Se=(e,u)=>{let r=!1;return e.forEach(i=>{i.nodes.indexOf(u)>=0&&(r=!0)}),r},me=(e,u)=>{const r=[];return e.nodes.forEach((i,c)=>{Se(u,i)||r.push(e.nodes[c])}),{nodes:r}},ve={firstGraph:Te},Je={parseDirective:$2,defaultConfig:()=>Ne.flowchart,setAccTitle:Oe,getAccTitle:Pe,getAccDescription:we,setAccDescription:Ue,addVertex:ee,lookUpDomId:c2,addLink:se,updateLinkInterpolate:ue,updateLink:re,addClass:ie,setDirection:ne,setClass:m2,setTooltip:He,getTooltip:ce,setClickEvent:oe,setLink:ae,bindFunctions:le,getDirection:he,getVertices:Ae,getEdges:fe,getClasses:pe,clear:Ee,setGen:be,defaultStyle:ke,addSubGraph:De,getDepthFirstPos:Ce,indexNodes:_e,getSubGraphs:Be,destructLink:ye,lex:ve,exists:Se,makeUniq:me,setDiagramTitle:Me,getDiagramTitle:Ge},tt=Object.freeze(Object.defineProperty({__proto__:null,addClass:ie,addLink:se,addSingleLink:te,addSubGraph:De,addVertex:ee,bindFunctions:le,clear:Ee,default:Je,defaultStyle:ke,destructLink:ye,firstGraph:Te,getClasses:pe,getDepthFirstPos:Ce,getDirection:he,getEdges:fe,getSubGraphs:Be,getTooltip:ce,getVertices:Ae,indexNodes:_e,lex:ve,lookUpDomId:c2,parseDirective:$2,setClass:m2,setClickEvent:oe,setDirection:ne,setGen:be,setLink:ae,updateLink:re,updateLinkInterpolate:ue},Symbol.toStringTag,{value:"Module"}));export{tt as d,Je as f,et as p};
-//# sourceMappingURL=flowDb-8f9fc471-1afb4b26.js.map
+//# sourceMappingURL=flowDb-8f9fc471-183d3c57.js.map
diff --git a/docs/assets/flowDb-8f9fc471-1afb4b26.js.map b/docs/assets/flowDb-8f9fc471-183d3c57.js.map
similarity index 99%
rename from docs/assets/flowDb-8f9fc471-1afb4b26.js.map
rename to docs/assets/flowDb-8f9fc471-183d3c57.js.map
index 58455852..dfa5a905 100644
--- a/docs/assets/flowDb-8f9fc471-1afb4b26.js.map
+++ b/docs/assets/flowDb-8f9fc471-183d3c57.js.map
@@ -1 +1 @@
-{"version":3,"file":"flowDb-8f9fc471-1afb4b26.js","sources":["../../node_modules/mermaid/dist/flowDb-8f9fc471.js"],"sourcesContent":["import { select } from \"d3\";\nimport { G as defaultConfig, s as setAccTitle, g as getAccTitle, a as getAccDescription, b as setAccDescription, r as setDiagramTitle, t as getDiagramTitle, c as getConfig, m as mermaidAPI, l as log, u as utils, v as clear$1, e as common } from \"./mermaid-a98f434b.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 9], $V1 = [1, 7], $V2 = [1, 6], $V3 = [1, 8], $V4 = [1, 20, 21, 22, 23, 38, 44, 46, 48, 52, 67, 68, 88, 89, 90, 91, 92, 93, 97, 107, 108, 111, 113, 114, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], $V5 = [2, 10], $V6 = [1, 20], $V7 = [1, 21], $V8 = [1, 22], $V9 = [1, 23], $Va = [1, 30], $Vb = [1, 32], $Vc = [1, 33], $Vd = [1, 34], $Ve = [1, 63], $Vf = [1, 49], $Vg = [1, 53], $Vh = [1, 36], $Vi = [1, 37], $Vj = [1, 38], $Vk = [1, 39], $Vl = [1, 40], $Vm = [1, 57], $Vn = [1, 64], $Vo = [1, 52], $Vp = [1, 54], $Vq = [1, 56], $Vr = [1, 60], $Vs = [1, 61], $Vt = [1, 41], $Vu = [1, 42], $Vv = [1, 43], $Vw = [1, 44], $Vx = [1, 62], $Vy = [1, 51], $Vz = [1, 55], $VA = [1, 58], $VB = [1, 59], $VC = [1, 50], $VD = [1, 67], $VE = [1, 72], $VF = [1, 20, 21, 22, 23, 38, 42, 44, 46, 48, 52, 67, 68, 88, 89, 90, 91, 92, 93, 97, 107, 108, 111, 113, 114, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], $VG = [1, 76], $VH = [1, 75], $VI = [1, 77], $VJ = [20, 21, 23, 82, 83], $VK = [1, 100], $VL = [1, 105], $VM = [1, 108], $VN = [1, 109], $VO = [1, 102], $VP = [1, 107], $VQ = [1, 110], $VR = [1, 103], $VS = [1, 115], $VT = [1, 114], $VU = [1, 104], $VV = [1, 106], $VW = [1, 111], $VX = [1, 112], $VY = [1, 113], $VZ = [1, 116], $V_ = [20, 21, 22, 23, 82, 83], $V$ = [20, 21, 22, 23, 54, 82, 83], $V01 = [20, 21, 22, 23, 40, 52, 54, 56, 58, 60, 62, 64, 66, 67, 68, 70, 72, 74, 75, 77, 82, 83, 93, 97, 107, 108, 111, 113, 114, 124, 125, 126, 127, 128, 129], $V11 = [20, 21, 23], $V21 = [20, 21, 23, 52, 67, 68, 82, 83, 93, 97, 107, 108, 111, 113, 114, 124, 125, 126, 127, 128, 129], $V31 = [1, 12, 20, 21, 22, 23, 24, 38, 42, 44, 46, 48, 52, 67, 68, 88, 89, 90, 91, 92, 93, 97, 107, 108, 111, 113, 114, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], $V41 = [52, 67, 68, 93, 97, 107, 108, 111, 113, 114, 124, 125, 126, 127, 128, 129], $V51 = [1, 151], $V61 = [1, 159], $V71 = [1, 160], $V81 = [1, 161], $V91 = [1, 162], $Va1 = [1, 146], $Vb1 = [1, 147], $Vc1 = [1, 142], $Vd1 = [1, 143], $Ve1 = [1, 154], $Vf1 = [1, 155], $Vg1 = [1, 156], $Vh1 = [1, 157], $Vi1 = [1, 158], $Vj1 = [1, 163], $Vk1 = [1, 164], $Vl1 = [1, 149], $Vm1 = [1, 152], $Vn1 = [1, 148], $Vo1 = [1, 145], $Vp1 = [20, 21, 22, 23, 38, 42, 44, 46, 48, 52, 67, 68, 88, 89, 90, 91, 92, 93, 97, 107, 108, 111, 113, 114, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], $Vq1 = [1, 167], $Vr1 = [20, 21, 22, 23, 26, 52, 67, 68, 93, 107, 108, 111, 113, 114, 124, 125, 126, 127, 128, 129], $Vs1 = [20, 21, 22, 23, 24, 26, 38, 40, 41, 42, 52, 57, 59, 61, 63, 65, 67, 68, 69, 71, 73, 74, 76, 78, 82, 83, 88, 89, 90, 91, 92, 93, 94, 97, 107, 108, 111, 113, 114, 115, 116, 124, 125, 126, 127, 128, 129], $Vt1 = [12, 21, 22, 24], $Vu1 = [22, 108], $Vv1 = [1, 252], $Vw1 = [1, 247], $Vx1 = [1, 248], $Vy1 = [1, 256], $Vz1 = [1, 253], $VA1 = [1, 250], $VB1 = [1, 249], $VC1 = [1, 251], $VD1 = [1, 254], $VE1 = [1, 255], $VF1 = [1, 257], $VG1 = [1, 275], $VH1 = [20, 21, 23, 108], $VI1 = [20, 21, 22, 23, 67, 68, 88, 104, 107, 108, 111, 112, 113, 114, 115];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"mermaidDoc\": 4, \"directive\": 5, \"openDirective\": 6, \"typeDirective\": 7, \"closeDirective\": 8, \"separator\": 9, \":\": 10, \"argDirective\": 11, \"open_directive\": 12, \"type_directive\": 13, \"arg_directive\": 14, \"close_directive\": 15, \"graphConfig\": 16, \"document\": 17, \"line\": 18, \"statement\": 19, \"SEMI\": 20, \"NEWLINE\": 21, \"SPACE\": 22, \"EOF\": 23, \"GRAPH\": 24, \"NODIR\": 25, \"DIR\": 26, \"FirstStmtSeperator\": 27, \"ending\": 28, \"endToken\": 29, \"spaceList\": 30, \"spaceListNewline\": 31, \"verticeStatement\": 32, \"styleStatement\": 33, \"linkStyleStatement\": 34, \"classDefStatement\": 35, \"classStatement\": 36, \"clickStatement\": 37, \"subgraph\": 38, \"text\": 39, \"SQS\": 40, \"SQE\": 41, \"end\": 42, \"direction\": 43, \"acc_title\": 44, \"acc_title_value\": 45, \"acc_descr\": 46, \"acc_descr_value\": 47, \"acc_descr_multiline_value\": 48, \"link\": 49, \"node\": 50, \"styledVertex\": 51, \"AMP\": 52, \"vertex\": 53, \"STYLE_SEPARATOR\": 54, \"idString\": 55, \"DOUBLECIRCLESTART\": 56, \"DOUBLECIRCLEEND\": 57, \"PS\": 58, \"PE\": 59, \"(-\": 60, \"-)\": 61, \"STADIUMSTART\": 62, \"STADIUMEND\": 63, \"SUBROUTINESTART\": 64, \"SUBROUTINEEND\": 65, \"VERTEX_WITH_PROPS_START\": 66, \"ALPHA\": 67, \"COLON\": 68, \"PIPE\": 69, \"CYLINDERSTART\": 70, \"CYLINDEREND\": 71, \"DIAMOND_START\": 72, \"DIAMOND_STOP\": 73, \"TAGEND\": 74, \"TRAPSTART\": 75, \"TRAPEND\": 76, \"INVTRAPSTART\": 77, \"INVTRAPEND\": 78, \"linkStatement\": 79, \"arrowText\": 80, \"TESTSTR\": 81, \"START_LINK\": 82, \"LINK\": 83, \"textToken\": 84, \"STR\": 85, \"MD_STR\": 86, \"keywords\": 87, \"STYLE\": 88, \"LINKSTYLE\": 89, \"CLASSDEF\": 90, \"CLASS\": 91, \"CLICK\": 92, \"DOWN\": 93, \"UP\": 94, \"textNoTags\": 95, \"textNoTagsToken\": 96, \"DEFAULT\": 97, \"stylesOpt\": 98, \"alphaNum\": 99, \"CALLBACKNAME\": 100, \"CALLBACKARGS\": 101, \"HREF\": 102, \"LINK_TARGET\": 103, \"HEX\": 104, \"numList\": 105, \"INTERPOLATE\": 106, \"NUM\": 107, \"COMMA\": 108, \"style\": 109, \"styleComponent\": 110, \"MINUS\": 111, \"UNIT\": 112, \"BRKT\": 113, \"DOT\": 114, \"PCT\": 115, \"TAGSTART\": 116, \"alphaNumToken\": 117, \"idStringToken\": 118, \"alphaNumStatement\": 119, \"direction_tb\": 120, \"direction_bt\": 121, \"direction_rl\": 122, \"direction_lr\": 123, \"PUNCTUATION\": 124, \"UNICODE_TEXT\": 125, \"PLUS\": 126, \"EQUALS\": 127, \"MULT\": 128, \"UNDERSCORE\": 129, \"graphCodeTokens\": 130, \"ARROW_CROSS\": 131, \"ARROW_POINT\": 132, \"ARROW_CIRCLE\": 133, \"ARROW_OPEN\": 134, \"QUOTE\": 135, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 10: \":\", 12: \"open_directive\", 13: \"type_directive\", 14: \"arg_directive\", 15: \"close_directive\", 20: \"SEMI\", 21: \"NEWLINE\", 22: \"SPACE\", 23: \"EOF\", 24: \"GRAPH\", 25: \"NODIR\", 26: \"DIR\", 38: \"subgraph\", 40: \"SQS\", 41: \"SQE\", 42: \"end\", 44: \"acc_title\", 45: \"acc_title_value\", 46: \"acc_descr\", 47: \"acc_descr_value\", 48: \"acc_descr_multiline_value\", 52: \"AMP\", 54: \"STYLE_SEPARATOR\", 56: \"DOUBLECIRCLESTART\", 57: \"DOUBLECIRCLEEND\", 58: \"PS\", 59: \"PE\", 60: \"(-\", 61: \"-)\", 62: \"STADIUMSTART\", 63: \"STADIUMEND\", 64: \"SUBROUTINESTART\", 65: \"SUBROUTINEEND\", 66: \"VERTEX_WITH_PROPS_START\", 67: \"ALPHA\", 68: \"COLON\", 69: \"PIPE\", 70: \"CYLINDERSTART\", 71: \"CYLINDEREND\", 72: \"DIAMOND_START\", 73: \"DIAMOND_STOP\", 74: \"TAGEND\", 75: \"TRAPSTART\", 76: \"TRAPEND\", 77: \"INVTRAPSTART\", 78: \"INVTRAPEND\", 81: \"TESTSTR\", 82: \"START_LINK\", 83: \"LINK\", 85: \"STR\", 86: \"MD_STR\", 88: \"STYLE\", 89: \"LINKSTYLE\", 90: \"CLASSDEF\", 91: \"CLASS\", 92: \"CLICK\", 93: \"DOWN\", 94: \"UP\", 97: \"DEFAULT\", 100: \"CALLBACKNAME\", 101: \"CALLBACKARGS\", 102: \"HREF\", 103: \"LINK_TARGET\", 104: \"HEX\", 106: \"INTERPOLATE\", 107: \"NUM\", 108: \"COMMA\", 111: \"MINUS\", 112: \"UNIT\", 113: \"BRKT\", 114: \"DOT\", 115: \"PCT\", 116: \"TAGSTART\", 120: \"direction_tb\", 121: \"direction_bt\", 122: \"direction_rl\", 123: \"direction_lr\", 124: \"PUNCTUATION\", 125: \"UNICODE_TEXT\", 126: \"PLUS\", 127: \"EQUALS\", 128: \"MULT\", 129: \"UNDERSCORE\", 131: \"ARROW_CROSS\", 132: \"ARROW_POINT\", 133: \"ARROW_CIRCLE\", 134: \"ARROW_OPEN\", 135: \"QUOTE\" },\n productions_: [0, [3, 1], [3, 2], [5, 4], [5, 6], [6, 1], [7, 1], [11, 1], [8, 1], [4, 2], [17, 0], [17, 2], [18, 1], [18, 1], [18, 1], [18, 1], [18, 1], [16, 2], [16, 2], [16, 2], [16, 3], [28, 2], [28, 1], [29, 1], [29, 1], [29, 1], [27, 1], [27, 1], [27, 2], [31, 2], [31, 2], [31, 1], [31, 1], [30, 2], [30, 1], [19, 2], [19, 2], [19, 2], [19, 2], [19, 2], [19, 2], [19, 9], [19, 6], [19, 4], [19, 1], [19, 2], [19, 2], [19, 1], [9, 1], [9, 1], [9, 1], [32, 3], [32, 4], [32, 2], [32, 1], [50, 1], [50, 5], [51, 1], [51, 3], [53, 4], [53, 4], [53, 6], [53, 4], [53, 4], [53, 4], [53, 8], [53, 4], [53, 4], [53, 4], [53, 6], [53, 4], [53, 4], [53, 4], [53, 4], [53, 4], [53, 1], [49, 2], [49, 3], [49, 3], [49, 1], [49, 3], [79, 1], [80, 3], [39, 1], [39, 2], [39, 1], [39, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [95, 1], [95, 2], [35, 5], [35, 5], [36, 5], [37, 2], [37, 4], [37, 3], [37, 5], [37, 2], [37, 4], [37, 4], [37, 6], [37, 2], [37, 4], [37, 2], [37, 4], [37, 4], [37, 6], [33, 5], [33, 5], [34, 5], [34, 5], [34, 9], [34, 9], [34, 7], [34, 7], [105, 1], [105, 3], [98, 1], [98, 3], [109, 1], [109, 2], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [84, 1], [84, 1], [84, 1], [84, 1], [84, 1], [84, 1], [96, 1], [96, 1], [96, 1], [96, 1], [55, 1], [55, 2], [99, 1], [99, 2], [119, 1], [119, 1], [119, 1], [119, 1], [43, 1], [43, 1], [43, 1], [43, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 5:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 6:\n yy.parseDirective($$[$0], \"type_directive\");\n break;\n case 7:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 8:\n yy.parseDirective(\"}%%\", \"close_directive\", \"flowchart\");\n break;\n case 10:\n this.$ = [];\n break;\n case 11:\n if (!Array.isArray($$[$0]) || $$[$0].length > 0) {\n $$[$0 - 1].push($$[$0]);\n }\n this.$ = $$[$0 - 1];\n break;\n case 12:\n case 98:\n case 154:\n case 156:\n case 157:\n this.$ = $$[$0];\n break;\n case 19:\n yy.setDirection(\"TB\");\n this.$ = \"TB\";\n break;\n case 20:\n yy.setDirection($$[$0 - 1]);\n this.$ = $$[$0 - 1];\n break;\n case 35:\n this.$ = $$[$0 - 1].nodes;\n break;\n case 36:\n case 37:\n case 38:\n case 39:\n case 40:\n this.$ = [];\n break;\n case 41:\n this.$ = yy.addSubGraph($$[$0 - 6], $$[$0 - 1], $$[$0 - 4]);\n break;\n case 42:\n this.$ = yy.addSubGraph($$[$0 - 3], $$[$0 - 1], $$[$0 - 3]);\n break;\n case 43:\n this.$ = yy.addSubGraph(void 0, $$[$0 - 1], void 0);\n break;\n case 45:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 46:\n case 47:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 51:\n yy.addLink($$[$0 - 2].stmt, $$[$0], $$[$0 - 1]);\n this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0 - 2].nodes) };\n break;\n case 52:\n yy.addLink($$[$0 - 3].stmt, $$[$0 - 1], $$[$0 - 2]);\n this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1].concat($$[$0 - 3].nodes) };\n break;\n case 53:\n this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1] };\n break;\n case 54:\n this.$ = { stmt: $$[$0], nodes: $$[$0] };\n break;\n case 55:\n this.$ = [$$[$0]];\n break;\n case 56:\n this.$ = $$[$0 - 4].concat($$[$0]);\n break;\n case 57:\n this.$ = $$[$0];\n break;\n case 58:\n this.$ = $$[$0 - 2];\n yy.setClass($$[$0 - 2], $$[$0]);\n break;\n case 59:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"square\");\n break;\n case 60:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"doublecircle\");\n break;\n case 61:\n this.$ = $$[$0 - 5];\n yy.addVertex($$[$0 - 5], $$[$0 - 2], \"circle\");\n break;\n case 62:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"ellipse\");\n break;\n case 63:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"stadium\");\n break;\n case 64:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"subroutine\");\n break;\n case 65:\n this.$ = $$[$0 - 7];\n yy.addVertex($$[$0 - 7], $$[$0 - 1], \"rect\", void 0, void 0, void 0, Object.fromEntries([[$$[$0 - 5], $$[$0 - 3]]]));\n break;\n case 66:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"cylinder\");\n break;\n case 67:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"round\");\n break;\n case 68:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"diamond\");\n break;\n case 69:\n this.$ = $$[$0 - 5];\n yy.addVertex($$[$0 - 5], $$[$0 - 2], \"hexagon\");\n break;\n case 70:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"odd\");\n break;\n case 71:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"trapezoid\");\n break;\n case 72:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"inv_trapezoid\");\n break;\n case 73:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"lean_right\");\n break;\n case 74:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"lean_left\");\n break;\n case 75:\n this.$ = $$[$0];\n yy.addVertex($$[$0]);\n break;\n case 76:\n $$[$0 - 1].text = $$[$0];\n this.$ = $$[$0 - 1];\n break;\n case 77:\n case 78:\n $$[$0 - 2].text = $$[$0 - 1];\n this.$ = $$[$0 - 2];\n break;\n case 79:\n this.$ = $$[$0];\n break;\n case 80:\n var inf = yy.destructLink($$[$0], $$[$0 - 2]);\n this.$ = { \"type\": inf.type, \"stroke\": inf.stroke, \"length\": inf.length, \"text\": $$[$0 - 1] };\n break;\n case 81:\n var inf = yy.destructLink($$[$0]);\n this.$ = { \"type\": inf.type, \"stroke\": inf.stroke, \"length\": inf.length };\n break;\n case 82:\n this.$ = $$[$0 - 1];\n break;\n case 83:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 84:\n this.$ = { text: $$[$0 - 1].text + \"\" + $$[$0], type: $$[$0 - 1].type };\n break;\n case 85:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 86:\n this.$ = { text: $$[$0], type: \"markdown\" };\n break;\n case 99:\n case 155:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n case 100:\n case 101:\n this.$ = $$[$0 - 4];\n yy.addClass($$[$0 - 2], $$[$0]);\n break;\n case 102:\n this.$ = $$[$0 - 4];\n yy.setClass($$[$0 - 2], $$[$0]);\n break;\n case 103:\n case 111:\n this.$ = $$[$0 - 1];\n yy.setClickEvent($$[$0 - 1], $$[$0]);\n break;\n case 104:\n case 112:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 105:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 106:\n this.$ = $$[$0 - 4];\n yy.setClickEvent($$[$0 - 4], $$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 4], $$[$0]);\n break;\n case 107:\n case 113:\n this.$ = $$[$0 - 1];\n yy.setLink($$[$0 - 1], $$[$0]);\n break;\n case 108:\n case 114:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 109:\n case 115:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 3], $$[$0 - 2], $$[$0]);\n break;\n case 110:\n case 116:\n this.$ = $$[$0 - 5];\n yy.setLink($$[$0 - 5], $$[$0 - 4], $$[$0]);\n yy.setTooltip($$[$0 - 5], $$[$0 - 2]);\n break;\n case 117:\n this.$ = $$[$0 - 4];\n yy.addVertex($$[$0 - 2], void 0, void 0, $$[$0]);\n break;\n case 118:\n case 120:\n this.$ = $$[$0 - 4];\n yy.updateLink($$[$0 - 2], $$[$0]);\n break;\n case 119:\n this.$ = $$[$0 - 4];\n yy.updateLink([$$[$0 - 2]], $$[$0]);\n break;\n case 121:\n this.$ = $$[$0 - 8];\n yy.updateLinkInterpolate([$$[$0 - 6]], $$[$0 - 2]);\n yy.updateLink([$$[$0 - 6]], $$[$0]);\n break;\n case 122:\n this.$ = $$[$0 - 8];\n yy.updateLinkInterpolate($$[$0 - 6], $$[$0 - 2]);\n yy.updateLink($$[$0 - 6], $$[$0]);\n break;\n case 123:\n this.$ = $$[$0 - 6];\n yy.updateLinkInterpolate([$$[$0 - 4]], $$[$0]);\n break;\n case 124:\n this.$ = $$[$0 - 6];\n yy.updateLinkInterpolate($$[$0 - 4], $$[$0]);\n break;\n case 125:\n case 127:\n this.$ = [$$[$0]];\n break;\n case 126:\n case 128:\n $$[$0 - 2].push($$[$0]);\n this.$ = $$[$0 - 2];\n break;\n case 130:\n this.$ = $$[$0 - 1] + $$[$0];\n break;\n case 152:\n this.$ = $$[$0];\n break;\n case 153:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n case 158:\n this.$ = \"v\";\n break;\n case 159:\n this.$ = \"-\";\n break;\n case 160:\n this.$ = { stmt: \"dir\", value: \"TB\" };\n break;\n case 161:\n this.$ = { stmt: \"dir\", value: \"BT\" };\n break;\n case 162:\n this.$ = { stmt: \"dir\", value: \"RL\" };\n break;\n case 163:\n this.$ = { stmt: \"dir\", value: \"LR\" };\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: 3, 6: 5, 12: $V0, 16: 4, 21: $V1, 22: $V2, 24: $V3 }, { 1: [3] }, { 1: [2, 1] }, { 3: 10, 4: 2, 5: 3, 6: 5, 12: $V0, 16: 4, 21: $V1, 22: $V2, 24: $V3 }, o($V4, $V5, { 17: 11 }), { 7: 12, 13: [1, 13] }, { 16: 14, 21: $V1, 22: $V2, 24: $V3 }, { 16: 15, 21: $V1, 22: $V2, 24: $V3 }, { 25: [1, 16], 26: [1, 17] }, { 13: [2, 5] }, { 1: [2, 2] }, { 1: [2, 9], 18: 18, 19: 19, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 32: 24, 33: 25, 34: 26, 35: 27, 36: 28, 37: 29, 38: $Va, 43: 31, 44: $Vb, 46: $Vc, 48: $Vd, 50: 35, 51: 45, 52: $Ve, 53: 46, 55: 47, 67: $Vf, 68: $Vg, 88: $Vh, 89: $Vi, 90: $Vj, 91: $Vk, 92: $Vl, 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 118: 48, 120: $Vt, 121: $Vu, 122: $Vv, 123: $Vw, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }, { 8: 65, 10: [1, 66], 15: $VD }, o([10, 15], [2, 6]), o($V4, [2, 17]), o($V4, [2, 18]), o($V4, [2, 19]), { 20: [1, 69], 21: [1, 70], 22: $VE, 27: 68, 30: 71 }, o($VF, [2, 11]), o($VF, [2, 12]), o($VF, [2, 13]), o($VF, [2, 14]), o($VF, [2, 15]), o($VF, [2, 16]), { 9: 73, 20: $VG, 21: $VH, 23: $VI, 49: 74, 79: 78, 82: [1, 79], 83: [1, 80] }, { 9: 81, 20: $VG, 21: $VH, 23: $VI }, { 9: 82, 20: $VG, 21: $VH, 23: $VI }, { 9: 83, 20: $VG, 21: $VH, 23: $VI }, { 9: 84, 20: $VG, 21: $VH, 23: $VI }, { 9: 85, 20: $VG, 21: $VH, 23: $VI }, { 9: 87, 20: $VG, 21: $VH, 22: [1, 86], 23: $VI }, o($VF, [2, 44]), { 45: [1, 88] }, { 47: [1, 89] }, o($VF, [2, 47]), o($VJ, [2, 54], { 30: 90, 22: $VE }), { 22: [1, 91] }, { 22: [1, 92] }, { 22: [1, 93] }, { 22: [1, 94] }, { 26: $VK, 52: $VL, 67: $VM, 68: $VN, 85: [1, 98], 93: $VO, 99: 97, 100: [1, 95], 102: [1, 96], 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 99, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($VF, [2, 160]), o($VF, [2, 161]), o($VF, [2, 162]), o($VF, [2, 163]), o($V_, [2, 55]), o($V_, [2, 57], { 54: [1, 117] }), o($V$, [2, 75], { 118: 130, 40: [1, 118], 52: $Ve, 56: [1, 119], 58: [1, 120], 60: [1, 121], 62: [1, 122], 64: [1, 123], 66: [1, 124], 67: $Vf, 68: $Vg, 70: [1, 125], 72: [1, 126], 74: [1, 127], 75: [1, 128], 77: [1, 129], 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }), o($V01, [2, 152]), o($V01, [2, 177]), o($V01, [2, 178]), o($V01, [2, 179]), o($V01, [2, 180]), o($V01, [2, 181]), o($V01, [2, 182]), o($V01, [2, 183]), o($V01, [2, 184]), o($V01, [2, 185]), o($V01, [2, 186]), o($V01, [2, 187]), o($V01, [2, 188]), o($V01, [2, 189]), o($V01, [2, 190]), o($V01, [2, 191]), o($V01, [2, 192]), { 9: 131, 20: $VG, 21: $VH, 23: $VI }, { 11: 132, 14: [1, 133] }, o($V11, [2, 8]), o($V4, [2, 20]), o($V4, [2, 26]), o($V4, [2, 27]), { 21: [1, 134] }, o($V21, [2, 34], { 30: 135, 22: $VE }), o($VF, [2, 35]), { 50: 136, 51: 45, 52: $Ve, 53: 46, 55: 47, 67: $Vf, 68: $Vg, 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 118: 48, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }, o($V31, [2, 48]), o($V31, [2, 49]), o($V31, [2, 50]), o($V41, [2, 79], { 80: 137, 69: [1, 139], 81: [1, 138] }), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 140, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o([52, 67, 68, 69, 81, 93, 97, 107, 108, 111, 113, 114, 124, 125, 126, 127, 128, 129], [2, 81]), o($VF, [2, 36]), o($VF, [2, 37]), o($VF, [2, 38]), o($VF, [2, 39]), o($VF, [2, 40]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 165, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($Vp1, $V5, { 17: 166 }), o($VF, [2, 45]), o($VF, [2, 46]), o($VJ, [2, 53], { 52: $Vq1 }), { 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 99: 168, 104: [1, 169], 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 99, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 97: [1, 170], 105: 171, 107: [1, 172] }, { 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 97: [1, 173], 99: 174, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 99, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 99: 175, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 99, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($V11, [2, 103], { 22: [1, 176], 101: [1, 177] }), o($V11, [2, 107], { 22: [1, 178] }), o($V11, [2, 111], { 117: 101, 119: 180, 22: [1, 179], 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }), o($V11, [2, 113], { 22: [1, 181] }), o($Vr1, [2, 154]), o($Vr1, [2, 156]), o($Vr1, [2, 157]), o($Vr1, [2, 158]), o($Vr1, [2, 159]), o($Vs1, [2, 164]), o($Vs1, [2, 165]), o($Vs1, [2, 166]), o($Vs1, [2, 167]), o($Vs1, [2, 168]), o($Vs1, [2, 169]), o($Vs1, [2, 170]), o($Vs1, [2, 171]), o($Vs1, [2, 172]), o($Vs1, [2, 173]), o($Vs1, [2, 174]), o($Vs1, [2, 175]), o($Vs1, [2, 176]), { 52: $Ve, 55: 182, 67: $Vf, 68: $Vg, 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 118: 48, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 183, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 184, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 186, 42: $V91, 52: $VL, 58: [1, 185], 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 187, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 188, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 189, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 67: [1, 190] }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 191, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 192, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 72: [1, 193], 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 194, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 195, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 196, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($V01, [2, 153]), o($Vt1, [2, 3]), { 8: 197, 15: $VD }, { 15: [2, 7] }, o($V4, [2, 28]), o($V21, [2, 33]), o($VJ, [2, 51], { 30: 198, 22: $VE }), o($V41, [2, 76], { 22: [1, 199] }), { 22: [1, 200] }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 201, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 83: [1, 202], 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($Vs1, [2, 83]), o($Vs1, [2, 85]), o($Vs1, [2, 86]), o($Vs1, [2, 142]), o($Vs1, [2, 143]), o($Vs1, [2, 144]), o($Vs1, [2, 145]), o($Vs1, [2, 146]), o($Vs1, [2, 147]), o($Vs1, [2, 148]), o($Vs1, [2, 149]), o($Vs1, [2, 150]), o($Vs1, [2, 151]), o($Vs1, [2, 87]), o($Vs1, [2, 88]), o($Vs1, [2, 89]), o($Vs1, [2, 90]), o($Vs1, [2, 91]), o($Vs1, [2, 92]), o($Vs1, [2, 93]), o($Vs1, [2, 94]), o($Vs1, [2, 95]), o($Vs1, [2, 96]), o($Vs1, [2, 97]), { 9: 205, 20: $VG, 21: $VH, 22: $V51, 23: $VI, 24: $V61, 26: $V71, 38: $V81, 40: [1, 204], 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 18: 18, 19: 19, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 32: 24, 33: 25, 34: 26, 35: 27, 36: 28, 37: 29, 38: $Va, 42: [1, 206], 43: 31, 44: $Vb, 46: $Vc, 48: $Vd, 50: 35, 51: 45, 52: $Ve, 53: 46, 55: 47, 67: $Vf, 68: $Vg, 88: $Vh, 89: $Vi, 90: $Vj, 91: $Vk, 92: $Vl, 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 118: 48, 120: $Vt, 121: $Vu, 122: $Vv, 123: $Vw, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }, { 22: $VE, 30: 207 }, { 22: [1, 208], 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 180, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: [1, 209] }, { 22: [1, 210] }, { 22: [1, 211], 108: [1, 212] }, o($Vu1, [2, 125]), { 22: [1, 213] }, { 22: [1, 214], 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 180, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: [1, 215], 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 180, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 85: [1, 216] }, o($V11, [2, 105], { 22: [1, 217] }), { 85: [1, 218], 103: [1, 219] }, { 85: [1, 220] }, o($Vr1, [2, 155]), { 85: [1, 221], 103: [1, 222] }, o($V_, [2, 58], { 118: 130, 52: $Ve, 67: $Vf, 68: $Vg, 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 41: [1, 223], 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 57: [1, 224], 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 225, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 59: [1, 226], 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 61: [1, 227], 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 63: [1, 228], 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 65: [1, 229], 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 68: [1, 230] }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 71: [1, 231], 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 73: [1, 232], 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 233, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 41: [1, 234], 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 76: [1, 235], 78: [1, 236], 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 76: [1, 238], 78: [1, 237], 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 9: 239, 20: $VG, 21: $VH, 23: $VI }, o($VJ, [2, 52], { 52: $Vq1 }), o($V41, [2, 78]), o($V41, [2, 77]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 69: [1, 240], 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($V41, [2, 80]), o($Vs1, [2, 84]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 241, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($Vp1, $V5, { 17: 242 }), o($VF, [2, 43]), { 51: 243, 52: $Ve, 53: 46, 55: 47, 67: $Vf, 68: $Vg, 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 118: 48, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }, { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 98: 244, 104: $Vz1, 107: $VA1, 109: 245, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 98: 258, 104: $Vz1, 107: $VA1, 109: 245, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 98: 259, 104: $Vz1, 106: [1, 260], 107: $VA1, 109: 245, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 98: 261, 104: $Vz1, 106: [1, 262], 107: $VA1, 109: 245, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, { 107: [1, 263] }, { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 98: 264, 104: $Vz1, 107: $VA1, 109: 245, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 98: 265, 104: $Vz1, 107: $VA1, 109: 245, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, { 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 99: 266, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 99, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($V11, [2, 104]), { 85: [1, 267] }, o($V11, [2, 108], { 22: [1, 268] }), o($V11, [2, 109]), o($V11, [2, 112]), o($V11, [2, 114], { 22: [1, 269] }), o($V11, [2, 115]), o($V$, [2, 59]), o($V$, [2, 60]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 59: [1, 270], 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($V$, [2, 67]), o($V$, [2, 62]), o($V$, [2, 63]), o($V$, [2, 64]), { 67: [1, 271] }, o($V$, [2, 66]), o($V$, [2, 68]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 73: [1, 272], 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($V$, [2, 70]), o($V$, [2, 71]), o($V$, [2, 73]), o($V$, [2, 72]), o($V$, [2, 74]), o($Vt1, [2, 4]), o([22, 52, 67, 68, 93, 97, 107, 108, 111, 113, 114, 124, 125, 126, 127, 128, 129], [2, 82]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 41: [1, 273], 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 18: 18, 19: 19, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 32: 24, 33: 25, 34: 26, 35: 27, 36: 28, 37: 29, 38: $Va, 42: [1, 274], 43: 31, 44: $Vb, 46: $Vc, 48: $Vd, 50: 35, 51: 45, 52: $Ve, 53: 46, 55: 47, 67: $Vf, 68: $Vg, 88: $Vh, 89: $Vi, 90: $Vj, 91: $Vk, 92: $Vl, 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 118: 48, 120: $Vt, 121: $Vu, 122: $Vv, 123: $Vw, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }, o($V_, [2, 56]), o($V11, [2, 117], { 108: $VG1 }), o($VH1, [2, 127], { 110: 276, 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 104: $Vz1, 107: $VA1, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }), o($VI1, [2, 129]), o($VI1, [2, 131]), o($VI1, [2, 132]), o($VI1, [2, 133]), o($VI1, [2, 134]), o($VI1, [2, 135]), o($VI1, [2, 136]), o($VI1, [2, 137]), o($VI1, [2, 138]), o($VI1, [2, 139]), o($VI1, [2, 140]), o($VI1, [2, 141]), o($V11, [2, 118], { 108: $VG1 }), o($V11, [2, 119], { 108: $VG1 }), { 22: [1, 277] }, o($V11, [2, 120], { 108: $VG1 }), { 22: [1, 278] }, o($Vu1, [2, 126]), o($V11, [2, 100], { 108: $VG1 }), o($V11, [2, 101], { 108: $VG1 }), o($V11, [2, 102], { 117: 101, 119: 180, 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }), o($V11, [2, 106]), { 103: [1, 279] }, { 103: [1, 280] }, { 59: [1, 281] }, { 69: [1, 282] }, { 73: [1, 283] }, { 9: 284, 20: $VG, 21: $VH, 23: $VI }, o($VF, [2, 42]), { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 104: $Vz1, 107: $VA1, 109: 285, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, o($VI1, [2, 130]), { 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 99: 286, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 99, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 99: 287, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 99, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($V11, [2, 110]), o($V11, [2, 116]), o($V$, [2, 61]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 288, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($V$, [2, 69]), o($Vp1, $V5, { 17: 289 }), o($VH1, [2, 128], { 110: 276, 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 104: $Vz1, 107: $VA1, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }), o($V11, [2, 123], { 117: 101, 119: 180, 22: [1, 290], 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }), o($V11, [2, 124], { 117: 101, 119: 180, 22: [1, 291], 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 41: [1, 292], 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 18: 18, 19: 19, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 32: 24, 33: 25, 34: 26, 35: 27, 36: 28, 37: 29, 38: $Va, 42: [1, 293], 43: 31, 44: $Vb, 46: $Vc, 48: $Vd, 50: 35, 51: 45, 52: $Ve, 53: 46, 55: 47, 67: $Vf, 68: $Vg, 88: $Vh, 89: $Vi, 90: $Vj, 91: $Vk, 92: $Vl, 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 118: 48, 120: $Vt, 121: $Vu, 122: $Vv, 123: $Vw, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }, { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 98: 294, 104: $Vz1, 107: $VA1, 109: 245, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 98: 295, 104: $Vz1, 107: $VA1, 109: 245, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, o($V$, [2, 65]), o($VF, [2, 41]), o($V11, [2, 121], { 108: $VG1 }), o($V11, [2, 122], { 108: $VG1 })],\n defaultActions: { 2: [2, 1], 9: [2, 5], 10: [2, 2], 133: [2, 7] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex2() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex2();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex2() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"open_directive\");\n return 12;\n case 1:\n this.begin(\"type_directive\");\n return 13;\n case 2:\n this.popState();\n this.begin(\"arg_directive\");\n return 10;\n case 3:\n this.popState();\n this.popState();\n return 15;\n case 4:\n return 14;\n case 5:\n this.begin(\"acc_title\");\n return 44;\n case 6:\n this.popState();\n return \"acc_title_value\";\n case 7:\n this.begin(\"acc_descr\");\n return 46;\n case 8:\n this.popState();\n return \"acc_descr_value\";\n case 9:\n this.begin(\"acc_descr_multiline\");\n break;\n case 10:\n this.popState();\n break;\n case 11:\n return \"acc_descr_multiline_value\";\n case 12:\n this.begin(\"md_string\");\n break;\n case 13:\n return \"MD_STR\";\n case 14:\n this.popState();\n break;\n case 15:\n this.begin(\"string\");\n break;\n case 16:\n this.popState();\n break;\n case 17:\n return \"STR\";\n case 18:\n return 88;\n case 19:\n return 97;\n case 20:\n return 89;\n case 21:\n return 106;\n case 22:\n return 90;\n case 23:\n return 91;\n case 24:\n this.begin(\"href\");\n break;\n case 25:\n this.popState();\n break;\n case 26:\n return 102;\n case 27:\n this.begin(\"callbackname\");\n break;\n case 28:\n this.popState();\n break;\n case 29:\n this.popState();\n this.begin(\"callbackargs\");\n break;\n case 30:\n return 100;\n case 31:\n this.popState();\n break;\n case 32:\n return 101;\n case 33:\n this.begin(\"click\");\n break;\n case 34:\n this.popState();\n break;\n case 35:\n return 92;\n case 36:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 24;\n case 37:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 24;\n case 38:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 24;\n case 39:\n return 38;\n case 40:\n return 42;\n case 41:\n return 103;\n case 42:\n return 103;\n case 43:\n return 103;\n case 44:\n return 103;\n case 45:\n this.popState();\n return 25;\n case 46:\n this.popState();\n return 26;\n case 47:\n this.popState();\n return 26;\n case 48:\n this.popState();\n return 26;\n case 49:\n this.popState();\n return 26;\n case 50:\n this.popState();\n return 26;\n case 51:\n this.popState();\n return 26;\n case 52:\n this.popState();\n return 26;\n case 53:\n this.popState();\n return 26;\n case 54:\n this.popState();\n return 26;\n case 55:\n this.popState();\n return 26;\n case 56:\n return 120;\n case 57:\n return 121;\n case 58:\n return 122;\n case 59:\n return 123;\n case 60:\n return 107;\n case 61:\n return 113;\n case 62:\n return 54;\n case 63:\n return 68;\n case 64:\n return 52;\n case 65:\n return 20;\n case 66:\n return 108;\n case 67:\n return 128;\n case 68:\n return 83;\n case 69:\n return 83;\n case 70:\n return 83;\n case 71:\n return 83;\n case 72:\n return 82;\n case 73:\n return 82;\n case 74:\n return 82;\n case 75:\n return 60;\n case 76:\n return 61;\n case 77:\n return 62;\n case 78:\n return 63;\n case 79:\n return 64;\n case 80:\n return 65;\n case 81:\n return 66;\n case 82:\n return 70;\n case 83:\n return 71;\n case 84:\n return 56;\n case 85:\n return 57;\n case 86:\n return 111;\n case 87:\n return 114;\n case 88:\n return 129;\n case 89:\n return 126;\n case 90:\n return 115;\n case 91:\n return 127;\n case 92:\n return 127;\n case 93:\n return 116;\n case 94:\n return 74;\n case 95:\n return 94;\n case 96:\n return \"SEP\";\n case 97:\n return 93;\n case 98:\n return 67;\n case 99:\n return 76;\n case 100:\n return 75;\n case 101:\n return 78;\n case 102:\n return 77;\n case 103:\n return 124;\n case 104:\n return 125;\n case 105:\n return 69;\n case 106:\n return 58;\n case 107:\n return 59;\n case 108:\n return 40;\n case 109:\n return 41;\n case 110:\n return 72;\n case 111:\n return 73;\n case 112:\n return 135;\n case 113:\n return 21;\n case 114:\n return 22;\n case 115:\n return 23;\n }\n },\n rules: [/^(?:%%\\{)/, /^(?:((?:(?!\\}%%)[^:.])*))/, /^(?::)/, /^(?:\\}%%)/, /^(?:((?:(?!\\}%%).|\\n)*))/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:[\"][`])/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:style\\b)/, /^(?:default\\b)/, /^(?:linkStyle\\b)/, /^(?:interpolate\\b)/, /^(?:classDef\\b)/, /^(?:class\\b)/, /^(?:href[\\s]+[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:call[\\s]+)/, /^(?:\\([\\s]*\\))/, /^(?:\\()/, /^(?:[^(]*)/, /^(?:\\))/, /^(?:[^)]*)/, /^(?:click[\\s]+)/, /^(?:[\\s\\n])/, /^(?:[^\\s\\n]*)/, /^(?:flowchart-elk\\b)/, /^(?:graph\\b)/, /^(?:flowchart\\b)/, /^(?:subgraph\\b)/, /^(?:end\\b\\s*)/, /^(?:_self\\b)/, /^(?:_blank\\b)/, /^(?:_parent\\b)/, /^(?:_top\\b)/, /^(?:(\\r?\\n)*\\s*\\n)/, /^(?:\\s*LR\\b)/, /^(?:\\s*RL\\b)/, /^(?:\\s*TB\\b)/, /^(?:\\s*BT\\b)/, /^(?:\\s*TD\\b)/, /^(?:\\s*BR\\b)/, /^(?:\\s*<)/, /^(?:\\s*>)/, /^(?:\\s*\\^)/, /^(?:\\s*v\\b)/, /^(?:.*direction\\s+TB[^\\n]*)/, /^(?:.*direction\\s+BT[^\\n]*)/, /^(?:.*direction\\s+RL[^\\n]*)/, /^(?:.*direction\\s+LR[^\\n]*)/, /^(?:[0-9]+)/, /^(?:#)/, /^(?::::)/, /^(?::)/, /^(?:&)/, /^(?:;)/, /^(?:,)/, /^(?:\\*)/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?:\\s*~~[\\~]+\\s*)/, /^(?:\\s*[xo<]?--\\s*)/, /^(?:\\s*[xo<]?==\\s*)/, /^(?:\\s*[xo<]?-\\.\\s*)/, /^(?:\\(-)/, /^(?:-\\))/, /^(?:\\(\\[)/, /^(?:\\]\\))/, /^(?:\\[\\[)/, /^(?:\\]\\])/, /^(?:\\[\\|)/, /^(?:\\[\\()/, /^(?:\\)\\])/, /^(?:\\(\\(\\()/, /^(?:\\)\\)\\))/, /^(?:-)/, /^(?:\\.)/, /^(?:[\\_])/, /^(?:\\+)/, /^(?:%)/, /^(?:=)/, /^(?:=)/, /^(?:<)/, /^(?:>)/, /^(?:\\^)/, /^(?:\\\\\\|)/, /^(?:v\\b)/, /^(?:[A-Za-z]+)/, /^(?:\\\\\\])/, /^(?:\\[\\/)/, /^(?:\\/\\])/, /^(?:\\[\\\\)/, /^(?:[!\"#$%&'*+,-.`?\\\\_/])/, /^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/, /^(?:\\|)/, /^(?:\\()/, /^(?:\\))/, /^(?:\\[)/, /^(?:\\])/, /^(?:\\{)/, /^(?:\\})/, /^(?:\")/, /^(?:(\\r?\\n)+)/, /^(?:\\s)/, /^(?:$)/],\n conditions: { \"close_directive\": { \"rules\": [], \"inclusive\": false }, \"arg_directive\": { \"rules\": [3, 4], \"inclusive\": false }, \"type_directive\": { \"rules\": [2, 3], \"inclusive\": false }, \"open_directive\": { \"rules\": [1], \"inclusive\": false }, \"callbackargs\": { \"rules\": [31, 32], \"inclusive\": false }, \"callbackname\": { \"rules\": [28, 29, 30], \"inclusive\": false }, \"href\": { \"rules\": [25, 26], \"inclusive\": false }, \"click\": { \"rules\": [34, 35], \"inclusive\": false }, \"vertex\": { \"rules\": [], \"inclusive\": false }, \"dir\": { \"rules\": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [10, 11], \"inclusive\": false }, \"acc_descr\": { \"rules\": [8], \"inclusive\": false }, \"acc_title\": { \"rules\": [6], \"inclusive\": false }, \"md_string\": { \"rules\": [13, 14], \"inclusive\": false }, \"string\": { \"rules\": [16, 17], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 5, 7, 9, 12, 15, 18, 19, 20, 21, 22, 23, 24, 27, 33, 36, 37, 38, 39, 40, 41, 42, 43, 44, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst MERMAID_DOM_ID_PREFIX = \"flowchart-\";\nlet vertexCounter = 0;\nlet config = getConfig();\nlet vertices = {};\nlet edges = [];\nlet classes = {};\nlet subGraphs = [];\nlet subGraphLookup = {};\nlet tooltips = {};\nlet subCount = 0;\nlet firstGraphFlag = true;\nlet direction;\nlet version;\nlet funs = [];\nconst sanitizeText = (txt) => common.sanitizeText(txt, config);\nconst parseDirective = function(statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\nconst lookUpDomId = function(id) {\n const veritceKeys = Object.keys(vertices);\n for (const veritceKey of veritceKeys) {\n if (vertices[veritceKey].id === id) {\n return vertices[veritceKey].domId;\n }\n }\n return id;\n};\nconst addVertex = function(_id, textObj, type, style, classes2, dir, props = {}) {\n let txt;\n let id = _id;\n if (id === void 0) {\n return;\n }\n if (id.trim().length === 0) {\n return;\n }\n if (vertices[id] === void 0) {\n vertices[id] = {\n id,\n labelType: \"text\",\n domId: MERMAID_DOM_ID_PREFIX + id + \"-\" + vertexCounter,\n styles: [],\n classes: []\n };\n }\n vertexCounter++;\n if (textObj !== void 0) {\n config = getConfig();\n txt = sanitizeText(textObj.text.trim());\n vertices[id].labelType = textObj.type;\n if (txt[0] === '\"' && txt[txt.length - 1] === '\"') {\n txt = txt.substring(1, txt.length - 1);\n }\n vertices[id].text = txt;\n } else {\n if (vertices[id].text === void 0) {\n vertices[id].text = _id;\n }\n }\n if (type !== void 0) {\n vertices[id].type = type;\n }\n if (style !== void 0 && style !== null) {\n style.forEach(function(s) {\n vertices[id].styles.push(s);\n });\n }\n if (classes2 !== void 0 && classes2 !== null) {\n classes2.forEach(function(s) {\n vertices[id].classes.push(s);\n });\n }\n if (dir !== void 0) {\n vertices[id].dir = dir;\n }\n if (vertices[id].props === void 0) {\n vertices[id].props = props;\n } else if (props !== void 0) {\n Object.assign(vertices[id].props, props);\n }\n};\nconst addSingleLink = function(_start, _end, type) {\n let start = _start;\n let end = _end;\n const edge = { start, end, type: void 0, text: \"\", labelType: \"text\" };\n log.info(\"abc78 Got edge...\", edge);\n const linkTextObj = type.text;\n if (linkTextObj !== void 0) {\n edge.text = sanitizeText(linkTextObj.text.trim());\n if (edge.text[0] === '\"' && edge.text[edge.text.length - 1] === '\"') {\n edge.text = edge.text.substring(1, edge.text.length - 1);\n }\n edge.labelType = linkTextObj.type;\n }\n if (type !== void 0) {\n edge.type = type.type;\n edge.stroke = type.stroke;\n edge.length = type.length;\n }\n edges.push(edge);\n};\nconst addLink = function(_start, _end, type) {\n log.info(\"addLink (abc78)\", _start, _end, type);\n let i, j;\n for (i = 0; i < _start.length; i++) {\n for (j = 0; j < _end.length; j++) {\n addSingleLink(_start[i], _end[j], type);\n }\n }\n};\nconst updateLinkInterpolate = function(positions, interp) {\n positions.forEach(function(pos) {\n if (pos === \"default\") {\n edges.defaultInterpolate = interp;\n } else {\n edges[pos].interpolate = interp;\n }\n });\n};\nconst updateLink = function(positions, style) {\n positions.forEach(function(pos) {\n if (pos === \"default\") {\n edges.defaultStyle = style;\n } else {\n if (utils.isSubstringInArray(\"fill\", style) === -1) {\n style.push(\"fill:none\");\n }\n edges[pos].style = style;\n }\n });\n};\nconst addClass = function(ids, style) {\n ids.split(\",\").forEach(function(id) {\n if (classes[id] === void 0) {\n classes[id] = { id, styles: [], textStyles: [] };\n }\n if (style !== void 0 && style !== null) {\n style.forEach(function(s) {\n if (s.match(\"color\")) {\n const newStyle = s.replace(\"fill\", \"bgFill\").replace(\"color\", \"fill\");\n classes[id].textStyles.push(newStyle);\n }\n classes[id].styles.push(s);\n });\n }\n });\n};\nconst setDirection = function(dir) {\n direction = dir;\n if (direction.match(/.*)) {\n direction = \"RL\";\n }\n if (direction.match(/.*\\^/)) {\n direction = \"BT\";\n }\n if (direction.match(/.*>/)) {\n direction = \"LR\";\n }\n if (direction.match(/.*v/)) {\n direction = \"TB\";\n }\n if (direction === \"TD\") {\n direction = \"TB\";\n }\n};\nconst setClass = function(ids, className) {\n ids.split(\",\").forEach(function(_id) {\n let id = _id;\n if (vertices[id] !== void 0) {\n vertices[id].classes.push(className);\n }\n if (subGraphLookup[id] !== void 0) {\n subGraphLookup[id].classes.push(className);\n }\n });\n};\nconst setTooltip = function(ids, tooltip) {\n ids.split(\",\").forEach(function(id) {\n if (tooltip !== void 0) {\n tooltips[version === \"gen-1\" ? lookUpDomId(id) : id] = sanitizeText(tooltip);\n }\n });\n};\nconst setClickFun = function(id, functionName, functionArgs) {\n let domId = lookUpDomId(id);\n if (getConfig().securityLevel !== \"loose\") {\n return;\n }\n if (functionName === void 0) {\n return;\n }\n let argList = [];\n if (typeof functionArgs === \"string\") {\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n if (argList.length === 0) {\n argList.push(id);\n }\n if (vertices[id] !== void 0) {\n vertices[id].haveCallback = true;\n funs.push(function() {\n const elem = document.querySelector(`[id=\"${domId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n \"click\",\n function() {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n};\nconst setLink = function(ids, linkStr, target) {\n ids.split(\",\").forEach(function(id) {\n if (vertices[id] !== void 0) {\n vertices[id].link = utils.formatUrl(linkStr, config);\n vertices[id].linkTarget = target;\n }\n });\n setClass(ids, \"clickable\");\n};\nconst getTooltip = function(id) {\n if (tooltips.hasOwnProperty(id)) {\n return tooltips[id];\n }\n return void 0;\n};\nconst setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(\",\").forEach(function(id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, \"clickable\");\n};\nconst bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\nconst getDirection = function() {\n return direction.trim();\n};\nconst getVertices = function() {\n return vertices;\n};\nconst getEdges = function() {\n return edges;\n};\nconst getClasses = function() {\n return classes;\n};\nconst setupToolTips = function(element) {\n let tooltipElem = select(\".mermaidTooltip\");\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select(\"body\").append(\"div\").attr(\"class\", \"mermaidTooltip\").style(\"opacity\", 0);\n }\n const svg = select(element).select(\"svg\");\n const nodes = svg.selectAll(\"g.node\");\n nodes.on(\"mouseover\", function() {\n const el = select(this);\n const title = el.attr(\"title\");\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n tooltipElem.transition().duration(200).style(\"opacity\", \".9\");\n tooltipElem.text(el.attr(\"title\")).style(\"left\", window.scrollX + rect.left + (rect.right - rect.left) / 2 + \"px\").style(\"top\", window.scrollY + rect.top - 14 + document.body.scrollTop + \"px\");\n tooltipElem.html(tooltipElem.html().replace(/<br\\/>/g, \"
\"));\n el.classed(\"hover\", true);\n }).on(\"mouseout\", function() {\n tooltipElem.transition().duration(500).style(\"opacity\", 0);\n const el = select(this);\n el.classed(\"hover\", false);\n });\n};\nfuns.push(setupToolTips);\nconst clear = function(ver = \"gen-1\") {\n vertices = {};\n classes = {};\n edges = [];\n funs = [setupToolTips];\n subGraphs = [];\n subGraphLookup = {};\n subCount = 0;\n tooltips = {};\n firstGraphFlag = true;\n version = ver;\n clear$1();\n};\nconst setGen = (ver) => {\n version = ver || \"gen-2\";\n};\nconst defaultStyle = function() {\n return \"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;\";\n};\nconst addSubGraph = function(_id, list, _title) {\n let id = _id.text.trim();\n let title = _title.text;\n if (_id === _title && _title.text.match(/\\s/)) {\n id = void 0;\n }\n function uniq(a) {\n const prims = { boolean: {}, number: {}, string: {} };\n const objs = [];\n let dir2;\n const nodeList2 = a.filter(function(item) {\n const type = typeof item;\n if (item.stmt && item.stmt === \"dir\") {\n dir2 = item.value;\n return false;\n }\n if (item.trim() === \"\") {\n return false;\n }\n if (type in prims) {\n return prims[type].hasOwnProperty(item) ? false : prims[type][item] = true;\n } else {\n return objs.includes(item) ? false : objs.push(item);\n }\n });\n return { nodeList: nodeList2, dir: dir2 };\n }\n let nodeList = [];\n const { nodeList: nl, dir } = uniq(nodeList.concat.apply(nodeList, list));\n nodeList = nl;\n if (version === \"gen-1\") {\n for (let i = 0; i < nodeList.length; i++) {\n nodeList[i] = lookUpDomId(nodeList[i]);\n }\n }\n id = id || \"subGraph\" + subCount;\n title = title || \"\";\n title = sanitizeText(title);\n subCount = subCount + 1;\n const subGraph = {\n id,\n nodes: nodeList,\n title: title.trim(),\n classes: [],\n dir,\n labelType: _title.type\n };\n log.info(\"Adding\", subGraph.id, subGraph.nodes, subGraph.dir);\n subGraph.nodes = makeUniq(subGraph, subGraphs).nodes;\n subGraphs.push(subGraph);\n subGraphLookup[id] = subGraph;\n return id;\n};\nconst getPosForId = function(id) {\n for (const [i, subGraph] of subGraphs.entries()) {\n if (subGraph.id === id) {\n return i;\n }\n }\n return -1;\n};\nlet secCount = -1;\nconst posCrossRef = [];\nconst indexNodes2 = function(id, pos) {\n const nodes = subGraphs[pos].nodes;\n secCount = secCount + 1;\n if (secCount > 2e3) {\n return;\n }\n posCrossRef[secCount] = pos;\n if (subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0\n };\n }\n let count = 0;\n let posCount = 1;\n while (count < nodes.length) {\n const childPos = getPosForId(nodes[count]);\n if (childPos >= 0) {\n const res = indexNodes2(id, childPos);\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count\n };\n } else {\n posCount = posCount + res.count;\n }\n }\n count = count + 1;\n }\n return {\n result: false,\n count: posCount\n };\n};\nconst getDepthFirstPos = function(pos) {\n return posCrossRef[pos];\n};\nconst indexNodes = function() {\n secCount = -1;\n if (subGraphs.length > 0) {\n indexNodes2(\"none\", subGraphs.length - 1);\n }\n};\nconst getSubGraphs = function() {\n return subGraphs;\n};\nconst firstGraph = () => {\n if (firstGraphFlag) {\n firstGraphFlag = false;\n return true;\n }\n return false;\n};\nconst destructStartLink = (_str) => {\n let str = _str.trim();\n let type = \"arrow_open\";\n switch (str[0]) {\n case \"<\":\n type = \"arrow_point\";\n str = str.slice(1);\n break;\n case \"x\":\n type = \"arrow_cross\";\n str = str.slice(1);\n break;\n case \"o\":\n type = \"arrow_circle\";\n str = str.slice(1);\n break;\n }\n let stroke = \"normal\";\n if (str.includes(\"=\")) {\n stroke = \"thick\";\n }\n if (str.includes(\".\")) {\n stroke = \"dotted\";\n }\n return { type, stroke };\n};\nconst countChar = (char, str) => {\n const length = str.length;\n let count = 0;\n for (let i = 0; i < length; ++i) {\n if (str[i] === char) {\n ++count;\n }\n }\n return count;\n};\nconst destructEndLink = (_str) => {\n const str = _str.trim();\n let line = str.slice(0, -1);\n let type = \"arrow_open\";\n switch (str.slice(-1)) {\n case \"x\":\n type = \"arrow_cross\";\n if (str[0] === \"x\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n case \">\":\n type = \"arrow_point\";\n if (str[0] === \"<\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n case \"o\":\n type = \"arrow_circle\";\n if (str[0] === \"o\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n }\n let stroke = \"normal\";\n let length = line.length - 1;\n if (line[0] === \"=\") {\n stroke = \"thick\";\n }\n if (line[0] === \"~\") {\n stroke = \"invisible\";\n }\n let dots = countChar(\".\", line);\n if (dots) {\n stroke = \"dotted\";\n length = dots;\n }\n return { type, stroke, length };\n};\nconst destructLink = (_str, _startStr) => {\n const info = destructEndLink(_str);\n let startInfo;\n if (_startStr) {\n startInfo = destructStartLink(_startStr);\n if (startInfo.stroke !== info.stroke) {\n return { type: \"INVALID\", stroke: \"INVALID\" };\n }\n if (startInfo.type === \"arrow_open\") {\n startInfo.type = info.type;\n } else {\n if (startInfo.type !== info.type) {\n return { type: \"INVALID\", stroke: \"INVALID\" };\n }\n startInfo.type = \"double_\" + startInfo.type;\n }\n if (startInfo.type === \"double_arrow\") {\n startInfo.type = \"double_arrow_point\";\n }\n startInfo.length = info.length;\n return startInfo;\n }\n return info;\n};\nconst exists = (allSgs, _id) => {\n let res = false;\n allSgs.forEach((sg) => {\n const pos = sg.nodes.indexOf(_id);\n if (pos >= 0) {\n res = true;\n }\n });\n return res;\n};\nconst makeUniq = (sg, allSubgraphs) => {\n const res = [];\n sg.nodes.forEach((_id, pos) => {\n if (!exists(allSubgraphs, _id)) {\n res.push(sg.nodes[pos]);\n }\n });\n return { nodes: res };\n};\nconst lex = {\n firstGraph\n};\nconst flowDb = {\n parseDirective,\n defaultConfig: () => defaultConfig.flowchart,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n addVertex,\n lookUpDomId,\n addLink,\n updateLinkInterpolate,\n updateLink,\n addClass,\n setDirection,\n setClass,\n setTooltip,\n getTooltip,\n setClickEvent,\n setLink,\n bindFunctions,\n getDirection,\n getVertices,\n getEdges,\n getClasses,\n clear,\n setGen,\n defaultStyle,\n addSubGraph,\n getDepthFirstPos,\n indexNodes,\n getSubGraphs,\n destructLink,\n lex,\n exists,\n makeUniq,\n setDiagramTitle,\n getDiagramTitle\n};\nconst db = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n addClass,\n addLink,\n addSingleLink,\n addSubGraph,\n addVertex,\n bindFunctions,\n clear,\n default: flowDb,\n defaultStyle,\n destructLink,\n firstGraph,\n getClasses,\n getDepthFirstPos,\n getDirection,\n getEdges,\n getSubGraphs,\n getTooltip,\n getVertices,\n indexNodes,\n lex,\n lookUpDomId,\n parseDirective,\n setClass,\n setClickEvent,\n setDirection,\n setGen,\n setLink,\n updateLink,\n updateLinkInterpolate\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n db as d,\n flowDb as f,\n parser$1 as p\n};\n"],"names":["parser","o","k","v","o2","l","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$Vr","$Vs","$Vt","$Vu","$Vv","$Vw","$Vx","$Vy","$Vz","$VA","$VB","$VC","$VD","$VE","$VF","$VG","$VH","$VI","$VJ","$VK","$VL","$VM","$VN","$VO","$VP","$VQ","$VR","$VS","$VT","$VU","$VV","$VW","$VX","$VY","$VZ","$V_","$V$","$V01","$V11","$V21","$V31","$V41","$V51","$V61","$V71","$V81","$V91","$Va1","$Vb1","$Vc1","$Vd1","$Ve1","$Vf1","$Vg1","$Vh1","$Vi1","$Vj1","$Vk1","$Vl1","$Vm1","$Vn1","$Vo1","$Vp1","$Vq1","$Vr1","$Vs1","$Vt1","$Vu1","$Vv1","$Vw1","$Vx1","$Vy1","$Vz1","$VA1","$VB1","$VC1","$VD1","$VE1","$VF1","$VG1","$VH1","$VI1","parser2","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","inf","str","hash","error","input","self","stack","tstack","vstack","lstack","table","TERROR","EOF","args","lexer2","sharedState","yyloc","ranges","lex2","token","symbol","state","action","r","yyval","p","len","newState","expected","errStr","lexer","ch","lines","oldLines","n","past","next","pre","c","match","indexed_rule","backup","tempMatch","index","rules","i","condition","yy_","$avoiding_name_collisions","YY_START","Parser","parser$1","MERMAID_DOM_ID_PREFIX","vertexCounter","config","getConfig","vertices","edges","classes","subGraphs","subGraphLookup","tooltips","subCount","firstGraphFlag","direction","version","funs","sanitizeText","txt","common","parseDirective","statement","context","type","mermaidAPI","lookUpDomId","id","veritceKeys","veritceKey","addVertex","_id","textObj","style","classes2","dir","props","s","addSingleLink","_start","_end","edge","log","linkTextObj","addLink","j","updateLinkInterpolate","positions","interp","pos","updateLink","utils","addClass","ids","newStyle","setDirection","setClass","className","setTooltip","tooltip","setClickFun","functionName","functionArgs","domId","argList","item","elem","setLink","linkStr","target","getTooltip","setClickEvent","bindFunctions","element","fun","getDirection","getVertices","getEdges","getClasses","setupToolTips","tooltipElem","select","el","rect","clear","ver","clear$1","setGen","defaultStyle","addSubGraph","list","_title","title","uniq","a","prims","objs","dir2","nodeList","nl","subGraph","makeUniq","getPosForId","secCount","posCrossRef","indexNodes2","nodes","count","posCount","childPos","res","getDepthFirstPos","indexNodes","getSubGraphs","firstGraph","destructStartLink","_str","stroke","countChar","char","length","destructEndLink","line","dots","destructLink","_startStr","info","startInfo","exists","allSgs","sg","allSubgraphs","lex","flowDb","defaultConfig","setAccTitle","getAccTitle","getAccDescription","setAccDescription","setDiagramTitle","getDiagramTitle","db"],"mappings":"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IAAK,GAAG,EAAGC,EAAO,CAAC,GAAI,GAAI,EAAE,EAAGC,GAAO,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,GAAO,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAA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C,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAA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K,IACH,YAAK,SAAQ,EACN,GACT,IAAK,IACH,YAAK,SAAQ,EACN,GACT,IAAK,IACH,YAAK,SAAQ,EACN,GACT,IAAK,IACH,YAAK,SAAQ,EACN,GACT,IAAK,IACH,YAAK,SAAQ,EACN,GACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,MACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAAO,KACT,IAAK,KACH,MAAO,KACT,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAA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","x_google_ignoreList":[0]}
\ No newline at end of file
+{"version":3,"file":"flowDb-8f9fc471-183d3c57.js","sources":["../../node_modules/mermaid/dist/flowDb-8f9fc471.js"],"sourcesContent":["import { select } from \"d3\";\nimport { G as defaultConfig, s as setAccTitle, g as getAccTitle, a as getAccDescription, b as setAccDescription, r as setDiagramTitle, t as getDiagramTitle, c as getConfig, m as mermaidAPI, l as log, u as utils, v as clear$1, e as common } from \"./mermaid-a98f434b.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 9], $V1 = [1, 7], $V2 = [1, 6], $V3 = [1, 8], $V4 = [1, 20, 21, 22, 23, 38, 44, 46, 48, 52, 67, 68, 88, 89, 90, 91, 92, 93, 97, 107, 108, 111, 113, 114, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], $V5 = [2, 10], $V6 = [1, 20], $V7 = [1, 21], $V8 = [1, 22], $V9 = [1, 23], $Va = [1, 30], $Vb = [1, 32], $Vc = [1, 33], $Vd = [1, 34], $Ve = [1, 63], $Vf = [1, 49], $Vg = [1, 53], $Vh = [1, 36], $Vi = [1, 37], $Vj = [1, 38], $Vk = [1, 39], $Vl = [1, 40], $Vm = [1, 57], $Vn = [1, 64], $Vo = [1, 52], $Vp = [1, 54], $Vq = [1, 56], $Vr = [1, 60], $Vs = [1, 61], $Vt = [1, 41], $Vu = [1, 42], $Vv = [1, 43], $Vw = [1, 44], $Vx = [1, 62], $Vy = [1, 51], $Vz = [1, 55], $VA = [1, 58], $VB = [1, 59], $VC = [1, 50], $VD = [1, 67], $VE = [1, 72], $VF = [1, 20, 21, 22, 23, 38, 42, 44, 46, 48, 52, 67, 68, 88, 89, 90, 91, 92, 93, 97, 107, 108, 111, 113, 114, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], $VG = [1, 76], $VH = [1, 75], $VI = [1, 77], $VJ = [20, 21, 23, 82, 83], $VK = [1, 100], $VL = [1, 105], $VM = [1, 108], $VN = [1, 109], $VO = [1, 102], $VP = [1, 107], $VQ = [1, 110], $VR = [1, 103], $VS = [1, 115], $VT = [1, 114], $VU = [1, 104], $VV = [1, 106], $VW = [1, 111], $VX = [1, 112], $VY = [1, 113], $VZ = [1, 116], $V_ = [20, 21, 22, 23, 82, 83], $V$ = [20, 21, 22, 23, 54, 82, 83], $V01 = [20, 21, 22, 23, 40, 52, 54, 56, 58, 60, 62, 64, 66, 67, 68, 70, 72, 74, 75, 77, 82, 83, 93, 97, 107, 108, 111, 113, 114, 124, 125, 126, 127, 128, 129], $V11 = [20, 21, 23], $V21 = [20, 21, 23, 52, 67, 68, 82, 83, 93, 97, 107, 108, 111, 113, 114, 124, 125, 126, 127, 128, 129], $V31 = [1, 12, 20, 21, 22, 23, 24, 38, 42, 44, 46, 48, 52, 67, 68, 88, 89, 90, 91, 92, 93, 97, 107, 108, 111, 113, 114, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], $V41 = [52, 67, 68, 93, 97, 107, 108, 111, 113, 114, 124, 125, 126, 127, 128, 129], $V51 = [1, 151], $V61 = [1, 159], $V71 = [1, 160], $V81 = [1, 161], $V91 = [1, 162], $Va1 = [1, 146], $Vb1 = [1, 147], $Vc1 = [1, 142], $Vd1 = [1, 143], $Ve1 = [1, 154], $Vf1 = [1, 155], $Vg1 = [1, 156], $Vh1 = [1, 157], $Vi1 = [1, 158], $Vj1 = [1, 163], $Vk1 = [1, 164], $Vl1 = [1, 149], $Vm1 = [1, 152], $Vn1 = [1, 148], $Vo1 = [1, 145], $Vp1 = [20, 21, 22, 23, 38, 42, 44, 46, 48, 52, 67, 68, 88, 89, 90, 91, 92, 93, 97, 107, 108, 111, 113, 114, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], $Vq1 = [1, 167], $Vr1 = [20, 21, 22, 23, 26, 52, 67, 68, 93, 107, 108, 111, 113, 114, 124, 125, 126, 127, 128, 129], $Vs1 = [20, 21, 22, 23, 24, 26, 38, 40, 41, 42, 52, 57, 59, 61, 63, 65, 67, 68, 69, 71, 73, 74, 76, 78, 82, 83, 88, 89, 90, 91, 92, 93, 94, 97, 107, 108, 111, 113, 114, 115, 116, 124, 125, 126, 127, 128, 129], $Vt1 = [12, 21, 22, 24], $Vu1 = [22, 108], $Vv1 = [1, 252], $Vw1 = [1, 247], $Vx1 = [1, 248], $Vy1 = [1, 256], $Vz1 = [1, 253], $VA1 = [1, 250], $VB1 = [1, 249], $VC1 = [1, 251], $VD1 = [1, 254], $VE1 = [1, 255], $VF1 = [1, 257], $VG1 = [1, 275], $VH1 = [20, 21, 23, 108], $VI1 = [20, 21, 22, 23, 67, 68, 88, 104, 107, 108, 111, 112, 113, 114, 115];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"mermaidDoc\": 4, \"directive\": 5, \"openDirective\": 6, \"typeDirective\": 7, \"closeDirective\": 8, \"separator\": 9, \":\": 10, \"argDirective\": 11, \"open_directive\": 12, \"type_directive\": 13, \"arg_directive\": 14, \"close_directive\": 15, \"graphConfig\": 16, \"document\": 17, \"line\": 18, \"statement\": 19, \"SEMI\": 20, \"NEWLINE\": 21, \"SPACE\": 22, \"EOF\": 23, \"GRAPH\": 24, \"NODIR\": 25, \"DIR\": 26, \"FirstStmtSeperator\": 27, \"ending\": 28, \"endToken\": 29, \"spaceList\": 30, \"spaceListNewline\": 31, \"verticeStatement\": 32, \"styleStatement\": 33, \"linkStyleStatement\": 34, \"classDefStatement\": 35, \"classStatement\": 36, \"clickStatement\": 37, \"subgraph\": 38, \"text\": 39, \"SQS\": 40, \"SQE\": 41, \"end\": 42, \"direction\": 43, \"acc_title\": 44, \"acc_title_value\": 45, \"acc_descr\": 46, \"acc_descr_value\": 47, \"acc_descr_multiline_value\": 48, \"link\": 49, \"node\": 50, \"styledVertex\": 51, \"AMP\": 52, \"vertex\": 53, \"STYLE_SEPARATOR\": 54, \"idString\": 55, \"DOUBLECIRCLESTART\": 56, \"DOUBLECIRCLEEND\": 57, \"PS\": 58, \"PE\": 59, \"(-\": 60, \"-)\": 61, \"STADIUMSTART\": 62, \"STADIUMEND\": 63, \"SUBROUTINESTART\": 64, \"SUBROUTINEEND\": 65, \"VERTEX_WITH_PROPS_START\": 66, \"ALPHA\": 67, \"COLON\": 68, \"PIPE\": 69, \"CYLINDERSTART\": 70, \"CYLINDEREND\": 71, \"DIAMOND_START\": 72, \"DIAMOND_STOP\": 73, \"TAGEND\": 74, \"TRAPSTART\": 75, \"TRAPEND\": 76, \"INVTRAPSTART\": 77, \"INVTRAPEND\": 78, \"linkStatement\": 79, \"arrowText\": 80, \"TESTSTR\": 81, \"START_LINK\": 82, \"LINK\": 83, \"textToken\": 84, \"STR\": 85, \"MD_STR\": 86, \"keywords\": 87, \"STYLE\": 88, \"LINKSTYLE\": 89, \"CLASSDEF\": 90, \"CLASS\": 91, \"CLICK\": 92, \"DOWN\": 93, \"UP\": 94, \"textNoTags\": 95, \"textNoTagsToken\": 96, \"DEFAULT\": 97, \"stylesOpt\": 98, \"alphaNum\": 99, \"CALLBACKNAME\": 100, \"CALLBACKARGS\": 101, \"HREF\": 102, \"LINK_TARGET\": 103, \"HEX\": 104, \"numList\": 105, \"INTERPOLATE\": 106, \"NUM\": 107, \"COMMA\": 108, \"style\": 109, \"styleComponent\": 110, \"MINUS\": 111, \"UNIT\": 112, \"BRKT\": 113, \"DOT\": 114, \"PCT\": 115, \"TAGSTART\": 116, \"alphaNumToken\": 117, \"idStringToken\": 118, \"alphaNumStatement\": 119, \"direction_tb\": 120, \"direction_bt\": 121, \"direction_rl\": 122, \"direction_lr\": 123, \"PUNCTUATION\": 124, \"UNICODE_TEXT\": 125, \"PLUS\": 126, \"EQUALS\": 127, \"MULT\": 128, \"UNDERSCORE\": 129, \"graphCodeTokens\": 130, \"ARROW_CROSS\": 131, \"ARROW_POINT\": 132, \"ARROW_CIRCLE\": 133, \"ARROW_OPEN\": 134, \"QUOTE\": 135, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 10: \":\", 12: \"open_directive\", 13: \"type_directive\", 14: \"arg_directive\", 15: \"close_directive\", 20: \"SEMI\", 21: \"NEWLINE\", 22: \"SPACE\", 23: \"EOF\", 24: \"GRAPH\", 25: \"NODIR\", 26: \"DIR\", 38: \"subgraph\", 40: \"SQS\", 41: \"SQE\", 42: \"end\", 44: \"acc_title\", 45: \"acc_title_value\", 46: \"acc_descr\", 47: \"acc_descr_value\", 48: \"acc_descr_multiline_value\", 52: \"AMP\", 54: \"STYLE_SEPARATOR\", 56: \"DOUBLECIRCLESTART\", 57: \"DOUBLECIRCLEEND\", 58: \"PS\", 59: \"PE\", 60: \"(-\", 61: \"-)\", 62: \"STADIUMSTART\", 63: \"STADIUMEND\", 64: \"SUBROUTINESTART\", 65: \"SUBROUTINEEND\", 66: \"VERTEX_WITH_PROPS_START\", 67: \"ALPHA\", 68: \"COLON\", 69: \"PIPE\", 70: \"CYLINDERSTART\", 71: \"CYLINDEREND\", 72: \"DIAMOND_START\", 73: \"DIAMOND_STOP\", 74: \"TAGEND\", 75: \"TRAPSTART\", 76: \"TRAPEND\", 77: \"INVTRAPSTART\", 78: \"INVTRAPEND\", 81: \"TESTSTR\", 82: \"START_LINK\", 83: \"LINK\", 85: \"STR\", 86: \"MD_STR\", 88: \"STYLE\", 89: \"LINKSTYLE\", 90: \"CLASSDEF\", 91: \"CLASS\", 92: \"CLICK\", 93: \"DOWN\", 94: \"UP\", 97: \"DEFAULT\", 100: \"CALLBACKNAME\", 101: \"CALLBACKARGS\", 102: \"HREF\", 103: \"LINK_TARGET\", 104: \"HEX\", 106: \"INTERPOLATE\", 107: \"NUM\", 108: \"COMMA\", 111: \"MINUS\", 112: \"UNIT\", 113: \"BRKT\", 114: \"DOT\", 115: \"PCT\", 116: \"TAGSTART\", 120: \"direction_tb\", 121: \"direction_bt\", 122: \"direction_rl\", 123: \"direction_lr\", 124: \"PUNCTUATION\", 125: \"UNICODE_TEXT\", 126: \"PLUS\", 127: \"EQUALS\", 128: \"MULT\", 129: \"UNDERSCORE\", 131: \"ARROW_CROSS\", 132: \"ARROW_POINT\", 133: \"ARROW_CIRCLE\", 134: \"ARROW_OPEN\", 135: \"QUOTE\" },\n productions_: [0, [3, 1], [3, 2], [5, 4], [5, 6], [6, 1], [7, 1], [11, 1], [8, 1], [4, 2], [17, 0], [17, 2], [18, 1], [18, 1], [18, 1], [18, 1], [18, 1], [16, 2], [16, 2], [16, 2], [16, 3], [28, 2], [28, 1], [29, 1], [29, 1], [29, 1], [27, 1], [27, 1], [27, 2], [31, 2], [31, 2], [31, 1], [31, 1], [30, 2], [30, 1], [19, 2], [19, 2], [19, 2], [19, 2], [19, 2], [19, 2], [19, 9], [19, 6], [19, 4], [19, 1], [19, 2], [19, 2], [19, 1], [9, 1], [9, 1], [9, 1], [32, 3], [32, 4], [32, 2], [32, 1], [50, 1], [50, 5], [51, 1], [51, 3], [53, 4], [53, 4], [53, 6], [53, 4], [53, 4], [53, 4], [53, 8], [53, 4], [53, 4], [53, 4], [53, 6], [53, 4], [53, 4], [53, 4], [53, 4], [53, 4], [53, 1], [49, 2], [49, 3], [49, 3], [49, 1], [49, 3], [79, 1], [80, 3], [39, 1], [39, 2], [39, 1], [39, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [95, 1], [95, 2], [35, 5], [35, 5], [36, 5], [37, 2], [37, 4], [37, 3], [37, 5], [37, 2], [37, 4], [37, 4], [37, 6], [37, 2], [37, 4], [37, 2], [37, 4], [37, 4], [37, 6], [33, 5], [33, 5], [34, 5], [34, 5], [34, 9], [34, 9], [34, 7], [34, 7], [105, 1], [105, 3], [98, 1], [98, 3], [109, 1], [109, 2], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [84, 1], [84, 1], [84, 1], [84, 1], [84, 1], [84, 1], [96, 1], [96, 1], [96, 1], [96, 1], [55, 1], [55, 2], [99, 1], [99, 2], [119, 1], [119, 1], [119, 1], [119, 1], [43, 1], [43, 1], [43, 1], [43, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1], [130, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 5:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 6:\n yy.parseDirective($$[$0], \"type_directive\");\n break;\n case 7:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 8:\n yy.parseDirective(\"}%%\", \"close_directive\", \"flowchart\");\n break;\n case 10:\n this.$ = [];\n break;\n case 11:\n if (!Array.isArray($$[$0]) || $$[$0].length > 0) {\n $$[$0 - 1].push($$[$0]);\n }\n this.$ = $$[$0 - 1];\n break;\n case 12:\n case 98:\n case 154:\n case 156:\n case 157:\n this.$ = $$[$0];\n break;\n case 19:\n yy.setDirection(\"TB\");\n this.$ = \"TB\";\n break;\n case 20:\n yy.setDirection($$[$0 - 1]);\n this.$ = $$[$0 - 1];\n break;\n case 35:\n this.$ = $$[$0 - 1].nodes;\n break;\n case 36:\n case 37:\n case 38:\n case 39:\n case 40:\n this.$ = [];\n break;\n case 41:\n this.$ = yy.addSubGraph($$[$0 - 6], $$[$0 - 1], $$[$0 - 4]);\n break;\n case 42:\n this.$ = yy.addSubGraph($$[$0 - 3], $$[$0 - 1], $$[$0 - 3]);\n break;\n case 43:\n this.$ = yy.addSubGraph(void 0, $$[$0 - 1], void 0);\n break;\n case 45:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 46:\n case 47:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 51:\n yy.addLink($$[$0 - 2].stmt, $$[$0], $$[$0 - 1]);\n this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0 - 2].nodes) };\n break;\n case 52:\n yy.addLink($$[$0 - 3].stmt, $$[$0 - 1], $$[$0 - 2]);\n this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1].concat($$[$0 - 3].nodes) };\n break;\n case 53:\n this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1] };\n break;\n case 54:\n this.$ = { stmt: $$[$0], nodes: $$[$0] };\n break;\n case 55:\n this.$ = [$$[$0]];\n break;\n case 56:\n this.$ = $$[$0 - 4].concat($$[$0]);\n break;\n case 57:\n this.$ = $$[$0];\n break;\n case 58:\n this.$ = $$[$0 - 2];\n yy.setClass($$[$0 - 2], $$[$0]);\n break;\n case 59:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"square\");\n break;\n case 60:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"doublecircle\");\n break;\n case 61:\n this.$ = $$[$0 - 5];\n yy.addVertex($$[$0 - 5], $$[$0 - 2], \"circle\");\n break;\n case 62:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"ellipse\");\n break;\n case 63:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"stadium\");\n break;\n case 64:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"subroutine\");\n break;\n case 65:\n this.$ = $$[$0 - 7];\n yy.addVertex($$[$0 - 7], $$[$0 - 1], \"rect\", void 0, void 0, void 0, Object.fromEntries([[$$[$0 - 5], $$[$0 - 3]]]));\n break;\n case 66:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"cylinder\");\n break;\n case 67:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"round\");\n break;\n case 68:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"diamond\");\n break;\n case 69:\n this.$ = $$[$0 - 5];\n yy.addVertex($$[$0 - 5], $$[$0 - 2], \"hexagon\");\n break;\n case 70:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"odd\");\n break;\n case 71:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"trapezoid\");\n break;\n case 72:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"inv_trapezoid\");\n break;\n case 73:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"lean_right\");\n break;\n case 74:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"lean_left\");\n break;\n case 75:\n this.$ = $$[$0];\n yy.addVertex($$[$0]);\n break;\n case 76:\n $$[$0 - 1].text = $$[$0];\n this.$ = $$[$0 - 1];\n break;\n case 77:\n case 78:\n $$[$0 - 2].text = $$[$0 - 1];\n this.$ = $$[$0 - 2];\n break;\n case 79:\n this.$ = $$[$0];\n break;\n case 80:\n var inf = yy.destructLink($$[$0], $$[$0 - 2]);\n this.$ = { \"type\": inf.type, \"stroke\": inf.stroke, \"length\": inf.length, \"text\": $$[$0 - 1] };\n break;\n case 81:\n var inf = yy.destructLink($$[$0]);\n this.$ = { \"type\": inf.type, \"stroke\": inf.stroke, \"length\": inf.length };\n break;\n case 82:\n this.$ = $$[$0 - 1];\n break;\n case 83:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 84:\n this.$ = { text: $$[$0 - 1].text + \"\" + $$[$0], type: $$[$0 - 1].type };\n break;\n case 85:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 86:\n this.$ = { text: $$[$0], type: \"markdown\" };\n break;\n case 99:\n case 155:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n case 100:\n case 101:\n this.$ = $$[$0 - 4];\n yy.addClass($$[$0 - 2], $$[$0]);\n break;\n case 102:\n this.$ = $$[$0 - 4];\n yy.setClass($$[$0 - 2], $$[$0]);\n break;\n case 103:\n case 111:\n this.$ = $$[$0 - 1];\n yy.setClickEvent($$[$0 - 1], $$[$0]);\n break;\n case 104:\n case 112:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 105:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 106:\n this.$ = $$[$0 - 4];\n yy.setClickEvent($$[$0 - 4], $$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 4], $$[$0]);\n break;\n case 107:\n case 113:\n this.$ = $$[$0 - 1];\n yy.setLink($$[$0 - 1], $$[$0]);\n break;\n case 108:\n case 114:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 109:\n case 115:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 3], $$[$0 - 2], $$[$0]);\n break;\n case 110:\n case 116:\n this.$ = $$[$0 - 5];\n yy.setLink($$[$0 - 5], $$[$0 - 4], $$[$0]);\n yy.setTooltip($$[$0 - 5], $$[$0 - 2]);\n break;\n case 117:\n this.$ = $$[$0 - 4];\n yy.addVertex($$[$0 - 2], void 0, void 0, $$[$0]);\n break;\n case 118:\n case 120:\n this.$ = $$[$0 - 4];\n yy.updateLink($$[$0 - 2], $$[$0]);\n break;\n case 119:\n this.$ = $$[$0 - 4];\n yy.updateLink([$$[$0 - 2]], $$[$0]);\n break;\n case 121:\n this.$ = $$[$0 - 8];\n yy.updateLinkInterpolate([$$[$0 - 6]], $$[$0 - 2]);\n yy.updateLink([$$[$0 - 6]], $$[$0]);\n break;\n case 122:\n this.$ = $$[$0 - 8];\n yy.updateLinkInterpolate($$[$0 - 6], $$[$0 - 2]);\n yy.updateLink($$[$0 - 6], $$[$0]);\n break;\n case 123:\n this.$ = $$[$0 - 6];\n yy.updateLinkInterpolate([$$[$0 - 4]], $$[$0]);\n break;\n case 124:\n this.$ = $$[$0 - 6];\n yy.updateLinkInterpolate($$[$0 - 4], $$[$0]);\n break;\n case 125:\n case 127:\n this.$ = [$$[$0]];\n break;\n case 126:\n case 128:\n $$[$0 - 2].push($$[$0]);\n this.$ = $$[$0 - 2];\n break;\n case 130:\n this.$ = $$[$0 - 1] + $$[$0];\n break;\n case 152:\n this.$ = $$[$0];\n break;\n case 153:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n case 158:\n this.$ = \"v\";\n break;\n case 159:\n this.$ = \"-\";\n break;\n case 160:\n this.$ = { stmt: \"dir\", value: \"TB\" };\n break;\n case 161:\n this.$ = { stmt: \"dir\", value: \"BT\" };\n break;\n case 162:\n this.$ = { stmt: \"dir\", value: \"RL\" };\n break;\n case 163:\n this.$ = { stmt: \"dir\", value: \"LR\" };\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: 3, 6: 5, 12: $V0, 16: 4, 21: $V1, 22: $V2, 24: $V3 }, { 1: [3] }, { 1: [2, 1] }, { 3: 10, 4: 2, 5: 3, 6: 5, 12: $V0, 16: 4, 21: $V1, 22: $V2, 24: $V3 }, o($V4, $V5, { 17: 11 }), { 7: 12, 13: [1, 13] }, { 16: 14, 21: $V1, 22: $V2, 24: $V3 }, { 16: 15, 21: $V1, 22: $V2, 24: $V3 }, { 25: [1, 16], 26: [1, 17] }, { 13: [2, 5] }, { 1: [2, 2] }, { 1: [2, 9], 18: 18, 19: 19, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 32: 24, 33: 25, 34: 26, 35: 27, 36: 28, 37: 29, 38: $Va, 43: 31, 44: $Vb, 46: $Vc, 48: $Vd, 50: 35, 51: 45, 52: $Ve, 53: 46, 55: 47, 67: $Vf, 68: $Vg, 88: $Vh, 89: $Vi, 90: $Vj, 91: $Vk, 92: $Vl, 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 118: 48, 120: $Vt, 121: $Vu, 122: $Vv, 123: $Vw, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }, { 8: 65, 10: [1, 66], 15: $VD }, o([10, 15], [2, 6]), o($V4, [2, 17]), o($V4, [2, 18]), o($V4, [2, 19]), { 20: [1, 69], 21: [1, 70], 22: $VE, 27: 68, 30: 71 }, o($VF, [2, 11]), o($VF, [2, 12]), o($VF, [2, 13]), o($VF, [2, 14]), o($VF, [2, 15]), o($VF, [2, 16]), { 9: 73, 20: $VG, 21: $VH, 23: $VI, 49: 74, 79: 78, 82: [1, 79], 83: [1, 80] }, { 9: 81, 20: $VG, 21: $VH, 23: $VI }, { 9: 82, 20: $VG, 21: $VH, 23: $VI }, { 9: 83, 20: $VG, 21: $VH, 23: $VI }, { 9: 84, 20: $VG, 21: $VH, 23: $VI }, { 9: 85, 20: $VG, 21: $VH, 23: $VI }, { 9: 87, 20: $VG, 21: $VH, 22: [1, 86], 23: $VI }, o($VF, [2, 44]), { 45: [1, 88] }, { 47: [1, 89] }, o($VF, [2, 47]), o($VJ, [2, 54], { 30: 90, 22: $VE }), { 22: [1, 91] }, { 22: [1, 92] }, { 22: [1, 93] }, { 22: [1, 94] }, { 26: $VK, 52: $VL, 67: $VM, 68: $VN, 85: [1, 98], 93: $VO, 99: 97, 100: [1, 95], 102: [1, 96], 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 99, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($VF, [2, 160]), o($VF, [2, 161]), o($VF, [2, 162]), o($VF, [2, 163]), o($V_, [2, 55]), o($V_, [2, 57], { 54: [1, 117] }), o($V$, [2, 75], { 118: 130, 40: [1, 118], 52: $Ve, 56: [1, 119], 58: [1, 120], 60: [1, 121], 62: [1, 122], 64: [1, 123], 66: [1, 124], 67: $Vf, 68: $Vg, 70: [1, 125], 72: [1, 126], 74: [1, 127], 75: [1, 128], 77: [1, 129], 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }), o($V01, [2, 152]), o($V01, [2, 177]), o($V01, [2, 178]), o($V01, [2, 179]), o($V01, [2, 180]), o($V01, [2, 181]), o($V01, [2, 182]), o($V01, [2, 183]), o($V01, [2, 184]), o($V01, [2, 185]), o($V01, [2, 186]), o($V01, [2, 187]), o($V01, [2, 188]), o($V01, [2, 189]), o($V01, [2, 190]), o($V01, [2, 191]), o($V01, [2, 192]), { 9: 131, 20: $VG, 21: $VH, 23: $VI }, { 11: 132, 14: [1, 133] }, o($V11, [2, 8]), o($V4, [2, 20]), o($V4, [2, 26]), o($V4, [2, 27]), { 21: [1, 134] }, o($V21, [2, 34], { 30: 135, 22: $VE }), o($VF, [2, 35]), { 50: 136, 51: 45, 52: $Ve, 53: 46, 55: 47, 67: $Vf, 68: $Vg, 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 118: 48, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }, o($V31, [2, 48]), o($V31, [2, 49]), o($V31, [2, 50]), o($V41, [2, 79], { 80: 137, 69: [1, 139], 81: [1, 138] }), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 140, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o([52, 67, 68, 69, 81, 93, 97, 107, 108, 111, 113, 114, 124, 125, 126, 127, 128, 129], [2, 81]), o($VF, [2, 36]), o($VF, [2, 37]), o($VF, [2, 38]), o($VF, [2, 39]), o($VF, [2, 40]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 165, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($Vp1, $V5, { 17: 166 }), o($VF, [2, 45]), o($VF, [2, 46]), o($VJ, [2, 53], { 52: $Vq1 }), { 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 99: 168, 104: [1, 169], 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 99, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 97: [1, 170], 105: 171, 107: [1, 172] }, { 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 97: [1, 173], 99: 174, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 99, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 99: 175, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 99, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($V11, [2, 103], { 22: [1, 176], 101: [1, 177] }), o($V11, [2, 107], { 22: [1, 178] }), o($V11, [2, 111], { 117: 101, 119: 180, 22: [1, 179], 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }), o($V11, [2, 113], { 22: [1, 181] }), o($Vr1, [2, 154]), o($Vr1, [2, 156]), o($Vr1, [2, 157]), o($Vr1, [2, 158]), o($Vr1, [2, 159]), o($Vs1, [2, 164]), o($Vs1, [2, 165]), o($Vs1, [2, 166]), o($Vs1, [2, 167]), o($Vs1, [2, 168]), o($Vs1, [2, 169]), o($Vs1, [2, 170]), o($Vs1, [2, 171]), o($Vs1, [2, 172]), o($Vs1, [2, 173]), o($Vs1, [2, 174]), o($Vs1, [2, 175]), o($Vs1, [2, 176]), { 52: $Ve, 55: 182, 67: $Vf, 68: $Vg, 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 118: 48, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 183, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 184, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 186, 42: $V91, 52: $VL, 58: [1, 185], 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 187, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 188, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 189, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 67: [1, 190] }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 191, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 192, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 72: [1, 193], 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 194, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 195, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 196, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($V01, [2, 153]), o($Vt1, [2, 3]), { 8: 197, 15: $VD }, { 15: [2, 7] }, o($V4, [2, 28]), o($V21, [2, 33]), o($VJ, [2, 51], { 30: 198, 22: $VE }), o($V41, [2, 76], { 22: [1, 199] }), { 22: [1, 200] }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 201, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 83: [1, 202], 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($Vs1, [2, 83]), o($Vs1, [2, 85]), o($Vs1, [2, 86]), o($Vs1, [2, 142]), o($Vs1, [2, 143]), o($Vs1, [2, 144]), o($Vs1, [2, 145]), o($Vs1, [2, 146]), o($Vs1, [2, 147]), o($Vs1, [2, 148]), o($Vs1, [2, 149]), o($Vs1, [2, 150]), o($Vs1, [2, 151]), o($Vs1, [2, 87]), o($Vs1, [2, 88]), o($Vs1, [2, 89]), o($Vs1, [2, 90]), o($Vs1, [2, 91]), o($Vs1, [2, 92]), o($Vs1, [2, 93]), o($Vs1, [2, 94]), o($Vs1, [2, 95]), o($Vs1, [2, 96]), o($Vs1, [2, 97]), { 9: 205, 20: $VG, 21: $VH, 22: $V51, 23: $VI, 24: $V61, 26: $V71, 38: $V81, 40: [1, 204], 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 18: 18, 19: 19, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 32: 24, 33: 25, 34: 26, 35: 27, 36: 28, 37: 29, 38: $Va, 42: [1, 206], 43: 31, 44: $Vb, 46: $Vc, 48: $Vd, 50: 35, 51: 45, 52: $Ve, 53: 46, 55: 47, 67: $Vf, 68: $Vg, 88: $Vh, 89: $Vi, 90: $Vj, 91: $Vk, 92: $Vl, 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 118: 48, 120: $Vt, 121: $Vu, 122: $Vv, 123: $Vw, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }, { 22: $VE, 30: 207 }, { 22: [1, 208], 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 180, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: [1, 209] }, { 22: [1, 210] }, { 22: [1, 211], 108: [1, 212] }, o($Vu1, [2, 125]), { 22: [1, 213] }, { 22: [1, 214], 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 180, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: [1, 215], 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 180, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 85: [1, 216] }, o($V11, [2, 105], { 22: [1, 217] }), { 85: [1, 218], 103: [1, 219] }, { 85: [1, 220] }, o($Vr1, [2, 155]), { 85: [1, 221], 103: [1, 222] }, o($V_, [2, 58], { 118: 130, 52: $Ve, 67: $Vf, 68: $Vg, 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 41: [1, 223], 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 57: [1, 224], 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 225, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 59: [1, 226], 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 61: [1, 227], 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 63: [1, 228], 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 65: [1, 229], 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 68: [1, 230] }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 71: [1, 231], 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 73: [1, 232], 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 233, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 41: [1, 234], 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 76: [1, 235], 78: [1, 236], 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 76: [1, 238], 78: [1, 237], 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 9: 239, 20: $VG, 21: $VH, 23: $VI }, o($VJ, [2, 52], { 52: $Vq1 }), o($V41, [2, 78]), o($V41, [2, 77]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 69: [1, 240], 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($V41, [2, 80]), o($Vs1, [2, 84]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 241, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($Vp1, $V5, { 17: 242 }), o($VF, [2, 43]), { 51: 243, 52: $Ve, 53: 46, 55: 47, 67: $Vf, 68: $Vg, 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 118: 48, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }, { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 98: 244, 104: $Vz1, 107: $VA1, 109: 245, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 98: 258, 104: $Vz1, 107: $VA1, 109: 245, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 98: 259, 104: $Vz1, 106: [1, 260], 107: $VA1, 109: 245, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 98: 261, 104: $Vz1, 106: [1, 262], 107: $VA1, 109: 245, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, { 107: [1, 263] }, { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 98: 264, 104: $Vz1, 107: $VA1, 109: 245, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 98: 265, 104: $Vz1, 107: $VA1, 109: 245, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, { 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 99: 266, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 99, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($V11, [2, 104]), { 85: [1, 267] }, o($V11, [2, 108], { 22: [1, 268] }), o($V11, [2, 109]), o($V11, [2, 112]), o($V11, [2, 114], { 22: [1, 269] }), o($V11, [2, 115]), o($V$, [2, 59]), o($V$, [2, 60]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 59: [1, 270], 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($V$, [2, 67]), o($V$, [2, 62]), o($V$, [2, 63]), o($V$, [2, 64]), { 67: [1, 271] }, o($V$, [2, 66]), o($V$, [2, 68]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 73: [1, 272], 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($V$, [2, 70]), o($V$, [2, 71]), o($V$, [2, 73]), o($V$, [2, 72]), o($V$, [2, 74]), o($Vt1, [2, 4]), o([22, 52, 67, 68, 93, 97, 107, 108, 111, 113, 114, 124, 125, 126, 127, 128, 129], [2, 82]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 41: [1, 273], 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 18: 18, 19: 19, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 32: 24, 33: 25, 34: 26, 35: 27, 36: 28, 37: 29, 38: $Va, 42: [1, 274], 43: 31, 44: $Vb, 46: $Vc, 48: $Vd, 50: 35, 51: 45, 52: $Ve, 53: 46, 55: 47, 67: $Vf, 68: $Vg, 88: $Vh, 89: $Vi, 90: $Vj, 91: $Vk, 92: $Vl, 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 118: 48, 120: $Vt, 121: $Vu, 122: $Vv, 123: $Vw, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }, o($V_, [2, 56]), o($V11, [2, 117], { 108: $VG1 }), o($VH1, [2, 127], { 110: 276, 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 104: $Vz1, 107: $VA1, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }), o($VI1, [2, 129]), o($VI1, [2, 131]), o($VI1, [2, 132]), o($VI1, [2, 133]), o($VI1, [2, 134]), o($VI1, [2, 135]), o($VI1, [2, 136]), o($VI1, [2, 137]), o($VI1, [2, 138]), o($VI1, [2, 139]), o($VI1, [2, 140]), o($VI1, [2, 141]), o($V11, [2, 118], { 108: $VG1 }), o($V11, [2, 119], { 108: $VG1 }), { 22: [1, 277] }, o($V11, [2, 120], { 108: $VG1 }), { 22: [1, 278] }, o($Vu1, [2, 126]), o($V11, [2, 100], { 108: $VG1 }), o($V11, [2, 101], { 108: $VG1 }), o($V11, [2, 102], { 117: 101, 119: 180, 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }), o($V11, [2, 106]), { 103: [1, 279] }, { 103: [1, 280] }, { 59: [1, 281] }, { 69: [1, 282] }, { 73: [1, 283] }, { 9: 284, 20: $VG, 21: $VH, 23: $VI }, o($VF, [2, 42]), { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 104: $Vz1, 107: $VA1, 109: 285, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, o($VI1, [2, 130]), { 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 99: 286, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 99, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 99: 287, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 117: 101, 119: 99, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($V11, [2, 110]), o($V11, [2, 116]), o($V$, [2, 61]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 288, 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 141, 85: $Vc1, 86: $Vd1, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, o($V$, [2, 69]), o($Vp1, $V5, { 17: 289 }), o($VH1, [2, 128], { 110: 276, 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 104: $Vz1, 107: $VA1, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }), o($V11, [2, 123], { 117: 101, 119: 180, 22: [1, 290], 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }), o($V11, [2, 124], { 117: 101, 119: 180, 22: [1, 291], 26: $VK, 52: $VL, 67: $VM, 68: $VN, 93: $VO, 107: $VP, 108: $VQ, 111: $VR, 113: $VS, 114: $VT, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 41: [1, 292], 42: $V91, 52: $VL, 67: $VM, 68: $VN, 74: $Va1, 82: $Vb1, 84: 203, 87: 153, 88: $Ve1, 89: $Vf1, 90: $Vg1, 91: $Vh1, 92: $Vi1, 93: $Vj1, 94: $Vk1, 96: 144, 97: $Vl1, 107: $VP, 108: $VQ, 111: $Vm1, 113: $VS, 114: $VT, 115: $Vn1, 116: $Vo1, 117: 150, 124: $VU, 125: $VV, 126: $VW, 127: $VX, 128: $VY, 129: $VZ }, { 18: 18, 19: 19, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 32: 24, 33: 25, 34: 26, 35: 27, 36: 28, 37: 29, 38: $Va, 42: [1, 293], 43: 31, 44: $Vb, 46: $Vc, 48: $Vd, 50: 35, 51: 45, 52: $Ve, 53: 46, 55: 47, 67: $Vf, 68: $Vg, 88: $Vh, 89: $Vi, 90: $Vj, 91: $Vk, 92: $Vl, 93: $Vm, 97: $Vn, 107: $Vo, 108: $Vp, 111: $Vq, 113: $Vr, 114: $Vs, 118: 48, 120: $Vt, 121: $Vu, 122: $Vv, 123: $Vw, 124: $Vx, 125: $Vy, 126: $Vz, 127: $VA, 128: $VB, 129: $VC }, { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 98: 294, 104: $Vz1, 107: $VA1, 109: 245, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, { 22: $Vv1, 67: $Vw1, 68: $Vx1, 88: $Vy1, 98: 295, 104: $Vz1, 107: $VA1, 109: 245, 110: 246, 111: $VB1, 112: $VC1, 113: $VD1, 114: $VE1, 115: $VF1 }, o($V$, [2, 65]), o($VF, [2, 41]), o($V11, [2, 121], { 108: $VG1 }), o($V11, [2, 122], { 108: $VG1 })],\n defaultActions: { 2: [2, 1], 9: [2, 5], 10: [2, 2], 133: [2, 7] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex2() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex2();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex2() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"open_directive\");\n return 12;\n case 1:\n this.begin(\"type_directive\");\n return 13;\n case 2:\n this.popState();\n this.begin(\"arg_directive\");\n return 10;\n case 3:\n this.popState();\n this.popState();\n return 15;\n case 4:\n return 14;\n case 5:\n this.begin(\"acc_title\");\n return 44;\n case 6:\n this.popState();\n return \"acc_title_value\";\n case 7:\n this.begin(\"acc_descr\");\n return 46;\n case 8:\n this.popState();\n return \"acc_descr_value\";\n case 9:\n this.begin(\"acc_descr_multiline\");\n break;\n case 10:\n this.popState();\n break;\n case 11:\n return \"acc_descr_multiline_value\";\n case 12:\n this.begin(\"md_string\");\n break;\n case 13:\n return \"MD_STR\";\n case 14:\n this.popState();\n break;\n case 15:\n this.begin(\"string\");\n break;\n case 16:\n this.popState();\n break;\n case 17:\n return \"STR\";\n case 18:\n return 88;\n case 19:\n return 97;\n case 20:\n return 89;\n case 21:\n return 106;\n case 22:\n return 90;\n case 23:\n return 91;\n case 24:\n this.begin(\"href\");\n break;\n case 25:\n this.popState();\n break;\n case 26:\n return 102;\n case 27:\n this.begin(\"callbackname\");\n break;\n case 28:\n this.popState();\n break;\n case 29:\n this.popState();\n this.begin(\"callbackargs\");\n break;\n case 30:\n return 100;\n case 31:\n this.popState();\n break;\n case 32:\n return 101;\n case 33:\n this.begin(\"click\");\n break;\n case 34:\n this.popState();\n break;\n case 35:\n return 92;\n case 36:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 24;\n case 37:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 24;\n case 38:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 24;\n case 39:\n return 38;\n case 40:\n return 42;\n case 41:\n return 103;\n case 42:\n return 103;\n case 43:\n return 103;\n case 44:\n return 103;\n case 45:\n this.popState();\n return 25;\n case 46:\n this.popState();\n return 26;\n case 47:\n this.popState();\n return 26;\n case 48:\n this.popState();\n return 26;\n case 49:\n this.popState();\n return 26;\n case 50:\n this.popState();\n return 26;\n case 51:\n this.popState();\n return 26;\n case 52:\n this.popState();\n return 26;\n case 53:\n this.popState();\n return 26;\n case 54:\n this.popState();\n return 26;\n case 55:\n this.popState();\n return 26;\n case 56:\n return 120;\n case 57:\n return 121;\n case 58:\n return 122;\n case 59:\n return 123;\n case 60:\n return 107;\n case 61:\n return 113;\n case 62:\n return 54;\n case 63:\n return 68;\n case 64:\n return 52;\n case 65:\n return 20;\n case 66:\n return 108;\n case 67:\n return 128;\n case 68:\n return 83;\n case 69:\n return 83;\n case 70:\n return 83;\n case 71:\n return 83;\n case 72:\n return 82;\n case 73:\n return 82;\n case 74:\n return 82;\n case 75:\n return 60;\n case 76:\n return 61;\n case 77:\n return 62;\n case 78:\n return 63;\n case 79:\n return 64;\n case 80:\n return 65;\n case 81:\n return 66;\n case 82:\n return 70;\n case 83:\n return 71;\n case 84:\n return 56;\n case 85:\n return 57;\n case 86:\n return 111;\n case 87:\n return 114;\n case 88:\n return 129;\n case 89:\n return 126;\n case 90:\n return 115;\n case 91:\n return 127;\n case 92:\n return 127;\n case 93:\n return 116;\n case 94:\n return 74;\n case 95:\n return 94;\n case 96:\n return \"SEP\";\n case 97:\n return 93;\n case 98:\n return 67;\n case 99:\n return 76;\n case 100:\n return 75;\n case 101:\n return 78;\n case 102:\n return 77;\n case 103:\n return 124;\n case 104:\n return 125;\n case 105:\n return 69;\n case 106:\n return 58;\n case 107:\n return 59;\n case 108:\n return 40;\n case 109:\n return 41;\n case 110:\n return 72;\n case 111:\n return 73;\n case 112:\n return 135;\n case 113:\n return 21;\n case 114:\n return 22;\n case 115:\n return 23;\n }\n },\n rules: [/^(?:%%\\{)/, /^(?:((?:(?!\\}%%)[^:.])*))/, /^(?::)/, /^(?:\\}%%)/, /^(?:((?:(?!\\}%%).|\\n)*))/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:[\"][`])/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:style\\b)/, /^(?:default\\b)/, /^(?:linkStyle\\b)/, /^(?:interpolate\\b)/, /^(?:classDef\\b)/, /^(?:class\\b)/, /^(?:href[\\s]+[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:call[\\s]+)/, /^(?:\\([\\s]*\\))/, /^(?:\\()/, /^(?:[^(]*)/, /^(?:\\))/, /^(?:[^)]*)/, /^(?:click[\\s]+)/, /^(?:[\\s\\n])/, /^(?:[^\\s\\n]*)/, /^(?:flowchart-elk\\b)/, /^(?:graph\\b)/, /^(?:flowchart\\b)/, /^(?:subgraph\\b)/, /^(?:end\\b\\s*)/, /^(?:_self\\b)/, /^(?:_blank\\b)/, /^(?:_parent\\b)/, /^(?:_top\\b)/, /^(?:(\\r?\\n)*\\s*\\n)/, /^(?:\\s*LR\\b)/, /^(?:\\s*RL\\b)/, /^(?:\\s*TB\\b)/, /^(?:\\s*BT\\b)/, /^(?:\\s*TD\\b)/, /^(?:\\s*BR\\b)/, /^(?:\\s*<)/, /^(?:\\s*>)/, /^(?:\\s*\\^)/, /^(?:\\s*v\\b)/, /^(?:.*direction\\s+TB[^\\n]*)/, /^(?:.*direction\\s+BT[^\\n]*)/, /^(?:.*direction\\s+RL[^\\n]*)/, /^(?:.*direction\\s+LR[^\\n]*)/, /^(?:[0-9]+)/, /^(?:#)/, /^(?::::)/, /^(?::)/, /^(?:&)/, /^(?:;)/, /^(?:,)/, /^(?:\\*)/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?:\\s*~~[\\~]+\\s*)/, /^(?:\\s*[xo<]?--\\s*)/, /^(?:\\s*[xo<]?==\\s*)/, /^(?:\\s*[xo<]?-\\.\\s*)/, /^(?:\\(-)/, /^(?:-\\))/, /^(?:\\(\\[)/, /^(?:\\]\\))/, /^(?:\\[\\[)/, /^(?:\\]\\])/, /^(?:\\[\\|)/, /^(?:\\[\\()/, /^(?:\\)\\])/, /^(?:\\(\\(\\()/, /^(?:\\)\\)\\))/, /^(?:-)/, /^(?:\\.)/, /^(?:[\\_])/, /^(?:\\+)/, /^(?:%)/, /^(?:=)/, /^(?:=)/, /^(?:<)/, /^(?:>)/, /^(?:\\^)/, /^(?:\\\\\\|)/, /^(?:v\\b)/, /^(?:[A-Za-z]+)/, /^(?:\\\\\\])/, /^(?:\\[\\/)/, /^(?:\\/\\])/, /^(?:\\[\\\\)/, /^(?:[!\"#$%&'*+,-.`?\\\\_/])/, /^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/, /^(?:\\|)/, /^(?:\\()/, /^(?:\\))/, /^(?:\\[)/, /^(?:\\])/, /^(?:\\{)/, /^(?:\\})/, /^(?:\")/, /^(?:(\\r?\\n)+)/, /^(?:\\s)/, /^(?:$)/],\n conditions: { \"close_directive\": { \"rules\": [], \"inclusive\": false }, \"arg_directive\": { \"rules\": [3, 4], \"inclusive\": false }, \"type_directive\": { \"rules\": [2, 3], \"inclusive\": false }, \"open_directive\": { \"rules\": [1], \"inclusive\": false }, \"callbackargs\": { \"rules\": [31, 32], \"inclusive\": false }, \"callbackname\": { \"rules\": [28, 29, 30], \"inclusive\": false }, \"href\": { \"rules\": [25, 26], \"inclusive\": false }, \"click\": { \"rules\": [34, 35], \"inclusive\": false }, \"vertex\": { \"rules\": [], \"inclusive\": false }, \"dir\": { \"rules\": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [10, 11], \"inclusive\": false }, \"acc_descr\": { \"rules\": [8], \"inclusive\": false }, \"acc_title\": { \"rules\": [6], \"inclusive\": false }, \"md_string\": { \"rules\": [13, 14], \"inclusive\": false }, \"string\": { \"rules\": [16, 17], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 5, 7, 9, 12, 15, 18, 19, 20, 21, 22, 23, 24, 27, 33, 36, 37, 38, 39, 40, 41, 42, 43, 44, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst MERMAID_DOM_ID_PREFIX = \"flowchart-\";\nlet vertexCounter = 0;\nlet config = getConfig();\nlet vertices = {};\nlet edges = [];\nlet classes = {};\nlet subGraphs = [];\nlet subGraphLookup = {};\nlet tooltips = {};\nlet subCount = 0;\nlet firstGraphFlag = true;\nlet direction;\nlet version;\nlet funs = [];\nconst sanitizeText = (txt) => common.sanitizeText(txt, config);\nconst parseDirective = function(statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\nconst lookUpDomId = function(id) {\n const veritceKeys = Object.keys(vertices);\n for (const veritceKey of veritceKeys) {\n if (vertices[veritceKey].id === id) {\n return vertices[veritceKey].domId;\n }\n }\n return id;\n};\nconst addVertex = function(_id, textObj, type, style, classes2, dir, props = {}) {\n let txt;\n let id = _id;\n if (id === void 0) {\n return;\n }\n if (id.trim().length === 0) {\n return;\n }\n if (vertices[id] === void 0) {\n vertices[id] = {\n id,\n labelType: \"text\",\n domId: MERMAID_DOM_ID_PREFIX + id + \"-\" + vertexCounter,\n styles: [],\n classes: []\n };\n }\n vertexCounter++;\n if (textObj !== void 0) {\n config = getConfig();\n txt = sanitizeText(textObj.text.trim());\n vertices[id].labelType = textObj.type;\n if (txt[0] === '\"' && txt[txt.length - 1] === '\"') {\n txt = txt.substring(1, txt.length - 1);\n }\n vertices[id].text = txt;\n } else {\n if (vertices[id].text === void 0) {\n vertices[id].text = _id;\n }\n }\n if (type !== void 0) {\n vertices[id].type = type;\n }\n if (style !== void 0 && style !== null) {\n style.forEach(function(s) {\n vertices[id].styles.push(s);\n });\n }\n if (classes2 !== void 0 && classes2 !== null) {\n classes2.forEach(function(s) {\n vertices[id].classes.push(s);\n });\n }\n if (dir !== void 0) {\n vertices[id].dir = dir;\n }\n if (vertices[id].props === void 0) {\n vertices[id].props = props;\n } else if (props !== void 0) {\n Object.assign(vertices[id].props, props);\n }\n};\nconst addSingleLink = function(_start, _end, type) {\n let start = _start;\n let end = _end;\n const edge = { start, end, type: void 0, text: \"\", labelType: \"text\" };\n log.info(\"abc78 Got edge...\", edge);\n const linkTextObj = type.text;\n if (linkTextObj !== void 0) {\n edge.text = sanitizeText(linkTextObj.text.trim());\n if (edge.text[0] === '\"' && edge.text[edge.text.length - 1] === '\"') {\n edge.text = edge.text.substring(1, edge.text.length - 1);\n }\n edge.labelType = linkTextObj.type;\n }\n if (type !== void 0) {\n edge.type = type.type;\n edge.stroke = type.stroke;\n edge.length = type.length;\n }\n edges.push(edge);\n};\nconst addLink = function(_start, _end, type) {\n log.info(\"addLink (abc78)\", _start, _end, type);\n let i, j;\n for (i = 0; i < _start.length; i++) {\n for (j = 0; j < _end.length; j++) {\n addSingleLink(_start[i], _end[j], type);\n }\n }\n};\nconst updateLinkInterpolate = function(positions, interp) {\n positions.forEach(function(pos) {\n if (pos === \"default\") {\n edges.defaultInterpolate = interp;\n } else {\n edges[pos].interpolate = interp;\n }\n });\n};\nconst updateLink = function(positions, style) {\n positions.forEach(function(pos) {\n if (pos === \"default\") {\n edges.defaultStyle = style;\n } else {\n if (utils.isSubstringInArray(\"fill\", style) === -1) {\n style.push(\"fill:none\");\n }\n edges[pos].style = style;\n }\n });\n};\nconst addClass = function(ids, style) {\n ids.split(\",\").forEach(function(id) {\n if (classes[id] === void 0) {\n classes[id] = { id, styles: [], textStyles: [] };\n }\n if (style !== void 0 && style !== null) {\n style.forEach(function(s) {\n if (s.match(\"color\")) {\n const newStyle = s.replace(\"fill\", \"bgFill\").replace(\"color\", \"fill\");\n classes[id].textStyles.push(newStyle);\n }\n classes[id].styles.push(s);\n });\n }\n });\n};\nconst setDirection = function(dir) {\n direction = dir;\n if (direction.match(/.*)) {\n direction = \"RL\";\n }\n if (direction.match(/.*\\^/)) {\n direction = \"BT\";\n }\n if (direction.match(/.*>/)) {\n direction = \"LR\";\n }\n if (direction.match(/.*v/)) {\n direction = \"TB\";\n }\n if (direction === \"TD\") {\n direction = \"TB\";\n }\n};\nconst setClass = function(ids, className) {\n ids.split(\",\").forEach(function(_id) {\n let id = _id;\n if (vertices[id] !== void 0) {\n vertices[id].classes.push(className);\n }\n if (subGraphLookup[id] !== void 0) {\n subGraphLookup[id].classes.push(className);\n }\n });\n};\nconst setTooltip = function(ids, tooltip) {\n ids.split(\",\").forEach(function(id) {\n if (tooltip !== void 0) {\n tooltips[version === \"gen-1\" ? lookUpDomId(id) : id] = sanitizeText(tooltip);\n }\n });\n};\nconst setClickFun = function(id, functionName, functionArgs) {\n let domId = lookUpDomId(id);\n if (getConfig().securityLevel !== \"loose\") {\n return;\n }\n if (functionName === void 0) {\n return;\n }\n let argList = [];\n if (typeof functionArgs === \"string\") {\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n if (argList.length === 0) {\n argList.push(id);\n }\n if (vertices[id] !== void 0) {\n vertices[id].haveCallback = true;\n funs.push(function() {\n const elem = document.querySelector(`[id=\"${domId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n \"click\",\n function() {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n};\nconst setLink = function(ids, linkStr, target) {\n ids.split(\",\").forEach(function(id) {\n if (vertices[id] !== void 0) {\n vertices[id].link = utils.formatUrl(linkStr, config);\n vertices[id].linkTarget = target;\n }\n });\n setClass(ids, \"clickable\");\n};\nconst getTooltip = function(id) {\n if (tooltips.hasOwnProperty(id)) {\n return tooltips[id];\n }\n return void 0;\n};\nconst setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(\",\").forEach(function(id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, \"clickable\");\n};\nconst bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\nconst getDirection = function() {\n return direction.trim();\n};\nconst getVertices = function() {\n return vertices;\n};\nconst getEdges = function() {\n return edges;\n};\nconst getClasses = function() {\n return classes;\n};\nconst setupToolTips = function(element) {\n let tooltipElem = select(\".mermaidTooltip\");\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select(\"body\").append(\"div\").attr(\"class\", \"mermaidTooltip\").style(\"opacity\", 0);\n }\n const svg = select(element).select(\"svg\");\n const nodes = svg.selectAll(\"g.node\");\n nodes.on(\"mouseover\", function() {\n const el = select(this);\n const title = el.attr(\"title\");\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n tooltipElem.transition().duration(200).style(\"opacity\", \".9\");\n tooltipElem.text(el.attr(\"title\")).style(\"left\", window.scrollX + rect.left + (rect.right - rect.left) / 2 + \"px\").style(\"top\", window.scrollY + rect.top - 14 + document.body.scrollTop + \"px\");\n tooltipElem.html(tooltipElem.html().replace(/<br\\/>/g, \"
\"));\n el.classed(\"hover\", true);\n }).on(\"mouseout\", function() {\n tooltipElem.transition().duration(500).style(\"opacity\", 0);\n const el = select(this);\n el.classed(\"hover\", false);\n });\n};\nfuns.push(setupToolTips);\nconst clear = function(ver = \"gen-1\") {\n vertices = {};\n classes = {};\n edges = [];\n funs = [setupToolTips];\n subGraphs = [];\n subGraphLookup = {};\n subCount = 0;\n tooltips = {};\n firstGraphFlag = true;\n version = ver;\n clear$1();\n};\nconst setGen = (ver) => {\n version = ver || \"gen-2\";\n};\nconst defaultStyle = function() {\n return \"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;\";\n};\nconst addSubGraph = function(_id, list, _title) {\n let id = _id.text.trim();\n let title = _title.text;\n if (_id === _title && _title.text.match(/\\s/)) {\n id = void 0;\n }\n function uniq(a) {\n const prims = { boolean: {}, number: {}, string: {} };\n const objs = [];\n let dir2;\n const nodeList2 = a.filter(function(item) {\n const type = typeof item;\n if (item.stmt && item.stmt === \"dir\") {\n dir2 = item.value;\n return false;\n }\n if (item.trim() === \"\") {\n return false;\n }\n if (type in prims) {\n return prims[type].hasOwnProperty(item) ? false : prims[type][item] = true;\n } else {\n return objs.includes(item) ? false : objs.push(item);\n }\n });\n return { nodeList: nodeList2, dir: dir2 };\n }\n let nodeList = [];\n const { nodeList: nl, dir } = uniq(nodeList.concat.apply(nodeList, list));\n nodeList = nl;\n if (version === \"gen-1\") {\n for (let i = 0; i < nodeList.length; i++) {\n nodeList[i] = lookUpDomId(nodeList[i]);\n }\n }\n id = id || \"subGraph\" + subCount;\n title = title || \"\";\n title = sanitizeText(title);\n subCount = subCount + 1;\n const subGraph = {\n id,\n nodes: nodeList,\n title: title.trim(),\n classes: [],\n dir,\n labelType: _title.type\n };\n log.info(\"Adding\", subGraph.id, subGraph.nodes, subGraph.dir);\n subGraph.nodes = makeUniq(subGraph, subGraphs).nodes;\n subGraphs.push(subGraph);\n subGraphLookup[id] = subGraph;\n return id;\n};\nconst getPosForId = function(id) {\n for (const [i, subGraph] of subGraphs.entries()) {\n if (subGraph.id === id) {\n return i;\n }\n }\n return -1;\n};\nlet secCount = -1;\nconst posCrossRef = [];\nconst indexNodes2 = function(id, pos) {\n const nodes = subGraphs[pos].nodes;\n secCount = secCount + 1;\n if (secCount > 2e3) {\n return;\n }\n posCrossRef[secCount] = pos;\n if (subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0\n };\n }\n let count = 0;\n let posCount = 1;\n while (count < nodes.length) {\n const childPos = getPosForId(nodes[count]);\n if (childPos >= 0) {\n const res = indexNodes2(id, childPos);\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count\n };\n } else {\n posCount = posCount + res.count;\n }\n }\n count = count + 1;\n }\n return {\n result: false,\n count: posCount\n };\n};\nconst getDepthFirstPos = function(pos) {\n return posCrossRef[pos];\n};\nconst indexNodes = function() {\n secCount = -1;\n if (subGraphs.length > 0) {\n indexNodes2(\"none\", subGraphs.length - 1);\n }\n};\nconst getSubGraphs = function() {\n return subGraphs;\n};\nconst firstGraph = () => {\n if (firstGraphFlag) {\n firstGraphFlag = false;\n return true;\n }\n return false;\n};\nconst destructStartLink = (_str) => {\n let str = _str.trim();\n let type = \"arrow_open\";\n switch (str[0]) {\n case \"<\":\n type = \"arrow_point\";\n str = str.slice(1);\n break;\n case \"x\":\n type = \"arrow_cross\";\n str = str.slice(1);\n break;\n case \"o\":\n type = \"arrow_circle\";\n str = str.slice(1);\n break;\n }\n let stroke = \"normal\";\n if (str.includes(\"=\")) {\n stroke = \"thick\";\n }\n if (str.includes(\".\")) {\n stroke = \"dotted\";\n }\n return { type, stroke };\n};\nconst countChar = (char, str) => {\n const length = str.length;\n let count = 0;\n for (let i = 0; i < length; ++i) {\n if (str[i] === char) {\n ++count;\n }\n }\n return count;\n};\nconst destructEndLink = (_str) => {\n const str = _str.trim();\n let line = str.slice(0, -1);\n let type = \"arrow_open\";\n switch (str.slice(-1)) {\n case \"x\":\n type = \"arrow_cross\";\n if (str[0] === \"x\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n case \">\":\n type = \"arrow_point\";\n if (str[0] === \"<\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n case \"o\":\n type = \"arrow_circle\";\n if (str[0] === \"o\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n }\n let stroke = \"normal\";\n let length = line.length - 1;\n if (line[0] === \"=\") {\n stroke = \"thick\";\n }\n if (line[0] === \"~\") {\n stroke = \"invisible\";\n }\n let dots = countChar(\".\", line);\n if (dots) {\n stroke = \"dotted\";\n length = dots;\n }\n return { type, stroke, length };\n};\nconst destructLink = (_str, _startStr) => {\n const info = destructEndLink(_str);\n let startInfo;\n if (_startStr) {\n startInfo = destructStartLink(_startStr);\n if (startInfo.stroke !== info.stroke) {\n return { type: \"INVALID\", stroke: \"INVALID\" };\n }\n if (startInfo.type === \"arrow_open\") {\n startInfo.type = info.type;\n } else {\n if (startInfo.type !== info.type) {\n return { type: \"INVALID\", stroke: \"INVALID\" };\n }\n startInfo.type = \"double_\" + startInfo.type;\n }\n if (startInfo.type === \"double_arrow\") {\n startInfo.type = \"double_arrow_point\";\n }\n startInfo.length = info.length;\n return startInfo;\n }\n return info;\n};\nconst exists = (allSgs, _id) => {\n let res = false;\n allSgs.forEach((sg) => {\n const pos = sg.nodes.indexOf(_id);\n if (pos >= 0) {\n res = true;\n }\n });\n return res;\n};\nconst makeUniq = (sg, allSubgraphs) => {\n const res = [];\n sg.nodes.forEach((_id, pos) => {\n if (!exists(allSubgraphs, _id)) {\n res.push(sg.nodes[pos]);\n }\n });\n return { nodes: res };\n};\nconst lex = {\n firstGraph\n};\nconst flowDb = {\n parseDirective,\n defaultConfig: () => defaultConfig.flowchart,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n addVertex,\n lookUpDomId,\n addLink,\n updateLinkInterpolate,\n updateLink,\n addClass,\n setDirection,\n setClass,\n setTooltip,\n getTooltip,\n setClickEvent,\n setLink,\n bindFunctions,\n getDirection,\n getVertices,\n getEdges,\n getClasses,\n clear,\n setGen,\n defaultStyle,\n addSubGraph,\n getDepthFirstPos,\n indexNodes,\n getSubGraphs,\n destructLink,\n lex,\n exists,\n makeUniq,\n setDiagramTitle,\n getDiagramTitle\n};\nconst db = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n addClass,\n addLink,\n addSingleLink,\n addSubGraph,\n addVertex,\n bindFunctions,\n clear,\n default: flowDb,\n defaultStyle,\n destructLink,\n firstGraph,\n getClasses,\n getDepthFirstPos,\n getDirection,\n getEdges,\n getSubGraphs,\n getTooltip,\n getVertices,\n indexNodes,\n lex,\n lookUpDomId,\n parseDirective,\n setClass,\n setClickEvent,\n setDirection,\n setGen,\n setLink,\n updateLink,\n updateLinkInterpolate\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n db as d,\n flowDb as f,\n parser$1 as p\n};\n"],"names":["parser","o","k","v","o2","l","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$Vr","$Vs","$Vt","$Vu","$Vv","$Vw","$Vx","$Vy","$Vz","$VA","$VB","$VC","$VD","$VE","$VF","$VG","$VH","$VI","$VJ","$VK","$VL","$VM","$VN","$VO","$VP","$VQ","$VR","$VS","$VT","$VU","$VV","$VW","$VX","$VY","$VZ","$V_","$V$","$V01","$V11","$V21","$V31","$V41","$V51","$V61","$V71","$V81","$V91","$Va1","$Vb1","$Vc1","$Vd1","$Ve1","$Vf1","$Vg1","$Vh1","$Vi1","$Vj1","$Vk1","$Vl1","$Vm1","$Vn1","$Vo1","$Vp1","$Vq1","$Vr1","$Vs1","$Vt1","$Vu1","$Vv1","$Vw1","$Vx1","$Vy1","$Vz1","$VA1","$VB1","$VC1","$VD1","$VE1","$VF1","$VG1","$VH1","$VI1","parser2","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","inf","str","hash","error","input","self","stack","tstack","vstack","lstack","table","TERROR","EOF","args","lexer2","sharedState","yyloc","ranges","lex2","token","symbol","state","action","r","yyval","p","len","newState","expected","errStr","lexer","ch","lines","oldLines","n","past","next","pre","c","match","indexed_rule","backup","tempMatch","index","rules","i","condition","yy_","$avoiding_name_collisions","YY_START","Parser","parser$1","MERMAID_DOM_ID_PREFIX","vertexCounter","config","getConfig","vertices","edges","classes","subGraphs","subGraphLookup","tooltips","subCount","firstGraphFlag","direction","version","funs","sanitizeText","txt","common","parseDirective","statement","context","type","mermaidAPI","lookUpDomId","id","veritceKeys","veritceKey","addVertex","_id","textObj","style","classes2","dir","props","s","addSingleLink","_start","_end","edge","log","linkTextObj","addLink","j","updateLinkInterpolate","positions","interp","pos","updateLink","utils","addClass","ids","newStyle","setDirection","setClass","className","setTooltip","tooltip","setClickFun","functionName","functionArgs","domId","argList","item","elem","setLink","linkStr","target","getTooltip","setClickEvent","bindFunctions","element","fun","getDirection","getVertices","getEdges","getClasses","setupToolTips","tooltipElem","select","el","rect","clear","ver","clear$1","setGen","defaultStyle","addSubGraph","list","_title","title","uniq","a","prims","objs","dir2","nodeList","nl","subGraph","makeUniq","getPosForId","secCount","posCrossRef","indexNodes2","nodes","count","posCount","childPos","res","getDepthFirstPos","indexNodes","getSubGraphs","firstGraph","destructStartLink","_str","stroke","countChar","char","length","destructEndLink","line","dots","destructLink","_startStr","info","startInfo","exists","allSgs","sg","allSubgraphs","lex","flowDb","defaultConfig","setAccTitle","getAccTitle","getAccDescription","setAccDescription","setDiagramTitle","getDiagramTitle","db"],"mappings":"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IAAK,GAAG,EAAGC,EAAO,CAAC,GAAI,GAAI,EAAE,EAAGC,GAAO,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,GAAO,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAA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C,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAA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K,IACH,YAAK,SAAQ,EACN,GACT,IAAK,IACH,YAAK,SAAQ,EACN,GACT,IAAK,IACH,YAAK,SAAQ,EACN,GACT,IAAK,IACH,YAAK,SAAQ,EACN,GACT,IAAK,IACH,YAAK,SAAQ,EACN,GACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,MACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAAO,KACT,IAAK,KACH,MAAO,KACT,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAA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","x_google_ignoreList":[0]}
\ No newline at end of file
diff --git a/docs/assets/flowDiagram-698c8d5d-a7c20e22.js b/docs/assets/flowDiagram-698c8d5d-78fca969.js
similarity index 95%
rename from docs/assets/flowDiagram-698c8d5d-a7c20e22.js
rename to docs/assets/flowDiagram-698c8d5d-78fca969.js
index b98013ae..b5c192b6 100644
--- a/docs/assets/flowDiagram-698c8d5d-a7c20e22.js
+++ b/docs/assets/flowDiagram-698c8d5d-78fca969.js
@@ -1,5 +1,5 @@
-import{p as St,f as W}from"./flowDb-8f9fc471-1afb4b26.js";import{h as S,u as Lt,r as Et,p as _t,l as Tt,d as D,f as tt,G as Nt}from"./layout-1a625a74.js";import{h as x,W as P,X as z,t as et,c as J,j as rt,l as M,V,U as At}from"./intro.stories-4d939548.js";import{b as N,c as at,i as nt,d as _,e as st,g as it,f as Ct,a as It,s as Bt}from"./styles-ff678862-9504fffa.js";import{l as Mt}from"./line-0cec4b1f.js";import"./dayjs.min-1b995edc.js";import"./_baseSet-db0c20a6.js";import"./_getTag-edecb89a.js";import"./isSymbol-50749e90.js";import"./isObject-32699ff3.js";import"./toString-25ea340b.js";import"./parseCss-afe2fffb.js";import"./index-1d070ae9.js";import"./index-20ac22d7.js";import"./iframe-8b410132.js";import"../sb-preview/runtime.js";import"./_commonjsHelpers-de833af9.js";import"./index-d37d4223.js";import"./now-bd49f550.js";import"./chunk-S4VUQJ4A-6012e64b.js";import"./index-e04ae519.js";import"./index-356e4a49.js";import"./jsx-runtime-bcef64ff.js";import"./Table-5b2980cc.js";import"./_color-087aa1f8.js";import"./index-f12770ea.js";import"./index-4c4adb72-8163d4b8.js";import"./edges-b00f0ec2-fbc7a231.js";import"./createText-285e50b4-3c775375.js";import"./svgDraw-5d8a058e-2897ef7d.js";import"./array-9f3ba611.js";import"./path-53f90ab3.js";function Dt(r){if(!r.ok)throw new Error(r.status+" "+r.statusText);return r.text()}function Rt(r,e){return fetch(r,e).then(Dt)}function Gt(r){return(e,t)=>Rt(e,t).then(n=>new DOMParser().parseFromString(n,r))}var Pt=Gt("image/svg+xml"),X={normal:$t,vee:Wt,undirected:Vt};function Ut(r){X=r}function $t(r,e,t,n){var a=r.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto"),s=a.append("path").attr("d","M 0 0 L 10 5 L 0 10 z").style("stroke-width",1).style("stroke-dasharray","1,0");N(s,t[n+"Style"]),t[n+"Class"]&&s.attr("class",t[n+"Class"])}function Wt(r,e,t,n){var a=r.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto"),s=a.append("path").attr("d","M 0 0 L 10 5 L 0 10 L 4 5 z").style("stroke-width",1).style("stroke-dasharray","1,0");N(s,t[n+"Style"]),t[n+"Class"]&&s.attr("class",t[n+"Class"])}function Vt(r,e,t,n){var a=r.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto"),s=a.append("path").attr("d","M 0 5 L 10 5").style("stroke-width",1).style("stroke-dasharray","1,0");N(s,t[n+"Style"]),t[n+"Class"]&&s.attr("class",t[n+"Class"])}function zt(r,e){var t=r;return t.node().appendChild(e.label),N(t,e.labelStyle),t}function Xt(r,e){for(var t=r.append("text"),n=Yt(e.label).split(`
+import{p as St,f as W}from"./flowDb-8f9fc471-183d3c57.js";import{h as S,u as Lt,r as Et,p as _t,l as Tt,d as D,f as tt,G as Nt}from"./layout-6e761a00.js";import{h as x,W as P,X as z,t as et,c as J,j as rt,l as M,V,U as At}from"./intro.stories-6bb6b497.js";import{b as N,c as at,i as nt,d as _,e as st,g as it,f as Ct,a as It,s as Bt}from"./styles-ff678862-5c1d9917.js";import{l as Mt}from"./line-16ea319c.js";import"./dayjs.min-1b995edc.js";import"./_baseSet-db0c20a6.js";import"./_getTag-edecb89a.js";import"./isSymbol-50749e90.js";import"./isObject-32699ff3.js";import"./toString-25ea340b.js";import"./parseCss-6d58d2d1.js";import"./index-82fcde9f.js";import"./index-54730943.js";import"./iframe-0b438e8e.js";import"../sb-preview/runtime.js";import"./_commonjsHelpers-de833af9.js";import"./index-d37d4223.js";import"./now-bd49f550.js";import"./chunk-S4VUQJ4A-89907381.js";import"./index-e04ae519.js";import"./index-356e4a49.js";import"./jsx-runtime-f67a1dbf.js";import"./Table-d8495df8.js";import"./_color-087aa1f8.js";import"./index-97648d8f.js";import"./index-4c4adb72-a766ddbf.js";import"./edges-b00f0ec2-8fed315f.js";import"./createText-285e50b4-d331e256.js";import"./svgDraw-5d8a058e-5b68b2dd.js";import"./array-9f3ba611.js";import"./path-53f90ab3.js";function Dt(r){if(!r.ok)throw new Error(r.status+" "+r.statusText);return r.text()}function Rt(r,e){return fetch(r,e).then(Dt)}function Gt(r){return(e,t)=>Rt(e,t).then(n=>new DOMParser().parseFromString(n,r))}var Pt=Gt("image/svg+xml"),X={normal:$t,vee:Wt,undirected:Vt};function Ut(r){X=r}function $t(r,e,t,n){var a=r.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto"),s=a.append("path").attr("d","M 0 0 L 10 5 L 0 10 z").style("stroke-width",1).style("stroke-dasharray","1,0");N(s,t[n+"Style"]),t[n+"Class"]&&s.attr("class",t[n+"Class"])}function Wt(r,e,t,n){var a=r.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto"),s=a.append("path").attr("d","M 0 0 L 10 5 L 0 10 L 4 5 z").style("stroke-width",1).style("stroke-dasharray","1,0");N(s,t[n+"Style"]),t[n+"Class"]&&s.attr("class",t[n+"Class"])}function Vt(r,e,t,n){var a=r.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto"),s=a.append("path").attr("d","M 0 5 L 10 5").style("stroke-width",1).style("stroke-dasharray","1,0");N(s,t[n+"Style"]),t[n+"Class"]&&s.attr("class",t[n+"Class"])}function zt(r,e){var t=r;return t.node().appendChild(e.label),N(t,e.labelStyle),t}function Xt(r,e){for(var t=r.append("text"),n=Yt(e.label).split(`
`),a=0;a0}function T(r,e,t){var n=r.x,a=r.y,s=[],i=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;e.forEach(function(p){i=Math.min(i,p.x),o=Math.min(o,p.y)});for(var c=n-r.width/2-i,d=a-r.height/2-o,l=0;l1&&s.sort(function(p,g){var f=p.x-t.x,y=p.y-t.y,k=Math.sqrt(f*f+y*y),I=g.x-t.x,E=g.y-t.y,U=Math.sqrt(I*I+E*E);return kMath.abs(a)*o?(s<0&&(o=-o),c=s===0?0:o*a/s,d=o):(a<0&&(i=-i),c=i,d=a===0?0:i*s/a),{x:t+c,y:n+d}}var Q={rect:ie,ellipse:oe,circle:le,diamond:ce};function se(r){Q=r}function ie(r,e,t){var n=r.insert("rect",":first-child").attr("rx",t.rx).attr("ry",t.ry).attr("x",-e.width/2).attr("y",-e.height/2).attr("width",e.width).attr("height",e.height);return t.intersect=function(a){return Z(t,a)},n}function oe(r,e,t){var n=e.width/2,a=e.height/2,s=r.insert("ellipse",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("rx",n).attr("ry",a);return t.intersect=function(i){return lt(t,n,a,i)},s}function le(r,e,t){var n=Math.max(e.width,e.height)/2,a=r.insert("circle",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("r",n);return t.intersect=function(s){return ae(t,n,s)},a}function ce(r,e,t){var n=e.width*Math.SQRT2/2,a=e.height*Math.SQRT2/2,s=[{x:0,y:-a},{x:-n,y:0},{x:0,y:a},{x:n,y:0}],i=r.insert("polygon",":first-child").attr("points",s.map(function(o){return o.x+","+o.y}).join(" "));return t.intersect=function(o){return T(t,s,o)},i}function de(){var r=function(e,t){fe(t);var n=R(e,"output"),a=R(n,"clusters"),s=R(n,"edgePaths"),i=H(R(n,"edgeLabels"),t),o=q(R(n,"nodes"),t,Q);Tt(t),re(o,t),ee(i,t),F(s,t,X);var c=Y(a,t);te(c,t),pe(t)};return r.createNodes=function(e){return arguments.length?(jt(e),r):q},r.createClusters=function(e){return arguments.length?(Ht(e),r):Y},r.createEdgeLabels=function(e){return arguments.length?(Ft(e),r):H},r.createEdgePaths=function(e){return arguments.length?(qt(e),r):F},r.shapes=function(e){return arguments.length?(se(e),r):Q},r.arrows=function(e){return arguments.length?(Ut(e),r):X},r}var he={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},ue={arrowhead:"normal",curve:P};function fe(r){r.nodes().forEach(function(e){var t=r.node(e);!S(t,"label")&&!r.children(e).length&&(t.label=e),S(t,"paddingX")&&D(t,{paddingLeft:t.paddingX,paddingRight:t.paddingX}),S(t,"paddingY")&&D(t,{paddingTop:t.paddingY,paddingBottom:t.paddingY}),S(t,"padding")&&D(t,{paddingLeft:t.padding,paddingRight:t.padding,paddingTop:t.padding,paddingBottom:t.padding}),D(t,he),tt(["paddingLeft","paddingRight","paddingTop","paddingBottom"],function(n){t[n]=Number(t[n])}),S(t,"width")&&(t._prevWidth=t.width),S(t,"height")&&(t._prevHeight=t.height)}),r.edges().forEach(function(e){var t=r.edge(e);S(t,"label")||(t.label=""),D(t,ue)})}function pe(r){tt(r.nodes(),function(e){var t=r.node(e);S(t,"_prevWidth")?t.width=t._prevWidth:delete t.width,S(t,"_prevHeight")?t.height=t._prevHeight:delete t.height,delete t._prevWidth,delete t._prevHeight})}function R(r,e){var t=r.select("g."+e);return t.empty()&&(t=r.append("g").attr("class",e)),t}function ct(r,e,t){const n=e.width,a=e.height,s=(n+a)*.9,i=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}],o=A(r,s,s,i);return t.intersect=function(c){return T(t,i,c)},o}function dt(r,e,t){const a=e.height,s=a/4,i=e.width+2*s,o=[{x:s,y:0},{x:i-s,y:0},{x:i,y:-a/2},{x:i-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}],c=A(r,i,a,o);return t.intersect=function(d){return T(t,o,d)},c}function ht(r,e,t){const n=e.width,a=e.height,s=[{x:-a/2,y:0},{x:n,y:0},{x:n,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function ut(r,e,t){const n=e.width,a=e.height,s=[{x:-2*a/6,y:0},{x:n-a/6,y:0},{x:n+2*a/6,y:-a},{x:a/6,y:-a}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function ft(r,e,t){const n=e.width,a=e.height,s=[{x:2*a/6,y:0},{x:n+a/6,y:0},{x:n-2*a/6,y:-a},{x:-a/6,y:-a}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function pt(r,e,t){const n=e.width,a=e.height,s=[{x:-2*a/6,y:0},{x:n+2*a/6,y:0},{x:n-a/6,y:-a},{x:a/6,y:-a}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function vt(r,e,t){const n=e.width,a=e.height,s=[{x:a/6,y:0},{x:n-a/6,y:0},{x:n+2*a/6,y:-a},{x:-2*a/6,y:-a}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function yt(r,e,t){const n=e.width,a=e.height,s=[{x:0,y:0},{x:n+a/2,y:0},{x:n,y:-a/2},{x:n+a/2,y:-a},{x:0,y:-a}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function gt(r,e,t){const n=e.height,a=e.width+n/4,s=r.insert("rect",":first-child").attr("rx",n/2).attr("ry",n/2).attr("x",-a/2).attr("y",-n/2).attr("width",a).attr("height",n);return t.intersect=function(i){return Z(t,i)},s}function mt(r,e,t){const n=e.width,a=e.height,s=[{x:0,y:0},{x:n,y:0},{x:n,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:n+8,y:0},{x:n+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function wt(r,e,t){const n=e.width,a=n/2,s=a/(2.5+n/50),i=e.height+s,o="M 0,"+s+" a "+a+","+s+" 0,0,0 "+n+" 0 a "+a+","+s+" 0,0,0 "+-n+" 0 l 0,"+i+" a "+a+","+s+" 0,0,0 "+n+" 0 l 0,"+-i,c=r.attr("label-offset-y",s).insert("path",":first-child").attr("d",o).attr("transform","translate("+-n/2+","+-(i/2+s)+")");return t.intersect=function(d){const l=Z(t,d),v=l.x-t.x;if(a!=0&&(Math.abs(v)t.height/2-s)){let h=s*s*(1-v*v/(a*a));h!=0&&(h=Math.sqrt(h)),h=s-h,d.y-t.y>0&&(h=-h),l.y+=h}return l},c}function ve(r){r.shapes().question=ct,r.shapes().hexagon=dt,r.shapes().stadium=gt,r.shapes().subroutine=mt,r.shapes().cylinder=wt,r.shapes().rect_left_inv_arrow=ht,r.shapes().lean_right=ut,r.shapes().lean_left=ft,r.shapes().trapezoid=pt,r.shapes().inv_trapezoid=vt,r.shapes().rect_right_inv_arrow=yt}function ye(r){r({question:ct}),r({hexagon:dt}),r({stadium:gt}),r({subroutine:mt}),r({cylinder:wt}),r({rect_left_inv_arrow:ht}),r({lean_right:ut}),r({lean_left:ft}),r({trapezoid:pt}),r({inv_trapezoid:vt}),r({rect_right_inv_arrow:yt})}function A(r,e,t,n){return r.insert("polygon",":first-child").attr("points",n.map(function(a){return a.x+","+a.y}).join(" ")).attr("transform","translate("+-e/2+","+t/2+")")}const ge={addToRender:ve,addToRenderV2:ye},xt={},me=function(r){const e=Object.keys(r);for(const t of e)xt[t]=r[t]},bt=function(r,e,t,n,a,s){const i=n?n.select(`[id="${t}"]`):x(`[id="${t}"]`),o=a||document;Object.keys(r).forEach(function(d){const l=r[d];let v="default";l.classes.length>0&&(v=l.classes.join(" "));const h=z(l.styles);let u=l.text!==void 0?l.text:l.id,p;if(et(J().flowchart.htmlLabels)){const y={label:u.replace(/fa[blrs]?:fa-[\w-]+/g,k=>``)};p=at(i,y).node(),p.parentNode.removeChild(p)}else{const y=o.createElementNS("http://www.w3.org/2000/svg","text");y.setAttribute("style",h.labelStyle.replace("color:","fill:"));const k=u.split(rt.lineBreakRegex);for(const I of k){const E=o.createElementNS("http://www.w3.org/2000/svg","tspan");E.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),E.setAttribute("dy","1em"),E.setAttribute("x","1"),E.textContent=I,y.appendChild(E)}p=y}let g=0,f="";switch(l.type){case"round":g=5,f="rect";break;case"square":f="rect";break;case"diamond":f="question";break;case"hexagon":f="hexagon";break;case"odd":f="rect_left_inv_arrow";break;case"lean_right":f="lean_right";break;case"lean_left":f="lean_left";break;case"trapezoid":f="trapezoid";break;case"inv_trapezoid":f="inv_trapezoid";break;case"odd_right":f="rect_left_inv_arrow";break;case"circle":f="circle";break;case"ellipse":f="ellipse";break;case"stadium":f="stadium";break;case"subroutine":f="subroutine";break;case"cylinder":f="cylinder";break;case"group":f="rect";break;default:f="rect"}M.warn("Adding node",l.id,l.domId),e.setNode(s.db.lookUpDomId(l.id),{labelType:"svg",labelStyle:h.labelStyle,shape:f,label:p,rx:g,ry:g,class:v,style:h.style,id:s.db.lookUpDomId(l.id)})})},kt=function(r,e,t){let n=0,a,s;if(r.defaultStyle!==void 0){const i=z(r.defaultStyle);a=i.style,s=i.labelStyle}r.forEach(function(i){n++;const o="L-"+i.start+"-"+i.end,c="LS-"+i.start,d="LE-"+i.end,l={};i.type==="arrow_open"?l.arrowhead="none":l.arrowhead="normal";let v="",h="";if(i.style!==void 0){const u=z(i.style);v=u.style,h=u.labelStyle}else switch(i.stroke){case"normal":v="fill:none",a!==void 0&&(v=a),s!==void 0&&(h=s);break;case"dotted":v="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":v=" stroke-width: 3.5px;fill:none";break}l.style=v,l.labelStyle=h,i.interpolate!==void 0?l.curve=V(i.interpolate,P):r.defaultInterpolate!==void 0?l.curve=V(r.defaultInterpolate,P):l.curve=V(xt.curve,P),i.text===void 0?i.style!==void 0&&(l.arrowheadStyle="fill: #333"):(l.arrowheadStyle="fill: #333",l.labelpos="c",et(J().flowchart.htmlLabels)?(l.labelType="html",l.label=`${i.text.replace(/fa[blrs]?:fa-[\w-]+/g,u=>``)}`):(l.labelType="text",l.label=i.text.replace(rt.lineBreakRegex,`
`),i.style===void 0&&(l.style=l.style||"stroke: #333; stroke-width: 1.5px;fill:none"),l.labelStyle=l.labelStyle.replace("color:","fill:"))),l.id=o,l.class=c+" "+d,l.minlen=i.length||1,e.setEdge(t.db.lookUpDomId(i.start),t.db.lookUpDomId(i.end),l,n)})},we=function(r,e){M.info("Extracting classes"),e.db.clear();try{return e.parse(r),e.db.getClasses()}catch(t){return M.error(t),{}}},xe=function(r,e,t,n){M.info("Drawing flowchart"),n.db.clear();const{securityLevel:a,flowchart:s}=J();let i;a==="sandbox"&&(i=x("#i"+e));const o=a==="sandbox"?x(i.nodes()[0].contentDocument.body):x("body"),c=a==="sandbox"?i.nodes()[0].contentDocument:document;let d=n.db.getDirection();d===void 0&&(d="TD");const l=s.nodeSpacing||50,v=s.rankSpacing||50,h=new Nt({multigraph:!0,compound:!0}).setGraph({rankdir:d,nodesep:l,ranksep:v,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});let u;const p=n.db.getSubGraphs();for(let m=p.length-1;m>=0;m--)u=p[m],n.db.addVertex(u.id,u.title,"group",void 0,u.classes);const g=n.db.getVertices();M.warn("Get vertices",g);const f=n.db.getEdges();let y=0;for(y=p.length-1;y>=0;y--){u=p[y],Bt("cluster").append("text");for(let m=0;m{r.flowchart||(r.flowchart={}),r.flowchart.arrowMarkerAbsolute=r.arrowMarkerAbsolute,be.setConf(r.flowchart),W.clear(),W.setGen("gen-1")}};export{tr as diagram};
-//# sourceMappingURL=flowDiagram-698c8d5d-a7c20e22.js.map
+//# sourceMappingURL=flowDiagram-698c8d5d-78fca969.js.map
diff --git a/docs/assets/flowDiagram-698c8d5d-a7c20e22.js.map b/docs/assets/flowDiagram-698c8d5d-78fca969.js.map
similarity index 99%
rename from docs/assets/flowDiagram-698c8d5d-a7c20e22.js.map
rename to docs/assets/flowDiagram-698c8d5d-78fca969.js.map
index d6b5f430..941e6572 100644
--- a/docs/assets/flowDiagram-698c8d5d-a7c20e22.js.map
+++ b/docs/assets/flowDiagram-698c8d5d-78fca969.js.map
@@ -1 +1 @@
-{"version":3,"file":"flowDiagram-698c8d5d-a7c20e22.js","sources":["../../node_modules/d3-fetch/src/text.js","../../node_modules/d3-fetch/src/xml.js","../../node_modules/dagre-d3-es/src/dagre-js/arrows.js","../../node_modules/dagre-d3-es/src/dagre-js/label/add-svg-label.js","../../node_modules/dagre-d3-es/src/dagre-js/label/add-text-label.js","../../node_modules/dagre-d3-es/src/dagre-js/label/add-label.js","../../node_modules/dagre-d3-es/src/dagre-js/create-clusters.js","../../node_modules/dagre-d3-es/src/dagre-js/create-edge-labels.js","../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-node.js","../../node_modules/dagre-d3-es/src/dagre-js/create-edge-paths.js","../../node_modules/dagre-d3-es/src/dagre-js/create-nodes.js","../../node_modules/dagre-d3-es/src/dagre-js/position-clusters.js","../../node_modules/dagre-d3-es/src/dagre-js/position-edge-labels.js","../../node_modules/dagre-d3-es/src/dagre-js/position-nodes.js","../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-ellipse.js","../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-circle.js","../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-line.js","../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js","../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-rect.js","../../node_modules/dagre-d3-es/src/dagre-js/shapes.js","../../node_modules/dagre-d3-es/src/dagre-js/render.js","../../node_modules/mermaid/dist/flowDiagram-698c8d5d.js"],"sourcesContent":["function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import text from \"./text.js\";\n\nfunction parser(type) {\n return (input, init) => text(input, init)\n .then(text => (new DOMParser).parseFromString(text, type));\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","import * as util from './util.js';\n\nexport { arrows, setArrows };\n\nvar arrows = {\n normal,\n vee,\n undirected,\n};\n\nfunction setArrows(value) {\n arrows = value;\n}\n\nfunction normal(parent, id, edge, type) {\n var marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n var path = marker\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n util.applyStyle(path, edge[type + 'Style']);\n if (edge[type + 'Class']) {\n path.attr('class', edge[type + 'Class']);\n }\n}\n\nfunction vee(parent, id, edge, type) {\n var marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n var path = marker\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 L 4 5 z')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n util.applyStyle(path, edge[type + 'Style']);\n if (edge[type + 'Class']) {\n path.attr('class', edge[type + 'Class']);\n }\n}\n\nfunction undirected(parent, id, edge, type) {\n var marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n var path = marker\n .append('path')\n .attr('d', 'M 0 5 L 10 5')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n util.applyStyle(path, edge[type + 'Style']);\n if (edge[type + 'Class']) {\n path.attr('class', edge[type + 'Class']);\n }\n}\n","import * as util from '../util.js';\n\nexport { addSVGLabel };\n\nfunction addSVGLabel(root, node) {\n var domNode = root;\n\n domNode.node().appendChild(node.label);\n\n util.applyStyle(domNode, node.labelStyle);\n\n return domNode;\n}\n","import * as util from '../util.js';\n\nexport { addTextLabel };\n\n/*\n * Attaches a text label to the specified root. Handles escape sequences.\n */\nfunction addTextLabel(root, node) {\n var domNode = root.append('text');\n\n var lines = processEscapeSequences(node.label).split('\\n');\n for (var i = 0; i < lines.length; i++) {\n domNode\n .append('tspan')\n .attr('xml:space', 'preserve')\n .attr('dy', '1em')\n .attr('x', '1')\n .text(lines[i]);\n }\n\n util.applyStyle(domNode, node.labelStyle);\n\n return domNode;\n}\n\nfunction processEscapeSequences(text) {\n var newText = '';\n var escaped = false;\n var ch;\n for (var i = 0; i < text.length; ++i) {\n ch = text[i];\n if (escaped) {\n switch (ch) {\n case 'n':\n newText += '\\n';\n break;\n default:\n newText += ch;\n }\n escaped = false;\n } else if (ch === '\\\\') {\n escaped = true;\n } else {\n newText += ch;\n }\n }\n return newText;\n}\n","import { addHtmlLabel } from './add-html-label.js';\nimport { addSVGLabel } from './add-svg-label.js';\nimport { addTextLabel } from './add-text-label.js';\n\nexport { addLabel };\n\nfunction addLabel(root, node, location) {\n var label = node.label;\n var labelSvg = root.append('g');\n\n // Allow the label to be a string, a function that returns a DOM element, or\n // a DOM element itself.\n if (node.labelType === 'svg') {\n addSVGLabel(labelSvg, node);\n } else if (typeof label !== 'string' || node.labelType === 'html') {\n addHtmlLabel(labelSvg, node);\n } else {\n addTextLabel(labelSvg, node);\n }\n\n var labelBBox = labelSvg.node().getBBox();\n var y;\n switch (location) {\n case 'top':\n y = -node.height / 2;\n break;\n case 'bottom':\n y = node.height / 2 - labelBBox.height;\n break;\n default:\n y = -labelBBox.height / 2;\n }\n labelSvg.attr('transform', 'translate(' + -labelBBox.width / 2 + ',' + y + ')');\n\n return labelSvg;\n}\n","import * as d3 from 'd3';\nimport { addLabel } from './label/add-label.js';\nimport * as util from './util.js';\n\nexport { createClusters, setCreateClusters };\n\nvar createClusters = function (selection, g) {\n var clusters = g.nodes().filter(function (v) {\n return util.isSubgraph(g, v);\n });\n var svgClusters = selection.selectAll('g.cluster').data(clusters, function (v) {\n return v;\n });\n\n util.applyTransition(svgClusters.exit(), g).style('opacity', 0).remove();\n\n var enterSelection = svgClusters\n .enter()\n .append('g')\n .attr('class', 'cluster')\n .attr('id', function (v) {\n var node = g.node(v);\n return node.id;\n })\n .style('opacity', 0)\n .each(function (v) {\n var node = g.node(v);\n var thisGroup = d3.select(this);\n d3.select(this).append('rect');\n var labelGroup = thisGroup.append('g').attr('class', 'label');\n addLabel(labelGroup, node, node.clusterLabelPos);\n });\n\n svgClusters = svgClusters.merge(enterSelection);\n\n svgClusters = util.applyTransition(svgClusters, g).style('opacity', 1);\n\n svgClusters.selectAll('rect').each(function (c) {\n var node = g.node(c);\n var domCluster = d3.select(this);\n util.applyStyle(domCluster, node.style);\n });\n\n return svgClusters;\n};\n\nfunction setCreateClusters(value) {\n createClusters = value;\n}\n","import * as d3 from 'd3';\nimport * as _ from 'lodash-es';\nimport { addLabel } from './label/add-label.js';\nimport * as util from './util.js';\n\nexport { createEdgeLabels, setCreateEdgeLabels };\n\nlet createEdgeLabels = function (selection, g) {\n var svgEdgeLabels = selection\n .selectAll('g.edgeLabel')\n .data(g.edges(), function (e) {\n return util.edgeToId(e);\n })\n .classed('update', true);\n\n svgEdgeLabels.exit().remove();\n svgEdgeLabels.enter().append('g').classed('edgeLabel', true).style('opacity', 0);\n\n svgEdgeLabels = selection.selectAll('g.edgeLabel');\n\n svgEdgeLabels.each(function (e) {\n var root = d3.select(this);\n root.select('.label').remove();\n var edge = g.edge(e);\n var label = addLabel(root, g.edge(e), 0).classed('label', true);\n var bbox = label.node().getBBox();\n\n if (edge.labelId) {\n label.attr('id', edge.labelId);\n }\n if (!_.has(edge, 'width')) {\n edge.width = bbox.width;\n }\n if (!_.has(edge, 'height')) {\n edge.height = bbox.height;\n }\n });\n\n var exitSelection;\n\n if (svgEdgeLabels.exit) {\n exitSelection = svgEdgeLabels.exit();\n } else {\n exitSelection = svgEdgeLabels.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g).style('opacity', 0).remove();\n\n return svgEdgeLabels;\n};\n\nfunction setCreateEdgeLabels(value) {\n createEdgeLabels = value;\n}\n","export { intersectNode };\n\nfunction intersectNode(node, point) {\n return node.intersect(point);\n}\n","import * as d3 from 'd3';\nimport * as _ from 'lodash-es';\nimport { intersectNode } from './intersect/intersect-node.js';\nimport * as util from './util.js';\n\nexport { createEdgePaths, setCreateEdgePaths };\n\nvar createEdgePaths = function (selection, g, arrows) {\n var previousPaths = selection\n .selectAll('g.edgePath')\n .data(g.edges(), function (e) {\n return util.edgeToId(e);\n })\n .classed('update', true);\n\n var newPaths = enter(previousPaths, g);\n exit(previousPaths, g);\n\n var svgPaths = previousPaths.merge !== undefined ? previousPaths.merge(newPaths) : previousPaths;\n util.applyTransition(svgPaths, g).style('opacity', 1);\n\n // Save DOM element in the path group, and set ID and class\n svgPaths.each(function (e) {\n var domEdge = d3.select(this);\n var edge = g.edge(e);\n edge.elem = this;\n\n if (edge.id) {\n domEdge.attr('id', edge.id);\n }\n\n util.applyClass(\n domEdge,\n edge['class'],\n (domEdge.classed('update') ? 'update ' : '') + 'edgePath'\n );\n });\n\n svgPaths.selectAll('path.path').each(function (e) {\n var edge = g.edge(e);\n edge.arrowheadId = _.uniqueId('arrowhead');\n\n var domEdge = d3\n .select(this)\n .attr('marker-end', function () {\n return 'url(' + makeFragmentRef(location.href, edge.arrowheadId) + ')';\n })\n .style('fill', 'none');\n\n util.applyTransition(domEdge, g).attr('d', function (e) {\n return calcPoints(g, e);\n });\n\n util.applyStyle(domEdge, edge.style);\n });\n\n svgPaths.selectAll('defs *').remove();\n svgPaths.selectAll('defs').each(function (e) {\n var edge = g.edge(e);\n var arrowhead = arrows[edge.arrowhead];\n arrowhead(d3.select(this), edge.arrowheadId, edge, 'arrowhead');\n });\n\n return svgPaths;\n};\n\nfunction setCreateEdgePaths(value) {\n createEdgePaths = value;\n}\n\nfunction makeFragmentRef(url, fragmentId) {\n var baseUrl = url.split('#')[0];\n return baseUrl + '#' + fragmentId;\n}\n\nfunction calcPoints(g, e) {\n var edge = g.edge(e);\n var tail = g.node(e.v);\n var head = g.node(e.w);\n var points = edge.points.slice(1, edge.points.length - 1);\n points.unshift(intersectNode(tail, points[0]));\n points.push(intersectNode(head, points[points.length - 1]));\n\n return createLine(edge, points);\n}\n\nfunction createLine(edge, points) {\n // @ts-expect-error\n var line = (d3.line || d3.svg.line)()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n });\n\n (line.curve || line.interpolate)(edge.curve);\n\n return line(points);\n}\n\nfunction getCoords(elem) {\n var bbox = elem.getBBox();\n var matrix = elem.ownerSVGElement\n .getScreenCTM()\n .inverse()\n .multiply(elem.getScreenCTM())\n .translate(bbox.width / 2, bbox.height / 2);\n return { x: matrix.e, y: matrix.f };\n}\n\nfunction enter(svgPaths, g) {\n var svgPathsEnter = svgPaths.enter().append('g').attr('class', 'edgePath').style('opacity', 0);\n svgPathsEnter\n .append('path')\n .attr('class', 'path')\n .attr('d', function (e) {\n var edge = g.edge(e);\n var sourceElem = g.node(e.v).elem;\n var points = _.range(edge.points.length).map(function () {\n return getCoords(sourceElem);\n });\n return createLine(edge, points);\n });\n svgPathsEnter.append('defs');\n return svgPathsEnter;\n}\n\nfunction exit(svgPaths, g) {\n var svgPathExit = svgPaths.exit();\n util.applyTransition(svgPathExit, g).style('opacity', 0).remove();\n}\n","import * as d3 from 'd3';\nimport * as _ from 'lodash-es';\nimport { addLabel } from './label/add-label.js';\nimport * as util from './util.js';\n\nexport { createNodes, setCreateNodes };\n\nvar createNodes = function (selection, g, shapes) {\n var simpleNodes = g.nodes().filter(function (v) {\n return !util.isSubgraph(g, v);\n });\n var svgNodes = selection\n .selectAll('g.node')\n .data(simpleNodes, function (v) {\n return v;\n })\n .classed('update', true);\n\n svgNodes.exit().remove();\n\n svgNodes.enter().append('g').attr('class', 'node').style('opacity', 0);\n\n svgNodes = selection.selectAll('g.node');\n\n svgNodes.each(function (v) {\n var node = g.node(v);\n var thisGroup = d3.select(this);\n util.applyClass(\n thisGroup,\n node['class'],\n (thisGroup.classed('update') ? 'update ' : '') + 'node'\n );\n\n thisGroup.select('g.label').remove();\n var labelGroup = thisGroup.append('g').attr('class', 'label');\n var labelDom = addLabel(labelGroup, node);\n var shape = shapes[node.shape];\n var bbox = _.pick(labelDom.node().getBBox(), 'width', 'height');\n\n node.elem = this;\n\n if (node.id) {\n thisGroup.attr('id', node.id);\n }\n if (node.labelId) {\n labelGroup.attr('id', node.labelId);\n }\n\n if (_.has(node, 'width')) {\n bbox.width = node.width;\n }\n if (_.has(node, 'height')) {\n bbox.height = node.height;\n }\n\n bbox.width += node.paddingLeft + node.paddingRight;\n bbox.height += node.paddingTop + node.paddingBottom;\n labelGroup.attr(\n 'transform',\n 'translate(' +\n (node.paddingLeft - node.paddingRight) / 2 +\n ',' +\n (node.paddingTop - node.paddingBottom) / 2 +\n ')'\n );\n\n var root = d3.select(this);\n root.select('.label-container').remove();\n var shapeSvg = shape(root, bbox, node).classed('label-container', true);\n util.applyStyle(shapeSvg, node.style);\n\n var shapeBBox = shapeSvg.node().getBBox();\n node.width = shapeBBox.width;\n node.height = shapeBBox.height;\n });\n\n var exitSelection;\n\n if (svgNodes.exit) {\n exitSelection = svgNodes.exit();\n } else {\n exitSelection = svgNodes.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g).style('opacity', 0).remove();\n\n return svgNodes;\n};\n\nfunction setCreateNodes(value) {\n createNodes = value;\n}\n","import * as d3 from 'd3';\nimport * as util from './util.js';\n\nexport { positionClusters };\n\nfunction positionClusters(selection, g) {\n var created = selection.filter(function () {\n return !d3.select(this).classed('update');\n });\n\n function translate(v) {\n var node = g.node(v);\n return 'translate(' + node.x + ',' + node.y + ')';\n }\n\n created.attr('transform', translate);\n\n util.applyTransition(selection, g).style('opacity', 1).attr('transform', translate);\n\n util\n .applyTransition(created.selectAll('rect'), g)\n .attr('width', function (v) {\n return g.node(v).width;\n })\n .attr('height', function (v) {\n return g.node(v).height;\n })\n .attr('x', function (v) {\n var node = g.node(v);\n return -node.width / 2;\n })\n .attr('y', function (v) {\n var node = g.node(v);\n return -node.height / 2;\n });\n}\n","import * as d3 from 'd3';\nimport * as _ from 'lodash-es';\nimport * as util from './util.js';\n\nexport { positionEdgeLabels };\n\nfunction positionEdgeLabels(selection, g) {\n var created = selection.filter(function () {\n return !d3.select(this).classed('update');\n });\n\n function translate(e) {\n var edge = g.edge(e);\n return _.has(edge, 'x') ? 'translate(' + edge.x + ',' + edge.y + ')' : '';\n }\n\n created.attr('transform', translate);\n\n util.applyTransition(selection, g).style('opacity', 1).attr('transform', translate);\n}\n","import * as d3 from 'd3';\nimport * as util from './util.js';\n\nexport { positionNodes };\n\nfunction positionNodes(selection, g) {\n var created = selection.filter(function () {\n return !d3.select(this).classed('update');\n });\n\n function translate(v) {\n var node = g.node(v);\n return 'translate(' + node.x + ',' + node.y + ')';\n }\n\n created.attr('transform', translate);\n\n util.applyTransition(selection, g).style('opacity', 1).attr('transform', translate);\n}\n","export { intersectEllipse };\n\nfunction intersectEllipse(node, rx, ry, point) {\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs((rx * ry * px) / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs((rx * ry * py) / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return { x: cx + dx, y: cy + dy };\n}\n","import { intersectEllipse } from './intersect-ellipse.js';\n\nexport { intersectCircle };\n\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n","export { intersectLine };\n\n/*\n * Returns the point at which two lines, p and q, intersect or returns\n * undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n\n // Compute r3 and r4.\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n\n // Compute r1 and r2\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n return { x: x, y: y };\n}\n\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n","import { intersectLine } from './intersect-line.js';\n\nexport { intersectPolygon };\n\n/*\n * Returns the point ({x, y}) at which the point argument intersects with the\n * node argument assuming that it has the shape specified by polygon.\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n polyPoints.forEach(function (entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersectLine(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function (p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n","export { intersectRect };\n\nfunction intersectRect(node, point) {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n","import { intersectCircle } from './intersect/intersect-circle.js';\nimport { intersectEllipse } from './intersect/intersect-ellipse.js';\nimport { intersectPolygon } from './intersect/intersect-polygon.js';\nimport { intersectRect } from './intersect/intersect-rect.js';\n\nexport { shapes, setShapes };\n\nvar shapes = {\n rect,\n ellipse,\n circle,\n diamond,\n};\n\nfunction setShapes(value) {\n shapes = value;\n}\n\nfunction rect(parent, bbox, node) {\n var shapeSvg = parent\n .insert('rect', ':first-child')\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2)\n .attr('y', -bbox.height / 2)\n .attr('width', bbox.width)\n .attr('height', bbox.height);\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n}\n\nfunction ellipse(parent, bbox, node) {\n var rx = bbox.width / 2;\n var ry = bbox.height / 2;\n var shapeSvg = parent\n .insert('ellipse', ':first-child')\n .attr('x', -bbox.width / 2)\n .attr('y', -bbox.height / 2)\n .attr('rx', rx)\n .attr('ry', ry);\n\n node.intersect = function (point) {\n return intersectEllipse(node, rx, ry, point);\n };\n\n return shapeSvg;\n}\n\nfunction circle(parent, bbox, node) {\n var r = Math.max(bbox.width, bbox.height) / 2;\n var shapeSvg = parent\n .insert('circle', ':first-child')\n .attr('x', -bbox.width / 2)\n .attr('y', -bbox.height / 2)\n .attr('r', r);\n\n node.intersect = function (point) {\n return intersectCircle(node, r, point);\n };\n\n return shapeSvg;\n}\n\n// Circumscribe an ellipse for the bounding box with a diamond shape. I derived\n// the function to calculate the diamond shape from:\n// http://mathforum.org/kb/message.jspa?messageID=3750236\nfunction diamond(parent, bbox, node) {\n var w = (bbox.width * Math.SQRT2) / 2;\n var h = (bbox.height * Math.SQRT2) / 2;\n var points = [\n { x: 0, y: -h },\n { x: -w, y: 0 },\n { x: 0, y: h },\n { x: w, y: 0 },\n ];\n var shapeSvg = parent.insert('polygon', ':first-child').attr(\n 'points',\n points\n .map(function (p) {\n return p.x + ',' + p.y;\n })\n .join(' ')\n );\n\n node.intersect = function (p) {\n return intersectPolygon(node, points, p);\n };\n\n return shapeSvg;\n}\n","import * as d3 from 'd3';\nimport * as _ from 'lodash-es';\nimport { layout } from '../dagre/index.js';\nimport { arrows, setArrows } from './arrows.js';\nimport { createClusters, setCreateClusters } from './create-clusters.js';\nimport { createEdgeLabels, setCreateEdgeLabels } from './create-edge-labels.js';\nimport { createEdgePaths, setCreateEdgePaths } from './create-edge-paths.js';\nimport { createNodes, setCreateNodes } from './create-nodes.js';\nimport { positionClusters } from './position-clusters.js';\nimport { positionEdgeLabels } from './position-edge-labels.js';\nimport { positionNodes } from './position-nodes.js';\nimport { shapes, setShapes } from './shapes.js';\n\nexport { render };\n\n// This design is based on http://bost.ocks.org/mike/chart/.\nfunction render() {\n var fn = function (svg, g) {\n preProcessGraph(g);\n\n var outputGroup = createOrSelectGroup(svg, 'output');\n var clustersGroup = createOrSelectGroup(outputGroup, 'clusters');\n var edgePathsGroup = createOrSelectGroup(outputGroup, 'edgePaths');\n var edgeLabels = createEdgeLabels(createOrSelectGroup(outputGroup, 'edgeLabels'), g);\n var nodes = createNodes(createOrSelectGroup(outputGroup, 'nodes'), g, shapes);\n\n layout(g);\n\n positionNodes(nodes, g);\n positionEdgeLabels(edgeLabels, g);\n createEdgePaths(edgePathsGroup, g, arrows);\n\n var clusters = createClusters(clustersGroup, g);\n positionClusters(clusters, g);\n\n postProcessGraph(g);\n };\n\n fn.createNodes = function (value) {\n if (!arguments.length) return createNodes;\n setCreateNodes(value);\n return fn;\n };\n\n fn.createClusters = function (value) {\n if (!arguments.length) return createClusters;\n setCreateClusters(value);\n return fn;\n };\n\n fn.createEdgeLabels = function (value) {\n if (!arguments.length) return createEdgeLabels;\n setCreateEdgeLabels(value);\n return fn;\n };\n\n fn.createEdgePaths = function (value) {\n if (!arguments.length) return createEdgePaths;\n setCreateEdgePaths(value);\n return fn;\n };\n\n fn.shapes = function (value) {\n if (!arguments.length) return shapes;\n setShapes(value);\n return fn;\n };\n\n fn.arrows = function (value) {\n if (!arguments.length) return arrows;\n setArrows(value);\n return fn;\n };\n\n return fn;\n}\n\nvar NODE_DEFAULT_ATTRS = {\n paddingLeft: 10,\n paddingRight: 10,\n paddingTop: 10,\n paddingBottom: 10,\n rx: 0,\n ry: 0,\n shape: 'rect',\n};\n\nvar EDGE_DEFAULT_ATTRS = {\n arrowhead: 'normal',\n curve: d3.curveLinear,\n};\n\nfunction preProcessGraph(g) {\n g.nodes().forEach(function (v) {\n var node = g.node(v);\n if (!_.has(node, 'label') && !g.children(v).length) {\n node.label = v;\n }\n\n if (_.has(node, 'paddingX')) {\n _.defaults(node, {\n paddingLeft: node.paddingX,\n paddingRight: node.paddingX,\n });\n }\n\n if (_.has(node, 'paddingY')) {\n _.defaults(node, {\n paddingTop: node.paddingY,\n paddingBottom: node.paddingY,\n });\n }\n\n if (_.has(node, 'padding')) {\n _.defaults(node, {\n paddingLeft: node.padding,\n paddingRight: node.padding,\n paddingTop: node.padding,\n paddingBottom: node.padding,\n });\n }\n\n _.defaults(node, NODE_DEFAULT_ATTRS);\n\n _.each(['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'], function (k) {\n node[k] = Number(node[k]);\n });\n\n // Save dimensions for restore during post-processing\n if (_.has(node, 'width')) {\n node._prevWidth = node.width;\n }\n if (_.has(node, 'height')) {\n node._prevHeight = node.height;\n }\n });\n\n g.edges().forEach(function (e) {\n var edge = g.edge(e);\n if (!_.has(edge, 'label')) {\n edge.label = '';\n }\n _.defaults(edge, EDGE_DEFAULT_ATTRS);\n });\n}\n\nfunction postProcessGraph(g) {\n _.each(g.nodes(), function (v) {\n var node = g.node(v);\n\n // Restore original dimensions\n if (_.has(node, '_prevWidth')) {\n node.width = node._prevWidth;\n } else {\n delete node.width;\n }\n\n if (_.has(node, '_prevHeight')) {\n node.height = node._prevHeight;\n } else {\n delete node.height;\n }\n\n delete node._prevWidth;\n delete node._prevHeight;\n });\n}\n\nfunction createOrSelectGroup(root, name) {\n var selection = root.select('g.' + name);\n if (selection.empty()) {\n selection = root.append('g').attr('class', name);\n }\n return selection;\n}\n","import { p as parser, f as flowDb } from \"./flowDb-8f9fc471.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { select, curveLinear, selectAll } from \"d3\";\nimport { k as getStylesFromArray, n as evaluate, c as getConfig, e as common, l as log, o as interpolateToCurve, p as setupGraphViewbox } from \"./mermaid-a98f434b.js\";\nimport { render } from \"dagre-d3-es\";\nimport { applyStyle } from \"dagre-d3-es/src/dagre-js/util.js\";\nimport { addHtmlLabel } from \"dagre-d3-es/src/dagre-js/label/add-html-label.js\";\nimport { intersectPolygon } from \"dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js\";\nimport { intersectRect } from \"dagre-d3-es/src/dagre-js/intersect/intersect-rect.js\";\nimport { f as flowRendererV2, a as flowStyles } from \"./styles-ff678862.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nimport \"./index-4c4adb72.js\";\nimport \"dagre-d3-es/src/dagre/index.js\";\nimport \"dagre-d3-es/src/graphlib/json.js\";\nimport \"./edges-b00f0ec2.js\";\nimport \"./createText-285e50b4.js\";\nimport \"mdast-util-from-markdown\";\nimport \"./svgDraw-5d8a058e.js\";\nfunction question(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const s = (w + h) * 0.9;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, s, s, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction hexagon(parent, bbox, node) {\n const f = 4;\n const h = bbox.height;\n const m = h / f;\n const w = bbox.width + 2 * m;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction rect_left_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction lean_right(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction lean_left(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction inv_trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction rect_right_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction stadium(parent, bbox, node) {\n const h = bbox.height;\n const w = bbox.width + h / 4;\n const shapeSvg = parent.insert(\"rect\", \":first-child\").attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n}\nfunction subroutine(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction cylinder(parent, bbox, node) {\n const w = bbox.width;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const shapeSvg = parent.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n node.intersect = function(point) {\n const pos = intersectRect(node, point);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\nfunction addToRender(render2) {\n render2.shapes().question = question;\n render2.shapes().hexagon = hexagon;\n render2.shapes().stadium = stadium;\n render2.shapes().subroutine = subroutine;\n render2.shapes().cylinder = cylinder;\n render2.shapes().rect_left_inv_arrow = rect_left_inv_arrow;\n render2.shapes().lean_right = lean_right;\n render2.shapes().lean_left = lean_left;\n render2.shapes().trapezoid = trapezoid;\n render2.shapes().inv_trapezoid = inv_trapezoid;\n render2.shapes().rect_right_inv_arrow = rect_right_inv_arrow;\n}\nfunction addToRenderV2(addShape) {\n addShape({ question });\n addShape({ hexagon });\n addShape({ stadium });\n addShape({ subroutine });\n addShape({ cylinder });\n addShape({ rect_left_inv_arrow });\n addShape({ lean_right });\n addShape({ lean_left });\n addShape({ trapezoid });\n addShape({ inv_trapezoid });\n addShape({ rect_right_inv_arrow });\n}\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\nconst flowChartShapes = {\n addToRender,\n addToRenderV2\n};\nconst conf = {};\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n conf[key] = cnf[key];\n }\n};\nconst addVertices = function(vert, g, svgId, root, _doc, diagObj) {\n const svg = !root ? select(`[id=\"${svgId}\"]`) : root.select(`[id=\"${svgId}\"]`);\n const doc = !_doc ? document : _doc;\n const keys = Object.keys(vert);\n keys.forEach(function(id) {\n const vertex = vert[id];\n let classStr = \"default\";\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(\" \");\n }\n const styles = getStylesFromArray(vertex.styles);\n let vertexText = vertex.text !== void 0 ? vertex.text : vertex.id;\n let vertexNode;\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const node = {\n label: vertexText.replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n )\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", styles.labelStyle.replace(\"color:\", \"fill:\"));\n const rows = vertexText.split(common.lineBreakRegex);\n for (const row of rows) {\n const tspan = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"1\");\n tspan.textContent = row;\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n let radious = 0;\n let _shape = \"\";\n switch (vertex.type) {\n case \"round\":\n radious = 5;\n _shape = \"rect\";\n break;\n case \"square\":\n _shape = \"rect\";\n break;\n case \"diamond\":\n _shape = \"question\";\n break;\n case \"hexagon\":\n _shape = \"hexagon\";\n break;\n case \"odd\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"lean_right\":\n _shape = \"lean_right\";\n break;\n case \"lean_left\":\n _shape = \"lean_left\";\n break;\n case \"trapezoid\":\n _shape = \"trapezoid\";\n break;\n case \"inv_trapezoid\":\n _shape = \"inv_trapezoid\";\n break;\n case \"odd_right\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"circle\":\n _shape = \"circle\";\n break;\n case \"ellipse\":\n _shape = \"ellipse\";\n break;\n case \"stadium\":\n _shape = \"stadium\";\n break;\n case \"subroutine\":\n _shape = \"subroutine\";\n break;\n case \"cylinder\":\n _shape = \"cylinder\";\n break;\n case \"group\":\n _shape = \"rect\";\n break;\n default:\n _shape = \"rect\";\n }\n log.warn(\"Adding node\", vertex.id, vertex.domId);\n g.setNode(diagObj.db.lookUpDomId(vertex.id), {\n labelType: \"svg\",\n labelStyle: styles.labelStyle,\n shape: _shape,\n label: vertexNode,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: diagObj.db.lookUpDomId(vertex.id)\n });\n });\n};\nconst addEdges = function(edges, g, diagObj) {\n let cnt = 0;\n let defaultStyle;\n let defaultLabelStyle;\n if (edges.defaultStyle !== void 0) {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n edges.forEach(function(edge) {\n cnt++;\n const linkId = \"L-\" + edge.start + \"-\" + edge.end;\n const linkNameStart = \"LS-\" + edge.start;\n const linkNameEnd = \"LE-\" + edge.end;\n const edgeData = {};\n if (edge.type === \"arrow_open\") {\n edgeData.arrowhead = \"none\";\n } else {\n edgeData.arrowhead = \"normal\";\n }\n let style = \"\";\n let labelStyle = \"\";\n if (edge.style !== void 0) {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n switch (edge.stroke) {\n case \"normal\":\n style = \"fill:none\";\n if (defaultStyle !== void 0) {\n style = defaultStyle;\n }\n if (defaultLabelStyle !== void 0) {\n labelStyle = defaultLabelStyle;\n }\n break;\n case \"dotted\":\n style = \"fill:none;stroke-width:2px;stroke-dasharray:3;\";\n break;\n case \"thick\":\n style = \" stroke-width: 3.5px;fill:none\";\n break;\n }\n }\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n if (edge.interpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (edges.defaultInterpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n edgeData.labelType = \"html\";\n edgeData.label = `${edge.text.replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n )}`;\n } else {\n edgeData.labelType = \"text\";\n edgeData.label = edge.text.replace(common.lineBreakRegex, \"\\n\");\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n }\n }\n edgeData.id = linkId;\n edgeData.class = linkNameStart + \" \" + linkNameEnd;\n edgeData.minlen = edge.length || 1;\n g.setEdge(diagObj.db.lookUpDomId(edge.start), diagObj.db.lookUpDomId(edge.end), edgeData, cnt);\n });\n};\nconst getClasses = function(text, diagObj) {\n log.info(\"Extracting classes\");\n diagObj.db.clear();\n try {\n diagObj.parse(text);\n return diagObj.db.getClasses();\n } catch (e) {\n log.error(e);\n return {};\n }\n};\nconst draw = function(text, id, _version, diagObj) {\n log.info(\"Drawing flowchart\");\n diagObj.db.clear();\n const { securityLevel, flowchart: conf2 } = getConfig();\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n let dir = diagObj.db.getDirection();\n if (dir === void 0) {\n dir = \"TD\";\n }\n const nodeSpacing = conf2.nodeSpacing || 50;\n const rankSpacing = conf2.rankSpacing || 50;\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n let subG;\n const subGraphs = diagObj.db.getSubGraphs();\n for (let i2 = subGraphs.length - 1; i2 >= 0; i2--) {\n subG = subGraphs[i2];\n diagObj.db.addVertex(subG.id, subG.title, \"group\", void 0, subG.classes);\n }\n const vert = diagObj.db.getVertices();\n log.warn(\"Get vertices\", vert);\n const edges = diagObj.db.getEdges();\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n selectAll(\"cluster\").append(\"text\");\n for (let j = 0; j < subG.nodes.length; j++) {\n log.warn(\n \"Setting subgraph\",\n subG.nodes[j],\n diagObj.db.lookUpDomId(subG.nodes[j]),\n diagObj.db.lookUpDomId(subG.id)\n );\n g.setParent(diagObj.db.lookUpDomId(subG.nodes[j]), diagObj.db.lookUpDomId(subG.id));\n }\n }\n addVertices(vert, g, id, root, doc, diagObj);\n addEdges(edges, g, diagObj);\n const render$1 = new render();\n flowChartShapes.addToRender(render$1);\n render$1.arrows().none = function normal(parent, id2, edge, type) {\n const marker = parent.append(\"marker\").attr(\"id\", id2).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"strokeWidth\").attr(\"markerWidth\", 8).attr(\"markerHeight\", 6).attr(\"orient\", \"auto\");\n const path = marker.append(\"path\").attr(\"d\", \"M 0 0 L 0 0 L 0 0 z\");\n applyStyle(path, edge[type + \"Style\"]);\n };\n render$1.arrows().normal = function normal(parent, id2) {\n const marker = parent.append(\"marker\").attr(\"id\", id2).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"strokeWidth\").attr(\"markerWidth\", 8).attr(\"markerHeight\", 6).attr(\"orient\", \"auto\");\n marker.append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowheadPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n };\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n render$1(element, g);\n element.selectAll(\"g.node\").attr(\"title\", function() {\n return diagObj.db.getTooltip(this.id);\n });\n diagObj.db.indexNodes(\"subGraph\" + i);\n for (i = 0; i < subGraphs.length; i++) {\n subG = subGraphs[i];\n if (subG.title !== \"undefined\") {\n const clusterRects = doc.querySelectorAll(\n \"#\" + id + ' [id=\"' + diagObj.db.lookUpDomId(subG.id) + '\"] rect'\n );\n const clusterEl = doc.querySelectorAll(\n \"#\" + id + ' [id=\"' + diagObj.db.lookUpDomId(subG.id) + '\"]'\n );\n const xPos = clusterRects[0].x.baseVal.value;\n const yPos = clusterRects[0].y.baseVal.value;\n const _width = clusterRects[0].width.baseVal.value;\n const cluster = select(clusterEl[0]);\n const te = cluster.select(\".label\");\n te.attr(\"transform\", `translate(${xPos + _width / 2}, ${yPos + 14})`);\n te.attr(\"id\", id + \"Text\");\n for (let j = 0; j < subG.classes.length; j++) {\n clusterEl[0].classList.add(subG.classes[j]);\n }\n }\n }\n if (!conf2.htmlLabels) {\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\n const rect = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"rx\", 0);\n rect.setAttribute(\"ry\", 0);\n rect.setAttribute(\"width\", dim.width);\n rect.setAttribute(\"height\", dim.height);\n label.insertBefore(rect, label.firstChild);\n }\n }\n setupGraphViewbox(g, svg, conf2.diagramPadding, conf2.useMaxWidth);\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n if (vertex.link) {\n const node = root.select(\"#\" + id + ' [id=\"' + diagObj.db.lookUpDomId(key) + '\"]');\n if (node) {\n const link = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"a\");\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"class\", vertex.classes.join(\" \"));\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"href\", vertex.link);\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"rel\", \"noopener\");\n if (securityLevel === \"sandbox\") {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", \"_top\");\n } else if (vertex.linkTarget) {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", vertex.linkTarget);\n }\n const linkNode = node.insert(function() {\n return link;\n }, \":first-child\");\n const shape = node.select(\".label-container\");\n if (shape) {\n linkNode.append(function() {\n return shape.node();\n });\n }\n const label = node.select(\".label\");\n if (label) {\n linkNode.append(function() {\n return label.node();\n });\n }\n }\n }\n });\n};\nconst flowRenderer = {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\nconst diagram = {\n parser,\n db: flowDb,\n renderer: flowRendererV2,\n styles: flowStyles,\n init: (cnf) => {\n if (!cnf.flowchart) {\n cnf.flowchart = {};\n }\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n flowRenderer.setConf(cnf.flowchart);\n flowDb.clear();\n flowDb.setGen(\"gen-1\");\n }\n};\nexport {\n diagram\n};\n"],"names":["responseText","response","text","input","init","parser","type","svg","arrows","normal","vee","undirected","setArrows","value","parent","id","edge","marker","path","util.applyStyle","addSVGLabel","root","node","domNode","addTextLabel","lines","processEscapeSequences","i","newText","escaped","ch","addLabel","location","label","labelSvg","addHtmlLabel","labelBBox","y","createClusters","selection","g","clusters","v","util.isSubgraph","svgClusters","util.applyTransition","enterSelection","thisGroup","d3.select","labelGroup","c","domCluster","setCreateClusters","createEdgeLabels","svgEdgeLabels","e","util.edgeToId","bbox","_.has","exitSelection","setCreateEdgeLabels","intersectNode","point","createEdgePaths","previousPaths","newPaths","enter","exit","svgPaths","domEdge","util.applyClass","_.uniqueId","d3\n .select","makeFragmentRef","calcPoints","arrowhead","setCreateEdgePaths","url","fragmentId","baseUrl","tail","head","points","createLine","line","d3.line","d3.svg","d","getCoords","elem","matrix","svgPathsEnter","sourceElem","_.range","svgPathExit","createNodes","shapes","simpleNodes","svgNodes","labelDom","shape","_.pick","shapeSvg","shapeBBox","setCreateNodes","positionClusters","created","translate","util\n .applyTransition","positionEdgeLabels","positionNodes","intersectEllipse","rx","ry","cx","cy","px","py","det","dx","dy","intersectCircle","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","offset","num","x","sameSign","intersectPolygon","polyPoints","x1","y1","intersections","minX","minY","entry","left","top","intersect","q","pdx","pdy","distp","qdx","qdy","distq","intersectRect","w","h","sx","sy","rect","ellipse","circle","diamond","setShapes","r","p","render","fn","preProcessGraph","outputGroup","createOrSelectGroup","clustersGroup","edgePathsGroup","edgeLabels","nodes","layout","postProcessGraph","NODE_DEFAULT_ATTRS","EDGE_DEFAULT_ATTRS","d3.curveLinear","_.defaults","_.each","k","name","question","insertPolygonShape","hexagon","m","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","stadium","subroutine","cylinder","pos","addToRender","render2","addToRenderV2","addShape","flowChartShapes","conf","setConf","cnf","keys","key","addVertices","vert","svgId","_doc","diagObj","select","doc","vertex","classStr","styles","getStylesFromArray","vertexText","vertexNode","evaluate","getConfig","s","svgLabel","rows","common","row","tspan","radious","_shape","log","addEdges","edges","cnt","defaultStyle","defaultLabelStyle","defaultStyles","linkId","linkNameStart","linkNameEnd","edgeData","style","labelStyle","interpolateToCurve","curveLinear","getClasses","draw","_version","securityLevel","conf2","sandboxElement","dir","nodeSpacing","rankSpacing","graphlib.Graph","subG","subGraphs","i2","selectAll","j","render$1","id2","applyStyle","element","clusterRects","clusterEl","xPos","yPos","_width","te","labels","dim","setupGraphViewbox","link","linkNode","flowRenderer","diagram","flowDb","flowRendererV2","flowStyles"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]}
\ No newline at end of file
+{"version":3,"file":"flowDiagram-698c8d5d-78fca969.js","sources":["../../node_modules/d3-fetch/src/text.js","../../node_modules/d3-fetch/src/xml.js","../../node_modules/dagre-d3-es/src/dagre-js/arrows.js","../../node_modules/dagre-d3-es/src/dagre-js/label/add-svg-label.js","../../node_modules/dagre-d3-es/src/dagre-js/label/add-text-label.js","../../node_modules/dagre-d3-es/src/dagre-js/label/add-label.js","../../node_modules/dagre-d3-es/src/dagre-js/create-clusters.js","../../node_modules/dagre-d3-es/src/dagre-js/create-edge-labels.js","../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-node.js","../../node_modules/dagre-d3-es/src/dagre-js/create-edge-paths.js","../../node_modules/dagre-d3-es/src/dagre-js/create-nodes.js","../../node_modules/dagre-d3-es/src/dagre-js/position-clusters.js","../../node_modules/dagre-d3-es/src/dagre-js/position-edge-labels.js","../../node_modules/dagre-d3-es/src/dagre-js/position-nodes.js","../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-ellipse.js","../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-circle.js","../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-line.js","../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js","../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-rect.js","../../node_modules/dagre-d3-es/src/dagre-js/shapes.js","../../node_modules/dagre-d3-es/src/dagre-js/render.js","../../node_modules/mermaid/dist/flowDiagram-698c8d5d.js"],"sourcesContent":["function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import text from \"./text.js\";\n\nfunction parser(type) {\n return (input, init) => text(input, init)\n .then(text => (new DOMParser).parseFromString(text, type));\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","import * as util from './util.js';\n\nexport { arrows, setArrows };\n\nvar arrows = {\n normal,\n vee,\n undirected,\n};\n\nfunction setArrows(value) {\n arrows = value;\n}\n\nfunction normal(parent, id, edge, type) {\n var marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n var path = marker\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n util.applyStyle(path, edge[type + 'Style']);\n if (edge[type + 'Class']) {\n path.attr('class', edge[type + 'Class']);\n }\n}\n\nfunction vee(parent, id, edge, type) {\n var marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n var path = marker\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 L 4 5 z')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n util.applyStyle(path, edge[type + 'Style']);\n if (edge[type + 'Class']) {\n path.attr('class', edge[type + 'Class']);\n }\n}\n\nfunction undirected(parent, id, edge, type) {\n var marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n var path = marker\n .append('path')\n .attr('d', 'M 0 5 L 10 5')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n util.applyStyle(path, edge[type + 'Style']);\n if (edge[type + 'Class']) {\n path.attr('class', edge[type + 'Class']);\n }\n}\n","import * as util from '../util.js';\n\nexport { addSVGLabel };\n\nfunction addSVGLabel(root, node) {\n var domNode = root;\n\n domNode.node().appendChild(node.label);\n\n util.applyStyle(domNode, node.labelStyle);\n\n return domNode;\n}\n","import * as util from '../util.js';\n\nexport { addTextLabel };\n\n/*\n * Attaches a text label to the specified root. Handles escape sequences.\n */\nfunction addTextLabel(root, node) {\n var domNode = root.append('text');\n\n var lines = processEscapeSequences(node.label).split('\\n');\n for (var i = 0; i < lines.length; i++) {\n domNode\n .append('tspan')\n .attr('xml:space', 'preserve')\n .attr('dy', '1em')\n .attr('x', '1')\n .text(lines[i]);\n }\n\n util.applyStyle(domNode, node.labelStyle);\n\n return domNode;\n}\n\nfunction processEscapeSequences(text) {\n var newText = '';\n var escaped = false;\n var ch;\n for (var i = 0; i < text.length; ++i) {\n ch = text[i];\n if (escaped) {\n switch (ch) {\n case 'n':\n newText += '\\n';\n break;\n default:\n newText += ch;\n }\n escaped = false;\n } else if (ch === '\\\\') {\n escaped = true;\n } else {\n newText += ch;\n }\n }\n return newText;\n}\n","import { addHtmlLabel } from './add-html-label.js';\nimport { addSVGLabel } from './add-svg-label.js';\nimport { addTextLabel } from './add-text-label.js';\n\nexport { addLabel };\n\nfunction addLabel(root, node, location) {\n var label = node.label;\n var labelSvg = root.append('g');\n\n // Allow the label to be a string, a function that returns a DOM element, or\n // a DOM element itself.\n if (node.labelType === 'svg') {\n addSVGLabel(labelSvg, node);\n } else if (typeof label !== 'string' || node.labelType === 'html') {\n addHtmlLabel(labelSvg, node);\n } else {\n addTextLabel(labelSvg, node);\n }\n\n var labelBBox = labelSvg.node().getBBox();\n var y;\n switch (location) {\n case 'top':\n y = -node.height / 2;\n break;\n case 'bottom':\n y = node.height / 2 - labelBBox.height;\n break;\n default:\n y = -labelBBox.height / 2;\n }\n labelSvg.attr('transform', 'translate(' + -labelBBox.width / 2 + ',' + y + ')');\n\n return labelSvg;\n}\n","import * as d3 from 'd3';\nimport { addLabel } from './label/add-label.js';\nimport * as util from './util.js';\n\nexport { createClusters, setCreateClusters };\n\nvar createClusters = function (selection, g) {\n var clusters = g.nodes().filter(function (v) {\n return util.isSubgraph(g, v);\n });\n var svgClusters = selection.selectAll('g.cluster').data(clusters, function (v) {\n return v;\n });\n\n util.applyTransition(svgClusters.exit(), g).style('opacity', 0).remove();\n\n var enterSelection = svgClusters\n .enter()\n .append('g')\n .attr('class', 'cluster')\n .attr('id', function (v) {\n var node = g.node(v);\n return node.id;\n })\n .style('opacity', 0)\n .each(function (v) {\n var node = g.node(v);\n var thisGroup = d3.select(this);\n d3.select(this).append('rect');\n var labelGroup = thisGroup.append('g').attr('class', 'label');\n addLabel(labelGroup, node, node.clusterLabelPos);\n });\n\n svgClusters = svgClusters.merge(enterSelection);\n\n svgClusters = util.applyTransition(svgClusters, g).style('opacity', 1);\n\n svgClusters.selectAll('rect').each(function (c) {\n var node = g.node(c);\n var domCluster = d3.select(this);\n util.applyStyle(domCluster, node.style);\n });\n\n return svgClusters;\n};\n\nfunction setCreateClusters(value) {\n createClusters = value;\n}\n","import * as d3 from 'd3';\nimport * as _ from 'lodash-es';\nimport { addLabel } from './label/add-label.js';\nimport * as util from './util.js';\n\nexport { createEdgeLabels, setCreateEdgeLabels };\n\nlet createEdgeLabels = function (selection, g) {\n var svgEdgeLabels = selection\n .selectAll('g.edgeLabel')\n .data(g.edges(), function (e) {\n return util.edgeToId(e);\n })\n .classed('update', true);\n\n svgEdgeLabels.exit().remove();\n svgEdgeLabels.enter().append('g').classed('edgeLabel', true).style('opacity', 0);\n\n svgEdgeLabels = selection.selectAll('g.edgeLabel');\n\n svgEdgeLabels.each(function (e) {\n var root = d3.select(this);\n root.select('.label').remove();\n var edge = g.edge(e);\n var label = addLabel(root, g.edge(e), 0).classed('label', true);\n var bbox = label.node().getBBox();\n\n if (edge.labelId) {\n label.attr('id', edge.labelId);\n }\n if (!_.has(edge, 'width')) {\n edge.width = bbox.width;\n }\n if (!_.has(edge, 'height')) {\n edge.height = bbox.height;\n }\n });\n\n var exitSelection;\n\n if (svgEdgeLabels.exit) {\n exitSelection = svgEdgeLabels.exit();\n } else {\n exitSelection = svgEdgeLabels.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g).style('opacity', 0).remove();\n\n return svgEdgeLabels;\n};\n\nfunction setCreateEdgeLabels(value) {\n createEdgeLabels = value;\n}\n","export { intersectNode };\n\nfunction intersectNode(node, point) {\n return node.intersect(point);\n}\n","import * as d3 from 'd3';\nimport * as _ from 'lodash-es';\nimport { intersectNode } from './intersect/intersect-node.js';\nimport * as util from './util.js';\n\nexport { createEdgePaths, setCreateEdgePaths };\n\nvar createEdgePaths = function (selection, g, arrows) {\n var previousPaths = selection\n .selectAll('g.edgePath')\n .data(g.edges(), function (e) {\n return util.edgeToId(e);\n })\n .classed('update', true);\n\n var newPaths = enter(previousPaths, g);\n exit(previousPaths, g);\n\n var svgPaths = previousPaths.merge !== undefined ? previousPaths.merge(newPaths) : previousPaths;\n util.applyTransition(svgPaths, g).style('opacity', 1);\n\n // Save DOM element in the path group, and set ID and class\n svgPaths.each(function (e) {\n var domEdge = d3.select(this);\n var edge = g.edge(e);\n edge.elem = this;\n\n if (edge.id) {\n domEdge.attr('id', edge.id);\n }\n\n util.applyClass(\n domEdge,\n edge['class'],\n (domEdge.classed('update') ? 'update ' : '') + 'edgePath'\n );\n });\n\n svgPaths.selectAll('path.path').each(function (e) {\n var edge = g.edge(e);\n edge.arrowheadId = _.uniqueId('arrowhead');\n\n var domEdge = d3\n .select(this)\n .attr('marker-end', function () {\n return 'url(' + makeFragmentRef(location.href, edge.arrowheadId) + ')';\n })\n .style('fill', 'none');\n\n util.applyTransition(domEdge, g).attr('d', function (e) {\n return calcPoints(g, e);\n });\n\n util.applyStyle(domEdge, edge.style);\n });\n\n svgPaths.selectAll('defs *').remove();\n svgPaths.selectAll('defs').each(function (e) {\n var edge = g.edge(e);\n var arrowhead = arrows[edge.arrowhead];\n arrowhead(d3.select(this), edge.arrowheadId, edge, 'arrowhead');\n });\n\n return svgPaths;\n};\n\nfunction setCreateEdgePaths(value) {\n createEdgePaths = value;\n}\n\nfunction makeFragmentRef(url, fragmentId) {\n var baseUrl = url.split('#')[0];\n return baseUrl + '#' + fragmentId;\n}\n\nfunction calcPoints(g, e) {\n var edge = g.edge(e);\n var tail = g.node(e.v);\n var head = g.node(e.w);\n var points = edge.points.slice(1, edge.points.length - 1);\n points.unshift(intersectNode(tail, points[0]));\n points.push(intersectNode(head, points[points.length - 1]));\n\n return createLine(edge, points);\n}\n\nfunction createLine(edge, points) {\n // @ts-expect-error\n var line = (d3.line || d3.svg.line)()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n });\n\n (line.curve || line.interpolate)(edge.curve);\n\n return line(points);\n}\n\nfunction getCoords(elem) {\n var bbox = elem.getBBox();\n var matrix = elem.ownerSVGElement\n .getScreenCTM()\n .inverse()\n .multiply(elem.getScreenCTM())\n .translate(bbox.width / 2, bbox.height / 2);\n return { x: matrix.e, y: matrix.f };\n}\n\nfunction enter(svgPaths, g) {\n var svgPathsEnter = svgPaths.enter().append('g').attr('class', 'edgePath').style('opacity', 0);\n svgPathsEnter\n .append('path')\n .attr('class', 'path')\n .attr('d', function (e) {\n var edge = g.edge(e);\n var sourceElem = g.node(e.v).elem;\n var points = _.range(edge.points.length).map(function () {\n return getCoords(sourceElem);\n });\n return createLine(edge, points);\n });\n svgPathsEnter.append('defs');\n return svgPathsEnter;\n}\n\nfunction exit(svgPaths, g) {\n var svgPathExit = svgPaths.exit();\n util.applyTransition(svgPathExit, g).style('opacity', 0).remove();\n}\n","import * as d3 from 'd3';\nimport * as _ from 'lodash-es';\nimport { addLabel } from './label/add-label.js';\nimport * as util from './util.js';\n\nexport { createNodes, setCreateNodes };\n\nvar createNodes = function (selection, g, shapes) {\n var simpleNodes = g.nodes().filter(function (v) {\n return !util.isSubgraph(g, v);\n });\n var svgNodes = selection\n .selectAll('g.node')\n .data(simpleNodes, function (v) {\n return v;\n })\n .classed('update', true);\n\n svgNodes.exit().remove();\n\n svgNodes.enter().append('g').attr('class', 'node').style('opacity', 0);\n\n svgNodes = selection.selectAll('g.node');\n\n svgNodes.each(function (v) {\n var node = g.node(v);\n var thisGroup = d3.select(this);\n util.applyClass(\n thisGroup,\n node['class'],\n (thisGroup.classed('update') ? 'update ' : '') + 'node'\n );\n\n thisGroup.select('g.label').remove();\n var labelGroup = thisGroup.append('g').attr('class', 'label');\n var labelDom = addLabel(labelGroup, node);\n var shape = shapes[node.shape];\n var bbox = _.pick(labelDom.node().getBBox(), 'width', 'height');\n\n node.elem = this;\n\n if (node.id) {\n thisGroup.attr('id', node.id);\n }\n if (node.labelId) {\n labelGroup.attr('id', node.labelId);\n }\n\n if (_.has(node, 'width')) {\n bbox.width = node.width;\n }\n if (_.has(node, 'height')) {\n bbox.height = node.height;\n }\n\n bbox.width += node.paddingLeft + node.paddingRight;\n bbox.height += node.paddingTop + node.paddingBottom;\n labelGroup.attr(\n 'transform',\n 'translate(' +\n (node.paddingLeft - node.paddingRight) / 2 +\n ',' +\n (node.paddingTop - node.paddingBottom) / 2 +\n ')'\n );\n\n var root = d3.select(this);\n root.select('.label-container').remove();\n var shapeSvg = shape(root, bbox, node).classed('label-container', true);\n util.applyStyle(shapeSvg, node.style);\n\n var shapeBBox = shapeSvg.node().getBBox();\n node.width = shapeBBox.width;\n node.height = shapeBBox.height;\n });\n\n var exitSelection;\n\n if (svgNodes.exit) {\n exitSelection = svgNodes.exit();\n } else {\n exitSelection = svgNodes.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g).style('opacity', 0).remove();\n\n return svgNodes;\n};\n\nfunction setCreateNodes(value) {\n createNodes = value;\n}\n","import * as d3 from 'd3';\nimport * as util from './util.js';\n\nexport { positionClusters };\n\nfunction positionClusters(selection, g) {\n var created = selection.filter(function () {\n return !d3.select(this).classed('update');\n });\n\n function translate(v) {\n var node = g.node(v);\n return 'translate(' + node.x + ',' + node.y + ')';\n }\n\n created.attr('transform', translate);\n\n util.applyTransition(selection, g).style('opacity', 1).attr('transform', translate);\n\n util\n .applyTransition(created.selectAll('rect'), g)\n .attr('width', function (v) {\n return g.node(v).width;\n })\n .attr('height', function (v) {\n return g.node(v).height;\n })\n .attr('x', function (v) {\n var node = g.node(v);\n return -node.width / 2;\n })\n .attr('y', function (v) {\n var node = g.node(v);\n return -node.height / 2;\n });\n}\n","import * as d3 from 'd3';\nimport * as _ from 'lodash-es';\nimport * as util from './util.js';\n\nexport { positionEdgeLabels };\n\nfunction positionEdgeLabels(selection, g) {\n var created = selection.filter(function () {\n return !d3.select(this).classed('update');\n });\n\n function translate(e) {\n var edge = g.edge(e);\n return _.has(edge, 'x') ? 'translate(' + edge.x + ',' + edge.y + ')' : '';\n }\n\n created.attr('transform', translate);\n\n util.applyTransition(selection, g).style('opacity', 1).attr('transform', translate);\n}\n","import * as d3 from 'd3';\nimport * as util from './util.js';\n\nexport { positionNodes };\n\nfunction positionNodes(selection, g) {\n var created = selection.filter(function () {\n return !d3.select(this).classed('update');\n });\n\n function translate(v) {\n var node = g.node(v);\n return 'translate(' + node.x + ',' + node.y + ')';\n }\n\n created.attr('transform', translate);\n\n util.applyTransition(selection, g).style('opacity', 1).attr('transform', translate);\n}\n","export { intersectEllipse };\n\nfunction intersectEllipse(node, rx, ry, point) {\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs((rx * ry * px) / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs((rx * ry * py) / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return { x: cx + dx, y: cy + dy };\n}\n","import { intersectEllipse } from './intersect-ellipse.js';\n\nexport { intersectCircle };\n\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n","export { intersectLine };\n\n/*\n * Returns the point at which two lines, p and q, intersect or returns\n * undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n\n // Compute r3 and r4.\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n\n // Compute r1 and r2\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n return { x: x, y: y };\n}\n\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n","import { intersectLine } from './intersect-line.js';\n\nexport { intersectPolygon };\n\n/*\n * Returns the point ({x, y}) at which the point argument intersects with the\n * node argument assuming that it has the shape specified by polygon.\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n polyPoints.forEach(function (entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersectLine(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function (p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n","export { intersectRect };\n\nfunction intersectRect(node, point) {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n","import { intersectCircle } from './intersect/intersect-circle.js';\nimport { intersectEllipse } from './intersect/intersect-ellipse.js';\nimport { intersectPolygon } from './intersect/intersect-polygon.js';\nimport { intersectRect } from './intersect/intersect-rect.js';\n\nexport { shapes, setShapes };\n\nvar shapes = {\n rect,\n ellipse,\n circle,\n diamond,\n};\n\nfunction setShapes(value) {\n shapes = value;\n}\n\nfunction rect(parent, bbox, node) {\n var shapeSvg = parent\n .insert('rect', ':first-child')\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2)\n .attr('y', -bbox.height / 2)\n .attr('width', bbox.width)\n .attr('height', bbox.height);\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n}\n\nfunction ellipse(parent, bbox, node) {\n var rx = bbox.width / 2;\n var ry = bbox.height / 2;\n var shapeSvg = parent\n .insert('ellipse', ':first-child')\n .attr('x', -bbox.width / 2)\n .attr('y', -bbox.height / 2)\n .attr('rx', rx)\n .attr('ry', ry);\n\n node.intersect = function (point) {\n return intersectEllipse(node, rx, ry, point);\n };\n\n return shapeSvg;\n}\n\nfunction circle(parent, bbox, node) {\n var r = Math.max(bbox.width, bbox.height) / 2;\n var shapeSvg = parent\n .insert('circle', ':first-child')\n .attr('x', -bbox.width / 2)\n .attr('y', -bbox.height / 2)\n .attr('r', r);\n\n node.intersect = function (point) {\n return intersectCircle(node, r, point);\n };\n\n return shapeSvg;\n}\n\n// Circumscribe an ellipse for the bounding box with a diamond shape. I derived\n// the function to calculate the diamond shape from:\n// http://mathforum.org/kb/message.jspa?messageID=3750236\nfunction diamond(parent, bbox, node) {\n var w = (bbox.width * Math.SQRT2) / 2;\n var h = (bbox.height * Math.SQRT2) / 2;\n var points = [\n { x: 0, y: -h },\n { x: -w, y: 0 },\n { x: 0, y: h },\n { x: w, y: 0 },\n ];\n var shapeSvg = parent.insert('polygon', ':first-child').attr(\n 'points',\n points\n .map(function (p) {\n return p.x + ',' + p.y;\n })\n .join(' ')\n );\n\n node.intersect = function (p) {\n return intersectPolygon(node, points, p);\n };\n\n return shapeSvg;\n}\n","import * as d3 from 'd3';\nimport * as _ from 'lodash-es';\nimport { layout } from '../dagre/index.js';\nimport { arrows, setArrows } from './arrows.js';\nimport { createClusters, setCreateClusters } from './create-clusters.js';\nimport { createEdgeLabels, setCreateEdgeLabels } from './create-edge-labels.js';\nimport { createEdgePaths, setCreateEdgePaths } from './create-edge-paths.js';\nimport { createNodes, setCreateNodes } from './create-nodes.js';\nimport { positionClusters } from './position-clusters.js';\nimport { positionEdgeLabels } from './position-edge-labels.js';\nimport { positionNodes } from './position-nodes.js';\nimport { shapes, setShapes } from './shapes.js';\n\nexport { render };\n\n// This design is based on http://bost.ocks.org/mike/chart/.\nfunction render() {\n var fn = function (svg, g) {\n preProcessGraph(g);\n\n var outputGroup = createOrSelectGroup(svg, 'output');\n var clustersGroup = createOrSelectGroup(outputGroup, 'clusters');\n var edgePathsGroup = createOrSelectGroup(outputGroup, 'edgePaths');\n var edgeLabels = createEdgeLabels(createOrSelectGroup(outputGroup, 'edgeLabels'), g);\n var nodes = createNodes(createOrSelectGroup(outputGroup, 'nodes'), g, shapes);\n\n layout(g);\n\n positionNodes(nodes, g);\n positionEdgeLabels(edgeLabels, g);\n createEdgePaths(edgePathsGroup, g, arrows);\n\n var clusters = createClusters(clustersGroup, g);\n positionClusters(clusters, g);\n\n postProcessGraph(g);\n };\n\n fn.createNodes = function (value) {\n if (!arguments.length) return createNodes;\n setCreateNodes(value);\n return fn;\n };\n\n fn.createClusters = function (value) {\n if (!arguments.length) return createClusters;\n setCreateClusters(value);\n return fn;\n };\n\n fn.createEdgeLabels = function (value) {\n if (!arguments.length) return createEdgeLabels;\n setCreateEdgeLabels(value);\n return fn;\n };\n\n fn.createEdgePaths = function (value) {\n if (!arguments.length) return createEdgePaths;\n setCreateEdgePaths(value);\n return fn;\n };\n\n fn.shapes = function (value) {\n if (!arguments.length) return shapes;\n setShapes(value);\n return fn;\n };\n\n fn.arrows = function (value) {\n if (!arguments.length) return arrows;\n setArrows(value);\n return fn;\n };\n\n return fn;\n}\n\nvar NODE_DEFAULT_ATTRS = {\n paddingLeft: 10,\n paddingRight: 10,\n paddingTop: 10,\n paddingBottom: 10,\n rx: 0,\n ry: 0,\n shape: 'rect',\n};\n\nvar EDGE_DEFAULT_ATTRS = {\n arrowhead: 'normal',\n curve: d3.curveLinear,\n};\n\nfunction preProcessGraph(g) {\n g.nodes().forEach(function (v) {\n var node = g.node(v);\n if (!_.has(node, 'label') && !g.children(v).length) {\n node.label = v;\n }\n\n if (_.has(node, 'paddingX')) {\n _.defaults(node, {\n paddingLeft: node.paddingX,\n paddingRight: node.paddingX,\n });\n }\n\n if (_.has(node, 'paddingY')) {\n _.defaults(node, {\n paddingTop: node.paddingY,\n paddingBottom: node.paddingY,\n });\n }\n\n if (_.has(node, 'padding')) {\n _.defaults(node, {\n paddingLeft: node.padding,\n paddingRight: node.padding,\n paddingTop: node.padding,\n paddingBottom: node.padding,\n });\n }\n\n _.defaults(node, NODE_DEFAULT_ATTRS);\n\n _.each(['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'], function (k) {\n node[k] = Number(node[k]);\n });\n\n // Save dimensions for restore during post-processing\n if (_.has(node, 'width')) {\n node._prevWidth = node.width;\n }\n if (_.has(node, 'height')) {\n node._prevHeight = node.height;\n }\n });\n\n g.edges().forEach(function (e) {\n var edge = g.edge(e);\n if (!_.has(edge, 'label')) {\n edge.label = '';\n }\n _.defaults(edge, EDGE_DEFAULT_ATTRS);\n });\n}\n\nfunction postProcessGraph(g) {\n _.each(g.nodes(), function (v) {\n var node = g.node(v);\n\n // Restore original dimensions\n if (_.has(node, '_prevWidth')) {\n node.width = node._prevWidth;\n } else {\n delete node.width;\n }\n\n if (_.has(node, '_prevHeight')) {\n node.height = node._prevHeight;\n } else {\n delete node.height;\n }\n\n delete node._prevWidth;\n delete node._prevHeight;\n });\n}\n\nfunction createOrSelectGroup(root, name) {\n var selection = root.select('g.' + name);\n if (selection.empty()) {\n selection = root.append('g').attr('class', name);\n }\n return selection;\n}\n","import { p as parser, f as flowDb } from \"./flowDb-8f9fc471.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { select, curveLinear, selectAll } from \"d3\";\nimport { k as getStylesFromArray, n as evaluate, c as getConfig, e as common, l as log, o as interpolateToCurve, p as setupGraphViewbox } from \"./mermaid-a98f434b.js\";\nimport { render } from \"dagre-d3-es\";\nimport { applyStyle } from \"dagre-d3-es/src/dagre-js/util.js\";\nimport { addHtmlLabel } from \"dagre-d3-es/src/dagre-js/label/add-html-label.js\";\nimport { intersectPolygon } from \"dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js\";\nimport { intersectRect } from \"dagre-d3-es/src/dagre-js/intersect/intersect-rect.js\";\nimport { f as flowRendererV2, a as flowStyles } from \"./styles-ff678862.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nimport \"./index-4c4adb72.js\";\nimport \"dagre-d3-es/src/dagre/index.js\";\nimport \"dagre-d3-es/src/graphlib/json.js\";\nimport \"./edges-b00f0ec2.js\";\nimport \"./createText-285e50b4.js\";\nimport \"mdast-util-from-markdown\";\nimport \"./svgDraw-5d8a058e.js\";\nfunction question(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const s = (w + h) * 0.9;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, s, s, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction hexagon(parent, bbox, node) {\n const f = 4;\n const h = bbox.height;\n const m = h / f;\n const w = bbox.width + 2 * m;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction rect_left_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction lean_right(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction lean_left(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction inv_trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction rect_right_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction stadium(parent, bbox, node) {\n const h = bbox.height;\n const w = bbox.width + h / 4;\n const shapeSvg = parent.insert(\"rect\", \":first-child\").attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n}\nfunction subroutine(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction cylinder(parent, bbox, node) {\n const w = bbox.width;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const shapeSvg = parent.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n node.intersect = function(point) {\n const pos = intersectRect(node, point);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\nfunction addToRender(render2) {\n render2.shapes().question = question;\n render2.shapes().hexagon = hexagon;\n render2.shapes().stadium = stadium;\n render2.shapes().subroutine = subroutine;\n render2.shapes().cylinder = cylinder;\n render2.shapes().rect_left_inv_arrow = rect_left_inv_arrow;\n render2.shapes().lean_right = lean_right;\n render2.shapes().lean_left = lean_left;\n render2.shapes().trapezoid = trapezoid;\n render2.shapes().inv_trapezoid = inv_trapezoid;\n render2.shapes().rect_right_inv_arrow = rect_right_inv_arrow;\n}\nfunction addToRenderV2(addShape) {\n addShape({ question });\n addShape({ hexagon });\n addShape({ stadium });\n addShape({ subroutine });\n addShape({ cylinder });\n addShape({ rect_left_inv_arrow });\n addShape({ lean_right });\n addShape({ lean_left });\n addShape({ trapezoid });\n addShape({ inv_trapezoid });\n addShape({ rect_right_inv_arrow });\n}\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\nconst flowChartShapes = {\n addToRender,\n addToRenderV2\n};\nconst conf = {};\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n conf[key] = cnf[key];\n }\n};\nconst addVertices = function(vert, g, svgId, root, _doc, diagObj) {\n const svg = !root ? select(`[id=\"${svgId}\"]`) : root.select(`[id=\"${svgId}\"]`);\n const doc = !_doc ? document : _doc;\n const keys = Object.keys(vert);\n keys.forEach(function(id) {\n const vertex = vert[id];\n let classStr = \"default\";\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(\" \");\n }\n const styles = getStylesFromArray(vertex.styles);\n let vertexText = vertex.text !== void 0 ? vertex.text : vertex.id;\n let vertexNode;\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const node = {\n label: vertexText.replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n )\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", styles.labelStyle.replace(\"color:\", \"fill:\"));\n const rows = vertexText.split(common.lineBreakRegex);\n for (const row of rows) {\n const tspan = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"1\");\n tspan.textContent = row;\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n let radious = 0;\n let _shape = \"\";\n switch (vertex.type) {\n case \"round\":\n radious = 5;\n _shape = \"rect\";\n break;\n case \"square\":\n _shape = \"rect\";\n break;\n case \"diamond\":\n _shape = \"question\";\n break;\n case \"hexagon\":\n _shape = \"hexagon\";\n break;\n case \"odd\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"lean_right\":\n _shape = \"lean_right\";\n break;\n case \"lean_left\":\n _shape = \"lean_left\";\n break;\n case \"trapezoid\":\n _shape = \"trapezoid\";\n break;\n case \"inv_trapezoid\":\n _shape = \"inv_trapezoid\";\n break;\n case \"odd_right\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"circle\":\n _shape = \"circle\";\n break;\n case \"ellipse\":\n _shape = \"ellipse\";\n break;\n case \"stadium\":\n _shape = \"stadium\";\n break;\n case \"subroutine\":\n _shape = \"subroutine\";\n break;\n case \"cylinder\":\n _shape = \"cylinder\";\n break;\n case \"group\":\n _shape = \"rect\";\n break;\n default:\n _shape = \"rect\";\n }\n log.warn(\"Adding node\", vertex.id, vertex.domId);\n g.setNode(diagObj.db.lookUpDomId(vertex.id), {\n labelType: \"svg\",\n labelStyle: styles.labelStyle,\n shape: _shape,\n label: vertexNode,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: diagObj.db.lookUpDomId(vertex.id)\n });\n });\n};\nconst addEdges = function(edges, g, diagObj) {\n let cnt = 0;\n let defaultStyle;\n let defaultLabelStyle;\n if (edges.defaultStyle !== void 0) {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n edges.forEach(function(edge) {\n cnt++;\n const linkId = \"L-\" + edge.start + \"-\" + edge.end;\n const linkNameStart = \"LS-\" + edge.start;\n const linkNameEnd = \"LE-\" + edge.end;\n const edgeData = {};\n if (edge.type === \"arrow_open\") {\n edgeData.arrowhead = \"none\";\n } else {\n edgeData.arrowhead = \"normal\";\n }\n let style = \"\";\n let labelStyle = \"\";\n if (edge.style !== void 0) {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n switch (edge.stroke) {\n case \"normal\":\n style = \"fill:none\";\n if (defaultStyle !== void 0) {\n style = defaultStyle;\n }\n if (defaultLabelStyle !== void 0) {\n labelStyle = defaultLabelStyle;\n }\n break;\n case \"dotted\":\n style = \"fill:none;stroke-width:2px;stroke-dasharray:3;\";\n break;\n case \"thick\":\n style = \" stroke-width: 3.5px;fill:none\";\n break;\n }\n }\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n if (edge.interpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (edges.defaultInterpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n edgeData.labelType = \"html\";\n edgeData.label = `${edge.text.replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n )}`;\n } else {\n edgeData.labelType = \"text\";\n edgeData.label = edge.text.replace(common.lineBreakRegex, \"\\n\");\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n }\n }\n edgeData.id = linkId;\n edgeData.class = linkNameStart + \" \" + linkNameEnd;\n edgeData.minlen = edge.length || 1;\n g.setEdge(diagObj.db.lookUpDomId(edge.start), diagObj.db.lookUpDomId(edge.end), edgeData, cnt);\n });\n};\nconst getClasses = function(text, diagObj) {\n log.info(\"Extracting classes\");\n diagObj.db.clear();\n try {\n diagObj.parse(text);\n return diagObj.db.getClasses();\n } catch (e) {\n log.error(e);\n return {};\n }\n};\nconst draw = function(text, id, _version, diagObj) {\n log.info(\"Drawing flowchart\");\n diagObj.db.clear();\n const { securityLevel, flowchart: conf2 } = getConfig();\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n let dir = diagObj.db.getDirection();\n if (dir === void 0) {\n dir = \"TD\";\n }\n const nodeSpacing = conf2.nodeSpacing || 50;\n const rankSpacing = conf2.rankSpacing || 50;\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n let subG;\n const subGraphs = diagObj.db.getSubGraphs();\n for (let i2 = subGraphs.length - 1; i2 >= 0; i2--) {\n subG = subGraphs[i2];\n diagObj.db.addVertex(subG.id, subG.title, \"group\", void 0, subG.classes);\n }\n const vert = diagObj.db.getVertices();\n log.warn(\"Get vertices\", vert);\n const edges = diagObj.db.getEdges();\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n selectAll(\"cluster\").append(\"text\");\n for (let j = 0; j < subG.nodes.length; j++) {\n log.warn(\n \"Setting subgraph\",\n subG.nodes[j],\n diagObj.db.lookUpDomId(subG.nodes[j]),\n diagObj.db.lookUpDomId(subG.id)\n );\n g.setParent(diagObj.db.lookUpDomId(subG.nodes[j]), diagObj.db.lookUpDomId(subG.id));\n }\n }\n addVertices(vert, g, id, root, doc, diagObj);\n addEdges(edges, g, diagObj);\n const render$1 = new render();\n flowChartShapes.addToRender(render$1);\n render$1.arrows().none = function normal(parent, id2, edge, type) {\n const marker = parent.append(\"marker\").attr(\"id\", id2).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"strokeWidth\").attr(\"markerWidth\", 8).attr(\"markerHeight\", 6).attr(\"orient\", \"auto\");\n const path = marker.append(\"path\").attr(\"d\", \"M 0 0 L 0 0 L 0 0 z\");\n applyStyle(path, edge[type + \"Style\"]);\n };\n render$1.arrows().normal = function normal(parent, id2) {\n const marker = parent.append(\"marker\").attr(\"id\", id2).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"strokeWidth\").attr(\"markerWidth\", 8).attr(\"markerHeight\", 6).attr(\"orient\", \"auto\");\n marker.append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowheadPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n };\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n render$1(element, g);\n element.selectAll(\"g.node\").attr(\"title\", function() {\n return diagObj.db.getTooltip(this.id);\n });\n diagObj.db.indexNodes(\"subGraph\" + i);\n for (i = 0; i < subGraphs.length; i++) {\n subG = subGraphs[i];\n if (subG.title !== \"undefined\") {\n const clusterRects = doc.querySelectorAll(\n \"#\" + id + ' [id=\"' + diagObj.db.lookUpDomId(subG.id) + '\"] rect'\n );\n const clusterEl = doc.querySelectorAll(\n \"#\" + id + ' [id=\"' + diagObj.db.lookUpDomId(subG.id) + '\"]'\n );\n const xPos = clusterRects[0].x.baseVal.value;\n const yPos = clusterRects[0].y.baseVal.value;\n const _width = clusterRects[0].width.baseVal.value;\n const cluster = select(clusterEl[0]);\n const te = cluster.select(\".label\");\n te.attr(\"transform\", `translate(${xPos + _width / 2}, ${yPos + 14})`);\n te.attr(\"id\", id + \"Text\");\n for (let j = 0; j < subG.classes.length; j++) {\n clusterEl[0].classList.add(subG.classes[j]);\n }\n }\n }\n if (!conf2.htmlLabels) {\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\n const rect = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"rx\", 0);\n rect.setAttribute(\"ry\", 0);\n rect.setAttribute(\"width\", dim.width);\n rect.setAttribute(\"height\", dim.height);\n label.insertBefore(rect, label.firstChild);\n }\n }\n setupGraphViewbox(g, svg, conf2.diagramPadding, conf2.useMaxWidth);\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n if (vertex.link) {\n const node = root.select(\"#\" + id + ' [id=\"' + diagObj.db.lookUpDomId(key) + '\"]');\n if (node) {\n const link = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"a\");\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"class\", vertex.classes.join(\" \"));\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"href\", vertex.link);\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"rel\", \"noopener\");\n if (securityLevel === \"sandbox\") {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", \"_top\");\n } else if (vertex.linkTarget) {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", vertex.linkTarget);\n }\n const linkNode = node.insert(function() {\n return link;\n }, \":first-child\");\n const shape = node.select(\".label-container\");\n if (shape) {\n linkNode.append(function() {\n return shape.node();\n });\n }\n const label = node.select(\".label\");\n if (label) {\n linkNode.append(function() {\n return label.node();\n });\n }\n }\n }\n });\n};\nconst flowRenderer = {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\nconst diagram = {\n parser,\n db: flowDb,\n renderer: flowRendererV2,\n styles: flowStyles,\n init: (cnf) => {\n if (!cnf.flowchart) {\n cnf.flowchart = {};\n }\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n flowRenderer.setConf(cnf.flowchart);\n flowDb.clear();\n flowDb.setGen(\"gen-1\");\n }\n};\nexport {\n diagram\n};\n"],"names":["responseText","response","text","input","init","parser","type","svg","arrows","normal","vee","undirected","setArrows","value","parent","id","edge","marker","path","util.applyStyle","addSVGLabel","root","node","domNode","addTextLabel","lines","processEscapeSequences","i","newText","escaped","ch","addLabel","location","label","labelSvg","addHtmlLabel","labelBBox","y","createClusters","selection","g","clusters","v","util.isSubgraph","svgClusters","util.applyTransition","enterSelection","thisGroup","d3.select","labelGroup","c","domCluster","setCreateClusters","createEdgeLabels","svgEdgeLabels","e","util.edgeToId","bbox","_.has","exitSelection","setCreateEdgeLabels","intersectNode","point","createEdgePaths","previousPaths","newPaths","enter","exit","svgPaths","domEdge","util.applyClass","_.uniqueId","d3\n .select","makeFragmentRef","calcPoints","arrowhead","setCreateEdgePaths","url","fragmentId","baseUrl","tail","head","points","createLine","line","d3.line","d3.svg","d","getCoords","elem","matrix","svgPathsEnter","sourceElem","_.range","svgPathExit","createNodes","shapes","simpleNodes","svgNodes","labelDom","shape","_.pick","shapeSvg","shapeBBox","setCreateNodes","positionClusters","created","translate","util\n .applyTransition","positionEdgeLabels","positionNodes","intersectEllipse","rx","ry","cx","cy","px","py","det","dx","dy","intersectCircle","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","offset","num","x","sameSign","intersectPolygon","polyPoints","x1","y1","intersections","minX","minY","entry","left","top","intersect","q","pdx","pdy","distp","qdx","qdy","distq","intersectRect","w","h","sx","sy","rect","ellipse","circle","diamond","setShapes","r","p","render","fn","preProcessGraph","outputGroup","createOrSelectGroup","clustersGroup","edgePathsGroup","edgeLabels","nodes","layout","postProcessGraph","NODE_DEFAULT_ATTRS","EDGE_DEFAULT_ATTRS","d3.curveLinear","_.defaults","_.each","k","name","question","insertPolygonShape","hexagon","m","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","stadium","subroutine","cylinder","pos","addToRender","render2","addToRenderV2","addShape","flowChartShapes","conf","setConf","cnf","keys","key","addVertices","vert","svgId","_doc","diagObj","select","doc","vertex","classStr","styles","getStylesFromArray","vertexText","vertexNode","evaluate","getConfig","s","svgLabel","rows","common","row","tspan","radious","_shape","log","addEdges","edges","cnt","defaultStyle","defaultLabelStyle","defaultStyles","linkId","linkNameStart","linkNameEnd","edgeData","style","labelStyle","interpolateToCurve","curveLinear","getClasses","draw","_version","securityLevel","conf2","sandboxElement","dir","nodeSpacing","rankSpacing","graphlib.Graph","subG","subGraphs","i2","selectAll","j","render$1","id2","applyStyle","element","clusterRects","clusterEl","xPos","yPos","_width","te","labels","dim","setupGraphViewbox","link","linkNode","flowRenderer","diagram","flowDb","flowRendererV2","flowStyles"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]}
\ No newline at end of file
diff --git a/docs/assets/flowDiagram-v2-d6437390-92f77779.js b/docs/assets/flowDiagram-v2-d6437390-92f77779.js
new file mode 100644
index 00000000..196907cc
--- /dev/null
+++ b/docs/assets/flowDiagram-v2-d6437390-92f77779.js
@@ -0,0 +1,2 @@
+import{p as i,f as o}from"./flowDb-8f9fc471-183d3c57.js";import{f as t,a as m}from"./styles-ff678862-5c1d9917.js";import{z as p}from"./intro.stories-6bb6b497.js";import"./layout-6e761a00.js";import"./dayjs.min-1b995edc.js";import"./index-4c4adb72-a766ddbf.js";import"./_baseSet-db0c20a6.js";import"./_getTag-edecb89a.js";import"./isSymbol-50749e90.js";import"./isObject-32699ff3.js";import"./toString-25ea340b.js";import"./edges-b00f0ec2-8fed315f.js";import"./createText-285e50b4-d331e256.js";import"./index-356e4a49.js";import"./svgDraw-5d8a058e-5b68b2dd.js";import"./line-16ea319c.js";import"./array-9f3ba611.js";import"./path-53f90ab3.js";import"./chunk-S4VUQJ4A-89907381.js";import"./iframe-0b438e8e.js";import"../sb-preview/runtime.js";import"./index-54730943.js";import"./_commonjsHelpers-de833af9.js";import"./index-d37d4223.js";import"./index-e04ae519.js";import"./jsx-runtime-f67a1dbf.js";import"./Table-d8495df8.js";import"./parseCss-6d58d2d1.js";import"./index-82fcde9f.js";import"./_color-087aa1f8.js";import"./index-97648d8f.js";import"./now-bd49f550.js";const H={parser:i,db:o,renderer:t,styles:m,init:r=>{r.flowchart||(r.flowchart={}),r.flowchart.arrowMarkerAbsolute=r.arrowMarkerAbsolute,p({flowchart:{arrowMarkerAbsolute:r.arrowMarkerAbsolute}}),t.setConf(r.flowchart),o.clear(),o.setGen("gen-2")}};export{H as diagram};
+//# sourceMappingURL=flowDiagram-v2-d6437390-92f77779.js.map
diff --git a/docs/assets/flowDiagram-v2-d6437390-bfe1df35.js.map b/docs/assets/flowDiagram-v2-d6437390-92f77779.js.map
similarity index 96%
rename from docs/assets/flowDiagram-v2-d6437390-bfe1df35.js.map
rename to docs/assets/flowDiagram-v2-d6437390-92f77779.js.map
index 1fdef224..a838f05c 100644
--- a/docs/assets/flowDiagram-v2-d6437390-bfe1df35.js.map
+++ b/docs/assets/flowDiagram-v2-d6437390-92f77779.js.map
@@ -1 +1 @@
-{"version":3,"file":"flowDiagram-v2-d6437390-bfe1df35.js","sources":["../../node_modules/mermaid/dist/flowDiagram-v2-d6437390.js"],"sourcesContent":["import { p as parser, f as flowDb } from \"./flowDb-8f9fc471.js\";\nimport { f as flowRendererV2, a as flowStyles } from \"./styles-ff678862.js\";\nimport { q as setConfig } from \"./mermaid-a98f434b.js\";\nimport \"d3\";\nimport \"dagre-d3-es/src/graphlib/index.js\";\nimport \"./index-4c4adb72.js\";\nimport \"dagre-d3-es/src/dagre/index.js\";\nimport \"dagre-d3-es/src/graphlib/json.js\";\nimport \"./edges-b00f0ec2.js\";\nimport \"./createText-285e50b4.js\";\nimport \"mdast-util-from-markdown\";\nimport \"ts-dedent\";\nimport \"./svgDraw-5d8a058e.js\";\nimport \"dagre-d3-es/src/dagre-js/label/add-html-label.js\";\nimport \"khroma\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"lodash-es/memoize.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nconst diagram = {\n parser,\n db: flowDb,\n renderer: flowRendererV2,\n styles: flowStyles,\n init: (cnf) => {\n if (!cnf.flowchart) {\n cnf.flowchart = {};\n }\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n setConfig({ flowchart: { arrowMarkerAbsolute: cnf.arrowMarkerAbsolute } });\n flowRendererV2.setConf(cnf.flowchart);\n flowDb.clear();\n flowDb.setGen(\"gen-2\");\n }\n};\nexport {\n diagram\n};\n"],"names":["diagram","parser","flowDb","flowRendererV2","flowStyles","cnf","setConfig"],"mappings":"4iCAqBK,MAACA,EAAU,CAChB,OAAEC,EACA,GAAIC,EACJ,SAAUC,EACV,OAAQC,EACR,KAAOC,GAAQ,CACRA,EAAI,YACPA,EAAI,UAAY,IAElBA,EAAI,UAAU,oBAAsBA,EAAI,oBACxCC,EAAU,CAAE,UAAW,CAAE,oBAAqBD,EAAI,mBAAqB,CAAA,CAAE,EACzEF,EAAe,QAAQE,EAAI,SAAS,EACpCH,EAAO,MAAK,EACZA,EAAO,OAAO,OAAO,CACtB,CACH","x_google_ignoreList":[0]}
\ No newline at end of file
+{"version":3,"file":"flowDiagram-v2-d6437390-92f77779.js","sources":["../../node_modules/mermaid/dist/flowDiagram-v2-d6437390.js"],"sourcesContent":["import { p as parser, f as flowDb } from \"./flowDb-8f9fc471.js\";\nimport { f as flowRendererV2, a as flowStyles } from \"./styles-ff678862.js\";\nimport { q as setConfig } from \"./mermaid-a98f434b.js\";\nimport \"d3\";\nimport \"dagre-d3-es/src/graphlib/index.js\";\nimport \"./index-4c4adb72.js\";\nimport \"dagre-d3-es/src/dagre/index.js\";\nimport \"dagre-d3-es/src/graphlib/json.js\";\nimport \"./edges-b00f0ec2.js\";\nimport \"./createText-285e50b4.js\";\nimport \"mdast-util-from-markdown\";\nimport \"ts-dedent\";\nimport \"./svgDraw-5d8a058e.js\";\nimport \"dagre-d3-es/src/dagre-js/label/add-html-label.js\";\nimport \"khroma\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"lodash-es/memoize.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nconst diagram = {\n parser,\n db: flowDb,\n renderer: flowRendererV2,\n styles: flowStyles,\n init: (cnf) => {\n if (!cnf.flowchart) {\n cnf.flowchart = {};\n }\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n setConfig({ flowchart: { arrowMarkerAbsolute: cnf.arrowMarkerAbsolute } });\n flowRendererV2.setConf(cnf.flowchart);\n flowDb.clear();\n flowDb.setGen(\"gen-2\");\n }\n};\nexport {\n diagram\n};\n"],"names":["diagram","parser","flowDb","flowRendererV2","flowStyles","cnf","setConfig"],"mappings":"4iCAqBK,MAACA,EAAU,CAChB,OAAEC,EACA,GAAIC,EACJ,SAAUC,EACV,OAAQC,EACR,KAAOC,GAAQ,CACRA,EAAI,YACPA,EAAI,UAAY,IAElBA,EAAI,UAAU,oBAAsBA,EAAI,oBACxCC,EAAU,CAAE,UAAW,CAAE,oBAAqBD,EAAI,mBAAqB,CAAA,CAAE,EACzEF,EAAe,QAAQE,EAAI,SAAS,EACpCH,EAAO,MAAK,EACZA,EAAO,OAAO,OAAO,CACtB,CACH","x_google_ignoreList":[0]}
\ No newline at end of file
diff --git a/docs/assets/flowDiagram-v2-d6437390-bfe1df35.js b/docs/assets/flowDiagram-v2-d6437390-bfe1df35.js
deleted file mode 100644
index d61260fe..00000000
--- a/docs/assets/flowDiagram-v2-d6437390-bfe1df35.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import{p as i,f as o}from"./flowDb-8f9fc471-1afb4b26.js";import{f as t,a as m}from"./styles-ff678862-9504fffa.js";import{z as p}from"./intro.stories-4d939548.js";import"./layout-1a625a74.js";import"./dayjs.min-1b995edc.js";import"./index-4c4adb72-8163d4b8.js";import"./_baseSet-db0c20a6.js";import"./_getTag-edecb89a.js";import"./isSymbol-50749e90.js";import"./isObject-32699ff3.js";import"./toString-25ea340b.js";import"./edges-b00f0ec2-fbc7a231.js";import"./createText-285e50b4-3c775375.js";import"./index-356e4a49.js";import"./svgDraw-5d8a058e-2897ef7d.js";import"./line-0cec4b1f.js";import"./array-9f3ba611.js";import"./path-53f90ab3.js";import"./chunk-S4VUQJ4A-6012e64b.js";import"./iframe-8b410132.js";import"../sb-preview/runtime.js";import"./index-20ac22d7.js";import"./_commonjsHelpers-de833af9.js";import"./index-d37d4223.js";import"./index-e04ae519.js";import"./jsx-runtime-bcef64ff.js";import"./Table-5b2980cc.js";import"./parseCss-afe2fffb.js";import"./index-1d070ae9.js";import"./_color-087aa1f8.js";import"./index-f12770ea.js";import"./now-bd49f550.js";const H={parser:i,db:o,renderer:t,styles:m,init:r=>{r.flowchart||(r.flowchart={}),r.flowchart.arrowMarkerAbsolute=r.arrowMarkerAbsolute,p({flowchart:{arrowMarkerAbsolute:r.arrowMarkerAbsolute}}),t.setConf(r.flowchart),o.clear(),o.setGen("gen-2")}};export{H as diagram};
-//# sourceMappingURL=flowDiagram-v2-d6437390-bfe1df35.js.map
diff --git a/docs/assets/flowchart-elk-definition-6f4e6aa0-e558a44c.js b/docs/assets/flowchart-elk-definition-6f4e6aa0-f1c23108.js
similarity index 99%
rename from docs/assets/flowchart-elk-definition-6f4e6aa0-e558a44c.js
rename to docs/assets/flowchart-elk-definition-6f4e6aa0-f1c23108.js
index bade31f9..770713ab 100644
--- a/docs/assets/flowchart-elk-definition-6f4e6aa0-e558a44c.js
+++ b/docs/assets/flowchart-elk-definition-6f4e6aa0-f1c23108.js
@@ -1,4 +1,4 @@
-import{d as bMe,p as wMe}from"./flowDb-8f9fc471-1afb4b26.js";import{l as K1,h as lI,c as OH,U as gMe,X as V1n,V as X1n,W as IH,j as pMe}from"./intro.stories-4d939548.js";import{i as vMe,a as mMe,l as kMe,b as yMe}from"./edges-b00f0ec2-fbc7a231.js";import{c as Hee,g as jMe}from"./_commonjsHelpers-de833af9.js";import{d as PH}from"./index-20ac22d7.js";import"./dayjs.min-1b995edc.js";import{l as EMe}from"./line-0cec4b1f.js";import"./chunk-S4VUQJ4A-6012e64b.js";import"./iframe-8b410132.js";import"../sb-preview/runtime.js";import"./index-e04ae519.js";import"./index-d37d4223.js";import"./index-356e4a49.js";import"./jsx-runtime-bcef64ff.js";import"./_getTag-edecb89a.js";import"./isSymbol-50749e90.js";import"./isObject-32699ff3.js";import"./toString-25ea340b.js";import"./Table-5b2980cc.js";import"./parseCss-afe2fffb.js";import"./index-1d070ae9.js";import"./_color-087aa1f8.js";import"./index-f12770ea.js";import"./createText-285e50b4-3c775375.js";import"./svgDraw-5d8a058e-2897ef7d.js";import"./array-9f3ba611.js";import"./path-53f90ab3.js";var Uee={exports:{}};(function(Ae,It){(function(ut){Ae.exports=ut()})(function(){return function(){function ut(dt,Bt,Ai){function j(Ot,qt){if(!Bt[Ot]){if(!dt[Ot]){var Ge=typeof PH=="function"&&PH;if(!qt&&Ge)return Ge(Ot,!0);if(Ht)return Ht(Ot,!0);var Ki=new Error("Cannot find module '"+Ot+"'");throw Ki.code="MODULE_NOT_FOUND",Ki}var Si=Bt[Ot]={exports:{}};dt[Ot][0].call(Si.exports,function(Mn){var Lc=dt[Ot][1][Mn];return j(Lc||Mn)},Si,Si.exports,ut,dt,Bt,Ai)}return Bt[Ot].exports}for(var Ht=typeof PH=="function"&&PH,ou=0;ou0&&arguments[0]!==void 0?arguments[0]:{},Ki=Ge.defaultLayoutOptions,Si=Ki===void 0?{}:Ki,Mn=Ge.algorithms,Lc=Mn===void 0?["layered","stress","mrtree","radial","force","disco","sporeOverlap","sporeCompaction","rectpacking"]:Mn,Nc=Ge.workerFactory,ps=Ge.workerUrl;if(j(this,Ot),this.defaultLayoutOptions=Si,this.initialized=!1,typeof ps>"u"&&typeof Nc>"u")throw new Error("Cannot construct an ELK without both 'workerUrl' and 'workerFactory'.");var Rr=Nc;typeof ps<"u"&&typeof Nc>"u"&&(Rr=function(q1){return new Worker(q1)});var Ch=Rr(ps);if(typeof Ch.postMessage!="function")throw new TypeError("Created worker does not provide the required 'postMessage' function.");this.worker=new ou(Ch),this.worker.postMessage({cmd:"register",algorithms:Lc}).then(function(H1){return qt.initialized=!0}).catch(console.err)}return Ai(Ot,[{key:"layout",value:function(Ge){var Ki=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Si=Ki.layoutOptions,Mn=Si===void 0?this.defaultLayoutOptions:Si,Lc=Ki.logging,Nc=Lc===void 0?!1:Lc,ps=Ki.measureExecutionTime,Rr=ps===void 0?!1:ps;return Ge?this.worker.postMessage({cmd:"layout",graph:Ge,layoutOptions:Mn,options:{logging:Nc,measureExecutionTime:Rr}}):Promise.reject(new Error("Missing mandatory parameter 'graph'."))}},{key:"knownLayoutAlgorithms",value:function(){return this.worker.postMessage({cmd:"algorithms"})}},{key:"knownLayoutOptions",value:function(){return this.worker.postMessage({cmd:"options"})}},{key:"knownLayoutCategories",value:function(){return this.worker.postMessage({cmd:"categories"})}},{key:"terminateWorker",value:function(){this.worker.terminate()}}]),Ot}();Bt.default=Ht;var ou=function(){function Ot(qt){var Ge=this;if(j(this,Ot),qt===void 0)throw new Error("Missing mandatory parameter 'worker'.");this.resolvers={},this.worker=qt,this.worker.onmessage=function(Ki){setTimeout(function(){Ge.receive(Ge,Ki)},0)}}return Ai(Ot,[{key:"postMessage",value:function(Ge){var Ki=this.id||0;this.id=Ki+1,Ge.id=Ki;var Si=this;return new Promise(function(Mn,Lc){Si.resolvers[Ki]=function(Nc,ps){Nc?(Si.convertGwtStyleError(Nc),Lc(Nc)):Mn(ps)},Si.worker.postMessage(Ge)})}},{key:"receive",value:function(Ge,Ki){var Si=Ki.data,Mn=Ge.resolvers[Si.id];Mn&&(delete Ge.resolvers[Si.id],Si.error?Mn(Si.error):Mn(null,Si.data))}},{key:"terminate",value:function(){this.worker.terminate&&this.worker.terminate()}},{key:"convertGwtStyleError",value:function(Ge){if(Ge){var Ki=Ge.__java$exception;Ki&&(Ki.cause&&Ki.cause.backingJsObject&&(Ge.cause=Ki.cause.backingJsObject,this.convertGwtStyleError(Ge.cause)),delete Ge.__java$exception)}}}]),Ot}()},{}],2:[function(ut,dt,Bt){(function(Ai){(function(){var j;typeof window<"u"?j=window:typeof Ai<"u"?j=Ai:typeof self<"u"&&(j=self);var Ht;function ou(){}function Ot(){}function qt(){}function Ge(){}function Ki(){}function Si(){}function Mn(){}function Lc(){}function Nc(){}function ps(){}function Rr(){}function Ch(){}function H1(){}function q1(){}function ww(){}function Np(){}function G1(){}function Th(){}function Q1n(){}function J1n(){}function zy(){}function Y1n(){}function Z1n(){}function nln(){}function eln(){}function Xg(){}function N(){}function tln(){}function aI(){}function iln(){}function rln(){}function cln(){}function uln(){}function DH(){}function sln(){}function oln(){}function fln(){}function z1(){}function U1(){}function dI(){}function hln(){}function lln(){}function aln(){}function $H(){}function dln(){}function bln(){}function Vg(){}function Qg(){}function wln(){}function gln(){}function pln(){}function vln(){}function FH(){}function W1(){}function Jg(){}function Yg(){}function mln(){}function Vee(){}function bI(){}function kln(){}function yln(){}function jln(){}function Eln(){}function Cln(){}function Tln(){}function Mln(){}function Aln(){}function Sln(){}function Pln(){}function Iln(){}function Oln(){}function Dln(){}function $ln(){}function Fln(){}function xln(){}function Lln(){}function Nln(){}function Bln(){}function Rln(){}function _ln(){}function Kln(){}function Hln(){}function qln(){}function Gln(){}function zln(){}function Uln(){}function Wln(){}function Xln(){}function Vln(){}function Qln(){}function Jln(){}function Yln(){}function xH(){}function Zln(){}function nan(){}function ean(){}function tan(){}function wI(){}function gI(){}function Uy(){}function ian(){}function ran(){}function pI(){}function can(){}function uan(){}function san(){}function Wy(){}function oan(){}function fan(){}function han(){}function lan(){}function aan(){}function dan(){}function ban(){}function wan(){}function gan(){}function LH(){}function pan(){}function van(){}function man(){}function kan(){}function yan(){}function NH(){}function jan(){}function Ean(){}function Can(){}function Tan(){}function Man(){}function Aan(){}function San(){}function Pan(){}function Ian(){}function Oan(){}function Dan(){}function $an(){}function Fan(){}function xan(){}function vI(){}function Lan(){}function Nan(){}function Ban(){}function Ran(){}function _an(){}function BH(){}function Kan(){}function Han(){}function qan(){}function Gan(){}function zan(){}function Uan(){}function Wan(){}function Xan(){}function Van(){}function Qan(){}function Jan(){}function Yan(){}function Zan(){}function ndn(){}function edn(){}function tdn(){}function idn(){}function rdn(){}function cdn(){}function udn(){}function sdn(){}function odn(){}function fdn(){}function hdn(){}function ldn(){}function adn(){}function ddn(){}function bdn(){}function wdn(){}function gdn(){}function pdn(){}function vdn(){}function mdn(){}function kdn(){}function ydn(){}function jdn(){}function Edn(){}function Cdn(){}function Tdn(){}function Mdn(){}function Adn(){}function Sdn(){}function Pdn(){}function Idn(){}function Odn(){}function Ddn(){}function $dn(){}function Fdn(){}function xdn(){}function Ldn(){}function Ndn(){}function Bdn(){}function Rdn(){}function _dn(){}function Kdn(){}function Hdn(){}function qdn(){}function Gdn(){}function zdn(){}function Udn(){}function Wdn(){}function Xdn(){}function Vdn(){}function Qdn(){}function Jdn(){}function Ydn(){}function Zdn(){}function n0n(){}function e0n(){}function t0n(){}function i0n(){}function r0n(){}function c0n(){}function u0n(){}function s0n(){}function o0n(){}function f0n(){}function h0n(){}function l0n(){}function a0n(){}function d0n(){}function b0n(){}function w0n(){}function g0n(){}function p0n(){}function v0n(){}function m0n(){}function k0n(){}function y0n(){}function j0n(){}function E0n(){}function C0n(){}function T0n(){}function M0n(){}function A0n(){}function S0n(){}function P0n(){}function I0n(){}function O0n(){}function D0n(){}function RH(){}function $0n(){}function F0n(){}function x0n(){}function L0n(){}function N0n(){}function B0n(){}function R0n(){}function _0n(){}function K0n(){}function H0n(){}function q0n(){}function G0n(){}function z0n(){}function U0n(){}function W0n(){}function X0n(){}function V0n(){}function Q0n(){}function J0n(){}function Y0n(){}function Z0n(){}function nbn(){}function ebn(){}function tbn(){}function ibn(){}function rbn(){}function cbn(){}function ubn(){}function sbn(){}function obn(){}function fbn(){}function hbn(){}function lbn(){}function abn(){}function dbn(){}function bbn(){}function wbn(){}function gbn(){}function pbn(){}function vbn(){}function mbn(){}function kbn(){}function ybn(){}function jbn(){}function Ebn(){}function Cbn(){}function Tbn(){}function Mbn(){}function Abn(){}function Sbn(){}function Pbn(){}function Ibn(){}function Obn(){}function Dbn(){}function $bn(){}function Fbn(){}function xbn(){}function Lbn(){}function Nbn(){}function Bbn(){}function Rbn(){}function _bn(){}function Kbn(){}function Hbn(){}function qbn(){}function Gbn(){}function zbn(){}function _H(){}function Ubn(){}function Wbn(){}function Xbn(){}function Vbn(){}function Qbn(){}function Jbn(){}function Ybn(){}function Zbn(){}function nwn(){}function ewn(){}function twn(){}function iwn(){}function rwn(){}function cwn(){}function uwn(){}function swn(){}function own(){}function fwn(){}function hwn(){}function lwn(){}function KH(){}function awn(){}function dwn(){}function bwn(){}function wwn(){}function gwn(){}function pwn(){}function HH(){}function qH(){}function vwn(){}function GH(){}function zH(){}function mwn(){}function kwn(){}function ywn(){}function jwn(){}function Ewn(){}function Cwn(){}function Twn(){}function Mwn(){}function Awn(){}function UH(){}function Swn(){}function Pwn(){}function Iwn(){}function Own(){}function Dwn(){}function $wn(){}function Fwn(){}function xwn(){}function Lwn(){}function Nwn(){}function Bwn(){}function Rwn(){}function _wn(){}function Kwn(){}function Hwn(){}function qwn(){}function Gwn(){}function zwn(){}function Uwn(){}function Wwn(){}function Xwn(){}function Vwn(){}function Qwn(){}function Jwn(){}function Ywn(){}function Zwn(){}function ngn(){}function egn(){}function tgn(){}function ign(){}function rgn(){}function cgn(){}function ugn(){}function sgn(){}function ogn(){}function fgn(){}function hgn(){}function lgn(){}function agn(){}function dgn(){}function bgn(){}function wgn(){}function ggn(){}function pgn(){}function vgn(){}function mgn(){}function kgn(){}function ygn(){}function jgn(){}function Egn(){}function Cgn(){}function Tgn(){}function Mgn(){}function Agn(){}function Sgn(){}function Pgn(){}function Ign(){}function Ogn(){}function Dgn(){}function $gn(){}function Fgn(){}function xgn(){}function Lgn(){}function Ngn(){}function Bgn(){}function Rgn(){}function _gn(){}function Kgn(){}function mI(){}function kI(){}function yI(){}function Hgn(){}function qgn(){}function Ggn(){}function zgn(){}function Ugn(){}function WH(){}function Wgn(){}function Xgn(){}function Qee(){}function Vgn(){}function Qgn(){}function Jgn(){}function Ygn(){}function Zgn(){}function n2n(){}function e2n(){}function Zl(){}function t2n(){}function Zg(){}function XH(){}function i2n(){}function r2n(){}function c2n(){}function u2n(){}function s2n(){}function o2n(){}function f2n(){}function h2n(){}function l2n(){}function a2n(){}function d2n(){}function b2n(){}function w2n(){}function g2n(){}function p2n(){}function v2n(){}function m2n(){}function k2n(){}function y2n(){}function j2n(){}function E2n(){}function dn(){}function C2n(){}function T2n(){}function M2n(){}function A2n(){}function S2n(){}function P2n(){}function I2n(){}function O2n(){}function D2n(){}function $2n(){}function jI(){}function F2n(){}function x2n(){}function L2n(){}function N2n(){}function B2n(){}function VH(){}function Xy(){}function Vy(){}function R2n(){}function QH(){}function Qy(){}function _2n(){}function K2n(){}function H2n(){}function q2n(){}function G2n(){}function z2n(){}function Jy(){}function U2n(){}function W2n(){}function X2n(){}function Yy(){}function V2n(){}function JH(){}function Q2n(){}function EI(){}function YH(){}function J2n(){}function Y2n(){}function Z2n(){}function npn(){}function Jee(){}function epn(){}function tpn(){}function ipn(){}function rpn(){}function cpn(){}function upn(){}function spn(){}function opn(){}function fpn(){}function hpn(){}function Bp(){}function CI(){}function lpn(){}function apn(){}function dpn(){}function bpn(){}function wpn(){}function gpn(){}function ppn(){}function vpn(){}function mpn(){}function kpn(){}function ypn(){}function jpn(){}function Epn(){}function Cpn(){}function Tpn(){}function Mpn(){}function Apn(){}function Spn(){}function Ppn(){}function Ipn(){}function Opn(){}function Dpn(){}function $pn(){}function Fpn(){}function xpn(){}function Lpn(){}function Npn(){}function Bpn(){}function Rpn(){}function _pn(){}function Kpn(){}function Hpn(){}function qpn(){}function Gpn(){}function zpn(){}function Upn(){}function Wpn(){}function Xpn(){}function Vpn(){}function Qpn(){}function Jpn(){}function Ypn(){}function Zpn(){}function n3n(){}function e3n(){}function t3n(){}function i3n(){}function r3n(){}function c3n(){}function u3n(){}function s3n(){}function o3n(){}function f3n(){}function h3n(){}function l3n(){}function a3n(){}function d3n(){}function b3n(){}function w3n(){}function g3n(){}function p3n(){}function v3n(){}function m3n(){}function k3n(){}function y3n(){}function j3n(){}function E3n(){}function C3n(){}function T3n(){}function M3n(){}function A3n(){}function S3n(){}function P3n(){}function I3n(){}function O3n(){}function D3n(){}function $3n(){}function F3n(){}function x3n(){}function L3n(){}function N3n(){}function B3n(){}function R3n(){}function _3n(){}function K3n(){}function H3n(){}function q3n(){}function G3n(){}function z3n(){}function U3n(){}function W3n(){}function X3n(){}function V3n(){}function Q3n(){}function J3n(){}function Y3n(){}function Z3n(){}function n4n(){}function e4n(){}function t4n(){}function i4n(){}function ZH(){}function r4n(){}function c4n(){}function TI(){Rv()}function u4n(){pF()}function s4n(){am()}function o4n(){WT()}function f4n(){YJ()}function h4n(){Go()}function l4n(){fJ()}function a4n(){C7()}function d4n(){q9()}function b4n(){H9()}function w4n(){w8()}function g4n(){v7n()}function p4n(){x2()}function v4n(){Sj()}function m4n(){PSn()}function k4n(){HIn()}function y4n(){sPn()}function j4n(){CMn()}function E4n(){V3()}function C4n(){yl()}function T4n(){qIn()}function M4n(){pAn()}function A4n(){zZ()}function S4n(){IFn()}function P4n(){TMn()}function I4n(){nn()}function O4n(){EMn()}function D4n(){GIn()}function $4n(){WOn()}function F4n(){AMn()}function x4n(){aPn()}function L4n(){m7n()}function N4n(){$Y()}function B4n(){gb()}function R4n(){pOn()}function _4n(){S7()}function K4n(){Ux()}function H4n(){ZF()}function q4n(){Zd()}function G4n(){PV()}function z4n(){MMn()}function U4n(){BBn()}function W4n(){IY()}function X4n(){Bx()}function V4n(){DC()}function Q4n(){nM()}function nq(){Xe()}function J4n(){wT()}function Y4n(){NQ()}function eq(){mM()}function Fo(){dEn()}function tq(){eF()}function Z4n(){pZ()}function iq(n){_n(n)}function nvn(n){this.a=n}function Zy(n){this.a=n}function evn(n){this.a=n}function tvn(n){this.a=n}function ivn(n){this.a=n}function rvn(n){this.a=n}function cvn(n){this.a=n}function uvn(n){this.a=n}function rq(n){this.a=n}function cq(n){this.a=n}function svn(n){this.a=n}function MI(n){this.a=n}function ovn(n){this.a=n}function AI(n){this.a=n}function fvn(n){this.a=n}function SI(n){this.a=n}function hvn(n){this.a=n}function PI(n){this.a=n}function lvn(n){this.a=n}function avn(n){this.a=n}function dvn(n){this.a=n}function uq(n){this.b=n}function bvn(n){this.c=n}function wvn(n){this.a=n}function gvn(n){this.a=n}function pvn(n){this.a=n}function vvn(n){this.a=n}function mvn(n){this.a=n}function kvn(n){this.a=n}function yvn(n){this.a=n}function jvn(n){this.a=n}function Evn(n){this.a=n}function Cvn(n){this.a=n}function Tvn(n){this.a=n}function Mvn(n){this.a=n}function Avn(n){this.a=n}function sq(n){this.a=n}function oq(n){this.a=n}function nj(n){this.a=n}function M9(n){this.a=n}function na(){this.a=[]}function Svn(n,e){n.a=e}function Yee(n,e){n.a=e}function Zee(n,e){n.b=e}function nte(n,e){n.b=e}function ete(n,e){n.b=e}function fq(n,e){n.j=e}function tte(n,e){n.g=e}function ite(n,e){n.i=e}function rte(n,e){n.c=e}function cte(n,e){n.d=e}function ute(n,e){n.d=e}function ste(n,e){n.c=e}function ea(n,e){n.k=e}function ote(n,e){n.c=e}function hq(n,e){n.c=e}function lq(n,e){n.a=e}function fte(n,e){n.a=e}function hte(n,e){n.f=e}function lte(n,e){n.a=e}function ate(n,e){n.b=e}function II(n,e){n.d=e}function ej(n,e){n.i=e}function aq(n,e){n.o=e}function dte(n,e){n.r=e}function bte(n,e){n.a=e}function wte(n,e){n.b=e}function Pvn(n,e){n.e=e}function gte(n,e){n.f=e}function dq(n,e){n.g=e}function pte(n,e){n.e=e}function vte(n,e){n.f=e}function mte(n,e){n.f=e}function kte(n,e){n.n=e}function yte(n,e){n.a=e}function jte(n,e){n.a=e}function Ete(n,e){n.c=e}function Cte(n,e){n.c=e}function Tte(n,e){n.d=e}function Mte(n,e){n.e=e}function Ate(n,e){n.g=e}function Ste(n,e){n.a=e}function Pte(n,e){n.c=e}function Ite(n,e){n.d=e}function Ote(n,e){n.e=e}function Dte(n,e){n.f=e}function $te(n,e){n.j=e}function Fte(n,e){n.a=e}function xte(n,e){n.b=e}function Lte(n,e){n.a=e}function Ivn(n){n.b=n.a}function Ovn(n){n.c=n.d.d}function $v(n){this.d=n}function ta(n){this.a=n}function Rp(n){this.a=n}function bq(n){this.a=n}function Mh(n){this.a=n}function A9(n){this.a=n}function Dvn(n){this.a=n}function wq(n){this.a=n}function S9(n){this.a=n}function gq(n){this.a=n}function pq(n){this.a=n}function vq(n){this.a=n}function L0(n){this.a=n}function P9(n){this.a=n}function I9(n){this.a=n}function mq(n){this.b=n}function _p(n){this.b=n}function Kp(n){this.b=n}function OI(n){this.a=n}function $vn(n){this.a=n}function kq(n){this.a=n}function DI(n){this.c=n}function E(n){this.c=n}function Fvn(n){this.c=n}function yq(n){this.a=n}function jq(n){this.a=n}function Eq(n){this.a=n}function Cq(n){this.a=n}function st(n){this.a=n}function xvn(n){this.a=n}function Tq(n){this.a=n}function Mq(n){this.a=n}function Lvn(n){this.a=n}function Nvn(n){this.a=n}function Fv(n){this.a=n}function Bvn(n){this.a=n}function Rvn(n){this.a=n}function _vn(n){this.a=n}function Kvn(n){this.a=n}function Hvn(n){this.a=n}function qvn(n){this.a=n}function Gvn(n){this.a=n}function zvn(n){this.a=n}function Uvn(n){this.a=n}function Wvn(n){this.a=n}function Xvn(n){this.a=n}function Vvn(n){this.a=n}function Qvn(n){this.a=n}function Jvn(n){this.a=n}function Yvn(n){this.a=n}function Zvn(n){this.a=n}function n5n(n){this.a=n}function O9(n){this.a=n}function e5n(n){this.a=n}function t5n(n){this.a=n}function tj(n){this.a=n}function i5n(n){this.a=n}function r5n(n){this.a=n}function Hp(n){this.a=n}function Aq(n){this.a=n}function c5n(n){this.a=n}function u5n(n){this.a=n}function s5n(n){this.a=n}function o5n(n){this.a=n}function f5n(n){this.a=n}function Sq(n){this.a=n}function Pq(n){this.a=n}function Iq(n){this.a=n}function ij(n){this.a=n}function rj(n){this.e=n}function qp(n){this.a=n}function h5n(n){this.a=n}function n2(n){this.a=n}function Oq(n){this.a=n}function l5n(n){this.a=n}function a5n(n){this.a=n}function d5n(n){this.a=n}function b5n(n){this.a=n}function w5n(n){this.a=n}function g5n(n){this.a=n}function p5n(n){this.a=n}function v5n(n){this.a=n}function m5n(n){this.a=n}function k5n(n){this.a=n}function y5n(n){this.a=n}function Dq(n){this.a=n}function j5n(n){this.a=n}function E5n(n){this.a=n}function C5n(n){this.a=n}function T5n(n){this.a=n}function M5n(n){this.a=n}function A5n(n){this.a=n}function S5n(n){this.a=n}function P5n(n){this.a=n}function I5n(n){this.a=n}function O5n(n){this.a=n}function D5n(n){this.a=n}function $5n(n){this.a=n}function F5n(n){this.a=n}function x5n(n){this.a=n}function L5n(n){this.a=n}function N5n(n){this.a=n}function B5n(n){this.a=n}function R5n(n){this.a=n}function _5n(n){this.a=n}function K5n(n){this.a=n}function H5n(n){this.a=n}function q5n(n){this.a=n}function G5n(n){this.a=n}function z5n(n){this.a=n}function U5n(n){this.a=n}function W5n(n){this.a=n}function X5n(n){this.a=n}function V5n(n){this.a=n}function Q5n(n){this.a=n}function J5n(n){this.a=n}function Y5n(n){this.a=n}function Z5n(n){this.a=n}function nmn(n){this.a=n}function emn(n){this.a=n}function tmn(n){this.a=n}function imn(n){this.a=n}function rmn(n){this.a=n}function cmn(n){this.c=n}function umn(n){this.b=n}function smn(n){this.a=n}function omn(n){this.a=n}function fmn(n){this.a=n}function hmn(n){this.a=n}function lmn(n){this.a=n}function amn(n){this.a=n}function dmn(n){this.a=n}function bmn(n){this.a=n}function wmn(n){this.a=n}function gmn(n){this.a=n}function pmn(n){this.a=n}function vmn(n){this.a=n}function mmn(n){this.a=n}function kmn(n){this.a=n}function ymn(n){this.a=n}function jmn(n){this.a=n}function Emn(n){this.a=n}function Cmn(n){this.a=n}function Tmn(n){this.a=n}function Mmn(n){this.a=n}function Amn(n){this.a=n}function Smn(n){this.a=n}function Pmn(n){this.a=n}function Imn(n){this.a=n}function X1(n){this.a=n}function e2(n){this.a=n}function Omn(n){this.a=n}function Dmn(n){this.a=n}function $mn(n){this.a=n}function Fmn(n){this.a=n}function xmn(n){this.a=n}function Lmn(n){this.a=n}function Nmn(n){this.a=n}function Bmn(n){this.a=n}function Rmn(n){this.a=n}function _mn(n){this.a=n}function Kmn(n){this.a=n}function Hmn(n){this.a=n}function qmn(n){this.a=n}function Gmn(n){this.a=n}function zmn(n){this.a=n}function Umn(n){this.a=n}function cj(n){this.a=n}function Wmn(n){this.a=n}function Xmn(n){this.a=n}function Vmn(n){this.a=n}function Qmn(n){this.a=n}function Jmn(n){this.a=n}function Ymn(n){this.a=n}function Zmn(n){this.a=n}function n6n(n){this.a=n}function e6n(n){this.a=n}function t6n(n){this.a=n}function i6n(n){this.a=n}function r6n(n){this.a=n}function c6n(n){this.a=n}function u6n(n){this.a=n}function s6n(n){this.a=n}function o6n(n){this.a=n}function f6n(n){this.a=n}function h6n(n){this.a=n}function l6n(n){this.a=n}function a6n(n){this.a=n}function d6n(n){this.a=n}function b6n(n){this.a=n}function w6n(n){this.a=n}function g6n(n){this.a=n}function p6n(n){this.a=n}function v6n(n){this.a=n}function m6n(n){this.a=n}function k6n(n){this.a=n}function $q(n){this.a=n}function kt(n){this.b=n}function y6n(n){this.f=n}function Fq(n){this.a=n}function j6n(n){this.a=n}function E6n(n){this.a=n}function C6n(n){this.a=n}function T6n(n){this.a=n}function M6n(n){this.a=n}function A6n(n){this.a=n}function S6n(n){this.a=n}function P6n(n){this.a=n}function D9(n){this.a=n}function I6n(n){this.a=n}function O6n(n){this.b=n}function xq(n){this.c=n}function uj(n){this.e=n}function D6n(n){this.a=n}function sj(n){this.a=n}function oj(n){this.a=n}function $I(n){this.a=n}function $6n(n){this.a=n}function F6n(n){this.d=n}function Lq(n){this.a=n}function Nq(n){this.a=n}function cd(n){this.e=n}function Nte(){this.a=0}function gw(){dyn(this)}function X(){RO(this)}function we(){Eu(this)}function FI(){pTn(this)}function x6n(){}function ud(){this.c=p1n}function Bte(n,e){e.Wb(n)}function L6n(n,e){n.b+=e}function N6n(n){n.b=new JI}function T(n){return n.e}function Rte(n){return n.a}function _te(n){return n.a}function Kte(n){return n.a}function Hte(n){return n.a}function qte(n){return n.a}function Gte(){return null}function zte(){return null}function Ute(){EG(),iTe()}function Wte(n){n.b.tf(n.e)}function xv(n,e){n.b=e-n.b}function Lv(n,e){n.a=e-n.a}function B6n(n,e){e.ad(n.a)}function Xte(n,e){ui(e,n)}function Vte(n,e,t){n.Od(t,e)}function $9(n,e){n.e=e,e.b=n}function Bq(n){Df(),this.a=n}function R6n(n){Df(),this.a=n}function _6n(n){Df(),this.a=n}function Rq(n){nb(),this.a=n}function K6n(n){k3(),aR.be(n)}function ia(){Qyn.call(this)}function _q(){Qyn.call(this)}function Kq(){ia.call(this)}function xI(){ia.call(this)}function H6n(){ia.call(this)}function F9(){ia.call(this)}function fu(){ia.call(this)}function Nv(){ia.call(this)}function ye(){ia.call(this)}function vs(){ia.call(this)}function q6n(){ia.call(this)}function ic(){ia.call(this)}function G6n(){ia.call(this)}function z6n(){this.a=this}function fj(){this.Bb|=256}function U6n(){this.b=new Xkn}function Hq(){Hq=N,new we}function qq(){Kq.call(this)}function W6n(n,e){n.length=e}function hj(n,e){W(n.a,e)}function Qte(n,e){nY(n.c,e)}function Jte(n,e){ri(n.b,e)}function Yte(n,e){KT(n.a,e)}function Zte(n,e){MF(n.a,e)}function Gp(n,e){et(n.e,e)}function t2(n){iM(n.c,n.b)}function nie(n,e){n.kc().Nb(e)}function Gq(n){this.a=Yge(n)}function fi(){this.a=new we}function X6n(){this.a=new we}function lj(){this.a=new X}function LI(){this.a=new X}function zq(){this.a=new X}function Ns(){this.a=new Oln}function ra(){this.a=new TSn}function Uq(){this.a=new LH}function Wq(){this.a=new h7n}function V6n(){this.a=new YMn}function Xq(){this.a=new bMn}function Vq(){this.a=new Bjn}function Q6n(){this.a=new X}function Qq(){this.a=new X}function J6n(){this.a=new X}function Y6n(){this.a=new X}function Z6n(){this.d=new X}function n9n(){this.a=new fi}function e9n(){this.a=new we}function t9n(){this.b=new we}function i9n(){this.b=new X}function Jq(){this.e=new X}function r9n(){this.d=new X}function c9n(){this.a=new C4n}function u9n(){X.call(this)}function Yq(){lj.call(this)}function s9n(){kE.call(this)}function o9n(){Qq.call(this)}function NI(){Bv.call(this)}function Bv(){x6n.call(this)}function i2(){x6n.call(this)}function Zq(){i2.call(this)}function f9n(){zTn.call(this)}function h9n(){zTn.call(this)}function l9n(){uG.call(this)}function a9n(){uG.call(this)}function d9n(){uG.call(this)}function b9n(){sG.call(this)}function hu(){Ct.call(this)}function nG(){B2n.call(this)}function eG(){B2n.call(this)}function w9n(){O9n.call(this)}function g9n(){O9n.call(this)}function p9n(){we.call(this)}function v9n(){we.call(this)}function m9n(){we.call(this)}function k9n(){fi.call(this)}function BI(){RIn.call(this)}function y9n(){fj.call(this)}function RI(){Oz.call(this)}function _I(){Oz.call(this)}function tG(){we.call(this)}function KI(){we.call(this)}function j9n(){we.call(this)}function iG(){Yy.call(this)}function E9n(){Yy.call(this)}function C9n(){iG.call(this)}function T9n(){ZH.call(this)}function M9n(n){hIn.call(this,n)}function A9n(n){hIn.call(this,n)}function rG(n){rq.call(this,n)}function cG(n){n7n.call(this,n)}function eie(n){cG.call(this,n)}function tie(n){n7n.call(this,n)}function zp(){this.a=new Ct}function uG(){this.a=new fi}function sG(){this.a=new we}function S9n(){this.a=new X}function P9n(){this.j=new X}function oG(){this.a=new Rgn}function I9n(){this.a=new T8n}function O9n(){this.a=new X2n}function HI(){HI=N,uR=new V9n}function qI(){qI=N,cR=new X9n}function Rv(){Rv=N,rR=new Ot}function aj(){aj=N,fR=new Xyn}function iie(n){cG.call(this,n)}function rie(n){cG.call(this,n)}function D9n(n){m$.call(this,n)}function $9n(n){m$.call(this,n)}function F9n(n){uEn.call(this,n)}function GI(n){C5e.call(this,n)}function sd(n){_0.call(this,n)}function _v(n){Cj.call(this,n)}function fG(n){Cj.call(this,n)}function x9n(n){Cj.call(this,n)}function _r(n){kCn.call(this,n)}function L9n(n){_r.call(this,n)}function r2(){M9.call(this,{})}function dj(n){c3(),this.a=n}function Kv(n){n.b=null,n.c=0}function cie(n,e){n.e=e,NNn(n,e)}function uie(n,e){n.a=e,hme(n)}function zI(n,e,t){n.a[e.g]=t}function sie(n,e,t){M4e(t,n,e)}function oie(n,e){$ue(e.i,n.n)}function N9n(n,e){Fwe(n).td(e)}function fie(n,e){return n*n/e}function B9n(n,e){return n.g-e.g}function hie(n){return new nj(n)}function lie(n){return new Z0(n)}function bj(n){_r.call(this,n)}function vr(n){_r.call(this,n)}function R9n(n){_r.call(this,n)}function UI(n){kCn.call(this,n)}function WI(n){AV(),this.a=n}function _9n(n){aEn(),this.a=n}function N0(n){ED(),this.f=n}function XI(n){ED(),this.f=n}function Up(n){_r.call(this,n)}function Hn(n){_r.call(this,n)}function Dr(n){_r.call(this,n)}function K9n(n){_r.call(this,n)}function c2(n){_r.call(this,n)}function on(n){return _n(n),n}function K(n){return _n(n),n}function x9(n){return _n(n),n}function hG(n){return _n(n),n}function aie(n){return _n(n),n}function Hv(n){return n.b==n.c}function B0(n){return!!n&&n.b}function die(n){return!!n&&n.k}function bie(n){return!!n&&n.j}function Ku(n){_n(n),this.a=n}function lG(n){return ja(n),n}function qv(n){EW(n,n.length)}function t1(n){_r.call(this,n)}function Af(n){_r.call(this,n)}function VI(n){_r.call(this,n)}function pw(n){_r.call(this,n)}function Gv(n){_r.call(this,n)}function Ee(n){_r.call(this,n)}function QI(n){Vz.call(this,n,0)}function JI(){iX.call(this,12,3)}function aG(){aG=N,din=new Q1n}function H9n(){H9n=N,ain=new ou}function wj(){wj=N,d6=new H1}function q9n(){q9n=N,vzn=new ww}function G9n(){throw T(new ye)}function dG(){throw T(new ye)}function z9n(){throw T(new ye)}function wie(){throw T(new ye)}function gie(){throw T(new ye)}function pie(){throw T(new ye)}function YI(){this.a=Ce(pe(Ji))}function u2(n){Df(),this.a=pe(n)}function U9n(n,e){n.Td(e),e.Sd(n)}function vie(n,e){n.a.ec().Mc(e)}function mie(n,e,t){n.c.lf(e,t)}function bG(n){vr.call(this,n)}function Sf(n){Hn.call(this,n)}function i1(){A9.call(this,"")}function zv(){A9.call(this,"")}function V1(){A9.call(this,"")}function R0(){A9.call(this,"")}function wG(n){vr.call(this,n)}function Wp(n){_p.call(this,n)}function ZI(n){lE.call(this,n)}function W9n(n){Wp.call(this,n)}function X9n(){AI.call(this,null)}function V9n(){AI.call(this,null)}function gj(){gj=N,k3()}function Q9n(){Q9n=N,Szn=Z4e()}function J9n(n){return n.a?n.b:0}function kie(n){return n.a?n.b:0}function yie(n,e){return n.a-e.a}function jie(n,e){return n.a-e.a}function Eie(n,e){return n.a-e.a}function pj(n,e){return WX(n,e)}function M(n,e){return pMn(n,e)}function Cie(n,e){return e in n.a}function Y9n(n,e){return n.f=e,n}function Tie(n,e){return n.b=e,n}function Z9n(n,e){return n.c=e,n}function Mie(n,e){return n.g=e,n}function gG(n,e){return n.a=e,n}function pG(n,e){return n.f=e,n}function Aie(n,e){return n.k=e,n}function vG(n,e){return n.a=e,n}function Sie(n,e){return n.e=e,n}function mG(n,e){return n.e=e,n}function Pie(n,e){return n.f=e,n}function Iie(n,e){n.b=!0,n.d=e}function Oie(n,e){n.b=new mr(e)}function Die(n,e,t){e.td(n.a[t])}function $ie(n,e,t){e.we(n.a[t])}function Fie(n,e){return n.b-e.b}function xie(n,e){return n.g-e.g}function Lie(n,e){return n.s-e.s}function Nie(n,e){return n?0:e-1}function n8n(n,e){return n?0:e-1}function Bie(n,e){return n?e-1:0}function Rie(n,e){return e.Yf(n)}function od(n,e){return n.b=e,n}function vj(n,e){return n.a=e,n}function fd(n,e){return n.c=e,n}function hd(n,e){return n.d=e,n}function ld(n,e){return n.e=e,n}function kG(n,e){return n.f=e,n}function Uv(n,e){return n.a=e,n}function Xp(n,e){return n.b=e,n}function Vp(n,e){return n.c=e,n}function gn(n,e){return n.c=e,n}function Dn(n,e){return n.b=e,n}function pn(n,e){return n.d=e,n}function vn(n,e){return n.e=e,n}function _ie(n,e){return n.f=e,n}function mn(n,e){return n.g=e,n}function kn(n,e){return n.a=e,n}function yn(n,e){return n.i=e,n}function jn(n,e){return n.j=e,n}function e8n(n,e){return n.k=e,n}function Kie(n,e){return n.j=e,n}function Hie(n,e){yl(),Hr(e,n)}function qie(n,e,t){Nfe(n.a,e,t)}function t8n(n){mTn.call(this,n)}function yG(n){mTn.call(this,n)}function mj(n){uD.call(this,n)}function i8n(n){u2e.call(this,n)}function Q1(n){Ld.call(this,n)}function r8n(n){XD.call(this,n)}function c8n(n){XD.call(this,n)}function u8n(){Mz.call(this,"")}function Li(){this.a=0,this.b=0}function s8n(){this.b=0,this.a=0}function o8n(n,e){n.b=0,hb(n,e)}function Gie(n,e){n.c=e,n.b=!0}function f8n(n,e){return n.c._b(e)}function xo(n){return n.e&&n.e()}function nO(n){return n?n.d:null}function h8n(n,e){return LDn(n.b,e)}function zie(n){return n?n.g:null}function Uie(n){return n?n.i:null}function J1(n){return Ph(n),n.o}function ad(){ad=N,Mne=h4e()}function l8n(){l8n=N,vi=jve()}function Qp(){Qp=N,g1n=a4e()}function a8n(){a8n=N,hee=l4e()}function jG(){jG=N,oc=sme()}function EG(){EG=N,Wl=N3()}function d8n(){throw T(new ye)}function b8n(){throw T(new ye)}function w8n(){throw T(new ye)}function g8n(){throw T(new ye)}function p8n(){throw T(new ye)}function v8n(){throw T(new ye)}function kj(n){this.a=new s2(n)}function CG(n){d_n(),gTe(this,n)}function Y1(n){this.a=new AD(n)}function vw(n,e){for(;n.ye(e););}function TG(n,e){for(;n.sd(e););}function mw(n,e){return n.a+=e,n}function eO(n,e){return n.a+=e,n}function r1(n,e){return n.a+=e,n}function dd(n,e){return n.a+=e,n}function Wv(n){return fl(n),n.a}function yj(n){return n.b!=n.d.c}function m8n(n){return n.l|n.m<<22}function MG(n,e){return n.d[e.p]}function k8n(n,e){return Q8e(n,e)}function AG(n,e,t){n.splice(e,t)}function y8n(n){n.c?rBn(n):cBn(n)}function jj(n){this.a=0,this.b=n}function j8n(){this.a=new B7(Pon)}function E8n(){this.b=new B7(won)}function C8n(){this.b=new B7(OK)}function T8n(){this.b=new B7(OK)}function M8n(){throw T(new ye)}function A8n(){throw T(new ye)}function S8n(){throw T(new ye)}function P8n(){throw T(new ye)}function I8n(){throw T(new ye)}function O8n(){throw T(new ye)}function D8n(){throw T(new ye)}function $8n(){throw T(new ye)}function F8n(){throw T(new ye)}function x8n(){throw T(new ye)}function Wie(){throw T(new ic)}function Xie(){throw T(new ic)}function L9(n){this.a=new L8n(n)}function L8n(n){cbe(this,n,cve())}function N9(n){return!n||iTn(n)}function B9(n){return Tf[n]!=-1}function Vie(){_A!=0&&(_A=0),KA=-1}function N8n(){iR==null&&(iR=[])}function Qie(n,e){$x(R(n.a),e)}function Jie(n,e){$x(R(n.a),e)}function R9(n,e){Sw.call(this,n,e)}function Jp(n,e){R9.call(this,n,e)}function SG(n,e){this.b=n,this.c=e}function B8n(n,e){this.b=n,this.a=e}function R8n(n,e){this.a=n,this.b=e}function _8n(n,e){this.a=n,this.b=e}function K8n(n,e){this.a=n,this.b=e}function H8n(n,e){this.a=n,this.b=e}function q8n(n,e){this.a=n,this.b=e}function G8n(n,e){this.a=n,this.b=e}function z8n(n,e){this.a=n,this.b=e}function U8n(n,e){this.a=n,this.b=e}function W8n(n,e){this.b=n,this.a=e}function X8n(n,e){this.b=n,this.a=e}function V8n(n,e){this.b=n,this.a=e}function Q8n(n,e){this.b=n,this.a=e}function Oe(n,e){this.f=n,this.g=e}function Yp(n,e){this.e=n,this.d=e}function bd(n,e){this.g=n,this.i=e}function tO(n,e){this.a=n,this.b=e}function J8n(n,e){this.a=n,this.f=e}function Y8n(n,e){this.b=n,this.c=e}function Yie(n,e){this.a=n,this.b=e}function Z8n(n,e){this.a=n,this.b=e}function iO(n,e){this.a=n,this.b=e}function n7n(n){Bz(n.dc()),this.c=n}function Ej(n){this.b=u(pe(n),83)}function e7n(n){this.a=u(pe(n),83)}function _0(n){this.a=u(pe(n),15)}function t7n(n){this.a=u(pe(n),15)}function Cj(n){this.b=u(pe(n),47)}function Tj(){this.q=new j.Date}function Zf(){Zf=N,Sin=new tln}function Zp(){Zp=N,X4=new nln}function Xv(n){return n.f.c+n.g.c}function _9(n,e){return n.b.Hc(e)}function i7n(n,e){return n.b.Ic(e)}function r7n(n,e){return n.b.Qc(e)}function c7n(n,e){return n.b.Hc(e)}function u7n(n,e){return n.c.uc(e)}function Ah(n,e){return n.a._b(e)}function s7n(n,e){return tt(n.c,e)}function o7n(n,e){return zu(n.b,e)}function f7n(n,e){return n>e&&e0}function cO(n,e){return fc(n,e)<0}function n5(n,e){return n.a.get(e)}function lre(n,e){return e.split(n)}function S7n(n,e){return zu(n.e,e)}function LG(n){return _n(n),!1}function xj(n){xn.call(this,n,21)}function are(n,e){cMn.call(this,n,e)}function Lj(n,e){Oe.call(this,n,e)}function uO(n,e){Oe.call(this,n,e)}function NG(n){_D(),uEn.call(this,n)}function BG(n,e){fCn(n,n.length,e)}function z9(n,e){BCn(n,n.length,e)}function dre(n,e,t){e.ud(n.a.Ge(t))}function bre(n,e,t){e.we(n.a.Fe(t))}function wre(n,e,t){e.td(n.a.Kb(t))}function gre(n,e,t){n.Mb(t)&&e.td(t)}function e5(n,e,t){n.splice(e,0,t)}function pre(n,e){return au(n.e,e)}function Nj(n,e){this.d=n,this.e=e}function P7n(n,e){this.b=n,this.a=e}function I7n(n,e){this.b=n,this.a=e}function RG(n,e){this.b=n,this.a=e}function O7n(n,e){this.a=n,this.b=e}function D7n(n,e){this.a=n,this.b=e}function $7n(n,e){this.a=n,this.b=e}function F7n(n,e){this.a=n,this.b=e}function f2(n,e){this.a=n,this.b=e}function _G(n,e){this.b=n,this.a=e}function KG(n,e){this.b=n,this.a=e}function Bj(n,e){Oe.call(this,n,e)}function Rj(n,e){Oe.call(this,n,e)}function HG(n,e){Oe.call(this,n,e)}function qG(n,e){Oe.call(this,n,e)}function kw(n,e){Oe.call(this,n,e)}function sO(n,e){Oe.call(this,n,e)}function oO(n,e){Oe.call(this,n,e)}function fO(n,e){Oe.call(this,n,e)}function _j(n,e){Oe.call(this,n,e)}function GG(n,e){Oe.call(this,n,e)}function hO(n,e){Oe.call(this,n,e)}function U9(n,e){Oe.call(this,n,e)}function Kj(n,e){Oe.call(this,n,e)}function lO(n,e){Oe.call(this,n,e)}function t5(n,e){Oe.call(this,n,e)}function zG(n,e){Oe.call(this,n,e)}function zt(n,e){Oe.call(this,n,e)}function Hj(n,e){Oe.call(this,n,e)}function x7n(n,e){this.a=n,this.b=e}function L7n(n,e){this.a=n,this.b=e}function N7n(n,e){this.a=n,this.b=e}function B7n(n,e){this.a=n,this.b=e}function R7n(n,e){this.a=n,this.b=e}function _7n(n,e){this.a=n,this.b=e}function K7n(n,e){this.a=n,this.b=e}function H7n(n,e){this.a=n,this.b=e}function q7n(n,e){this.a=n,this.b=e}function UG(n,e){this.b=n,this.a=e}function G7n(n,e){this.b=n,this.a=e}function z7n(n,e){this.b=n,this.a=e}function U7n(n,e){this.b=n,this.a=e}function t3(n,e){this.c=n,this.d=e}function W7n(n,e){this.e=n,this.d=e}function X7n(n,e){this.a=n,this.b=e}function V7n(n,e){this.b=e,this.c=n}function qj(n,e){Oe.call(this,n,e)}function W9(n,e){Oe.call(this,n,e)}function aO(n,e){Oe.call(this,n,e)}function i5(n,e){Oe.call(this,n,e)}function WG(n,e){Oe.call(this,n,e)}function dO(n,e){Oe.call(this,n,e)}function bO(n,e){Oe.call(this,n,e)}function X9(n,e){Oe.call(this,n,e)}function XG(n,e){Oe.call(this,n,e)}function wO(n,e){Oe.call(this,n,e)}function r5(n,e){Oe.call(this,n,e)}function VG(n,e){Oe.call(this,n,e)}function c5(n,e){Oe.call(this,n,e)}function u5(n,e){Oe.call(this,n,e)}function H0(n,e){Oe.call(this,n,e)}function gO(n,e){Oe.call(this,n,e)}function pO(n,e){Oe.call(this,n,e)}function QG(n,e){Oe.call(this,n,e)}function s5(n,e){Oe.call(this,n,e)}function vO(n,e){Oe.call(this,n,e)}function Gj(n,e){Oe.call(this,n,e)}function V9(n,e){Oe.call(this,n,e)}function Q9(n,e){Oe.call(this,n,e)}function h2(n,e){Oe.call(this,n,e)}function mO(n,e){Oe.call(this,n,e)}function JG(n,e){Oe.call(this,n,e)}function kO(n,e){Oe.call(this,n,e)}function yO(n,e){Oe.call(this,n,e)}function YG(n,e){Oe.call(this,n,e)}function jO(n,e){Oe.call(this,n,e)}function EO(n,e){Oe.call(this,n,e)}function CO(n,e){Oe.call(this,n,e)}function TO(n,e){Oe.call(this,n,e)}function ZG(n,e){Oe.call(this,n,e)}function Q7n(n,e){this.b=n,this.a=e}function J7n(n,e){this.a=n,this.b=e}function Y7n(n,e){this.a=n,this.b=e}function Z7n(n,e){this.a=n,this.b=e}function nkn(n,e){this.a=n,this.b=e}function nz(n,e){Oe.call(this,n,e)}function ez(n,e){Oe.call(this,n,e)}function ekn(n,e){this.b=n,this.d=e}function tz(n,e){Oe.call(this,n,e)}function iz(n,e){Oe.call(this,n,e)}function tkn(n,e){this.a=n,this.b=e}function ikn(n,e){this.a=n,this.b=e}function zj(n,e){Oe.call(this,n,e)}function o5(n,e){Oe.call(this,n,e)}function rz(n,e){Oe.call(this,n,e)}function cz(n,e){Oe.call(this,n,e)}function uz(n,e){Oe.call(this,n,e)}function MO(n,e){Oe.call(this,n,e)}function sz(n,e){Oe.call(this,n,e)}function AO(n,e){Oe.call(this,n,e)}function Uj(n,e){Oe.call(this,n,e)}function SO(n,e){Oe.call(this,n,e)}function PO(n,e){Oe.call(this,n,e)}function J9(n,e){Oe.call(this,n,e)}function IO(n,e){Oe.call(this,n,e)}function oz(n,e){Oe.call(this,n,e)}function Y9(n,e){Oe.call(this,n,e)}function fz(n,e){Oe.call(this,n,e)}function vre(n,e){return au(n.c,e)}function mre(n,e){return au(e.b,n)}function kre(n,e){return-n.b.Je(e)}function hz(n,e){return au(n.g,e)}function Z9(n,e){Oe.call(this,n,e)}function l2(n,e){Oe.call(this,n,e)}function rkn(n,e){this.a=n,this.b=e}function ckn(n,e){this.a=n,this.b=e}function fn(n,e){this.a=n,this.b=e}function f5(n,e){Oe.call(this,n,e)}function h5(n,e){Oe.call(this,n,e)}function n8(n,e){Oe.call(this,n,e)}function OO(n,e){Oe.call(this,n,e)}function Wj(n,e){Oe.call(this,n,e)}function l5(n,e){Oe.call(this,n,e)}function DO(n,e){Oe.call(this,n,e)}function Xj(n,e){Oe.call(this,n,e)}function yw(n,e){Oe.call(this,n,e)}function e8(n,e){Oe.call(this,n,e)}function a5(n,e){Oe.call(this,n,e)}function d5(n,e){Oe.call(this,n,e)}function t8(n,e){Oe.call(this,n,e)}function Vj(n,e){Oe.call(this,n,e)}function jw(n,e){Oe.call(this,n,e)}function Qj(n,e){Oe.call(this,n,e)}function ukn(n,e){this.a=n,this.b=e}function skn(n,e){this.a=n,this.b=e}function okn(n,e){this.a=n,this.b=e}function fkn(n,e){this.a=n,this.b=e}function hkn(n,e){this.a=n,this.b=e}function lkn(n,e){this.a=n,this.b=e}function Pi(n,e){this.a=n,this.b=e}function Jj(n,e){Oe.call(this,n,e)}function akn(n,e){this.a=n,this.b=e}function dkn(n,e){this.a=n,this.b=e}function bkn(n,e){this.a=n,this.b=e}function wkn(n,e){this.a=n,this.b=e}function gkn(n,e){this.a=n,this.b=e}function pkn(n,e){this.a=n,this.b=e}function vkn(n,e){this.b=n,this.a=e}function mkn(n,e){this.b=n,this.a=e}function kkn(n,e){this.b=n,this.a=e}function ykn(n,e){this.b=n,this.a=e}function jkn(n,e){this.a=n,this.b=e}function Ekn(n,e){this.a=n,this.b=e}function yre(n,e){J9e(n.a,u(e,56))}function Ckn(n,e){f0e(n.a,u(e,11))}function jre(n,e){return h3(),e!=n}function Tkn(){return Q9n(),new Szn}function Mkn(){c$(),this.b=new fi}function Akn(){hM(),this.a=new fi}function Skn(){tX(),lW.call(this)}function a2(n,e){Oe.call(this,n,e)}function Pkn(n,e){this.a=n,this.b=e}function Ikn(n,e){this.a=n,this.b=e}function Yj(n,e){this.a=n,this.b=e}function Okn(n,e){this.a=n,this.b=e}function Dkn(n,e){this.a=n,this.b=e}function $kn(n,e){this.a=n,this.b=e}function Fkn(n,e){this.d=n,this.b=e}function lz(n,e){this.d=n,this.e=e}function xkn(n,e){this.f=n,this.c=e}function i8(n,e){this.b=n,this.c=e}function az(n,e){this.i=n,this.g=e}function Lkn(n,e){this.e=n,this.a=e}function Nkn(n,e){this.a=n,this.b=e}function dz(n,e){n.i=null,nT(n,e)}function Ere(n,e){n&&it($y,n,e)}function Bkn(n,e){return NF(n.a,e)}function Zj(n){return g7(n.c,n.b)}function Vr(n){return n?n.dd():null}function B(n){return n??null}function q0(n){return typeof n===X2}function G0(n){return typeof n===UZ}function mi(n){return typeof n===EL}function el(n,e){return n.Hd().Xb(e)}function nE(n,e){return Rbe(n.Kc(),e)}function gd(n,e){return fc(n,e)==0}function Cre(n,e){return fc(n,e)>=0}function b5(n,e){return fc(n,e)!=0}function Tre(n){return""+(_n(n),n)}function r8(n,e){return n.substr(e)}function Rkn(n){return $u(n),n.d.gc()}function $O(n){return y6e(n,n.c),n}function eE(n){return A5(n==null),n}function w5(n,e){return n.a+=""+e,n}function dr(n,e){return n.a+=""+e,n}function g5(n,e){return n.a+=""+e,n}function rc(n,e){return n.a+=""+e,n}function De(n,e){return n.a+=""+e,n}function bz(n,e){return n.a+=""+e,n}function _kn(n,e){Kt(n,e,n.a,n.a.a)}function ua(n,e){Kt(n,e,n.c.b,n.c)}function Mre(n,e,t){VFn(e,Mx(n,t))}function Are(n,e,t){VFn(e,Mx(n,t))}function Sre(n,e){k0e(new ie(n),e)}function Kkn(n,e){n.q.setTime($d(e))}function Hkn(n,e){kW.call(this,n,e)}function qkn(n,e){kW.call(this,n,e)}function FO(n,e){kW.call(this,n,e)}function Gkn(n){Eu(this),Z5(this,n)}function wz(n){return Ln(n,0),null}function Lo(n){return n.a=0,n.b=0,n}function zkn(n,e){return n.a=e.g+1,n}function Pre(n,e){return n.j[e.p]==2}function gz(n){return lhe(u(n,79))}function Ukn(){Ukn=N,jUn=Fe(qF())}function Wkn(){Wkn=N,RWn=Fe(PNn())}function Xkn(){this.b=new s2(sb(12))}function Vkn(){this.b=0,this.a=!1}function Qkn(){this.b=0,this.a=!1}function p5(n){this.a=n,TI.call(this)}function Jkn(n){this.a=n,TI.call(this)}function In(n,e){ii.call(this,n,e)}function xO(n,e){V0.call(this,n,e)}function Ew(n,e){az.call(this,n,e)}function LO(n,e){H3.call(this,n,e)}function Ykn(n,e){c8.call(this,n,e)}function He(n,e){$j(),it(eI,n,e)}function NO(n,e){return Yu(n.a,0,e)}function Zkn(n,e){return n.a.a.a.cc(e)}function nyn(n,e){return B(n)===B(e)}function Ire(n,e){return Zt(n.a,e.a)}function Ore(n,e){return Uc(n.a,e.a)}function Dre(n,e){return xCn(n.a,e.a)}function Pf(n,e){return n.indexOf(e)}function pd(n,e){return n==e?0:n?1:-1}function tE(n){return n<10?"0"+n:""+n}function $re(n){return pe(n),new p5(n)}function eyn(n){return Bc(n.l,n.m,n.h)}function i3(n){return Gt((_n(n),n))}function Fre(n){return Gt((_n(n),n))}function tyn(n,e){return Uc(n.g,e.g)}function $r(n){return typeof n===UZ}function xre(n){return n==b0||n==Hb}function Lre(n){return n==b0||n==Kb}function pz(n){return Fr(n.b.b,n,0)}function iyn(n){this.a=Tkn(),this.b=n}function ryn(n){this.a=Tkn(),this.b=n}function Nre(n,e){return W(n.a,e),e}function Bre(n,e){return W(n.c,e),n}function cyn(n,e){return rs(n.a,e),n}function Rre(n,e){return wo(),e.a+=n}function _re(n,e){return wo(),e.a+=n}function Kre(n,e){return wo(),e.c+=n}function vz(n,e){S3(n,0,n.length,e)}function Sh(){Tq.call(this,new ba)}function uyn(){xE.call(this,0,0,0,0)}function d2(){ys.call(this,0,0,0,0)}function mr(n){this.a=n.a,this.b=n.b}function tl(n){return n==Zs||n==Ao}function r3(n){return n==Yh||n==Jh}function syn(n){return n==xg||n==Fg}function Cw(n){return n!=jf&&n!=ql}function Hu(n){return n.Lg()&&n.Mg()}function oyn(n){return JE(u(n,118))}function iE(n){return rs(new hi,n)}function fyn(n,e){return new H3(e,n)}function Hre(n,e){return new H3(e,n)}function mz(n,e,t){UC(n,e),WC(n,t)}function rE(n,e,t){Rd(n,e),Bd(n,t)}function Jo(n,e,t){Zc(n,e),nu(n,t)}function cE(n,e,t){D3(n,e),F3(n,t)}function uE(n,e,t){$3(n,e),x3(n,t)}function BO(n,e){X3(n,e),L3(n,n.D)}function kz(n){xkn.call(this,n,!0)}function hyn(n,e,t){fU.call(this,n,e,t)}function il(n){jl(),qbe.call(this,n)}function lyn(){Lj.call(this,"Head",1)}function ayn(){Lj.call(this,"Tail",3)}function RO(n){n.c=F(Zn,rn,1,0,5,1)}function dyn(n){n.a=F(Zn,rn,1,8,5,1)}function byn(n){Yc(n.xf(),new t5n(n))}function Tw(n){return n!=null?mt(n):0}function qre(n,e){return ob(e,nf(n))}function Gre(n,e){return ob(e,nf(n))}function zre(n,e){return n[n.length]=e}function Ure(n,e){return n[n.length]=e}function yz(n){return zoe(n.b.Kc(),n.a)}function Wre(n,e){return ZC(BD(n.d),e)}function Xre(n,e){return ZC(BD(n.g),e)}function Vre(n,e){return ZC(BD(n.j),e)}function tr(n,e){ii.call(this,n.b,e)}function vd(n){xE.call(this,n,n,n,n)}function jz(n){return n.b&&uL(n),n.a}function Ez(n){return n.b&&uL(n),n.c}function Qre(n,e){pf||(n.b=e)}function _O(n,e,t){return Mt(n,e,t),t}function wyn(n,e,t){Mt(n.c[e.g],e.g,t)}function Jre(n,e,t){u(n.c,69).Xh(e,t)}function Yre(n,e,t){Jo(t,t.i+n,t.j+e)}function Zre(n,e){me(bc(n.a),PMn(e))}function nce(n,e){me(Ou(n.a),IMn(e))}function v5(n){Je(),cd.call(this,n)}function ece(n){return n==null?0:mt(n)}function gyn(){gyn=N,hK=new fm(cH)}function je(){je=N,new pyn,new X}function pyn(){new we,new we,new we}function Cz(){Cz=N,Hq(),bin=new we}function Yo(){Yo=N,j.Math.log(2)}function ms(){ms=N,Eh=(E7n(),Dne)}function tce(){throw T(new t1(izn))}function ice(){throw T(new t1(izn))}function rce(){throw T(new t1(rzn))}function cce(){throw T(new t1(rzn))}function vyn(n){this.a=n,HU.call(this,n)}function KO(n){this.a=n,Ej.call(this,n)}function HO(n){this.a=n,Ej.call(this,n)}function bi(n,e){mD(n.c,n.c.length,e)}function Kr(n){return n.ae?1:0}function kyn(n,e){return fc(n,e)>0?n:e}function Bc(n,e,t){return{l:n,m:e,h:t}}function uce(n,e){n.a!=null&&Ckn(e,n.a)}function yyn(n){n.a=new aI,n.c=new aI}function sE(n){this.b=n,this.a=new X}function jyn(n){this.b=new san,this.a=n}function Mz(n){vU.call(this),this.a=n}function Eyn(){Lj.call(this,"Range",2)}function Cyn(){kJ(),this.a=new B7(Hrn)}function sce(n,e){pe(e),Iw(n).Jc(new ps)}function oce(n,e){return Zu(),e.n.b+=n}function fce(n,e,t){return it(n.g,t,e)}function hce(n,e,t){return it(n.k,t,e)}function lce(n,e){return it(n.a,e.a,e)}function Mw(n,e,t){return _Q(e,t,n.c)}function Az(n){return new fn(n.c,n.d)}function ace(n){return new fn(n.c,n.d)}function Qr(n){return new fn(n.a,n.b)}function Tyn(n,e){return xEe(n.a,e,null)}function dce(n){Hi(n,null),Ei(n,null)}function Myn(n){s$(n,null),o$(n,null)}function Ayn(){c8.call(this,null,null)}function Syn(){wE.call(this,null,null)}function Sz(n){this.a=n,we.call(this)}function bce(n){this.b=(Pn(),new DI(n))}function oE(n){n.j=F(Ain,q,310,0,0,1)}function wce(n,e,t){n.c.Vc(e,u(t,133))}function gce(n,e,t){n.c.ji(e,u(t,133))}function Pyn(n,e){de(n),n.Gc(u(e,15))}function m5(n,e){return Jje(n.c,n.b,e)}function pce(n,e){return new Jyn(n.Kc(),e)}function qO(n,e){return gwe(n.Kc(),e)!=-1}function Pz(n,e){return n.a.Bc(e)!=null}function fE(n){return n.Ob()?n.Pb():null}function Iyn(n){return Hs(n,0,n.length)}function I(n,e){return n!=null&&WF(n,e)}function vce(n,e){n.q.setHours(e),Sm(n,e)}function Oyn(n,e){n.c&&(ZU(e),iMn(e))}function mce(n,e,t){u(n.Kb(t),164).Nb(e)}function kce(n,e,t){return SEe(n,e,t),t}function Dyn(n,e,t){n.a=e^1502,n.b=t^tN}function GO(n,e,t){return n.a[e.g][t.g]}function Zo(n,e){return n.a[e.c.p][e.p]}function yce(n,e){return n.e[e.c.p][e.p]}function jce(n,e){return n.c[e.c.p][e.p]}function Ece(n,e){return n.j[e.p]=D9e(e)}function Cce(n,e){return DX(n.f,e.tg())}function Tce(n,e){return DX(n.b,e.tg())}function Mce(n,e){return n.a0?e*e/n:e*e*100}function Jce(n,e){return n>0?e/(n*n):e*100}function Yce(n,e,t){return W(e,e$n(n,t))}function Zce(n,e,t){DC(),n.Xe(e)&&t.td(n)}function s3(n,e,t){var i;i=n.Zc(e),i.Rb(t)}function U0(n,e,t){return n.a+=e,n.b+=t,n}function nue(n,e,t){return n.a*=e,n.b*=t,n}function o8(n,e,t){return n.a-=e,n.b-=t,n}function Zz(n,e){return n.a=e.a,n.b=e.b,n}function vE(n){return n.a=-n.a,n.b=-n.b,n}function fjn(n){this.c=n,this.a=1,this.b=1}function hjn(n){this.c=n,Zc(n,0),nu(n,0)}function ljn(n){Ct.call(this),V5(this,n)}function ajn(n){yL(),N6n(this),this.mf(n)}function djn(n,e){Zv(),c8.call(this,n,e)}function nU(n,e){c1(),wE.call(this,n,e)}function bjn(n,e){c1(),wE.call(this,n,e)}function wjn(n,e){c1(),nU.call(this,n,e)}function qu(n,e,t){Wu.call(this,n,e,t,2)}function JO(n,e){ms(),FE.call(this,n,e)}function gjn(n,e){ms(),JO.call(this,n,e)}function eU(n,e){ms(),JO.call(this,n,e)}function pjn(n,e){ms(),eU.call(this,n,e)}function tU(n,e){ms(),FE.call(this,n,e)}function vjn(n,e){ms(),tU.call(this,n,e)}function mjn(n,e){ms(),FE.call(this,n,e)}function eue(n,e){return n.c.Fc(u(e,133))}function iU(n,e,t){return jM(G8(n,e),t)}function tue(n,e,t){return e.Qk(n.e,n.c,t)}function iue(n,e,t){return e.Rk(n.e,n.c,t)}function YO(n,e){return pl(n.e,u(e,49))}function rue(n,e,t){sm(Ou(n.a),e,IMn(t))}function cue(n,e,t){sm(bc(n.a),e,PMn(t))}function rU(n,e){e.$modCount=n.$modCount}function C5(){C5=N,X6=new kt("root")}function o3(){o3=N,xy=new w9n,new g9n}function kjn(){this.a=new Od,this.b=new Od}function cU(){RIn.call(this),this.Bb|=Yi}function yjn(){Oe.call(this,"GROW_TREE",0)}function uue(n){return n==null?null:CCe(n)}function sue(n){return n==null?null:D5e(n)}function oue(n){return n==null?null:Lr(n)}function fue(n){return n==null?null:Lr(n)}function Ph(n){n.o==null&&u9e(n)}function sn(n){return A5(n==null||q0(n)),n}function Y(n){return A5(n==null||G0(n)),n}function Ce(n){return A5(n==null||mi(n)),n}function uU(n){this.q=new j.Date($d(n))}function f8(n,e){this.c=n,Yp.call(this,n,e)}function mE(n,e){this.a=n,f8.call(this,n,e)}function hue(n,e){this.d=n,Ovn(this),this.b=e}function sU(n,e){P$.call(this,n),this.a=e}function oU(n,e){P$.call(this,n),this.a=e}function lue(n){xQ.call(this,0,0),this.f=n}function fU(n,e,t){IC.call(this,n,e,t,null)}function jjn(n,e,t){IC.call(this,n,e,t,null)}function aue(n,e,t){return n.ue(e,t)<=0?t:e}function due(n,e,t){return n.ue(e,t)<=0?e:t}function bue(n,e){return u(xd(n.b,e),149)}function wue(n,e){return u(xd(n.c,e),229)}function ZO(n){return u(un(n.a,n.b),287)}function Ejn(n){return new fn(n.c,n.d+n.a)}function Cjn(n){return Zu(),syn(u(n,197))}function W0(){W0=N,prn=Cn((Vu(),id))}function gue(n,e){e.a?e7e(n,e):zO(n.a,e.b)}function Tjn(n,e){pf||W(n.a,e)}function pue(n,e){return H9(),K3(e.d.i,n)}function vue(n,e){return x2(),new ABn(e,n)}function Of(n,e){return T8(e,ann),n.f=e,n}function hU(n,e,t){return t=ss(n,e,3,t),t}function lU(n,e,t){return t=ss(n,e,6,t),t}function aU(n,e,t){return t=ss(n,e,9,t),t}function h8(n,e,t){++n.j,n.Ki(),A$(n,e,t)}function Mjn(n,e,t){++n.j,n.Hi(e,n.oi(e,t))}function Ajn(n,e,t){var i;i=n.Zc(e),i.Rb(t)}function Sjn(n,e,t){return MZ(n.c,n.b,e,t)}function dU(n,e){return(e&nt)%n.d.length}function ii(n,e){kt.call(this,n),this.a=e}function bU(n,e){xq.call(this,n),this.a=e}function nD(n,e){xq.call(this,n),this.a=e}function Pjn(n,e){this.c=n,Ld.call(this,e)}function Ijn(n,e){this.a=n,O6n.call(this,e)}function l8(n,e){this.a=n,O6n.call(this,e)}function Ojn(n){this.a=(is(n,Pb),new Pc(n))}function Djn(n){this.a=(is(n,Pb),new Pc(n))}function a8(n){return!n.a&&(n.a=new Rr),n.a}function $jn(n){return n>8?0:n+1}function mue(n,e){return qn(),n==e?0:n?1:-1}function wU(n,e,t){return m2(n,u(e,22),t)}function kue(n,e,t){return n.apply(e,t)}function Fjn(n,e,t){return n.a+=Hs(e,0,t),n}function gU(n,e){var t;return t=n.e,n.e=e,t}function yue(n,e){var t;t=n[eN],t.call(n,e)}function jue(n,e){var t;t=n[eN],t.call(n,e)}function X0(n,e){n.a.Vc(n.b,e),++n.b,n.c=-1}function xjn(n){Eu(n.e),n.d.b=n.d,n.d.a=n.d}function d8(n){n.b?d8(n.b):n.f.c.zc(n.e,n.d)}function Eue(n,e,t){ca(),Svn(n,e.Ce(n.a,t))}function Cue(n,e){return nO(p$n(n.a,e,!0))}function Tue(n,e){return nO(v$n(n.a,e,!0))}function bo(n,e){return pj(new Array(e),n)}function eD(n){return String.fromCharCode(n)}function Mue(n){return n==null?null:n.message}function Ljn(){this.a=new X,this.b=new X}function Njn(){this.a=new LH,this.b=new U6n}function Bjn(){this.b=new Li,this.c=new X}function pU(){this.d=new Li,this.e=new Li}function vU(){this.n=new Li,this.o=new Li}function kE(){this.n=new i2,this.i=new d2}function Rjn(){this.a=new v4n,this.b=new cwn}function _jn(){this.a=new X,this.d=new X}function Kjn(){this.b=new fi,this.a=new fi}function Hjn(){this.b=new we,this.a=new we}function qjn(){this.b=new E8n,this.a=new sgn}function Gjn(){kE.call(this),this.a=new Li}function T5(n){Jbe.call(this,n,(FC(),vR))}function mU(n,e,t,i){xE.call(this,n,e,t,i)}function Aue(n,e,t){t!=null&&JC(e,rx(n,t))}function Sue(n,e,t){t!=null&&YC(e,rx(n,t))}function kU(n,e,t){return t=ss(n,e,11,t),t}function ot(n,e){return n.a+=e.a,n.b+=e.b,n}function ki(n,e){return n.a-=e.a,n.b-=e.b,n}function Pue(n,e){return n.n.a=(_n(e),e+10)}function Iue(n,e){return n.n.a=(_n(e),e+10)}function Oue(n,e){return e==n||o4(sM(e),n)}function zjn(n,e){return it(n.a,e,"")==null}function Due(n,e){return H9(),!K3(e.d.i,n)}function $ue(n,e){tl(n.f)?Q6e(n,e):Fve(n,e)}function Fue(n,e){var t;return t=e.Hh(n.a),t}function V0(n,e){vr.call(this,r6+n+Ra+e)}function g2(n,e,t,i){V.call(this,n,e,t,i)}function yU(n,e,t,i){V.call(this,n,e,t,i)}function Ujn(n,e,t,i){yU.call(this,n,e,t,i)}function Wjn(n,e,t,i){zE.call(this,n,e,t,i)}function tD(n,e,t,i){zE.call(this,n,e,t,i)}function jU(n,e,t,i){zE.call(this,n,e,t,i)}function Xjn(n,e,t,i){tD.call(this,n,e,t,i)}function EU(n,e,t,i){tD.call(this,n,e,t,i)}function Fn(n,e,t,i){jU.call(this,n,e,t,i)}function Vjn(n,e,t,i){EU.call(this,n,e,t,i)}function Qjn(n,e,t,i){yW.call(this,n,e,t,i)}function Jjn(n,e,t){this.a=n,Vz.call(this,e,t)}function Yjn(n,e,t){this.c=e,this.b=t,this.a=n}function xue(n,e,t){return n.d=u(e.Kb(t),164)}function CU(n,e){return n.Aj().Nh().Kh(n,e)}function TU(n,e){return n.Aj().Nh().Ih(n,e)}function Zjn(n,e){return _n(n),B(n)===B(e)}function An(n,e){return _n(n),B(n)===B(e)}function iD(n,e){return nO(p$n(n.a,e,!1))}function rD(n,e){return nO(v$n(n.a,e,!1))}function Lue(n,e){return n.b.sd(new D7n(n,e))}function Nue(n,e){return n.b.sd(new $7n(n,e))}function nEn(n,e){return n.b.sd(new F7n(n,e))}function MU(n,e,t){return n.lastIndexOf(e,t)}function Bue(n,e,t){return Zt(n[e.b],n[t.b])}function Rue(n,e){return H(e,(nn(),Jk),n)}function _ue(n,e){return Uc(e.a.d.p,n.a.d.p)}function Kue(n,e){return Uc(n.a.d.p,e.a.d.p)}function Hue(n,e){return Zt(n.c-n.s,e.c-e.s)}function eEn(n){return n.c?Fr(n.c.a,n,0):-1}function que(n){return n<100?null:new Q1(n)}function p2(n){return n==td||n==jh||n==Ac}function tEn(n,e){return I(e,15)&&oBn(n.c,e)}function Gue(n,e){pf||e&&(n.d=e)}function cD(n,e){var t;return t=e,!!VV(n,t)}function AU(n,e){this.c=n,DD.call(this,n,e)}function iEn(n){this.c=n,FO.call(this,IM,0)}function rEn(n,e){Voe.call(this,n,n.length,e)}function zue(n,e,t){return u(n.c,69).lk(e,t)}function yE(n,e,t){return u(n.c,69).mk(e,t)}function Uue(n,e,t){return tue(n,u(e,332),t)}function SU(n,e,t){return iue(n,u(e,332),t)}function Wue(n,e,t){return txn(n,u(e,332),t)}function cEn(n,e,t){return zve(n,u(e,332),t)}function M5(n,e){return e==null?null:ab(n.b,e)}function PU(n){return G0(n)?(_n(n),n):n.ke()}function jE(n){return!isNaN(n)&&!isFinite(n)}function uEn(n){Df(),this.a=(Pn(),new Wp(n))}function b8(n){h3(),this.d=n,this.a=new gw}function ks(n,e,t){this.a=n,this.b=e,this.c=t}function sEn(n,e,t){this.a=n,this.b=e,this.c=t}function oEn(n,e,t){this.d=n,this.b=t,this.a=e}function uD(n){yyn(this),_s(this),Vi(this,n)}function du(n){RO(this),GU(this.c,0,n.Pc())}function fEn(n){Uu(n.a),uPn(n.c,n.b),n.b=null}function hEn(n){this.a=n,Zf(),eu(Date.now())}function lEn(){lEn=N,Xin=new ou,XA=new ou}function sD(){sD=N,Rin=new iln,Pzn=new rln}function aEn(){aEn=N,Nne=F(Zn,rn,1,0,5,1)}function dEn(){dEn=N,eee=F(Zn,rn,1,0,5,1)}function IU(){IU=N,tee=F(Zn,rn,1,0,5,1)}function Df(){Df=N,new Bq((Pn(),Pn(),cr))}function Xue(n){return FC(),$e((pPn(),Dzn),n)}function Vue(n){return hf(),$e((LSn(),Bzn),n)}function Que(n){return $T(),$e((qAn(),Gzn),n)}function Jue(n){return RC(),$e((GAn(),zzn),n)}function Yue(n){return dM(),$e((IOn(),Uzn),n)}function Zue(n){return _o(),$e(($Sn(),Vzn),n)}function nse(n){return Cu(),$e((FSn(),Jzn),n)}function ese(n){return Jc(),$e((xSn(),Zzn),n)}function tse(n){return SM(),$e((Ukn(),jUn),n)}function ise(n){return Hd(),$e((mPn(),CUn),n)}function rse(n){return K2(),$e((kPn(),MUn),n)}function cse(n){return dm(),$e((yPn(),PUn),n)}function use(n){return Aj(),$e((yAn(),IUn),n)}function sse(n){return _C(),$e((zAn(),WUn),n)}function ose(n){return W5(),$e((NSn(),bWn),n)}function fse(n){return Qi(),$e((JPn(),vWn),n)}function hse(n){return G3(),$e((vPn(),EWn),n)}function lse(n){return qd(),$e((BSn(),PWn),n)}function OU(n,e){if(!n)throw T(new Hn(e))}function ase(n){return Qn(),$e((vIn(),$Wn),n)}function DU(n){xE.call(this,n.d,n.c,n.a,n.b)}function oD(n){xE.call(this,n.d,n.c,n.a,n.b)}function $U(n,e,t){this.b=n,this.c=e,this.a=t}function EE(n,e,t){this.b=n,this.a=e,this.c=t}function bEn(n,e,t){this.a=n,this.b=e,this.c=t}function FU(n,e,t){this.a=n,this.b=e,this.c=t}function wEn(n,e,t){this.a=n,this.b=e,this.c=t}function xU(n,e,t){this.a=n,this.b=e,this.c=t}function gEn(n,e,t){this.b=n,this.a=e,this.c=t}function CE(n,e,t){this.e=e,this.b=n,this.d=t}function dse(n,e,t){return ca(),n.a.Od(e,t),e}function fD(n){var e;return e=new Dln,e.e=n,e}function LU(n){var e;return e=new Z6n,e.b=n,e}function w8(){w8=N,sS=new Fdn,oS=new xdn}function wo(){wo=N,WWn=new pbn,XWn=new vbn}function bse(n){return aT(),$e((EPn(),HWn),n)}function wse(n){return ff(),$e((TPn(),JWn),n)}function gse(n){return lM(),$e((mOn(),cXn),n)}function pse(n){return q2(),$e((yIn(),uXn),n)}function vse(n){return OC(),$e((JAn(),sXn),n)}function mse(n){return F2(),$e((RSn(),oXn),n)}function kse(n){return Vw(),$e((UPn(),ZWn),n)}function yse(n){return Kd(),$e((HSn(),rXn),n)}function jse(n){return VC(),$e((_Sn(),fXn),n)}function Ese(n){return Pa(),$e((GPn(),hXn),n)}function Cse(n){return V8(),$e((WAn(),lXn),n)}function Tse(n){return ya(),$e((KSn(),dXn),n)}function Mse(n){return eM(),$e((TIn(),bXn),n)}function Ase(n){return K8(),$e((XAn(),wXn),n)}function Sse(n){return A7(),$e((EIn(),gXn),n)}function Pse(n){return h4(),$e((jIn(),pXn),n)}function Ise(n){return or(),$e((zOn(),vXn),n)}function Ose(n){return q3(),$e((GSn(),mXn),n)}function Dse(n){return Nh(),$e((qSn(),yXn),n)}function $se(n){return kC(),$e((YAn(),jXn),n)}function Fse(n){return Ss(),$e((WPn(),EXn),n)}function xse(n){return JT(),$e((CIn(),BQn),n)}function Lse(n){return im(),$e((zSn(),RQn),n)}function Nse(n){return wb(),$e((MPn(),_Qn),n)}function Bse(n){return ur(),$e((XSn(),UQn),n)}function Rse(n){return Zw(),$e((vOn(),HQn),n)}function _se(n){return Rh(),$e((WSn(),qQn),n)}function Kse(n){return z8(),$e((QAn(),GQn),n)}function Hse(n){return oT(),$e((USn(),WQn),n)}function qse(n){return bm(),$e((zPn(),KQn),n)}function Gse(n){return x8(),$e((VAn(),XQn),n)}function zse(n){return Q3(),$e((QSn(),VQn),n)}function Use(n){return uT(),$e((JSn(),QQn),n)}function Wse(n){return dT(),$e((VSn(),JQn),n)}function Xse(n){return _d(),$e((YSn(),hJn),n)}function Vse(n){return z5(),$e((nSn(),wJn),n)}function Qse(n){return Ff(),$e((eSn(),jJn),n)}function Jse(n){return ef(),$e((tSn(),CJn),n)}function Yse(n){return No(),$e((ZAn(),RJn),n)}function Zse(n){return Id(),$e((iSn(),UJn),n)}function noe(n){return c4(),$e((jPn(),WJn),n)}function eoe(n){return km(),$e((MIn(),VJn),n)}function toe(n){return aC(),$e((uSn(),fYn),n)}function ioe(n){return iT(),$e((cSn(),wYn),n)}function roe(n){return gC(),$e((rSn(),hYn),n)}function coe(n){return CT(),$e((ZSn(),pYn),n)}function uoe(n){return $C(),$e((sSn(),vYn),n)}function soe(n){return f7(),$e((nPn(),mYn),n)}function ooe(n){return qT(),$e((CPn(),FYn),n)}function foe(n){return sT(),$e((tPn(),xYn),n)}function hoe(n){return ET(),$e((ePn(),LYn),n)}function loe(n){return g4(),$e((QPn(),tZn),n)}function aoe(n){return w7(),$e((iPn(),iZn),n)}function doe(n){return Pj(),$e((mAn(),rZn),n)}function boe(n){return Ij(),$e((vAn(),uZn),n)}function woe(n){return L8(),$e((fSn(),sZn),n)}function goe(n){return P7(),$e((XPn(),oZn),n)}function poe(n){return Jv(),$e((kAn(),CZn),n)}function voe(n){return c7(),$e((oSn(),TZn),n)}function moe(n){return Ho(),$e((VPn(),OZn),n)}function koe(n){return y1(),$e((kOn(),$Zn),n)}function yoe(n){return oh(),$e((kIn(),FZn),n)}function joe(n){return vb(),$e((mIn(),_Zn),n)}function Eoe(n){return rr(),$e((Wkn(),RWn),n)}function Coe(n){return B3(),$e((UAn(),BWn),n)}function Toe(n){return sr(),$e((YPn(),ene),n)}function Moe(n){return sf(),$e((cPn(),tne),n)}function Aoe(n){return Hh(),$e((PPn(),ine),n)}function Soe(n){return ZT(),$e((SIn(),rne),n)}function Poe(n){return _h(),$e((rPn(),une),n)}function Ioe(n){return cs(),$e((SPn(),one),n)}function Ooe(n){return jb(),$e((POn(),fne),n)}function Doe(n){return qw(),$e((ZPn(),hne),n)}function $oe(n){return Ti(),$e((bIn(),lne),n)}function Foe(n){return Tu(),$e((AIn(),ane),n)}function xoe(n){return Vu(),$e((OPn(),vne),n)}function Loe(n){return xu(),$e((UOn(),mne),n)}function Noe(n){return J(),$e((nIn(),dne),n)}function Boe(n){return AT(),$e((IPn(),kne),n)}function Roe(n){return Xu(),$e((APn(),Ene),n)}function _oe(n){return d4(),$e((yOn(),Lne),n)}function Koe(n,e){return _n(n),n+(_n(e),e)}function Hoe(n,e){return Zf(),me(R(n.a),e)}function qoe(n,e){return Zf(),me(R(n.a),e)}function hD(n,e){this.c=n,this.a=e,this.b=e-n}function pEn(n,e,t){this.a=n,this.b=e,this.c=t}function NU(n,e,t){this.a=n,this.b=e,this.c=t}function BU(n,e,t){this.a=n,this.b=e,this.c=t}function vEn(n,e,t){this.a=n,this.b=e,this.c=t}function mEn(n,e,t){this.a=n,this.b=e,this.c=t}function s1(n,e,t){this.e=n,this.a=e,this.c=t}function kEn(n,e,t){ms(),QW.call(this,n,e,t)}function lD(n,e,t){ms(),FW.call(this,n,e,t)}function RU(n,e,t){ms(),FW.call(this,n,e,t)}function _U(n,e,t){ms(),FW.call(this,n,e,t)}function yEn(n,e,t){ms(),lD.call(this,n,e,t)}function KU(n,e,t){ms(),lD.call(this,n,e,t)}function jEn(n,e,t){ms(),KU.call(this,n,e,t)}function EEn(n,e,t){ms(),RU.call(this,n,e,t)}function CEn(n,e,t){ms(),_U.call(this,n,e,t)}function g8(n,e){return pe(n),pe(e),new z8n(n,e)}function v2(n,e){return pe(n),pe(e),new NEn(n,e)}function Goe(n,e){return pe(n),pe(e),new BEn(n,e)}function zoe(n,e){return pe(n),pe(e),new W8n(n,e)}function u(n,e){return A5(n==null||WF(n,e)),n}function f3(n){var e;return e=new X,_$(e,n),e}function Uoe(n){var e;return e=new fi,_$(e,n),e}function TEn(n){var e;return e=new Wq,nF(e,n),e}function p8(n){var e;return e=new Ct,nF(e,n),e}function Woe(n){return!n.e&&(n.e=new X),n.e}function Xoe(n){return!n.c&&(n.c=new Bp),n.c}function W(n,e){return n.c[n.c.length]=e,!0}function MEn(n,e){this.c=n,this.b=e,this.a=!1}function HU(n){this.d=n,Ovn(this),this.b=_fe(n.d)}function AEn(){this.a=";,;",this.b="",this.c=""}function Voe(n,e,t){SCn.call(this,e,t),this.a=n}function SEn(n,e,t){this.b=n,Hkn.call(this,e,t)}function qU(n,e,t){this.c=n,Nj.call(this,e,t)}function GU(n,e,t){aY(t,0,n,e,t.length,!1)}function eh(n,e,t,i,r){n.b=e,n.c=t,n.d=i,n.a=r}function Qoe(n,e){e&&(n.b=e,n.a=(fl(e),e.a))}function zU(n,e,t,i,r){n.d=e,n.c=t,n.a=i,n.b=r}function UU(n){var e,t;e=n.b,t=n.c,n.b=t,n.c=e}function WU(n){var e,t;t=n.d,e=n.a,n.d=e,n.a=t}function XU(n){return bl(the($r(n)?Ks(n):n))}function Joe(n,e){return Uc(GEn(n.d),GEn(e.d))}function Yoe(n,e){return e==(J(),Gn)?n.c:n.d}function h3(){h3=N,don=(J(),Gn),dP=Vn}function PEn(){this.b=K(Y(cn((Go(),xR))))}function IEn(n){return ca(),F(Zn,rn,1,n,5,1)}function Zoe(n){return new fn(n.c+n.b,n.d+n.a)}function nfe(n,e){return Sj(),Uc(n.d.p,e.d.p)}function aD(n){return ne(n.b!=0),Ts(n,n.a.a)}function efe(n){return ne(n.b!=0),Ts(n,n.c.b)}function VU(n,e){if(!n)throw T(new R9n(e))}function TE(n,e){if(!n)throw T(new Hn(e))}function QU(n,e,t){t3.call(this,n,e),this.b=t}function v8(n,e,t){lz.call(this,n,e),this.c=t}function OEn(n,e,t){oIn.call(this,e,t),this.d=n}function JU(n){IU(),Yy.call(this),this.th(n)}function DEn(n,e,t){this.a=n,Ew.call(this,e,t)}function $En(n,e,t){this.a=n,Ew.call(this,e,t)}function ME(n,e,t){lz.call(this,n,e),this.c=t}function FEn(){T3(),khe.call(this,(Z1(),uo))}function xEn(n){return n!=null&&!$F(n,a9,d9)}function tfe(n,e){return(GDn(n)<<4|GDn(e))&Ut}function ife(n,e){return QE(),ex(n,e),new oTn(n,e)}function sa(n,e){var t;n.n&&(t=e,W(n.f,t))}function l3(n,e,t){var i;i=new Z0(t),Ro(n,e,i)}function rfe(n,e){var t;return t=n.c,wV(n,e),t}function YU(n,e){return e<0?n.g=-1:n.g=e,n}function AE(n,e){return H0e(n),n.a*=e,n.b*=e,n}function LEn(n,e,t,i,r){n.c=e,n.d=t,n.b=i,n.a=r}function Ke(n,e){return Kt(n,e,n.c.b,n.c),!0}function ZU(n){n.a.b=n.b,n.b.a=n.a,n.a=n.b=null}function dD(n){this.b=n,this.a=Ed(this.b.a).Ed()}function NEn(n,e){this.b=n,this.a=e,TI.call(this)}function BEn(n,e){this.a=n,this.b=e,TI.call(this)}function REn(n,e){SCn.call(this,e,1040),this.a=n}function m8(n){return n==0||isNaN(n)?n:n<0?-1:1}function cfe(n){return C2(),fh(n)==At(ml(n))}function ufe(n){return C2(),ml(n)==At(fh(n))}function jd(n,e){return vm(n,new t3(e.a,e.b))}function sfe(n){return!Xi(n)&&n.c.i.c==n.d.i.c}function SE(n){var e;return e=n.n,n.a.b+e.d+e.a}function _En(n){var e;return e=n.n,n.e.b+e.d+e.a}function nW(n){var e;return e=n.n,n.e.a+e.b+e.c}function KEn(n){return Je(),new th(0,n)}function ofe(n){return n.a?n.a:WD(n)}function A5(n){if(!n)throw T(new Up(null))}function HEn(){HEn=N,mH=(Pn(),new OI(XB))}function PE(){PE=N,new JQ((HI(),uR),(qI(),cR))}function qEn(){qEn=N,jin=F(Wi,q,19,256,0,1)}function bD(n,e,t,i){MQ.call(this,n,e,t,i,0,0)}function ffe(n,e,t){return it(n.b,u(t.b,17),e)}function hfe(n,e,t){return it(n.b,u(t.b,17),e)}function lfe(n,e){return W(n,new fn(e.a,e.b))}function afe(n,e){return n.c=e)throw T(new qq)}function Xfe(n,e,t){return Mt(e,0,rW(e[0],t[0])),e}function Vfe(n,e,t){e.Ye(t,K(Y(te(n.b,t)))*n.a)}function ACn(n,e,t){return eg(),R3(n,e)&&R3(n,t)}function D5(n){return Tu(),!n.Hc(n1)&&!n.Hc(Gl)}function qE(n){return new fn(n.c+n.b/2,n.d+n.a/2)}function MD(n,e){return e.kh()?pl(n.b,u(e,49)):e}function kW(n,e){this.e=n,this.d=e&64?e|Nf:e}function SCn(n,e){this.c=0,this.d=n,this.b=e|64|Nf}function GE(n){this.b=new Pc(11),this.a=(Ow(),n)}function AD(n){this.b=null,this.a=(Ow(),n||Lin)}function PCn(n){this.a=Y$n(n.a),this.b=new du(n.b)}function ICn(n){this.b=n,b2.call(this,n),$yn(this)}function OCn(n){this.b=n,u8.call(this,n),Fyn(this)}function Y0(n,e,t){this.a=n,g2.call(this,e,t,5,6)}function yW(n,e,t,i){this.b=n,Jt.call(this,e,t,i)}function wi(n,e,t,i,r){D$.call(this,n,e,t,i,r,-1)}function $5(n,e,t,i,r){R8.call(this,n,e,t,i,r,-1)}function V(n,e,t,i){Jt.call(this,n,e,t),this.b=i}function zE(n,e,t,i){v8.call(this,n,e,t),this.b=i}function DCn(n){xkn.call(this,n,!1),this.a=!1}function $Cn(n,e){this.b=n,bvn.call(this,n.b),this.a=e}function FCn(n,e){nb(),Yie.call(this,n,mT(new Ku(e)))}function UE(n,e){return Je(),new xW(n,e,0)}function SD(n,e){return Je(),new xW(6,n,e)}function Qfe(n,e){return An(n.substr(0,e.length),e)}function zu(n,e){return mi(e)?QD(n,e):!!Ar(n.f,e)}function Oi(n,e){for(_n(e);n.Ob();)e.td(n.Pb())}function Pw(n,e,t){jl(),this.e=n,this.d=e,this.a=t}function o1(n,e,t,i){var r;r=n.i,r.i=e,r.a=t,r.b=i}function jW(n){var e;for(e=n;e.f;)e=e.f;return e}function y2(n){var e;return e=tm(n),ne(e!=null),e}function Jfe(n){var e;return e=Lge(n),ne(e!=null),e}function d3(n,e){var t;return t=n.a.gc(),$X(e,t),t-e}function EW(n,e){var t;for(t=0;t0?j.Math.log(n/e):-100}function xCn(n,e){return fc(n,e)<0?-1:fc(n,e)>0?1:0}function SW(n,e,t){return MRn(n,u(e,46),u(t,167))}function LCn(n,e){return u(vW(Ed(n.a)).Xb(e),42).cd()}function uhe(n,e){return P0e(e,n.length),new REn(n,e)}function DD(n,e){this.d=n,ie.call(this,n),this.e=e}function Cd(n){this.d=(_n(n),n),this.a=0,this.c=IM}function PW(n,e){cd.call(this,1),this.a=n,this.b=e}function NCn(n,e){return n.c?NCn(n.c,e):W(n.b,e),n}function she(n,e,t){var i;return i=ub(n,e),g$(n,e,t),i}function IW(n,e){var t;return t=n.slice(0,e),WX(t,n)}function BCn(n,e,t){var i;for(i=0;i=n.g}function KD(n,e,t){var i;return i=Y$(n,e,t),rZ(n,i)}function j2(n,e){var t;t=n.a.length,ub(n,t),g$(n,t,e)}function ZCn(n,e){var t;t=console[n],t.call(console,e)}function nTn(n,e){var t;++n.j,t=n.Vi(),n.Ii(n.oi(t,e))}function mhe(n,e,t){u(e.b,65),Yc(e.a,new NU(n,t,e))}function FW(n,e,t){uj.call(this,e),this.a=n,this.b=t}function xW(n,e,t){cd.call(this,n),this.a=e,this.b=t}function LW(n,e,t){this.a=n,xq.call(this,e),this.b=t}function eTn(n,e,t){this.a=n,aX.call(this,8,e,null,t)}function khe(n){this.a=(_n(xe),xe),this.b=n,new tG}function tTn(n){this.c=n,this.b=this.c.a,this.a=this.c.e}function NW(n){this.c=n,this.b=n.a.d.a,rU(n.a.e,this)}function Uu(n){z0(n.c!=-1),n.d.$c(n.c),n.b=n.c,n.c=-1}function L5(n){return j.Math.sqrt(n.a*n.a+n.b*n.b)}function Md(n,e){return a3(e,n.a.c.length),un(n.a,e)}function $f(n,e){return B(n)===B(e)||n!=null&&tt(n,e)}function yhe(n){return 0>=n?new PG:sbe(n-1)}function jhe(n){return aw?QD(aw,n):!1}function iTn(n){return n?n.dc():!n.Kc().Ob()}function Gi(n){return!n.a&&n.c?n.c.b:n.a}function Ehe(n){return!n.a&&(n.a=new Jt(zl,n,4)),n.a}function Ad(n){return!n.d&&(n.d=new Jt(ar,n,1)),n.d}function _n(n){if(n==null)throw T(new Nv);return n}function N5(n){n.c?n.c.He():(n.d=!0,S8e(n))}function fl(n){n.c?fl(n.c):(Ta(n),n.d=!0)}function rTn(n){KW(n.a),n.b=F(Zn,rn,1,n.b.length,5,1)}function Che(n,e){return Uc(e.j.c.length,n.j.c.length)}function The(n,e){n.c<0||n.b.b=0?n.Bh(t):bY(n,e)}function cTn(n){var e,t;return e=n.c.i.c,t=n.d.i.c,e==t}function Ahe(n){if(n.p!=4)throw T(new fu);return n.e}function She(n){if(n.p!=3)throw T(new fu);return n.e}function Phe(n){if(n.p!=6)throw T(new fu);return n.f}function Ihe(n){if(n.p!=6)throw T(new fu);return n.k}function Ohe(n){if(n.p!=3)throw T(new fu);return n.j}function Dhe(n){if(n.p!=4)throw T(new fu);return n.j}function BW(n){return!n.b&&(n.b=new sj(new KI)),n.b}function Sd(n){return n.c==-2&&Pte(n,Qve(n.g,n.b)),n.c}function g3(n,e){var t;return t=LD("",n),t.n=e,t.i=1,t}function $he(n,e){yD(u(e.b,65),n),Yc(e.a,new Aq(n))}function Fhe(n,e){me((!n.a&&(n.a=new l8(n,n)),n.a),e)}function uTn(n,e){this.b=n,DD.call(this,n,e),$yn(this)}function sTn(n,e){this.b=n,AU.call(this,n,e),Fyn(this)}function RW(n,e,t,i){bd.call(this,n,e),this.d=t,this.a=i}function VE(n,e,t,i){bd.call(this,n,t),this.a=e,this.f=i}function oTn(n,e){bce.call(this,obe(pe(n),pe(e))),this.a=e}function fTn(){UJ.call(this,Ka,(a8n(),hee)),tEe(this)}function hTn(){UJ.call(this,Vs,(Qp(),g1n)),lje(this)}function lTn(){Oe.call(this,"DELAUNAY_TRIANGULATION",0)}function xhe(n){return String.fromCharCode.apply(null,n)}function it(n,e,t){return mi(e)?kr(n,e,t):_c(n.f,e,t)}function _W(n){return Pn(),n?n.ve():(Ow(),Ow(),Bin)}function Lhe(n,e,t){return L2(),t.pg(n,u(e.cd(),146))}function aTn(n,e){return PE(),new JQ(new Wyn(n),new Uyn(e))}function Nhe(n){return is(n,AL),KC(qi(qi(5,n),n/10|0))}function QE(){QE=N,fzn=new GI(A(M(Ha,1),OM,42,0,[]))}function dTn(n){return!n.d&&(n.d=new _p(n.c.Cc())),n.d}function p3(n){return!n.a&&(n.a=new W9n(n.c.vc())),n.a}function bTn(n){return!n.b&&(n.b=new Wp(n.c.ec())),n.b}function rh(n,e){for(;e-- >0;)n=n<<1|(n<0?1:0);return n}function pc(n,e){return B(n)===B(e)||n!=null&&tt(n,e)}function Bhe(n,e){return qn(),u(e.b,19).ai&&++i,i}function Oh(n){var e,t;return t=(e=new ud,e),O3(t,n),t}function UD(n){var e,t;return t=(e=new ud,e),VJ(t,n),t}function Zhe(n,e){var t;return t=te(n.f,e),MV(e,t),null}function WD(n){var e;return e=hbe(n),e||null}function CTn(n){return!n.b&&(n.b=new V(di,n,12,3)),n.b}function n1e(n){return n!=null&&_9(tI,n.toLowerCase())}function e1e(n,e){return Zt(bu(n)*Gu(n),bu(e)*Gu(e))}function t1e(n,e){return Zt(bu(n)*Gu(n),bu(e)*Gu(e))}function i1e(n,e){return Zt(n.d.c+n.d.b/2,e.d.c+e.d.b/2)}function r1e(n,e){return Zt(n.g.c+n.g.b/2,e.g.c+e.g.b/2)}function TTn(n,e,t){t.a?nu(n,e.b-n.f/2):Zc(n,e.a-n.g/2)}function MTn(n,e,t,i){this.a=n,this.b=e,this.c=t,this.d=i}function ATn(n,e,t,i){this.a=n,this.b=e,this.c=t,this.d=i}function ha(n,e,t,i){this.e=n,this.a=e,this.c=t,this.d=i}function STn(n,e,t,i){this.a=n,this.c=e,this.d=t,this.b=i}function PTn(n,e,t,i){ms(),ySn.call(this,e,t,i),this.a=n}function ITn(n,e,t,i){ms(),ySn.call(this,e,t,i),this.a=n}function OTn(n,e){this.a=n,hue.call(this,n,u(n.d,15).Zc(e))}function XD(n){this.f=n,this.c=this.f.e,n.f>0&&qFn(this)}function DTn(n,e,t,i){this.b=n,this.c=i,FO.call(this,e,t)}function $Tn(n){return ne(n.b=0&&An(n.substr(t,e.length),e)}function hl(n,e,t,i,r,c,o){return new v$(n.e,e,t,i,r,c,o)}function QTn(n,e,t,i,r,c){this.a=n,z$.call(this,e,t,i,r,c)}function JTn(n,e,t,i,r,c){this.a=n,z$.call(this,e,t,i,r,c)}function YTn(n,e){this.g=n,this.d=A(M(vh,1),E1,10,0,[e])}function f1(n,e){this.e=n,this.a=Zn,this.b=yBn(e),this.c=e}function ZTn(n,e){kE.call(this),eV(this),this.a=n,this.c=e}function M8(n,e,t,i){Mt(n.c[e.g],t.g,i),Mt(n.c[t.g],e.g,i)}function ZD(n,e,t,i){Mt(n.c[e.g],e.g,t),Mt(n.b[e.g],e.g,i)}function M1e(){return x8(),A(M(ron,1),z,376,0,[uK,iy])}function A1e(){return K8(),A(M(Qcn,1),z,479,0,[Vcn,xS])}function S1e(){return V8(),A(M(Wcn,1),z,419,0,[$S,Ucn])}function P1e(){return OC(),A(M(Rcn,1),z,422,0,[Bcn,s_])}function I1e(){return kC(),A(M(fun,1),z,420,0,[j_,oun])}function O1e(){return z8(),A(M(non,1),z,421,0,[iK,rK])}function D1e(){return z5(),A(M(bJn,1),z,523,0,[H6,K6])}function $1e(){return No(),A(M(BJn,1),z,520,0,[tw,Bl])}function F1e(){return Ff(),A(M(yJn,1),z,516,0,[M0,I1])}function x1e(){return ef(),A(M(EJn,1),z,515,0,[Ja,kf])}function L1e(){return Id(),A(M(zJn,1),z,455,0,[Rl,Lg])}function N1e(){return gC(),A(M(Son,1),z,425,0,[yK,Aon])}function B1e(){return aC(),A(M(Mon,1),z,480,0,[kK,Ton])}function R1e(){return iT(),A(M(Pon,1),z,495,0,[EP,mv])}function _1e(){return $C(),A(M(Oon,1),z,426,0,[Ion,TK])}function K1e(){return c7(),A(M(Ffn,1),z,429,0,[DP,$fn])}function H1e(){return L8(),A(M(afn,1),z,430,0,[FK,IP])}function q1e(){return $T(),A(M(Jin,1),z,428,0,[yR,Qin])}function G1e(){return RC(),A(M(Zin,1),z,427,0,[Yin,jR])}function z1e(){return _C(),A(M(Arn,1),z,424,0,[$R,tS])}function U1e(){return B3(),A(M(NWn,1),z,511,0,[_k,UR])}function sC(n,e,t,i){return t>=0?n.jh(e,t,i):n.Sg(null,t,i)}function n$(n){return n.b.b==0?n.a.$e():aD(n.b)}function W1e(n){if(n.p!=5)throw T(new fu);return ge(n.f)}function X1e(n){if(n.p!=5)throw T(new fu);return ge(n.k)}function VW(n){return B(n.a)===B((eF(),gH))&&Vje(n),n.a}function nMn(n){this.a=u(pe(n),271),this.b=(Pn(),new Hz(n))}function eMn(n,e){bte(this,new fn(n.a,n.b)),wte(this,p8(e))}function Id(){Id=N,Rl=new iz(Y2,0),Lg=new iz(Z2,1)}function Ff(){Ff=N,M0=new ez(Z2,0),I1=new ez(Y2,1)}function Od(){rie.call(this,new s2(sb(12))),Bz(!0),this.a=2}function e$(n,e,t){Je(),cd.call(this,n),this.b=e,this.a=t}function QW(n,e,t){ms(),uj.call(this,e),this.a=n,this.b=t}function tMn(n){kE.call(this),eV(this),this.a=n,this.c=!0}function iMn(n){var e;e=n.c.d.b,n.b=e,n.a=n.c.d,e.a=n.c.d.b=n}function oC(n){var e;ebe(n.a),byn(n.a),e=new tj(n.a),TQ(e)}function V1e(n,e){aBn(n,!0),Yc(n.e.wf(),new $U(n,!0,e))}function fC(n,e){return LAn(e),Y0e(n,F(be,Le,25,e,15,1),e)}function Q1e(n,e){return C2(),n==At(fh(e))||n==At(ml(e))}function vc(n,e){return e==null?Vr(Ar(n.f,null)):n5(n.g,e)}function J1e(n){return n.b==0?null:(ne(n.b!=0),Ts(n,n.a.a))}function Gt(n){return Math.max(Math.min(n,nt),-2147483648)|0}function Y1e(n,e){var t=lR[n.charCodeAt(0)];return t??n}function hC(n,e){return tC(n,"set1"),tC(e,"set2"),new Z8n(n,e)}function Z1e(n,e){var t;return t=W0e(n.f,e),ot(vE(t),n.f.d)}function R5(n,e){var t,i;return t=e,i=new dI,n_n(n,t,i),i.d}function t$(n,e,t,i){var r;r=new Gjn,e.a[t.g]=r,m2(n.b,i,r)}function JW(n,e,t){var i;i=n.Yg(e),i>=0?n.sh(i,t):_Y(n,e,t)}function Dw(n,e,t){dC(),n&&it(dH,n,e),n&&it($y,n,t)}function rMn(n,e,t){this.i=new X,this.b=n,this.g=e,this.a=t}function lC(n,e,t){this.c=new X,this.e=n,this.f=e,this.b=t}function YW(n,e,t){this.a=new X,this.e=n,this.f=e,this.c=t}function cMn(n,e){oE(this),this.f=e,this.g=n,eC(this),this._d()}function A8(n,e){var t;t=n.q.getHours(),n.q.setDate(e),Sm(n,t)}function uMn(n,e){var t;for(pe(e),t=n.a;t;t=t.c)e.Od(t.g,t.i)}function sMn(n){var e;return e=new kj(sb(n.length)),qV(e,n),e}function nle(n){function e(){}return e.prototype=n||{},new e}function ele(n,e){return LOn(n,e)?(FIn(n),!0):!1}function Dh(n,e){if(e==null)throw T(new Nv);return Y2e(n,e)}function tle(n){if(n.qe())return null;var e=n.n;return RA[e]}function S8(n){return n.Db>>16!=3?null:u(n.Cb,33)}function nf(n){return n.Db>>16!=9?null:u(n.Cb,33)}function oMn(n){return n.Db>>16!=6?null:u(n.Cb,79)}function fMn(n){return n.Db>>16!=7?null:u(n.Cb,235)}function hMn(n){return n.Db>>16!=7?null:u(n.Cb,160)}function At(n){return n.Db>>16!=11?null:u(n.Cb,33)}function lMn(n,e){var t;return t=n.Yg(e),t>=0?n.lh(t):Ox(n,e)}function aMn(n,e){var t;return t=new iW(e),dxn(t,n),new du(t)}function ZW(n){var e;return e=n.d,e=n.si(n.f),me(n,e),e.Ob()}function dMn(n,e){return n.b+=e.b,n.c+=e.c,n.d+=e.d,n.a+=e.a,n}function i$(n,e){return j.Math.abs(n)0}function bMn(){this.a=new Sh,this.e=new fi,this.g=0,this.i=0}function wMn(n){this.a=n,this.b=F(lJn,q,1944,n.e.length,0,2)}function r$(n,e,t){var i;i=tDn(n,e,t),n.b=new tT(i.c.length)}function ef(){ef=N,Ja=new nz(hN,0),kf=new nz("UP",1)}function aC(){aC=N,kK=new rz(PHn,0),Ton=new rz("FAN",1)}function dC(){dC=N,dH=new we,$y=new we,Ere(Azn,new z2n)}function rle(n){if(n.p!=0)throw T(new fu);return b5(n.f,0)}function cle(n){if(n.p!=0)throw T(new fu);return b5(n.k,0)}function gMn(n){return n.Db>>16!=3?null:u(n.Cb,147)}function y3(n){return n.Db>>16!=6?null:u(n.Cb,235)}function eb(n){return n.Db>>16!=17?null:u(n.Cb,26)}function pMn(n,e){var t=n.a=n.a||[];return t[e]||(t[e]=n.le(e))}function ule(n,e){var t;return t=n.a.get(e),t??new Array}function sle(n,e){var t;t=n.q.getHours(),n.q.setMonth(e),Sm(n,t)}function kr(n,e,t){return e==null?_c(n.f,null,t):Gd(n.g,e,t)}function _5(n,e,t,i,r,c){return new Lh(n.e,e,n.aj(),t,i,r,c)}function P8(n,e,t){return n.a=Yu(n.a,0,e)+(""+t)+r8(n.a,e),n}function ole(n,e,t){return W(n.a,(QE(),ex(e,t),new bd(e,t))),n}function nX(n){return _z(n.c),n.e=n.a=n.c,n.c=n.c.c,++n.d,n.a.f}function vMn(n){return _z(n.e),n.c=n.a=n.e,n.e=n.e.e,--n.d,n.a.f}function Ei(n,e){n.d&&Qc(n.d.e,n),n.d=e,n.d&&W(n.d.e,n)}function Hi(n,e){n.c&&Qc(n.c.g,n),n.c=e,n.c&&W(n.c.g,n)}function yr(n,e){n.c&&Qc(n.c.a,n),n.c=e,n.c&&W(n.c.a,n)}function Hr(n,e){n.i&&Qc(n.i.j,n),n.i=e,n.i&&W(n.i.j,n)}function mMn(n,e,t){this.a=e,this.c=n,this.b=(pe(t),new du(t))}function kMn(n,e,t){this.a=e,this.c=n,this.b=(pe(t),new du(t))}function yMn(n,e){this.a=n,this.c=Qr(this.a),this.b=new uC(e)}function fle(n){var e;return Ta(n),e=new fi,gt(n,new Vvn(e))}function tb(n,e){if(n<0||n>e)throw T(new vr(cnn+n+unn+e))}function eX(n,e){return lCn(n.a,e)?TW(n,u(e,22).g,null):null}function hle(n){return yF(),qn(),u(n.a,81).d.e!=0}function jMn(){jMn=N,azn=Fe((aj(),A(M(lzn,1),z,538,0,[fR])))}function EMn(){EMn=N,YQn=ju(new hi,(Qi(),Ir),(rr(),Kk))}function tX(){tX=N,ZQn=ju(new hi,(Qi(),Ir),(rr(),Kk))}function CMn(){CMn=N,eJn=ju(new hi,(Qi(),Ir),(rr(),Kk))}function TMn(){TMn=N,gJn=Ze(new hi,(Qi(),Ir),(rr(),k6))}function Zu(){Zu=N,mJn=Ze(new hi,(Qi(),Ir),(rr(),k6))}function MMn(){MMn=N,kJn=Ze(new hi,(Qi(),Ir),(rr(),k6))}function c$(){c$=N,TJn=Ze(new hi,(Qi(),Ir),(rr(),k6))}function AMn(){AMn=N,lYn=ju(new hi,(c4(),G6),(km(),lK))}function aa(n,e,t,i){this.c=n,this.d=i,s$(this,e),o$(this,t)}function M2(n){this.c=new Ct,this.b=n.b,this.d=n.c,this.a=n.a}function u$(n){this.a=j.Math.cos(n),this.b=j.Math.sin(n)}function s$(n,e){n.a&&Qc(n.a.k,n),n.a=e,n.a&&W(n.a.k,n)}function o$(n,e){n.b&&Qc(n.b.f,n),n.b=e,n.b&&W(n.b.f,n)}function SMn(n,e){mhe(n,n.b,n.c),u(n.b.b,65),e&&u(e.b,65).b}function lle(n,e){vQ(n,e),I(n.Cb,88)&&yb(Iu(u(n.Cb,88)),2)}function f$(n,e){I(n.Cb,88)&&yb(Iu(u(n.Cb,88)),4),Ic(n,e)}function bC(n,e){I(n.Cb,179)&&(u(n.Cb,179).tb=null),Ic(n,e)}function mc(n,e){return er(),R$(e)?new IE(e,n):new i8(e,n)}function ale(n,e){var t,i;t=e.c,i=t!=null,i&&j2(n,new Z0(e.c))}function PMn(n){var e,t;return t=(Qp(),e=new ud,e),O3(t,n),t}function IMn(n){var e,t;return t=(Qp(),e=new ud,e),O3(t,n),t}function OMn(n,e){var t;return t=new Rs(n),e.c[e.c.length]=t,t}function DMn(n,e){var t;return t=u(ab(T2(n.a),e),14),t?t.gc():0}function $Mn(n){var e;return Ta(n),e=(Ow(),Ow(),Nin),qC(n,e)}function FMn(n){for(var e;;)if(e=n.Pb(),!n.Ob())return e}function iX(n,e){tie.call(this,new s2(sb(n))),is(e,W_n),this.a=e}function ch(n,e,t){KDn(e,t,n.gc()),this.c=n,this.a=e,this.b=t-e}function xMn(n,e,t){var i;KDn(e,t,n.c.length),i=t-e,AG(n.c,e,i)}function dle(n,e){Dyn(n,ge(ci(cl(e,24),FM)),ge(ci(e,FM)))}function Ln(n,e){if(n<0||n>=e)throw T(new vr(cnn+n+unn+e))}function Te(n,e){if(n<0||n>=e)throw T(new wG(cnn+n+unn+e))}function xn(n,e){this.b=(_n(n),n),this.a=e&Ib?e:e|64|Nf}function LMn(n){dyn(this),W6n(this.a,KV(j.Math.max(8,n))<<1)}function tf(n){return Gr(A(M(ai,1),q,8,0,[n.i.n,n.n,n.a]))}function ble(){return hf(),A(M(Nu,1),z,132,0,[Win,hs,Rb])}function wle(){return _o(),A(M(_b,1),z,232,0,[Zr,Fc,nc])}function gle(){return Cu(),A(M(Qzn,1),z,461,0,[Xf,Ol,Co])}function ple(){return Jc(),A(M(Yzn,1),z,462,0,[Wo,Dl,To])}function vle(){return qd(),A(M(zrn,1),z,423,0,[yg,Grn,qR])}function mle(){return W5(),A(M(Krn,1),z,379,0,[NR,LR,BR])}function kle(){return im(),A(M(Gsn,1),z,378,0,[J_,qsn,oP])}function yle(){return F2(),A(M(Kcn,1),z,314,0,[ap,qk,_cn])}function jle(){return VC(),A(M(qcn,1),z,337,0,[Hcn,DS,o_])}function Ele(){return ya(),A(M(aXn,1),z,450,0,[l_,cv,Tg])}function Cle(){return Kd(),A(M(YR,1),z,361,0,[g0,Fl,w0])}function Tle(){return Nh(),A(M(kXn,1),z,303,0,[zk,Ag,dp])}function Mle(){return q3(),A(M(y_,1),z,292,0,[m_,k_,Gk])}function Ale(){return ur(),A(M(zQn,1),z,452,0,[B6,Au,xc])}function Sle(){return Rh(),A(M(Zsn,1),z,339,0,[Nl,Ysn,tK])}function Ple(){return oT(),A(M(ion,1),z,375,0,[eon,cK,ton])}function Ile(){return dT(),A(M(hon,1),z,377,0,[fK,pv,ew])}function Ole(){return Q3(),A(M(uon,1),z,336,0,[sK,con,R6])}function Dle(){return uT(),A(M(fon,1),z,338,0,[oon,oK,son])}function $le(){return _d(),A(M(fJn,1),z,454,0,[ry,_6,aP])}function Fle(){return CT(),A(M(gYn,1),z,442,0,[CK,jK,EK])}function xle(){return f7(),A(M(Fon,1),z,380,0,[CP,Don,$on])}function Lle(){return ET(),A(M(Yon,1),z,381,0,[Jon,IK,Qon])}function Nle(){return sT(),A(M(Xon,1),z,293,0,[PK,Won,Uon])}function Ble(){return w7(),A(M(OK,1),z,437,0,[AP,SP,PP])}function Rle(){return _h(),A(M(Khn,1),z,334,0,[HP,F1,i9])}function _le(){return sf(),A(M(Phn,1),z,272,0,[jv,cw,Ev])}function Kle(n,e){return o9e(n,e,I(e,99)&&(u(e,18).Bb&Yi)!=0)}function Hle(n,e,t){var i;return i=Om(n,e,!1),i.b<=e&&i.a<=t}function NMn(n,e,t){var i;i=new Jwn,i.b=e,i.a=t,++e.b,W(n.d,i)}function qle(n,e){var t;return t=(_n(n),n).g,Yz(!!t),_n(e),t(e)}function rX(n,e){var t,i;return i=d3(n,e),t=n.a.Zc(i),new Y8n(n,t)}function Gle(n){return n.Db>>16!=6?null:u(Fx(n),235)}function zle(n){if(n.p!=2)throw T(new fu);return ge(n.f)&Ut}function Ule(n){if(n.p!=2)throw T(new fu);return ge(n.k)&Ut}function Wle(n){return n.a==(T3(),uI)&&Ste(n,C9e(n.g,n.b)),n.a}function A2(n){return n.d==(T3(),uI)&&Ite(n,pke(n.g,n.b)),n.d}function y(n){return ne(n.ai?1:0}function BMn(n,e){var t,i;return t=F$(e),i=t,u(te(n.c,i),19).a}function RMn(n,e){var t;for(t=n+"";t.length0&&n.a[--n.d]==0;);n.a[n.d++]==0&&(n.e=0)}function rAn(n){return n.a?n.e.length==0?n.a.a:n.a.a+(""+n.e):n.c}function rae(n){return!!n.a&&Ou(n.a.a).i!=0&&!(n.b&&YF(n.b))}function cae(n){return!!n.u&&bc(n.u.a).i!=0&&!(n.n&&JF(n.n))}function cAn(n){return gD(n.e.Hd().gc()*n.c.Hd().gc(),16,new tvn(n))}function uae(n,e){return xCn(eu(n.q.getTime()),eu(e.q.getTime()))}function xf(n){return u(lf(n,F(GR,MN,17,n.c.length,0,1)),474)}function I8(n){return u(lf(n,F(vh,E1,10,n.c.length,0,1)),193)}function sae(n){return Zu(),!Xi(n)&&!(!Xi(n)&&n.c.i.c==n.d.i.c)}function uAn(n,e,t){var i;i=(pe(n),new du(n)),N3e(new mMn(i,e,t))}function O8(n,e,t){var i;i=(pe(n),new du(n)),B3e(new kMn(i,e,t))}function sAn(n,e){var t;return t=1-e,n.a[t]=eT(n.a[t],t),eT(n,e)}function oAn(n,e){var t;n.e=new oG,t=Cb(e),bi(t,n.c),eBn(n,t,0)}function Ci(n,e,t,i){var r;r=new XH,r.a=e,r.b=t,r.c=i,Ke(n.a,r)}function Z(n,e,t,i){var r;r=new XH,r.a=e,r.b=t,r.c=i,Ke(n.b,r)}function po(n){var e,t,i;return e=new HCn,t=Zx(e,n),UEe(e),i=t,i}function hX(){var n,e,t;return e=(t=(n=new ud,n),t),W(M1n,e),e}function pC(n){return n.j.c=F(Zn,rn,1,0,5,1),KW(n.c),Khe(n.a),n}function $w(n){return Qv(),I(n.g,10)?u(n.g,10):null}function oae(n){return Iw(n).dc()?!1:(sce(n,new Np),!0)}function fae(n){if(!("stack"in n))try{throw n}catch{}return n}function D8(n,e){if(n<0||n>=e)throw T(new vr(jme(n,e)));return n}function fAn(n,e,t){if(n<0||et)throw T(new vr(W5e(n,e,t)))}function d$(n,e){if(ri(n.a,e),e.d)throw T(new _r(wKn));e.d=n}function b$(n,e){if(e.$modCount!=n.$modCount)throw T(new vs)}function hAn(n,e){return I(e,42)?ix(n.a,u(e,42)):!1}function lAn(n,e){return I(e,42)?ix(n.a,u(e,42)):!1}function aAn(n,e){return I(e,42)?ix(n.a,u(e,42)):!1}function hae(n,e){return n.a<=n.b?(e.ud(n.a++),!0):!1}function $d(n){var e;return $r(n)?(e=n,e==-0?0:e):m0e(n)}function vC(n){var e;return fl(n),e=new fln,vw(n.a,new Wvn(e)),e}function dAn(n){var e;return fl(n),e=new oln,vw(n.a,new Uvn(e)),e}function Ii(n,e){this.a=n,$v.call(this,n),tb(e,n.gc()),this.b=e}function lX(n){this.e=n,this.b=this.e.a.entries(),this.a=new Array}function lae(n){return gD(n.e.Hd().gc()*n.c.Hd().gc(),273,new evn(n))}function mC(n){return new Pc((is(n,AL),KC(qi(qi(5,n),n/10|0))))}function bAn(n){return u(lf(n,F(FWn,UKn,11,n.c.length,0,1)),1943)}function aae(n,e,t){return t.f.c.length>0?SW(n.a,e,t):SW(n.b,e,t)}function dae(n,e,t){n.d&&Qc(n.d.e,n),n.d=e,n.d&&Q0(n.d.e,t,n)}function w$(n,e){uTe(e,n),WU(n.d),WU(u(k(n,(nn(),eP)),207))}function H5(n,e){cTe(e,n),UU(n.d),UU(u(k(n,(nn(),eP)),207))}function Fd(n,e){var t,i;return t=Dh(n,e),i=null,t&&(i=t.fe()),i}function j3(n,e){var t,i;return t=ub(n,e),i=null,t&&(i=t.ie()),i}function q5(n,e){var t,i;return t=Dh(n,e),i=null,t&&(i=t.ie()),i}function $h(n,e){var t,i;return t=Dh(n,e),i=null,t&&(i=tY(t)),i}function bae(n,e,t){var i;return i=i4(t),gM(n.g,i,e),gM(n.i,e,t),e}function wae(n,e,t){var i;i=q2e();try{return kue(n,e,t)}finally{Mae(i)}}function wAn(n){var e;e=n.Wg(),this.a=I(e,69)?u(e,69).Zh():e.Kc()}function hi(){P9n.call(this),this.j.c=F(Zn,rn,1,0,5,1),this.a=-1}function aX(n,e,t,i){this.d=n,this.n=e,this.g=t,this.o=i,this.p=-1}function gAn(n,e,t,i){this.e=i,this.d=null,this.c=n,this.a=e,this.b=t}function dX(n,e,t){this.d=new rmn(this),this.e=n,this.i=e,this.f=t}function kC(){kC=N,j_=new QG(I4,0),oun=new QG("TOP_LEFT",1)}function pAn(){pAn=N,aon=aTn(Q(1),Q(4)),lon=aTn(Q(1),Q(2))}function vAn(){vAn=N,uZn=Fe((Ij(),A(M(cZn,1),z,551,0,[$K])))}function mAn(){mAn=N,rZn=Fe((Pj(),A(M(lfn,1),z,482,0,[DK])))}function kAn(){kAn=N,CZn=Fe((Jv(),A(M(Dfn,1),z,530,0,[hy])))}function yAn(){yAn=N,IUn=Fe((Aj(),A(M(krn,1),z,481,0,[SR])))}function gae(){return Hd(),A(M(EUn,1),z,406,0,[Ok,Ik,MR,AR])}function pae(){return FC(),A(M(WA,1),z,297,0,[vR,qin,Gin,zin])}function vae(){return dm(),A(M(SUn,1),z,394,0,[Lk,YA,ZA,Nk])}function mae(){return K2(),A(M(TUn,1),z,323,0,[$k,Dk,Fk,xk])}function kae(){return G3(),A(M(jWn,1),z,405,0,[b0,Hb,Kb,kg])}function yae(){return aT(),A(M(KWn,1),z,360,0,[QR,TS,MS,Hk])}function jAn(n,e,t,i){return I(t,54)?new ojn(n,e,t,i):new pW(n,e,t,i)}function jae(){return ff(),A(M(QWn,1),z,411,0,[lp,nv,ev,JR])}function Eae(n){var e;return n.j==(J(),ae)&&(e=GLn(n),au(e,Vn))}function Cae(n,e){var t;t=e.a,Hi(t,e.c.d),Ei(t,e.d.d),fb(t.a,n.n)}function EAn(n,e){return u(yd(KE(u(ct(n.k,e),15).Oc(),jg)),113)}function CAn(n,e){return u(yd(HE(u(ct(n.k,e),15).Oc(),jg)),113)}function Tae(n){return new xn(jbe(u(n.a.dd(),14).gc(),n.a.cd()),16)}function E3(n){return I(n,14)?u(n,14).dc():!n.Kc().Ob()}function S2(n){return Qv(),I(n.g,145)?u(n.g,145):null}function TAn(n){if(n.e.g!=n.b)throw T(new vs);return!!n.c&&n.d>0}function Re(n){return ne(n.b!=n.d.c),n.c=n.b,n.b=n.b.a,++n.a,n.c.c}function bX(n,e){_n(e),Mt(n.a,n.c,e),n.c=n.c+1&n.a.length-1,MFn(n)}function ll(n,e){_n(e),n.b=n.b-1&n.a.length-1,Mt(n.a,n.b,e),MFn(n)}function MAn(n,e){var t;for(t=n.j.c.length;t0&&gc(n.g,0,e,0,n.i),e}function IAn(n,e){$j();var t;return t=u(te(eI,n),55),!t||t.wj(e)}function Bae(n){if(n.p!=1)throw T(new fu);return ge(n.f)<<24>>24}function Rae(n){if(n.p!=1)throw T(new fu);return ge(n.k)<<24>>24}function _ae(n){if(n.p!=7)throw T(new fu);return ge(n.k)<<16>>16}function Kae(n){if(n.p!=7)throw T(new fu);return ge(n.f)<<16>>16}function Fh(n){var e;for(e=0;n.Ob();)n.Pb(),e=qi(e,1);return KC(e)}function OAn(n,e){var t;return t=new R0,n.xd(t),t.a+="..",e.yd(t),t.a}function Hae(n,e,t){var i;i=u(te(n.g,t),57),W(n.a.c,new Pi(e,i))}function qae(n,e,t){return TD(Y(Vr(Ar(n.f,e))),Y(Vr(Ar(n.f,t))))}function yC(n,e,t){return vM(n,e,t,I(e,99)&&(u(e,18).Bb&Yi)!=0)}function Gae(n,e,t){return m4(n,e,t,I(e,99)&&(u(e,18).Bb&Yi)!=0)}function zae(n,e,t){return b9e(n,e,t,I(e,99)&&(u(e,18).Bb&Yi)!=0)}function pX(n,e){return n==(Qn(),ti)&&e==ti?4:n==ti||e==ti?8:32}function DAn(n,e){return B(e)===B(n)?"(this Map)":e==null?iu:Lr(e)}function Uae(n,e){return u(e==null?Vr(Ar(n.f,null)):n5(n.g,e),281)}function $An(n,e,t){var i;return i=i4(t),it(n.b,i,e),it(n.c,e,t),e}function FAn(n,e){var t;for(t=e;t;)U0(n,t.i,t.j),t=At(t);return n}function vX(n,e){var t;return t=C8(f3(new x$(n,e))),DE(new x$(n,e)),t}function uh(n,e){er();var t;return t=u(n,66).Mj(),M5e(t,e),t.Ok(e)}function Wae(n,e,t,i,r){var c;c=m9e(r,t,i),W(e,pme(r,c)),o5e(n,r,e)}function xAn(n,e,t){n.i=0,n.e=0,e!=t&&(uDn(n,e,t),cDn(n,e,t))}function mX(n,e){var t;t=n.q.getHours(),n.q.setFullYear(e+Tl),Sm(n,t)}function Xae(n,e,t){if(t){var i=t.ee();n.a[e]=i(t)}else delete n.a[e]}function g$(n,e,t){if(t){var i=t.ee();t=i(t)}else t=void 0;n.a[e]=t}function LAn(n){if(n<0)throw T(new K9n("Negative array size: "+n))}function bc(n){return n.n||(Iu(n),n.n=new wCn(n,ar,n),Mr(n)),n.n}function G5(n){return ne(n.a=0&&n.a[t]===e[t];t--);return t<0}function KAn(n,e){V3();var t;return t=n.j.g-e.j.g,t!=0?t:0}function HAn(n,e){return _n(e),n.a!=null?$fe(e.Kb(n.a)):UA}function jC(n){var e;return n?new iW(n):(e=new Sh,nF(e,n),e)}function es(n,e){var t;return e.b.Kb(FPn(n,e.c.Ee(),(t=new Jvn(e),t)))}function EC(n){_J(),Dyn(this,ge(ci(cl(n,24),FM)),ge(ci(n,FM)))}function qAn(){qAn=N,Gzn=Fe(($T(),A(M(Jin,1),z,428,0,[yR,Qin])))}function GAn(){GAn=N,zzn=Fe((RC(),A(M(Zin,1),z,427,0,[Yin,jR])))}function zAn(){zAn=N,WUn=Fe((_C(),A(M(Arn,1),z,424,0,[$R,tS])))}function UAn(){UAn=N,BWn=Fe((B3(),A(M(NWn,1),z,511,0,[_k,UR])))}function WAn(){WAn=N,lXn=Fe((V8(),A(M(Wcn,1),z,419,0,[$S,Ucn])))}function XAn(){XAn=N,wXn=Fe((K8(),A(M(Qcn,1),z,479,0,[Vcn,xS])))}function VAn(){VAn=N,XQn=Fe((x8(),A(M(ron,1),z,376,0,[uK,iy])))}function QAn(){QAn=N,GQn=Fe((z8(),A(M(non,1),z,421,0,[iK,rK])))}function JAn(){JAn=N,sXn=Fe((OC(),A(M(Rcn,1),z,422,0,[Bcn,s_])))}function YAn(){YAn=N,jXn=Fe((kC(),A(M(fun,1),z,420,0,[j_,oun])))}function ZAn(){ZAn=N,RJn=Fe((No(),A(M(BJn,1),z,520,0,[tw,Bl])))}function nSn(){nSn=N,wJn=Fe((z5(),A(M(bJn,1),z,523,0,[H6,K6])))}function eSn(){eSn=N,jJn=Fe((Ff(),A(M(yJn,1),z,516,0,[M0,I1])))}function tSn(){tSn=N,CJn=Fe((ef(),A(M(EJn,1),z,515,0,[Ja,kf])))}function iSn(){iSn=N,UJn=Fe((Id(),A(M(zJn,1),z,455,0,[Rl,Lg])))}function rSn(){rSn=N,hYn=Fe((gC(),A(M(Son,1),z,425,0,[yK,Aon])))}function cSn(){cSn=N,wYn=Fe((iT(),A(M(Pon,1),z,495,0,[EP,mv])))}function uSn(){uSn=N,fYn=Fe((aC(),A(M(Mon,1),z,480,0,[kK,Ton])))}function sSn(){sSn=N,vYn=Fe(($C(),A(M(Oon,1),z,426,0,[Ion,TK])))}function oSn(){oSn=N,TZn=Fe((c7(),A(M(Ffn,1),z,429,0,[DP,$fn])))}function fSn(){fSn=N,sZn=Fe((L8(),A(M(afn,1),z,430,0,[FK,IP])))}function z5(){z5=N,H6=new ZG("UPPER",0),K6=new ZG("LOWER",1)}function Yae(n,e){var t;t=new r2,la(t,"x",e.a),la(t,"y",e.b),j2(n,t)}function Zae(n,e){var t;t=new r2,la(t,"x",e.a),la(t,"y",e.b),j2(n,t)}function nde(n,e){var t,i;i=!1;do t=JOn(n,e),i=i|t;while(t);return i}function jX(n,e){var t,i;for(t=e,i=0;t>0;)i+=n.a[t],t-=t&-t;return i}function hSn(n,e){var t;for(t=e;t;)U0(n,-t.i,-t.j),t=At(t);return n}function $i(n,e){var t,i;for(_n(e),i=n.Kc();i.Ob();)t=i.Pb(),e.td(t)}function lSn(n,e){var t;return t=e.cd(),new bd(t,n.e.pc(t,u(e.dd(),14)))}function Kt(n,e,t,i){var r;r=new aI,r.c=e,r.b=t,r.a=i,i.b=t.a=r,++n.b}function Es(n,e,t){var i;return i=(Ln(e,n.c.length),n.c[e]),n.c[e]=t,i}function ede(n,e,t){return u(e==null?_c(n.f,null,t):Gd(n.g,e,t),281)}function k$(n){return n.c&&n.d?cX(n.c)+"->"+cX(n.d):"e_"+md(n)}function C3(n,e){return(Ta(n),Wv(new $n(n,new UX(e,n.a)))).sd(V4)}function tde(){return Qi(),A(M(Hrn,1),z,356,0,[Vf,$l,Hc,Cc,Ir])}function ide(){return J(),A(M(Zi,1),hc,61,0,[Xr,Kn,Vn,ae,Gn])}function rde(n){return gj(),function(){return wae(n,this,arguments)}}function cde(){return Date.now?Date.now():new Date().getTime()}function Xi(n){return!n.c||!n.d?!1:!!n.c.i&&n.c.i==n.d.i}function aSn(n){if(!n.c.Sb())throw T(new ic);return n.a=!0,n.c.Ub()}function $8(n){n.i=0,z9(n.b,null),z9(n.c,null),n.a=null,n.e=null,++n.g}function EX(n){are.call(this,n==null?iu:Lr(n),I(n,78)?u(n,78):null)}function dSn(n){B_n(),N6n(this),this.a=new Ct,QV(this,n),Ke(this.a,n)}function bSn(){RO(this),this.b=new fn(Ft,Ft),this.a=new fn(Vt,Vt)}function wSn(n,e){this.c=0,this.b=e,qkn.call(this,n,17493),this.a=this.c}function y$(n){CC(),!pf&&(this.c=n,this.e=!0,this.a=new X)}function CC(){CC=N,pf=!0,Fzn=!1,xzn=!1,Nzn=!1,Lzn=!1}function CX(n,e){return I(e,149)?An(n.c,u(e,149).c):!1}function TX(n,e){var t;return t=0,n&&(t+=n.f.a/2),e&&(t+=e.f.a/2),t}function j$(n,e){var t;return t=u(xd(n.d,e),23),t||u(xd(n.e,e),23)}function gSn(n){this.b=n,ie.call(this,n),this.a=u(Rn(this.b.a,4),126)}function pSn(n){this.b=n,w2.call(this,n),this.a=u(Rn(this.b.a,4),126)}function Iu(n){return n.t||(n.t=new A6n(n),sm(new _9n(n),0,n.t)),n.t}function ude(){return sr(),A(M(e9,1),z,103,0,[mh,Ao,Zs,Jh,Yh])}function sde(){return qw(),A(M(c9,1),z,249,0,[Hl,Cy,Hhn,r9,qhn])}function ode(){return Ho(),A(M($1,1),z,175,0,[Xn,pi,Yf,Ya,D1])}function fde(){return P7(),A(M(gfn,1),z,316,0,[dfn,xK,wfn,LK,bfn])}function hde(){return bm(),A(M(Usn,1),z,315,0,[zsn,nK,eK,L6,N6])}function lde(){return Pa(),A(M(zcn,1),z,335,0,[f_,Gcn,h_,E6,j6])}function ade(){return g4(),A(M(eZn,1),z,355,0,[Ng,Ep,Q6,V6,J6])}function dde(){return Vw(),A(M(YWn,1),z,363,0,[SS,IS,OS,PS,AS])}function bde(){return Ss(),A(M(jun,1),z,163,0,[Qk,S6,xl,P6,Ub])}function T3(){T3=N;var n,e;cI=(Qp(),e=new fj,e),uI=(n=new BI,n)}function vSn(n){var e;return n.c||(e=n.r,I(e,88)&&(n.c=u(e,26))),n.c}function wde(n){return n.e=3,n.d=n.Yb(),n.e!=2?(n.e=0,!0):!1}function E$(n){var e,t,i;return e=n&Lu,t=n>>22&Lu,i=n<0?Wh:0,Bc(e,t,i)}function gde(n){var e,t,i,r;for(t=n,i=0,r=t.length;i0?g$n(n,e):BNn(n,-e)}function MX(n,e){return e==0||n.e==0?n:e>0?BNn(n,e):g$n(n,-e)}function ve(n){if(Se(n))return n.c=n.a,n.a.Pb();throw T(new ic)}function kSn(n){var e,t;return e=n.c.i,t=n.d.i,e.k==(Qn(),Xt)&&t.k==Xt}function C$(n){var e;return e=new Pd,Sr(e,n),H(e,(nn(),Tr),null),e}function T$(n,e,t){var i;return i=n.Yg(e),i>=0?n._g(i,t,!0):Yd(n,e,t)}function AX(n,e,t,i){var r;for(r=0;re)throw T(new vr(fY(n,e,"index")));return n}function M$(n,e,t,i){var r;return r=F(be,Le,25,e,15,1),Pve(r,n,e,t,i),r}function vde(n,e){var t;t=n.q.getHours()+(e/60|0),n.q.setMinutes(e),Sm(n,t)}function mde(n,e){return j.Math.min(al(e.a,n.d.d.c),al(e.b,n.d.d.c))}function O2(n,e){return mi(e)?e==null?MY(n.f,null):$On(n.g,e):MY(n.f,e)}function uf(n){this.c=n,this.a=new E(this.c.a),this.b=new E(this.c.b)}function TC(){this.e=new X,this.c=new X,this.d=new X,this.b=new X}function TSn(){this.g=new zq,this.b=new zq,this.a=new X,this.k=new X}function MSn(n,e,t){this.a=n,this.c=e,this.d=t,W(e.e,this),W(t.b,this)}function ASn(n,e){Hkn.call(this,e.rd(),e.qd()&-6),_n(n),this.a=n,this.b=e}function SSn(n,e){qkn.call(this,e.rd(),e.qd()&-6),_n(n),this.a=n,this.b=e}function FX(n,e){FO.call(this,e.rd(),e.qd()&-6),_n(n),this.a=n,this.b=e}function MC(n,e,t){this.a=n,this.b=e,this.c=t,W(n.t,this),W(e.i,this)}function AC(){this.b=new Ct,this.a=new Ct,this.b=new Ct,this.a=new Ct}function SC(){SC=N,Y6=new kt("org.eclipse.elk.labels.labelManager")}function PSn(){PSn=N,$cn=new ii("separateLayerConnections",(aT(),QR))}function No(){No=N,tw=new tz("REGULAR",0),Bl=new tz("CRITICAL",1)}function x8(){x8=N,uK=new YG("STACKED",0),iy=new YG("SEQUENCED",1)}function L8(){L8=N,FK=new oz("FIXED",0),IP=new oz("CENTER_NODE",1)}function kde(n,e){var t;return t=CEe(n,e),n.b=new tT(t.c.length),Lje(n,t)}function yde(n,e,t){var i;return++n.e,--n.f,i=u(n.d[e].$c(t),133),i.dd()}function ISn(n){var e;return n.a||(e=n.r,I(e,148)&&(n.a=u(e,148))),n.a}function xX(n){if(n.a){if(n.e)return xX(n.e)}else return n;return null}function jde(n,e){return n.pe.p?-1:0}function PC(n,e){return _n(e),n.c=0,"Initial capacity must not be negative")}function $Sn(){$Sn=N,Vzn=Fe((_o(),A(M(_b,1),z,232,0,[Zr,Fc,nc])))}function FSn(){FSn=N,Jzn=Fe((Cu(),A(M(Qzn,1),z,461,0,[Xf,Ol,Co])))}function xSn(){xSn=N,Zzn=Fe((Jc(),A(M(Yzn,1),z,462,0,[Wo,Dl,To])))}function LSn(){LSn=N,Bzn=Fe((hf(),A(M(Nu,1),z,132,0,[Win,hs,Rb])))}function NSn(){NSn=N,bWn=Fe((W5(),A(M(Krn,1),z,379,0,[NR,LR,BR])))}function BSn(){BSn=N,PWn=Fe((qd(),A(M(zrn,1),z,423,0,[yg,Grn,qR])))}function RSn(){RSn=N,oXn=Fe((F2(),A(M(Kcn,1),z,314,0,[ap,qk,_cn])))}function _Sn(){_Sn=N,fXn=Fe((VC(),A(M(qcn,1),z,337,0,[Hcn,DS,o_])))}function KSn(){KSn=N,dXn=Fe((ya(),A(M(aXn,1),z,450,0,[l_,cv,Tg])))}function HSn(){HSn=N,rXn=Fe((Kd(),A(M(YR,1),z,361,0,[g0,Fl,w0])))}function qSn(){qSn=N,yXn=Fe((Nh(),A(M(kXn,1),z,303,0,[zk,Ag,dp])))}function GSn(){GSn=N,mXn=Fe((q3(),A(M(y_,1),z,292,0,[m_,k_,Gk])))}function zSn(){zSn=N,RQn=Fe((im(),A(M(Gsn,1),z,378,0,[J_,qsn,oP])))}function USn(){USn=N,WQn=Fe((oT(),A(M(ion,1),z,375,0,[eon,cK,ton])))}function WSn(){WSn=N,qQn=Fe((Rh(),A(M(Zsn,1),z,339,0,[Nl,Ysn,tK])))}function XSn(){XSn=N,UQn=Fe((ur(),A(M(zQn,1),z,452,0,[B6,Au,xc])))}function VSn(){VSn=N,JQn=Fe((dT(),A(M(hon,1),z,377,0,[fK,pv,ew])))}function QSn(){QSn=N,VQn=Fe((Q3(),A(M(uon,1),z,336,0,[sK,con,R6])))}function JSn(){JSn=N,QQn=Fe((uT(),A(M(fon,1),z,338,0,[oon,oK,son])))}function YSn(){YSn=N,hJn=Fe((_d(),A(M(fJn,1),z,454,0,[ry,_6,aP])))}function ZSn(){ZSn=N,pYn=Fe((CT(),A(M(gYn,1),z,442,0,[CK,jK,EK])))}function nPn(){nPn=N,mYn=Fe((f7(),A(M(Fon,1),z,380,0,[CP,Don,$on])))}function ePn(){ePn=N,LYn=Fe((ET(),A(M(Yon,1),z,381,0,[Jon,IK,Qon])))}function tPn(){tPn=N,xYn=Fe((sT(),A(M(Xon,1),z,293,0,[PK,Won,Uon])))}function iPn(){iPn=N,iZn=Fe((w7(),A(M(OK,1),z,437,0,[AP,SP,PP])))}function rPn(){rPn=N,une=Fe((_h(),A(M(Khn,1),z,334,0,[HP,F1,i9])))}function cPn(){cPn=N,tne=Fe((sf(),A(M(Phn,1),z,272,0,[jv,cw,Ev])))}function Pde(){return Ti(),A(M(Ghn,1),z,98,0,[ql,jf,Tv,td,jh,Ac])}function wa(n,e){return!n.o&&(n.o=new Wu((Dc(),Ul),S0,n,0)),NF(n.o,e)}function Ide(n){return!n.g&&(n.g=new Qy),!n.g.d&&(n.g.d=new C6n(n)),n.g.d}function Ode(n){return!n.g&&(n.g=new Qy),!n.g.a&&(n.g.a=new T6n(n)),n.g.a}function Dde(n){return!n.g&&(n.g=new Qy),!n.g.b&&(n.g.b=new E6n(n)),n.g.b}function N8(n){return!n.g&&(n.g=new Qy),!n.g.c&&(n.g.c=new M6n(n)),n.g.c}function $de(n,e,t){var i,r;for(r=new H3(e,n),i=0;it||e=0?n._g(t,!0,!0):Yd(n,e,!0)}function Qde(n,e){return Zt(K(Y(k(n,(G(),k0)))),K(Y(k(e,k0))))}function aPn(){aPn=N,aYn=Xd(Xd(Dj(new hi,(c4(),q6)),(km(),pP)),aK)}function Jde(n,e,t){var i;return i=tDn(n,e,t),n.b=new tT(i.c.length),JY(n,i)}function Yde(n){if(n.b<=0)throw T(new ic);return--n.b,n.a-=n.c.c,Q(n.a)}function Zde(n){var e;if(!n.a)throw T(new gTn);return e=n.a,n.a=At(n.a),e}function n0e(n){for(;!n.a;)if(!nEn(n.c,new Xvn(n)))return!1;return!0}function $2(n){var e;return pe(n),I(n,198)?(e=u(n,198),e):new dvn(n)}function e0e(n){DC(),u(n.We((Xe(),rw)),174).Fc((Tu(),Ty)),n.Ye(eH,null)}function DC(){DC=N,SZn=new n2n,IZn=new e2n,PZn=Rwe((Xe(),eH),SZn,_l,IZn)}function $C(){$C=N,Ion=new sz("LEAF_NUMBER",0),TK=new sz("NODE_SIZE",1)}function t0e(n,e,t){n.a=e,n.c=t,n.b.a.$b(),_s(n.d),n.e.a.c=F(Zn,rn,1,0,5,1)}function $$(n){n.a=F(be,Le,25,n.b+1,15,1),n.c=F(be,Le,25,n.b,15,1),n.d=0}function i0e(n,e){n.a.ue(e.d,n.b)>0&&(W(n.c,new QU(e.c,e.d,n.d)),n.b=e.d)}function zX(n,e){if(n.g==null||e>=n.i)throw T(new xO(e,n.i));return n.g[e]}function dPn(n,e,t){if(W3(n,t),t!=null&&!n.wj(t))throw T(new xI);return t}function bPn(n){var e;if(n.Ek())for(e=n.i-1;e>=0;--e)D(n,e);return gX(n)}function r0e(n){var e,t;if(!n.b)return null;for(t=n.b;e=t.a[0];)t=e;return t}function c0e(n,e){var t,i;return LAn(e),t=(i=n.slice(0,e),WX(i,n)),t.length=e,t}function S3(n,e,t,i){var r;i=(Ow(),i||Lin),r=n.slice(e,t),hY(r,n,e,t,-e,i)}function Cs(n,e,t,i,r){return e<0?Yd(n,t,i):u(t,66).Nj().Pj(n,n.yh(),e,i,r)}function u0e(n){return I(n,172)?""+u(n,172).a:n==null?null:Lr(n)}function s0e(n){return I(n,172)?""+u(n,172).a:n==null?null:Lr(n)}function wPn(n,e){if(e.a)throw T(new _r(wKn));ri(n.a,e),e.a=n,!n.j&&(n.j=e)}function UX(n,e){FO.call(this,e.rd(),e.qd()&-16449),_n(n),this.a=n,this.c=e}function gPn(n,e){var t,i;return i=e/n.c.Hd().gc()|0,t=e%n.c.Hd().gc(),D2(n,i,t)}function Cu(){Cu=N,Xf=new oO(Y2,0),Ol=new oO(I4,1),Co=new oO(Z2,2)}function FC(){FC=N,vR=new Lj("All",0),qin=new lyn,Gin=new Eyn,zin=new ayn}function pPn(){pPn=N,Dzn=Fe((FC(),A(M(WA,1),z,297,0,[vR,qin,Gin,zin])))}function vPn(){vPn=N,EWn=Fe((G3(),A(M(jWn,1),z,405,0,[b0,Hb,Kb,kg])))}function mPn(){mPn=N,CUn=Fe((Hd(),A(M(EUn,1),z,406,0,[Ok,Ik,MR,AR])))}function kPn(){kPn=N,MUn=Fe((K2(),A(M(TUn,1),z,323,0,[$k,Dk,Fk,xk])))}function yPn(){yPn=N,PUn=Fe((dm(),A(M(SUn,1),z,394,0,[Lk,YA,ZA,Nk])))}function jPn(){jPn=N,WJn=Fe((c4(),A(M(won,1),z,393,0,[gP,q6,uy,G6])))}function EPn(){EPn=N,HWn=Fe((aT(),A(M(KWn,1),z,360,0,[QR,TS,MS,Hk])))}function CPn(){CPn=N,FYn=Fe((qT(),A(M(zon,1),z,340,0,[SK,qon,Gon,Hon])))}function TPn(){TPn=N,JWn=Fe((ff(),A(M(QWn,1),z,411,0,[lp,nv,ev,JR])))}function MPn(){MPn=N,_Qn=Fe((wb(),A(M(Z_,1),z,197,0,[fP,Y_,xg,Fg])))}function APn(){APn=N,Ene=Fe((Xu(),A(M(jne,1),z,396,0,[ws,Yhn,Jhn,Zhn])))}function SPn(){SPn=N,one=Fe((cs(),A(M(sne,1),z,285,0,[Ey,kh,Kl,jy])))}function PPn(){PPn=N,ine=Fe((Hh(),A(M(cH,1),z,218,0,[rH,yy,Cv,Sp])))}function IPn(){IPn=N,kne=Fe((AT(),A(M(Qhn,1),z,311,0,[oH,Whn,Vhn,Xhn])))}function OPn(){OPn=N,vne=Fe((Vu(),A(M(o9,1),z,374,0,[Ay,id,My,uw])))}function DPn(){DPn=N,mM(),F1n=Ft,Tee=Vt,x1n=new S9(Ft),Mee=new S9(Vt)}function K8(){K8=N,Vcn=new VG(Xh,0),xS=new VG("IMPROVE_STRAIGHTNESS",1)}function o0e(n,e){return h3(),W(n,new Pi(e,Q(e.e.c.length+e.g.c.length)))}function f0e(n,e){return h3(),W(n,new Pi(e,Q(e.e.c.length+e.g.c.length)))}function WX(n,e){return U8(e)!=10&&A(Du(e),e.hm,e.__elementTypeId$,U8(e),n),n}function Qc(n,e){var t;return t=Fr(n,e,0),t==-1?!1:(h1(n,t),!0)}function $Pn(n,e){var t;return t=u(O2(n.e,e),387),t?(ZU(t),t.e):null}function P3(n){var e;return $r(n)&&(e=0-n,!isNaN(e))?e:bl(z3(n))}function Fr(n,e,t){for(;t=0?BT(n,t,!0,!0):Yd(n,e,!0)}function YX(n,e){Qv();var t,i;return t=S2(n),i=S2(e),!!t&&!!i&&!V$n(t.k,i.k)}function a0e(n,e){Zc(n,e==null||jE((_n(e),e))||isNaN((_n(e),e))?0:(_n(e),e))}function d0e(n,e){nu(n,e==null||jE((_n(e),e))||isNaN((_n(e),e))?0:(_n(e),e))}function b0e(n,e){Rd(n,e==null||jE((_n(e),e))||isNaN((_n(e),e))?0:(_n(e),e))}function w0e(n,e){Bd(n,e==null||jE((_n(e),e))||isNaN((_n(e),e))?0:(_n(e),e))}function BPn(n){(this.q?this.q:(Pn(),Pn(),ph)).Ac(n.q?n.q:(Pn(),Pn(),ph))}function g0e(n,e){return I(e,99)&&u(e,18).Bb&Yi?new LO(e,n):new H3(e,n)}function p0e(n,e){return I(e,99)&&u(e,18).Bb&Yi?new LO(e,n):new H3(e,n)}function RPn(n,e){vrn=new Wy,AUn=e,g6=n,u(g6.b,65),BX(g6,vrn,null),DRn(g6)}function B$(n,e,t){var i;return i=n.g[e],k5(n,e,n.oi(e,t)),n.gi(e,t,i),n.ci(),i}function BC(n,e){var t;return t=n.Xc(e),t>=0?(n.$c(t),!0):!1}function R$(n){var e;return n.d!=n.r&&(e=qs(n),n.e=!!e&&e.Cj()==kGn,n.d=e),n.e}function _$(n,e){var t;for(pe(n),pe(e),t=!1;e.Ob();)t=t|n.Fc(e.Pb());return t}function xd(n,e){var t;return t=u(te(n.e,e),387),t?(Oyn(n,t),t.e):null}function _Pn(n){var e,t;return e=n/60|0,t=n%60,t==0?""+e:""+e+":"+(""+t)}function qr(n,e){var t,i;return Ta(n),i=new FX(e,n.a),t=new iEn(i),new $n(n,t)}function ub(n,e){var t=n.a[e],i=(cF(),dR)[typeof t];return i?i(t):tQ(typeof t)}function v0e(n){switch(n.g){case 0:return nt;case 1:return-1;default:return 0}}function m0e(n){return mJ(n,(I3(),pin))<0?-xce(z3(n)):n.l+n.m*J2+n.h*$a}function U8(n){return n.__elementTypeCategory$==null?10:n.__elementTypeCategory$}function K$(n){var e;return e=n.b.c.length==0?null:un(n.b,0),e!=null&&J$(n,0),e}function KPn(n,e){for(;e[0]