@skaile/workspaces 5.7.0 → 5.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +120 -0
- package/dist/app-sdk/index.js +1 -1
- package/dist/{asset-feeds-K36CR52Q.js → asset-feeds-XMKKUUK6.js} +54 -30
- package/dist/asset-feeds-XMKKUUK6.js.map +1 -0
- package/dist/asset-manager/catalog-deployer.js +9 -9
- package/dist/asset-manager/index.js +15 -15
- package/dist/asset-manager/installer.js +11 -11
- package/dist/asset-manager/renderers.js +10 -10
- package/dist/asset-manager/src/index.d.ts +268 -24
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/install-agent.d.ts +11 -0
- package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +2 -2
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +301 -212
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +92 -66
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/continue.js +14 -15
- package/dist/bridge/drivers/continue.js.map +1 -1
- package/dist/bridge/drivers/echo.js +4 -4
- package/dist/bridge/drivers/gemini.js +8 -8
- package/dist/bridge/drivers/goose.js +14 -15
- package/dist/bridge/drivers/goose.js.map +1 -1
- package/dist/bridge/drivers/omp.js +70 -104
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.js +14 -15
- package/dist/bridge/drivers/opencode.js.map +1 -1
- package/dist/bridge/drivers/qwen.js +8 -8
- package/dist/bridge/index.js +16 -17
- package/dist/bridge/src/codex/managed-driver.d.ts +13 -10
- package/dist/bridge/src/codex/managed-driver.d.ts.map +1 -1
- package/dist/bridge/src/drivers/_subprocess-cli.d.ts +12 -2
- package/dist/bridge/src/drivers/_subprocess-cli.d.ts.map +1 -1
- package/dist/bridge/src/drivers/claude-sdk.d.ts +67 -62
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/claude-tool-allowlist.d.ts +43 -0
- package/dist/bridge/src/drivers/claude-tool-allowlist.d.ts.map +1 -0
- package/dist/bridge/src/drivers/codex.d.ts +26 -10
- package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
- package/dist/bridge/src/drivers/continue.d.ts +2 -2
- package/dist/bridge/src/drivers/continue.d.ts.map +1 -1
- package/dist/bridge/src/drivers/gemini.d.ts +2 -2
- package/dist/bridge/src/drivers/gemini.d.ts.map +1 -1
- package/dist/bridge/src/drivers/goose.d.ts +2 -2
- package/dist/bridge/src/drivers/goose.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp.d.ts +24 -35
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/bridge/src/drivers/opencode.d.ts +2 -2
- package/dist/bridge/src/drivers/opencode.d.ts.map +1 -1
- package/dist/bridge/src/drivers/recovery-policy.d.ts +79 -0
- package/dist/bridge/src/drivers/recovery-policy.d.ts.map +1 -0
- package/dist/bridge/src/index.d.ts +1 -0
- package/dist/bridge/src/index.d.ts.map +1 -1
- package/dist/bridge/src/reconfigure-ledger.d.ts +117 -0
- package/dist/bridge/src/reconfigure-ledger.d.ts.map +1 -0
- package/dist/bridge/src/types.d.ts +77 -7
- package/dist/bridge/src/types.d.ts.map +1 -1
- package/dist/{chunk-WIEC3ZE4.js → chunk-2FRUUDZY.js} +5 -5
- package/dist/{chunk-WIEC3ZE4.js.map → chunk-2FRUUDZY.js.map} +1 -1
- package/dist/{chunk-NARITJS2.js → chunk-2H73V6XR.js} +3 -3
- package/dist/{chunk-NARITJS2.js.map → chunk-2H73V6XR.js.map} +1 -1
- package/dist/{chunk-O4Z7MAW7.js → chunk-2LWYNQK7.js} +3 -3
- package/dist/{chunk-O4Z7MAW7.js.map → chunk-2LWYNQK7.js.map} +1 -1
- package/dist/{chunk-OOLT6HGP.js → chunk-36AFURKZ.js} +7 -7
- package/dist/{chunk-OOLT6HGP.js.map → chunk-36AFURKZ.js.map} +1 -1
- package/dist/{chunk-DFFD4BFG.js → chunk-4MQS7CAF.js} +174 -86
- package/dist/chunk-4MQS7CAF.js.map +1 -0
- package/dist/{chunk-RNPHRRLG.js → chunk-4PTSR4UU.js} +3 -3
- package/dist/{chunk-RNPHRRLG.js.map → chunk-4PTSR4UU.js.map} +1 -1
- package/dist/{chunk-BTK7ECLH.js → chunk-5NNNV76P.js} +41 -8
- package/dist/chunk-5NNNV76P.js.map +1 -0
- package/dist/{chunk-IZLQ4GDO.js → chunk-7AI3Q5AQ.js} +43 -21
- package/dist/chunk-7AI3Q5AQ.js.map +1 -0
- package/dist/{chunk-NFGRW3L7.js → chunk-7RGTAEG6.js} +3 -3
- package/dist/{chunk-NFGRW3L7.js.map → chunk-7RGTAEG6.js.map} +1 -1
- package/dist/{chunk-XBSQ4KMC.js → chunk-B4X2N7JQ.js} +205 -3
- package/dist/chunk-B4X2N7JQ.js.map +1 -0
- package/dist/{chunk-FRHE7FFB.js → chunk-B6GIW55K.js} +5 -3
- package/dist/chunk-B6GIW55K.js.map +1 -0
- package/dist/{chunk-RVIZQ5XD.js → chunk-BTE2V4IW.js} +3 -3
- package/dist/{chunk-RVIZQ5XD.js.map → chunk-BTE2V4IW.js.map} +1 -1
- package/dist/{chunk-EB4XN3KE.js → chunk-CGT45WN7.js} +3 -3
- package/dist/{chunk-EB4XN3KE.js.map → chunk-CGT45WN7.js.map} +1 -1
- package/dist/{chunk-FAP63KV7.js → chunk-CKQEIY43.js} +4 -4
- package/dist/{chunk-FAP63KV7.js.map → chunk-CKQEIY43.js.map} +1 -1
- package/dist/{chunk-NWQB7UTY.js → chunk-DNZYOKOJ.js} +3 -3
- package/dist/{chunk-NWQB7UTY.js.map → chunk-DNZYOKOJ.js.map} +1 -1
- package/dist/{chunk-AVCUPPG6.js → chunk-EF7NPDDU.js} +4 -4
- package/dist/{chunk-AVCUPPG6.js.map → chunk-EF7NPDDU.js.map} +1 -1
- package/dist/chunk-EPBKISS5.js +84 -0
- package/dist/chunk-EPBKISS5.js.map +1 -0
- package/dist/{chunk-DMLDYFDS.js → chunk-F4NJDSR7.js} +9 -5
- package/dist/chunk-F4NJDSR7.js.map +1 -0
- package/dist/{chunk-PSA6ONFB.js → chunk-FVJK4QWM.js} +4 -4
- package/dist/{chunk-PSA6ONFB.js.map → chunk-FVJK4QWM.js.map} +1 -1
- package/dist/{chunk-KNWCFEWU.js → chunk-FYXZRVID.js} +20 -7
- package/dist/{chunk-KNWCFEWU.js.map → chunk-FYXZRVID.js.map} +1 -1
- package/dist/{chunk-LBQ4BBX4.js → chunk-FZNG4V4J.js} +16 -30
- package/dist/chunk-FZNG4V4J.js.map +1 -0
- package/dist/{chunk-SWO25LTO.js → chunk-GB7WDMH2.js} +4 -4
- package/dist/{chunk-SWO25LTO.js.map → chunk-GB7WDMH2.js.map} +1 -1
- package/dist/{chunk-EU3Q5AQ4.js → chunk-GKMZ6THE.js} +23 -32
- package/dist/chunk-GKMZ6THE.js.map +1 -0
- package/dist/{chunk-TTPSDC2G.js → chunk-GTILM2CI.js} +34 -13
- package/dist/chunk-GTILM2CI.js.map +1 -0
- package/dist/{chunk-LXY4BUA3.js → chunk-GXLQLPE5.js} +9 -5
- package/dist/chunk-GXLQLPE5.js.map +1 -0
- package/dist/{chunk-D5HOETOB.js → chunk-IMKSM5NL.js} +981 -126
- package/dist/chunk-IMKSM5NL.js.map +1 -0
- package/dist/{chunk-6UFFKMVC.js → chunk-IR33D6EP.js} +6 -6
- package/dist/{chunk-6UFFKMVC.js.map → chunk-IR33D6EP.js.map} +1 -1
- package/dist/{chunk-CT6NQSA4.js → chunk-ISHJITXJ.js} +3 -3
- package/dist/{chunk-CT6NQSA4.js.map → chunk-ISHJITXJ.js.map} +1 -1
- package/dist/chunk-IZCR27MU.js +60 -0
- package/dist/chunk-IZCR27MU.js.map +1 -0
- package/dist/{chunk-GWXFSLBK.js → chunk-J7U3PIOE.js} +4 -4
- package/dist/{chunk-GWXFSLBK.js.map → chunk-J7U3PIOE.js.map} +1 -1
- package/dist/{chunk-LCU5U5IW.js → chunk-JAKOMFC6.js} +67 -19
- package/dist/chunk-JAKOMFC6.js.map +1 -0
- package/dist/{chunk-THEJJBOU.js → chunk-JZ5EHBPI.js} +3 -3
- package/dist/{chunk-THEJJBOU.js.map → chunk-JZ5EHBPI.js.map} +1 -1
- package/dist/{chunk-BWZF2ZIF.js → chunk-K3CVFRVS.js} +3 -3
- package/dist/{chunk-BWZF2ZIF.js.map → chunk-K3CVFRVS.js.map} +1 -1
- package/dist/{chunk-VOOI7B2L.js → chunk-LAMCXQGA.js} +241 -73
- package/dist/chunk-LAMCXQGA.js.map +1 -0
- package/dist/{chunk-37FTLYFP.js → chunk-LNFKL23K.js} +3 -3
- package/dist/{chunk-37FTLYFP.js.map → chunk-LNFKL23K.js.map} +1 -1
- package/dist/{chunk-XUUYAS3Z.js → chunk-M3WPBTGJ.js} +3 -3
- package/dist/{chunk-XUUYAS3Z.js.map → chunk-M3WPBTGJ.js.map} +1 -1
- package/dist/{chunk-QZLWJETK.js → chunk-MGGFBZWA.js} +3 -3
- package/dist/{chunk-QZLWJETK.js.map → chunk-MGGFBZWA.js.map} +1 -1
- package/dist/{chunk-34C42MJX.js → chunk-MR5HBOUF.js} +5 -5
- package/dist/{chunk-34C42MJX.js.map → chunk-MR5HBOUF.js.map} +1 -1
- package/dist/{chunk-QCI6D7E4.js → chunk-NUELZWCF.js} +266 -170
- package/dist/chunk-NUELZWCF.js.map +1 -0
- package/dist/{chunk-GIC3G5YG.js → chunk-P67WJVP4.js} +7 -13
- package/dist/chunk-P67WJVP4.js.map +1 -0
- package/dist/{chunk-G67BOI2J.js → chunk-PMECEZK3.js} +15 -9
- package/dist/chunk-PMECEZK3.js.map +1 -0
- package/dist/{chunk-OKGUDNDT.js → chunk-Q6E6FM7P.js} +35 -33
- package/dist/chunk-Q6E6FM7P.js.map +1 -0
- package/dist/{chunk-CWM3MYGX.js → chunk-QVEKLSEH.js} +8 -9
- package/dist/chunk-QVEKLSEH.js.map +1 -0
- package/dist/{chunk-O7VPNKYN.js → chunk-QVNRCDTV.js} +23 -7
- package/dist/chunk-QVNRCDTV.js.map +1 -0
- package/dist/{chunk-UX3K4RKE.js → chunk-S53LOR7B.js} +3 -3
- package/dist/{chunk-UX3K4RKE.js.map → chunk-S53LOR7B.js.map} +1 -1
- package/dist/{chunk-53MSCGR2.js → chunk-SCOT677Q.js} +5 -5
- package/dist/{chunk-53MSCGR2.js.map → chunk-SCOT677Q.js.map} +1 -1
- package/dist/{chunk-SZWRPEF7.js → chunk-TTRYE6AC.js} +39 -29
- package/dist/chunk-TTRYE6AC.js.map +1 -0
- package/dist/{chunk-KM7XWC4Y.js → chunk-UAROCOXF.js} +3 -3
- package/dist/{chunk-KM7XWC4Y.js.map → chunk-UAROCOXF.js.map} +1 -1
- package/dist/{chunk-MKLBK7HI.js → chunk-UM7RIAHO.js} +17 -13
- package/dist/chunk-UM7RIAHO.js.map +1 -0
- package/dist/{chunk-JMKB7IB4.js → chunk-UMVKJM4Q.js} +4 -4
- package/dist/chunk-UMVKJM4Q.js.map +1 -0
- package/dist/{chunk-JLSCA5T5.js → chunk-UO7WPLDY.js} +3 -3
- package/dist/{chunk-JLSCA5T5.js.map → chunk-UO7WPLDY.js.map} +1 -1
- package/dist/{chunk-HCYS7GFP.js → chunk-V2DXZYBB.js} +3 -3
- package/dist/{chunk-HCYS7GFP.js.map → chunk-V2DXZYBB.js.map} +1 -1
- package/dist/{chunk-47ZD34KB.js → chunk-VMKMFS2Q.js} +28 -7
- package/dist/chunk-VMKMFS2Q.js.map +1 -0
- package/dist/{chunk-IUUYRXT6.js → chunk-W5DWWE4Y.js} +4 -4
- package/dist/{chunk-IUUYRXT6.js.map → chunk-W5DWWE4Y.js.map} +1 -1
- package/dist/{chunk-FK6HPLQA.js → chunk-X4BAYGMT.js} +3 -3
- package/dist/{chunk-FK6HPLQA.js.map → chunk-X4BAYGMT.js.map} +1 -1
- package/dist/{chunk-OJ4N4T4H.js → chunk-XDVR7QIT.js} +20 -6
- package/dist/chunk-XDVR7QIT.js.map +1 -0
- package/dist/{chunk-7FJQT3GT.js → chunk-Y4N2NUZD.js} +4 -4
- package/dist/{chunk-7FJQT3GT.js.map → chunk-Y4N2NUZD.js.map} +1 -1
- package/dist/{chunk-6VRJH4MR.js → chunk-Y7QA2OLD.js} +6 -6
- package/dist/{chunk-6VRJH4MR.js.map → chunk-Y7QA2OLD.js.map} +1 -1
- package/dist/{chunk-74EEFB52.js → chunk-YSHVQGUS.js} +115 -27
- package/dist/chunk-YSHVQGUS.js.map +1 -0
- package/dist/{chunk-6C654TFI.js → chunk-ZAOGFXDO.js} +36 -8
- package/dist/chunk-ZAOGFXDO.js.map +1 -0
- package/dist/{chunk-N6FBTXQ5.js → chunk-ZTBAYUDY.js} +2 -2
- package/dist/{chunk-N6FBTXQ5.js.map → chunk-ZTBAYUDY.js.map} +1 -1
- package/dist/cli/index.js +373 -188
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/asset-feeds.d.ts +5 -2
- package/dist/cli/src/asset-feeds.d.ts.map +1 -1
- package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts +15 -2
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/library-index.d.ts +8 -0
- package/dist/cli/src/commands/library-index.d.ts.map +1 -1
- package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
- package/dist/cli/src/commands/manage.d.ts.map +1 -1
- package/dist/cli/src/commands/outdated.d.ts +7 -2
- package/dist/cli/src/commands/outdated.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts +2 -0
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/publish-core.d.ts +10 -1
- package/dist/cli/src/commands/publish-core.d.ts.map +1 -1
- package/dist/cli/src/commands/session.d.ts.map +1 -1
- package/dist/cli/src/commands/source.d.ts +14 -0
- package/dist/cli/src/commands/source.d.ts.map +1 -1
- package/dist/cli/src/commands/tree.d.ts.map +1 -1
- package/dist/cli/src/commands/update.d.ts.map +1 -1
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/cli/src/flow-discovery.d.ts +8 -5
- package/dist/cli/src/flow-discovery.d.ts.map +1 -1
- package/dist/cli/src/open-library.d.ts +0 -11
- package/dist/cli/src/open-library.d.ts.map +1 -1
- package/dist/cli/src/skill-checks.d.ts +11 -2
- package/dist/cli/src/skill-checks.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/src/client.d.ts +10 -3
- package/dist/client/src/client.d.ts.map +1 -1
- package/dist/connectors/config.js +5 -5
- package/dist/connectors/index.js +25 -26
- package/dist/connectors/src/access-policy.d.ts +33 -0
- package/dist/connectors/src/access-policy.d.ts.map +1 -0
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/index.d.ts +2 -0
- package/dist/connectors/src/index.d.ts.map +1 -1
- package/dist/connectors-C7UQ73BK.js +44 -0
- package/dist/{connectors-SSOTIDHT.js.map → connectors-C7UQ73BK.js.map} +1 -1
- package/dist/connectors-shared/index.js +2 -2
- package/dist/core/index.js +8 -8
- package/dist/core/logging.js +1 -1
- package/dist/core/manifest.js +2 -2
- package/dist/core/models.js +1 -1
- package/dist/core/publish-manifest.js +2 -2
- package/dist/core/ref.js +1 -1
- package/dist/core/runtime-assets.js +5 -5
- package/dist/core/src/index.d.ts +3 -3
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/logging/config.d.ts +9 -1
- package/dist/core/src/logging/config.d.ts.map +1 -1
- package/dist/core/src/manifest.d.ts +11 -1
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +14 -6
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/repo-manager.d.ts +41 -6
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/store.d.ts +16 -2
- package/dist/core/src/store.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +10 -1
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/store.js +1 -1
- package/dist/core/workspace-config.js +4 -4
- package/dist/deploy/index.js +8 -8
- package/dist/discovery/index.js +5 -5
- package/dist/{ensure-sources-277VI7R3.js → ensure-sources-SRC2DVR5.js} +18 -18
- package/dist/{ensure-sources-277VI7R3.js.map → ensure-sources-SRC2DVR5.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +25 -26
- package/dist/factory-assets/connectors/deploy.js +25 -26
- package/dist/factory-assets/connectors/devserver.js +25 -26
- package/dist/factory-assets/connectors/flow/adapter.d.ts +6 -0
- package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/adapter.js +25 -26
- package/dist/factory-assets/connectors/flow/contract/expression.d.ts +3 -0
- package/dist/factory-assets/connectors/flow/contract/expression.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/contract/output-fields.d.ts +1 -1
- package/dist/factory-assets/connectors/flow/contract/output-fields.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/contract/schema.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/contract.js +4 -4
- package/dist/factory-assets/connectors/flow/engine/flow-output.d.ts +4 -3
- package/dist/factory-assets/connectors/flow/engine/flow-output.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/engine/output-schema.d.ts +6 -1
- package/dist/factory-assets/connectors/flow/engine/output-schema.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/engine.js +12 -12
- package/dist/factory-assets/connectors/flow/inline-sub-flow-host.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/prompt-fragments.js +3 -3
- package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +27 -28
- package/dist/factory-assets/connectors/flow.js +25 -26
- package/dist/factory-assets/connectors/git/config.d.ts.map +1 -1
- package/dist/factory-assets/connectors/git.js +25 -26
- package/dist/factory-assets/connectors/gmail.js +25 -26
- package/dist/factory-assets/connectors/googledrive.js +25 -26
- package/dist/factory-assets/connectors/local.js +25 -26
- package/dist/factory-assets/connectors/mattermost.js +25 -26
- package/dist/factory-assets/connectors/memory.js +25 -26
- package/dist/factory-assets/connectors/minio.js +25 -26
- package/dist/factory-assets/connectors/postgres.js +25 -26
- package/dist/factory-assets/connectors/s3.js +25 -26
- package/dist/factory-assets/connectors/sharepoint.js +25 -26
- package/dist/factory-assets/connectors/sqlite.js +25 -26
- package/dist/factory-assets/connectors/static-server.js +25 -26
- package/dist/factory-assets/connectors/tunnel.js +25 -26
- package/dist/factory-assets/connectors/webdav.js +25 -26
- package/dist/factory-assets/connectors/xstate-store.js +25 -26
- package/dist/factory-assets/connectors/xstate.js +25 -26
- package/dist/factory-assets/skills/skaile-author-asset/SKILL.md +10 -7
- package/dist/{flows-J2UEU2QM.js → flows-CBYRSAGS.js} +13 -13
- package/dist/{flows-J2UEU2QM.js.map → flows-CBYRSAGS.js.map} +1 -1
- package/dist/{helpers-KC5O7CML.js → helpers-XAEKCZKT.js} +18 -18
- package/dist/{helpers-KC5O7CML.js.map → helpers-XAEKCZKT.js.map} +1 -1
- package/dist/library/index.js +12 -12
- package/dist/library/install.js +3 -3
- package/dist/library/src/index.d.ts +3 -1
- package/dist/library/src/index.d.ts.map +1 -1
- package/dist/library/src/local/scan-authoring-libraries.d.ts +43 -0
- package/dist/library/src/local/scan-authoring-libraries.d.ts.map +1 -0
- package/dist/library/src/manifest-writer.d.ts +26 -3
- package/dist/library/src/manifest-writer.d.ts.map +1 -1
- package/dist/library/src/sync/git-driver.d.ts.map +1 -1
- package/dist/{library-publish-FGXF5TJO.js → library-publish-VJSWMOLH.js} +73 -37
- package/dist/library-publish-VJSWMOLH.js.map +1 -0
- package/dist/open-library-DB2PNL2X.js +40 -0
- package/dist/{open-library-P3D337NH.js.map → open-library-DB2PNL2X.js.map} +1 -1
- package/dist/open-registry-ZUZJ7MS7.js +32 -0
- package/dist/{open-registry-Z3P2X2AB.js.map → open-registry-ZUZJ7MS7.js.map} +1 -1
- package/dist/paths-FQ64OLJG.js +22 -0
- package/dist/{paths-JKEKXM52.js.map → paths-FQ64OLJG.js.map} +1 -1
- package/dist/{plugin-store-WI4MZJLP.js → plugin-store-MPAMD5OT.js} +10 -10
- package/dist/{plugin-store-WI4MZJLP.js.map → plugin-store-MPAMD5OT.js.map} +1 -1
- package/dist/project-I6NX3NFB.js +41 -0
- package/dist/{project-WFUDVYNN.js.map → project-I6NX3NFB.js.map} +1 -1
- package/dist/resolver/index.js +9 -9
- package/dist/runner/index.js +40 -41
- package/dist/runner/src/context-usage/compose.d.ts.map +1 -1
- package/dist/runner/src/logging-bootstrap.d.ts +6 -0
- package/dist/runner/src/logging-bootstrap.d.ts.map +1 -1
- package/dist/runner/src/platform-blocks.d.ts +55 -0
- package/dist/runner/src/platform-blocks.d.ts.map +1 -0
- package/dist/runner/src/reconfigure-handler.d.ts +38 -17
- package/dist/runner/src/reconfigure-handler.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-builder.d.ts.map +1 -1
- package/dist/runner/src/session-capability-wiring.d.ts +0 -2
- package/dist/runner/src/session-capability-wiring.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +15 -15
- package/dist/sdk/bridge.js +16 -17
- package/dist/sdk/client.js +1 -1
- package/dist/sdk/core.js +8 -8
- package/dist/sdk/flow.js +12 -12
- package/dist/sdk/index.js +69 -46
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +9 -9
- package/dist/sdk/runner.js +40 -41
- package/dist/sdk/session.js +2 -2
- package/dist/sdk/src/agent-session.d.ts +8 -0
- package/dist/sdk/src/agent-session.d.ts.map +1 -1
- package/dist/sdk/store.js +2 -1
- package/dist/sdk/types.js +1 -1
- package/dist/session/index.js +2 -2
- package/dist/session/src/dispatcher.d.ts +25 -4
- package/dist/session/src/dispatcher.d.ts.map +1 -1
- package/dist/session/src/index.d.ts +1 -1
- package/dist/session/src/index.d.ts.map +1 -1
- package/dist/{setup-RAMLTORM.js → setup-B7JUHYJW.js} +26 -27
- package/dist/setup-B7JUHYJW.js.map +1 -0
- package/dist/skills-TVO26Y4V.js +26 -0
- package/dist/{skills-EOHZ2DZ4.js.map → skills-TVO26Y4V.js.map} +1 -1
- package/dist/source-PJBMDCKX.js +41 -0
- package/dist/{source-FYVSFYEI.js.map → source-PJBMDCKX.js.map} +1 -1
- package/dist/{source-manifest-publish-4FPIPPLV.js → source-manifest-publish-LLJWXGID.js} +27 -27
- package/dist/{source-manifest-publish-4FPIPPLV.js.map → source-manifest-publish-LLJWXGID.js.map} +1 -1
- package/dist/store/index.js +2 -1
- package/dist/store/src/store.d.ts +8 -5
- package/dist/store/src/store.d.ts.map +1 -1
- package/dist/tui/index.js +40 -41
- package/dist/tui/index.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/ask-slots.d.ts +68 -0
- package/dist/types/src/ask-slots.d.ts.map +1 -0
- package/dist/types/src/delivery.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +30 -2
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +3 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/manifests/index.d.ts +1 -1
- package/dist/types/src/manifests/index.d.ts.map +1 -1
- package/dist/types/src/manifests/preset.d.ts +4 -0
- package/dist/types/src/manifests/preset.d.ts.map +1 -1
- package/dist/types/src/protocol.d.ts +43 -1
- package/dist/types/src/protocol.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +28 -1
- package/dist/types/src/version.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +32 -33
- package/dist/workspace-plugin/adapters/omp.js +14 -14
- package/dist/workspace-plugin/index.js +2 -2
- package/package.json +1 -1
- package/dist/asset-feeds-K36CR52Q.js.map +0 -1
- package/dist/chunk-47ZD34KB.js.map +0 -1
- package/dist/chunk-6C654TFI.js.map +0 -1
- package/dist/chunk-74EEFB52.js.map +0 -1
- package/dist/chunk-BTK7ECLH.js.map +0 -1
- package/dist/chunk-CWM3MYGX.js.map +0 -1
- package/dist/chunk-D5HOETOB.js.map +0 -1
- package/dist/chunk-DFFD4BFG.js.map +0 -1
- package/dist/chunk-DMLDYFDS.js.map +0 -1
- package/dist/chunk-EINLFFP6.js +0 -59
- package/dist/chunk-EINLFFP6.js.map +0 -1
- package/dist/chunk-EU3Q5AQ4.js.map +0 -1
- package/dist/chunk-FRHE7FFB.js.map +0 -1
- package/dist/chunk-G67BOI2J.js.map +0 -1
- package/dist/chunk-GIC3G5YG.js.map +0 -1
- package/dist/chunk-IZLQ4GDO.js.map +0 -1
- package/dist/chunk-JMKB7IB4.js.map +0 -1
- package/dist/chunk-LBQ4BBX4.js.map +0 -1
- package/dist/chunk-LCU5U5IW.js.map +0 -1
- package/dist/chunk-LXY4BUA3.js.map +0 -1
- package/dist/chunk-MKLBK7HI.js.map +0 -1
- package/dist/chunk-O7VPNKYN.js.map +0 -1
- package/dist/chunk-OJ4N4T4H.js.map +0 -1
- package/dist/chunk-OKGUDNDT.js.map +0 -1
- package/dist/chunk-QCI6D7E4.js.map +0 -1
- package/dist/chunk-SZWRPEF7.js.map +0 -1
- package/dist/chunk-TTPSDC2G.js.map +0 -1
- package/dist/chunk-VOOI7B2L.js.map +0 -1
- package/dist/chunk-XBSQ4KMC.js.map +0 -1
- package/dist/connectors-SSOTIDHT.js +0 -45
- package/dist/library-publish-FGXF5TJO.js.map +0 -1
- package/dist/open-library-P3D337NH.js +0 -40
- package/dist/open-registry-Z3P2X2AB.js +0 -32
- package/dist/paths-JKEKXM52.js +0 -22
- package/dist/project-WFUDVYNN.js +0 -41
- package/dist/setup-RAMLTORM.js.map +0 -1
- package/dist/skills-EOHZ2DZ4.js +0 -26
- package/dist/source-FYVSFYEI.js +0 -41
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../factory-assets/connectors/flow/contract/classifier.ts","../factory-assets/connectors/flow/contract/expression.ts","../factory-assets/connectors/flow/contract/output-fields.ts","../factory-assets/connectors/flow/contract/schema.ts"],"names":["number","z","bindingName"],"mappings":";;;AAWO,IAAM,0BAAA,GAA6B,CAAC,YAAA,EAAc,YAAY;AAMrE,IAAM,kBAAA,GAAqB,GAAA;AAC3B,IAAM,gBAAA,GAAmB,CAAA;AACzB,IAAM,gBAAA,GAAmB,EAAA;AAqBlB,SAAS,yBAAyB,YAAA,EAAiC;AACxE,EAAA,IAAI,OAAO,YAAA,KAAiB,QAAA,IAAY,YAAA,KAAiB,IAAA,SAAa,EAAC;AACvE,EAAA,MAAM,aAAc,YAAA,CAAyC,UAAA;AAC7D,EAAA,IAAI,OAAO,UAAA,KAAe,QAAA,IAAY,UAAA,KAAe,IAAA,SAAa,EAAC;AACnE,EAAA,OAAO,MAAA,CAAO,KAAK,UAAU,CAAA;AAC/B;AAGO,SAAS,gCAAgC,YAAA,EAAgC;AAC9E,EAAA,MAAM,QAAA,GAAW,yBAAyB,YAAY,CAAA;AACtD,EAAA,OAAO,2BAA2B,IAAA,CAAK,CAAC,SAAS,QAAA,CAAS,QAAA,CAAS,IAAI,CAAC,CAAA;AAC1E;AAEA,SAAS,SAAS,KAAA,EAAkD;AAClE,EAAA,OAAO,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,CAAC,KAAA,CAAM,QAAQ,KAAK,CAAA;AAC5E;AAEA,SAAS,QAAQ,MAAA,EAA0D;AACzE,EAAA,MAAM,OAAO,MAAA,CAAO,IAAA;AACpB,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU,2BAAW,GAAA,CAAI,CAAC,IAAI,CAAC,CAAA;AACnD,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,IAAK,IAAA,CAAK,KAAA,CAAM,CAAC,KAAA,KAAU,OAAO,KAAA,KAAU,QAAQ,CAAA,EAAG;AAC3E,IAAA,OAAO,IAAI,IAAI,IAAgB,CAAA;AAAA,EACjC;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,OAAA,CAAQ,QAAiC,QAAA,EAA6B;AAC7E,EAAA,OACE,MAAA,KAAW,MAAA,IACX,MAAA,CAAO,IAAA,KAAS,QAAA,CAAS,MAAA,IACzB,QAAA,CAAS,KAAA,CAAM,CAAC,KAAA,KAAU,MAAA,CAAO,GAAA,CAAI,KAAK,CAAC,CAAA;AAE/C;AAEA,SAAS,UAAA,CACP,OACA,MAAA,EACsD;AACtD,EAAA,IAAI,CAAC,SAAS,MAAM,CAAA,SAAU,EAAE,KAAA,EAAO,CAAA,kBAAA,EAAqB,KAAK,CAAA,wBAAA,CAAA,EAA2B;AAC5F,EAAA,MAAM,KAAA,GAAQ,QAAQ,MAAM,CAAA;AAC5B,EAAA,IAAI,OAAA,CAAQ,KAAA,EAAO,CAAC,SAAS,CAAC,CAAA,IAAK,MAAA,CAAO,IAAA,KAAS,MAAA,IAAa,MAAA,CAAO,KAAA,KAAU,MAAA,EAAW;AAC1F,IAAA,OAAO;AAAA,MACL,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,QAAA;AAAA,QACN,KAAA;AAAA,QACA,GAAI,OAAO,MAAA,CAAO,WAAA,KAAgB,QAAA,GAAW,EAAE,WAAA,EAAa,MAAA,CAAO,WAAA,EAAY,GAAI;AAAC;AACtF,KACF;AAAA,EACF;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA,EAAG;AAC9B,IAAA,IAAI,KAAA,KAAU,UAAa,CAAC,OAAA,CAAQ,OAAO,CAAC,QAAQ,CAAC,CAAA,EAAG;AACtD,MAAA,OAAO,EAAE,KAAA,EAAO,CAAA,kBAAA,EAAqB,KAAK,CAAA,uCAAA,CAAA,EAA0C;AAAA,IACtF;AACA,IAAA,MAAM,SAAS,MAAA,CAAO,IAAA;AACtB,IAAA,IAAI,CAAC,MAAA,CAAO,KAAA,CAAM,CAAC,KAAA,KAAU,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,EAAG;AAC3E,MAAA,OAAO,EAAE,KAAA,EAAO,CAAA,kBAAA,EAAqB,KAAK,CAAA,6CAAA,CAAA,EAAgD;AAAA,IAC5F;AACA,IAAA,IAAI,IAAI,GAAA,CAAI,MAAM,CAAA,CAAE,IAAA,KAAS,OAAO,MAAA,EAAQ;AAC1C,MAAA,OAAO,EAAE,KAAA,EAAO,CAAA,kBAAA,EAAqB,KAAK,CAAA,4BAAA,CAAA,EAA+B;AAAA,IAC3E;AACA,IAAA,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,IAAK,MAAA,CAAO,SAAS,kBAAA,EAAoB;AAC3D,MAAA,OAAO;AAAA,QACL,KAAA,EAAO,CAAA,kBAAA,EAAqB,KAAK,CAAA,wBAAA,EAAsB,kBAAkB,CAAA,OAAA;AAAA,OAC3E;AAAA,IACF;AACA,IAAA,OAAO;AAAA,MACL,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,QAAA;AAAA,QACN,KAAA;AAAA,QACA,OAAA,EAAS,MAAA,CAAO,WAAA,CAAa,MAAA,CAAoB,GAAA,CAAI,CAAC,KAAA,KAAU,CAAC,KAAA,EAAO,IAAI,CAAC,CAAC;AAAA;AAChF,KACF;AAAA,EACF;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA,EAAG;AAC/B,IAAA,MAAM,UAAU,MAAA,CAAO,KAAA;AACvB,IAAA,IACE,CAAC,OAAA,CAAQ,KAAA;AAAA,MACP,CAAC,KAAA,KACC,QAAA,CAAS,KAAK,CAAA,IACd,OAAO,IAAA,CAAK,KAAK,CAAA,CAAE,KAAA,CAAM,CAAC,GAAA,KAAQ,QAAQ,OAAA,IAAW,GAAA,KAAQ,aAAa,CAAA,IAC1E,OAAA,IAAW,KAAA,KACV,MAAM,WAAA,KAAgB,MAAA,IAAa,OAAO,KAAA,CAAM,WAAA,KAAgB,QAAA;AAAA,KACrE,EACA;AACA,MAAA,OAAO;AAAA,QACL,KAAA,EAAO,qBAAqB,KAAK,CAAA,wEAAA;AAAA,OACnC;AAAA,IACF;AACA,IAAA,MAAM,SAAU,OAAA,CAA4D,GAAA;AAAA,MAC1E,CAAC,UAAU,KAAA,CAAM;AAAA,KACnB;AACA,IAAA,IAAI,IAAI,GAAA,CAAI,MAAM,CAAA,CAAE,IAAA,KAAS,OAAO,MAAA,EAAQ;AAC1C,MAAA,OAAO,EAAE,KAAA,EAAO,CAAA,kBAAA,EAAqB,KAAK,CAAA,6BAAA,CAAA,EAAgC;AAAA,IAC5E;AACA,IAAA,IAAI,MAAA,CAAO,KAAA,CAAM,CAAC,KAAA,KAAU,OAAO,UAAU,QAAA,IAAY,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,EAAG;AAC1E,MAAA,IAAI,KAAA,KAAU,UAAa,CAAC,OAAA,CAAQ,OAAO,CAAC,QAAQ,CAAC,CAAA,EAAG;AACtD,QAAA,OAAO;AAAA,UACL,KAAA,EAAO,qBAAqB,KAAK,CAAA,+CAAA;AAAA,SACnC;AAAA,MACF;AACA,MAAA,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,IAAK,MAAA,CAAO,SAAS,kBAAA,EAAoB;AAC3D,QAAA,OAAO;AAAA,UACL,KAAA,EAAO,CAAA,kBAAA,EAAqB,KAAK,CAAA,wBAAA,EAAsB,kBAAkB,CAAA,QAAA;AAAA,SAC3E;AAAA,MACF;AACA,MAAA,OAAO;AAAA,QACL,QAAA,EAAU;AAAA,UACR,IAAA,EAAM,QAAA;AAAA,UACN,KAAA;AAAA,UACA,SAAS,MAAA,CAAO,WAAA;AAAA,YACb,OAAA,CAA2D,GAAA,CAAI,CAAC,KAAA,KAAU;AAAA,cACzE,KAAA,CAAM,KAAA;AAAA,cACN,MAAM,WAAA,IAAe;AAAA,aACtB;AAAA;AACH;AACF,OACF;AAAA,IACF;AACA,IAAA,IAAI,MAAA,CAAO,KAAA,CAAM,CAAC,KAAA,KAAU,OAAO,KAAA,KAAU,QAAA,IAAY,MAAA,CAAO,SAAA,CAAU,KAAK,CAAC,CAAA,EAAG;AACjF,MAAA,IAAI,KAAA,KAAU,UAAa,CAAC,OAAA,CAAQ,OAAO,CAAC,SAAS,CAAC,CAAA,EAAG;AACvD,QAAA,OAAO,EAAE,KAAA,EAAO,CAAA,kBAAA,EAAqB,KAAK,CAAA,+BAAA,CAAA,EAAkC;AAAA,MAC9E;AACA,MAAA,IAAI,MAAA,CAAO,MAAA,GAAS,gBAAA,IAAoB,MAAA,CAAO,SAAS,gBAAA,EAAkB;AACxE,QAAA,OAAO;AAAA,UACL,OAAO,CAAA,kBAAA,EAAqB,KAAK,CAAA,gBAAA,EAAmB,gBAAgB,SAAI,gBAAgB,CAAA,OAAA;AAAA,SAC1F;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,CAAC,GAAI,OAA0D,CAAA,CAAE,IAAA;AAAA,QAC/E,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,QAAQ,CAAA,CAAE;AAAA,OACxB;AACA,MAAA,OAAO;AAAA,QACL,QAAA,EAAU;AAAA,UACR,IAAA,EAAM,OAAA;AAAA,UACN,KAAA;AAAA,UACA,MAAA,EAAQ,OAAA,CAAQ,GAAA,CAAI,CAAC,KAAA,KAAU,MAAM,WAAA,IAAe,MAAA,CAAO,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,UACvE,QAAQ,OAAA,CAAQ,GAAA,CAAI,CAAC,KAAA,KAAU,MAAM,KAAK;AAAA;AAC5C,OACF;AAAA,IACF;AACA,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,qBAAqB,KAAK,CAAA,6EAAA;AAAA,KACnC;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,qBAAqB,KAAK,CAAA,uEAAA;AAAA,GACnC;AACF;AAaO,SAAS,qBAAqB,YAAA,EAA6C;AAChF,EAAA,IAAI,CAAC,+BAAA,CAAgC,YAAY,GAAG,OAAO,EAAE,YAAY,KAAA,EAAM;AAC/E,EAAA,MAAM,MAAA,GAAS,YAAA;AACf,EAAA,MAAM,aAAa,MAAA,CAAO,UAAA;AAC1B,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,IAAI,MAAA,CAAO,IAAA,KAAS,QAAA,EAAU,MAAA,CAAO,KAAK,4CAA4C,CAAA;AACtF,EAAA,IAAI,MAAA,CAAO,yBAAyB,KAAA,EAAO;AACzC,IAAA,MAAA,CAAO,KAAK,wDAAwD,CAAA;AAAA,EACtE;AACA,EAAA,MAAM,aAAa,UAAA,CAAW,UAAA;AAC9B,EAAA,IAAI,CAAC,QAAA,CAAS,UAAU,CAAA,IAAK,CAAC,OAAA,CAAQ,OAAA,CAAQ,UAAU,CAAA,EAAG,CAAC,QAAA,EAAU,MAAM,CAAC,CAAA,EAAG;AAC9E,IAAA,MAAA,CAAO,KAAK,6CAA6C,CAAA;AAAA,EAC3D;AACA,EAAA,MAAM,aAAa,UAAA,CAAW,UAAA;AAC9B,EAAA,IAAI,CAAC,QAAA,CAAS,UAAU,CAAA,IAAK,CAAC,OAAA,CAAQ,OAAA,CAAQ,UAAU,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA,EAAG;AACvE,IAAA,MAAA,CAAO,KAAK,oCAAoC,CAAA;AAAA,EAClD;AACA,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,CAAE,MAAA;AAAA,IAC7C,CAAC,IAAA,KAAS,CAAE,0BAAA,CAAiD,SAAS,IAAI;AAAA,GAC5E;AACA,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI,cAAA,CAAe,WAAW,CAAA,EAAG;AAC/B,IAAA,MAAA,CAAO,IAAA;AAAA,MACL,CAAA,kGAAA,EAAqG,eAAe,MAAM,CAAA,CAAA;AAAA,KAC5H;AAAA,EACF,CAAA,MAAO;AACL,IAAA,MAAM,MAAA,GAAS,WAAW,cAAA,CAAe,CAAC,GAAG,UAAA,CAAW,cAAA,CAAe,CAAC,CAAC,CAAC,CAAA;AAC1E,IAAA,IAAI,OAAA,IAAW,MAAA,EAAQ,MAAA,CAAO,IAAA,CAAK,OAAO,KAAK,CAAA;AAAA,oBAC/B,MAAA,CAAO,QAAA;AAAA,EACzB;AACA,EAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAA,GAAI,MAAA,CAAO,WAAW,EAAC;AACrE,EAAA,MAAM,gBAAA,GAAmB,CAAC,GAAG,cAAA,CAAe,MAAM,CAAA,EAAG,CAAC,CAAA,EAAG,GAAG,0BAA0B,CAAA;AACtF,EAAA,IACE,QAAA,CAAS,MAAA,KAAW,gBAAA,CAAiB,MAAA,IACrC,CAAC,gBAAA,CAAiB,KAAA,CAAM,CAAC,IAAA,KAAS,QAAA,CAAS,QAAA,CAAS,IAAI,CAAC,CAAA,EACzD;AACA,IAAA,MAAA,CAAO,IAAA,CAAK,CAAA,0BAAA,EAA6B,gBAAA,CAAiB,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAG,CAAA;AAAA,EAC9F;AACA,EAAA,IAAI,MAAA,CAAO,SAAS,CAAA,IAAK,CAAC,UAAU,OAAO,EAAE,UAAA,EAAY,IAAA,EAAM,MAAA,EAAO;AACtE,EAAA,OAAO,EAAE,UAAA,EAAY,IAAA,EAAM,QAAA,EAAS;AACtC;AAGO,SAAS,mBAAmB,YAAA,EAAuD;AACxF,EAAA,MAAM,KAAA,GAAQ,qBAAqB,YAAY,CAAA;AAC/C,EAAA,OAAO,KAAA,CAAM,UAAA,IAAc,UAAA,IAAc,KAAA,GAAQ,MAAM,QAAA,GAAW,MAAA;AACpE;AAOO,SAAS,gCACd,YAAA,EACyB;AACzB,EAAA,MAAM,UAAA,GAAa,EAAE,GAAI,YAAA,CAAa,UAAA,EAAuC;AAC7E,EAAA,KAAA,MAAW,IAAA,IAAQ,0BAAA,EAA4B,OAAO,UAAA,CAAW,IAAI,CAAA;AACrE,EAAA,MAAM,WAAW,KAAA,CAAM,OAAA,CAAQ,aAAa,QAAQ,CAAA,GAChD,aAAa,QAAA,CAAS,MAAA;AAAA,IACpB,CAAC,IAAA,KAAS,CAAE,2BAAiD,QAAA,CAAS,MAAA,CAAO,IAAI,CAAC;AAAA,GACpF,GACA,MAAA;AACJ,EAAA,OAAO,EAAE,GAAG,YAAA,EAAc,UAAA,EAAY,GAAI,WAAW,EAAE,QAAA,EAAS,GAAI,EAAC,EAAG;AAC1E;;;AChQO,IAAM,sBAAA,GAAyB,OAAO,MAAA,CAAO;AAAA,EAClD,SAAA,EAAW,IAAA;AAAA,EACX,SAAA,EAAW,GAAA;AAAA,EACX,UAAA,EAAY,EAAA;AAAA,EACZ,eAAA,EAAiB,EAAA;AAAA,EACjB,kBAAA,EAAoB;AACtB,CAAC;AAgCM,IAAM,yBAAA,GAA4B,iBAAA;AAGlC,SAAS,8BAA8B,KAAA,EAA0B;AACtE,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,QAAA,CAAS,iBAAiB,GAAG,CAAC,KAAA,KAAU,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,EAC1E;AACA,EAAA,IAAI,MAAM,OAAA,CAAQ,KAAK,GAAG,OAAO,KAAA,CAAM,QAAQ,6BAA6B,CAAA;AAC5E,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,SAAa,EAAC;AACzD,EAAA,OAAO,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,CAAE,QAAQ,6BAA6B,CAAA;AACnE;AAGO,IAAM,mBAAA,GAAN,cAAkC,KAAA,CAAM;AAAA;AAAA,EAE3B,IAAA,GAAO,qBAAA;AAAA;AAAA,EAGhB,WAAA;AAAA;AAAA,EAGA,eAAA;AAAA,EAET,WAAA,CAAY,OAAA,EAAiB,WAAA,EAAsB,eAAA,EAA0B;AAC3E,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AACnB,IAAA,IAAA,CAAK,eAAA,GAAkB,eAAA;AAAA,EACzB;AACF;AASA,SAAS,eAAA,CACP,OAAA,EACA,QAAA,EACA,WAAA,EACA,eAAA,EACqB;AACrB,EAAA,OAAO,IAAI,mBAAA;AAAA,IACT,QAAA,KAAa,SACT,CAAA,gBAAA,EAAmB,OAAO,KAC1B,CAAA,gBAAA,EAAmB,OAAO,OAAO,QAAQ,CAAA,CAAA;AAAA,IAC7C,WAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,WAAA,CAAY,QAAgB,KAAA,EAA+C;AAClF,EAAA,MAAM,KAAA,GAAQ,OAAO,KAAK,CAAA;AAC1B,EAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,EAAA,IAAI,QAAQ,KAAA,GAAQ,CAAA;AACpB,EAAA,OAAO,KAAA,GAAQ,OAAO,MAAA,EAAQ;AAC5B,IAAA,MAAM,SAAA,GAAY,OAAO,KAAK,CAAA;AAC9B,IAAA,IAAI,cAAc,KAAA,EAAO,OAAO,EAAE,KAAA,EAAO,GAAA,EAAK,QAAQ,CAAA,EAAE;AACxD,IAAA,IAAI,cAAc,IAAA,EAAM;AACtB,MAAA,KAAA,IAAS,SAAA;AACT,MAAA,KAAA,EAAA;AACA,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA;AAChC,IAAA,IAAI,OAAA,KAAY,MAAA,EAAW,MAAM,eAAA,CAAgB,8BAA8B,KAAK,CAAA;AACpF,IAAA,MAAM,YAAA,GAAuC;AAAA,MAC3C,IAAA,EAAM,IAAA;AAAA,MACN,GAAA,EAAK,GAAA;AAAA,MACL,GAAA,EAAK,GAAA;AAAA,MACL,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,GAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG;AAAA,KACL;AACA,IAAA,IAAI,YAAY,GAAA,EAAK;AACnB,MAAA,MAAM,MAAM,MAAA,CAAO,KAAA,CAAM,KAAA,GAAQ,CAAA,EAAG,QAAQ,CAAC,CAAA;AAC7C,MAAA,IAAI,CAAC,kBAAA,CAAmB,IAAA,CAAK,GAAG,CAAA,EAAG;AACjC,QAAA,MAAM,eAAA,CAAgB,iCAAiC,KAAK,CAAA;AAAA,MAC9D;AACA,MAAA,KAAA,IAAS,OAAO,YAAA,CAAa,MAAA,CAAO,QAAA,CAAS,GAAA,EAAK,EAAE,CAAC,CAAA;AACrD,MAAA,KAAA,IAAS,CAAA;AACT,MAAA;AAAA,IACF;AACA,IAAA,IAAI,EAAE,OAAA,IAAW,YAAA,CAAA,EAAe,MAAM,eAAA,CAAgB,yBAAyB,KAAK,CAAA;AACpF,IAAA,KAAA,IAAS,aAAa,OAAO,CAAA;AAC7B,IAAA,KAAA,IAAS,CAAA;AAAA,EACX;AACA,EAAA,MAAM,eAAA,CAAgB,8BAA8B,KAAK,CAAA;AAC3D;AAEA,SAAS,SAAS,MAAA,EAAyB;AACzC,EAAA,IAAI,MAAA,CAAO,MAAA,GAAS,sBAAA,CAAuB,SAAA,EAAW;AACpD,IAAA,MAAM,eAAA,CAAgB,CAAA,4BAAA,EAA+B,sBAAA,CAAuB,SAAS,CAAA,CAAE,CAAA;AAAA,EACzF;AAEA,EAAA,MAAM,SAAkB,EAAC;AACzB,EAAA,MAAM,GAAA,GAAM,CAAC,KAAA,KAAuB;AAClC,IAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AACjB,IAAA,IAAI,MAAA,CAAO,MAAA,GAAS,sBAAA,CAAuB,SAAA,EAAW;AACpD,MAAA,MAAM,eAAA,CAAgB,CAAA,2BAAA,EAA8B,sBAAA,CAAuB,SAAS,CAAA,CAAE,CAAA;AAAA,IACxF;AAAA,EACF,CAAA;AAEA,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAA,OAAO,KAAA,GAAQ,OAAO,MAAA,EAAQ;AAC5B,IAAA,MAAM,SAAA,GAAY,OAAO,KAAK,CAAA;AAC9B,IAAA,IAAI,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,EAAG;AACxB,MAAA,KAAA,EAAA;AACA,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,CAAM,KAAA,EAAO,QAAQ,CAAC,CAAA;AAC1C,IAAA,IAAI,CAAC,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI,CAAA,CAAE,QAAA,CAAS,IAAI,CAAA,EAAG;AACvD,MAAA,GAAA,CAAI,EAAE,IAAA,EAAM,UAAA,EAAY,OAAO,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA;AACtD,MAAA,KAAA,IAAS,CAAA;AACT,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAAC,GAAA,EAAK,GAAA,EAAK,GAAG,CAAA,CAAE,QAAA,CAAS,SAAS,CAAA,EAAG;AACvC,MAAA,GAAA,CAAI,EAAE,IAAA,EAAM,UAAA,EAAY,OAAO,SAAA,EAAW,QAAA,EAAU,OAAO,CAAA;AAC3D,MAAA,KAAA,EAAA;AACA,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAAC,KAAK,GAAA,EAAK,GAAA,EAAK,KAAK,GAAG,CAAA,CAAE,QAAA,CAAS,SAAS,CAAA,EAAG;AACjD,MAAA,GAAA,CAAI,EAAE,IAAA,EAAM,aAAA,EAAe,OAAO,SAAA,EAAW,QAAA,EAAU,OAAO,CAAA;AAC9D,MAAA,KAAA,EAAA;AACA,MAAA;AAAA,IACF;AACA,IAAA,IAAI,SAAA,KAAc,GAAA,IAAO,SAAA,KAAc,GAAA,EAAK;AAC1C,MAAA,MAAM,MAAA,GAAS,WAAA,CAAY,MAAA,EAAQ,KAAK,CAAA;AACxC,MAAA,GAAA,CAAI,EAAE,MAAM,OAAA,EAAS,KAAA,EAAO,OAAO,KAAA,EAAO,QAAA,EAAU,OAAO,CAAA;AAC3D,MAAA,KAAA,GAAQ,MAAA,CAAO,GAAA;AACf,MAAA;AAAA,IACF;AAEA,IAAA,MAAMA,UAAS,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,CAAE,MAAM,8CAA8C,CAAA;AACvF,IAAA,IAAIA,OAAAA,EAAQ;AACV,MAAA,GAAA,CAAI,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,MAAA,CAAOA,OAAAA,CAAO,CAAC,CAAC,CAAA,EAAG,QAAA,EAAU,KAAA,EAAO,CAAA;AAChE,MAAA,KAAA,IAASA,OAAAA,CAAO,CAAC,CAAA,CAAE,MAAA;AACnB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,OAAO,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,CAAE,MAAM,2BAA2B,CAAA;AAClE,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,MAAM,GAAA,GAAM,KAAK,CAAC,CAAA;AAClB,MAAA,IAAI,GAAA,KAAQ,MAAA,EAAQ,GAAA,CAAI,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,CAAA;AAAA,WAAA,IAC9D,GAAA,KAAQ,OAAA,EAAS,GAAA,CAAI,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,CAAA;AAAA,WAAA,IACrE,GAAA,KAAQ,MAAA,EAAQ,GAAA,CAAI,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,CAAA;AAAA,WAAA,IACnE,GAAA,KAAQ,IAAA,EAAM,GAAA,CAAI,EAAE,IAAA,EAAM,YAAY,KAAA,EAAO,GAAA,EAAK,QAAA,EAAU,KAAA,EAAO,CAAA;AAAA,WACvE,GAAA,CAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,GAAA,EAAK,QAAA,EAAU,OAAO,CAAA;AACtD,MAAA,KAAA,IAAS,GAAA,CAAI,MAAA;AACb,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,gBAAgB,CAAA,2BAAA,EAA8B,IAAA,CAAK,UAAU,SAAS,CAAC,IAAI,KAAK,CAAA;AAAA,EACxF;AACA,EAAA,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,KAAA,EAAO,OAAO,EAAA,EAAI,QAAA,EAAU,MAAA,CAAO,MAAA,EAAQ,CAAA;AAC/D,EAAA,OAAO,MAAA;AACT;AAEA,IAAM,0CAA0B,IAAI,GAAA,CAAI,CAAC,WAAA,EAAa,WAAA,EAAa,aAAa,CAAC,CAAA;AAEjF,SAAS,QAAA,CAAS,KAAA,EAAgB,OAAA,EAAiB,QAAA,EAAkB,IAAA,EAAuB;AAC1F,EAAA,IAAK,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,KAAU,UAAA,IAAe,UAAU,IAAA,EAAM;AAChF,IAAA,MAAM,eAAA,CAAgB,qBAAA,EAAuB,QAAA,EAAU,IAAI,CAAA;AAAA,EAC7D;AACA,EAAA,IAAI,CAAC,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,OAAO,CAAA,EAAG;AAClC,IAAA,MAAM,eAAA,CAAgB,qBAAA,EAAuB,QAAA,EAAU,IAAI,CAAA;AAAA,EAC7D;AACA,EAAA,OAAQ,MAAkC,OAAO,CAAA;AACnD;AAWA,SAAS,cAAA,CAAe,KAAa,QAAA,EAA6B;AAChE,EAAA,MAAM,QAAA,GAAW,GAAA,CAAI,KAAA,CAAM,GAAG,CAAA;AAC9B,EAAA,IAAI,QAAA,CAAS,MAAA,GAAS,sBAAA,CAAuB,eAAA,EAAiB;AAC5D,IAAA,MAAM,eAAA;AAAA,MACJ,CAAA,oCAAA,EAAuC,uBAAuB,eAAe,CAAA,CAAA;AAAA,MAC7E;AAAA,KACF;AAAA,EACF;AACA,EAAA,IAAI,SAAS,IAAA,CAAK,CAAC,YAAY,OAAA,CAAQ,MAAA,KAAW,CAAC,CAAA,EAAG;AACpD,IAAA,MAAM,eAAA,CAAgB,kCAAkC,QAAQ,CAAA;AAAA,EAClE;AACA,EAAA,MAAM,SAAA,GAAY,SAAS,IAAA,CAAK,CAAC,YAAY,uBAAA,CAAwB,GAAA,CAAI,OAAO,CAAC,CAAA;AACjF,EAAA,IAAI,WAAW,MAAM,eAAA,CAAgB,CAAA,gCAAA,EAAmC,SAAS,IAAI,QAAQ,CAAA;AAE7F,EAAA,IAAI,SAAS,CAAC,CAAA,KAAM,UAAU,QAAA,CAAS,CAAC,MAAM,OAAA,EAAS;AACrD,IAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,MAAA,MAAM,eAAA,CAAgB,wCAAwC,QAAQ,CAAA;AAAA,IACxE;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,WAAW,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,EAAE;AAAA,EACvD;AACA,EAAA,IAAI,SAAS,CAAC,CAAA,KAAM,UAAA,IAAc,QAAA,CAAS,UAAU,CAAA,EAAG;AACtD,IAAA,OAAO,EAAE,IAAA,EAAM,UAAA,EAAY,WAAW,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,EAAE;AAAA,EAC1D;AACA,EAAA,IAAI,QAAA,CAAS,CAAC,CAAA,KAAM,OAAA,IAAW,QAAA,CAAS,WAAW,CAAA,IAAK,QAAA,CAAS,CAAC,CAAA,KAAM,QAAA,EAAU;AAChF,IAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,WAAW,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,EAAE;AAAA,EACvD;AACA,EAAA,IACE,QAAA,CAAS,CAAC,CAAA,KAAM,OAAA,IAChB,SAAS,MAAA,IAAU,CAAA,IACnB,QAAA,CAAS,CAAC,CAAA,KAAM,QAAA,IAChB,QAAA,CAAS,CAAC,MAAM,QAAA,EAChB;AACA,IAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,MAAA,MAAM,eAAA,CAAgB,wCAAwC,QAAQ,CAAA;AAAA,IACxE;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,EAAG,cAAA,EAAgB,QAAA,CAAS,CAAC,CAAA,EAAE;AAAA,EACpF;AACA,EAAA,MAAM,eAAA,CAAgB,CAAA,0BAAA,EAA6B,GAAG,CAAA,CAAA,EAAI,QAAQ,CAAA;AACpE;AAGA,SAAS,QAAA,CACP,KAAA,EACA,GAAA,EACA,OAAA,EACA,QAAA,EACS;AACT,EAAA,IAAI,KAAA;AACJ,EAAA,IAAI,KAAA,CAAM,SAAS,OAAA,EAAS;AAC1B,IAAA,KAAA,GAAQ,QAAQ,IAAA,CAAK,KAAA;AAAA,EACvB,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,UAAA,EAAY;AACpC,IAAA,KAAA,GAAQ,OAAA,CAAQ,YAAY,EAAC;AAAA,EAC/B,CAAA,MAAO;AACL,IAAA,KAAA,GAAQ,OAAA,CAAQ,KAAA;AAGhB,IAAA,MAAM,WAAW,KAAA,CAAM,cAAA;AACvB,IAAA,IACE,QAAA,KAAa,MAAA,IACb,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,KAAA,EAAO,QAAQ,CAAA,IACrC,OAAA,CAAQ,KAAA,CAAM,QAAQ,CAAA,CAAE,WAAW,SAAA,EACnC;AACA,MAAA,MAAM,eAAA;AAAA,QACJ,CAAA,YAAA,EAAe,GAAG,CAAA,gBAAA,EAAmB,QAAQ,CAAA,mCAAA,CAAA;AAAA,QAC7C,QAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,KAAA,MAAW,OAAA,IAAW,MAAM,SAAA,EAAW,KAAA,GAAQ,SAAS,KAAA,EAAO,OAAA,EAAS,UAAU,GAAG,CAAA;AACrF,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,OAAA,CAAQ,QAAA,EAAkB,IAAA,EAAe,KAAA,EAAgB,QAAA,EAA2B;AAC3F,EAAA,IAAI,aAAa,IAAA,EAAM,OAAO,MAAA,CAAO,EAAA,CAAG,MAAM,KAAK,CAAA;AACnD,EAAA,IAAI,aAAa,IAAA,EAAM,OAAO,CAAC,MAAA,CAAO,EAAA,CAAG,MAAM,KAAK,CAAA;AACpD,EAAA,IAAI,aAAa,IAAA,EAAM;AACrB,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA;AACtB,MAAA,MAAM,eAAA,CAAgB,wCAAwC,QAAQ,CAAA;AACxE,IAAA,IAAI,KAAA,CAAM,MAAA,GAAS,sBAAA,CAAuB,kBAAA,EAAoB;AAC5D,MAAA,MAAM,eAAA;AAAA,QACJ,CAAA,qCAAA,EAAwC,uBAAuB,kBAAkB,CAAA,CAAA;AAAA,QACjF;AAAA,OACF;AAAA,IACF;AACA,IAAA,OAAO,KAAA,CAAM,KAAK,CAAC,SAAA,KAAc,OAAO,EAAA,CAAG,SAAA,EAAW,IAAI,CAAC,CAAA;AAAA,EAC7D;AACA,EAAA,IACE,EACG,OAAO,IAAA,KAAS,QAAA,IAAY,OAAO,KAAA,KAAU,QAAA,IAC7C,OAAO,IAAA,KAAS,QAAA,IAAY,OAAO,KAAA,KAAU,QAAA,CAAA,EAEhD;AACA,IAAA,MAAM,eAAA,CAAgB,CAAA,iCAAA,EAAoC,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA;AAAA,EAChF;AACA,EAAA,IAAI,QAAA,KAAa,GAAA,EAAK,OAAO,IAAA,GAAO,KAAA;AACpC,EAAA,IAAI,QAAA,KAAa,IAAA,EAAM,OAAO,IAAA,IAAQ,KAAA;AACtC,EAAA,IAAI,QAAA,KAAa,GAAA,EAAK,OAAO,IAAA,GAAO,KAAA;AACpC,EAAA,IAAI,QAAA,KAAa,IAAA,EAAM,OAAO,IAAA,IAAQ,KAAA;AACtC,EAAA,MAAM,eAAA,CAAgB,CAAA,8BAAA,EAAiC,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA;AAC7E;AAEA,IAAM,cAAA,0BAAwB,gBAAgB,CAAA;AAC9C,IAAM,WAAA,0BAAqB,aAAa,CAAA;AAOxC,SAAS,aAAa,KAAA,EAAqC;AACzD,EAAA,OACE,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,IAAS,MAAqB,MAAA,KAAW,WAAA;AAEpF;AAEA,SAAS,iBAAiB,KAAA,EAAyB;AACjD,EAAA,OAAO,OAAO,KAAA,KAAU,SAAA,IAAa,KAAA,KAAU,cAAA,IAAkB,aAAa,KAAK,CAAA;AACrF;AAEA,SAAS,oBAAA,CAAqB,OAAgB,QAAA,EAAwB;AACpE,EAAA,IAAI,CAAC,gBAAA,CAAiB,KAAK,GAAG,MAAM,eAAA,CAAgB,6BAA6B,QAAQ,CAAA;AAC3F;AAcA,IAAM,oBAAA,GAAuB,CAAC,IAAA,EAAM,IAAA,EAAM,KAAK,IAAA,EAAM,GAAA,EAAK,MAAM,IAAI,CAAA;AAGpE,IAAM,oBAAN,MAAwB;AAAA,EAItB,YAA6B,MAAA,EAAiB;AAAjB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAAkB;AAAA,EAAlB,MAAA;AAAA,EAHrB,KAAA,GAAQ,CAAA;AAAA,EACR,OAAA,GAAU,CAAA;AAAA,EAIlB,KAAA,GAAkB;AAChB,IAAA,MAAM,IAAA,GAAO,KAAK,OAAA,EAAQ;AAC1B,IAAA,MAAM,QAAA,GAAW,KAAK,IAAA,EAAK;AAC3B,IAAA,IAAI,QAAA,CAAS,SAAS,KAAA,EAAO;AAC3B,MAAA,MAAM,eAAA;AAAA,QACJ,CAAA,0BAAA,EAA6B,MAAA,CAAO,QAAA,CAAS,KAAK,CAAC,CAAA,CAAA;AAAA,QACnD,QAAA,CAAS;AAAA,OACX;AAAA,IACF;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,IAAA,GAAc;AACpB,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AAAA,EAC/B;AAAA,EAEQ,IAAA,GAAc;AACpB,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,KAAA,EAAO,CAAA;AAAA,EACjC;AAAA,EAEQ,OAAO,KAAA,EAAkC;AAC/C,IAAA,IAAI,IAAA,CAAK,IAAA,EAAK,CAAE,KAAA,KAAU,OAAO,OAAO,MAAA;AACxC,IAAA,OAAO,KAAK,IAAA,EAAK;AAAA,EACnB;AAAA,EAEQ,OAAA,GAAoB;AAC1B,IAAA,MAAM,QAAA,GAAW,CAAC,IAAA,CAAK,QAAA,EAAU,CAAA;AACjC,IAAA,MAAM,YAAsB,EAAC;AAC7B,IAAA,OAAO,IAAA,CAAK,IAAA,EAAK,CAAE,KAAA,KAAU,IAAA,EAAM;AACjC,MAAA,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,IAAA,EAAK,CAAE,QAAQ,CAAA;AACnC,MAAA,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,QAAA,EAAU,CAAA;AAAA,IAC/B;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,SAAA,EAAU;AAAA,EAC3C;AAAA,EAEQ,QAAA,GAAqB;AAC3B,IAAA,MAAM,QAAA,GAAW,CAAC,IAAA,CAAK,eAAA,EAAiB,CAAA;AACxC,IAAA,MAAM,YAAsB,EAAC;AAC7B,IAAA,OAAO,IAAA,CAAK,IAAA,EAAK,CAAE,KAAA,KAAU,IAAA,EAAM;AACjC,MAAA,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,IAAA,EAAK,CAAE,QAAQ,CAAA;AACnC,MAAA,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,eAAA,EAAiB,CAAA;AAAA,IACtC;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,SAAA,EAAU;AAAA,EAC5C;AAAA,EAEQ,eAAA,GAA4B;AAClC,IAAA,MAAM,IAAA,GAAO,KAAK,UAAA,EAAW;AAC7B,IAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,EAAK;AACxB,IAAA,IAAI,KAAA,CAAM,IAAA,KAAS,UAAA,IAAc,CAAC,oBAAA,CAAqB,SAAS,MAAA,CAAO,KAAA,CAAM,KAAK,CAAC,CAAA,EAAG;AACpF,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,IAAA,CAAK,IAAA,EAAK;AACV,IAAA,MAAM,KAAA,GAAQ,KAAK,UAAA,EAAW;AAC9B,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,SAAA;AAAA,MACN,QAAA,EAAU,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAAA,MAC5B,IAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAU,KAAA,CAAM;AAAA,KAClB;AAAA,EACF;AAAA,EAEQ,UAAA,GAAuB;AAC7B,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA;AAChC,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,OAAO,EAAE,MAAM,KAAA,EAAO,OAAA,EAAS,KAAK,UAAA,EAAW,EAAG,QAAA,EAAU,QAAA,CAAS,QAAA,EAAS;AAAA,IAChF;AACA,IAAA,OAAO,KAAK,YAAA,EAAa;AAAA,EAC3B;AAAA,EAEQ,YAAA,GAAyB;AAC/B,IAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,EAAK;AACxB,IAAA,IAAI,KAAA,CAAM,SAAS,OAAA,EAAS,OAAO,EAAE,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM;AACzE,IAAA,IAAI,KAAA,CAAM,SAAS,MAAA,EAAQ;AACzB,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAC/B,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,MAAA;AAAA,QACN,IAAA;AAAA,QACA,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,KAAA,EAAO,cAAA,CAAe,IAAA,EAAM,KAAA,CAAM,QAAQ;AAAA,OAC5C;AAAA,IACF;AACA,IAAA,IAAI,KAAA,CAAM,UAAU,GAAA,EAAK;AACvB,MAAA,IAAA,CAAK,YAAA,CAAa,MAAM,QAAQ,CAAA;AAChC,MAAA,MAAM,KAAA,GAAQ,KAAK,OAAA,EAAQ;AAC3B,MAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA;AAClB,QAAA,MAAM,eAAA,CAAgB,kCAAA,EAAoC,KAAA,CAAM,QAAQ,CAAA;AAC1E,MAAA,IAAA,CAAK,OAAA,EAAA;AACL,MAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM;AAAA,IAChC;AACA,IAAA,IAAI,KAAA,CAAM,UAAU,GAAA,EAAK;AACvB,MAAA,IAAA,CAAK,YAAA,CAAa,MAAM,QAAQ,CAAA;AAChC,MAAA,MAAM,QAAoB,EAAC;AAC3B,MAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA,EAAG;AACrB,QAAA;AAAG,UAAA,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,YAAA,EAAc,CAAA;AAAA,eAC1B,IAAA,CAAK,OAAO,GAAG,CAAA;AACtB,QAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA;AAClB,UAAA,MAAM,eAAA,CAAgB,8BAAA,EAAgC,KAAA,CAAM,QAAQ,CAAA;AAAA,MACxE;AACA,MAAA,IAAA,CAAK,OAAA,EAAA;AACL,MAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAM;AAAA,IAC/B;AACA,IAAA,MAAM,eAAA,CAAgB,6BAA6B,MAAA,CAAO,KAAA,CAAM,KAAK,CAAC,CAAA,CAAA,EAAI,MAAM,QAAQ,CAAA;AAAA,EAC1F;AAAA,EAEQ,aAAa,QAAA,EAAwB;AAC3C,IAAA,IAAA,CAAK,OAAA,EAAA;AACL,IAAA,IAAI,IAAA,CAAK,OAAA,GAAU,sBAAA,CAAuB,UAAA,EAAY;AACpD,MAAA,MAAM,eAAA;AAAA,QACJ,CAAA,6BAAA,EAAgC,uBAAuB,UAAU,CAAA,CAAA;AAAA,QACjE;AAAA,OACF;AAAA,IACF;AAAA,EACF;AACF,CAAA;AAOA,IAAM,qBAAN,MAAyB;AAAA,EACd,UAAA,uBAAiB,GAAA,EAAqB;AAAA,EACtC,cAA0C,EAAC;AAAA;AAAA,EAEnC,cAA0B,EAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMpC,aAAuB,EAAC;AAAA;AAAA,EAExB,kBAA4B,EAAC;AAAA,EAE7B,MAAA,CAAO,MAAc,cAAA,EAA+B;AAC1D,IAAA,IAAA,CAAK,UAAA,CAAW,IAAI,IAAA,EAAA,CAAO,IAAA,CAAK,WAAW,GAAA,CAAI,IAAI,CAAA,IAAK,KAAA,KAAU,cAAc,CAAA;AAAA,EAClF;AAAA,EAEQ,cAAA,CAAe,OAAgB,QAAA,EAAwB;AAC7D,IAAA,oBAAA,CAAqB,OAAO,QAAQ,CAAA;AACpC,IAAA,IAAI,aAAa,KAAK,CAAA,OAAQ,MAAA,CAAO,KAAA,CAAM,MAAM,IAAI,CAAA;AAAA,EACvD;AAAA;AAAA,EAGA,QAAQ,IAAA,EAAyB;AAC/B,IAAA,QAAQ,KAAK,IAAA;AAAM,MACjB,KAAK,SAAA;AACH,QAAA,OAAO,IAAA,CAAK,KAAA;AAAA,MACd,KAAK,MAAA;AACH,QAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,KAAK,CAAA;AAC5B,QAAA,OAAO,EAAE,MAAA,EAAQ,WAAA,EAAa,IAAA,EAAM,KAAK,IAAA,EAAK;AAAA,MAChD,KAAK,MAAA;AACH,QAAA,OAAO,IAAA,CAAK,MAAM,GAAA,CAAI,CAAC,SAAS,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAC,CAAA;AAAA,MACpD,KAAK,OAAA;AACH,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA;AAAA,MAChC,KAAK,KAAA,EAAO;AACV,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAA;AACvC,QAAA,IAAA,CAAK,cAAA,CAAe,KAAA,EAAO,IAAA,CAAK,QAAQ,CAAA;AACxC,QAAA,OAAO,cAAA;AAAA,MACT;AAAA,MACA,KAAK,SAAA,EAAW;AACd,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA;AACnC,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA;AACrC,QAAA,IAAA,CAAK,YAAY,IAAA,CAAK;AAAA,UACpB,UAAU,IAAA,CAAK,QAAA;AAAA,UACf,IAAA,EAAM,YAAA,CAAa,IAAI,CAAA,GAAI,EAAE,IAAA,EAAM,IAAA,CAAK,IAAA,EAAK,GAAI,EAAE,OAAA,EAAS,IAAA,EAAK;AAAA,UACjE,KAAA,EAAO,YAAA,CAAa,KAAK,CAAA,GAAI,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAK,GAAI,EAAE,OAAA,EAAS,KAAA,EAAM;AAAA,UACrE,MAAA,EAAQ,IAAA,CAAK,WAAA,CAAY,IAAA;AAAK,SAC/B,CAAA;AACD,QAAA,IAAA,CAAK,UAAA,GACH,IAAA,CAAK,QAAA,KAAa,IAAA,IAAQ,YAAA,CAAa,IAAI,CAAA,IAAK,KAAA,KAAU,IAAA,GAAO,CAAC,IAAA,CAAK,IAAI,IAAI,EAAC;AAClF,QAAA,OAAO,cAAA;AAAA,MACT;AAAA,MACA,KAAK,KAAA;AACH,QAAA,OAAO,IAAA,CAAK,WAAW,IAAI,CAAA;AAAA,MAC7B,KAAK,IAAA;AACH,QAAA,OAAO,IAAA,CAAK,UAAU,IAAI,CAAA;AAAA;AAC9B,EACF;AAAA,EAEQ,eAAe,IAAA,EAAyB;AAC9C,IAAA,IAAI,KAAK,IAAA,KAAS,SAAA,EAAW,OAAO,IAAA,CAAK,QAAQ,IAAI,CAAA;AACrD,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA;AAC/B,IAAA,IAAA,CAAK,aAAa,IAAA,CAAK,IAAA,KAAS,OAAA,GAAU,IAAA,CAAK,kBAAkB,EAAC;AAClE,IAAA,OAAO,KAAA;AAAA,EACT;AAAA,EAEQ,WAAW,IAAA,EAAmD;AAGpE,IAAA,MAAM,SAAmB,EAAC;AAC1B,IAAA,IAAA,CAAK,WAAA,CAAY,KAAK,MAAM,CAAA;AAC5B,IAAA,IAAI;AACF,MAAA,IAAI,QAAQ,IAAA,CAAK,cAAA,CAAe,IAAA,CAAK,QAAA,CAAS,CAAC,CAAC,CAAA;AAChD,MAAA,MAAA,CAAO,IAAA,CAAK,GAAG,IAAA,CAAK,UAAU,CAAA;AAC9B,MAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,IAAA,CAAK,QAAA,CAAS,QAAQ,KAAA,EAAA,EAAS;AACzD,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,SAAA,CAAU,KAAA,GAAQ,CAAC,CAAA;AACzC,QAAA,IAAA,CAAK,cAAA,CAAe,OAAO,QAAQ,CAAA;AACnC,QAAA,MAAM,QAAQ,IAAA,CAAK,cAAA,CAAe,IAAA,CAAK,QAAA,CAAS,KAAK,CAAC,CAAA;AACtD,QAAA,MAAA,CAAO,IAAA,CAAK,GAAG,IAAA,CAAK,UAAU,CAAA;AAC9B,QAAA,IAAA,CAAK,cAAA,CAAe,OAAO,QAAQ,CAAA;AACnC,QAAA,KAAA,GAAQ,cAAA;AAAA,MACV;AACA,MAAA,IAAA,CAAK,eAAA,GAAkB,CAAC,GAAG,MAAM,CAAA;AACjC,MAAA,OAAO,KAAA;AAAA,IACT,CAAA,SAAE;AACA,MAAA,IAAA,CAAK,YAAY,GAAA,EAAI;AAAA,IACvB;AAAA,EACF;AAAA,EAEQ,UAAU,IAAA,EAAkD;AAClE,IAAA,IAAI,QAAQ,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,QAAA,CAAS,CAAC,CAAC,CAAA;AACzC,IAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,IAAA,CAAK,QAAA,CAAS,QAAQ,KAAA,EAAA,EAAS;AACzD,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,SAAA,CAAU,KAAA,GAAQ,CAAC,CAAA;AACzC,MAAA,IAAA,CAAK,cAAA,CAAe,OAAO,QAAQ,CAAA;AACnC,MAAA,MAAM,QAAQ,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,QAAA,CAAS,KAAK,CAAC,CAAA;AAC/C,MAAA,IAAA,CAAK,cAAA,CAAe,OAAO,QAAQ,CAAA;AACnC,MAAA,KAAA,GAAQ,cAAA;AAAA,IACV;AACA,IAAA,IAAI,KAAK,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG,IAAA,CAAK,kBAAkB,EAAC;AACtD,IAAA,OAAO,KAAA;AAAA,EACT;AACF,CAAA;AAEA,SAAS,kBAAA,CAAmB,OAAgB,QAAA,EAAwB;AAClE,EAAA,IAAI,OAAO,KAAA,KAAU,SAAA,EAAW,MAAM,eAAA,CAAgB,6BAA6B,QAAQ,CAAA;AAC7F;AAQA,SAAS,YAAA,CACP,IAAA,EACA,OAAA,EACA,MAAA,EACS;AACT,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,SAAA;AACH,MAAA,OAAO,IAAA,CAAK,KAAA;AAAA,IACd,KAAK,MAAA;AACH,MAAA,MAAA,GAAS,KAAK,IAAI,CAAA;AAClB,MAAA,OAAO,SAAS,IAAA,CAAK,KAAA,EAAO,KAAK,IAAA,EAAM,OAAA,EAAS,KAAK,QAAQ,CAAA;AAAA,IAC/D,KAAK,MAAA;AACH,MAAA,OAAO,IAAA,CAAK,MAAM,GAAA,CAAI,CAAC,SAAS,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAM,CAAC,CAAA;AAAA,IACrE,KAAK,OAAA;AACH,MAAA,OAAO,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,OAAA,EAAS,MAAM,CAAA;AAAA,IACjD,KAAK,KAAA,EAAO;AACV,MAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,CAAK,OAAA,EAAS,SAAS,MAAM,CAAA;AACxD,MAAA,kBAAA,CAAmB,KAAA,EAAO,KAAK,QAAQ,CAAA;AACvC,MAAA,OAAO,KAAA,KAAU,KAAA;AAAA,IACnB;AAAA,IACA,KAAK,SAAA;AACH,MAAA,OAAO,OAAA;AAAA,QACL,IAAA,CAAK,QAAA;AAAA,QACL,YAAA,CAAa,IAAA,CAAK,IAAA,EAAM,OAAA,EAAS,MAAM,CAAA;AAAA,QACvC,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,OAAA,EAAS,MAAM,CAAA;AAAA,QACxC,IAAA,CAAK;AAAA,OACP;AAAA,IACF,KAAK,KAAA;AAAA,IACL,KAAK,IAAA,EAAM;AAET,MAAA,MAAM,UAAA,GAAa,KAAK,IAAA,KAAS,KAAA;AACjC,MAAA,IAAI,QAAQ,YAAA,CAAa,IAAA,CAAK,SAAS,CAAC,CAAA,EAAG,SAAS,MAAM,CAAA;AAC1D,MAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,IAAA,CAAK,QAAA,CAAS,QAAQ,KAAA,EAAA,EAAS;AACzD,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,SAAA,CAAU,KAAA,GAAQ,CAAC,CAAA;AACzC,QAAA,kBAAA,CAAmB,OAAO,QAAQ,CAAA;AAClC,QAAA,IAAI,UAAU,UAAA,EAAY;AAC1B,QAAA,KAAA,GAAQ,aAAa,IAAA,CAAK,QAAA,CAAS,KAAK,CAAA,EAAG,SAAS,MAAM,CAAA;AAC1D,QAAA,kBAAA,CAAmB,OAAO,QAAQ,CAAA;AAAA,MACpC;AACA,MAAA,OAAO,KAAA;AAAA,IACT;AAAA;AAEJ;AAsCA,IAAM,yBAAA,GAA4B,GAAA;AAClC,IAAM,mBAAA,uBAA0B,GAAA,EAAgC;AAUhE,SAAS,kBAAkB,UAAA,EAAwC;AACjE,EAAA,MAAM,MAAA,GAAS,mBAAA,CAAoB,GAAA,CAAI,UAAU,CAAA;AACjD,EAAA,IAAI,QAAQ,OAAO,MAAA;AAEnB,EAAA,MAAM,MAAA,GAAS,SAAS,UAAU,CAAA;AAClC,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI,UAAA,CAAW,IAAA,EAAK,KAAM,SAAA,EAAW;AACnC,IAAA,QAAA,GAAW,EAAE,YAAY,EAAC,EAAG,aAAa,EAAC,EAAG,eAAe,IAAA,EAAK;AAAA,EACpE,CAAA,MAAO;AACL,IAAA,MAAM,IAAA,GAAO,IAAI,iBAAA,CAAkB,MAAM,EAAE,KAAA,EAAM;AACjD,IAAA,MAAM,QAAA,GAAW,IAAI,kBAAA,EAAmB;AACxC,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,OAAA,CAAQ,IAAI,CAAA;AACpC,IAAA,QAAA,GAAW;AAAA,MACT,IAAA;AAAA,MACA,UAAA,EAAY,MAAM,IAAA,CAAK,QAAA,CAAS,YAAY,CAAC,CAAC,IAAA,EAAM,cAAc,CAAA,MAAO;AAAA,QACvE,IAAA;AAAA,QACA;AAAA,OACF,CAAE,CAAA;AAAA,MACF,aAAa,QAAA,CAAS,WAAA;AAAA,MACtB,aAAA,EAAe,OAAO,MAAA,KAAW,SAAA,IAAa,MAAA,KAAW;AAAA,KAC3D;AAAA,EACF;AAEA,EAAA,IAAI,mBAAA,CAAoB,QAAQ,yBAAA,EAA2B;AACzD,IAAA,MAAM,MAAA,GAAS,mBAAA,CAAoB,IAAA,EAAK,CAAE,IAAA,EAAK;AAC/C,IAAA,IAAI,CAAC,MAAA,CAAO,IAAA,EAAM,mBAAA,CAAoB,MAAA,CAAO,OAAO,KAAK,CAAA;AAAA,EAC3D;AACA,EAAA,mBAAA,CAAoB,GAAA,CAAI,YAAY,QAAQ,CAAA;AAC5C,EAAA,OAAO,QAAA;AACT;AAGO,SAAS,iCAAiC,UAAA,EAAgD;AAC/F,EAAA,OAAO,CAAC,GAAG,iBAAA,CAAkB,UAAU,EAAE,WAAW,CAAA;AACtD;AAGO,SAAS,qBAAA,CACd,UAAA,EACA,cAAA,GAAiB,IAAA,EACU;AAC3B,EAAA,MAAM,QAAA,GAAW,kBAAkB,UAAU,CAAA;AAC7C,EAAA,IAAI,cAAA,IAAkB,CAAC,QAAA,CAAS,aAAA,EAAe;AAC7C,IAAA,MAAM,gBAAgB,4BAA4B,CAAA;AAAA,EACpD;AACA,EAAA,OAAO,CAAC,GAAG,QAAA,CAAS,UAAU,CAAA;AAChC;AASO,SAAS,sBAAA,CACd,YACA,OAAA,EACS;AACT,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,iBAAA,CAAkB,UAAU,CAAA;AAC7C,EAAA,IAAI,IAAA,KAAS,QAAW,OAAO,IAAA;AAC/B,EAAA,MAAM,MAAA,GAAS,YAAA,CAAa,IAAA,EAAM,OAAO,CAAA;AACzC,EAAA,IAAI,OAAO,WAAW,SAAA,EAAW;AAC/B,IAAA,MAAM,gBAAgB,4BAA4B,CAAA;AAAA,EACpD;AACA,EAAA,OAAO,MAAA;AACT;AAGO,SAAS,QAAA,CAAS,YAAoB,OAAA,EAAyC;AACpF,EAAA,OAAO,sBAAA,CAAuB,YAAY,OAAO,CAAA;AACnD;AAEA,SAAS,2BAAA,CACP,YACA,OAAA,EACqC;AACrC,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,iBAAA,CAAkB,UAAU,CAAA;AAC7C,EAAA,IAAI,IAAA,KAAS,QAAW,OAAO,EAAE,OAAO,IAAA,EAAM,KAAA,EAAO,EAAC,EAAE;AACxD,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,MAAM,KAAA,GAAQ,aAAa,IAAA,EAAM,OAAA,EAAS,CAAC,IAAA,KAAS,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA;AACpE,EAAA,OAAO,EAAE,OAAO,KAAA,EAAM;AACxB;AAEA,SAAS,cAAA,CACP,IAAA,EACA,gBAAA,EACA,gBAAA,EACiB;AACjB,EAAA,IAAI,IAAA,CAAK,UAAA,CAAW,aAAa,CAAA,EAAG;AAClC,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AACnC,IAAA,MAAM,SAAA,GAAY,iBAAiB,SAAS,CAAA;AAC5C,IAAA,OAAO,SAAA,IAAa,CAAC,EAAE,MAAA,EAAQ,cAAc,IAAA,EAAM,UAAA,EAAY,WAAW,CAAA;AAAA,EAC5E;AACA,EAAA,IAAI,IAAA,CAAK,UAAA,CAAW,WAAW,CAAA,EAAG;AAChC,IAAA,OAAO,CAAC,EAAE,MAAA,EAAQ,WAAW,IAAA,EAAM,UAAA,EAAY,WAAW,CAAA;AAAA,EAC5D;AAEA,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC/B,EAAA,MAAM,MAAA,GAAS,SAAS,CAAC,CAAA;AACzB,EAAA,IAAI,QAAA,CAAS,MAAA,KAAW,CAAA,IAAK,QAAA,CAAS,CAAC,MAAM,OAAA,IAAW,QAAA,CAAS,CAAC,CAAA,KAAM,QAAA,EAAU;AAChF,IAAA,OAAO,CAAC,EAAE,MAAA,EAAQ,aAAA,EAAe,QAAQ,IAAA,EAAM,UAAA,EAAY,WAAW,CAAA;AAAA,EACxE;AACA,EAAA,IACE,QAAA,CAAS,MAAA,IAAU,CAAA,IACnB,QAAA,CAAS,CAAC,CAAA,KAAM,OAAA,IAChB,QAAA,CAAS,CAAC,CAAA,KAAM,QAAA,IAChB,QAAA,CAAS,CAAC,MAAM,QAAA,EAChB;AACA,IAAA,MAAM,UAAA,GAAa,iBAAiB,MAAM,CAAA;AAC1C,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA,MAAM,eAAA,CAAgB,CAAA,8BAAA,EAAiC,MAAM,CAAA,CAAE,CAAA;AAAA,IACjE;AACA,IAAA,OAAO,CAAC,EAAE,MAAA,EAAQ,eAAe,MAAA,EAAQ,IAAA,EAAM,YAAY,CAAA;AAAA,EAC7D;AAEA,EAAA,MAAM,eAAA,CAAgB,CAAA,0BAAA,EAA6B,IAAI,CAAA,CAAE,CAAA;AAC3D;AAGO,SAAS,eAAe,KAAA,EAAwB;AACrD,EAAA,IAAI,KAAA,KAAU,QAAW,OAAO,MAAA;AAChC,EAAA,IAAI,KAAA,KAAU,QAAQ,OAAO,KAAA,KAAU,UAAU,OAAO,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA,IAAK,MAAA;AACjF,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,KAAA,CAAM,GAAA,CAAI,cAAc,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AACxE,EAAA,MAAM,MAAA,GAAS,KAAA;AACf,EAAA,OAAO,CAAA,CAAA,EAAI,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAC1B,MAAK,CACL,GAAA,CAAI,CAAC,GAAA,KAAQ,CAAA,EAAG,IAAA,CAAK,UAAU,GAAG,CAAC,CAAA,CAAA,EAAI,cAAA,CAAe,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA,CAAE,CAAA,CACpE,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AACd;AAEA,SAAS,kBAAkB,KAAA,EAAwB;AACjD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,OAAO,eAAe,KAAK,CAAA;AAC7B;AAEA,SAAS,mBAAmB,OAAA,EAA2C;AACrE,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,CAAC,MAAA,KAAW;AAChC,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA;AACjC,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,EAAG,OAAO,KAAA;AAC1B,IAAA,IAAA,CAAK,IAAI,GAAG,CAAA;AACZ,IAAA,OAAO,IAAA;AAAA,EACT,CAAC,CAAA;AACH;AAEA,SAAS,oBACP,QAAA,EACA,WAAA,EACA,OAAA,EACA,gBAAA,EACA,kBACA,KAAA,EACiB;AACjB,EAAA,IAAI,KAAA,GAAQ,uBAAuB,UAAA,EAAY;AAC7C,IAAA,MAAM,eAAA,CAAgB,CAAA,6BAAA,EAAgC,sBAAA,CAAuB,UAAU,CAAA,CAAE,CAAA;AAAA,EAC3F;AAEA,EAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,kBAAkB,CAAA;AAC/C,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,MAAM,SAAA,GAAY,2BAAA,CAA4B,KAAA,CAAM,CAAC,GAAG,OAAO,CAAA;AAC/D,MAAA,OAAO;AAAA,QACL,OAAO,SAAA,CAAU,KAAA;AAAA,QACjB,OAAA,EAAS,kBAAA;AAAA,UACP,UAAU,KAAA,CAAM,OAAA;AAAA,YAAQ,CAAC,IAAA,KACvB,cAAA,CAAe,IAAA,EAAM,kBAAkB,gBAAgB;AAAA;AACzD;AACF,OACF;AAAA,IACF;AAEA,IAAA,MAAM,UAAU,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,QAAA,CAAS,iBAAiB,CAAC,CAAA;AAC/D,IAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,MAAA,OAAO;AAAA,QACL,KAAA,EAAO,QAAA;AAAA,QACP,OAAA,EAAS,CAAC,EAAE,MAAA,EAAQ,WAAW,IAAA,EAAM,WAAA,EAAa,UAAA,EAAY,SAAA,EAAW;AAAA,OAC3E;AAAA,IACF;AAEA,IAAA,MAAM,OAAA,GAA2B;AAAA,MAC/B,EAAE,MAAA,EAAQ,SAAA,EAAW,IAAA,EAAM,WAAA,EAAa,YAAY,SAAA;AAAU,KAChE;AACA,IAAA,MAAM,QAAQ,QAAA,CAAS,OAAA,CAAQ,iBAAA,EAAmB,CAAC,cAAc,UAAA,KAAuB;AACtF,MAAA,MAAM,SAAA,GAAY,2BAAA,CAA4B,UAAA,EAAY,OAAO,CAAA;AACjE,MAAA,OAAA,CAAQ,IAAA;AAAA,QACN,GAAG,UAAU,KAAA,CAAM,OAAA;AAAA,UAAQ,CAAC,IAAA,KAC1B,cAAA,CAAe,IAAA,EAAM,kBAAkB,gBAAgB;AAAA;AACzD,OACF;AACA,MAAA,OAAO,iBAAA,CAAkB,UAAU,KAAK,CAAA;AAAA,IAC1C,CAAC,CAAA;AACD,IAAA,OAAO,EAAE,KAAA,EAAO,OAAA,EAAS,kBAAA,CAAmB,OAAO,CAAA,EAAE;AAAA,EACvD;AAEA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAC3B,IAAA,IAAI,QAAA,CAAS,MAAA,GAAS,sBAAA,CAAuB,kBAAA,EAAoB;AAC/D,MAAA,MAAM,eAAA;AAAA,QACJ,CAAA,qCAAA,EAAwC,uBAAuB,kBAAkB,CAAA;AAAA,OACnF;AAAA,IACF;AACA,IAAA,MAAM,WAAW,QAAA,CAAS,GAAA;AAAA,MAAI,CAAC,KAAA,KAC7B,mBAAA;AAAA,QACE,KAAA;AAAA,QACA,WAAA;AAAA,QACA,OAAA;AAAA,QACA,gBAAA;AAAA,QACA,gBAAA;AAAA,QACA,KAAA,GAAQ;AAAA;AACV,KACF;AACA,IAAA,OAAO;AAAA,MACL,OAAO,QAAA,CAAS,GAAA,CAAI,CAAC,EAAE,KAAA,OAAY,KAAK,CAAA;AAAA,MACxC,SAAS,kBAAA,CAAmB;AAAA,QAC1B,EAAE,MAAA,EAAQ,SAAA,EAAW,IAAA,EAAM,WAAA,EAAa,YAAY,SAAA,EAAU;AAAA,QAC9D,GAAG,QAAA,CAAS,OAAA,CAAQ,CAAC,EAAE,OAAA,OAAc,OAAO;AAAA,OAC7C;AAAA,KACH;AAAA,EACF;AAEA,EAAA,IAAI,OAAO,QAAA,KAAa,QAAA,IAAY,QAAA,KAAa,IAAA,EAAM;AACrD,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA;AACvC,IAAA,IAAI,OAAA,CAAQ,MAAA,GAAS,sBAAA,CAAuB,kBAAA,EAAoB;AAC9D,MAAA,MAAM,eAAA;AAAA,QACJ,CAAA,qCAAA,EAAwC,uBAAuB,kBAAkB,CAAA;AAAA,OACnF;AAAA,IACF;AACA,IAAA,MAAM,WAAW,OAAA,CAAQ,GAAA;AAAA,MACvB,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KACV;AAAA,QACE,GAAA;AAAA,QACA,mBAAA;AAAA,UACE,KAAA;AAAA,UACA,WAAA;AAAA,UACA,OAAA;AAAA,UACA,gBAAA;AAAA,UACA,gBAAA;AAAA,UACA,KAAA,GAAQ;AAAA;AACV;AACF,KACJ;AACA,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,MAAA,CAAO,WAAA,CAAY,QAAA,CAAS,IAAI,CAAC,CAAC,GAAA,EAAK,MAAM,MAAM,CAAC,GAAA,EAAK,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA;AAAA,MAC9E,SAAS,kBAAA,CAAmB;AAAA,QAC1B,EAAE,MAAA,EAAQ,SAAA,EAAW,IAAA,EAAM,WAAA,EAAa,YAAY,SAAA,EAAU;AAAA,QAC9D,GAAG,SAAS,OAAA,CAAQ,CAAC,GAAG,MAAM,CAAA,KAAM,MAAA,CAAO,OAAO;AAAA,OACnD;AAAA,KACH;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,QAAA;AAAA,IACP,OAAA,EAAS,CAAC,EAAE,MAAA,EAAQ,WAAW,IAAA,EAAM,WAAA,EAAa,UAAA,EAAY,SAAA,EAAW;AAAA,GAC3E;AACF;AAUO,SAAS,mBAAA,CACd,UACA,OAAA,EACA,gBAAA,GAAqC,EAAC,EACtC,gBAAA,GAAoD,EAAC,EAC/B;AACtB,EAAA,MAAM,SAAkC,EAAC;AACzC,EAAA,MAAM,UAA2C,EAAC;AAClD,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,QAAA,IAAY,EAAE,CAAA;AAC7C,EAAA,KAAA,MAAW,CAAC,IAAA,EAAM,QAAQ,CAAA,IAAK,OAAA,EAAS;AACtC,IAAA,MAAM,QAAA,GAAW,mBAAA;AAAA,MACf,QAAA;AAAA,MACA,SAAS,IAAI,CAAA,CAAA;AAAA,MACb,OAAA;AAAA,MACA,gBAAA;AAAA,MACA,gBAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAA,CAAO,IAAI,IAAI,QAAA,CAAS,KAAA;AACxB,IAAA,OAAA,CAAQ,IAAI,IAAI,QAAA,CAAS,OAAA;AAAA,EAC3B;AACA,EAAA,OAAO,EAAE,QAAQ,OAAA,EAAQ;AAC3B;ACx8BO,IAAM,aAAA,0BAAuB,eAAe;AAG5C,SAAS,mBAAA,CAAoB,QAAiB,IAAA,EAAyB;AAC5E,EAAA,IAAI,OAAA,GAAU,MAAA;AACd,EAAA,KAAA,MAAW,WAAW,IAAA,EAAM;AAC1B,IAAA,IAAI,OAAO,OAAA,KAAY,QAAA,IAAY,OAAA,KAAY,MAAM,OAAO,aAAA;AAC5D,IAAA,MAAM,aAAc,OAAA,CAAoC,UAAA;AACxD,IAAA,IACE,OAAO,UAAA,KAAe,QAAA,IACtB,UAAA,KAAe,IAAA,IACf,CAAC,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY,OAAO,CAAA,EAClC;AACA,MAAA,OAAO,aAAA;AAAA,IACT;AACA,IAAA,OAAA,GAAW,WAAuC,OAAO,CAAA;AAAA,EAC3D;AACA,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,oBAAoB,IAAA,EAAkC;AAC7D,EAAA,MAAM,WAAA,GAAA,CAAe,IAAA,CAAK,QAAA,EAAU,QAAA,IAAY,EAAC,EAAG,GAAA,CAAI,CAAC,EAAE,IAAA,EAAK,KAAM,IAAI,CAAA;AAC1E,EAAA,WAAA,CAAY,KAAK,GAAG,6BAAA,CAA8B,IAAA,CAAK,QAAA,EAAU,KAAK,CAAC,CAAA;AACvE,EAAA,IAAI,IAAA,CAAK,GAAA,EAAK,IAAA,KAAS,QAAA,EAAU;AAC/B,IAAA,WAAA,CAAY,IAAA,CAAK,GAAG,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,CAAC,EAAE,IAAA,EAAK,KAAM,IAAI,CAAC,CAAA;AAAA,EAC7D;AACA,EAAA,OAAO,WAAA;AACT;AAEA,SAAS,mBAAA,CAAoB,aAAuB,UAAA,EAA6B;AAC/E,EAAA,OAAO,WAAA,CAAY,IAAA;AAAA,IAAK,CAAC,UAAA,KACvB,qBAAA,CAAsB,UAAA,EAAY,KAAK,CAAA,CAAE,IAAA;AAAA,MAAK,CAAC,EAAE,IAAA,EAAK,KACpD,KAAK,UAAA,CAAW,CAAA,MAAA,EAAS,UAAU,CAAA,eAAA,CAAiB;AAAA;AACtD,GACF;AACF;AAOO,SAAS,wBAAA,CAAyB,MAAwB,UAAA,EAAgC;AAC/F,EAAA,MAAM,MAAA,GAAS,SAAS,UAAU,CAAA,eAAA,CAAA;AAClC,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,CAAC,EAAE,EAAA,EAAG,KAAM,EAAA,KAAO,UAAU,CAAA,CAAE,OAAA,CAAQ,mBAAmB,CAAA;AAChG,EAAA,WAAA,CAAY,KAAK,GAAG,6BAAA,CAA8B,IAAA,CAAK,MAAA,EAAQ,QAAQ,CAAC,CAAA;AACxE,EAAA,MAAM,KAAA,uBAAY,GAAA,EAAsB;AACxC,EAAA,KAAA,MAAW,cAAc,WAAA,EAAa;AACpC,IAAA,KAAA,MAAW,EAAE,IAAA,EAAK,IAAK,qBAAA,CAAsB,UAAA,EAAY,KAAK,CAAA,EAAG;AAC/D,MAAA,IAAI,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA,QAAS,GAAA,CAAI,IAAA,EAAM,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA,CAAE,KAAA,CAAM,GAAG,CAAC,CAAA;AAAA,IACnF;AAAA,EACF;AACA,EAAA,OAAO,CAAC,GAAG,KAAA,CAAM,MAAA,EAAQ,CAAA;AAC3B;AAUO,SAAS,uBAAA,CACd,MACA,UAAA,EACqC;AACrC,EAAA,MAAM,QAAA,GAAW,KAAK,KAAA,CAAM,IAAA,CAAK,CAAC,EAAE,EAAA,EAAG,KAAM,EAAA,KAAO,UAAU,CAAA;AAC9D,EAAA,MAAM,MAAA,GAAS,QAAA,EAAU,QAAA,EAAU,MAAA,EAAQ,MAAA;AAC3C,EAAA,IAAI,CAAC,QAAQ,OAAO,MAAA;AACpB,EAAA,MAAM,QAAA,GACJ,KAAK,KAAA,CAAM,IAAA;AAAA,IACT,CAAC,aACC,QAAA,CAAS,EAAA,KAAO,cAChB,mBAAA,CAAoB,mBAAA,CAAoB,QAAQ,CAAA,EAAG,UAAU;AAAA,OAC5D,mBAAA,CAAoB,6BAAA,CAA8B,KAAK,MAAA,EAAQ,QAAQ,GAAG,UAAU,CAAA;AAC3F,EAAA,OAAO,WAAW,MAAA,GAAS,MAAA;AAC7B;AAOO,SAAS,0BAA0B,MAAA,EAA4C;AACpF,EAAA,OAASC,kBAAe,MAAgD,CAAA;AAC1E;AAGO,SAAS,iCAAiC,KAAA,EAAwB;AACvE,EAAA,OAAO,iCAAiC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AAChG;ACrCA,IAAM,SAAA,GAAY,MACd,EAAA,CAAA,IAAA,EAAK;AAqBT,IAAM,cAAA,GAAmB,EAAA,CAAA,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA;AACvC,IAAM,iBAAA,GACH,WAAO,CACP,KAAA;AAAA,EACC,4BAAA;AAAA,EACA;AACF,CAAA;AACF,IAAM,UAAA,GAAe,EAAA,CAAA,MAAA,CAAS,EAAA,CAAA,MAAA,EAAO,EAAG,WAAW,CAAA;AACnD,IAAM,WAAA,GAAgB,EAAA,CAAA,MAAA,EAAO,CAAE,KAAA,CAAM,2BAA2B,0BAA0B,CAAA;AAC1F,IAAM,YAAA,GAAiB,EAAA,CAAA,UAAA;AAAA,EACrB,CAAC,OAAO,OAAA,KAAY;AAClB,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,EAAM;AAC/C,MAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,EAAG;AACpC,QAAA,IAAI,CAAC,yBAAA,CAA0B,IAAA,CAAK,GAAG,CAAA,EAAG;AACxC,UAAA,OAAA,CAAQ,QAAA,CAAS,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,CAAC,GAAG,CAAA,EAAG,OAAA,EAAS,0BAAA,EAA4B,CAAA;AAAA,QACvF;AAAA,MACF;AAAA,IACF;AACA,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAAA,EACE,EAAA,CAAA,MAAA,CAAO,WAAA,EAAa,SAAA,EAAW;AACnC,CAAA;AAKA,IAAM,0BACH,EAAA,CAAA,YAAA,CAAa;AAAA,EACZ,MAAA,EAAQ,UAAA;AAAA,EACR,OAAA,EAAS,SAAA,EAAU,CAAE,QAAA,EAAS;AAAA,EAC9B,UAAA,EAAY,eAAe,QAAA;AAC7B,CAAC,CAAA,CACA,WAAA,CAAY,CAAC,KAAA,EAAO,OAAA,KAAY;AAC/B,EAAA,IAAI,KAAA,CAAM,eAAe,MAAA,EAAW;AACpC,EAAA,IAAI,mBAAA,CAAoB,MAAM,MAAA,EAAQ,CAAC,MAAM,UAAU,CAAC,MAAM,aAAA,EAAe;AAG3E,IAAA,MAAM,OAAO,KAAA,CAAM,UAAA,CAAW,QAAA,CAAS,GAAG,IACtC,6DAAA,GACA,EAAA;AACJ,IAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,MACf,IAAA,EAAM,QAAA;AAAA,MACN,IAAA,EAAM,CAAC,YAAY,CAAA;AAAA,MACnB,OAAA,EAAS,CAAA,uCAAA,EAA0C,KAAA,CAAM,UAAU,GAAG,IAAI,CAAA;AAAA,KAC3E,CAAA;AAAA,EACH;AACF,CAAC,CAAA;AAKH,IAAM,2BACH,EAAA,CAAA,YAAA,CAAa;AAAA,EACZ,MAAA,EAAQ,UAAA;AAAA,EACR,QAAA,EAAU,aAAa,QAAA;AACzB,CAAC,CAAA,CACA,WAAA,CAAY,CAAC,MAAA,EAAQ,OAAA,KAAY;AAChC,EAAA,IAAI,MAAA,CAAO,aAAa,MAAA,EAAW;AACnC,EAAA,MAAM,UAAA,GAAa,OAAO,MAAA,CAAO,UAAA;AACjC,EAAA,MAAM,QAAA,GACJ,OAAO,UAAA,KAAe,QAAA,IAAY,eAAe,IAAA,IAAQ,CAAC,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA,GAC9E,MAAA,CAAO,IAAA,CAAK,UAAU,IACtB,EAAC;AACP,EAAA,KAAA,MAAW,QAAQ,QAAA,EAAU;AAC3B,IAAA,IAAI,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,QAAA,EAAU,IAAI,CAAA,EAAG;AAC1C,IAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,MACf,IAAA,EAAM,QAAA;AAAA,MACN,IAAA,EAAM,CAAC,UAAU,CAAA;AAAA,MACjB,OAAA,EAAS,mBAAmB,IAAI,CAAA,mEAAA;AAAA,KACjC,CAAA;AAAA,EACH;AACA,EAAA,KAAA,MAAW,IAAA,IAAQ,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,QAAQ,CAAA,EAAG;AAC/C,IAAA,IAAI,QAAA,CAAS,QAAA,CAAS,IAAI,CAAA,EAAG;AAC7B,IAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,MACf,IAAA,EAAM,QAAA;AAAA,MACN,IAAA,EAAM,CAAC,UAAA,EAAY,IAAI,CAAA;AAAA,MACvB,OAAA,EAAS,kBAAkB,IAAI,CAAA,iCAAA;AAAA,KAChC,CAAA;AAAA,EACH;AAGA,EAAA,IAAI;AACF,IAAA,yBAAA,CAA0B,OAAO,MAAM,CAAA;AAAA,EACzC,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,MACf,IAAA,EAAM,QAAA;AAAA,MACN,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,MACf,OAAA,EAAS,CAAA,eAAA,EAAkB,gCAAA,CAAiC,KAAK,CAAC,CAAA;AAAA,KACnE,CAAA;AAAA,EACH;AACF,CAAC,CAAA;AAEH,IAAM,qBAAuB,EAAA,CAAA,YAAA,CAAa;AAAA,EACxC,IAAA,EAAM,cAAA;AAAA,EACN,OAAA,EAAS,eAAe,QAAA;AAC1B,CAAC,CAAA;AAED,IAAM,yBAA2B,EAAA,CAAA,YAAA,CAAa;AAAA,EAC5C,IAAA,EAAM,cAAA;AAAA,EACN,QAAA,EAAY,EAAA,CAAA,IAAA,CAAK,CAAC,SAAA,EAAW,YAAY,CAAC;AAC5C,CAAC,CAAA;AAED,IAAM,2BAA6B,EAAA,CAAA,YAAA,CAAa;AAAA,EAC9C,MAAA,EAAQ,WAAW,QAAA,EAAS;AAAA,EAC5B,SAAA,EAAa,EAAA,CAAA,KAAA,CAAM,sBAAsB,CAAA,CAAE,QAAA;AAC7C,CAAC,CAAA;AAED,IAAM,qBAAuB,EAAA,CAAA,YAAA,CAAa;AAAA,EACxC,QAAA,EAAY,EAAA,CAAA,KAAA,CAAM,kBAAkB,CAAA,CAAE,QAAA,EAAS;AAAA,EAC/C,KAAA,EAAO,aAAa,QAAA,EAAS;AAAA,EAC7B,MAAA,EAAQ,yBAAyB,QAAA;AACnC,CAAC,CAAA;AAED,IAAM,iBAAmB,EAAA,CAAA,YAAA,CAAa;AAAA,EACpC,UAAY,EAAA,CAAA,IAAA,CAAK,CAAC,MAAA,EAAQ,UAAA,EAAY,WAAW,CAAC;AACpD,CAAC,CAAA;AAED,IAAM,oBAAsB,EAAA,CAAA,YAAA,CAAa;AAAA,EACvC,QAAA,EAAY,EAAA,CAAA,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC/B,OAAA,EAAW,WAAO,CAAE,GAAA,GAAM,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EAC1C,UAAA,EAAc,EAAA,CAAA,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EAC3C,aAAA,EAAe,eAAe,QAAA;AAChC,CAAC,CAAA;AAED,IAAM,YAAY,EAAE,MAAA,EAAU,SAAM,cAAc,CAAA,CAAE,UAAS,EAAE;AAI/D,IAAM,YAAc,EAAA,CAAA,IAAA,CAAK,CAAC,OAAA,EAAS,SAAA,EAAW,MAAM,CAAC,CAAA;AAErD,IAAM,iBAAmB,EAAA,CAAA,YAAA,CAAa;AAAA,EACpC,IAAA,EAAQ,WAAQ,OAAO,CAAA;AAAA,EACvB,WAAA,EAAa,cAAA;AAAA,EACb,KAAA,EAAO,UAAU,QAAA,EAAS;AAAA,EAC1B,GAAG;AACL,CAAC,CAAA;AAED,IAAM,qBAAuB,EAAA,CAAA,YAAA,CAAa;AAAA,EACxC,IAAA,EAAQ,WAAQ,WAAW,CAAA;AAAA,EAC3B,WAAA,EAAa,cAAA;AAAA,EACb,KAAA,EAAO,UAAU,QAAA,EAAS;AAAA,EAC1B,GAAG;AACL,CAAC,CAAA;AAGM,IAAM,qBAAA,GAAwB,CAAC,QAAA,EAAU,QAAQ;AAOjD,IAAM,gCAAA,GAAmC;AAGzC,SAAS,4BAA4B,WAAA,EAAyC;AACnF,EAAA,OAAO,gCAAA,CAAiC,IAAA,CAAK,WAAW,CAAA,GAAI,CAAC,CAAA,IAAK,MAAA;AACpE;AAGO,SAAS,gCAAA,CACd,IAAA,EACA,MAAA,EACA,OAAA,EACA,WAAA,EACQ;AACR,EAAA,MAAM,SAAA,GAAY,IAAA,KAAS,OAAA,GAAU,OAAA,GAAU,UAAA;AAC/C,EAAA,OAAO,GAAG,SAAS,CAAA,MAAA,EAAS,MAAM,CAAA,aAAA,EAAgB,OAAO,iBAAiB,WAAW,CAAA,oCAAA,CAAA;AACvF;AAMO,SAAS,kCAAA,CACd,IAAA,EACA,MAAA,EACA,SAAA,EACQ;AACR,EAAA,MAAM,SAAA,GAAY,IAAA,KAAS,OAAA,GAAU,OAAA,GAAU,UAAA;AAC/C,EAAA,OAAO,CAAA,EAAG,SAAS,CAAA,MAAA,EAAS,MAAM,gEAAgE,SAAS,CAAA,sEAAA,CAAA;AAC7G;AAEA,IAAM,gBAAA,GAAmB;AAAA,EACvB,OAAA,EAAW,QAAK,CAAC,OAAA,EAAS,QAAQ,QAAQ,CAAC,EAAE,QAAA,EAAS;AAAA,EACtD,OAAA,EAAS,cAAA;AAAA,EACT,GAAA,EAAK,eAAe,QAAA,EAAS;AAAA,EAC7B,aAAe,EAAA,CAAA,KAAA,CAAQ,EAAA,CAAA,MAAA,GAAS,GAAA,EAAK,EAAE,QAAA,EAAS;AAAA,EAChD,OAAA,EACG,EAAA,CAAA,YAAA,CAAa,EAAE,MAAA,EAAQ,cAAA,CAAe,QAAA,EAAS,EAAG,MAAA,EAAQ,cAAA,CAAe,QAAA,EAAS,EAAG,EACrF,QAAA,EAAS;AAAA,EACZ,GAAG;AACL,CAAA;AAEA,IAAM,oBAAsB,EAAA,CAAA,YAAA,CAAa;AAAA,EACvC,IAAA,EAAQ,WAAQ,UAAU,CAAA;AAAA,EAC1B,GAAG;AACL,CAAC,CAAA;AAED,IAAM,iBAAmB,EAAA,CAAA,YAAA,CAAa;AAAA,EACpC,IAAA,EAAQ,WAAQ,OAAO,CAAA;AAAA,EACvB,MAAA,EAAU,QAAK,CAAC,UAAA,EAAY,MAAM,CAAC,CAAA,CAAE,QAAQ,UAAU,CAAA;AAAA,EACvD,GAAG;AACL,CAAC,CAAA;AAED,IAAM,oBAAsB,EAAA,CAAA,YAAA,CAAa;AAAA,EACvC,EAAA,EAAI,cAAA;AAAA,EACJ,KAAA,EAAO,cAAA;AAAA,EACP,WAAA,EAAa,eAAe,QAAA;AAC9B,CAAC,CAAA;AAED,IAAM,kBAAoB,EAAA,CAAA,YAAA,CAAa;AAAA,EACrC,EAAA,EAAI,cAAA;AAAA,EACJ,KAAA,EAAO,cAAA;AAAA,EACP,IAAA,EAAQ,EAAA,CAAA,IAAA,CAAK,CAAC,MAAA,EAAQ,UAAA,EAAY,UAAU,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAQ,SAAS,CAAC,CAAA;AAAA,EAChF,QAAA,EAAY,EAAA,CAAA,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC/B,OAAA,EAAW,EAAA,CAAA,KAAA,CAAM,iBAAiB,CAAA,CAAE,QAAA,EAAS;AAAA,EAC7C,MAAA,EAAU,EAAA,CAAA,KAAA,CAAM,cAAc,CAAA,CAAE,QAAA;AAClC,CAAC,CAAA;AAIM,IAAM,WAAA,GAAgB,sBAAmB,MAAA,EAAQ;AAAA,EACpD,EAAA,CAAA,YAAA,CAAa,EAAE,IAAA,EAAQ,EAAA,CAAA,OAAA,CAAQ,MAAM,CAAA,EAAG,SAAA,EAAa,EAAA,CAAA,OAAA,EAAQ,CAAE,QAAA,EAAS,EAAG,CAAA;AAAA,EAC3E,EAAA,CAAA,YAAA,CAAa;AAAA,IACb,IAAA,EAAQ,WAAQ,QAAQ,CAAA;AAAA,IACxB,OAAA,EAAW,EAAA,CAAA,KAAA,CAAM,iBAAiB,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACzC,QAAA,EAAY,EAAA,CAAA,OAAA,EAAQ,CAAE,QAAA;AAAS,GAChC,CAAA;AAAA,EACC,EAAA,CAAA,YAAA,CAAa,EAAE,IAAA,EAAQ,EAAA,CAAA,OAAA,CAAQ,MAAM,GAAG,MAAA,EAAU,EAAA,CAAA,KAAA,CAAM,eAAe,CAAA,EAAG,CAAA;AAAA,EAC1E,EAAA,CAAA,YAAA,CAAa;AAAA,IACb,IAAA,EAAQ,WAAQ,MAAM,CAAA;AAAA,IACtB,MAAA,EAAU,EAAA,CAAA,KAAA,CAAM,cAAc,CAAA,CAAE,QAAA,EAAS;AAAA,IACzC,OAAA,EAAW,EAAA,CAAA,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,IACxC,QAAA,EAAY,EAAA,CAAA,OAAA,EAAQ,CAAE,QAAA;AAAS,GAChC;AACH,CAAC;AAED,IAAM,gBAAkB,EAAA,CAAA,YAAA,CAAa;AAAA,EACnC,IAAA,EAAQ,WAAQ,MAAM,CAAA;AAAA,EACtB,MAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ,WAAA;AAAA,EACR,GAAG;AACL,CAAC,CAAA;AAED,IAAM,cAAgB,EAAA,CAAA,YAAA,CAAa;AAAA,EACjC,IAAA,EAAM,cAAA;AAAA,EACN,MAAA,EAAQ,eAAe,QAAA;AACzB,CAAC,CAAA;AAED,IAAM,kBAAoB,EAAA,CAAA,YAAA,CAAa;AAAA,EACrC,IAAA,EAAQ,WAAQ,QAAQ,CAAA;AAAA,EACxB,MAAA,EAAU,EAAA,CAAA,KAAA,CAAM,WAAW,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,EAClC,GAAG;AACL,CAAC,CAAA;AAED,IAAM,mBAAqB,EAAA,CAAA,YAAA,CAAa;AAAA,EACtC,IAAA,EAAQ,WAAQ,UAAU,CAAA;AAAA,EAC1B,IAAA,EAAM,iBAAA;AAAA,EACN,WAAA,EAAe,EAAA,CAAA,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAClC,GAAG;AACL,CAAC,CAAA;AAED,IAAM,SAAA,GAAc,sBAAmB,MAAA,EAAQ;AAAA,EAC7C,cAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAC,CAAA;AAED,IAAM,aAAe,EAAA,CAAA,YAAA,CAAa;AAAA,EAChC,EAAA,EAAI,cAAA;AAAA,EACJ,KAAA,EAAO,cAAA;AAAA,EACP,WAAA,EAAa,cAAA;AAAA,EACb,KAAA,EAAO,eAAe,QAAA,EAAS;AAAA,EAC/B,GAAA,EAAK,SAAA;AAAA,EACL,QAAA,EAAU,mBAAmB,QAAA,EAAS;AAAA,EACtC,IAAA,EAAM,eAAe,QAAA,EAAS;AAAA,EAC9B,OAAA,EAAS,kBAAkB,QAAA;AAC7B,CAAC,CAAA;AAED,IAAM,aAAe,EAAA,CAAA,YAAA,CAAa;AAAA,EAChC,EAAA,EAAI,cAAA;AAAA,EACJ,MAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ,cAAA;AAAA,EACR,MAAQ,EAAA,CAAA,IAAA,CAAK,CAAC,MAAA,EAAQ,UAAA,EAAY,UAAU,CAAC;AAC/C,CAAC,CAAA;AAED,IAAM,qBAAuB,EAAA,CAAA,YAAA,CAAa;AAAA,EACxC,QAAA,EAAY,QAAK,CAAC,YAAA,EAAc,QAAQ,QAAQ,CAAC,EAAE,QAAA,EAAS;AAAA,EAC5D,aAAA,EAAe,eAAe,QAAA,EAAS;AAAA,EACvC,UAAA,EAAc,EAAA,CAAA,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACjC,SAAA,EAAW,eAAe,QAAA,EAAS;AAAA,EACnC,OAAA,EAAW,EAAA,CAAA,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC9B,SAAA,EAAW,SAAA,EAAU,CAAE,QAAA,EAAS;AAAA,EAChC,YAAc,EAAA,CAAA,MAAA,CAAS,EAAA,CAAA,MAAA,IAAU,SAAA,EAAW,EAAE,QAAA;AAChD,CAAC,CAAA;AAED,IAAM,iBAAmB,EAAA,CAAA,YAAA,CAAa;AAAA,EACpC,IAAA,EAAM,eAAe,QAAA,EAAS;AAAA,EAC9B,QAAA,EAAU,eAAe,QAAA,EAAS;AAAA,EAClC,IAAA,EAAQ,EAAA,CAAA,KAAA,CAAM,cAAc,CAAA,CAAE,QAAA,EAAS;AAAA,EACvC,KAAA,EAAO,eAAe,QAAA,EAAS;AAAA,EAC/B,YACG,EAAA,CAAA,YAAA,CAAa;AAAA,IACZ,aAAe,EAAA,CAAA,IAAA,CAAK,CAAC,UAAA,EAAY,YAAA,EAAc,MAAM,CAAC,CAAA;AAAA,IACtD,WAAA,EAAa,eAAe,QAAA,EAAS;AAAA,IACrC,MAAA,EAAU,EAAA,CAAA,KAAA,CAAM,cAAc,CAAA,CAAE,QAAA;AAAS,GAC1C,EACA,QAAA;AACL,CAAC,CAAA;AAED,IAAM,6BAA+B,EAAA,CAAA,YAAA,CAAa;AAAA,EAChD,OAAA,EAAS,eAAe,QAAA,EAAS;AAAA,EACjC,aAAA,EAAiB,WAAQ,CAAC,CAAA;AAAA,EAC1B,EAAA,EAAI,cAAA;AAAA,EACJ,OAAA,EAAS,cAAA;AAAA,EACT,IAAA,EAAM,cAAA;AAAA,EACN,WAAA,EAAa,eAAe,QAAA,EAAS;AAAA,EACrC,KAAA,EAAO,wBAAwB,QAAA,EAAS;AAAA,EACxC,MAAA,EAAQ,yBAAyB,QAAA,EAAS;AAAA,EAC1C,QAAA,EAAU,mBAAmB,QAAA,EAAS;AAAA,EACtC,KAAA,EAAO,eAAe,QAAA,EAAS;AAAA,EAC/B,KAAA,EAAS,SAAM,UAAU,CAAA;AAAA,EACzB,KAAA,EAAS,SAAM,UAAU,CAAA;AAAA,EACzB,IAAA,EAAM,eAAe,QAAA;AACvB,CAAC,CAAA;AAGM,SAAS,6BAA6B,IAAA,EAAe;AAC1D,EAAA,OAAO,0BAAA,CAA2B,UAAU,IAAI,CAAA;AAClD;AAEA,SAAS,oBAAoB,MAAA,EAAqC;AAChE,EAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,KAAW,MAAM,OAAO,MAAA;AAC1D,EAAA,MAAM,OAAQ,MAAA,CAAmC,IAAA;AACjD,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,EAAU,OAAO,IAAA,KAAS,YAAY,MAAA,GAAY,IAAA;AACtE,EAAA,IACE,KAAA,CAAM,QAAQ,IAAI,CAAA,IAClB,KAAK,MAAA,GAAS,CAAA,IACd,KAAK,KAAA,CAAM,CAAC,cAAc,OAAO,SAAA,KAAc,QAAQ,CAAA,IACvD,IAAA,CAAK,KAAK,CAAC,SAAA,KAAc,SAAA,KAAc,SAAS,CAAA,EAChD;AACA,IAAA,OAAO,IAAA,CAAK,KAAK,KAAK,CAAA;AAAA,EACxB;AACA,EAAA,OAAO,MAAA;AACT;AAOO,SAAS,+BAA+B,IAAA,EAEnC;AACV,EAAA,OACE,IAAA,CAAK,QAAA,EAAU,QAAA,EAAU,IAAA,CAAK,CAAC,WAAA,KAAgB,WAAA,CAAY,IAAA,CAAK,IAAA,EAAK,KAAM,OAAO,CAAA,IAAK,KAAA;AAE3F;AAgBA,SAAS,sBAAsB,IAAA,EAAsD;AACnF,EAAA,IAAI,IAAA,CAAK,GAAA,CAAI,IAAA,KAAS,MAAA,EAAQ,OAAO,4CAAA;AACrC,EAAA,IAAI,KAAK,GAAA,CAAI,IAAA,KAAS,YAAY,CAAC,8BAAA,CAA+B,IAAI,CAAA,EAAG;AACvE,IAAA,OAAO,CAAA,OAAA,EAAU,KAAK,EAAE,CAAA,8OAAA,CAAA;AAAA,EAC1B;AACA,EAAA,IAAI,IAAA,CAAK,GAAA,CAAI,IAAA,KAAS,OAAA,EAAS;AAC7B,IAAA,OAAO,gMAAA;AAAA,EACT;AACA,EAAA,IAAI,IAAA,CAAK,IAAA,EAAM,QAAA,KAAa,WAAA,EAAa;AACvC,IAAA,OAAO,8DAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA;AACT;AAGO,IAAM,oBAAA,GAAuB,0BAAA,CAA2B,WAAA,CAAY,CAAC,MAAM,OAAA,KAAY;AAC5F,EAAA,MAAM,OAAA,uBAAc,GAAA,EAAY;AAChC,EAAA,KAAA,MAAW,CAAC,KAAA,EAAO,IAAI,KAAK,IAAA,CAAK,KAAA,CAAM,SAAQ,EAAG;AAChD,IAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA,EAAG;AACxB,MAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,QACf,IAAA,EAAM,QAAA;AAAA,QACN,IAAA,EAAM,CAAC,OAAA,EAAS,KAAA,EAAO,IAAI,CAAA;AAAA,QAC3B,OAAA,EAAS,CAAA,mBAAA,EAAsB,IAAA,CAAK,EAAE,CAAA;AAAA,OACvC,CAAA;AAAA,IACH;AACA,IAAA,OAAA,CAAQ,GAAA,CAAI,KAAK,EAAE,CAAA;AACnB,IAAA,IAAI,IAAA,CAAK,OAAA,EAAS,QAAA,KAAa,IAAA,EAAM;AACnC,MAAA,MAAM,OAAA,GAAU,sBAAsB,IAAI,CAAA;AAC1C,MAAA,IAAI,YAAY,MAAA,EAAW;AACzB,QAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,UACf,IAAA,EAAM,QAAA;AAAA,UACN,IAAA,EAAM,CAAC,OAAA,EAAS,KAAA,EAAO,WAAW,UAAU,CAAA;AAAA,UAC5C,OAAA,EAAS;AAAA,SACV,CAAA;AAAA,MACH;AAAA,IACF;AACA,IAAA,IAAI,KAAK,GAAA,CAAI,IAAA,KAAS,cAAc,IAAA,CAAK,GAAA,CAAI,SAAS,OAAA,EAAS;AAC7D,MAAA,KAAA,MAAW,WAAW,qBAAA,EAAuB;AAC3C,QAAA,MAAM,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,OAAA,GAAU,OAAO,CAAA;AAC9C,QAAA,IAAI,WAAA,KAAgB,MAAA,IAAa,2BAAA,CAA4B,WAAW,CAAA,EAAG;AAC3E,QAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,UACf,IAAA,EAAM,QAAA;AAAA,UACN,MAAM,CAAC,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,WAAW,OAAO,CAAA;AAAA,UAChD,OAAA,EAAS,iCAAiC,IAAA,CAAK,GAAA,CAAI,MAAM,IAAA,CAAK,EAAA,EAAI,SAAS,WAAW;AAAA,SACvF,CAAA;AAAA,MACH;AACA,MAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,KAAW,IAAA,CAAK,GAAA,CAAI,WAAW,EAAC;AAChD,MAAA,MAAM,WAAA,GAAc,MAAA,KAAW,MAAA,GAAY,MAAA,GAAY,4BAA4B,MAAM,CAAA;AACzF,MAAA,IAAI,WAAA,KAAgB,MAAA,IAAa,MAAA,KAAW,MAAA,EAAW;AACrD,QAAA,IAAI,2BAAA,CAA4B,MAAM,CAAA,KAAM,WAAA,EAAa;AACvD,UAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,YACf,IAAA,EAAM,QAAA;AAAA,YACN,MAAM,CAAC,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,WAAW,QAAQ,CAAA;AAAA,YACjD,SAAS,kCAAA,CAAmC,IAAA,CAAK,IAAI,IAAA,EAAM,IAAA,CAAK,IAAI,WAAW;AAAA,WAChF,CAAA;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,IAAI,IAAA,CAAK,UAAU,MAAA,IAAa,CAAC,QAAQ,GAAA,CAAI,IAAA,CAAK,KAAK,CAAA,EAAG;AACxD,IAAA,OAAA,CAAQ,QAAA,CAAS,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,CAAC,OAAO,CAAA,EAAG,OAAA,EAAS,CAAA,cAAA,EAAiB,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,EAC9F;AAEA,EAAA,MAAM,QAAA,uBAAe,GAAA,EAA4D;AACjF,EAAA,KAAA,MAAW,CAAC,SAAA,EAAW,IAAI,KAAK,IAAA,CAAK,KAAA,CAAM,SAAQ,EAAG;AACpD,IAAA,IAAI,CAAC,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA,EAAG;AAC7B,MAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,QACf,IAAA,EAAM,QAAA;AAAA,QACN,IAAA,EAAM,CAAC,OAAA,EAAS,SAAA,EAAW,QAAQ,CAAA;AAAA,QACnC,OAAA,EAAS,CAAA,cAAA,EAAiB,IAAA,CAAK,MAAM,CAAA;AAAA,OACtC,CAAA;AAAA,IACH;AACA,IAAA,IAAI,CAAC,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA,EAAG;AAC7B,MAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,QACf,IAAA,EAAM,QAAA;AAAA,QACN,IAAA,EAAM,CAAC,OAAA,EAAS,SAAA,EAAW,QAAQ,CAAA;AAAA,QACnC,OAAA,EAAS,CAAA,cAAA,EAAiB,IAAA,CAAK,MAAM,CAAA;AAAA,OACtC,CAAA;AAAA,IACH;AACA,IAAA,IAAI,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA,IAAK,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA,EAAG;AAChF,MAAA,MAAM,QAAQ,QAAA,CAAS,GAAA,CAAI,IAAA,CAAK,MAAM,KAAK,EAAC;AAC5C,MAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,IAAA,CAAK,MAAA,EAAQ,MAAM,CAAC,OAAA,EAAS,SAAS,CAAA,EAAG,CAAA;AAC9D,MAAA,QAAA,CAAS,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,KAAK,CAAA;AAAA,IACjC;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,CAAC,SAAA,EAAW,IAAI,KAAK,IAAA,CAAK,KAAA,CAAM,SAAQ,EAAG;AACpD,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,IAAA,KAAS,QAAA,EAAU;AAChC,IAAA,KAAA,MAAW,CAAC,YAAY,KAAK,CAAA,IAAK,KAAK,GAAA,CAAI,MAAA,CAAO,SAAQ,EAAG;AAC3D,MAAA,IAAI,KAAA,CAAM,WAAW,IAAA,IAAQ,CAAC,QAAQ,GAAA,CAAI,KAAA,CAAM,MAAM,CAAA,EAAG;AACvD,QAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,UACf,IAAA,EAAM,QAAA;AAAA,UACN,MAAM,CAAC,OAAA,EAAS,WAAW,KAAA,EAAO,QAAA,EAAU,YAAY,QAAQ,CAAA;AAAA,UAChE,OAAA,EAAS,CAAA,cAAA,EAAiB,KAAA,CAAM,MAAM,CAAA;AAAA,SACvC,CAAA;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,kBAAA,GAAqB,CACzB,UAAA,EACA,IAAA,EACA,iBAAiB,IAAA,KACR;AACT,IAAA,IAAI,UAAA;AACJ,IAAA,IAAI;AACF,MAAA,UAAA,GAAa,qBAAA,CAAsB,YAAY,cAAc,CAAA;AAAA,IAC/D,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,QACf,IAAA,EAAM,QAAA;AAAA,QACN,IAAA;AAAA,QACA,OAAA,EAAS,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU;AAAA,OACnD,CAAA;AACD,MAAA;AAAA,IACF;AACA,IAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,MAAA,MAAM,QAAA,GAAW,SAAA,CAAU,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AACzC,MAAA,IAAI,QAAA,CAAS,CAAC,CAAA,KAAM,OAAA,EAAS;AAC7B,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAC,SAAS,IAAA,CAAK,EAAA,KAAO,QAAA,CAAS,CAAC,CAAC,CAAA;AAClE,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,UACf,IAAA,EAAM,QAAA;AAAA,UACN,IAAA;AAAA,UACA,OAAA,EAAS,CAAA,uBAAA,EAA0B,QAAA,CAAS,CAAC,CAAC,CAAA;AAAA,SAC/C,CAAA;AACD,QAAA;AAAA,MACF;AACA,MAAA,IAAI,QAAA,CAAS,CAAC,CAAA,KAAM,QAAA,EAAU;AAC5B,QAAA,IAAI,UAAU,cAAA,EAAgB;AAC5B,UAAA,OAAA,CAAQ,SAAS,EAAE,IAAA,EAAM,UAAU,IAAA,EAAM,OAAA,EAAS,8BAA8B,CAAA;AAAA,QAClF;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,YAAA,GAAe,QAAA,CAAS,QAAA,EAAU,MAAA,EAAQ,MAAA;AAChD,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,UACf,IAAA,EAAM,QAAA;AAAA,UACN,IAAA;AAAA,UACA,OAAA,EAAS,CAAA,KAAA,EAAQ,QAAA,CAAS,EAAE,CAAA,8BAAA;AAAA,SAC7B,CAAA;AACD,QAAA;AAAA,MACF;AACA,MAAA,MAAM,SAAA,GAAY,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA;AAClC,MAAA,MAAM,WAAA,GAAc,mBAAA,CAAoB,YAAA,EAAc,SAAS,CAAA;AAC/D,MAAA,IAAI,gBAAgB,aAAA,EAAe;AACjC,QAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,UACf,IAAA,EAAM,QAAA;AAAA,UACN,IAAA;AAAA,UACA,OAAA,EAAS,QAAQ,QAAA,CAAS,EAAE,kCAAkC,SAAA,CAAU,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,SAClF,CAAA;AACD,QAAA;AAAA,MACF;AACA,MAAA,MAAM,cAAA,GAAiB,SAAA,CAAU,cAAA,GAC7B,mBAAA,CAAoB,WAAW,CAAA,GAC/B,MAAA;AACJ,MAAA,IAAI,cAAA,EAAgB;AAClB,QAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,UACf,IAAA,EAAM,QAAA;AAAA,UACN,IAAA;AAAA,UACA,OAAA,EAAS,CAAA,KAAA,EAAQ,QAAA,CAAS,EAAE,CAAA,cAAA,EAAiB,UAAU,IAAA,CAAK,GAAG,CAAC,CAAA,IAAA,EAAO,cAAc,CAAA,aAAA;AAAA,SACtF,CAAA;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,KAAA,MAAW,CAAC,SAAA,EAAW,IAAI,KAAK,IAAA,CAAK,KAAA,CAAM,SAAQ,EAAG;AACpD,IAAA,KAAA,MAAW,CAAC,YAAA,EAAc,WAAW,CAAA,IAAK,IAAA,CAAK,UAAU,QAAA,EAAU,OAAA,EAAQ,IAAK,EAAC,EAAG;AAClF,MAAA,kBAAA,CAAmB,YAAY,IAAA,EAAM;AAAA,QACnC,OAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA,YAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH;AACA,IAAA,KAAA,MAAW,CAACC,YAAAA,EAAa,OAAO,CAAA,IAAK,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,QAAA,EAAU,KAAA,IAAS,EAAE,CAAA,EAAG;AAC/E,MAAA,KAAA,MAAW,UAAA,IAAc,6BAAA,CAA8B,OAAO,CAAA,EAAG;AAC/D,QAAA,kBAAA;AAAA,UACE,UAAA;AAAA,UACA,CAAC,OAAA,EAAS,SAAA,EAAW,UAAA,EAAY,SAASA,YAAW,CAAA;AAAA,UACrD;AAAA,SACF;AAAA,MACF;AAAA,IACF;AACA,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,IAAA,KAAS,QAAA,EAAU;AAC9B,MAAA,KAAA,MAAW,CAAC,YAAY,KAAK,CAAA,IAAK,KAAK,GAAA,CAAI,MAAA,CAAO,SAAQ,EAAG;AAC3D,QAAA,kBAAA,CAAmB,KAAA,CAAM,MAAM,CAAC,OAAA,EAAS,WAAW,KAAA,EAAO,QAAA,EAAU,UAAA,EAAY,MAAM,CAAC,CAAA;AAAA,MAC1F;AAAA,IACF;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,CAACA,YAAAA,EAAa,OAAO,CAAA,IAAK,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,MAAA,EAAQ,QAAA,IAAY,EAAE,CAAA,EAAG;AAChF,IAAA,KAAA,MAAW,UAAA,IAAc,6BAAA,CAA8B,OAAO,CAAA,EAAG;AAC/D,MAAA,kBAAA,CAAmB,YAAY,CAAC,QAAA,EAAU,UAAA,EAAYA,YAAW,GAAG,KAAK,CAAA;AAAA,IAC3E;AAAA,EACF;AAEA,EAAA,uBAAA,CAAwB,MAAM,OAAO,CAAA;AACrC,EAAA,oCAAA,CAAqC,MAAM,OAAO,CAAA;AAElD,EAAA,MAAM,KAAA,uBAAY,GAAA,EAA+B;AACjD,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,IAAI,KAAA,CAAM,GAAA,CAAI,MAAM,CAAA,EAAG;AACvB,IAAA,MAAM,QAAiD,CAAC,EAAE,MAAA,EAAQ,IAAA,EAAM,GAAG,CAAA;AAC3E,IAAA,KAAA,CAAM,GAAA,CAAI,QAAQ,QAAQ,CAAA;AAC1B,IAAA,OAAO,KAAA,CAAM,SAAS,CAAA,EAAG;AACvB,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,EAAA,CAAG,EAAE,CAAA;AACzB,MAAA,IAAI,CAAC,KAAA,EAAO;AACZ,MAAA,MAAM,OAAO,QAAA,CAAS,GAAA,CAAI,KAAA,CAAM,MAAM,KAAK,EAAC;AAC5C,MAAA,IAAI,KAAA,CAAM,IAAA,IAAQ,IAAA,CAAK,MAAA,EAAQ;AAC7B,QAAA,KAAA,CAAM,GAAA,CAAI,KAAA,CAAM,MAAA,EAAQ,MAAM,CAAA;AAC9B,QAAA,KAAA,CAAM,GAAA,EAAI;AACV,QAAA;AAAA,MACF;AACA,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,CAAA;AAC7B,MAAA,IAAI,KAAA,CAAM,GAAA,CAAI,GAAA,CAAI,MAAM,MAAM,QAAA,EAAU;AACtC,QAAA,OAAA,CAAQ,QAAA,CAAS,EAAE,IAAA,EAAM,QAAA,EAAU,MAAM,GAAA,CAAI,IAAA,EAAM,OAAA,EAAS,4BAAA,EAA8B,CAAA;AAAA,MAC5F,WAAW,CAAC,KAAA,CAAM,GAAA,CAAI,GAAA,CAAI,MAAM,CAAA,EAAG;AACjC,QAAA,KAAA,CAAM,GAAA,CAAI,GAAA,CAAI,MAAA,EAAQ,QAAQ,CAAA;AAC9B,QAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,IAAI,MAAA,EAAQ,IAAA,EAAM,GAAG,CAAA;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAOD,SAAS,oCAAA,CACP,MACA,OAAA,EACM;AACN,EAAA,KAAA,MAAW,CAAC,SAAA,EAAW,IAAI,KAAK,IAAA,CAAK,KAAA,CAAM,SAAQ,EAAG;AACpD,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,QAAA,EAAU,MAAA,EAAQ,MAAA;AACtC,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,IAAI,YAAA;AACJ,IAAA,IAAI;AACF,MAAA,yBAAA,CAA0B,MAAM,CAAA;AAChC,MAAA;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,YAAA,GAAe,KAAA;AAAA,IACjB;AACA,IAAA,IAAI,QAAA;AACJ,IAAA,IAAI;AACF,MAAA,QAAA,GAAW,uBAAA,CAAwB,IAAA,EAAM,IAAA,CAAK,EAAE,CAAA,KAAM,KAAA,CAAA;AAAA,IACxD,CAAA,CAAA,MAAQ;AAEN,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAAC,QAAA,EAAU;AACf,IAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,MACf,IAAA,EAAM,QAAA;AAAA,MACN,MAAM,CAAC,OAAA,EAAS,SAAA,EAAW,UAAA,EAAY,UAAU,QAAQ,CAAA;AAAA,MACzD,SAAS,CAAA,KAAA,EAAQ,IAAA,CAAK,EAAE,CAAA,yBAAA,EAA4B,gCAAA,CAAiC,YAAY,CAAC,CAAA;AAAA,KACnG,CAAA;AAAA,EACH;AACF;AAEA,IAAM,kBAAA,uBAAyB,GAAA,CAAI,CAAC,KAAK,IAAA,EAAM,GAAA,EAAK,IAAI,CAAC,CAAA;AAQzD,SAAS,uBAAA,CACP,MACA,OAAA,EACM;AACN,EAAA,MAAM,aAAA,uBAAoB,GAAA,EAAY;AACtC,EAAA,KAAA,MAAW,CAAC,SAAA,EAAW,IAAI,KAAK,IAAA,CAAK,KAAA,CAAM,SAAQ,EAAG;AACpD,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,QAAA,EAAU,MAAA,EAAQ,MAAA;AAC5C,IAAA,MAAM,OAAO,CAAC,OAAA,EAAS,SAAA,EAAW,UAAA,EAAY,UAAU,QAAQ,CAAA;AAChE,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,IAAA,KAAS,WAAA,EAAa;AACjC,MAAA,MAAM,KAAA,GAAQ,qBAAqB,YAAY,CAAA;AAC/C,MAAA,IAAI,CAAC,MAAM,UAAA,EAAY;AACvB,MAAA,aAAA,CAAc,GAAA,CAAI,KAAK,EAAE,CAAA;AACzB,MAAA,IAAI,YAAY,KAAA,EAAO;AACrB,QAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,UACf,IAAA,EAAM,QAAA;AAAA,UACN,IAAA;AAAA,UACA,OAAA,EAAS,aAAa,IAAA,CAAK,EAAE,uEAAuE,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,SAC5H,CAAA;AAAA,MACH;AACA,MAAA;AAAA,IACF;AAIA,IAAA,IAAA,CACG,IAAA,CAAK,GAAA,CAAI,IAAA,KAAS,OAAA,IAAW,IAAA,CAAK,IAAI,IAAA,KAAS,UAAA,KAChD,+BAAA,CAAgC,YAAY,CAAA,EAC5C;AACA,MAAA,MAAM,QAAQ,0BAAA,CAA2B,MAAA;AAAA,QAAO,CAAC,IAAA,KAC/C,wBAAA,CAAyB,YAAY,CAAA,CAAE,SAAS,IAAI;AAAA,OACtD;AACA,MAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,QACf,IAAA,EAAM,QAAA;AAAA,QACN,IAAA;AAAA,QACA,OAAA,EAAS,CAAA,EAAG,KAAA,CAAM,IAAA,CAAK,OAAO,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,KAAA,GAAQ,IAAI,oDAAoD,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,MAAA,EAAS,IAAA,CAAK,EAAE,mBAAmB,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,MAAA,GAAS,IAAI,CAAA;AAAA,OACvM,CAAA;AAAA,IACH;AAAA,EACF;AACA,EAAA,IAAI,aAAA,CAAc,SAAS,CAAA,EAAG;AAE9B,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAkE;AACtF,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC/B,IAAA,IACE,QAAA,CAAS,MAAA,KAAW,CAAA,IACpB,QAAA,CAAS,CAAC,CAAA,KAAM,OAAA,IAChB,QAAA,CAAS,CAAC,CAAA,KAAM,QAAA,IAChB,QAAA,CAAS,CAAC,CAAA,KAAM,QAAA,IAChB,CAAC,aAAA,CAAc,GAAA,CAAI,QAAA,CAAS,CAAC,CAAC,CAAA,IAC9B,CAAE,0BAAA,CAAiD,QAAA,CAAS,QAAA,CAAS,CAAC,CAAC,CAAA,EACvE;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,OAAO,EAAE,UAAU,QAAA,CAAS,CAAC,GAAG,KAAA,EAAO,QAAA,CAAS,CAAC,CAAA,EAAE;AAAA,EACrD,CAAA;AACA,EAAA,MAAM,aAAA,GAAgB,CAAC,UAAA,KAAgC;AACrD,IAAA,IAAI;AACF,MAAA,OAAO,qBAAA,CAAsB,UAAA,EAAY,KAAK,CAAA,CAAE,IAAA,CAAK,CAAC,EAAE,IAAA,EAAK,KAAM,YAAA,CAAa,IAAI,CAAC,CAAA;AAAA,IACvF,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF,CAAA;AACA,EAAA,MAAM,WAAA,GAAc,CAAC,UAAA,EAAoB,IAAA,KAA8B;AACrE,IAAA,IAAI,WAAA;AACJ,IAAA,IAAI;AACF,MAAA,WAAA,GAAc,iCAAiC,UAAU,CAAA;AAAA,IAC3D,CAAA,CAAA,MAAQ;AACN,MAAA;AAAA,IACF;AACA,IAAA,KAAA,MAAW,cAAc,WAAA,EAAa;AACpC,MAAA,IAAI,CAAC,kBAAA,CAAmB,GAAA,CAAI,UAAA,CAAW,QAAQ,CAAA,EAAG;AAClD,MAAA,KAAA,MAAW,WAAW,CAAC,UAAA,CAAW,IAAA,EAAM,UAAA,CAAW,KAAK,CAAA,EAAG;AACzD,QAAA,IAAI,EAAE,UAAU,OAAA,CAAA,EAAU;AAC1B,QAAA,MAAM,IAAA,GAAO,YAAA,CAAa,OAAA,CAAQ,IAAI,CAAA;AACtC,QAAA,IAAI,IAAA,EAAM,UAAU,YAAA,EAAc;AAClC,QAAA,MAAM,KAAA,GAAQ,CAAA,MAAA,EAAS,IAAA,CAAK,QAAQ,CAAA,yBAAA,CAAA;AACpC,QAAA,IAAI,UAAA,CAAW,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA,EAAG;AACvC,QAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,UACf,IAAA,EAAM,QAAA;AAAA,UACN,IAAA;AAAA,UACA,OAAA,EAAS,CAAA,EAAG,OAAA,CAAQ,IAAI,6HAA6H,KAAK,CAAA,+IAAA;AAAA,SAC3J,CAAA;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,KAAA,MAAW,CAAC,SAAA,EAAW,IAAI,KAAK,IAAA,CAAK,KAAA,CAAM,SAAQ,EAAG;AACpD,IAAA,KAAA,MAAW,CAAC,YAAA,EAAc,WAAW,CAAA,IAAK,IAAA,CAAK,UAAU,QAAA,EAAU,OAAA,EAAQ,IAAK,EAAC,EAAG;AAClF,MAAA,IAAI,CAAC,aAAA,CAAc,WAAA,CAAY,IAAI,CAAA,EAAG;AAGtC,MAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,QACf,IAAA,EAAM,QAAA;AAAA,QACN,MAAM,CAAC,OAAA,EAAS,WAAW,UAAA,EAAY,UAAA,EAAY,cAAc,MAAM,CAAA;AAAA,QACvE,OAAA,EACE;AAAA,OACH,CAAA;AAAA,IACH;AACA,IAAA,KAAA,MAAW,CAACA,YAAAA,EAAa,OAAO,CAAA,IAAK,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,QAAA,EAAU,KAAA,IAAS,EAAE,CAAA,EAAG;AAC/E,MAAA,KAAA,MAAW,UAAA,IAAc,6BAAA,CAA8B,OAAO,CAAA,EAAG;AAC/D,QAAA,WAAA,CAAY,YAAY,CAAC,OAAA,EAAS,WAAW,UAAA,EAAY,OAAA,EAASA,YAAW,CAAC,CAAA;AAAA,MAChF;AAAA,IACF;AACA,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,IAAA,KAAS,QAAA,EAAU;AAChC,IAAA,MAAM,MAAA,GAAS,KAAK,GAAA,CAAI,MAAA;AACxB,IAAA,KAAA,MAAW,CAAC,UAAA,EAAY,KAAK,CAAA,IAAK,MAAA,CAAO,SAAQ,EAAG;AAClD,MAAA,WAAA,CAAY,KAAA,CAAM,MAAM,CAAC,OAAA,EAAS,WAAW,KAAA,EAAO,QAAA,EAAU,UAAA,EAAY,MAAM,CAAC,CAAA;AAAA,IACnF;AACA,IAAA,MAAM,QAAA,GAAW,OAAO,IAAA,CAAK,CAAC,UAAU,aAAA,CAAc,KAAA,CAAM,IAAI,CAAC,CAAA;AACjE,IAAA,IAAI,QAAA,IAAY,OAAO,EAAA,CAAG,EAAE,GAAG,IAAA,CAAK,IAAA,OAAW,SAAA,EAAW;AACxD,MAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,QACf,IAAA,EAAM,QAAA;AAAA,QACN,IAAA,EAAM,CAAC,OAAA,EAAS,SAAA,EAAW,OAAO,QAAQ,CAAA;AAAA,QAC1C,OAAA,EAAS,CAAA,OAAA,EAAU,IAAA,CAAK,EAAE,CAAA,uNAAA;AAAA,OAC3B,CAAA;AAAA,IACH;AAAA,EACF;AAGA,EAAA,KAAA,MAAW,CAACA,YAAAA,EAAa,OAAO,CAAA,IAAK,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,MAAA,EAAQ,QAAA,IAAY,EAAE,CAAA,EAAG;AAChF,IAAA,IAAI,CAAC,6BAAA,CAA8B,OAAO,CAAA,CAAE,IAAA,CAAK,aAAa,CAAA,EAAG;AACjE,IAAA,OAAA,CAAQ,QAAA,CAAS;AAAA,MACf,IAAA,EAAM,QAAA;AAAA,MACN,IAAA,EAAM,CAAC,QAAA,EAAU,UAAA,EAAYA,YAAW,CAAA;AAAA,MACxC,OAAA,EACE;AAAA,KACH,CAAA;AAAA,EACH;AACF","file":"chunk-NUELZWCF.js","sourcesContent":["/**\n * Classifier-shaped `subprompt` nodes (classifier spec D5): a subprompt opts in by\n * declaring the reserved output properties `confidence` and `calibrated` next to\n * exactly one closed decision property. Only the runtime ever writes the two\n * reserved values, so a threshold on `confidence` can trust them.\n *\n * Pure: shared by the contract rules (`schema.ts`), the adapter, and the runner's\n * classifier decorator, so all three agree on what \"classifier-shaped\" means.\n */\n\n/** Output properties only the runtime may write on a classifier node. */\nexport const RESERVED_CLASSIFIER_FIELDS = [\"confidence\", \"calibrated\"] as const;\n\n/** One of {@link RESERVED_CLASSIFIER_FIELDS}. */\nexport type ReservedClassifierField = (typeof RESERVED_CLASSIFIER_FIELDS)[number];\n\n/** Max options Jev accepts per choice; also the port's documented ceiling. */\nconst MAX_CHOICE_OPTIONS = 255;\nconst MIN_SCORE_LEVELS = 2;\nconst MAX_SCORE_LEVELS = 10;\n\n/** The one decision a classifier node asks for, in the vocabulary of the host port. */\nexport type ClassifierDecision =\n | {\n kind: \"choice\";\n field: string;\n /** Label → rubric (null when the author gave none), in declared order. */\n options: Record<string, string | null>;\n }\n | {\n kind: \"score\";\n field: string;\n /** Levels in ascending `const` order; an answer's level index maps back through {@link values}. */\n levels: string[];\n /** The authored integer `const` for each entry of {@link levels}. */\n values: number[];\n }\n | { kind: \"binary\"; field: string; description?: string };\n\n/** Top-level output property names a contract declares, or `[]` when it declares none. */\nexport function declaredOutputProperties(outputSchema: unknown): string[] {\n if (typeof outputSchema !== \"object\" || outputSchema === null) return [];\n const properties = (outputSchema as Record<string, unknown>).properties;\n if (typeof properties !== \"object\" || properties === null) return [];\n return Object.keys(properties);\n}\n\n/** True when the contract declares either reserved name as a top-level output property. */\nexport function declaresReservedClassifierField(outputSchema: unknown): boolean {\n const declared = declaredOutputProperties(outputSchema);\n return RESERVED_CLASSIFIER_FIELDS.some((name) => declared.includes(name));\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction typeSet(schema: Record<string, unknown>): Set<string> | undefined {\n const type = schema.type;\n if (typeof type === \"string\") return new Set([type]);\n if (Array.isArray(type) && type.every((entry) => typeof entry === \"string\")) {\n return new Set(type as string[]);\n }\n return undefined;\n}\n\nfunction sameSet(actual: Set<string> | undefined, expected: string[]): boolean {\n return (\n actual !== undefined &&\n actual.size === expected.length &&\n expected.every((entry) => actual.has(entry))\n );\n}\n\nfunction decisionOf(\n field: string,\n schema: unknown,\n): { decision: ClassifierDecision } | { issue: string } {\n if (!isRecord(schema)) return { issue: `decision property ${field} must be a schema object` };\n const types = typeSet(schema);\n if (sameSet(types, [\"boolean\"]) && schema.enum === undefined && schema.oneOf === undefined) {\n return {\n decision: {\n kind: \"binary\",\n field,\n ...(typeof schema.description === \"string\" ? { description: schema.description } : {}),\n },\n };\n }\n if (Array.isArray(schema.enum)) {\n if (types !== undefined && !sameSet(types, [\"string\"])) {\n return { issue: `decision property ${field}: an enum decision must be typed string` };\n }\n const labels = schema.enum;\n if (!labels.every((label) => typeof label === \"string\" && label.length > 0)) {\n return { issue: `decision property ${field}: every enum label must be a non-empty string` };\n }\n if (new Set(labels).size !== labels.length) {\n return { issue: `decision property ${field}: enum labels must be unique` };\n }\n if (labels.length < 2 || labels.length > MAX_CHOICE_OPTIONS) {\n return {\n issue: `decision property ${field}: a choice needs 2–${MAX_CHOICE_OPTIONS} labels`,\n };\n }\n return {\n decision: {\n kind: \"choice\",\n field,\n options: Object.fromEntries((labels as string[]).map((label) => [label, null])),\n },\n };\n }\n if (Array.isArray(schema.oneOf)) {\n const entries = schema.oneOf;\n if (\n !entries.every(\n (entry) =>\n isRecord(entry) &&\n Object.keys(entry).every((key) => key === \"const\" || key === \"description\") &&\n \"const\" in entry &&\n (entry.description === undefined || typeof entry.description === \"string\"),\n )\n ) {\n return {\n issue: `decision property ${field}: every oneOf entry must be { \"const\": …, \"description\": \"…\" }`,\n };\n }\n const consts = (entries as Array<{ const: unknown; description?: string }>).map(\n (entry) => entry.const,\n );\n if (new Set(consts).size !== consts.length) {\n return { issue: `decision property ${field}: oneOf consts must be unique` };\n }\n if (consts.every((value) => typeof value === \"string\" && value.length > 0)) {\n if (types !== undefined && !sameSet(types, [\"string\"])) {\n return {\n issue: `decision property ${field}: a string-labelled choice must be typed string`,\n };\n }\n if (consts.length < 2 || consts.length > MAX_CHOICE_OPTIONS) {\n return {\n issue: `decision property ${field}: a choice needs 2–${MAX_CHOICE_OPTIONS} options`,\n };\n }\n return {\n decision: {\n kind: \"choice\",\n field,\n options: Object.fromEntries(\n (entries as Array<{ const: string; description?: string }>).map((entry) => [\n entry.const,\n entry.description ?? null,\n ]),\n ),\n },\n };\n }\n if (consts.every((value) => typeof value === \"number\" && Number.isInteger(value))) {\n if (types !== undefined && !sameSet(types, [\"integer\"])) {\n return { issue: `decision property ${field}: a score must be typed integer` };\n }\n if (consts.length < MIN_SCORE_LEVELS || consts.length > MAX_SCORE_LEVELS) {\n return {\n issue: `decision property ${field}: a score needs ${MIN_SCORE_LEVELS}–${MAX_SCORE_LEVELS} levels`,\n };\n }\n const ordered = [...(entries as Array<{ const: number; description?: string }>)].sort(\n (a, b) => a.const - b.const,\n );\n return {\n decision: {\n kind: \"score\",\n field,\n levels: ordered.map((entry) => entry.description ?? String(entry.const)),\n values: ordered.map((entry) => entry.const),\n },\n };\n }\n return {\n issue: `decision property ${field}: oneOf consts must be all non-empty strings (choice) or all integers (score)`,\n };\n }\n return {\n issue: `decision property ${field} must be a boolean, a string enum, or a oneOf of { const, description }`,\n };\n}\n\n/** Result of checking a subprompt's output contract against the classifier shape. */\nexport type ClassifierShapeCheck =\n | { classifier: false }\n | { classifier: true; decision: ClassifierDecision }\n | { classifier: true; issues: string[] };\n\n/**\n * Check an output contract against the classifier shape. Returns `classifier: false`\n * when neither reserved name is declared (no opt-in), the decision when the shape\n * holds, or the issues when the node opted in but the shape does not hold.\n */\nexport function checkClassifierShape(outputSchema: unknown): ClassifierShapeCheck {\n if (!declaresReservedClassifierField(outputSchema)) return { classifier: false };\n const schema = outputSchema as Record<string, unknown>;\n const properties = schema.properties as Record<string, unknown>;\n const issues: string[] = [];\n if (schema.type !== \"object\") issues.push('the output schema must be \"type\": \"object\"');\n if (schema.additionalProperties !== false) {\n issues.push(\"the output schema must set additionalProperties: false\");\n }\n const confidence = properties.confidence;\n if (!isRecord(confidence) || !sameSet(typeSet(confidence), [\"number\", \"null\"])) {\n issues.push('confidence must be typed [\"number\", \"null\"]');\n }\n const calibrated = properties.calibrated;\n if (!isRecord(calibrated) || !sameSet(typeSet(calibrated), [\"boolean\"])) {\n issues.push('calibrated must be typed \"boolean\"');\n }\n const decisionFields = Object.keys(properties).filter(\n (name) => !(RESERVED_CLASSIFIER_FIELDS as readonly string[]).includes(name),\n );\n let decision: ClassifierDecision | undefined;\n if (decisionFields.length !== 1) {\n issues.push(\n `a classifier node declares exactly one decision property besides confidence and calibrated (found ${decisionFields.length})`,\n );\n } else {\n const result = decisionOf(decisionFields[0], properties[decisionFields[0]]);\n if (\"issue\" in result) issues.push(result.issue);\n else decision = result.decision;\n }\n const required = Array.isArray(schema.required) ? schema.required : [];\n const expectedRequired = [...decisionFields.slice(0, 1), ...RESERVED_CLASSIFIER_FIELDS];\n if (\n required.length !== expectedRequired.length ||\n !expectedRequired.every((name) => required.includes(name))\n ) {\n issues.push(`required must be exactly [${expectedRequired.map((n) => `\"${n}\"`).join(\", \")}]`);\n }\n if (issues.length > 0 || !decision) return { classifier: true, issues };\n return { classifier: true, decision };\n}\n\n/** The decision of a well-formed classifier contract, or `undefined` for any other contract. */\nexport function classifierDecision(outputSchema: unknown): ClassifierDecision | undefined {\n const check = checkClassifierShape(outputSchema);\n return check.classifier && \"decision\" in check ? check.decision : undefined;\n}\n\n/**\n * The output schema with the reserved properties removed, for the prompt the\n * generative fallback sees: the model is asked only for the decision, never for\n * a number it would make up.\n */\nexport function withoutReservedClassifierFields(\n outputSchema: Record<string, unknown>,\n): Record<string, unknown> {\n const properties = { ...(outputSchema.properties as Record<string, unknown>) };\n for (const name of RESERVED_CLASSIFIER_FIELDS) delete properties[name];\n const required = Array.isArray(outputSchema.required)\n ? outputSchema.required.filter(\n (name) => !(RESERVED_CLASSIFIER_FIELDS as readonly string[]).includes(String(name)),\n )\n : undefined;\n return { ...outputSchema, properties, ...(required ? { required } : {}) };\n}\n","// Canonical definition lives in `@skaile/workspaces/types` — it is the wire\n// shape persisted on `CheckEvidence`/`NodeExecutionAttempt`, not a connector-\n// local concept. Re-exported here so existing in-connector imports are unaffected.\nimport type { BindingOrigin } from \"@skaile/workspaces/types\";\nexport type { BindingOrigin };\n\n/** Hard resource budgets applied to every Flow expression evaluation. */\nexport const FLOW_EXPRESSION_LIMITS = Object.freeze({\n maxLength: 4096,\n maxTokens: 256,\n maxNesting: 32,\n maxPathSegments: 32,\n maxCollectionItems: 1024,\n});\n\n/** Read-only values available to the bounded Flow expression language. */\nexport interface FlowExpressionContext {\n /** Validated input supplied to the current flow run. */\n flow: { input: unknown };\n /** Authored defaults exposed through bounded own-property reads. */\n defaults?: Record<string, unknown>;\n /** Node status and declared output fields keyed by node identifier. */\n nodes: Record<string, { status?: string; output?: { fields?: unknown } }>;\n}\n\n/** A resolved JSON value together with every source that contributed to it. */\nexport interface ResolvedBinding {\n /** Runtime value passed to the node executor. */\n value: unknown;\n /** Stable, de-duplicated provenance in authored traversal order. */\n origins: BindingOrigin[];\n}\n\n/** All named node inputs, keeping executor values separate from provenance. */\nexport interface ResolvedNodeBindings {\n /** Resolved values keyed by authored binding name. */\n values: Record<string, unknown>;\n /** Provenance keyed by authored binding name. */\n origins: Record<string, BindingOrigin[]>;\n}\n\n/** How each producer node obtained its output fields. */\nexport type NodeOutputOrigin = Record<string, \"agent\" | \"runtime\">;\n\n/** @internal Binding names excluded from both authored and direct typed inputs. */\nexport const FLOW_BINDING_NAME_PATTERN = /^(?!__proto__$)/;\n\n/** @internal Collect bounded expressions embedded in a JSON binding value. */\nexport function collectFlowBindingExpressions(value: unknown): string[] {\n if (typeof value === \"string\") {\n return Array.from(value.matchAll(/\\$\\{([^{}]+)\\}/g), (match) => match[1]);\n }\n if (Array.isArray(value)) return value.flatMap(collectFlowBindingExpressions);\n if (typeof value !== \"object\" || value === null) return [];\n return Object.values(value).flatMap(collectFlowBindingExpressions);\n}\n\n/** Deterministic syntax, budget, or path failure raised by the Flow evaluator. */\nexport class FlowExpressionError extends Error {\n /** Stable error name for callers that classify evaluator failures. */\n override readonly name = \"FlowExpressionError\";\n\n /** Runtime path that was grammar-valid but absent from the supplied context. */\n readonly missingPath?: string;\n\n /** Producer node whose `skipped` status is why {@link missingPath} is absent. */\n readonly skippedProducer?: string;\n\n constructor(message: string, missingPath?: string, skippedProducer?: string) {\n super(message);\n this.missingPath = missingPath;\n this.skippedProducer = skippedProducer;\n }\n}\n\ntype TokenKind = \"value\" | \"word\" | \"operator\" | \"punctuation\" | \"eof\";\ninterface Token {\n kind: TokenKind;\n value: unknown;\n position: number;\n}\n\nfunction expressionError(\n message: string,\n position?: number,\n missingPath?: string,\n skippedProducer?: string,\n): FlowExpressionError {\n return new FlowExpressionError(\n position === undefined\n ? `Flow expression ${message}`\n : `Flow expression ${message} at ${position}`,\n missingPath,\n skippedProducer,\n );\n}\n\nfunction parseString(source: string, start: number): { value: string; end: number } {\n const quote = source[start];\n let value = \"\";\n let index = start + 1;\n while (index < source.length) {\n const character = source[index];\n if (character === quote) return { value, end: index + 1 };\n if (character !== \"\\\\\") {\n value += character;\n index++;\n continue;\n }\n\n const escaped = source[index + 1];\n if (escaped === undefined) throw expressionError(\"has an unterminated string\", start);\n const replacements: Record<string, string> = {\n \"\\\\\": \"\\\\\",\n \"'\": \"'\",\n '\"': '\"',\n n: \"\\n\",\n r: \"\\r\",\n t: \"\\t\",\n b: \"\\b\",\n f: \"\\f\",\n };\n if (escaped === \"u\") {\n const hex = source.slice(index + 2, index + 6);\n if (!/^[0-9a-fA-F]{4}$/.test(hex)) {\n throw expressionError(\"has an invalid unicode escape\", index);\n }\n value += String.fromCharCode(Number.parseInt(hex, 16));\n index += 6;\n continue;\n }\n if (!(escaped in replacements)) throw expressionError(\"has an invalid escape\", index);\n value += replacements[escaped];\n index += 2;\n }\n throw expressionError(\"has an unterminated string\", start);\n}\n\nfunction tokenize(source: string): Token[] {\n if (source.length > FLOW_EXPRESSION_LIMITS.maxLength) {\n throw expressionError(`exceeds the length limit of ${FLOW_EXPRESSION_LIMITS.maxLength}`);\n }\n\n const tokens: Token[] = [];\n const add = (token: Token): void => {\n tokens.push(token);\n if (tokens.length > FLOW_EXPRESSION_LIMITS.maxTokens) {\n throw expressionError(`exceeds the token limit of ${FLOW_EXPRESSION_LIMITS.maxTokens}`);\n }\n };\n\n let index = 0;\n while (index < source.length) {\n const character = source[index];\n if (/\\s/.test(character)) {\n index++;\n continue;\n }\n\n const pair = source.slice(index, index + 2);\n if ([\"&&\", \"||\", \"==\", \"!=\", \"<=\", \">=\"].includes(pair)) {\n add({ kind: \"operator\", value: pair, position: index });\n index += 2;\n continue;\n }\n if ([\"!\", \"<\", \">\"].includes(character)) {\n add({ kind: \"operator\", value: character, position: index });\n index++;\n continue;\n }\n if ([\"(\", \")\", \"[\", \"]\", \",\"].includes(character)) {\n add({ kind: \"punctuation\", value: character, position: index });\n index++;\n continue;\n }\n if (character === \"'\" || character === '\"') {\n const parsed = parseString(source, index);\n add({ kind: \"value\", value: parsed.value, position: index });\n index = parsed.end;\n continue;\n }\n\n const number = source.slice(index).match(/^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/);\n if (number) {\n add({ kind: \"value\", value: Number(number[0]), position: index });\n index += number[0].length;\n continue;\n }\n\n const word = source.slice(index).match(/^[A-Za-z_][A-Za-z0-9_.-]*/);\n if (word) {\n const raw = word[0];\n if (raw === \"true\") add({ kind: \"value\", value: true, position: index });\n else if (raw === \"false\") add({ kind: \"value\", value: false, position: index });\n else if (raw === \"null\") add({ kind: \"value\", value: null, position: index });\n else if (raw === \"in\") add({ kind: \"operator\", value: raw, position: index });\n else add({ kind: \"word\", value: raw, position: index });\n index += raw.length;\n continue;\n }\n\n throw expressionError(`contains unsupported token ${JSON.stringify(character)}`, index);\n }\n tokens.push({ kind: \"eof\", value: \"\", position: source.length });\n return tokens;\n}\n\nconst FORBIDDEN_PATH_SEGMENTS = new Set([\"__proto__\", \"prototype\", \"constructor\"]);\n\nfunction ownValue(value: unknown, segment: string, position: number, path: string): unknown {\n if ((typeof value !== \"object\" && typeof value !== \"function\") || value === null) {\n throw expressionError(\"path does not exist\", position, path);\n }\n if (!Object.hasOwn(value, segment)) {\n throw expressionError(\"path does not exist\", position, path);\n }\n return (value as Record<string, unknown>)[segment];\n}\n\n/** Where a grammar-valid path starts, and the own-property segments left to walk from there. */\ninterface PathShape {\n root: \"input\" | \"defaults\" | \"nodes\";\n remaining: string[];\n /** Producer id when the path reads that node's `output.fields`; a `skipped` producer then has no output. */\n outputProducer?: string;\n}\n\n/** Static path grammar and budget checks. Throws for every path no context could satisfy. */\nfunction parsePathShape(raw: string, position: number): PathShape {\n const segments = raw.split(\".\");\n if (segments.length > FLOW_EXPRESSION_LIMITS.maxPathSegments) {\n throw expressionError(\n `exceeds the path traversal limit of ${FLOW_EXPRESSION_LIMITS.maxPathSegments}`,\n position,\n );\n }\n if (segments.some((segment) => segment.length === 0)) {\n throw expressionError(\"contains an empty path segment\", position);\n }\n const forbidden = segments.find((segment) => FORBIDDEN_PATH_SEGMENTS.has(segment));\n if (forbidden) throw expressionError(`contains forbidden path segment ${forbidden}`, position);\n\n if (segments[0] === \"flow\" && segments[1] === \"input\") {\n if (segments.length === 2) {\n throw expressionError(\"path requires a JSON property suffix\", position);\n }\n return { root: \"input\", remaining: segments.slice(2) };\n }\n if (segments[0] === \"defaults\" && segments.length >= 2) {\n return { root: \"defaults\", remaining: segments.slice(1) };\n }\n if (segments[0] === \"nodes\" && segments.length === 3 && segments[2] === \"status\") {\n return { root: \"nodes\", remaining: segments.slice(1) };\n }\n if (\n segments[0] === \"nodes\" &&\n segments.length >= 4 &&\n segments[2] === \"output\" &&\n segments[3] === \"fields\"\n ) {\n if (segments.length === 4) {\n throw expressionError(\"path requires a JSON property suffix\", position);\n }\n return { root: \"nodes\", remaining: segments.slice(1), outputProducer: segments[1] };\n }\n throw expressionError(`contains unsupported path ${raw}`, position);\n}\n\n/** Walk a parsed path through the live context. Only run-data failures are raised here. */\nfunction readPath(\n shape: PathShape,\n raw: string,\n context: FlowExpressionContext,\n position: number,\n): unknown {\n let value: unknown;\n if (shape.root === \"input\") {\n value = context.flow.input;\n } else if (shape.root === \"defaults\") {\n value = context.defaults ?? {};\n } else {\n value = context.nodes;\n // A skipped producer's output is discarded before the context is built, so\n // without this the read reports the generic \"path does not exist\".\n const producer = shape.outputProducer;\n if (\n producer !== undefined &&\n Object.hasOwn(context.nodes, producer) &&\n context.nodes[producer].status === \"skipped\"\n ) {\n throw expressionError(\n `cannot read ${raw}: producer node ${producer} was skipped and produced no output`,\n position,\n raw,\n producer,\n );\n }\n }\n for (const segment of shape.remaining) value = ownValue(value, segment, position, raw);\n return value;\n}\n\nfunction compare(operator: string, left: unknown, right: unknown, position: number): boolean {\n if (operator === \"==\") return Object.is(left, right);\n if (operator === \"!=\") return !Object.is(left, right);\n if (operator === \"in\") {\n if (!Array.isArray(right))\n throw expressionError(\"requires an array on the right of in\", position);\n if (right.length > FLOW_EXPRESSION_LIMITS.maxCollectionItems) {\n throw expressionError(\n `exceeds the collection item limit of ${FLOW_EXPRESSION_LIMITS.maxCollectionItems}`,\n position,\n );\n }\n return right.some((candidate) => Object.is(candidate, left));\n }\n if (\n !(\n (typeof left === \"number\" && typeof right === \"number\") ||\n (typeof left === \"string\" && typeof right === \"string\")\n )\n ) {\n throw expressionError(`requires comparable operands for ${operator}`, position);\n }\n if (operator === \"<\") return left < right;\n if (operator === \"<=\") return left <= right;\n if (operator === \">\") return left > right;\n if (operator === \">=\") return left >= right;\n throw expressionError(`contains unsupported operator ${operator}`, position);\n}\n\nconst STATIC_BOOLEAN = Symbol(\"static-boolean\");\nconst STATIC_PATH = Symbol(\"static-path\");\n\ninterface StaticPath {\n marker: typeof STATIC_PATH;\n path: string;\n}\n\nfunction isStaticPath(value: unknown): value is StaticPath {\n return (\n typeof value === \"object\" && value !== null && (value as StaticPath).marker === STATIC_PATH\n );\n}\n\nfunction isBooleanOperand(value: unknown): boolean {\n return typeof value === \"boolean\" || value === STATIC_BOOLEAN || isStaticPath(value);\n}\n\nfunction assertBooleanOperand(value: unknown, position: number): void {\n if (!isBooleanOperand(value)) throw expressionError(\"requires boolean operands\", position);\n}\n\n/** Parsed expression. Built once per expression text by {@link compileExpression}. */\ntype ExprNode =\n | { kind: \"literal\"; value: unknown }\n | { kind: \"path\"; path: string; position: number; shape: PathShape }\n | { kind: \"list\"; items: ExprNode[] }\n | { kind: \"group\"; inner: ExprNode }\n | { kind: \"not\"; operand: ExprNode; position: number }\n | { kind: \"compare\"; operator: string; left: ExprNode; right: ExprNode; position: number }\n // `positions[i]` is the operator token between `operands[i]` and `operands[i + 1]`.\n | { kind: \"and\"; operands: ExprNode[]; positions: number[] }\n | { kind: \"or\"; operands: ExprNode[]; positions: number[] };\n\nconst COMPARISON_OPERATORS = [\"==\", \"!=\", \"<\", \"<=\", \">\", \">=\", \"in\"];\n\n/** Recursive-descent parser: syntax, token and nesting budgets, and path grammar. No values are read. */\nclass ExpressionBuilder {\n private index = 0;\n private nesting = 0;\n\n constructor(private readonly tokens: Token[]) {}\n\n build(): ExprNode {\n const root = this.parseOr();\n const trailing = this.peek();\n if (trailing.kind !== \"eof\") {\n throw expressionError(\n `contains unexpected token ${String(trailing.value)}`,\n trailing.position,\n );\n }\n return root;\n }\n\n private peek(): Token {\n return this.tokens[this.index];\n }\n\n private take(): Token {\n return this.tokens[this.index++];\n }\n\n private accept(value: string): Token | undefined {\n if (this.peek().value !== value) return undefined;\n return this.take();\n }\n\n private parseOr(): ExprNode {\n const operands = [this.parseAnd()];\n const positions: number[] = [];\n while (this.peek().value === \"||\") {\n positions.push(this.take().position);\n operands.push(this.parseAnd());\n }\n return { kind: \"or\", operands, positions };\n }\n\n private parseAnd(): ExprNode {\n const operands = [this.parseComparison()];\n const positions: number[] = [];\n while (this.peek().value === \"&&\") {\n positions.push(this.take().position);\n operands.push(this.parseComparison());\n }\n return { kind: \"and\", operands, positions };\n }\n\n private parseComparison(): ExprNode {\n const left = this.parseUnary();\n const token = this.peek();\n if (token.kind !== \"operator\" || !COMPARISON_OPERATORS.includes(String(token.value))) {\n return left;\n }\n this.take();\n const right = this.parseUnary();\n return {\n kind: \"compare\",\n operator: String(token.value),\n left,\n right,\n position: token.position,\n };\n }\n\n private parseUnary(): ExprNode {\n const operator = this.accept(\"!\");\n if (operator) {\n return { kind: \"not\", operand: this.parseUnary(), position: operator.position };\n }\n return this.parsePrimary();\n }\n\n private parsePrimary(): ExprNode {\n const token = this.take();\n if (token.kind === \"value\") return { kind: \"literal\", value: token.value };\n if (token.kind === \"word\") {\n const path = String(token.value);\n return {\n kind: \"path\",\n path,\n position: token.position,\n shape: parsePathShape(path, token.position),\n };\n }\n if (token.value === \"(\") {\n this.enterNesting(token.position);\n const inner = this.parseOr();\n if (!this.accept(\")\"))\n throw expressionError(\"is missing a closing parenthesis\", token.position);\n this.nesting--;\n return { kind: \"group\", inner };\n }\n if (token.value === \"[\") {\n this.enterNesting(token.position);\n const items: ExprNode[] = [];\n if (!this.accept(\"]\")) {\n do items.push(this.parsePrimary());\n while (this.accept(\",\"));\n if (!this.accept(\"]\"))\n throw expressionError(\"is missing a closing bracket\", token.position);\n }\n this.nesting--;\n return { kind: \"list\", items };\n }\n throw expressionError(`contains unexpected token ${String(token.value)}`, token.position);\n }\n\n private enterNesting(position: number): void {\n this.nesting++;\n if (this.nesting > FLOW_EXPRESSION_LIMITS.maxNesting) {\n throw expressionError(\n `exceeds the nesting limit of ${FLOW_EXPRESSION_LIMITS.maxNesting}`,\n position,\n );\n }\n }\n}\n\n/**\n * Authored-shape analysis of a parsed expression: which operands are statically\n * boolean, which paths it reads, and which comparisons it makes. Walks every\n * branch, short-circuited or not, without reading any value.\n */\nclass ExpressionAnalyzer {\n readonly references = new Map<string, boolean>();\n readonly comparisons: FlowExpressionComparison[] = [];\n /** Literal `path == true` conjuncts already analyzed, one frame per enclosing `&&` chain. */\n private readonly guardFrames: string[][] = [];\n /**\n * Guards the operand {@link analyzeOperand} just analyzed establishes when true:\n * its own path for a literal `path == true`, or every guard of a parenthesized\n * `&&` group, which is true only when all its conjuncts are.\n */\n private lastGuards: string[] = [];\n /** Guards of the `&&` / `||` chain that just finished; empty once a `||` joined it. */\n private lastChainGuards: string[] = [];\n\n private record(path: string, booleanOperand: boolean): void {\n this.references.set(path, (this.references.get(path) ?? false) || booleanOperand);\n }\n\n private booleanOperand(value: unknown, position: number): void {\n assertBooleanOperand(value, position);\n if (isStaticPath(value)) this.record(value.path, true);\n }\n\n /** Static value of a node: literals as themselves, paths as markers, computed booleans as one marker. */\n analyze(node: ExprNode): unknown {\n switch (node.kind) {\n case \"literal\":\n return node.value;\n case \"path\":\n this.record(node.path, false);\n return { marker: STATIC_PATH, path: node.path };\n case \"list\":\n return node.items.map((item) => this.analyze(item));\n case \"group\":\n return this.analyze(node.inner);\n case \"not\": {\n const value = this.analyze(node.operand);\n this.booleanOperand(value, node.position);\n return STATIC_BOOLEAN;\n }\n case \"compare\": {\n const left = this.analyze(node.left);\n const right = this.analyze(node.right);\n this.comparisons.push({\n operator: node.operator,\n left: isStaticPath(left) ? { path: left.path } : { literal: left },\n right: isStaticPath(right) ? { path: right.path } : { literal: right },\n guards: this.guardFrames.flat(),\n });\n this.lastGuards =\n node.operator === \"==\" && isStaticPath(left) && right === true ? [left.path] : [];\n return STATIC_BOOLEAN;\n }\n case \"and\":\n return this.analyzeAnd(node);\n case \"or\":\n return this.analyzeOr(node);\n }\n }\n\n private analyzeOperand(node: ExprNode): unknown {\n if (node.kind === \"compare\") return this.analyze(node);\n const value = this.analyze(node);\n this.lastGuards = node.kind === \"group\" ? this.lastChainGuards : [];\n return value;\n }\n\n private analyzeAnd(node: Extract<ExprNode, { kind: \"and\" }>): unknown {\n // A conjunct's guard is pushed only after the conjunct is analyzed, so a\n // comparison sees exactly the guards that short-circuit ahead of it.\n const guards: string[] = [];\n this.guardFrames.push(guards);\n try {\n let value = this.analyzeOperand(node.operands[0]);\n guards.push(...this.lastGuards);\n for (let index = 1; index < node.operands.length; index++) {\n const position = node.positions[index - 1];\n this.booleanOperand(value, position);\n const right = this.analyzeOperand(node.operands[index]);\n guards.push(...this.lastGuards);\n this.booleanOperand(right, position);\n value = STATIC_BOOLEAN;\n }\n this.lastChainGuards = [...guards];\n return value;\n } finally {\n this.guardFrames.pop();\n }\n }\n\n private analyzeOr(node: Extract<ExprNode, { kind: \"or\" }>): unknown {\n let value = this.analyze(node.operands[0]);\n for (let index = 1; index < node.operands.length; index++) {\n const position = node.positions[index - 1];\n this.booleanOperand(value, position);\n const right = this.analyze(node.operands[index]);\n this.booleanOperand(right, position);\n value = STATIC_BOOLEAN;\n }\n if (node.operands.length > 1) this.lastChainGuards = [];\n return value;\n }\n}\n\nfunction assertBooleanValue(value: unknown, position: number): void {\n if (typeof value !== \"boolean\") throw expressionError(\"requires boolean operands\", position);\n}\n\n/**\n * Evaluate a compiled expression against live data. Syntax, budgets, path\n * grammar and the authored operand shape were settled by {@link compileExpression};\n * only failures that depend on `context` are raised here. A short-circuited\n * operand is not visited.\n */\nfunction evaluateNode(\n node: ExprNode,\n context: FlowExpressionContext,\n onPath?: (path: string) => void,\n): unknown {\n switch (node.kind) {\n case \"literal\":\n return node.value;\n case \"path\":\n onPath?.(node.path);\n return readPath(node.shape, node.path, context, node.position);\n case \"list\":\n return node.items.map((item) => evaluateNode(item, context, onPath));\n case \"group\":\n return evaluateNode(node.inner, context, onPath);\n case \"not\": {\n const value = evaluateNode(node.operand, context, onPath);\n assertBooleanValue(value, node.position);\n return value === false;\n }\n case \"compare\":\n return compare(\n node.operator,\n evaluateNode(node.left, context, onPath),\n evaluateNode(node.right, context, onPath),\n node.position,\n );\n case \"and\":\n case \"or\": {\n // `&&` stops at a false left side, `||` at a true one.\n const continueOn = node.kind === \"and\";\n let value = evaluateNode(node.operands[0], context, onPath);\n for (let index = 1; index < node.operands.length; index++) {\n const position = node.positions[index - 1];\n assertBooleanValue(value, position);\n if (value !== continueOn) continue;\n value = evaluateNode(node.operands[index], context, onPath);\n assertBooleanValue(value, position);\n }\n return value;\n }\n }\n}\n\n/** Static path evidence used to reconcile safe grammar with declared producer output types. */\nexport interface FlowExpressionReference {\n /** Grammar-approved context path. */\n path: string;\n /** True when logical evaluation requires the resolved value itself to be boolean. */\n booleanOperand: boolean;\n}\n\n/** One side of a comparison: a context path, or a literal (anything that is not a bare path). */\nexport type FlowExpressionOperand = { path: string } | { literal: unknown };\n\n/** Static evidence for one comparison, with the guards that short-circuit ahead of it. */\nexport interface FlowExpressionComparison {\n /** `==`, `!=`, `<`, `<=`, `>`, `>=` or `in`. */\n operator: string;\n left: FlowExpressionOperand;\n right: FlowExpressionOperand;\n /**\n * Paths `p` of every literal `p == true` conjunct that sits strictly earlier in\n * an enclosing `&&` chain, so the comparison is evaluated only once each is\n * true. Only that literal form counts: `true == p` and `p != false` are not\n * recognized as guards.\n */\n guards: string[];\n}\n\n/** Everything {@link compileExpression} learns from one expression text. */\ninterface CompiledExpression {\n /** Parsed tree; absent for the `default` sentinel, which matches unconditionally. */\n root?: ExprNode;\n references: FlowExpressionReference[];\n comparisons: FlowExpressionComparison[];\n /** True when the expression is statically a boolean (a boolean literal or a computed boolean). */\n booleanResult: boolean;\n}\n\nconst COMPILED_EXPRESSION_LIMIT = 512;\nconst compiledExpressions = new Map<string, CompiledExpression>();\n\n/**\n * Tokenize, parse and analyze `expression` once. This is the single place the\n * grammar and the authored-shape rules run: `parseFlowDefinition` reaches it\n * through {@link inspectFlowExpression}, and evaluation reuses the cached result\n * instead of parsing the text again. A text no parser has seen yet (a direct\n * caller of {@link evaluateFlowExpression}) is compiled on first use and fails\n * here with the same errors.\n */\nfunction compileExpression(expression: string): CompiledExpression {\n const cached = compiledExpressions.get(expression);\n if (cached) return cached;\n\n const tokens = tokenize(expression);\n let compiled: CompiledExpression;\n if (expression.trim() === \"default\") {\n compiled = { references: [], comparisons: [], booleanResult: true };\n } else {\n const root = new ExpressionBuilder(tokens).build();\n const analyzer = new ExpressionAnalyzer();\n const result = analyzer.analyze(root);\n compiled = {\n root,\n references: Array.from(analyzer.references, ([path, booleanOperand]) => ({\n path,\n booleanOperand,\n })),\n comparisons: analyzer.comparisons,\n booleanResult: typeof result === \"boolean\" || result === STATIC_BOOLEAN,\n };\n }\n\n if (compiledExpressions.size >= COMPILED_EXPRESSION_LIMIT) {\n const oldest = compiledExpressions.keys().next();\n if (!oldest.done) compiledExpressions.delete(oldest.value);\n }\n compiledExpressions.set(expression, compiled);\n return compiled;\n}\n\n/** Report every comparison in an authored expression, for rules that need operators and guards. */\nexport function inspectFlowExpressionComparisons(expression: string): FlowExpressionComparison[] {\n return [...compileExpression(expression).comparisons];\n}\n\n/** Validates authored syntax without reading runtime values; binding mode relaxes only the result type. */\nexport function inspectFlowExpression(\n expression: string,\n requireBoolean = true,\n): FlowExpressionReference[] {\n const compiled = compileExpression(expression);\n if (requireBoolean && !compiled.booleanResult) {\n throw expressionError(\"must evaluate to a boolean\");\n }\n return [...compiled.references];\n}\n\n/**\n * Evaluates the bounded Flow expression subset without calls, arithmetic, or dynamic property access.\n * The `default` sentinel is valid only as the complete expression and matches unconditionally.\n * Reuses the tree {@link inspectFlowExpression} cached when `parseFlowDefinition` validated the\n * flow, so evaluation raises only what depends on `context`: an absent path, a skipped\n * producer, an operand or result that is not boolean, operands that do not compare.\n */\nexport function evaluateFlowExpression(\n expression: string,\n context: FlowExpressionContext,\n): boolean {\n const { root } = compileExpression(expression);\n if (root === undefined) return true;\n const result = evaluateNode(root, context);\n if (typeof result !== \"boolean\") {\n throw expressionError(\"must evaluate to a boolean\");\n }\n return result;\n}\n\n/** Proposal-compatible short name for {@link evaluateFlowExpression}. */\nexport function evaluate(expression: string, context: FlowExpressionContext): boolean {\n return evaluateFlowExpression(expression, context);\n}\n\nfunction evaluateFlowExpressionValue(\n expression: string,\n context: FlowExpressionContext,\n): { value: unknown; paths: string[] } {\n const { root } = compileExpression(expression);\n if (root === undefined) return { value: true, paths: [] };\n const paths: string[] = [];\n const value = evaluateNode(root, context, (path) => paths.push(path));\n return { value, paths };\n}\n\nfunction originsForPath(\n path: string,\n nodeOutputOrigin: NodeOutputOrigin,\n flowInputOrigins: Record<string, BindingOrigin[]>,\n): BindingOrigin[] {\n if (path.startsWith(\"flow.input.\")) {\n const inputName = path.split(\".\")[2];\n const inherited = flowInputOrigins[inputName];\n return inherited ?? [{ source: \"flow-input\", path, obtainedBy: \"runtime\" }];\n }\n if (path.startsWith(\"defaults.\")) {\n return [{ source: \"default\", path, obtainedBy: \"runtime\" }];\n }\n\n const segments = path.split(\".\");\n const nodeId = segments[1];\n if (segments.length === 3 && segments[0] === \"nodes\" && segments[2] === \"status\") {\n return [{ source: \"node-status\", nodeId, path, obtainedBy: \"runtime\" }];\n }\n if (\n segments.length >= 5 &&\n segments[0] === \"nodes\" &&\n segments[2] === \"output\" &&\n segments[3] === \"fields\"\n ) {\n const obtainedBy = nodeOutputOrigin[nodeId];\n if (!obtainedBy) {\n throw expressionError(`has no output origin for node ${nodeId}`);\n }\n return [{ source: \"node-output\", nodeId, path, obtainedBy }];\n }\n\n throw expressionError(`contains unsupported path ${path}`);\n}\n\n/** @internal Serialize a JSON-compatible value with deterministic object-key ordering. */\nexport function stableFlowJson(value: unknown): string {\n if (value === undefined) return \"null\";\n if (value === null || typeof value !== \"object\") return JSON.stringify(value) ?? \"null\";\n if (Array.isArray(value)) return `[${value.map(stableFlowJson).join(\",\")}]`;\n const object = value as Record<string, unknown>;\n return `{${Object.keys(object)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${stableFlowJson(object[key])}`)\n .join(\",\")}}`;\n}\n\nfunction interpolationText(value: unknown): string {\n if (typeof value === \"string\") return value;\n return stableFlowJson(value);\n}\n\nfunction deduplicateOrigins(origins: BindingOrigin[]): BindingOrigin[] {\n const seen = new Set<string>();\n return origins.filter((origin) => {\n const key = JSON.stringify(origin);\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n}\n\nfunction resolveBindingValue(\n authored: unknown,\n bindingPath: string,\n context: FlowExpressionContext,\n nodeOutputOrigin: NodeOutputOrigin,\n flowInputOrigins: Record<string, BindingOrigin[]>,\n depth: number,\n): ResolvedBinding {\n if (depth > FLOW_EXPRESSION_LIMITS.maxNesting) {\n throw expressionError(`exceeds the nesting limit of ${FLOW_EXPRESSION_LIMITS.maxNesting}`);\n }\n\n if (typeof authored === \"string\") {\n const exact = authored.match(/^\\$\\{([^{}]+)\\}$/);\n if (exact) {\n const evaluated = evaluateFlowExpressionValue(exact[1], context);\n return {\n value: evaluated.value,\n origins: deduplicateOrigins(\n evaluated.paths.flatMap((path) =>\n originsForPath(path, nodeOutputOrigin, flowInputOrigins),\n ),\n ),\n };\n }\n\n const matches = Array.from(authored.matchAll(/\\$\\{([^{}]+)\\}/g));\n if (matches.length === 0) {\n return {\n value: authored,\n origins: [{ source: \"literal\", path: bindingPath, obtainedBy: \"runtime\" }],\n };\n }\n\n const origins: BindingOrigin[] = [\n { source: \"literal\", path: bindingPath, obtainedBy: \"runtime\" },\n ];\n const value = authored.replace(/\\$\\{([^{}]+)\\}/g, (_placeholder, expression: string) => {\n const evaluated = evaluateFlowExpressionValue(expression, context);\n origins.push(\n ...evaluated.paths.flatMap((path) =>\n originsForPath(path, nodeOutputOrigin, flowInputOrigins),\n ),\n );\n return interpolationText(evaluated.value);\n });\n return { value, origins: deduplicateOrigins(origins) };\n }\n\n if (Array.isArray(authored)) {\n if (authored.length > FLOW_EXPRESSION_LIMITS.maxCollectionItems) {\n throw expressionError(\n `exceeds the collection item limit of ${FLOW_EXPRESSION_LIMITS.maxCollectionItems}`,\n );\n }\n const resolved = authored.map((value) =>\n resolveBindingValue(\n value,\n bindingPath,\n context,\n nodeOutputOrigin,\n flowInputOrigins,\n depth + 1,\n ),\n );\n return {\n value: resolved.map(({ value }) => value),\n origins: deduplicateOrigins([\n { source: \"literal\", path: bindingPath, obtainedBy: \"runtime\" },\n ...resolved.flatMap(({ origins }) => origins),\n ]),\n };\n }\n\n if (typeof authored === \"object\" && authored !== null) {\n const entries = Object.entries(authored);\n if (entries.length > FLOW_EXPRESSION_LIMITS.maxCollectionItems) {\n throw expressionError(\n `exceeds the collection item limit of ${FLOW_EXPRESSION_LIMITS.maxCollectionItems}`,\n );\n }\n const resolved = entries.map(\n ([key, value]) =>\n [\n key,\n resolveBindingValue(\n value,\n bindingPath,\n context,\n nodeOutputOrigin,\n flowInputOrigins,\n depth + 1,\n ),\n ] as const,\n );\n return {\n value: Object.fromEntries(resolved.map(([key, result]) => [key, result.value])),\n origins: deduplicateOrigins([\n { source: \"literal\", path: bindingPath, obtainedBy: \"runtime\" },\n ...resolved.flatMap(([, result]) => result.origins),\n ]),\n };\n }\n\n return {\n value: authored,\n origins: [{ source: \"literal\", path: bindingPath, obtainedBy: \"runtime\" }],\n };\n}\n\n/**\n * Resolves authored node inputs through the bounded Flow expression grammar.\n *\n * Exact `${...}` placeholders retain their JSON type. Placeholders embedded in\n * text use deterministic interpolation, while arrays and objects are traversed\n * recursively. Runtime values and provenance remain separate so executors do not\n * need to understand trust metadata.\n */\nexport function resolveFlowBindings(\n bindings: Record<string, unknown> | undefined,\n context: FlowExpressionContext,\n nodeOutputOrigin: NodeOutputOrigin = {},\n flowInputOrigins: Record<string, BindingOrigin[]> = {},\n): ResolvedNodeBindings {\n const values: Record<string, unknown> = {};\n const origins: Record<string, BindingOrigin[]> = {};\n const entries = Object.entries(bindings ?? {});\n for (const [name, authored] of entries) {\n const resolved = resolveBindingValue(\n authored,\n `input.${name}`,\n context,\n nodeOutputOrigin,\n flowInputOrigins,\n 0,\n );\n values[name] = resolved.value;\n origins[name] = resolved.origins;\n }\n return { values, origins };\n}\n","import * as z from \"zod\";\nimport type { FlowNodeContract, FlowNodeRun } from \"./schema.js\";\nimport { collectFlowBindingExpressions, inspectFlowExpression } from \"./expression.js\";\n\n/** The node shape both the authored schema and the runtime engine share for consumption. */\ninterface OutputFieldsNode {\n id: string;\n run?: FlowNodeRun;\n contract?: FlowNodeContract;\n}\n\n/** The flow shape consumption reads: its nodes, plus the flow output bindings that read them. */\ninterface OutputFieldsFlow {\n nodes: readonly OutputFieldsNode[];\n output?: { bindings?: Record<string, unknown> };\n}\n\n/** Sentinel for a field path a JSON Schema does not declare. */\nexport const MISSING_FIELD = Symbol(\"missing-field\");\n\n/** Walk `properties` along `path`; {@link MISSING_FIELD} when any segment is undeclared. */\nexport function declaredFieldSchema(schema: unknown, path: string[]): unknown {\n let current = schema;\n for (const segment of path) {\n if (typeof current !== \"object\" || current === null) return MISSING_FIELD;\n const properties = (current as Record<string, unknown>).properties;\n if (\n typeof properties !== \"object\" ||\n properties === null ||\n !Object.hasOwn(properties, segment)\n ) {\n return MISSING_FIELD;\n }\n current = (properties as Record<string, unknown>)[segment];\n }\n return current;\n}\n\nfunction consumerExpressions(node: OutputFieldsNode): string[] {\n const expressions = (node.contract?.requires ?? []).map(({ expr }) => expr);\n expressions.push(...collectFlowBindingExpressions(node.contract?.input));\n if (node.run?.kind === \"router\") {\n expressions.push(...node.run.routes.map(({ when }) => when));\n }\n return expressions;\n}\n\nfunction readsProducerOutput(expressions: string[], producerId: string): boolean {\n return expressions.some((expression) =>\n inspectFlowExpression(expression, false).some(({ path }) =>\n path.startsWith(`nodes.${producerId}.output.fields.`),\n ),\n );\n}\n\n/**\n * Every field path other nodes, or the flow's own output bindings, read from a producer.\n * Paths are relative to `output.fields`, de-duplicated, in authored order.\n * Throws when a consumer expression does not parse.\n */\nexport function consumedOutputFieldPaths(flow: OutputFieldsFlow, producerId: string): string[][] {\n const prefix = `nodes.${producerId}.output.fields.`;\n const expressions = flow.nodes.filter(({ id }) => id !== producerId).flatMap(consumerExpressions);\n expressions.push(...collectFlowBindingExpressions(flow.output?.bindings));\n const paths = new Map<string, string[]>();\n for (const expression of expressions) {\n for (const { path } of inspectFlowExpression(expression, false)) {\n if (path.startsWith(prefix)) paths.set(path, path.slice(prefix.length).split(\".\"));\n }\n }\n return [...paths.values()];\n}\n\n/**\n * Return a producer's declared fields schema only when another node reads it.\n *\n * Consumption is deliberately limited to preconditions, named bindings, router\n * conditions, and the flow's own output bindings (what a sub-flow returns to its\n * parent). Status reads and unreferenced declarations remain prose-only.\n * Throws when a consumer expression does not parse.\n */\nexport function getConsumedOutputSchema(\n flow: OutputFieldsFlow,\n producerId: string,\n): Record<string, unknown> | undefined {\n const producer = flow.nodes.find(({ id }) => id === producerId);\n const schema = producer?.contract?.output?.fields;\n if (!schema) return undefined;\n const consumed =\n flow.nodes.some(\n (consumer) =>\n consumer.id !== producerId &&\n readsProducerOutput(consumerExpressions(consumer), producerId),\n ) || readsProducerOutput(collectFlowBindingExpressions(flow.output?.bindings), producerId);\n return consumed ? schema : undefined;\n}\n\n/**\n * Compile an authored `contract.output.fields` JSON Schema into a validator.\n * The one compile step validation and the runtime share; throws when zod\n * cannot compile the schema.\n */\nexport function compileOutputFieldsSchema(schema: Record<string, unknown>): z.ZodType {\n return z.fromJSONSchema(schema as Parameters<typeof z.fromJSONSchema>[0]);\n}\n\n/** Compile-failure text for the parse-time rules that refuse an uncompilable authored schema. */\nexport function invalidOutputFieldsSchemaMessage(error: unknown): string {\n return `invalid authored JSON Schema: ${error instanceof Error ? error.message : String(error)}`;\n}\n","import * as z from \"zod\";\nimport {\n checkClassifierShape,\n declaredOutputProperties,\n declaresReservedClassifierField,\n RESERVED_CLASSIFIER_FIELDS,\n} from \"./classifier.js\";\nimport {\n collectFlowBindingExpressions,\n FLOW_BINDING_NAME_PATTERN,\n inspectFlowExpression,\n inspectFlowExpressionComparisons,\n type FlowExpressionReference,\n} from \"./expression.js\";\nimport {\n compileOutputFieldsSchema,\n declaredFieldSchema,\n getConsumedOutputSchema,\n invalidOutputFieldsSchemaMessage,\n MISSING_FIELD,\n} from \"./output-fields.js\";\n\n/**\n * Any JSON value accepted by an authoring field (`input.example`,\n * `defaults.run_input`, node bindings, JSON Schema documents).\n *\n * Structurally identical to zod's own `util.JSONType`, and mutually assignable\n * with it — the only difference is that the array member is a **named**\n * interface instead of the anonymous `JSONType[]`.\n *\n * That difference is load-bearing for every frontend consumer. Vue's\n * `UnwrapRef<T>` maps an array member to a fresh anonymous mapped type at each\n * level (`{ [K in keyof T]: UnwrapRefSimple<T[K]> }`), so TypeScript's\n * recursion-identity check never fires on a self-recursive JSON alias and the\n * instantiation depth limit is hit instead:\n *\n * ```\n * error TS2589: Type instantiation is excessively deep and possibly infinite.\n * ```\n *\n * A consumer sees that error on their own `const d = ref<FlowDefinition>(…)`\n * line, with nothing pointing back here. Naming the array member gives the\n * recursion a stable identity, so the check fires and `ref<FlowDefinition>()`\n * resolves. Verified against both TypeScript 5.9 and 6.0.\n *\n * Do not replace `FlowJsonArray` with `FlowJsonValue[]` — that reintroduces the\n * regression. `packages/bridge-vue/test/flow-definition-vue-ref.test-d.ts`\n * guards it.\n */\nexport interface FlowJsonArray extends Array<FlowJsonValue> {}\n\n/** @see {@link FlowJsonArray} for why the array member is a named interface. */\nexport type FlowJsonValue =\n | string\n | number\n | boolean\n | null\n | FlowJsonArray\n | { [key: string]: FlowJsonValue };\n\n/**\n * `z.json()` retyped to infer {@link FlowJsonValue} instead of zod's\n * `util.JSONType`. Runtime validation is unchanged — this is a type-level\n * substitution only, and the two types are mutually assignable.\n *\n * A **factory**, not a shared constant: `z.toJSONSchema()` extracts any schema\n * instance reused across call sites into a `$defs` entry addressed by `$ref`.\n * Sharing one instance across the five uses below would therefore rewrite the\n * checked-in `flow.v2.schema.json` artifact (and its contract hash) for a purely\n * type-level change. Handing out a fresh instance per call site keeps the\n * generated schema byte-identical — `contract-json-schema.test.ts` guards it.\n */\nconst jsonValue = (): z.ZodType<FlowJsonValue, FlowJsonValue> =>\n z.json() as unknown as z.ZodType<FlowJsonValue, FlowJsonValue>;\n\n/**\n * Compile-time guard on the claim that the substitution above is type-level\n * only: `FlowJsonValue` and the type `z.json()` actually infers must stay\n * assignable **both ways**, so no caller holding either one is narrowed. Drift\n * on either side violates an `Expect<...>` constraint and fails `tsc` here,\n * rather than surfacing as a surprise at a consumer's call site. Type-only —\n * nothing is emitted.\n */\ntype ZodJsonValue = z.output<ReturnType<typeof z.json>>;\ntype ZodJsonInput = z.input<ReturnType<typeof z.json>>;\ntype AssignableTo<A, B> = [A] extends [B] ? true : false;\ntype Expect<T extends true> = T;\ntype _ZodJsonToFlowJson = Expect<AssignableTo<ZodJsonValue, FlowJsonValue>>;\ntype _FlowJsonToZodJson = Expect<AssignableTo<FlowJsonValue, ZodJsonValue>>;\n// The cast asserts both of ZodType's type params, so the input side needs the\n// same guard — otherwise drift there passes unnoticed.\ntype _ZodJsonInputToFlowJson = Expect<AssignableTo<ZodJsonInput, FlowJsonValue>>;\ntype _FlowJsonToZodJsonInput = Expect<AssignableTo<FlowJsonValue, ZodJsonInput>>;\n\nconst nonEmptyString = z.string().min(1);\nconst flowAssetIdentity = z\n .string()\n .regex(\n /^[a-z0-9]+(?:-[a-z0-9]+)*$/,\n \"Flow identity must be lowercase kebab-case without path separators\",\n );\nconst jsonSchema = z.record(z.string(), jsonValue());\nconst bindingName = z.string().regex(FLOW_BINDING_NAME_PATTERN, \"Binding name is reserved\");\nconst nodeBindings = z.preprocess(\n (value, context) => {\n if (typeof value === \"object\" && value !== null) {\n for (const key of Object.keys(value)) {\n if (!FLOW_BINDING_NAME_PATTERN.test(key)) {\n context.addIssue({ code: \"custom\", path: [key], message: \"Binding name is reserved\" });\n }\n }\n }\n return value;\n },\n z.record(bindingName, jsonValue()),\n);\n\n// `labelField` names the input property a host shows in place of a run's opaque\n// instance id. It sits beside the schema it points into so every run of the flow\n// labels the same way, and a name absent from that schema is an authoring error.\nconst FlowInputContractSchema = z\n .strictObject({\n schema: jsonSchema,\n example: jsonValue().optional(),\n labelField: nonEmptyString.optional(),\n })\n .superRefine((input, context) => {\n if (input.labelField === undefined) return;\n if (declaredFieldSchema(input.schema, [input.labelField]) === MISSING_FIELD) {\n // Looked up as one literal key, so a dotted name fails here too: a label\n // names a top-level property of the input schema, never a path into it.\n const hint = input.labelField.includes(\".\")\n ? \" (labelField names a single top-level property, not a path)\"\n : \"\";\n context.addIssue({\n code: \"custom\",\n path: [\"labelField\"],\n message: `input schema does not declare property ${input.labelField}${hint}`,\n });\n }\n });\n\n// `bindings` is what a sub-flow returns to its parent: one entry per top-level\n// `schema` property, resolved like node input bindings when the flow completes.\n// Without `bindings` the schema is declarative only and the flow returns nothing.\nconst FlowOutputContractSchema = z\n .strictObject({\n schema: jsonSchema,\n bindings: nodeBindings.optional(),\n })\n .superRefine((output, context) => {\n if (output.bindings === undefined) return;\n const properties = output.schema.properties;\n const declared =\n typeof properties === \"object\" && properties !== null && !Array.isArray(properties)\n ? Object.keys(properties)\n : [];\n for (const name of declared) {\n if (Object.hasOwn(output.bindings, name)) continue;\n context.addIssue({\n code: \"custom\",\n path: [\"bindings\"],\n message: `output property ${name} has no binding; bind every output.schema property or omit bindings`,\n });\n }\n for (const name of Object.keys(output.bindings)) {\n if (declared.includes(name)) continue;\n context.addIssue({\n code: \"custom\",\n path: [\"bindings\", name],\n message: `output binding ${name} has no property in output.schema`,\n });\n }\n // The run-time resolver compiles `schema` only when it resolves `bindings`, so a\n // schema-only (declarative) contract stays valid whatever its schema says.\n try {\n compileOutputFieldsSchema(output.schema);\n } catch (error) {\n context.addIssue({\n code: \"custom\",\n path: [\"schema\"],\n message: `output.schema: ${invalidOutputFieldsSchemaMessage(error)}`,\n });\n }\n });\n\nconst PreconditionSchema = z.strictObject({\n expr: nonEmptyString,\n message: nonEmptyString.optional(),\n});\n\nconst ArtifactContractSchema = z.strictObject({\n kind: nonEmptyString,\n lifetime: z.enum([\"session\", \"persistent\"]),\n});\n\nconst NodeOutputContractSchema = z.strictObject({\n fields: jsonSchema.optional(),\n artifacts: z.array(ArtifactContractSchema).optional(),\n});\n\nconst NodeContractSchema = z.strictObject({\n requires: z.array(PreconditionSchema).optional(),\n input: nodeBindings.optional(),\n output: NodeOutputContractSchema.optional(),\n});\n\nconst NodeGateSchema = z.strictObject({\n approval: z.enum([\"none\", \"optional\", \"mandatory\"]),\n});\n\nconst NodeControlSchema = z.strictObject({\n optional: z.boolean().optional(),\n retries: z.number().int().min(0).optional(),\n timeoutSec: z.number().positive().optional(),\n parallelGroup: nonEmptyString.optional(),\n});\n\nconst runAssets = { assets: z.array(nonEmptyString).optional() };\n\n// Closed vocabulary, not a free-form model id: the runtime resolves each tier to a\n// concrete model, keeping authored flows portable across model-lineup changes.\nconst modelTier = z.enum([\"small\", \"default\", \"deep\"]);\n\nconst AgentRunSchema = z.strictObject({\n kind: z.literal(\"agent\"),\n instruction: nonEmptyString,\n model: modelTier.optional(),\n ...runAssets,\n});\n\nconst SubpromptRunSchema = z.strictObject({\n kind: z.literal(\"subprompt\"),\n instruction: nonEmptyString,\n model: modelTier.optional(),\n ...runAssets,\n});\n\n/** The process streams a deterministic node can capture into its output fields. */\nexport const FLOW_CAPTURE_CHANNELS = [\"stdout\", \"stderr\"] as const;\n\n/**\n * A capture destination names exactly one direct output field. The schema and\n * the runtime both apply this one pattern, so a definition that validates can\n * never fail its capture at run time.\n */\nexport const FLOW_CAPTURE_DESTINATION_PATTERN = /^fields\\.([^.]+)$/;\n\n/** The output field a capture destination writes, or `undefined` when the destination is invalid. */\nexport function captureDestinationFieldName(destination: string): string | undefined {\n return FLOW_CAPTURE_DESTINATION_PATTERN.exec(destination)?.[1] || undefined;\n}\n\n/** Shared refusal text, so authoring-time and run-time errors read the same. */\nexport function invalidCaptureDestinationMessage(\n kind: \"function\" | \"check\",\n nodeId: string,\n channel: (typeof FLOW_CAPTURE_CHANNELS)[number],\n destination: string,\n): string {\n const kindLabel = kind === \"check\" ? \"Check\" : \"Function\";\n return `${kindLabel} node ${nodeId} run.capture.${channel} destination \"${destination}\" is invalid; expected fields.<name>`;\n}\n\n/**\n * Refusal text for stdout and stderr captured into one field: the runtime builds\n * the fields object channel by channel, so stderr would silently replace stdout.\n */\nexport function duplicateCaptureDestinationMessage(\n kind: \"function\" | \"check\",\n nodeId: string,\n fieldName: string,\n): string {\n const kindLabel = kind === \"check\" ? \"Check\" : \"Function\";\n return `${kindLabel} node ${nodeId} run.capture.stdout and run.capture.stderr both write fields.${fieldName}; stderr would overwrite stdout, so capture them into different fields`;\n}\n\nconst deterministicRun = {\n runtime: z.enum([\"shell\", \"node\", \"python\"]).optional(),\n command: nonEmptyString,\n cwd: nonEmptyString.optional(),\n successExit: z.array(z.number().int()).optional(),\n capture: z\n .strictObject({ stdout: nonEmptyString.optional(), stderr: nonEmptyString.optional() })\n .optional(),\n ...runAssets,\n};\n\nconst FunctionRunSchema = z.strictObject({\n kind: z.literal(\"function\"),\n ...deterministicRun,\n});\n\nconst CheckRunSchema = z.strictObject({\n kind: z.literal(\"check\"),\n onFail: z.enum([\"escalate\", \"fail\"]).default(\"escalate\"),\n ...deterministicRun,\n});\n\nconst InputChoiceSchema = z.strictObject({\n id: nonEmptyString,\n label: nonEmptyString,\n description: nonEmptyString.optional(),\n});\n\nconst FormFieldSchema = z.strictObject({\n id: nonEmptyString,\n label: nonEmptyString,\n type: z.enum([\"text\", \"textarea\", \"number\", \"choice\", \"file\", \"date\", \"boolean\"]),\n required: z.boolean().optional(),\n options: z.array(InputChoiceSchema).optional(),\n accept: z.array(nonEmptyString).optional(),\n});\n\n// Exported so the `request_input` write path validates against the same object a\n// flow definition does — a second, hand-rolled rule is how the two drifted.\nexport const InputSchema = z.discriminatedUnion(\"kind\", [\n z.strictObject({ kind: z.literal(\"text\"), multiline: z.boolean().optional() }),\n z.strictObject({\n kind: z.literal(\"choice\"),\n options: z.array(InputChoiceSchema).min(1),\n multiple: z.boolean().optional(),\n }),\n z.strictObject({ kind: z.literal(\"form\"), fields: z.array(FormFieldSchema) }),\n z.strictObject({\n kind: z.literal(\"file\"),\n accept: z.array(nonEmptyString).optional(),\n maxSize: z.number().positive().optional(),\n multiple: z.boolean().optional(),\n }),\n]);\n\nconst GateRunSchema = z.strictObject({\n kind: z.literal(\"gate\"),\n prompt: nonEmptyString,\n schema: InputSchema,\n ...runAssets,\n});\n\nconst RouteSchema = z.strictObject({\n when: nonEmptyString,\n target: nonEmptyString.nullable(),\n});\n\nconst RouterRunSchema = z.strictObject({\n kind: z.literal(\"router\"),\n routes: z.array(RouteSchema).min(1),\n ...runAssets,\n});\n\nconst SubFlowRunSchema = z.strictObject({\n kind: z.literal(\"sub-flow\"),\n flow: flowAssetIdentity,\n passContext: z.boolean().optional(),\n ...runAssets,\n});\n\nconst RunSchema = z.discriminatedUnion(\"kind\", [\n AgentRunSchema,\n SubpromptRunSchema,\n FunctionRunSchema,\n CheckRunSchema,\n GateRunSchema,\n RouterRunSchema,\n SubFlowRunSchema,\n]);\n\nconst NodeSchema = z.strictObject({\n id: nonEmptyString,\n label: nonEmptyString,\n description: nonEmptyString,\n phase: nonEmptyString.optional(),\n run: RunSchema,\n contract: NodeContractSchema.optional(),\n gate: NodeGateSchema.optional(),\n control: NodeControlSchema.optional(),\n});\n\nconst EdgeSchema = z.strictObject({\n id: nonEmptyString,\n source: nonEmptyString,\n target: nonEmptyString,\n type: z.enum([\"flow\", \"parallel\", \"optional\"]),\n});\n\nconst FlowDefaultsSchema = z.strictObject({\n approval: z.enum([\"checkpoint\", \"auto\", \"manual\"]).optional(),\n researchDepth: nonEmptyString.optional(),\n autoReview: z.boolean().optional(),\n verbosity: nonEmptyString.optional(),\n cliMode: z.boolean().optional(),\n run_input: jsonValue().optional(),\n parameters: z.record(z.string(), jsonValue()).optional(),\n});\n\nconst FlowMetaSchema = z.strictObject({\n icon: nonEmptyString.optional(),\n category: nonEmptyString.optional(),\n tags: z.array(nonEmptyString).optional(),\n stage: nonEmptyString.optional(),\n onboarding: z\n .strictObject({\n input_style: z.enum([\"freeform\", \"structured\", \"repo\"]),\n placeholder: nonEmptyString.optional(),\n fields: z.array(nonEmptyString).optional(),\n })\n .optional(),\n});\n\nconst FlowDefinitionObjectSchema = z.strictObject({\n $schema: nonEmptyString.optional(),\n schemaVersion: z.literal(2),\n id: nonEmptyString,\n version: nonEmptyString,\n name: nonEmptyString,\n description: nonEmptyString.optional(),\n input: FlowInputContractSchema.optional(),\n output: FlowOutputContractSchema.optional(),\n defaults: FlowDefaultsSchema.optional(),\n entry: nonEmptyString.optional(),\n nodes: z.array(NodeSchema),\n edges: z.array(EdgeSchema),\n meta: FlowMetaSchema.optional(),\n});\n\n/** Validates normalized field shapes without applying authored-v2 graph semantics. */\nexport function parseFlowDefinitionStructure(data: unknown) {\n return FlowDefinitionObjectSchema.safeParse(data);\n}\n\nfunction knownNonBooleanType(schema: unknown): string | undefined {\n if (typeof schema !== \"object\" || schema === null) return undefined;\n const type = (schema as Record<string, unknown>).type;\n if (typeof type === \"string\") return type === \"boolean\" ? undefined : type;\n if (\n Array.isArray(type) &&\n type.length > 0 &&\n type.every((candidate) => typeof candidate === \"string\") &&\n type.some((candidate) => candidate !== \"boolean\")\n ) {\n return type.join(\" | \");\n }\n return undefined;\n}\n\n/**\n * Whether the node carries a precondition that is literally `false`, so it can\n * never become available. The engine's `nodeIsInert` delegates here, so the\n * parse-time exemption and the runtime notion of \"inert\" cannot drift apart.\n */\nexport function hasConstantlyFalsePrecondition(node: {\n contract?: { requires?: readonly { expr: string }[] };\n}): boolean {\n return (\n node.contract?.requires?.some((requirement) => requirement.expr.trim() === \"false\") ?? false\n );\n}\n\n/**\n * Why `control.optional` is refused on this node, or `undefined` when it is\n * allowed. `optional` downgrades a failed node to `skipped` so the run carries\n * on — incoherent for a node whose only job is to stop one. Derived in one\n * place so the refusal condition and the message explaining it cannot drift.\n *\n * A `router` is refused only when it can run: skipping one satisfies all of its\n * outgoing edges at once, turning a branch point into a fan-out. The inert\n * placeholder the v1 normalizer emits for every non-executable legacy node\n * (`requires: [{ expr: \"false\" }]` + `optional: true`) is exempt — it never\n * becomes available, so it can neither fail nor branch, and `optional` is what\n * lets the run reach `done` past it. The runtime keeps refusing to degrade a\n * router (`resolveTerminalFailureStatus`) as defence in depth.\n */\nfunction optionalRefusalReason(node: z.infer<typeof NodeSchema>): string | undefined {\n if (node.run.kind === \"gate\") return \"a first-class gate node cannot be optional\";\n if (node.run.kind === \"router\" && !hasConstantlyFalsePrecondition(node)) {\n return `router ${node.id} cannot be optional — skipping it would satisfy every outgoing edge at once and admit every branch instead of selecting one; only an inert placeholder router (contract.requires containing { expr: \"false\" }) may carry control.optional`;\n }\n if (node.run.kind === \"check\") {\n return \"a check node cannot be optional — an optional verification either hides a false green (escalate) or hangs the run forever (fail); reject the check entirely if it should not gate the run\";\n }\n if (node.gate?.approval === \"mandatory\") {\n return \"a node cannot be both optional and a mandatory approval gate\";\n }\n return undefined;\n}\n\n/** Authoritative strict runtime schema for authored, acyclic Flow v2 definitions. */\nexport const FlowDefinitionSchema = FlowDefinitionObjectSchema.superRefine((flow, context) => {\n const nodeIds = new Set<string>();\n for (const [index, node] of flow.nodes.entries()) {\n if (nodeIds.has(node.id)) {\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", index, \"id\"],\n message: `duplicate node id: ${node.id}`,\n });\n }\n nodeIds.add(node.id);\n if (node.control?.optional === true) {\n const refusal = optionalRefusalReason(node);\n if (refusal !== undefined) {\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", index, \"control\", \"optional\"],\n message: refusal,\n });\n }\n }\n if (node.run.kind === \"function\" || node.run.kind === \"check\") {\n for (const channel of FLOW_CAPTURE_CHANNELS) {\n const destination = node.run.capture?.[channel];\n if (destination === undefined || captureDestinationFieldName(destination)) continue;\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", index, \"run\", \"capture\", channel],\n message: invalidCaptureDestinationMessage(node.run.kind, node.id, channel, destination),\n });\n }\n const { stdout, stderr } = node.run.capture ?? {};\n const stdoutField = stdout === undefined ? undefined : captureDestinationFieldName(stdout);\n if (stdoutField !== undefined && stderr !== undefined) {\n if (captureDestinationFieldName(stderr) === stdoutField) {\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", index, \"run\", \"capture\", \"stderr\"],\n message: duplicateCaptureDestinationMessage(node.run.kind, node.id, stdoutField),\n });\n }\n }\n }\n }\n\n if (flow.entry !== undefined && !nodeIds.has(flow.entry)) {\n context.addIssue({ code: \"custom\", path: [\"entry\"], message: `unknown node: ${flow.entry}` });\n }\n\n const outgoing = new Map<string, Array<{ target: string; path: PropertyKey[] }>>();\n for (const [edgeIndex, edge] of flow.edges.entries()) {\n if (!nodeIds.has(edge.source)) {\n context.addIssue({\n code: \"custom\",\n path: [\"edges\", edgeIndex, \"source\"],\n message: `unknown node: ${edge.source}`,\n });\n }\n if (!nodeIds.has(edge.target)) {\n context.addIssue({\n code: \"custom\",\n path: [\"edges\", edgeIndex, \"target\"],\n message: `unknown node: ${edge.target}`,\n });\n }\n if (edge.type === \"flow\" && nodeIds.has(edge.source) && nodeIds.has(edge.target)) {\n const edges = outgoing.get(edge.source) ?? [];\n edges.push({ target: edge.target, path: [\"edges\", edgeIndex] });\n outgoing.set(edge.source, edges);\n }\n }\n\n for (const [nodeIndex, node] of flow.nodes.entries()) {\n if (node.run.kind !== \"router\") continue;\n for (const [routeIndex, route] of node.run.routes.entries()) {\n if (route.target !== null && !nodeIds.has(route.target)) {\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", nodeIndex, \"run\", \"routes\", routeIndex, \"target\"],\n message: `unknown node: ${route.target}`,\n });\n }\n }\n }\n\n const validateExpression = (\n expression: string,\n path: PropertyKey[],\n requireBoolean = true,\n ): void => {\n let references: FlowExpressionReference[];\n try {\n references = inspectFlowExpression(expression, requireBoolean);\n } catch (error) {\n context.addIssue({\n code: \"custom\",\n path,\n message: error instanceof Error ? error.message : \"invalid Flow expression\",\n });\n return;\n }\n for (const reference of references) {\n const segments = reference.path.split(\".\");\n if (segments[0] !== \"nodes\") continue;\n const producer = flow.nodes.find((node) => node.id === segments[1]);\n if (!producer) {\n context.addIssue({\n code: \"custom\",\n path,\n message: `unknown producer node: ${segments[1]}`,\n });\n continue;\n }\n if (segments[2] === \"status\") {\n if (reference.booleanOperand) {\n context.addIssue({ code: \"custom\", path, message: \"node status is not boolean\" });\n }\n continue;\n }\n const outputSchema = producer.contract?.output?.fields;\n if (!outputSchema) {\n context.addIssue({\n code: \"custom\",\n path,\n message: `node ${producer.id} has no declared output fields`,\n });\n continue;\n }\n const fieldPath = segments.slice(4);\n const fieldSchema = declaredFieldSchema(outputSchema, fieldPath);\n if (fieldSchema === MISSING_FIELD) {\n context.addIssue({\n code: \"custom\",\n path,\n message: `node ${producer.id} does not declare output field ${fieldPath.join(\".\")}`,\n });\n continue;\n }\n const nonBooleanType = reference.booleanOperand\n ? knownNonBooleanType(fieldSchema)\n : undefined;\n if (nonBooleanType) {\n context.addIssue({\n code: \"custom\",\n path,\n message: `node ${producer.id} output field ${fieldPath.join(\".\")} is ${nonBooleanType}, not boolean`,\n });\n }\n }\n };\n\n for (const [nodeIndex, node] of flow.nodes.entries()) {\n for (const [requireIndex, requirement] of node.contract?.requires?.entries() ?? []) {\n validateExpression(requirement.expr, [\n \"nodes\",\n nodeIndex,\n \"contract\",\n \"requires\",\n requireIndex,\n \"expr\",\n ]);\n }\n for (const [bindingName, binding] of Object.entries(node.contract?.input ?? {})) {\n for (const expression of collectFlowBindingExpressions(binding)) {\n validateExpression(\n expression,\n [\"nodes\", nodeIndex, \"contract\", \"input\", bindingName],\n false,\n );\n }\n }\n if (node.run.kind === \"router\") {\n for (const [routeIndex, route] of node.run.routes.entries()) {\n validateExpression(route.when, [\"nodes\", nodeIndex, \"run\", \"routes\", routeIndex, \"when\"]);\n }\n }\n }\n\n for (const [bindingName, binding] of Object.entries(flow.output?.bindings ?? {})) {\n for (const expression of collectFlowBindingExpressions(binding)) {\n validateExpression(expression, [\"output\", \"bindings\", bindingName], false);\n }\n }\n\n validateClassifierRules(flow, context);\n validateConsumedOutputSchemasCompile(flow, context);\n\n const state = new Map<string, \"active\" | \"done\">();\n for (const nodeId of nodeIds) {\n if (state.has(nodeId)) continue;\n const stack: Array<{ nodeId: string; next: number }> = [{ nodeId, next: 0 }];\n state.set(nodeId, \"active\");\n while (stack.length > 0) {\n const frame = stack.at(-1);\n if (!frame) break;\n const arcs = outgoing.get(frame.nodeId) ?? [];\n if (frame.next >= arcs.length) {\n state.set(frame.nodeId, \"done\");\n stack.pop();\n continue;\n }\n const arc = arcs[frame.next++];\n if (state.get(arc.target) === \"active\") {\n context.addIssue({ code: \"custom\", path: arc.path, message: \"flow graph must be acyclic\" });\n } else if (!state.has(arc.target)) {\n state.set(arc.target, \"active\");\n stack.push({ nodeId: arc.target, next: 0 });\n }\n }\n }\n});\n\n/**\n * A fields schema another node reads is compiled at run time, the first time its\n * producer completes; one zod cannot compile fails that node then. Only consumed\n * schemas are compiled here: an unread one is prose for the model and never compiled.\n */\nfunction validateConsumedOutputSchemasCompile(\n flow: z.infer<typeof FlowDefinitionObjectSchema>,\n context: z.RefinementCtx,\n): void {\n for (const [nodeIndex, node] of flow.nodes.entries()) {\n const fields = node.contract?.output?.fields;\n if (!fields) continue;\n let compileError: unknown;\n try {\n compileOutputFieldsSchema(fields);\n continue;\n } catch (error) {\n compileError = error;\n }\n let consumed: boolean;\n try {\n consumed = getConsumedOutputSchema(flow, node.id) !== undefined;\n } catch {\n // A consumer expression that does not parse is already reported on its own path.\n continue;\n }\n if (!consumed) continue;\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", nodeIndex, \"contract\", \"output\", \"fields\"],\n message: `node ${node.id} contract.output.fields: ${invalidOutputFieldsSchemaMessage(compileError)}`,\n });\n }\n}\n\nconst ORDERING_OPERATORS = new Set([\"<\", \"<=\", \">\", \">=\"]);\n\n/**\n * The classifier rules (classifier spec D3/D5). They key only on declared\n * top-level output property names and on `nodes.<id>.output.fields.<reserved>`\n * reads of a subprompt that declares them — never on other paths, globals, node\n * ids or prose — so flows that merely mention \"confidence\" are untouched.\n */\nfunction validateClassifierRules(\n flow: z.infer<typeof FlowDefinitionObjectSchema>,\n context: z.RefinementCtx,\n): void {\n const classifierIds = new Set<string>();\n for (const [nodeIndex, node] of flow.nodes.entries()) {\n const outputSchema = node.contract?.output?.fields;\n const path = [\"nodes\", nodeIndex, \"contract\", \"output\", \"fields\"];\n if (node.run.kind === \"subprompt\") {\n const check = checkClassifierShape(outputSchema);\n if (!check.classifier) continue;\n classifierIds.add(node.id);\n if (\"issues\" in check) {\n context.addIssue({\n code: \"custom\",\n path,\n message: `subprompt ${node.id} declares a reserved classifier field but is not classifier-shaped: ${check.issues.join(\"; \")}`,\n });\n }\n continue;\n }\n // A model that fills these itself would make up a plausible confidence; only\n // the runtime writes them, and only on a classifier-shaped subprompt. A\n // sub-flow's output can come from a child agent, so it is refused too.\n if (\n (node.run.kind === \"agent\" || node.run.kind === \"sub-flow\") &&\n declaresReservedClassifierField(outputSchema)\n ) {\n const names = RESERVED_CLASSIFIER_FIELDS.filter((name) =>\n declaredOutputProperties(outputSchema).includes(name),\n );\n context.addIssue({\n code: \"custom\",\n path,\n message: `${names.join(\" and \")} ${names.length > 1 ? \"are\" : \"is\"} reserved for classifier-shaped subprompt nodes; ${node.run.kind} node ${node.id} cannot declare ${names.length > 1 ? \"them\" : \"it\"}`,\n });\n }\n }\n if (classifierIds.size === 0) return;\n\n const reservedRead = (path: string): { producer: string; field: string } | undefined => {\n const segments = path.split(\".\");\n if (\n segments.length !== 5 ||\n segments[0] !== \"nodes\" ||\n segments[2] !== \"output\" ||\n segments[3] !== \"fields\" ||\n !classifierIds.has(segments[1]) ||\n !(RESERVED_CLASSIFIER_FIELDS as readonly string[]).includes(segments[4])\n ) {\n return undefined;\n }\n return { producer: segments[1], field: segments[4] };\n };\n const readsReserved = (expression: string): boolean => {\n try {\n return inspectFlowExpression(expression, false).some(({ path }) => reservedRead(path));\n } catch {\n return false; // the syntax error is already reported by validateExpression\n }\n };\n const checkGuards = (expression: string, path: PropertyKey[]): void => {\n let comparisons: ReturnType<typeof inspectFlowExpressionComparisons>;\n try {\n comparisons = inspectFlowExpressionComparisons(expression);\n } catch {\n return;\n }\n for (const comparison of comparisons) {\n if (!ORDERING_OPERATORS.has(comparison.operator)) continue;\n for (const operand of [comparison.left, comparison.right]) {\n if (!(\"path\" in operand)) continue;\n const read = reservedRead(operand.path);\n if (read?.field !== \"confidence\") continue;\n const guard = `nodes.${read.producer}.output.fields.calibrated`;\n if (comparison.guards.includes(guard)) continue;\n context.addIssue({\n code: \"custom\",\n path,\n message: `${operand.path} is null when the classifier is uncalibrated, so an ordering comparison on it must be guarded: put the literal conjunct \\`${guard} == true\\` earlier in the same && chain, optionally parenthesized (\\`true == …\\`, \\`!= false\\` and a guard inside \\`||\\` are not accepted)`,\n });\n }\n }\n };\n\n for (const [nodeIndex, node] of flow.nodes.entries()) {\n for (const [requireIndex, requirement] of node.contract?.requires?.entries() ?? []) {\n if (!readsReserved(requirement.expr)) continue;\n // A requires guard has no fallthrough: false on the vendor-down path would\n // leave the node with no defined landing.\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", nodeIndex, \"contract\", \"requires\", requireIndex, \"expr\"],\n message:\n \"a contract.requires guard cannot read a classifier's confidence or calibrated; decide on a classifier's answer at a router, which has a default route\",\n });\n }\n for (const [bindingName, binding] of Object.entries(node.contract?.input ?? {})) {\n for (const expression of collectFlowBindingExpressions(binding)) {\n checkGuards(expression, [\"nodes\", nodeIndex, \"contract\", \"input\", bindingName]);\n }\n }\n if (node.run.kind !== \"router\") continue;\n const routes = node.run.routes;\n for (const [routeIndex, route] of routes.entries()) {\n checkGuards(route.when, [\"nodes\", nodeIndex, \"run\", \"routes\", routeIndex, \"when\"]);\n }\n const readsAny = routes.some((route) => readsReserved(route.when));\n if (readsAny && routes.at(-1)?.when.trim() !== \"default\") {\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", nodeIndex, \"run\", \"routes\"],\n message: `router ${node.id} reads a classifier's confidence or calibrated, so its last route must be the unconditional \"default\": on the uncalibrated fallback every guarded route is false, and without a default the router would settle nowhere`,\n });\n }\n }\n // A returned value reaches the parent under any name, out of reach of the\n // guard and default-route rules above, so the reserved fields stay in the flow.\n for (const [bindingName, binding] of Object.entries(flow.output?.bindings ?? {})) {\n if (!collectFlowBindingExpressions(binding).some(readsReserved)) continue;\n context.addIssue({\n code: \"custom\",\n path: [\"output\", \"bindings\", bindingName],\n message:\n \"an output binding cannot return a classifier's confidence or calibrated; return the classifier's answer and branch on it inside this flow or in the parent\",\n });\n }\n}\n\n/** Validated authoring content that is strict, acyclic, and always schema version 2. */\nexport type FlowDefinition = z.infer<typeof FlowDefinitionSchema>;\n\n/** Graph vertex whose execution identity comes only from its `run.kind`. */\nexport type FlowNode = FlowDefinition[\"nodes\"][number];\n\n/** Directed dependency link whose authored array position remains content-significant. */\nexport type FlowEdge = FlowDefinition[\"edges\"][number];\n\n/** Closed execution-owner declaration with no dispatch or conversation-mode switches. */\nexport type FlowNodeRun = FlowNode[\"run\"];\n\n/** Closed vocabulary of the seven supported execution-owner identities. */\nexport type FlowNodeKind = FlowNodeRun[\"kind\"];\n\n/** Validation boundary applied to values entering a Flow run. */\nexport type FlowInputContract = NonNullable<FlowDefinition[\"input\"]>;\n\n/** Validation boundary applied to values leaving a Flow run. */\nexport type FlowOutputContract = NonNullable<FlowDefinition[\"output\"]>;\n\n/** Node admission and data contract; output typing is paid only when downstream consumers need it. */\nexport type FlowNodeContract = NonNullable<FlowNode[\"contract\"]>;\n\n/** Availability and failure policy that never changes execution ownership. */\nexport type FlowNodeControl = NonNullable<FlowNode[\"control\"]>;\n\n/** Named values resolved at the consumer boundary before admission. */\nexport type FlowNodeBindings = NonNullable<FlowNode[\"contract\"]>[\"input\"];\n\n/** Bounded deterministic admission condition; arbitrary calls and property access are invalid. */\nexport type FlowNodePrecondition = NonNullable<FlowNode[\"contract\"]>[\"requires\"] extends\n | Array<infer T>\n | undefined\n ? T\n : never;\n\n/** Ordered router branch; the first matching condition owns the routing decision. */\nexport type FlowRoute = Extract<FlowNodeRun, { kind: \"router\" }>[\"routes\"][number];\n\n/** Asset requirement independent of node identity and available on every run kind. */\nexport type FlowAssetRef = NonNullable<FlowNodeRun[\"assets\"]>[number];\n\n/** Model tier for `agent` and `subprompt` runs; `default` inherits the session model\n * (`agent`) or the runtime default (`subprompt`) rather than naming a concrete model. */\nexport type FlowModelTier = z.infer<typeof modelTier>;\n"]}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { logErr } from './chunk-
|
|
2
|
-
import { getKindRegistry } from './chunk-
|
|
3
|
-
import {
|
|
4
|
-
import { userConfigPath, globalSkaileDir } from './chunk-L5VSIPQD.js';
|
|
5
|
-
import path from 'path';
|
|
1
|
+
import { logErr } from './chunk-JZ5EHBPI.js';
|
|
2
|
+
import { getKindRegistry } from './chunk-2FRUUDZY.js';
|
|
3
|
+
import { userConfigPath } from './chunk-L5VSIPQD.js';
|
|
6
4
|
|
|
5
|
+
// cli/src/open-library.ts
|
|
7
6
|
var LocalCatalogDisabledError = class extends Error {
|
|
8
7
|
constructor(message) {
|
|
9
8
|
super(message);
|
|
@@ -88,12 +87,7 @@ async function openLibraryManager() {
|
|
|
88
87
|
const manager = new LibraryManager(library);
|
|
89
88
|
return { manager, library, close: () => library.close() };
|
|
90
89
|
}
|
|
91
|
-
function authoringLibraries(libs) {
|
|
92
|
-
const newRoot = getGlobalCacheDir();
|
|
93
|
-
const legacyRoot = path.join(globalSkaileDir(), "sources");
|
|
94
|
-
return libs.filter((l) => !l.path.startsWith(newRoot) && !l.path.startsWith(legacyRoot));
|
|
95
|
-
}
|
|
96
90
|
|
|
97
|
-
export { LocalCatalogDisabledError,
|
|
98
|
-
//# sourceMappingURL=chunk-
|
|
99
|
-
//# sourceMappingURL=chunk-
|
|
91
|
+
export { LocalCatalogDisabledError, openCatalogSource, openLibrary, openLibraryManager, resolveCatalogSource };
|
|
92
|
+
//# sourceMappingURL=chunk-P67WJVP4.js.map
|
|
93
|
+
//# sourceMappingURL=chunk-P67WJVP4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../cli/src/open-library.ts"],"names":["source"],"mappings":"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","file":"chunk-P67WJVP4.js","sourcesContent":["/**\n * open-library.ts — shared helpers to open the LocalIndex and the configured\n * Catalog source.\n *\n * Lazy-loads the `@skaile/workspaces/library` subpath and returns the\n * LocalIndex instance (backed by `@libsql/client`; runs on Node and Bun).\n * The catalog-source helper reads\n * `~/.skaile/config.yaml` (and project-level overlay if `projectDir` is given)\n * to decide between {@link RemoteCatalogSource} (default — points at\n * `https://skaile.store`) and a {@link LocalCatalogSource} bound to the most\n * recent local library registered via `skaile source add`.\n */\n\nimport { userConfigPath } from \"@skaile/workspaces/core\";\nimport { logErr } from \"./helpers.ts\";\nimport { getKindRegistry } from \"./open-registry.ts\";\n\n/** Thrown by {@link openCatalogSource} when `catalog.url` is the `local` sentinel. */\nexport class LocalCatalogDisabledError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"LocalCatalogDisabledError\";\n }\n}\n\n/**\n * Open the LocalIndex with the full kind registry. Exits with code 1\n * if the library directory cannot be created.\n *\n * @returns A `LocalIndex` instance ready for use.\n * @docLink cli/dev-guide#open-library\n */\nexport async function openLibrary() {\n try {\n const { LocalIndex } = await import(\"@skaile/workspaces/library\");\n return new LocalIndex({ kindRegistry: getKindRegistry() });\n } catch (err) {\n logErr(`Could not open LocalIndex: ${err instanceof Error ? err.message : String(err)}`);\n process.exit(1);\n }\n}\n\n/**\n * Resolve the configured **remote** Catalog source for the CLI.\n *\n * Reads `~/.skaile/config.yaml` (plus the optional project-level overlay) and\n * returns a {@link RemoteCatalogSource} pointing at `catalog.url` (default:\n * `https://skaile.store`). The `cache_ttl: 0` config flag flips the source\n * into air-gapped mode: network reads are disabled, only `skaile update`\n * performs refreshes.\n *\n * **Local-mode rejection.** If the resolved config has `catalog.url: local`\n * this helper throws — callers wanting the dispatched local-or-remote source\n * must use {@link resolveCatalogSource}. Remote-only consumers like\n * `skaile update --catalog-only` rely on this strict behaviour.\n *\n * @param opts - Project directory (overlays project config) and explicit overrides.\n * @returns A configured {@link RemoteCatalogSource}.\n * @throws When `catalog.url` is the `local` sentinel.\n * @docLink cli/dev-guide#open-library\n */\nexport async function openCatalogSource(opts?: {\n projectDir?: string;\n baseUrlOverride?: string;\n /** Override the user-config path for tests. */\n userConfigFile?: string;\n}): Promise<\n | import(\"@skaile/workspaces/library\").RemoteCatalogSource\n | import(\"@skaile/workspaces/library\").RestCatalogSource\n> {\n const { resolveConfig, RemoteCatalogSource, RestCatalogSource, isLocalCatalogUrl } = await import(\n \"@skaile/workspaces/library\"\n );\n const cfg = resolveConfig({\n projectDir: opts?.projectDir,\n userConfigFile: opts?.userConfigFile,\n });\n const baseUrl = opts?.baseUrlOverride ?? cfg.catalog.url;\n if (isLocalCatalogUrl(baseUrl)) {\n throw new LocalCatalogDisabledError(\n \"catalog.url is set to 'local' — remote catalog is disabled. \" +\n \"Use `skaile source add <path>` + `skaile source sync` for local sources, \" +\n `or set \\`catalog.url: https://skaile.store\\` in ${userConfigPath()}.`,\n );\n }\n const cacheTtlMs = cfg.catalog.cache_ttl * 1000;\n if (cfg.catalog.framing === \"rest\") {\n return new RestCatalogSource({ baseUrl, cacheTtlMs });\n }\n return new RemoteCatalogSource({ baseUrl, cacheTtlMs });\n}\n\n/**\n * Resolved catalog source plus a close handle for releasing any underlying\n * resources (e.g. the `LocalIndex` SQLite connection in local mode).\n *\n * Callers MUST invoke `close()` when done — typically in a `finally` block.\n * For remote-mode sources `close()` is a no-op, but the contract is uniform\n * so consumers don't have to branch.\n *\n * @docLink cli/dev-guide#open-library\n */\nexport interface ResolvedCatalogSource {\n /** The {@link ICatalogSource} ready for use. */\n source: import(\"@skaile/workspaces/library\").ICatalogSource;\n /** Release any underlying resources (SQLite handle in local mode). */\n close(): void;\n}\n\n/**\n * Resolve the configured Catalog source — local or remote — based on\n * `~/.skaile/config.yaml`.\n *\n * Dispatch:\n * - `catalog.url: local` → opens {@link LocalIndex}, picks the most recently\n * registered local library whose `path` still exists on disk, and returns a\n * {@link LocalCatalogSource} bound to that library. Throws if no usable\n * local library is registered.\n * - any URL → returns {@link RemoteCatalogSource} (same as\n * {@link openCatalogSource}).\n *\n * The returned `close()` releases the underlying `LocalIndex` SQLite handle\n * in local mode (no-op in remote mode). Callers MUST invoke it — typically in\n * a `finally` block — to satisfy `library/CLAUDE.md` § \"Notes for Consumers\".\n *\n * @param opts - Project directory (overlays project config) and explicit overrides.\n * @returns A `ResolvedCatalogSource` carrying the source and a close handle.\n * @throws When `local` is configured but no usable local library is registered.\n * @docLink cli/dev-guide#open-library\n */\nexport async function resolveCatalogSource(opts?: {\n projectDir?: string;\n baseUrlOverride?: string;\n /** Override the user-config path for tests. */\n userConfigFile?: string;\n}): Promise<ResolvedCatalogSource> {\n const {\n resolveConfig,\n RemoteCatalogSource,\n RestCatalogSource,\n LocalCatalogSource,\n isLocalCatalogUrl,\n } = await import(\"@skaile/workspaces/library\");\n const cfg = resolveConfig({\n projectDir: opts?.projectDir,\n userConfigFile: opts?.userConfigFile,\n });\n const baseUrl = opts?.baseUrlOverride ?? cfg.catalog.url;\n\n if (isLocalCatalogUrl(baseUrl)) {\n const fs = await import(\"node:fs\");\n const library = await openLibrary();\n try {\n const sources = await library.listSources();\n type LibraryRow = (typeof sources)[number];\n // Type-narrow: `path` is required for local libraries after the filter.\n const usable = sources\n .filter(\n (s): s is LibraryRow & { path: string } =>\n s.backend === \"local\" && typeof s.path === \"string\" && s.path.length > 0,\n )\n .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());\n\n if (usable.length === 0) {\n throw new Error(\n \"catalog.url is set to 'local' but no local library is registered. \" +\n \"Run `skaile source add <path>` first, then `skaile source sync`.\",\n );\n }\n\n // Prefer the most recently added library whose path still exists.\n const present = usable.find((s) => fs.existsSync(s.path));\n if (!present) {\n const head = usable[0];\n throw new Error(\n `catalog.url is set to 'local' but every registered local library has a missing path on disk. ` +\n `Most recent: ${head.path} (library ${head.id}). ` +\n `Re-register with \\`skaile source add <existing-path>\\` or run \\`skaile source list\\` to inspect.`,\n );\n }\n\n const source = new LocalCatalogSource(library, present.id, present.path, getKindRegistry());\n return { source, close: () => library.close() };\n } catch (err) {\n // Release the handle on any failure during dispatch — otherwise the\n // SQLite WAL state leaks for the lifetime of the process.\n library.close();\n throw err;\n }\n }\n\n const cacheTtlMs = cfg.catalog.cache_ttl * 1000;\n const source =\n cfg.catalog.framing === \"rest\"\n ? new RestCatalogSource({ baseUrl, cacheTtlMs })\n : new RemoteCatalogSource({ baseUrl, cacheTtlMs });\n return { source, close: () => {} };\n}\n\n/**\n * Open the LibraryManager bound to the active LocalIndex.\n * Caller owns lifetime — must call `close()` (returned helper closes the\n * underlying LocalIndex).\n *\n * @docLink cli/dev-guide#open-library\n */\nexport async function openLibraryManager(): Promise<{\n manager: import(\"@skaile/workspaces/library\").LibraryManager;\n library: import(\"@skaile/workspaces/library\").LocalIndex;\n close: () => void;\n}> {\n const { LibraryManager } = await import(\"@skaile/workspaces/library\");\n const library = await openLibrary();\n const manager = new LibraryManager(library);\n return { manager, library, close: () => library.close() };\n}\n"]}
|
|
@@ -21,15 +21,21 @@ function deployedBase(kind, target, globalInstall, cwd) {
|
|
|
21
21
|
function deployedDir(kind, name, target, globalInstall, cwd) {
|
|
22
22
|
return join(deployedBase(kind, target, globalInstall, cwd), name);
|
|
23
23
|
}
|
|
24
|
+
function deployedPaths(kind, name, target, globalInstall, cwd) {
|
|
25
|
+
const dir = deployedDir(kind, name, target, globalInstall, cwd);
|
|
26
|
+
return kind === "agent" ? [dir, `${dir}.md`, `${dir}.toml`] : [dir];
|
|
27
|
+
}
|
|
24
28
|
function isDeployed(kind, name, target, globalInstall, cwd) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
return deployedPaths(kind, name, target, globalInstall, cwd).some((p) => {
|
|
30
|
+
try {
|
|
31
|
+
lstatSync(p);
|
|
32
|
+
return true;
|
|
33
|
+
} catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
31
37
|
}
|
|
32
38
|
|
|
33
|
-
export { deployedBase, deployedDir, isDeployed };
|
|
34
|
-
//# sourceMappingURL=chunk-
|
|
35
|
-
//# sourceMappingURL=chunk-
|
|
39
|
+
export { deployedBase, deployedDir, deployedPaths, isDeployed };
|
|
40
|
+
//# sourceMappingURL=chunk-PMECEZK3.js.map
|
|
41
|
+
//# sourceMappingURL=chunk-PMECEZK3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../core/src/store.ts"],"names":[],"mappings":";;;;;;AA6BO,SAAS,YAAA,CACd,IAAA,EACA,MAAA,EACA,aAAA,EACA,GAAA,EACQ;AACR,EAAA,MAAM,SAAA,GAAY,eAAe,MAAM,CAAA;AACvC,EAAA,IAAI,CAAC,SAAA,EAAW,MAAM,IAAI,KAAA,CAAM,CAAA,wBAAA,EAA2B,MAAM,CAAA,CAAA,CAAG,CAAA;AACpE,EAAA,MAAM,KAAA,GAAQ,gBAAgB,QAAA,GAAW,OAAA;AACzC,EAAA,MAAM,KAAA,GAAQ,UAAU,KAAK,CAAA;AAC7B,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,IAAI,CAAA,IAAK,MAAM,KAAA,IAAS,EAAA;AAC9C,EAAA,IAAI,aAAA,EAAe;AAGjB,IAAA,IAAI,OAAA,KAAY,WAAA,IAAe,OAAA,CAAQ,UAAA,CAAW,YAAY,CAAA,EAAG;AAC/D,MAAA,OAAO,KAAK,eAAA,EAAgB,EAAG,QAAQ,KAAA,CAAM,WAAA,CAAY,MAAM,CAAC,CAAA;AAAA,IAClE;AACA,IAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,IAAA,EAAM,OAAA,EAAS,CAAA;AAAA,EACxC;AACA,EAAA,OAAO,OAAA,CAAQ,GAAA,IAAO,OAAA,CAAQ,GAAA,IAAO,OAAO,CAAA;AAC9C;AAaO,SAAS,WAAA,CACd,IAAA,EACA,IAAA,EACA,MAAA,EACA,eACA,GAAA,EACQ;AACR,EAAA,OAAO,KAAK,YAAA,CAAa,IAAA,EAAM,QAAQ,aAAA,EAAe,GAAG,GAAG,IAAI,CAAA;AAClE;AAeO,SAAS,aAAA,CACd,IAAA,EACA,IAAA,EACA,MAAA,EACA,eACA,GAAA,EACU;AACV,EAAA,MAAM,MAAM,WAAA,CAAY,IAAA,EAAM,IAAA,EAAM,MAAA,EAAQ,eAAe,GAAG,CAAA;AAC9D,EAAA,OAAO,IAAA,KAAS,OAAA,GAAU,CAAC,GAAA,EAAK,CAAA,EAAG,GAAG,CAAA,GAAA,CAAA,EAAO,CAAA,EAAG,GAAG,CAAA,KAAA,CAAO,CAAA,GAAI,CAAC,GAAG,CAAA;AACpE;AAcO,SAAS,UAAA,CACd,IAAA,EACA,IAAA,EACA,MAAA,EACA,eACA,GAAA,EACS;AACT,EAAA,OAAO,aAAA,CAAc,MAAM,IAAA,EAAM,MAAA,EAAQ,eAAe,GAAG,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM;AACvE,IAAA,IAAI;AACF,MAAA,SAAA,CAAU,CAAC,CAAA;AACX,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF,CAAC,CAAA;AACH","file":"chunk-PMECEZK3.js","sourcesContent":["/**\n * Deploy-target helpers — resolve framework-specific install paths.\n *\n * This module contains only deploy path resolution. All catalog, repository,\n * and history I/O has moved to @skaile/asset-manager (project-local).\n */\n\nimport { lstatSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join, resolve } from \"node:path\";\nimport { globalSkaileDir } from \"./cache-paths.js\";\nimport type { DriverTarget } from \"./driver-targets.js\";\nimport { type AiComponent, DRIVER_TARGETS } from \"./driver-targets.js\";\n\n// ── Deploy-target helpers ─────────────────────────────────────────────────────\n\n/**\n * Resolve the base deploy directory for an asset kind in a given driver target + scope.\n * For local scope, the path is relative to `cwd` (defaults to `process.cwd()`).\n * For global scope, `~` is expanded to the home directory.\n *\n * @param kind - Asset component type (e.g. `\"skill\"`, `\"agent\"`)\n * @param target - Driver target identifier (e.g. `\"claude-code\"`, `\"omp\"`)\n * @param globalInstall - `true` for user-global install, `false` for project-local\n * @param cwd - Working directory for project-local installs (default: `process.cwd()`)\n * @returns Absolute path to the base deploy directory\n * @throws When `target` is not found in `DRIVER_TARGETS`\n * @docLink packages/core/concepts#deployed-base\n */\nexport function deployedBase(\n kind: AiComponent,\n target: DriverTarget,\n globalInstall: boolean,\n cwd?: string,\n): string {\n const targetMap = DRIVER_TARGETS[target];\n if (!targetMap) throw new Error(`Unknown deploy target: '${target}'`);\n const scope = globalInstall ? \"global\" : \"local\";\n const paths = targetMap[scope];\n const destStr = paths[kind] ?? paths.skill ?? \"\";\n if (globalInstall) {\n // `~/.skaile/...` is skaile's own per-user root, so it follows `$SKAILE_HOME`;\n // every other `~/...` is a driver's home dir (`~/.claude`, `~/.omp`, ...).\n if (destStr === \"~/.skaile\" || destStr.startsWith(\"~/.skaile/\")) {\n return join(globalSkaileDir(), destStr.slice(\"~/.skaile\".length));\n }\n return destStr.replace(/^~/, homedir());\n }\n return resolve(cwd ?? process.cwd(), destStr);\n}\n\n/**\n * Return the full deploy path for a named asset: `<deployedBase>/<name>`.\n *\n * @param kind - Asset component type\n * @param name - Asset name (becomes the directory/file name under the base)\n * @param target - Driver target identifier\n * @param globalInstall - `true` for user-global, `false` for project-local\n * @param cwd - Working directory for local installs\n * @returns Absolute path to the asset's deploy directory\n * @docLink packages/core/concepts#deployed-dir\n */\nexport function deployedDir(\n kind: AiComponent,\n name: string,\n target: DriverTarget,\n globalInstall: boolean,\n cwd?: string,\n): string {\n return join(deployedBase(kind, target, globalInstall, cwd), name);\n}\n\n/**\n * Every path a deploy of `name` can occupy. Skills, prompts, flows and contracts\n * deploy to `<base>/<name>`; an agent is rendered into the harness's native file\n * (`<base>/<name>.md` for claude-code, `<base>/<name>.toml` for codex) or a\n * directory (`<base>/<name>/` for omp), so all three count.\n *\n * @param kind - Asset component type\n * @param name - Asset name\n * @param target - Driver target identifier\n * @param globalInstall - `true` for user-global, `false` for project-local\n * @param cwd - Working directory for local installs\n * @returns Absolute paths, the {@link deployedDir} first\n */\nexport function deployedPaths(\n kind: AiComponent,\n name: string,\n target: DriverTarget,\n globalInstall: boolean,\n cwd?: string,\n): string[] {\n const dir = deployedDir(kind, name, target, globalInstall, cwd);\n return kind === \"agent\" ? [dir, `${dir}.md`, `${dir}.toml`] : [dir];\n}\n\n/**\n * Check whether an asset is already deployed at one of its {@link deployedPaths}.\n * Uses `lstatSync` so symlinks are treated as deployed.\n *\n * @param kind - Asset component type\n * @param name - Asset name\n * @param target - Driver target identifier\n * @param globalInstall - `true` for user-global, `false` for project-local\n * @param cwd - Working directory for local installs\n * @returns `true` if a deploy path exists, `false` otherwise\n * @docLink packages/core/concepts#is-deployed\n */\nexport function isDeployed(\n kind: AiComponent,\n name: string,\n target: DriverTarget,\n globalInstall: boolean,\n cwd?: string,\n): boolean {\n return deployedPaths(kind, name, target, globalInstall, cwd).some((p) => {\n try {\n lstatSync(p);\n return true;\n } catch {\n return false;\n }\n });\n}\n"]}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { AskSlots } from './chunk-EPBKISS5.js';
|
|
2
|
+
|
|
1
3
|
// store/src/resource-client.ts
|
|
2
4
|
var DEFAULT_TIMEOUT_MS = 3e4;
|
|
3
5
|
var ResourceRequestError = class extends Error {
|
|
@@ -356,8 +358,10 @@ var AgentStore = class _AgentStore {
|
|
|
356
358
|
* only once every one has an answer; `_pendingQuestion` is its last entry.
|
|
357
359
|
*/
|
|
358
360
|
_openQuestions = [];
|
|
359
|
-
/**
|
|
360
|
-
|
|
361
|
+
/** Slot rule of the parked ask, shared with the drivers and the SDK session. */
|
|
362
|
+
_ask = new AskSlots();
|
|
363
|
+
/** Latest `question` event per sub-question text of the parked ask. */
|
|
364
|
+
_askEvents = /* @__PURE__ */ new Map();
|
|
361
365
|
/**
|
|
362
366
|
* Own unnamed replies whose runner echo has not arrived yet. Best effort: a
|
|
363
367
|
* reply the driver rejects is never echoed, and its count lingers until the
|
|
@@ -454,7 +458,7 @@ var AgentStore = class _AgentStore {
|
|
|
454
458
|
this._error = null;
|
|
455
459
|
this._cancelledText = "";
|
|
456
460
|
this._streamingFlushed = false;
|
|
457
|
-
this.
|
|
461
|
+
this._clearAsk();
|
|
458
462
|
this._phase = "thinking";
|
|
459
463
|
const userId = this._options.userId;
|
|
460
464
|
if (userId) {
|
|
@@ -489,11 +493,8 @@ var AgentStore = class _AgentStore {
|
|
|
489
493
|
reply(answer, question, requestId) {
|
|
490
494
|
if (this._pendingQuestion?.requestId && this._pendingQuestion.requestId !== requestId) return;
|
|
491
495
|
if (this._openQuestions.length > 0) {
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
if (index !== -1) {
|
|
495
|
-
this._setOpenQuestions(this._openQuestions.filter((_, i) => i !== index));
|
|
496
|
-
}
|
|
496
|
+
this._ask.answer(question);
|
|
497
|
+
this._syncOpenQuestions();
|
|
497
498
|
if (question === void 0 && this._openQuestions.length > 0) this._unnamedEchoesOwed++;
|
|
498
499
|
}
|
|
499
500
|
if (this._openQuestions.length === 0) this._phase = "thinking";
|
|
@@ -671,17 +672,19 @@ var AgentStore = class _AgentStore {
|
|
|
671
672
|
});
|
|
672
673
|
}
|
|
673
674
|
// -- Internal --------------------------------------------------------------
|
|
674
|
-
/**
|
|
675
|
-
|
|
676
|
-
this._openQuestions = open;
|
|
677
|
-
this._pendingQuestion =
|
|
678
|
-
if (
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
675
|
+
/** Re-derive the open sub-questions from the slot rule; `pendingQuestion` follows the latest one. */
|
|
676
|
+
_syncOpenQuestions() {
|
|
677
|
+
this._openQuestions = this._ask.open.flatMap((q) => this._askEvents.get(q) ?? []);
|
|
678
|
+
this._pendingQuestion = this._openQuestions.at(-1) ?? null;
|
|
679
|
+
if (this._openQuestions.length === 0) this._clearAsk();
|
|
680
|
+
}
|
|
681
|
+
/** Drop the parked ask and everything bound to it. */
|
|
682
|
+
_clearAsk() {
|
|
683
|
+
this._ask.clear();
|
|
684
|
+
this._askEvents.clear();
|
|
685
|
+
this._openQuestions = [];
|
|
686
|
+
this._pendingQuestion = null;
|
|
687
|
+
this._unnamedEchoesOwed = 0;
|
|
685
688
|
}
|
|
686
689
|
_handleEvent(event) {
|
|
687
690
|
switch (event.type) {
|
|
@@ -702,7 +705,7 @@ var AgentStore = class _AgentStore {
|
|
|
702
705
|
this._flushStreaming();
|
|
703
706
|
this._appendMessage(event);
|
|
704
707
|
if (!event.cancelled) this._phase = "idle";
|
|
705
|
-
this.
|
|
708
|
+
this._clearAsk();
|
|
706
709
|
break;
|
|
707
710
|
case "status":
|
|
708
711
|
if (this._phase === "cancelling" && event.phase !== "idle") return;
|
|
@@ -717,15 +720,14 @@ var AgentStore = class _AgentStore {
|
|
|
717
720
|
const pending = this._pendingQuestion;
|
|
718
721
|
if (pending === null) return;
|
|
719
722
|
if (pending.requestId !== void 0 && pending.requestId !== event.requestId) return;
|
|
720
|
-
let index = 0;
|
|
721
723
|
if (event.question !== void 0) {
|
|
722
|
-
|
|
723
|
-
if (index === -1) return;
|
|
724
|
+
if (!this._ask.isOpen(event.question)) return;
|
|
724
725
|
} else if (this._unnamedEchoesOwed > 0) {
|
|
725
726
|
this._unnamedEchoesOwed--;
|
|
726
727
|
return;
|
|
727
728
|
}
|
|
728
|
-
this.
|
|
729
|
+
this._ask.answer(event.question);
|
|
730
|
+
this._syncOpenQuestions();
|
|
729
731
|
this._flushStreaming();
|
|
730
732
|
this._appendMessage(event);
|
|
731
733
|
break;
|
|
@@ -742,12 +744,12 @@ var AgentStore = class _AgentStore {
|
|
|
742
744
|
case "question":
|
|
743
745
|
this._flushStreaming();
|
|
744
746
|
this._phase = "idle";
|
|
745
|
-
if (this.
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
this.
|
|
747
|
+
if (this._ask.add(event.question, event.requestId)) {
|
|
748
|
+
this._askEvents.clear();
|
|
749
|
+
this._unnamedEchoesOwed = 0;
|
|
750
|
+
}
|
|
751
|
+
this._askEvents.set(event.question, event);
|
|
752
|
+
this._syncOpenQuestions();
|
|
751
753
|
this._appendMessage(event);
|
|
752
754
|
break;
|
|
753
755
|
case "error":
|
|
@@ -755,7 +757,7 @@ var AgentStore = class _AgentStore {
|
|
|
755
757
|
this._streamingText = "";
|
|
756
758
|
this._streamingFlushed = true;
|
|
757
759
|
this._phase = "idle";
|
|
758
|
-
if (event.fatal) this.
|
|
760
|
+
if (event.fatal) this._clearAsk();
|
|
759
761
|
this._appendMessage(event);
|
|
760
762
|
break;
|
|
761
763
|
case "state_changed": {
|
|
@@ -851,5 +853,5 @@ var AgentStore = class _AgentStore {
|
|
|
851
853
|
};
|
|
852
854
|
|
|
853
855
|
export { AgentStore, ResourceClient, ResourceRequestError };
|
|
854
|
-
//# sourceMappingURL=chunk-
|
|
855
|
-
//# sourceMappingURL=chunk-
|
|
856
|
+
//# sourceMappingURL=chunk-Q6E6FM7P.js.map
|
|
857
|
+
//# sourceMappingURL=chunk-Q6E6FM7P.js.map
|