{"version":3,"file":"tikz-B5yNR22o.cjs","names":[],"sources":["../package/tikz/libs/tikz-command-argument-parser.ts","../package/tikz/provides.ts","../package/tikz/libs/print-raw.ts","../package/tikz/libs/parser.ts"],"sourcesContent":["import { arg } from \"@unified-latex/unified-latex-builder\";\nimport * as Ast from \"@unified-latex/unified-latex-types\";\nimport {\n    ArgSpecAst as ArgSpec,\n    parse as parseArgspec,\n} from \"@unified-latex/unified-latex-util-argspec\";\nimport { Argument, ArgumentParser } from \"@unified-latex/unified-latex-types\";\nimport { gobbleSingleArgument } from \"@unified-latex/unified-latex-util-arguments\";\nimport { match } from \"@unified-latex/unified-latex-util-match\";\nimport { scan } from \"@unified-latex/unified-latex-util-scan\";\nimport { trim } from \"@unified-latex/unified-latex-util-trim\";\nimport { printRaw } from \"@unified-latex/unified-latex-util-print-raw\";\n\nconst OPTIONAL_ARGUMENT_ARG_SPEC = parseArgspec(\"o\")[0];\n\nfunction blankArg() {\n    return arg([], { openMark: \"\", closeMark: \"\" });\n}\n\n/**\n * Find the arguments of a tikz command. Many tikz commands accept either\n * the a group as their only argument, or they scan their arguments until the first\n * `;` is found.\n *\n * This behavior cannot be achieved via a standard xparse spec.\n */\nexport const tikzCommandArgumentParser: ArgumentParser = (nodes, startPos) => {\n    const origStartPos = startPos;\n    let pos = startPos;\n    let nodesRemoved = 0;\n\n    const cursorPosAfterAnimations = eatAllAnimationSpecs(nodes, pos);\n    let animationArg = blankArg();\n    if (cursorPosAfterAnimations !== pos) {\n        const argContent = nodes.splice(pos, cursorPosAfterAnimations - pos);\n        trim(argContent);\n        animationArg = arg(argContent, {\n            openMark: \" \",\n            closeMark: \" \",\n        });\n    }\n    nodesRemoved += cursorPosAfterAnimations - pos;\n\n    const {\n        argument: _optionalArgument,\n        nodesRemoved: optionalArgumentNodesRemoved,\n    } = gobbleSingleArgument(nodes, OPTIONAL_ARGUMENT_ARG_SPEC, pos) as {\n        argument: Argument;\n        nodesRemoved: number;\n    };\n    nodesRemoved += optionalArgumentNodesRemoved;\n    const optionalArg = _optionalArgument || blankArg();\n\n    // Eat whitespace\n    while (match.whitespace(nodes[pos])) {\n        pos++;\n    }\n    const firstNode = nodes[pos];\n\n    // If we're past the end of the array, give up.\n    if (!firstNode) {\n        return {\n            args: [animationArg, optionalArg, blankArg()],\n            nodesRemoved: 0,\n        };\n    }\n\n    // If we're a group, grab the contents and call it good.\n    if (match.group(firstNode)) {\n        const args = [animationArg, optionalArg, arg(firstNode.content)];\n        nodes.splice(origStartPos, pos - origStartPos + 1);\n        return { args, nodesRemoved: pos - origStartPos + 1 + nodesRemoved };\n    }\n\n    // No group, so scan for a semicolon.\n    const semicolonPosition = scan(nodes, \";\", { startIndex: pos });\n    if (semicolonPosition != null) {\n        const argNodes = nodes.splice(\n            origStartPos,\n            semicolonPosition - origStartPos + 1\n        );\n        trim(argNodes);\n        const args = [animationArg, optionalArg, arg(argNodes)];\n        return {\n            args,\n            nodesRemoved: origStartPos - semicolonPosition + 1 + nodesRemoved,\n        };\n    }\n\n    // If there was no semicolon, give up.\n    return {\n        args: [animationArg, optionalArg, blankArg()],\n        nodesRemoved: 0,\n    };\n};\n\n/**\n * Find the next index after all animation specs. If no animation specs are present,\n * return `startPos`.\n *\n * An animation spec looks like\n * ```\n * :rotate = { 0s=\"0\", 2s=\"90\", begin on=click }\n * ```\n * Any number can be listed. They start with a colon and have an equals sign followed by a group.\n */\nfunction eatAllAnimationSpecs(nodes: Ast.Node[], startPos: number): number {\n    const colonPos = scan(nodes, \":\", {\n        startIndex: startPos,\n        allowSubstringMatches: true,\n        onlySkipWhitespaceAndComments: true,\n    });\n\n    if (!colonPos) {\n        return startPos;\n    }\n\n    let lastMatchPos = startPos;\n    let i = colonPos + 1;\n    for (; i < nodes.length; i++) {\n        const node = nodes[i];\n        if (match.string(node, \"[\")) {\n            // XXX As per the tikz manual, we stop scanning if we find an open square brace.\n            break;\n        }\n        if (match.string(node, \"=\")) {\n            i++;\n            // Look for a group next\n            while (match.whitespace(nodes[i]) || match.comment(nodes[i])) {\n                i++;\n            }\n            if (!match.group(nodes[i])) {\n                break;\n            }\n            // We have a match!\n            lastMatchPos = i + 1;\n\n            // Start the process again\n            const colonPos = scan(nodes, \":\", {\n                startIndex: lastMatchPos,\n                allowSubstringMatches: true,\n                onlySkipWhitespaceAndComments: true,\n            });\n            if (colonPos == null) {\n                break;\n            }\n            i = colonPos + 1;\n        }\n    }\n\n    return lastMatchPos;\n}\n","import {\n    MacroInfoRecord,\n    EnvInfoRecord,\n} from \"@unified-latex/unified-latex-types\";\nimport * as Ast from \"@unified-latex/unified-latex-types\";\nimport { attachMacroArgsInArray } from \"@unified-latex/unified-latex-util-arguments\";\nimport { tikzCommandArgumentParser } from \"./libs/tikz-command-argument-parser\";\n\nexport const macros: MacroInfoRecord = {\n    pgfkeys: {\n        signature: \"m\",\n        renderInfo: { breakAround: true, pgfkeysArgs: true },\n    },\n    tikzoption: {\n        signature: \"m\",\n        renderInfo: { breakAround: true, pgfkeysArgs: true },\n    },\n    tikzstyle: {\n        signature: \"m\",\n        renderInfo: { breakAround: true, pgfkeysArgs: true },\n    },\n    usetikzlibrary: {\n        signature: \"m\",\n        renderInfo: { breakAround: true, pgfkeysArgs: true },\n    },\n    usepgfmodule: { signature: \"m\", renderInfo: { pgfkeysArgs: true } },\n    usepgflibrary: { signature: \"m\", renderInfo: { pgfkeysArgs: true } },\n    pgfplotsset: {\n        signature: \"m\",\n        renderInfo: { breakAround: true, pgfkeysArgs: true },\n    },\n    pgfplotstabletypeset: {\n        signature: \"o m\",\n        renderInfo: { breakAround: true, pgfkeysArgs: true },\n    },\n    tikz: {\n        signature: \"o o m\",\n        argumentParser: tikzCommandArgumentParser,\n        renderInfo: { namedArguments: [\"animation\", \"options\", \"command\"] },\n    },\n};\n\nexport const environments: EnvInfoRecord = {\n    tikzpicture: {\n        signature: \"o\",\n        renderInfo: { pgfkeysArgs: true, tikzEnvironment: true },\n        processContent: processTikzEnvironmentContent,\n    },\n    axis: {\n        signature: \"o\",\n        renderInfo: { pgfkeysArgs: true, tikzEnvironment: true },\n        processContent: processTikzEnvironmentContent,\n    },\n    scope: {\n        signature: \"o\",\n        renderInfo: { pgfkeysArgs: true, tikzEnvironment: true },\n        processContent: processTikzEnvironmentContent,\n    },\n    pgfonlayer: {\n        signature: \"m\",\n        renderInfo: { tikzEnvironment: true },\n        processContent: processTikzEnvironmentContent,\n    },\n    pgflowlevelscope: {\n        signature: \"m\",\n        renderInfo: { tikzEnvironment: true },\n        processContent: processTikzEnvironmentContent,\n    },\n    pgfviewboxscope: {\n        signature: \"m m m m m\",\n        renderInfo: { tikzEnvironment: true },\n        processContent: processTikzEnvironmentContent,\n    },\n    pgftransparencygroup: {\n        signature: \"o\",\n        renderInfo: { pgfkeysArgs: true, tikzEnvironment: true },\n        processContent: processTikzEnvironmentContent,\n    },\n    behindforegroundpath: {\n        signature: \"m\",\n        processContent: processTikzEnvironmentContent,\n    },\n    pgfmetadecoration: {\n        signature: \"m\",\n        processContent: processTikzEnvironmentContent,\n    },\n    colormixin: { signature: \"m\", renderInfo: { pgfkeysArgs: true } },\n};\n\n/**\n * Attach macro arguments for all macros that are only available within a tikz environment.\n */\nfunction processTikzEnvironmentContent(nodes: Ast.Node[]): Ast.Node[] {\n    attachMacroArgsInArray(nodes, conditionalMacros);\n    return nodes;\n}\n\n/**\n * Macros that are only parsed inside a tikz environment.\n */\nexport const conditionalMacros: MacroInfoRecord = {\n    pgfextra: { signature: \"m\" },\n    beginpgfgraphicnamed: { signature: \"m\" },\n    pgfrealjobname: { signature: \"m\" },\n    pgfplotstreampoint: { signature: \"m\" },\n    pgfplotstreampointoutlier: { signature: \"m\" },\n    pgfplotstreamspecial: { signature: \"m\" },\n    pgfplotxyfile: { signature: \"m\" },\n    pgfplotxyzfile: { signature: \"m\" },\n    pgfplotfunction: { signature: \"mmm\" },\n    pgfplotgnuplot: { signature: \"o m\" },\n    pgfplothandlerrecord: { signature: \"m\" },\n    pgfdeclareplothandler: { signature: \"m m m\" },\n    pgfdeclarelayer: { signature: \"m\" },\n    pgfsetlayers: { signature: \"m\", renderInfo: { pgfkeysArgs: true } },\n    pgfonlayer: { signature: \"m\" },\n    startpgfonlayer: { signature: \"m\" },\n    pgfdeclarehorizontalshading: { signature: \"o m m m \" },\n    pgfdeclareradialshading: { signature: \"o m m m\" },\n    pgfdeclarefunctionalshading: { signature: \"o m m m m m\" },\n    pgfshadecolortorgb: { signature: \"m m\" },\n    pgfshadecolortocmyk: { signature: \"m m\" },\n    pgfshadecolortogray: { signature: \"m m\" },\n    pgfuseshading: { signature: \"m\" },\n    pgfshadepath: { signature: \"m m\" },\n    pgfsetadditionalshadetransform: { signature: \"m\" },\n    pgfsetstrokeopacity: { signature: \"m\" },\n    pgfsetfillopacity: { signature: \"m\" },\n    pgfsetblendmode: { signature: \"m\" },\n    pgfdeclarefading: { signature: \"m m\" },\n    pgfsetfading: { signature: \"m m\" },\n    pgfsetfadingforcurrentpath: { signature: \"m m\" },\n    pgfsetfadingforcurrentpathstroked: { signature: \"m m\" },\n    pgfanimateattribute: { signature: \"m m\" },\n    pgfsnapshot: { signature: \"m\" },\n    pgfqpoint: { signature: \"m m\" },\n    pgfqpointxy: { signature: \"m m\" },\n    pgfqpointxyz: { signature: \"m m m\" },\n    pgfqpointscale: { signature: \"m m\" },\n    pgfpathqmoveto: { signature: \"m m\" },\n    pgfpathqlineto: { signature: \"m m\" },\n    pgfpathqcurveto: { signature: \"m m m m m m\" },\n    pgfpathqcircle: { signature: \"m\" },\n    pgfqbox: { signature: \"m\" },\n    pgfqboxsynced: { signature: \"m\" },\n    pgfaliasimage: { signature: \"m m\" },\n    pgfuseimage: { signature: \"m\" },\n    pgfimage: { signature: \"o m\", renderInfo: { pgfkeysArgs: true } },\n    pgfdeclaremask: { signature: \"o m m\", renderInfo: { pgfkeysArgs: true } },\n    pgfdeclarepatternformonly: { signature: \"o m m m m m\" },\n    pgfdeclarepatterninherentlycolored: { signature: \"o m m m m m\" },\n    pgfsetfillpattern: { signature: \"m m\" },\n    // Coordinate canvas and nonlinear transformations\n    pgftransformshift: { signature: \"m\" },\n    pgftransformxshift: { signature: \"m\" },\n    pgftransformyshift: { signature: \"m\" },\n    pgftransformscale: { signature: \"m\" },\n    pgftransformxscale: { signature: \"m\" },\n    pgftransformyscale: { signature: \"m\" },\n    pgftransformxslant: { signature: \"m\" },\n    pgftransformyslant: { signature: \"m\" },\n    pgftransformrotate: { signature: \"m\" },\n    pgftransformtriangle: { signature: \"m m m\" },\n    pgftransformcm: { signature: \"m m m m m\" },\n    pgftransformarrow: { signature: \"m m\" },\n    pgftransformlineattime: { signature: \"m m m\" },\n    pgftransformcurveattime: { signature: \"m m m m m\" },\n    pgftransformarcaxesattime: { signature: \"m m m m m m\" },\n    pgfgettransform: { signature: \"m\" },\n    pgfsettransform: { signature: \"m\" },\n    pgfgettransformentries: { signature: \"m m m m m m\" },\n    pgfsettransformentries: { signature: \"m m m m m m\" },\n    pgfpointtransformed: { signature: \"m\" },\n    pgflowlevel: { signature: \"m\" },\n    pgflowlevelobj: { signature: \"m m\" },\n    pgflowlevelscope: { signature: \"m\" },\n    startpgflowlevelscope: { signature: \"m\" },\n    pgfviewboxscope: { signature: \"m m m m m\" },\n    startpgfviewboxscope: { signature: \"m m m m m\" },\n    pgftransformnonlinear: { signature: \"m\" },\n    pgfpointtransformednonlinear: { signature: \"m\" },\n    pgfsetcurvilinearbeziercurve: { signature: \"m m m m\" },\n    pgfcurvilineardistancetotime: { signature: \"m\" },\n    pgfpointcurvilinearbezierorthogonal: { signature: \"m m\" },\n    pgfpointcurvilinearbezierpolar: { signature: \"m m\" },\n    // Matrices\n    pgfmatrix: { signature: \"m m m m m m m\" },\n    pgfsetmatrixcolumnsep: { signature: \"m\" },\n    pgfmatrixnextcell: { signature: \"o\" },\n    pgfsetmatrixrowsep: { signature: \"m\" },\n    pgfmatrixendrow: { signature: \"o\" },\n    // Nodes and shapes\n    pgfnode: { signature: \"m m m m m\" },\n    pgfmultipartnode: { signature: \"m m m m\" },\n    pgfcoordinate: { signature: \"m m\" },\n    pgfnodealias: { signature: \"m m\" },\n    pgfnoderename: { signature: \"m m\" },\n    pgfpositionnodelater: { signature: \"m\" },\n    pgfpositionnodenow: { signature: \"m\" },\n    pgfnodepostsetupcode: { signature: \"m m\" },\n    pgfpointanchor: { signature: \"m m\" },\n    pgfpointshapeborder: { signature: \"m m\" },\n    pgfdeclareshape: { signature: \"m m\" },\n    saveddimen: { signature: \"m m\" },\n    savedmacro: { signature: \" m\" },\n    anchor: { signature: \"m m\" },\n    deferredanchor: { signature: \"m m\" },\n    anchorborder: { signature: \"m\" },\n    backgroundpath: { signature: \"m\" },\n    foregroundpath: { signature: \"m\" },\n    behindbackgroundpath: { signature: \"m\" },\n    beforebackgroundpath: { signature: \"m\" },\n    beforeforegroundpath: { signature: \"m\" },\n    behindforegroundpath: { signature: \"m\" },\n    // Arrows\n    pgfdeclarearrow: { signature: \"m\" },\n    pgfarrowssettipend: { signature: \"m\" },\n    pgfarrowssetbackend: { signature: \"m\" },\n    pgfarrowssetlineend: { signature: \"m\" },\n    pgfarrowssetvisualbackend: { signature: \"m\" },\n    pgfarrowssetvisualtipend: { signature: \"m\" },\n    pgfarrowshullpoint: { signature: \"m m\" },\n    pgfarrowsupperhullpoint: { signature: \"m m\" },\n    pgfarrowssave: { signature: \"m\" },\n    pgfarrowssavethe: { signature: \"m\" },\n    pgfarrowsaddtooptions: { signature: \"m\" },\n    pgfarrowsaddtolateoptions: { signature: \"m\" },\n    pgfarrowsaddtolengthscalelist: { signature: \"m\" },\n    pgfarrowsaddtowidthscalelist: { signature: \"m\" },\n    pgfarrowsthreeparameters: { signature: \"m\" },\n    pgfarrowslinewidthdependent: { signature: \"m m m\" },\n    pgfarrowslengthdependent: { signature: \"m\" },\n    // Path\n    pgfusepath: { signature: \"m\" },\n    pgfsetlinewidth: { signature: \"m\" },\n    pgfsetmiterlimit: { signature: \"m\" },\n    pgfsetdash: { signature: \"m m\" },\n    pgfsetstrokecolor: { signature: \"m\" },\n    pgfsetcolor: { signature: \"m\" },\n    pgfsetinnerlinewidth: { signature: \"m\" },\n    pgfsetinnerstrokecolor: { signature: \"m\" },\n    pgfsetarrowsstart: { signature: \"m\" },\n    pgfsetarrowsend: { signature: \"m\" },\n    pgfsetarrows: { signature: \"m\" },\n    pgfsetshortenstart: { signature: \"m\" },\n    pgfsetshortenend: { signature: \"m\" },\n    pgfsetfillcolor: { signature: \"m\" },\n    // Decorations\n    pgfdeclaredecoration: { signature: \"m m m\" },\n    state: { signature: \"m o m\" },\n    pgfdecoratepath: { signature: \"m m\" },\n    startpgfdecoration: { signature: \"m\" },\n    pgfdecoration: { signature: \"m\" },\n    pgfdecoratecurrentpath: { signature: \"m\" },\n    pgfsetdecorationsegmenttransformation: { signature: \"m\" },\n    pgfdeclaremetadecorate: { signature: \"m m m\" },\n    pgfmetadecoration: { signature: \"m\" },\n    startpgfmetadecoration: { signature: \"m\" },\n    // Constructing paths\n    pgfpathmoveto: { signature: \"m\" },\n    pgfpathlineto: { signature: \"m\" },\n    pgfpathcurveto: { signature: \"m m m\" },\n    pgfpathquadraticcurveto: { signature: \"m m\" },\n    pgfpathcurvebetweentime: { signature: \"m m m m m m\" },\n    pgfpathcurvebetweentimecontinue: { signature: \"m m m m m m\" },\n    pgfpatharc: { signature: \"m m m\" },\n    pgfpatharcaxes: { signature: \"m m m m\" },\n    pgfpatharcto: { signature: \"m m m m m m\" },\n    pgfpatharctoprecomputed: { signature: \"m m m m m m m m\" },\n    pgfpathellipse: { signature: \"m m m\" },\n    pgfpathcircle: { signature: \"m m\" },\n    pgfpathrectangle: { signature: \"m m\" },\n    pgfpathrectanglecorners: { signature: \"m m\" },\n    pgfpathgrid: { signature: \" o m m\" },\n    pgfpathparabola: { signature: \"m m\" },\n    pgfpathsine: { signature: \"m\" },\n    pgfpathcosine: { signature: \"m\" },\n    pgfsetcornersarced: { signature: \"m\" },\n    \"pgf@protocolsizes\": { signature: \"m m\" },\n    // Specifying coordinates\n    pgfpoint: { signature: \"m m\" },\n    pgfpointpolar: { signature: \"m m m\" },\n    pgfpointxy: { signature: \"m m\" },\n    pgfsetxvec: { signature: \"m\" },\n    pgfsetyvec: { signature: \"m\" },\n    pgfpointpolarxy: { signature: \"m m\" },\n    pgfpointxyz: { signature: \"m m m\" },\n    pgfsetzvec: { signature: \"m\" },\n    pgfpointcylindrical: { signature: \"m m m\" },\n    pgfpointspherical: { signature: \"m m m\" },\n    pgfpointadd: { signature: \"m m\" },\n    pgfpointscale: { signature: \"m m\" },\n    pgfpointdiff: { signature: \"m m\" },\n    pgfpointnormalised: { signature: \"m\" },\n    pgfpointlineattime: { signature: \"m m m\" },\n    pgfpointlineatdistance: { signature: \"m m m\" },\n    pgfpointarcaxesattime: { signature: \"m m m m m m\" },\n    pgfpointcurveattime: { signature: \"m m m m m\" },\n    pgfpointborderrectangle: { signature: \"m m\" },\n    pgfpointborderellipse: { signature: \"m m\" },\n    pgfpointintersectionoflines: { signature: \"m m m m\" },\n    pgfpointintersectionofcircles: { signature: \"m m m m m\" },\n    pgfintersectionofpaths: { signature: \"m m\" },\n    pgfpointintersectionsolution: { signature: \"m\" },\n    pgfextractx: { signature: \"m m\" },\n    pgfextracty: { signature: \"m m\" },\n    pgfgetlastxy: { signature: \"m m\" },\n    \"pgf@process\": { signature: \"m\" },\n    // Heirarchical structres ...\n    pgfsetbaseline: { signature: \"m\" },\n    pgfsetbaselinepointnow: { signature: \"m\" },\n    pgfsetbaselinepointlater: { signature: \"m\" },\n    pgftext: { signature: \"o m\", renderInfo: { pgfkeysArgs: true } },\n    pgfuseid: { signature: \"m\" },\n    pgfusetype: { signature: \"m\" },\n    pgfidrefnextuse: { signature: \"m m\" },\n    pgfidrefprevuse: { signature: \"m m\" },\n    pgfaliasid: { signature: \"m m\" },\n    pgfgaliasid: { signature: \"m m\" },\n    pgfifidreferenced: { signature: \"m m m\" },\n    pgfrdfabout: { signature: \"m\" },\n    pgfrdfcontent: { signature: \"m\" },\n    pgfrdfdatatype: { signature: \"m\" },\n    pgfrdfhref: { signature: \"m\" },\n    pgfrdfprefix: { signature: \"m\" },\n    pgfrdfproperty: { signature: \"m\" },\n    pgfrdfrel: { signature: \"m\" },\n    pgfrdfresource: { signature: \"m\" },\n    pgfrdfrev: { signature: \"m\" },\n    pgfrdfsrc: { signature: \"m\" },\n    pgfrdftypeof: { signature: \"m\" },\n    pgfrdfvocab: { signature: \"m\" },\n    pgferror: { signature: \"m\" },\n    pgfwarning: { signature: \"m\" },\n    path: {\n        signature: \"u;\",\n        renderInfo: { breakAround: true, tikzPathCommand: true },\n    },\n    draw: {\n        signature: \"u;\",\n        renderInfo: { breakAround: true, tikzPathCommand: true },\n    },\n    fill: {\n        signature: \"u;\",\n        renderInfo: { breakAround: true, tikzPathCommand: true },\n    },\n    filldraw: {\n        signature: \"u;\",\n        renderInfo: { breakAround: true, tikzPathCommand: true },\n    },\n    pattern: {\n        signature: \"u;\",\n        renderInfo: { breakAround: true, tikzPathCommand: true },\n    },\n    shade: {\n        signature: \"u;\",\n        renderInfo: { breakAround: true, tikzPathCommand: true },\n    },\n    clip: {\n        signature: \"u;\",\n        renderInfo: { breakAround: true, tikzPathCommand: true },\n    },\n    useasboundingbox: {\n        signature: \"u;\",\n        renderInfo: { breakAround: true, tikzPathCommand: true },\n    },\n    node: {\n        signature: \"u;\",\n        renderInfo: { breakAround: true, tikzPathCommand: true },\n    },\n    coordinate: {\n        signature: \"u;\",\n        renderInfo: { breakAround: true, tikzPathCommand: true },\n    },\n    graph: {\n        signature: \"u;\",\n        renderInfo: { breakAround: true, tikzPathCommand: true },\n    },\n    scoped: {\n        signature: \"o o m\",\n        argumentParser: tikzCommandArgumentParser,\n        renderInfo: {\n            namedArguments: [\"animation\", \"options\", \"command\"],\n            breakAround: true,\n        },\n    },\n};\n","import { printRaw as latexPrintRaw } from \"@unified-latex/unified-latex-util-print-raw\";\nimport { trim } from \"@unified-latex/unified-latex-util-trim\";\nimport * as TikzSpec from \"./types\";\n\n/**\n * Print an `systeme` argument specification AST to a string.\n */\nexport function printRaw(node: TikzSpec.Ast, root = false): string {\n    if (typeof node === \"string\") {\n        return node;\n    }\n\n    if (Array.isArray(node)) {\n        const sepToken = root ? \" \" : \"\";\n        const printed: string[] = [];\n        for (let i = 0; i < node.length; i++) {\n            const tok = node[i];\n            const prevTok = node[i - 1];\n            if (!prevTok) {\n                printed.push(printRaw(tok));\n                continue;\n            }\n            if (prevTok.type === \"comment\") {\n                printed.push(printRaw(tok));\n                continue;\n            }\n            if (tok.type !== \"comment\") {\n                printed.push(sepToken);\n            }\n            printed.push(printRaw(tok));\n        }\n        return printed.join(\"\");\n    }\n    const type = node.type;\n\n    switch (type) {\n        case \"path_spec\":\n            return printRaw(node.content, (root = true));\n        case \"coordinate\":\n            return `${latexPrintRaw(node.prefix)}(${latexPrintRaw(\n                node.content\n            )})`;\n        case \"operation\":\n            return latexPrintRaw(node.content);\n        case \"comment\":\n            return latexPrintRaw(node);\n        case \"line_to\":\n            return node.command;\n        case \"curve_to\": {\n            const comments = node.comments\n                .map((c) => latexPrintRaw({ ...c, leadingWhitespace: false }))\n                .join(\"\");\n            if (node.controls.length === 1) {\n                return `${comments}.. controls ${printRaw(\n                    node.controls[0]\n                )} ..`;\n            } else {\n                return `${comments}.. controls ${printRaw(\n                    node.controls[0]\n                )} and ${printRaw(node.controls[1])} ..`;\n            }\n        }\n        case \"unknown\":\n            return latexPrintRaw(node.content);\n        case \"square_brace_group\":\n            return `[${latexPrintRaw(node.content)}]`;\n        case \"foreach\": {\n            const comments = node.comments\n                .map((c) => latexPrintRaw({ ...c, leadingWhitespace: false }))\n                .join(\"\");\n            let options = \"\";\n            if (node.options) {\n                options = ` [${latexPrintRaw(node.options)}]`;\n            }\n            const start = latexPrintRaw(node.start);\n            const variables = [...node.variables];\n            trim(variables);\n            let printedVariables = latexPrintRaw(variables);\n            // It is possible that the variables are specified as `[var=\\p]`, in the optional argument, instead of as `\\p`\n            // In this case, `node.variables` will be empty and we don't want an extra space showing up.\n            if (printedVariables.length > 0) {\n                printedVariables = \" \" + printedVariables;\n            }\n\n            const command =\n                node.command.type === \"foreach\"\n                    ? printRaw(node.command)\n                    : latexPrintRaw(node.command);\n\n            return `${comments}${start}${printedVariables}${options} in ${latexPrintRaw(\n                node.list\n            )} ${command}`;\n        }\n        case \"svg_operation\": {\n            const comments = node.comments\n                .map((c) => latexPrintRaw({ ...c, leadingWhitespace: false }))\n                .join(\"\");\n            let options = \"\";\n            if (node.options) {\n                options = `[${latexPrintRaw(node.options)}]`;\n            }\n\n            return `${comments}svg${options} ${latexPrintRaw(node.content)}`;\n        }\n        case \"animation\": {\n            const comments = node.comments\n                .map((c) => latexPrintRaw({ ...c, leadingWhitespace: false }))\n                .join(\"\");\n\n            return `${comments}:${node.attribute} = {${latexPrintRaw(\n                node.content\n            )}}`;\n        }\n\n        default:\n            const unprintedType: void = type;\n            console.warn(`Unknown node type \"${unprintedType}\" for node`, node);\n            return \"\";\n    }\n}\n","import * as Ast from \"@unified-latex/unified-latex-types\";\nimport * as TikzSpec from \"./types\";\nimport { match } from \"@unified-latex/unified-latex-util-match\";\nimport { decorateArrayForPegjs } from \"@unified-latex/unified-latex-util-pegjs\";\nimport { TikzPegParser } from \"@unified-latex/unified-latex-util-pegjs\";\n\ntype TikzParseOptions = {\n    startRule?: \"path_spec\" | \"foreach_body\";\n};\n\nfunction createMatchers() {\n    return {\n        isChar: match.string,\n        isTerminal: (node: any) => match.string(node, \";\"),\n        isOperation: (node: any) =>\n            match.anyString(node) && node.content.match(/[a-zA-Z]/),\n        isWhitespace: (node: any) =>\n            match.whitespace(node) || match.parbreak(node),\n        isComment: match.comment,\n        isGroup: match.group,\n        isMacro: match.macro,\n        isAnyMacro: match.anyMacro,\n    };\n}\n\nconst matchers = createMatchers();\n\n/**\n * Parse the contents of the `\\systeme{...}` macro\n */\nexport function parse<Options extends TikzParseOptions>(\n    ast: Ast.Node[],\n    options?: Options\n): Options extends { startRule: infer R }\n    ? R extends \"path_spec\"\n        ? TikzSpec.PathSpec\n        : TikzSpec.ForeachBody\n    : TikzSpec.PathSpec {\n    const { startRule = \"path_spec\" } = options || {};\n    if (!Array.isArray(ast)) {\n        throw new Error(\"You must pass an array of nodes\");\n    }\n    // We need to at functions to `nodes` so that it imitates\n    // a Javascript string. Because we're mutating, make a copy first\n    ast = decorateArrayForPegjs([...ast]);\n    // matchers are passed in via the second argument (the `options` argument)\n    // so they are available from within the Pegjs grammar.\n    return TikzPegParser.parse(ast, {\n        ...matchers,\n        startRule,\n    });\n}\n"],"mappings":";;;;;;;;;;AAaA,IAAM,8BAAA,GAAA,0CAAA,OAA0C,IAAI,CAAC;AAErD,SAAS,WAAW;AAChB,SAAA,GAAA,qCAAA,KAAW,EAAE,EAAE;EAAE,UAAU;EAAI,WAAW;EAAI,CAAC;;;;;;;;;AAUnD,IAAa,6BAA6C,OAAO,aAAa;CAC1E,MAAM,eAAe;CACrB,IAAI,MAAM;CACV,IAAI,eAAe;CAEnB,MAAM,2BAA2B,qBAAqB,OAAO,IAAI;CACjE,IAAI,eAAe,UAAU;AAC7B,KAAI,6BAA6B,KAAK;EAClC,MAAM,aAAa,MAAM,OAAO,KAAK,2BAA2B,IAAI;AACpE,GAAA,GAAA,uCAAA,MAAK,WAAW;AAChB,kBAAA,GAAA,qCAAA,KAAmB,YAAY;GAC3B,UAAU;GACV,WAAW;GACd,CAAC;;AAEN,iBAAgB,2BAA2B;CAE3C,MAAM,EACF,UAAU,mBACV,cAAc,kCAAA,GAAA,4CAAA,sBACO,OAAO,4BAA4B,IAAI;AAIhE,iBAAgB;CAChB,MAAM,cAAc,qBAAqB,UAAU;AAGnD,QAAO,wCAAA,MAAM,WAAW,MAAM,KAAK,CAC/B;CAEJ,MAAM,YAAY,MAAM;AAGxB,KAAI,CAAC,UACD,QAAO;EACH,MAAM;GAAC;GAAc;GAAa,UAAU;GAAC;EAC7C,cAAc;EACjB;AAIL,KAAI,wCAAA,MAAM,MAAM,UAAU,EAAE;EACxB,MAAM,OAAO;GAAC;GAAc;iDAAiB,UAAU,QAAQ;GAAC;AAChE,QAAM,OAAO,cAAc,MAAM,eAAe,EAAE;AAClD,SAAO;GAAE;GAAM,cAAc,MAAM,eAAe,IAAI;GAAc;;CAIxE,MAAM,qBAAA,GAAA,uCAAA,MAAyB,OAAO,KAAK,EAAE,YAAY,KAAK,CAAC;AAC/D,KAAI,qBAAqB,MAAM;EAC3B,MAAM,WAAW,MAAM,OACnB,cACA,oBAAoB,eAAe,EACtC;AACD,GAAA,GAAA,uCAAA,MAAK,SAAS;AAEd,SAAO;GACH,MAFS;IAAC;IAAc;kDAAiB,SAAS;IAAC;GAGnD,cAAc,eAAe,oBAAoB,IAAI;GACxD;;AAIL,QAAO;EACH,MAAM;GAAC;GAAc;GAAa,UAAU;GAAC;EAC7C,cAAc;EACjB;;;;;;;;;;;;AAaL,SAAS,qBAAqB,OAAmB,UAA0B;CACvE,MAAM,YAAA,GAAA,uCAAA,MAAgB,OAAO,KAAK;EAC9B,YAAY;EACZ,uBAAuB;EACvB,+BAA+B;EAClC,CAAC;AAEF,KAAI,CAAC,SACD,QAAO;CAGX,IAAI,eAAe;CACnB,IAAI,IAAI,WAAW;AACnB,QAAO,IAAI,MAAM,QAAQ,KAAK;EAC1B,MAAM,OAAO,MAAM;AACnB,MAAI,wCAAA,MAAM,OAAO,MAAM,IAAI,CAEvB;AAEJ,MAAI,wCAAA,MAAM,OAAO,MAAM,IAAI,EAAE;AACzB;AAEA,UAAO,wCAAA,MAAM,WAAW,MAAM,GAAG,IAAI,wCAAA,MAAM,QAAQ,MAAM,GAAG,CACxD;AAEJ,OAAI,CAAC,wCAAA,MAAM,MAAM,MAAM,GAAG,CACtB;AAGJ,kBAAe,IAAI;GAGnB,MAAM,YAAA,GAAA,uCAAA,MAAgB,OAAO,KAAK;IAC9B,YAAY;IACZ,uBAAuB;IACvB,+BAA+B;IAClC,CAAC;AACF,OAAI,YAAY,KACZ;AAEJ,OAAI,WAAW;;;AAIvB,QAAO;;;;AC9IX,IAAa,SAA0B;CACnC,SAAS;EACL,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,aAAa;GAAM;EACvD;CACD,YAAY;EACR,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,aAAa;GAAM;EACvD;CACD,WAAW;EACP,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,aAAa;GAAM;EACvD;CACD,gBAAgB;EACZ,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,aAAa;GAAM;EACvD;CACD,cAAc;EAAE,WAAW;EAAK,YAAY,EAAE,aAAa,MAAM;EAAE;CACnE,eAAe;EAAE,WAAW;EAAK,YAAY,EAAE,aAAa,MAAM;EAAE;CACpE,aAAa;EACT,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,aAAa;GAAM;EACvD;CACD,sBAAsB;EAClB,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,aAAa;GAAM;EACvD;CACD,MAAM;EACF,WAAW;EACX,gBAAgB;EAChB,YAAY,EAAE,gBAAgB;GAAC;GAAa;GAAW;GAAU,EAAE;EACtE;CACJ;AAED,IAAa,eAA8B;CACvC,aAAa;EACT,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,iBAAiB;GAAM;EACxD,gBAAgB;EACnB;CACD,MAAM;EACF,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,iBAAiB;GAAM;EACxD,gBAAgB;EACnB;CACD,OAAO;EACH,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,iBAAiB;GAAM;EACxD,gBAAgB;EACnB;CACD,YAAY;EACR,WAAW;EACX,YAAY,EAAE,iBAAiB,MAAM;EACrC,gBAAgB;EACnB;CACD,kBAAkB;EACd,WAAW;EACX,YAAY,EAAE,iBAAiB,MAAM;EACrC,gBAAgB;EACnB;CACD,iBAAiB;EACb,WAAW;EACX,YAAY,EAAE,iBAAiB,MAAM;EACrC,gBAAgB;EACnB;CACD,sBAAsB;EAClB,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,iBAAiB;GAAM;EACxD,gBAAgB;EACnB;CACD,sBAAsB;EAClB,WAAW;EACX,gBAAgB;EACnB;CACD,mBAAmB;EACf,WAAW;EACX,gBAAgB;EACnB;CACD,YAAY;EAAE,WAAW;EAAK,YAAY,EAAE,aAAa,MAAM;EAAE;CACpE;;;;AAKD,SAAS,8BAA8B,OAA+B;AAClE,EAAA,GAAA,4CAAA,wBAAuB,OAAO,kBAAkB;AAChD,QAAO;;;;;AAMX,IAAa,oBAAqC;CAC9C,UAAU,EAAE,WAAW,KAAK;CAC5B,sBAAsB,EAAE,WAAW,KAAK;CACxC,gBAAgB,EAAE,WAAW,KAAK;CAClC,oBAAoB,EAAE,WAAW,KAAK;CACtC,2BAA2B,EAAE,WAAW,KAAK;CAC7C,sBAAsB,EAAE,WAAW,KAAK;CACxC,eAAe,EAAE,WAAW,KAAK;CACjC,gBAAgB,EAAE,WAAW,KAAK;CAClC,iBAAiB,EAAE,WAAW,OAAO;CACrC,gBAAgB,EAAE,WAAW,OAAO;CACpC,sBAAsB,EAAE,WAAW,KAAK;CACxC,uBAAuB,EAAE,WAAW,SAAS;CAC7C,iBAAiB,EAAE,WAAW,KAAK;CACnC,cAAc;EAAE,WAAW;EAAK,YAAY,EAAE,aAAa,MAAM;EAAE;CACnE,YAAY,EAAE,WAAW,KAAK;CAC9B,iBAAiB,EAAE,WAAW,KAAK;CACnC,6BAA6B,EAAE,WAAW,YAAY;CACtD,yBAAyB,EAAE,WAAW,WAAW;CACjD,6BAA6B,EAAE,WAAW,eAAe;CACzD,oBAAoB,EAAE,WAAW,OAAO;CACxC,qBAAqB,EAAE,WAAW,OAAO;CACzC,qBAAqB,EAAE,WAAW,OAAO;CACzC,eAAe,EAAE,WAAW,KAAK;CACjC,cAAc,EAAE,WAAW,OAAO;CAClC,gCAAgC,EAAE,WAAW,KAAK;CAClD,qBAAqB,EAAE,WAAW,KAAK;CACvC,mBAAmB,EAAE,WAAW,KAAK;CACrC,iBAAiB,EAAE,WAAW,KAAK;CACnC,kBAAkB,EAAE,WAAW,OAAO;CACtC,cAAc,EAAE,WAAW,OAAO;CAClC,4BAA4B,EAAE,WAAW,OAAO;CAChD,mCAAmC,EAAE,WAAW,OAAO;CACvD,qBAAqB,EAAE,WAAW,OAAO;CACzC,aAAa,EAAE,WAAW,KAAK;CAC/B,WAAW,EAAE,WAAW,OAAO;CAC/B,aAAa,EAAE,WAAW,OAAO;CACjC,cAAc,EAAE,WAAW,SAAS;CACpC,gBAAgB,EAAE,WAAW,OAAO;CACpC,gBAAgB,EAAE,WAAW,OAAO;CACpC,gBAAgB,EAAE,WAAW,OAAO;CACpC,iBAAiB,EAAE,WAAW,eAAe;CAC7C,gBAAgB,EAAE,WAAW,KAAK;CAClC,SAAS,EAAE,WAAW,KAAK;CAC3B,eAAe,EAAE,WAAW,KAAK;CACjC,eAAe,EAAE,WAAW,OAAO;CACnC,aAAa,EAAE,WAAW,KAAK;CAC/B,UAAU;EAAE,WAAW;EAAO,YAAY,EAAE,aAAa,MAAM;EAAE;CACjE,gBAAgB;EAAE,WAAW;EAAS,YAAY,EAAE,aAAa,MAAM;EAAE;CACzE,2BAA2B,EAAE,WAAW,eAAe;CACvD,oCAAoC,EAAE,WAAW,eAAe;CAChE,mBAAmB,EAAE,WAAW,OAAO;CAEvC,mBAAmB,EAAE,WAAW,KAAK;CACrC,oBAAoB,EAAE,WAAW,KAAK;CACtC,oBAAoB,EAAE,WAAW,KAAK;CACtC,mBAAmB,EAAE,WAAW,KAAK;CACrC,oBAAoB,EAAE,WAAW,KAAK;CACtC,oBAAoB,EAAE,WAAW,KAAK;CACtC,oBAAoB,EAAE,WAAW,KAAK;CACtC,oBAAoB,EAAE,WAAW,KAAK;CACtC,oBAAoB,EAAE,WAAW,KAAK;CACtC,sBAAsB,EAAE,WAAW,SAAS;CAC5C,gBAAgB,EAAE,WAAW,aAAa;CAC1C,mBAAmB,EAAE,WAAW,OAAO;CACvC,wBAAwB,EAAE,WAAW,SAAS;CAC9C,yBAAyB,EAAE,WAAW,aAAa;CACnD,2BAA2B,EAAE,WAAW,eAAe;CACvD,iBAAiB,EAAE,WAAW,KAAK;CACnC,iBAAiB,EAAE,WAAW,KAAK;CACnC,wBAAwB,EAAE,WAAW,eAAe;CACpD,wBAAwB,EAAE,WAAW,eAAe;CACpD,qBAAqB,EAAE,WAAW,KAAK;CACvC,aAAa,EAAE,WAAW,KAAK;CAC/B,gBAAgB,EAAE,WAAW,OAAO;CACpC,kBAAkB,EAAE,WAAW,KAAK;CACpC,uBAAuB,EAAE,WAAW,KAAK;CACzC,iBAAiB,EAAE,WAAW,aAAa;CAC3C,sBAAsB,EAAE,WAAW,aAAa;CAChD,uBAAuB,EAAE,WAAW,KAAK;CACzC,8BAA8B,EAAE,WAAW,KAAK;CAChD,8BAA8B,EAAE,WAAW,WAAW;CACtD,8BAA8B,EAAE,WAAW,KAAK;CAChD,qCAAqC,EAAE,WAAW,OAAO;CACzD,gCAAgC,EAAE,WAAW,OAAO;CAEpD,WAAW,EAAE,WAAW,iBAAiB;CACzC,uBAAuB,EAAE,WAAW,KAAK;CACzC,mBAAmB,EAAE,WAAW,KAAK;CACrC,oBAAoB,EAAE,WAAW,KAAK;CACtC,iBAAiB,EAAE,WAAW,KAAK;CAEnC,SAAS,EAAE,WAAW,aAAa;CACnC,kBAAkB,EAAE,WAAW,WAAW;CAC1C,eAAe,EAAE,WAAW,OAAO;CACnC,cAAc,EAAE,WAAW,OAAO;CAClC,eAAe,EAAE,WAAW,OAAO;CACnC,sBAAsB,EAAE,WAAW,KAAK;CACxC,oBAAoB,EAAE,WAAW,KAAK;CACtC,sBAAsB,EAAE,WAAW,OAAO;CAC1C,gBAAgB,EAAE,WAAW,OAAO;CACpC,qBAAqB,EAAE,WAAW,OAAO;CACzC,iBAAiB,EAAE,WAAW,OAAO;CACrC,YAAY,EAAE,WAAW,OAAO;CAChC,YAAY,EAAE,WAAW,MAAM;CAC/B,QAAQ,EAAE,WAAW,OAAO;CAC5B,gBAAgB,EAAE,WAAW,OAAO;CACpC,cAAc,EAAE,WAAW,KAAK;CAChC,gBAAgB,EAAE,WAAW,KAAK;CAClC,gBAAgB,EAAE,WAAW,KAAK;CAClC,sBAAsB,EAAE,WAAW,KAAK;CACxC,sBAAsB,EAAE,WAAW,KAAK;CACxC,sBAAsB,EAAE,WAAW,KAAK;CACxC,sBAAsB,EAAE,WAAW,KAAK;CAExC,iBAAiB,EAAE,WAAW,KAAK;CACnC,oBAAoB,EAAE,WAAW,KAAK;CACtC,qBAAqB,EAAE,WAAW,KAAK;CACvC,qBAAqB,EAAE,WAAW,KAAK;CACvC,2BAA2B,EAAE,WAAW,KAAK;CAC7C,0BAA0B,EAAE,WAAW,KAAK;CAC5C,oBAAoB,EAAE,WAAW,OAAO;CACxC,yBAAyB,EAAE,WAAW,OAAO;CAC7C,eAAe,EAAE,WAAW,KAAK;CACjC,kBAAkB,EAAE,WAAW,KAAK;CACpC,uBAAuB,EAAE,WAAW,KAAK;CACzC,2BAA2B,EAAE,WAAW,KAAK;CAC7C,+BAA+B,EAAE,WAAW,KAAK;CACjD,8BAA8B,EAAE,WAAW,KAAK;CAChD,0BAA0B,EAAE,WAAW,KAAK;CAC5C,6BAA6B,EAAE,WAAW,SAAS;CACnD,0BAA0B,EAAE,WAAW,KAAK;CAE5C,YAAY,EAAE,WAAW,KAAK;CAC9B,iBAAiB,EAAE,WAAW,KAAK;CACnC,kBAAkB,EAAE,WAAW,KAAK;CACpC,YAAY,EAAE,WAAW,OAAO;CAChC,mBAAmB,EAAE,WAAW,KAAK;CACrC,aAAa,EAAE,WAAW,KAAK;CAC/B,sBAAsB,EAAE,WAAW,KAAK;CACxC,wBAAwB,EAAE,WAAW,KAAK;CAC1C,mBAAmB,EAAE,WAAW,KAAK;CACrC,iBAAiB,EAAE,WAAW,KAAK;CACnC,cAAc,EAAE,WAAW,KAAK;CAChC,oBAAoB,EAAE,WAAW,KAAK;CACtC,kBAAkB,EAAE,WAAW,KAAK;CACpC,iBAAiB,EAAE,WAAW,KAAK;CAEnC,sBAAsB,EAAE,WAAW,SAAS;CAC5C,OAAO,EAAE,WAAW,SAAS;CAC7B,iBAAiB,EAAE,WAAW,OAAO;CACrC,oBAAoB,EAAE,WAAW,KAAK;CACtC,eAAe,EAAE,WAAW,KAAK;CACjC,wBAAwB,EAAE,WAAW,KAAK;CAC1C,uCAAuC,EAAE,WAAW,KAAK;CACzD,wBAAwB,EAAE,WAAW,SAAS;CAC9C,mBAAmB,EAAE,WAAW,KAAK;CACrC,wBAAwB,EAAE,WAAW,KAAK;CAE1C,eAAe,EAAE,WAAW,KAAK;CACjC,eAAe,EAAE,WAAW,KAAK;CACjC,gBAAgB,EAAE,WAAW,SAAS;CACtC,yBAAyB,EAAE,WAAW,OAAO;CAC7C,yBAAyB,EAAE,WAAW,eAAe;CACrD,iCAAiC,EAAE,WAAW,eAAe;CAC7D,YAAY,EAAE,WAAW,SAAS;CAClC,gBAAgB,EAAE,WAAW,WAAW;CACxC,cAAc,EAAE,WAAW,eAAe;CAC1C,yBAAyB,EAAE,WAAW,mBAAmB;CACzD,gBAAgB,EAAE,WAAW,SAAS;CACtC,eAAe,EAAE,WAAW,OAAO;CACnC,kBAAkB,EAAE,WAAW,OAAO;CACtC,yBAAyB,EAAE,WAAW,OAAO;CAC7C,aAAa,EAAE,WAAW,UAAU;CACpC,iBAAiB,EAAE,WAAW,OAAO;CACrC,aAAa,EAAE,WAAW,KAAK;CAC/B,eAAe,EAAE,WAAW,KAAK;CACjC,oBAAoB,EAAE,WAAW,KAAK;CACtC,qBAAqB,EAAE,WAAW,OAAO;CAEzC,UAAU,EAAE,WAAW,OAAO;CAC9B,eAAe,EAAE,WAAW,SAAS;CACrC,YAAY,EAAE,WAAW,OAAO;CAChC,YAAY,EAAE,WAAW,KAAK;CAC9B,YAAY,EAAE,WAAW,KAAK;CAC9B,iBAAiB,EAAE,WAAW,OAAO;CACrC,aAAa,EAAE,WAAW,SAAS;CACnC,YAAY,EAAE,WAAW,KAAK;CAC9B,qBAAqB,EAAE,WAAW,SAAS;CAC3C,mBAAmB,EAAE,WAAW,SAAS;CACzC,aAAa,EAAE,WAAW,OAAO;CACjC,eAAe,EAAE,WAAW,OAAO;CACnC,cAAc,EAAE,WAAW,OAAO;CAClC,oBAAoB,EAAE,WAAW,KAAK;CACtC,oBAAoB,EAAE,WAAW,SAAS;CAC1C,wBAAwB,EAAE,WAAW,SAAS;CAC9C,uBAAuB,EAAE,WAAW,eAAe;CACnD,qBAAqB,EAAE,WAAW,aAAa;CAC/C,yBAAyB,EAAE,WAAW,OAAO;CAC7C,uBAAuB,EAAE,WAAW,OAAO;CAC3C,6BAA6B,EAAE,WAAW,WAAW;CACrD,+BAA+B,EAAE,WAAW,aAAa;CACzD,wBAAwB,EAAE,WAAW,OAAO;CAC5C,8BAA8B,EAAE,WAAW,KAAK;CAChD,aAAa,EAAE,WAAW,OAAO;CACjC,aAAa,EAAE,WAAW,OAAO;CACjC,cAAc,EAAE,WAAW,OAAO;CAClC,eAAe,EAAE,WAAW,KAAK;CAEjC,gBAAgB,EAAE,WAAW,KAAK;CAClC,wBAAwB,EAAE,WAAW,KAAK;CAC1C,0BAA0B,EAAE,WAAW,KAAK;CAC5C,SAAS;EAAE,WAAW;EAAO,YAAY,EAAE,aAAa,MAAM;EAAE;CAChE,UAAU,EAAE,WAAW,KAAK;CAC5B,YAAY,EAAE,WAAW,KAAK;CAC9B,iBAAiB,EAAE,WAAW,OAAO;CACrC,iBAAiB,EAAE,WAAW,OAAO;CACrC,YAAY,EAAE,WAAW,OAAO;CAChC,aAAa,EAAE,WAAW,OAAO;CACjC,mBAAmB,EAAE,WAAW,SAAS;CACzC,aAAa,EAAE,WAAW,KAAK;CAC/B,eAAe,EAAE,WAAW,KAAK;CACjC,gBAAgB,EAAE,WAAW,KAAK;CAClC,YAAY,EAAE,WAAW,KAAK;CAC9B,cAAc,EAAE,WAAW,KAAK;CAChC,gBAAgB,EAAE,WAAW,KAAK;CAClC,WAAW,EAAE,WAAW,KAAK;CAC7B,gBAAgB,EAAE,WAAW,KAAK;CAClC,WAAW,EAAE,WAAW,KAAK;CAC7B,WAAW,EAAE,WAAW,KAAK;CAC7B,cAAc,EAAE,WAAW,KAAK;CAChC,aAAa,EAAE,WAAW,KAAK;CAC/B,UAAU,EAAE,WAAW,KAAK;CAC5B,YAAY,EAAE,WAAW,KAAK;CAC9B,MAAM;EACF,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,iBAAiB;GAAM;EAC3D;CACD,MAAM;EACF,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,iBAAiB;GAAM;EAC3D;CACD,MAAM;EACF,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,iBAAiB;GAAM;EAC3D;CACD,UAAU;EACN,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,iBAAiB;GAAM;EAC3D;CACD,SAAS;EACL,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,iBAAiB;GAAM;EAC3D;CACD,OAAO;EACH,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,iBAAiB;GAAM;EAC3D;CACD,MAAM;EACF,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,iBAAiB;GAAM;EAC3D;CACD,kBAAkB;EACd,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,iBAAiB;GAAM;EAC3D;CACD,MAAM;EACF,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,iBAAiB;GAAM;EAC3D;CACD,YAAY;EACR,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,iBAAiB;GAAM;EAC3D;CACD,OAAO;EACH,WAAW;EACX,YAAY;GAAE,aAAa;GAAM,iBAAiB;GAAM;EAC3D;CACD,QAAQ;EACJ,WAAW;EACX,gBAAgB;EAChB,YAAY;GACR,gBAAgB;IAAC;IAAa;IAAW;IAAU;GACnD,aAAa;GAChB;EACJ;CACJ;;;;;;AC3XD,SAAgB,SAAS,MAAoB,OAAO,OAAe;AAC/D,KAAI,OAAO,SAAS,SAChB,QAAO;AAGX,KAAI,MAAM,QAAQ,KAAK,EAAE;EACrB,MAAM,WAAW,OAAO,MAAM;EAC9B,MAAM,UAAoB,EAAE;AAC5B,OAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;GAClC,MAAM,MAAM,KAAK;GACjB,MAAM,UAAU,KAAK,IAAI;AACzB,OAAI,CAAC,SAAS;AACV,YAAQ,KAAK,SAAS,IAAI,CAAC;AAC3B;;AAEJ,OAAI,QAAQ,SAAS,WAAW;AAC5B,YAAQ,KAAK,SAAS,IAAI,CAAC;AAC3B;;AAEJ,OAAI,IAAI,SAAS,UACb,SAAQ,KAAK,SAAS;AAE1B,WAAQ,KAAK,SAAS,IAAI,CAAC;;AAE/B,SAAO,QAAQ,KAAK,GAAG;;CAE3B,MAAM,OAAO,KAAK;AAElB,SAAQ,MAAR;EACI,KAAK,YACD,QAAO,SAAS,KAAK,SAAU,OAAO,KAAM;EAChD,KAAK,aACD,QAAO,IAAA,GAAA,4CAAA,UAAiB,KAAK,OAAO,CAAC,IAAA,GAAA,4CAAA,UACjC,KAAK,QACR,CAAC;EACN,KAAK,YACD,SAAA,GAAA,4CAAA,UAAqB,KAAK,QAAQ;EACtC,KAAK,UACD,SAAA,GAAA,4CAAA,UAAqB,KAAK;EAC9B,KAAK,UACD,QAAO,KAAK;EAChB,KAAK,YAAY;GACb,MAAM,WAAW,KAAK,SACjB,KAAK,OAAA,GAAA,4CAAA,UAAoB;IAAE,GAAG;IAAG,mBAAmB;IAAO,CAAC,CAAC,CAC7D,KAAK,GAAG;AACb,OAAI,KAAK,SAAS,WAAW,EACzB,QAAO,GAAG,SAAS,cAAc,SAC7B,KAAK,SAAS,GACjB,CAAC;OAEF,QAAO,GAAG,SAAS,cAAc,SAC7B,KAAK,SAAS,GACjB,CAAC,OAAO,SAAS,KAAK,SAAS,GAAG,CAAC;;EAG5C,KAAK,UACD,SAAA,GAAA,4CAAA,UAAqB,KAAK,QAAQ;EACtC,KAAK,qBACD,QAAO,KAAA,GAAA,4CAAA,UAAkB,KAAK,QAAQ,CAAC;EAC3C,KAAK,WAAW;GACZ,MAAM,WAAW,KAAK,SACjB,KAAK,OAAA,GAAA,4CAAA,UAAoB;IAAE,GAAG;IAAG,mBAAmB;IAAO,CAAC,CAAC,CAC7D,KAAK,GAAG;GACb,IAAI,UAAU;AACd,OAAI,KAAK,QACL,WAAU,MAAA,GAAA,4CAAA,UAAmB,KAAK,QAAQ,CAAC;GAE/C,MAAM,SAAA,GAAA,4CAAA,UAAsB,KAAK,MAAM;GACvC,MAAM,YAAY,CAAC,GAAG,KAAK,UAAU;AACrC,IAAA,GAAA,uCAAA,MAAK,UAAU;GACf,IAAI,oBAAA,GAAA,4CAAA,UAAiC,UAAU;AAG/C,OAAI,iBAAiB,SAAS,EAC1B,oBAAmB,MAAM;GAG7B,MAAM,UACF,KAAK,QAAQ,SAAS,YAChB,SAAS,KAAK,QAAQ,IAAA,GAAA,4CAAA,UACR,KAAK,QAAQ;AAErC,UAAO,GAAG,WAAW,QAAQ,mBAAmB,QAAQ,OAAA,GAAA,4CAAA,UACpD,KAAK,KACR,CAAC,GAAG;;EAET,KAAK,iBAAiB;GAClB,MAAM,WAAW,KAAK,SACjB,KAAK,OAAA,GAAA,4CAAA,UAAoB;IAAE,GAAG;IAAG,mBAAmB;IAAO,CAAC,CAAC,CAC7D,KAAK,GAAG;GACb,IAAI,UAAU;AACd,OAAI,KAAK,QACL,WAAU,KAAA,GAAA,4CAAA,UAAkB,KAAK,QAAQ,CAAC;AAG9C,UAAO,GAAG,SAAS,KAAK,QAAQ,IAAA,GAAA,4CAAA,UAAiB,KAAK,QAAQ;;EAElE,KAAK,YAKD,QAAO,GAJU,KAAK,SACjB,KAAK,OAAA,GAAA,4CAAA,UAAoB;GAAE,GAAG;GAAG,mBAAmB;GAAO,CAAC,CAAC,CAC7D,KAAK,GAAG,CAEM,GAAG,KAAK,UAAU,OAAA,GAAA,4CAAA,UACjC,KAAK,QACR,CAAC;EAGN;AAEI,WAAQ,KAAK,sBADe,KACqB,aAAa,KAAK;AACnE,UAAO;;;;;AC3GnB,SAAS,iBAAiB;AACtB,QAAO;EACH,QAAQ,wCAAA,MAAM;EACd,aAAa,SAAc,wCAAA,MAAM,OAAO,MAAM,IAAI;EAClD,cAAc,SACV,wCAAA,MAAM,UAAU,KAAK,IAAI,KAAK,QAAQ,MAAM,WAAW;EAC3D,eAAe,SACX,wCAAA,MAAM,WAAW,KAAK,IAAI,wCAAA,MAAM,SAAS,KAAK;EAClD,WAAW,wCAAA,MAAM;EACjB,SAAS,wCAAA,MAAM;EACf,SAAS,wCAAA,MAAM;EACf,YAAY,wCAAA,MAAM;EACrB;;AAGL,IAAM,WAAW,gBAAgB;;;;AAKjC,SAAgB,MACZ,KACA,SAKoB;CACpB,MAAM,EAAE,YAAY,gBAAgB,WAAW,EAAE;AACjD,KAAI,CAAC,MAAM,QAAQ,IAAI,CACnB,OAAM,IAAI,MAAM,kCAAkC;AAItD,QAAA,GAAA,wCAAA,uBAA4B,CAAC,GAAG,IAAI,CAAC;AAGrC,QAAO,wCAAA,cAAc,MAAM,KAAK;EAC5B,GAAG;EACH;EACH,CAAC"}