From caef09144fc0548b51cd61882bd8953734eed0e5 Mon Sep 17 00:00:00 2001 From: elkaix Date: Mon, 9 Nov 2026 15:53:49 -0500 Subject: [PATCH] fix: remove hosted client-config features --- .changeset/remove-hosted-client-configs.md | 5 + .../dist-web/.web-bundle-manifest.json | 2 +- ...-D0W6r4O4.js => CodeBlockNode-dfP7URyJ.js} | 2 +- ...x8o64m.js => DesignSystemView-BZ48D3sU.js} | 2 +- ...ooltip-Bj1LyJqp.js => Tooltip-Dg3XeiZZ.js} | 2 +- .../{index-Ud6NtwuQ.js => index-BWCY3EFX.js} | 14 +- ...ndex10-CgiEr33-.js => index10-E02w5TzI.js} | 2 +- ...ndex11-Cc6dLv_C.js => index11-D1N3NjXP.js} | 2 +- .../dist-web/assets/index3-BpVQpQH2.js | 1 + .../dist-web/assets/index3-CB2yWI7V.js | 1 - .../dist-web/assets/index4-DMAnvl7P.js | 1 + .../dist-web/assets/index4-a1ugmBbs.js | 1 - ...{index5-zhInUTZK.js => index5-Cr4upCog.js} | 2 +- ...{index6-DWSH8E97.js => index6-DOjSPjd-.js} | 2 +- ...{index7-DVxpAUAg.js => index7-D3XnABVb.js} | 2 +- ...{index8-BogL88_S.js => index8-CstP1mIT.js} | 2 +- ...{index9-DrhwA7rQ.js => index9-BMNg-UH3.js} | 2 +- apps/pythinker-code/dist-web/index.html | 2 +- apps/pythinker-code/src/constant/app.ts | 1 - .../src/tui/banner/banner-config.ts | 25 - .../src/tui/banner/banner-provider.ts | 356 -------- apps/pythinker-code/src/tui/banner/state.ts | 69 -- apps/pythinker-code/src/tui/commands/auth.ts | 95 +- .../pythinker-code/src/tui/commands/config.ts | 4 +- .../src/tui/commands/dispatch.ts | 3 - apps/pythinker-code/src/tui/commands/undo.ts | 1 - .../src/tui/components/chrome/banner.ts | 95 -- .../components/dialogs/cache-hint-dialog.ts | 121 --- .../tui/controllers/cache-hint-controller.ts | 540 ----------- .../tui/controllers/session-event-handler.ts | 12 - .../src/tui/controllers/survey-controller.ts | 16 +- apps/pythinker-code/src/tui/pythinker-tui.ts | 124 +-- apps/pythinker-code/src/tui/tui-state.ts | 2 +- .../src/tui/utils/cache-hint.ts | 52 -- .../src/utils/cache-hint-config.ts | 48 - .../src/utils/client-configs.ts | 12 - .../src/utils/managed-access-token.ts | 22 - apps/pythinker-code/src/utils/paths.ts | 4 - .../src/utils/recommended-effort-config.ts | 43 - .../utils/recommended-effort-state-store.ts | 31 - .../src/utils/recommended-effort.ts | 72 -- .../test/tui/banner/banner-provider.test.ts | 780 ---------------- .../test/tui/banner/state.test.ts | 88 -- .../test/tui/components/chrome/banner.test.ts | 242 ----- .../controllers/cache-hint-controller.test.ts | 835 ------------------ .../session-event-handler-compaction.test.ts | 7 - .../tui/controllers/survey-controller.test.ts | 88 +- .../tui/pythinker-tui-message-flow.test.ts | 106 --- .../test/tui/pythinker-tui-startup.test.ts | 326 ------- .../test/utils/managed-access-token.test.ts | 53 -- .../utils/recommended-effort-config.test.ts | 224 ----- .../recommended-effort-state-store.test.ts | 66 -- .../test/utils/recommended-effort.test.ts | 457 ---------- apps/pythinker-web/src/i18n/locales/en/app.ts | 1 - .../src/i18n/locales/en/commands.ts | 2 +- .../src/i18n/locales/en/login.ts | 2 +- .../src/i18n/locales/en/providers.ts | 1 - docs/configuration/overrides.md | 2 +- .../agent-gateway/test/sessionRating.test.ts | 93 +- packages/oauth/src/index.ts | 20 - packages/product/package.json | 4 - .../src/client-configs/node/client-configs.ts | 171 ---- .../product/src/client-configs/node/index.ts | 1 - .../src/session-rating/common/gates.ts | 18 +- .../common/survey-popup-config.ts | 69 +- .../product/src/session-rating/node/engine.ts | 30 +- .../session-rating/node/event-properties.ts | 9 - .../product/src/session-rating/node/kfc.ts | 11 - .../node/session-rating-host.ts | 53 +- .../node/survey-popup-config-feed.ts | 128 +-- packages/product/test/client-configs.test.ts | 494 ----------- packages/product/test/entry-points.test.ts | 1 - packages/product/test/rating-reports.test.ts | 1 - packages/product/test/session-rating.test.ts | 699 +-------------- packages/product/test/survey-policy.test.ts | 52 +- .../product/test/survey-popup-config.test.ts | 552 +----------- 76 files changed, 106 insertions(+), 7375 deletions(-) create mode 100644 .changeset/remove-hosted-client-configs.md rename apps/pythinker-code/dist-web/assets/{CodeBlockNode-D0W6r4O4.js => CodeBlockNode-dfP7URyJ.js} (99%) rename apps/pythinker-code/dist-web/assets/{DesignSystemView-DWx8o64m.js => DesignSystemView-BZ48D3sU.js} (99%) rename apps/pythinker-code/dist-web/assets/{Tooltip-Bj1LyJqp.js => Tooltip-Dg3XeiZZ.js} (98%) rename apps/pythinker-code/dist-web/assets/{index-Ud6NtwuQ.js => index-BWCY3EFX.js} (95%) rename apps/pythinker-code/dist-web/assets/{index10-CgiEr33-.js => index10-E02w5TzI.js} (99%) rename apps/pythinker-code/dist-web/assets/{index11-Cc6dLv_C.js => index11-D1N3NjXP.js} (99%) create mode 100644 apps/pythinker-code/dist-web/assets/index3-BpVQpQH2.js delete mode 100644 apps/pythinker-code/dist-web/assets/index3-CB2yWI7V.js create mode 100644 apps/pythinker-code/dist-web/assets/index4-DMAnvl7P.js delete mode 100644 apps/pythinker-code/dist-web/assets/index4-a1ugmBbs.js rename apps/pythinker-code/dist-web/assets/{index5-zhInUTZK.js => index5-Cr4upCog.js} (97%) rename apps/pythinker-code/dist-web/assets/{index6-DWSH8E97.js => index6-DOjSPjd-.js} (98%) rename apps/pythinker-code/dist-web/assets/{index7-DVxpAUAg.js => index7-D3XnABVb.js} (97%) rename apps/pythinker-code/dist-web/assets/{index8-BogL88_S.js => index8-CstP1mIT.js} (99%) rename apps/pythinker-code/dist-web/assets/{index9-DrhwA7rQ.js => index9-BMNg-UH3.js} (99%) delete mode 100644 apps/pythinker-code/src/tui/banner/banner-config.ts delete mode 100644 apps/pythinker-code/src/tui/banner/banner-provider.ts delete mode 100644 apps/pythinker-code/src/tui/banner/state.ts delete mode 100644 apps/pythinker-code/src/tui/components/chrome/banner.ts delete mode 100644 apps/pythinker-code/src/tui/components/dialogs/cache-hint-dialog.ts delete mode 100644 apps/pythinker-code/src/tui/controllers/cache-hint-controller.ts delete mode 100644 apps/pythinker-code/src/tui/utils/cache-hint.ts delete mode 100644 apps/pythinker-code/src/utils/cache-hint-config.ts delete mode 100644 apps/pythinker-code/src/utils/client-configs.ts delete mode 100644 apps/pythinker-code/src/utils/managed-access-token.ts delete mode 100644 apps/pythinker-code/src/utils/recommended-effort-config.ts delete mode 100644 apps/pythinker-code/src/utils/recommended-effort-state-store.ts delete mode 100644 apps/pythinker-code/src/utils/recommended-effort.ts delete mode 100644 apps/pythinker-code/test/tui/banner/banner-provider.test.ts delete mode 100644 apps/pythinker-code/test/tui/banner/state.test.ts delete mode 100644 apps/pythinker-code/test/tui/components/chrome/banner.test.ts delete mode 100644 apps/pythinker-code/test/tui/controllers/cache-hint-controller.test.ts delete mode 100644 apps/pythinker-code/test/utils/managed-access-token.test.ts delete mode 100644 apps/pythinker-code/test/utils/recommended-effort-config.test.ts delete mode 100644 apps/pythinker-code/test/utils/recommended-effort-state-store.test.ts delete mode 100644 apps/pythinker-code/test/utils/recommended-effort.test.ts delete mode 100644 packages/product/src/client-configs/node/client-configs.ts delete mode 100644 packages/product/src/client-configs/node/index.ts delete mode 100644 packages/product/src/session-rating/node/kfc.ts delete mode 100644 packages/product/test/client-configs.test.ts diff --git a/.changeset/remove-hosted-client-configs.md b/.changeset/remove-hosted-client-configs.md new file mode 100644 index 000000000..e96a53b54 --- /dev/null +++ b/.changeset/remove-hosted-client-configs.md @@ -0,0 +1,5 @@ +--- +"@pymodel/pythinker-code": patch +--- + +Remove the hosted client-config features: the startup tips banner, prompt-cache hints, recommended thinking effort, and remotely tuned feedback-survey settings. They only ran when `CUSTOM_API_BASE_URL` pointed at a hosted service; the feedback survey now always uses its built-in defaults, and there is no switch to bring the hosted features back. diff --git a/apps/pythinker-code/dist-web/.web-bundle-manifest.json b/apps/pythinker-code/dist-web/.web-bundle-manifest.json index 64a17b1e7..7bba8f3d4 100644 --- a/apps/pythinker-code/dist-web/.web-bundle-manifest.json +++ b/apps/pythinker-code/dist-web/.web-bundle-manifest.json @@ -1,4 +1,4 @@ { - "sourceHash": "734a2fc9eab1704b61003e995895121ab7a081b5f50089ea689528bbc65c9cbb", + "sourceHash": "bc291eadda5286116d979de87d001331435704d446029fe946faad97a0319797", "sourceFileCount": 501 } diff --git a/apps/pythinker-code/dist-web/assets/CodeBlockNode-D0W6r4O4.js b/apps/pythinker-code/dist-web/assets/CodeBlockNode-dfP7URyJ.js similarity index 99% rename from apps/pythinker-code/dist-web/assets/CodeBlockNode-D0W6r4O4.js rename to apps/pythinker-code/dist-web/assets/CodeBlockNode-dfP7URyJ.js index e21373c5b..10197525e 100644 --- a/apps/pythinker-code/dist-web/assets/CodeBlockNode-D0W6r4O4.js +++ b/apps/pythinker-code/dist-web/assets/CodeBlockNode-dfP7URyJ.js @@ -1,3 +1,3 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dist-DXDod8J6.js","assets/preload-helper-Czpn1I53.js"])))=>i.map(i=>d[i]); -import{A as e,G as t,I as n,J as r,N as i,O as a,P as o,S as s,T as c,U as l,_ as u,b as d,c as f,d as p,f as m,g as h,h as g,j as _,lt as ee,m as v,n as te,nt as y,ot as b,q as ne,rt as re,st as ie,u as ae,ut as x,v as S,w as C,y as oe,z as se}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{t as ce}from"./preload-helper-Czpn1I53.js";import{n as le,t as w}from"./safeRaf-BDp3SJMs.js";import{$ as ue,A as de,D as fe,J as pe,K as me,O as he,Q as ge,T as _e,X as ve,Y as ye,Z as be,_ as xe,a as Se,d as Ce,et as we,g as Te,h as Ee,n as De,o as Oe,p as ke,q as Ae,s as je,v as Me,x as Ne}from"./index-Ud6NtwuQ.js";var Pe=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),Fe=!1,Ie=null,Le=null,T=null;function Re(){return Pe(this,null,function*(){if(T)return T;T=Pe(null,null,function*(){if(!Le)try{if(Le=function(e){let t=e;if(typeof t?.useMonaco==`function`)return t;let n=e?.default;return typeof n?.useMonaco==`function`?n:null}(yield ce(()=>import(`./dist-DXDod8J6.js`),__vite__mapDeps([0,1]))),!Le)return null}catch{return null}try{return yield function(e){return Pe(this,null,function*(){if(!Fe)return Ie||(Ie=Pe(null,null,function*(){let t=globalThis==null?void 0:globalThis.MonacoEnvironment;t&&(typeof t.getWorker==`function`||typeof t.getWorkerUrl==`function`)||typeof e?.preloadMonacoWorkers!=`function`||(yield e.preloadMonacoWorkers()),Fe=!0}).finally(()=>{Ie=null}),Ie)})}(Le),ue(),Le}catch{return null}});try{return yield T}finally{T=null}})}var E=Object.defineProperty,ze=Object.defineProperties,D=Object.getOwnPropertyDescriptors,Be=Object.getOwnPropertySymbols,O=Object.prototype.hasOwnProperty,Ve=Object.prototype.propertyIsEnumerable,k=(e,t,n)=>t in e?E(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,A=(e,t)=>{for(var n in t||={})O.call(t,n)&&k(e,n,t[n]);if(Be)for(var n of Be(t))Ve.call(t,n)&&k(e,n,t[n]);return e},j=(e,t)=>ze(e,D(t)),M=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),N={key:0,class:`code-block-header flex justify-between items-center border-b px-[var(--ms-inset-panel-x)] py-[var(--ms-inset-panel-y)] border-[var(--code-border)] bg-[var(--code-header-bg)] text-[var(--code-fg)]`},P={class:`flex items-center gap-0.5`},F=[`aria-label`],I={class:`code-diff-stat removed`},He={class:`code-diff-stat added`},L=[`aria-label`],Ue={key:0,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},We={key:1,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},Ge=[`aria-pressed`],Ke={key:3,class:`relative`},qe=[`aria-expanded`],Je=[`disabled`],Ye=[`disabled`],R=[`disabled`],Xe={key:0,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},Ze={key:1,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},Qe={class:`code-loading-placeholder`},$e={class:`sr-only`,"aria-live":`polite`,role:`status`},et=C({__name:`CodeBlockShell`,props:{showHeader:{type:Boolean,default:!0},showCollapseButton:{type:Boolean,default:!0},showFontSizeButtons:{type:Boolean,default:!0},enableFontSizeControl:{type:Boolean,default:!0},showCopyButton:{type:Boolean,default:!0},showExpandButton:{type:Boolean,default:!0},showPreviewButton:{type:Boolean,default:!0},showTooltips:{type:Boolean,default:!0},isDark:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},stream:{type:Boolean,default:!1},isCollapsed:{type:Boolean,default:!1},isExpanded:{type:Boolean,default:!1},copyText:{type:Boolean,default:!1},isPreviewable:{type:Boolean,default:!1},codeFontSize:{},codeFontMin:{},codeFontMax:{},defaultCodeFontSize:{},fontBaselineReady:{type:Boolean,default:!1},diffStats:{},diffStatsAriaLabel:{}},emits:[`toggleCollapse`,`decreaseFont`,`resetFont`,`increaseFont`,`copy`,`toggleExpand`,`preview`],setup(e,{emit:t}){let i=e,a=t,o=y(!1),c=y(null),l=y(null);function m(){De(!0),o.value=!o.value,o.value&&document.addEventListener(`click`,_,{once:!0,capture:!0})}function h(){De(!0),o.value=!1}function _(e){let t=e.target;c.value?.contains(t)||l.value?.contains(t)?document.addEventListener(`click`,_,{once:!0,capture:!0}):h()}let re=v(()=>i.showFontSizeButtons&&i.enableFontSizeControl||i.showExpandButton||i.isPreviewable&&i.showPreviewButton),{t:C}=Se(),oe=v(()=>!1!==i.showTooltips);function ce(e,t){oe.value&&Ee(e.currentTarget,t,`top`,!1,void 0,i.isDark)}function le(){oe.value&&De()}function w(e){ce(e,i.copyText?C(`common.copied`)||`Copied`:C(`common.copy`)||`Copy`)}let ue=v(()=>!!Number.isFinite(i.codeFontSize)&&(i.codeFontSize??0)<=(i.codeFontMin??0)),de=v(()=>!i.fontBaselineReady||i.codeFontSize===i.defaultCodeFontSize),fe=v(()=>!!Number.isFinite(i.codeFontSize)&&(i.codeFontSize??0)>=(i.codeFontMax??100));return(t,_)=>(n(),S(p,null,[i.showHeader?(n(),S(`div`,N,[se(t.$slots,`header-left`),se(t.$slots,`header-right`,{},()=>[g(`div`,P,[e.diffStats?(n(),S(`div`,{key:0,class:`code-diff-stats`,"aria-label":e.diffStatsAriaLabel},[g(`span`,I,`-`+x(e.diffStats.removed),1),g(`span`,He,`+`+x(e.diffStats.added),1)],8,F)):u(``,!0),i.showCopyButton?(n(),S(`button`,{key:1,type:`button`,class:`code-action-btn inline-flex items-center justify-center p-[var(--ms-action-btn-padding)] rounded leading-none shrink-0 cursor-pointer text-[var(--code-action-fg)] hover:bg-[var(--code-action-hover-bg)] hover:text-[var(--code-action-hover-fg)] active:scale-[0.96] disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,"aria-label":e.copyText?b(C)(`common.copied`)||`Copied`:b(C)(`common.copy`)||`Copy`,onClick:_[0]||=e=>a(`copy`),onMouseenter:_[1]||=e=>w(e),onFocus:_[2]||=e=>w(e),onMouseleave:le,onBlur:le},[e.copyText?(n(),S(`svg`,We,[..._[14]||=[g(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M20 6L9 17l-5-5`},null,-1)]])):(n(),S(`svg`,Ue,[..._[13]||=[g(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[g(`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}),g(`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`})],-1)]]))],40,L)):u(``,!0),i.showCollapseButton?(n(),S(`button`,{key:2,type:`button`,class:`code-action-btn inline-flex items-center justify-center p-[var(--ms-action-btn-padding)] rounded leading-none shrink-0 cursor-pointer text-[var(--code-action-fg)] hover:bg-[var(--code-action-hover-bg)] hover:text-[var(--code-action-hover-fg)] active:scale-[0.96] disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,"aria-pressed":e.isCollapsed,onClick:_[3]||=e=>a(`toggleCollapse`),onMouseenter:_[4]||=t=>ce(t,e.isCollapsed?b(C)(`common.expand`)||`Expand`:b(C)(`common.collapse`)||`Collapse`),onFocus:_[5]||=t=>ce(t,e.isCollapsed?b(C)(`common.expand`)||`Expand`:b(C)(`common.collapse`)||`Collapse`),onMouseleave:le,onBlur:le},[(n(),S(`svg`,{style:ee({rotate:e.isCollapsed?`0deg`:`90deg`}),xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[..._[15]||=[g(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m9 18l6-6l-6-6`},null,-1)]],4))],40,Ge)):u(``,!0),re.value?(n(),S(`div`,Ke,[g(`button`,{ref_key:`moreBtnRef`,ref:l,type:`button`,class:`code-action-btn inline-flex items-center justify-center p-[var(--ms-action-btn-padding)] rounded leading-none shrink-0 cursor-pointer text-[var(--code-action-fg)] hover:bg-[var(--code-action-hover-bg)] hover:text-[var(--code-action-hover-fg)] active:scale-[0.96] transition-colors`,"aria-expanded":o.value,"aria-haspopup":`true`,onClick:ae(m,[`stop`]),onMouseenter:_[6]||=e=>ce(e,b(C)(`common.more`)||`More`),onFocus:_[7]||=e=>ce(e,b(C)(`common.more`)||`More`),onMouseleave:le,onBlur:le},[..._[16]||=[d(``,1)]],40,qe),s(te,{name:`code-menu`},{default:ne(()=>[o.value?(n(),S(`div`,{key:0,ref_key:`moreMenuRef`,ref:c,class:`code-more-menu min-w-[10rem] p-1 bg-[hsl(var(--ms-popover))] text-[hsl(var(--ms-popover-foreground))] border border-[var(--code-border)] shadow-[var(--ms-shadow-popover)]`,role:`menu`},[i.showFontSizeButtons&&i.enableFontSizeControl?(n(),S(p,{key:0},[g(`button`,{type:`button`,role:`menuitem`,class:`flex items-center gap-2 w-full py-1.5 px-2 rounded text-xs text-[var(--code-action-fg)] cursor-pointer whitespace-nowrap hover:bg-[var(--code-action-hover-bg)] hover:text-[var(--code-action-hover-fg)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,disabled:ue.value,onClick:_[8]||=e=>{b(De)(!0),a(`decreaseFont`)}},[_[17]||=g(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[g(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M5 12h14`})],-1),g(`span`,null,x(b(C)(`common.fontSmaller`)||`Font size −`),1)],8,Je),g(`button`,{type:`button`,role:`menuitem`,class:`flex items-center gap-2 w-full py-1.5 px-2 rounded text-xs text-[var(--code-action-fg)] cursor-pointer whitespace-nowrap hover:bg-[var(--code-action-hover-bg)] hover:text-[var(--code-action-hover-fg)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,disabled:de.value,onClick:_[9]||=e=>{b(De)(!0),a(`resetFont`)}},[_[18]||=g(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[g(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[g(`path`,{d:`M3 12a9 9 0 1 0 9-9a9.75 9.75 0 0 0-6.74 2.74L3 8`}),g(`path`,{d:`M3 3v5h5`})])],-1),g(`span`,null,x(b(C)(`common.fontReset`)||`Font size reset`),1)],8,Ye),g(`button`,{type:`button`,role:`menuitem`,class:`flex items-center gap-2 w-full py-1.5 px-2 rounded text-xs text-[var(--code-action-fg)] cursor-pointer whitespace-nowrap hover:bg-[var(--code-action-hover-bg)] hover:text-[var(--code-action-hover-fg)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,disabled:fe.value,onClick:_[10]||=e=>{b(De)(!0),a(`increaseFont`)}},[_[19]||=g(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[g(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M5 12h14m-7-7v14`})],-1),g(`span`,null,x(b(C)(`common.fontLarger`)||`Font size +`),1)],8,R)],64)):u(``,!0),i.showExpandButton?(n(),S(`button`,{key:1,type:`button`,role:`menuitem`,class:`flex items-center gap-2 w-full py-1.5 px-2 rounded text-xs text-[var(--code-action-fg)] cursor-pointer whitespace-nowrap hover:bg-[var(--code-action-hover-bg)] hover:text-[var(--code-action-hover-fg)] transition-colors`,onClick:_[11]||=e=>{h(),a(`toggleExpand`)}},[e.isExpanded?(n(),S(`svg`,Xe,[..._[20]||=[g(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m14 10l7-7m-1 7h-6V4M3 21l7-7m-6 0h6v6`},null,-1)]])):(n(),S(`svg`,Ze,[..._[21]||=[g(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M15 3h6v6m0-6l-7 7M3 21l7-7m-1 7H3v-6`},null,-1)]])),g(`span`,null,x(e.isExpanded?b(C)(`common.collapse`)||`Collapse`:b(C)(`common.expand`)||`Expand`),1)])):u(``,!0),e.isPreviewable&&i.showPreviewButton?(n(),S(`button`,{key:2,type:`button`,role:`menuitem`,class:`flex items-center gap-2 w-full py-1.5 px-2 rounded text-xs text-[var(--code-action-fg)] cursor-pointer whitespace-nowrap hover:bg-[var(--code-action-hover-bg)] hover:text-[var(--code-action-hover-fg)] transition-colors`,onClick:_[12]||=e=>{h(),a(`preview`)}},[_[22]||=g(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[g(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[g(`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 19.876 0a1 1 0 0 1 0 .696a10.75 10.75 0 0 1-19.876 0`}),g(`circle`,{cx:`12`,cy:`12`,r:`3`})])],-1),g(`span`,null,x(b(C)(`common.preview`)||`Preview`),1)])):u(``,!0)],512)):u(``,!0)]),_:1})])):u(``,!0)])])])):u(``,!0),r(g(`div`,{class:ie([`code-block-shell-content`,{"code-block-shell-content--collapsed":e.isCollapsed}])},[se(t.$slots,`default`)],2),[[f,!!e.stream||!e.loading]]),r(g(`div`,Qe,[se(t.$slots,`loading`,{},()=>[_[23]||=g(`div`,{class:`loading-skeleton`},[g(`div`,{class:`skeleton-line`}),g(`div`,{class:`skeleton-line`}),g(`div`,{class:`skeleton-line short`})],-1)])],512),[[f,!e.stream&&e.loading]]),g(`span`,$e,x(e.copyText?b(C)(`common.copied`)||`Copied`:``),1)],64))}}),tt={class:`html-preview-frame__header`},nt={class:`html-preview-frame__title`},rt={class:`html-preview-frame__label`},z=[`sandbox`,`srcdoc`],it=xe(C({__name:`HtmlPreviewFrame`,props:{code:{},isDark:{type:Boolean},htmlPreviewAllowScripts:{type:Boolean},htmlPreviewSandbox:{},onClose:{type:Function},title:{}},setup(e){let t=e,{t:r}=Se(),a=v(()=>{let e=t.code||``,n=e.trim().toLowerCase();return n.startsWith(`\n\n \n \n \n \n \n \n ${e}\n \n`}),s=v(()=>{return e=t.htmlPreviewSandbox,n=t.htmlPreviewAllowScripts,typeof e==`string`?e:e===void 0&&!0===n?`allow-scripts`:``;var e,n});function c(e){var n;e.key!==`Escape`&&e.key!==`Esc`||(n=t.onClose)==null||n.call(t)}return i(()=>{typeof window<`u`&&window.addEventListener(`keydown`,c)}),o(()=>{typeof window<`u`&&window.removeEventListener(`keydown`,c)}),(e,i)=>(n(),h(m,{to:`body`},[g(`div`,{class:ie([`markstream-vue`,{dark:t.isDark}])},[g(`div`,{class:`html-preview-frame__backdrop`,onClick:i[2]||=e=>t.onClose?.call(t)},[g(`div`,{class:`html-preview-frame`,onClick:i[1]||=ae(()=>{},[`stop`])},[g(`div`,tt,[g(`div`,nt,[i[3]||=g(`span`,{class:`html-preview-frame__dot`},null,-1),g(`span`,rt,x(t.title||b(r)(`common.preview`)||`Preview`),1)]),g(`button`,{type:`button`,class:`html-preview-frame__close`,onClick:i[0]||=e=>t.onClose?.call(t)},` × `)]),g(`iframe`,{class:`html-preview-frame__iframe`,sandbox:s.value,referrerpolicy:`no-referrer`,srcdoc:a.value},null,8,z)])])],2)]))}}),[[`__scopeId`,`data-v-24e66176`]]),at=[`data-markstream-enhanced`,`data-markstream-enhancement-state`,`data-markstream-code-block-state`,`data-markstream-pending`,`data-markstream-viewport-pending`],ot={class:`code-header-main`},st=[`innerHTML`],ct={class:`code-header-copy`},lt={class:`code-header-title`},ut={key:0,class:`code-header-caption`},dt=[`data-markstream-host-hidden`],ft=`__markstreamMonacoPassiveTouchState__`,pt=xe(C({__name:`CodeBlockNode`,props:{node:{},isDark:{type:Boolean,default:!1},loading:{type:Boolean,default:!0},stream:{type:Boolean,default:!0},theme:{},darkTheme:{default:`vitesse-dark`},lightTheme:{default:`vitesse-light`},isShowPreview:{type:Boolean,default:!0},monacoOptions:{},enableFontSizeControl:{type:Boolean,default:!0},minWidth:{default:void 0},maxWidth:{default:void 0},themes:{},showPreviewButton:{type:Boolean,default:!0},showCollapseButton:{type:Boolean,default:!0},showFontSizeButtons:{type:Boolean,default:!0},showTooltips:{type:Boolean},htmlPreviewAllowScripts:{type:Boolean},htmlPreviewSandbox:{},customId:{},showHeader:{type:Boolean,default:!0},showCopyButton:{type:Boolean,default:!0},showExpandButton:{type:Boolean,default:!0},estimatedHeightPx:{},estimatedContentHeightPx:{},estimatedDiffInline:{type:Boolean}},emits:[`previewCode`,`copy`],setup(d,{emit:p}){let m=d,te=p,ae=l(),C=a(ge,null),ce=a(`markstreamHostScrollManaged`,null),ue=a(_e,void 0),xe=v(()=>Ce(m,ae)),Ee=new Set;function Pe(e){return M(this,null,function*(){if(typeof window>`u`)return yield e();let t=window.Element?.prototype,n=t?.addEventListener;if(!t||!n)return yield e();let r=function(){let e=window,t=e[ft];if(t)return t;let n={depth:0,original:null};return e[ft]=n,n}(),i=null;try{r.depth===0&&(r.original=n,t.addEventListener=function(e,t,i){let a=r.original??n;return e===`touchstart`&&function(e,t){if(!e)return!1;let n=e;return!(typeof n.closest!=`function`||!n.closest(`.monaco-editor, .monaco-diff-editor`)||t&&typeof t==`object`&&`passive`in t)}(this,i)?a.call(this,e,t,function(e){return e==null?{passive:!0}:typeof e==`boolean`?{capture:e,passive:!0}:typeof e==`object`?`passive`in e?e:j(A({},e),{passive:!0}):{passive:!0}}(i)):a.call(this,e,t,i)}),r.depth++;let e=!1;i=()=>{e||(e=!0,Ee.delete(i),r.depth=Math.max(0,r.depth-1),r.depth===0&&r.original&&t.addEventListener!==r.original&&(t.addEventListener=r.original,r.original=null))},Ee.add(i)}catch{return yield e()}try{return yield e()}finally{i?.()}})}let Fe=c(),Ie=v(()=>{let e=Fe?.vnode.props;return!(!e||!e.onPreviewCode&&!e[`onPreview-code`])}),{t:Le}=Se(),T=y(null),E=y(null),ze=y(!1),D=y(Xr(m.node.language,m.node.code,Jr())),Be=v(()=>ye(D.value)),O=v(()=>Be.value===`plaintext`?`text`:Be.value),Ve=v(()=>Be.value===`plaintext`),k=y(!1),N=y(!1),P=y(!1),F=y(!1),I=y(!1),He=y(!1),L=!1,Ue=null,We=null,Ge=null,Ke=0,qe=!1,Je=``,Ye=y(null),R=y(null),Xe=null,Ze=0,Qe=!1,$e=ke(),tt=Ne(),nt=Me(),rt=re(null),z=y(typeof window>`u`||!nt.value),pt=c()?.vnode.el?.textContent??``,mt=y(!(typeof window<`u`&&String(m.node.code??``).length>0&&pt.includes(String(m.node.code))));i(()=>{mt.value=!0}),typeof window<`u`&&t([()=>E.value,nt],([e,t],n,r)=>{var i;if((i=rt.value)==null||i.destroy(),rt.value=null,!t||z.value)return void(z.value=!0);if(!e)return void(z.value=!1);let a=!0,o=tt?.value.heavyBlockMargin??tt?.value.rootMargin??`0px`,s=$e(e,{rootMargin:o,allowIdle:!1});rt.value=s,z.value=z.value||s.isVisible.value,s.whenVisible.then(()=>{a&&rt.value===s&&(z.value=!0)}).catch(()=>{}),r(()=>{a=!1,s.destroy(),rt.value===s&&(rt.value=null)})},{immediate:!0}),_(()=>{var e;L=!0;for(let e of Array.from(Ee))e();(function(){let e=Je;C&&e&&(Je=``,C.markSettled(e))})(),(e=rt.value)==null||e.destroy(),rt.value=null});let B=null,ht=null,gt=()=>{},_t=()=>{},vt=()=>null,V=()=>({getModel:()=>({getLineCount:()=>1}),getOption:()=>14,updateOptions:()=>{}}),H=()=>({getModel:()=>({getLineCount:()=>1}),getOption:()=>14,updateOptions:()=>{}}),yt=()=>{},bt=()=>{},xt=()=>{},St=null,Ct=null,wt=null,Tt=null,Et=()=>String(m.node.language??`plaintext`),Dt=()=>M(null,null,function*(){}),Ot=!1,kt=null,At=[],jt=[],Mt=null,U=v(()=>he(m.node)),Nt=y({removed:0,added:0}),Pt=v(()=>`-${Nt.value.removed} +${Nt.value.added}`),Ft=Object.freeze(j(A({},de),{enabled:!1,revealLineCount:0}));function It(e){var t;return je(e,((t=E.value)?.getBoundingClientRect)?.call(t).width||E.value?.clientWidth||(typeof window>`u`?0:window.innerWidth))}function Lt(e,t){return{original:Rt(e),updated:Rt(t)}}function Rt(e){return String(e??``).replace(/\r\n$|\n$|\r$/,``)}function zt(e){return String(e?.message??e).includes(`no diff result available`)}function Bt(){if(!Vr())try{let e=xt();e&&typeof e.catch==`function`&&e.catch(e=>{zt(e)})}catch(e){zt(e)}}let W=v(()=>{var e,t;let n=m.monacoOptions?A({},m.monacoOptions):{};if(!U.value)return A({lineDecorationsWidth:0,lineNumbersMinChars:2,glyphMargin:!1},n);let r=n.diffHideUnchangedRegions===void 0?A({},de):Te(n.diffHideUnchangedRegions),i=n.hideUnchangedRegions===void 0?void 0:Te(n.hideUnchangedRegions),a=!1!==m.stream&&!1!==m.loading,o=a?A({},Ft):r,s=a?A({},Ft):i,c=function(e){return e.diffWordWrap===void 0?`off`:e.diffWordWrap}(n),l=A({},n.experimental??{}),u=n.diffUnchangedRegionStyle??`line-info`,d=function(e){return A(j(A({},e.scrollbar&&typeof e.scrollbar==`object`?e.scrollbar:{}),{verticalScrollbarSize:0,horizontalScrollbarSize:0}),It(e)?{horizontal:`hidden`}:{})}(n);return j(A(j(A(A({},{maxComputationTime:0,diffAlgorithm:`legacy`,ignoreTrimWhitespace:!1,renderIndicators:!0,diffUpdateThrottleMs:120,renderLineHighlight:`none`,renderLineHighlightOnlyWhenFocus:!0,selectionHighlight:!1,occurrencesHighlight:`off`,matchBrackets:`never`,lineDecorationsWidth:4,lineNumbersMinChars:2,glyphMargin:!1,padding:{top:0,bottom:0},minimap:{enabled:!1},renderOverviewRuler:!1,overviewRulerBorder:!1,hideCursorInOverviewRuler:!0,scrollBeyondLastLine:!1,diffWordWrap:c,renderSideBySide:(e=n.renderSideBySide)==null||e,diffHideUnchangedRegions:o,useInlineViewWhenSpaceIsLimited:(t=n.useInlineViewWhenSpaceIsLimited)!=null&&t,diffLineStyle:`background`,diffAppearance:`auto`,diffUnchangedRegionStyle:u,diffHunkActionsOnHover:!1,experimental:l}),n),{experimental:l}),s===void 0?{}:{hideUnchangedRegions:s}),{diffHideUnchangedRegions:o,diffWordWrap:c,scrollbar:d})}),Vt=v(()=>(m.theme===void 0?Ci(m.darkTheme,m.lightTheme):!xi(m.theme))?function(e){if(e&&typeof e==`object`&&e.colors?.[`editor.background`]){let t=yr(e.colors[`editor.background`]);if(t!=null)return t<128}let t=(Si(e)??``).toLowerCase();return t?[`dark`,`night`,`moon`,`black`,`dracula`,`mocha`,`frappe`,`macchiato`,`palenight`,`ocean`,`poimandres`,`monokai`,`laserwave`,`tokyo`,`slack-dark`,`rose-pine`,`github-dark`,`material-theme`,`one-dark`,`catppuccin-mocha`,`catppuccin-frappe`,`catppuccin-macchiato`].some(e=>t.includes(e))&&![`light`,`latte`,`dawn`,`lotus`].some(e=>t.includes(e)):!!m.isDark}(wi()):!!m.isDark),Ht=v(()=>{if(!U.value)return Vt.value?`dark`:`light`;let e=W.value?.diffAppearance;return e===`light`||e===`dark`?e:Vt.value?`dark`:`light`}),Ut=v(()=>U.value?Ht.value===`dark`:Vt.value),Wt=v(()=>U.value?`diff`:`single`),Gt=y(Wt.value),G=y(!1),K=y(!1),Kt=y(!1),q=y(!1),qt=y(null),Jt=y(0),Yt=y(0),Xt=y(!1),Zt=null,Qt=!1,$t=null,en=!1,tn=v(()=>{if(U.value){let e=W.value?.diffWordWrap;if(e===`inherit`){let e=m.monacoOptions?.wordWrap;return e==null||String(e)!==`off`}return e===`on`}let e=m.monacoOptions?.wordWrap;return e==null||String(e)!==`off`}),nn=v(()=>!!U.value&&It(W.value??{})),rn=v(()=>{let e=m.monacoOptions?.diffHideUnchangedRegions;return e===void 0?A({},de):Te(e)});function an(e){return!0===ce?.value||!!e&&(!!e.closest(`[data-markstream-virtual-timeline="1"], .markstream-virtual-timeline`)||!!e.closest(`.vue-recycle-scroller, [data-virtualizer], [data-virtual-scroll-root]`))}let on=v(()=>an(E.value)),sn=v(()=>!(G.value||!q.value&&K.value)),cn=v(()=>sn.value),ln=v(()=>sn.value&&!Kt.value),un=v(()=>!G.value&&!q.value&&sn.value),dn=v(()=>K.value&&!G.value?`ready`:q.value?`fallback`:`pending`),fn=y(!1),pn=v(()=>Rt(m.node.code)),mn=v(()=>U.value?!0===m.node.diff?m.node:j(A({},m.node),{diff:!0}):pn.value===m.node.code?m.node:j(A({},m.node),{code:pn.value})),J=y(typeof m.monacoOptions?.fontSize==`number`?m.monacoOptions.fontSize:NaN),Y=y(J.value),hn=y(null),gn=y(null),_n=y(null),vn=v(()=>{let e=J.value,t=Y.value;return typeof e==`number`&&Number.isFinite(e)&&e>0&&typeof t==`number`&&Number.isFinite(t)&&t>0}),yn=v(()=>{let e=hn.value;if(typeof e==`number`&&Number.isFinite(e)&&e>0)return e;let t=m.monacoOptions?.fontSize;if(typeof t==`number`&&Number.isFinite(t)&&t>0)return t;let n=Y.value;return typeof n==`number`&&Number.isFinite(n)&&n>0?n:12}),bn=v(()=>{let e=gn.value;if(typeof e==`number`&&Number.isFinite(e)&&e>0)return e;let t=m.monacoOptions?.lineHeight;return typeof t==`number`&&Number.isFinite(t)&&t>0?t:yn.value===12?18:Math.max(12,Math.round(1.5*yn.value))}),xn=v(()=>bn.value),Sn=v(()=>{let e=m.monacoOptions?.tabSize;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:4}),Cn=v(()=>{let e=m.monacoOptions?.padding,t=U.value?0:8;return{top:typeof e?.top==`number`&&Number.isFinite(e.top)&&e.top>=0?e.top:t,bottom:typeof e?.bottom==`number`&&Number.isFinite(e.bottom)&&e.bottom>=0?e.bottom:t}}),wn=v(()=>{let e=m.estimatedContentHeightPx;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:null});function Tn(e){if(e==null)return null;let t=Math.ceil(e);return!Number.isFinite(t)||t<=0?null:Math.min(t,Math.ceil(Kr()))}function En(){return!U.value&&!1!==m.stream&&!1!==m.loading}let Dn=v(()=>U.value?null:wn.value==null||En()?Math.ceil((e=>{let t=String(e??``);return t?Math.max(1,t.split(/\r\n|\n|\r/).length):1})(pn.value)*xn.value+1):null),On=v(()=>{if(U.value)return null;let e=wn.value;return e==null||En()?Tn(Dn.value):Tn(e)}),kn=v(()=>{let e=m.estimatedHeightPx;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:null}),An=y(null);function jn(){let e=An.value;return typeof e==`number`&&Number.isFinite(e)&&e>0?Math.round(e):null}let Mn=v(()=>jn()??(!U.value&&Xt.value?null:sn.value||!K.value?On.value:null));function Nn(e){let t=e?`hsl(152 42% 60%)`:`var(--diff-added-fg)`,n=e?`hsl(0 58% 58%)`:`var(--diff-removed-fg)`,r=e?`hsl(152 42% 60% / 0.18)`:`var(--diff-added-bg)`,i=e?`hsl(0 58% 58% / 0.18)`:`var(--diff-removed-bg)`,a=e?`hsl(152 42% 60% / 0.28)`:`var(--diff-added-inline-bg)`,o=e?`hsl(0 58% 58% / 0.28)`:`var(--diff-removed-inline-bg)`,s=`linear-gradient(90deg, ${t} 0 4px, transparent 4px 100%)`,c=`linear-gradient(90deg, ${n} 0 4px, transparent 4px 100%)`,l=e?`hsl(0 0% 7% / 0.98)`:`hsl(var(--ms-muted) / 0.45)`,u=`var(--markstream-code-layout-character-width, 1ch)`,d=`calc(${u} + ${u})`,f=`calc(${u} + ${u} + ${u} + ${u} + ${u} + 2px)`,p=`calc(${f} + ${u})`;return{"--markstream-diff-line-number-bg":l,"--markstream-diff-added-fg":t,"--markstream-diff-removed-fg":n,"--markstream-diff-added-line":r,"--markstream-diff-removed-line":i,"--markstream-diff-added-line-fill":r,"--markstream-diff-removed-line-fill":i,"--markstream-diff-added-gutter":s,"--markstream-diff-removed-gutter":c,"--markstream-diff-added-inline":a,"--markstream-diff-removed-inline":o,"--stream-monaco-added-fg":t,"--stream-monaco-removed-fg":n,"--stream-monaco-added-line":r,"--stream-monaco-removed-line":i,"--stream-monaco-added-line-fill":r,"--stream-monaco-removed-line-fill":i,"--stream-monaco-added-gutter":s,"--stream-monaco-removed-gutter":c,"--stream-monaco-added-inline":a,"--stream-monaco-removed-inline":o,"--stream-monaco-gutter-marker-width":`4px`,"--stream-monaco-gutter-gap":`1ch`,"--stream-monaco-line-number-left":`0px`,"--stream-monaco-line-number-width":d,"--stream-monaco-line-number-padding-left":d,"--stream-monaco-line-number-padding-right":u,"--stream-monaco-line-number-separator-width":`2px`,"--stream-monaco-layout-character-width":u,"--stream-monaco-line-number-box-width":f,"--stream-monaco-line-number-gap-to-code":u,"--stream-monaco-line-number-bg":l,"--stream-monaco-diff-code-gap":u,"--stream-monaco-diff-code-padding":`0px`,"--stream-monaco-original-margin-width":p,"--stream-monaco-original-scrollable-left":p,"--stream-monaco-original-scrollable-width":`calc(100% - ${p})`,"--stream-monaco-modified-margin-width":p,"--stream-monaco-modified-scrollable-left":p,"--stream-monaco-modified-scrollable-width":`calc(100% - ${p})`}}let Pn=v(()=>{let e=m.monacoOptions?.fontFamily,t=Tn(wn.value),n=Tn(Dn.value),r=En(),i=A(A({fontSize:`${yn.value}px`,lineHeight:`${xn.value}px`,tabSize:Sn.value,boxSizing:`border-box`,maxHeight:`${Kr()}px`,overflow:`auto`,paddingTop:`${Cn.value.top}px`,paddingBottom:`${Cn.value.bottom}px`},U.value||t==null||r?U.value||n==null?{}:{minHeight:`${n}px`}:{height:`${t}px`,minHeight:`${t}px`}),typeof e==`string`&&e.trim()?{"--markstream-code-font-family":e.trim()}:{});return i[`--markstream-pre-line-number-top`]=`${Cn.value.top}px`,i[`--markstream-code-padding-left`]=`calc(2ch + 2ch + 1ch + 2px + 1ch)`,i[`--markstream-pre-line-number-left`]=`0px`,i[`--markstream-pre-line-number-width`]=`2ch`,i[`--markstream-pre-line-number-padding-left`]=`2ch`,i[`--markstream-pre-line-number-padding-right`]=`1ch`,i[`--markstream-pre-line-number-separator-width`]=`2px`,U.value&&(i[`--markstream-pre-diff-line-height`]=`${xn.value}px`,i[`--markstream-pre-diff-pane-bottom-padding`]=(nn.value,`0px`),Object.assign(i,Nn(Ut.value))),i}),Fn=v(()=>Mn.value!=null&&(!K.value||jn()!=null)),In=v(()=>{let e=Mn.value;if(e==null)return null;if(U.value)return Math.ceil(e);let t=kn.value,n=wn.value;if(t==null||n==null)return Math.ceil(e);let r=Math.max(0,Math.ceil(t)-Math.ceil(n));return Math.ceil(e+r)}),Ln=v(()=>{if(U.value&&sn.value)return{};let e=Mn.value;return Fn.value&&e!=null?{minHeight:`${e}px`}:{}});function Rn(){var e,t,n,r;let i=E.value?.querySelector(`pre.code-pre-fallback`),a=H(),o=i?.scrollTop??0;(t=(e=(a?.getOriginalEditor)?.call(a))?.setScrollTop)==null||t.call(e,o),(r=(n=(a?.getModifiedEditor)?.call(a))?.setScrollTop)==null||r.call(n,o)}function zn(){return M(this,null,function*(){return U.value?(Sr()??Bn(),Z(!0),Rn(),Q(),Kt.value=!0,yield e(),Z(!0),yield Un(),Z(!0),!(St&&!(yield St())||(br(),Bn(),Z(!0),K.value=!0,yield e(),Bn(),Z(!0),br(),Q(),$(),0))):!(St&&!(yield St())||(K.value=!0,yield e(),X(!1),Z(),0))})}function Bn(){let e=T.value;return e&&Lr(e)?(Q(),X({preferModelDiffHeight:!0}),Mr(),Number.parseFloat(e.style.height||``)||null):Sr()}function Vn(){if(!U.value||!I.value||!K.value||sn.value)return!1;let e=T.value;return!!e&&vr(e)}function Hn(e,t=!1,n={}){let r=Math.ceil(e),i=jn();if(i==null)return r;let a=!0===n.allowBelowEstimatedFloor||Vn();return r>=i||a?((t||a)&&I.value&&(An.value=null),r):i}function Un(){return new Promise(e=>{let t=!1,n=null,r=null,i=()=>{t||(t=!0,r!=null&&globalThis.clearTimeout(r),n!=null&&le(n),e())};r=globalThis.setTimeout(i,50),n=w(i)})}function Wn(){try{let e=T.value;if(!e)return null;let t=e.querySelector(`.view-lines .view-line`);if(t){let e=Math.ceil(t.getBoundingClientRect().height);if(e>0)return e}}catch{}return null}function Gn(){var e;try{let t=U.value?((e=H())?.getModifiedEditor)?.call(e)??H():V(),n=vt()?.EditorOption?.fontInfo;if(t&&n!=null){let e=t.getOption?.call(t,n)?.fontSize;if(typeof e==`number`&&Number.isFinite(e)&&e>0)return e}}catch{}try{let e=T.value;if(e){let t=e.querySelector(`.view-lines .view-line`);if(t)try{if(typeof window<`u`&&typeof window.getComputedStyle==`function`){let e=window.getComputedStyle(t).fontSize,n=e&&e.match(/^(\d+(?:\.\d+)?)/);if(n)return Number.parseFloat(n[1])}}catch{}}}catch{}return null}function Kn(e){try{let t=vt()?.EditorOption?.lineHeight;if(t!=null){let n=(e?.getOption)?.call(e,t);if(typeof n==`number`&&n>0)return n}}catch{}let t=Wn();if(t&&t>0)return t;let n=Number.isFinite(Y.value)&&Y.value>0?Y.value:14;return Math.max(12,Math.round(1.35*n))}function qn(e){try{let t=vt()?.EditorOption?.padding;if(t!=null){let n=(e?.getOption)?.call(e,t);if(typeof n?.top==`number`||typeof n?.bottom==`number`)return(typeof n?.top==`number`&&Number.isFinite(n.top)?Math.max(0,n.top):0)+(typeof n?.bottom==`number`&&Number.isFinite(n.bottom)?Math.max(0,n.bottom):0)}}catch{}let t=W.value?.padding;return typeof t?.top==`number`||typeof t?.bottom==`number`?(typeof t?.top==`number`&&Number.isFinite(t.top)?Math.max(0,t.top):0)+(typeof t?.bottom==`number`&&Number.isFinite(t.bottom)?Math.max(0,t.bottom):0):U.value?24:0}function Jn(e,t){return typeof e!=`number`||typeof t!=`number`||e<1||t=i&&o>=i&&n[a]===r[o];)a--,o--;let s=Math.max(0,a-i+1),c=Math.max(0,o-i+1);if(s===0||c===0)return{removed:s,added:c};if((s+1)*(c+1)<=15e5){let e=c+1,t=new Uint32Array(e),a=new Uint32Array(e);for(let e=s-1;e>=0;e--){a[c]=0;for(let o=c-1;o>=0;o--)a[o]=n[i+e]===r[i+o]?t[o+1]+1:Math.max(t[o],a[o+1]);let o=t;t=a,a=o}let o=t[0];return{removed:s-o,added:c-o}}return{removed:s,added:c}}function Zn(e){if(!function(){return!(!U.value||!nn.value)&&(m.node.originalCode!=null||m.node.updatedCode!=null?Xn(String(m.node.originalCode??``),String(m.node.updatedCode??``)).removed>0:String(m.node.code??``).split(/\r\n|\n|\r/).some(e=>function(e){return e.startsWith(`-`)&&!e.startsWith(`---`)}(e)))}())return!0;let t=e?.querySelector(`.stream-monaco-fallback-inline-delete-line`);if((t?.textContent)?.trim()&&(t.hasAttribute(`data-stream-monaco-colorize-signature`)||t.querySelector(`[class*="mtk"]`)))return!0;let n=e?.querySelector([`.editor.modified .view-zones .view-lines.line-delete`,`.editor.modified .view-lines .view-line.line-delete`,`.editor.original .view-zones .view-lines.line-delete`,`.editor.original .view-lines .view-line.line-delete`].join(`,`));if(!n||!n.matches(`.view-line`)&&!n.querySelector(`.view-line`))return!1;let r=n.getBoundingClientRect(),i=e?.getBoundingClientRect();return i?.width===0&&i.height===0||r.width>0&&r.height>0}function Qn(e,t){if(!e)return!1;let n=t.added<=0||!!e.querySelector([`.line-insert`,`.gutter-insert`,`.stream-monaco-fallback-line-insert`,`.stream-monaco-fallback-gutter-insert`,`.stream-monaco-fallback-line-number-insert`].join(`,`)),r=t.removed<=0||!!e.querySelector([`.line-delete`,`.gutter-delete`,`.inline-deleted-margin-view-zone`,`.stream-monaco-fallback-line-delete`,`.stream-monaco-fallback-gutter-delete`,`.stream-monaco-fallback-line-number-delete`,`.stream-monaco-fallback-inline-delete-line`,`.stream-monaco-fallback-inline-delete-margin`].join(`,`));return n&&r}function $n(e,t){let n=e?.querySelector(t);return n instanceof HTMLElement?typeof window>`u`||typeof window.getComputedStyle!=`function`?n:window.getComputedStyle(n).display===`none`?null:n:null}function er(e,t){return $n(e,t)!==null}function tr(e,t){if(!e)return!1;let n=t.added<=0||[`.gutter-insert`,`.stream-monaco-fallback-gutter-insert`].some(t=>er(e,t)),r=t.removed<=0||[`.gutter-delete`,`.inline-deleted-margin-view-zone`,`.stream-monaco-fallback-gutter-delete`,`.stream-monaco-fallback-inline-delete-margin`].some(t=>er(e,t));return n&&r}function nr(e){let t=Array.from(e?.querySelectorAll(`.monaco-diff-editor .margin-view-overlays .line-numbers`)??[]);return!!t.length&&t.some(e=>{if(!e.textContent?.trim())return!1;if(typeof window>`u`||typeof window.getComputedStyle!=`function`)return!0;let t=window.getComputedStyle(e);if(t.display===`none`)return!1;let n=e.getBoundingClientRect();if(n.width<=0&&n.height<=0)return!0;let r=Number.parseFloat(t.width||``),i=Number.parseFloat(t.paddingLeft||``),a=Number.parseFloat(t.paddingRight||``);return Math.max(n.width,Number.isFinite(r)?r:0)>=8&&Number.isFinite(i)&&i>=1&&Number.isFinite(a)&&a>=1})}function rr(e){let t=$n(e,`.monaco-diff-editor .view-lines .view-line`);if(!t)return!1;if(!cr())return!0;let n=$n(e,`.monaco-diff-editor .margin-view-overlays .line-numbers`);if(!n)return!1;if(typeof window>`u`||typeof window.getComputedStyle!=`function`)return!0;let r=t.getBoundingClientRect(),i=n.getBoundingClientRect();if(r.width<=0&&r.height<=0||i.width<=0&&i.height<=0)return!0;let a=r.left-i.right;return a>=0&&a<=32}function ir(e,t){return!nn.value||!(t||e?.querySelector([`.line-insert`,`.line-delete`,`.gutter-insert`,`.gutter-delete`,`.stream-monaco-line-number-insert`,`.stream-monaco-line-number-delete`,`.stream-monaco-line-insert-fill`,`.stream-monaco-line-delete-fill`,`.stream-monaco-fallback-line-insert`,`.stream-monaco-fallback-line-delete`,`.stream-monaco-fallback-inline-delete-line`].join(`,`)))||!!(e?.classList.contains(`stream-monaco-diff-inline-native-ready`)&&!e.classList.contains(`stream-monaco-diff-native-stale`))}function ar(e,t,n,r){let i=e?.querySelector(`.monaco-diff-editor .editor.${t}`);if(!i)return!1;let a=Array.from(i.querySelectorAll(`.margin-view-overlays .line-numbers.${n}`));if(!a.length)return!0;let o=Array.from(i.querySelectorAll(`.lines-content > .view-lines:not(.line-delete) > .view-line`));return!!o.length&&a.every(e=>{let t=e.getBoundingClientRect(),n=null;for(let e of o){let r=e.getBoundingClientRect(),i=Math.abs(r.top-t.top);(!n||i1.25||n.node.classList.contains(r)})}function or(e,t){if(!e)return!1;let n=t.added<=0||ar(e,`modified`,`stream-monaco-line-number-insert`,`stream-monaco-line-insert-fill`),r=t.removed<=0||(nn.value?!!e.classList.contains(`stream-monaco-diff-inline-native-ready`):ar(e,`original`,`stream-monaco-line-number-delete`,`stream-monaco-line-delete-fill`));return n&&r}function sr(e){if(Ve.value)return!0;if(!e)return!1;let t=Array.from(e.querySelectorAll(`.monaco-diff-editor .view-lines .view-line, .monaco-editor .view-lines .view-line`)).filter(e=>{if(!e.textContent?.trim())return!1;let t=e.getBoundingClientRect();return t.width>0||t.height>0});if(!t.length)return!1;let n=t.filter(e=>{var t;return t=e.textContent??``,/['"`{}()[\]:;=<>.,]|\/\/|\/\*|\b(?:async|await|class|const|enum|export|for|function|if|import|interface|let|return|switch|type|var|while)\b/.test(t.replace(/\u00A0/g,` `).trim())});return!n.length||n.filter(e=>Array.from(e.querySelectorAll(`span`)).filter(e=>e.textContent?.trim()).some(e=>String(e.className||``).split(/\s+/).some(e=>/^mtk\d+$/.test(e)&&e!==`mtk1`))).length>0}function cr(){return W.value?.lineNumbers!==`off`}function lr(){U.value?Nt.value=Xn(String(m.node.originalCode??``),String(m.node.updatedCode??``)):Nt.value={removed:0,added:0}}function ur(){if(U.value)try{let e=H(),t=(e?.getLineChanges)?.call(e);if(!Array.isArray(t))return void lr();let n=0,r=0;for(let e of t)n+=Jn(e.originalStartLineNumber,e.originalEndLineNumber),r+=Jn(e.modifiedStartLineNumber,e.modifiedEndLineNumber);Nt.value={removed:n,added:r}}catch{lr()}else Nt.value={removed:0,added:0}}function dr(){if(Number.isFinite(Y.value)&&Y.value>0&&Number.isFinite(J.value))return Y.value;let e=Gn();return typeof m.monacoOptions?.fontSize==`number`?(J.value=m.monacoOptions.fontSize,Y.value=m.monacoOptions.fontSize,Y.value):e&&e>0?(J.value=e,Y.value=e,e):(J.value=12,Y.value=12,12)}function fr(){let e=dr(),t=Math.min(36,e+1);Y.value=t}function pr(){let e=dr(),t=Math.max(10,e-1);Y.value=t}function mr(){dr(),Number.isFinite(J.value)&&(Y.value=J.value)}function hr(){var e,t,n,r,i;try{let a=U.value?H():null,o=U.value?a:V();if(!o)return null;if(a?.getOriginalEditor&&a?.getModifiedEditor){let i=a.getOriginalEditor?.call(a),o=a.getModifiedEditor?.call(a);(e=i?.layout)==null||e.call(i),(t=o?.layout)==null||t.call(o);let s=(i?.getContentHeight)?.call(i)||0,c=(o?.getContentHeight)?.call(o)||0,l=Math.max(s,c);if(l>0)return Math.ceil(l);let u=((n=(i?.getModel)?.call(i))?.getLineCount)?.call(n)||1,d=((r=(o?.getModel)?.call(o))?.getLineCount)?.call(r)||1,f=Math.max(u,d),p=Math.max(Kn(i),Kn(o)),m=Math.max(qn(i),qn(o));return Math.ceil(f*p+m+0)}if(o?.getContentHeight){(i=o?.layout)==null||i.call(o);let e=o.getContentHeight();if(e>0)return U.value||(Xt.value=!0),Math.ceil(e)}let s=(o?.getModel)?.call(o),c=1;s&&typeof s.getLineCount==`function`&&(c=s.getLineCount());let l=Kn(o);return Math.ceil(c*(l+1.5)+0)}catch{return null}}function gr(){var e;if(U.value)return!1;try{let t=((e=V())?.getContentHeight)?.call(e),n=typeof t==`number`&&Number.isFinite(t)&&t>0;return n&&(Xt.value=!0),n}catch{return!1}}function _r(e){if(typeof window>`u`)return null;try{let t=e.getBoundingClientRect(),n=window.getComputedStyle(e);if(n.display===`none`||n.visibility===`hidden`)return null;let r=e.querySelector(`diffs-container`);if(r instanceof HTMLElement){let e=r.getBoundingClientRect();if(e.height>0&&e.bottom>t.top)return Math.ceil(e.bottom-t.top)}let i=[`.editor.original .view-lines .view-line`,`.editor.modified .view-lines .view-line`,`.editor.original .view-zones > div`,`.editor.modified .view-zones > div`,`.editor.original .margin-view-zones > div`,`.editor.modified .margin-view-zones > div`,`.editor.original .diff-hidden-lines`,`.editor.modified .diff-hidden-lines`,`.stream-monaco-diff-unchanged-bridge`],a=0;for(let n of Array.from(e.querySelectorAll(i.join(`,`)))){if(!(n instanceof HTMLElement)||(n.parentElement?.classList.contains(`view-zones`)||n.parentElement?.classList.contains(`margin-view-zones`))&&!(n.textContent?.trim()||n.matches(`.line-delete, .line-insert, .cdr`)||n.querySelector(`.diff-hidden-lines, .stream-monaco-diff-unchanged-bridge, .line-delete, .line-insert, .cdr`)))continue;let e=window.getComputedStyle(n);if(e.display===`none`||e.visibility===`hidden`||Number.parseFloat(e.opacity||`1`)<=.01)continue;let r=n.getBoundingClientRect();r.height<=0||r.bottom<=t.top||(a=Math.max(a,r.bottom-t.top))}return a>0?Math.ceil(a):null}catch{return null}}function vr(e){if(typeof window>`u`)return!1;let t=e.getBoundingClientRect();if(t.width<=0||t.height<=0)return!1;let n=e.querySelectorAll(`.editor.modified .diff-hidden-lines, .editor.original .diff-hidden-lines, .stream-monaco-diff-unchanged-bridge`);for(let e of Array.from(n)){if(!(e instanceof HTMLElement))continue;let n=window.getComputedStyle(e);if(n.display===`none`||n.visibility===`hidden`||Number.parseFloat(n.opacity||`1`)<=.01)continue;let r=e.getBoundingClientRect();if(!(r.width<=0||r.height<=0||r.bottom<=t.top||r.top>=t.bottom))return!0}return!1}function yr(e){let t=String(e??``).trim(),n=t.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/i)?.[1];if(n){let e=n.length===3?n.split(``).map(e=>`${e}${e}`).join(``):n;return .2126*Number.parseInt(e.slice(0,2),16)+.7152*Number.parseInt(e.slice(2,4),16)+.0722*Number.parseInt(e.slice(4,6),16)}let r=t.match(/\d+(?:\.\d+)?/g);if(!r||r.length<3)return null;let[i,a,o]=r.slice(0,3).map(Number);return .2126*i+.7152*a+.0722*o}function br(){var e;if(xr())return;let t=Gn();t&&t>0&&(hn.value=t,Y.value=t,J.value=t);try{let t=Kn(U.value?((e=H())?.getModifiedEditor)?.call(e)??H():V());t&&t>0&&(gn.value=t)}catch{}try{let e=Wn();e&&e>0&&(gn.value=e)}catch{}}function xr(){return U.value&&cn.value}function Sr(){if(!U.value||!sn.value)return null;let e=T.value,t=E.value?.querySelector(`pre.code-pre-fallback`);if(!e||!t)return null;let n=Math.ceil(t.getBoundingClientRect().height);return!Number.isFinite(n)||n<=0?null:(e.style.height=`${n}px`,e.style.minHeight=`${n}px`,e.style.maxHeight=`${Math.ceil(Kr())}px`,e.style.overflow=`hidden`,n)}function Cr(){let e=T.value,t=E.value;if(!e||!t)return;let n=e,r=e.querySelector(`.monaco-editor`)||e,i=r.querySelector(`.monaco-editor-background`)||r,a=r.querySelector(`.view-lines`)||r,o=null,s=null,c=null;try{typeof window<`u`&&typeof window.getComputedStyle==`function`&&(o=window.getComputedStyle(r),s=i===r?o:window.getComputedStyle(i),c=a===r?o:window.getComputedStyle(a))}catch{o=null,s=null,c=null}let l=String(o?.getPropertyValue(`--vscode-editor-foreground`)??``).trim(),u=String(o?.getPropertyValue(`--vscode-editor-background`)??``).trim(),d=String(o?.getPropertyValue(`--vscode-editor-selectionBackground`)??o?.getPropertyValue(`--vscode-editor-hoverHighlightBackground`)??``).trim(),f=l||String(c?.color??o?.color??``).trim(),p=u||String(s?.backgroundColor??o?.backgroundColor??``).trim(),m=function(){var e;try{let t=U.value?((e=H())?.getModifiedEditor)?.call(e)??H():V(),n=vt()?.EditorOption?.fontInfo;if(t&&n!=null){let e=t.getOption?.call(t,n)?.typicalHalfwidthCharacterWidth;if(typeof e==`number`&&Number.isFinite(e)&&e>0)return e}}catch{}return null}();if(m!=null&&(_n.value=m),U.value){let e=(e,r)=>{r?(t.style.setProperty(e,r),n.style.setProperty(e,r)):(t.style.removeProperty(e),n.style.removeProperty(e))};for(let[n,r]of Object.entries(Nn(t.classList.contains(`is-dark`))))e(n,r);f?(t.style.setProperty(`--markstream-diff-editor-fg`,f),n.style.setProperty(`--vscode-editor-foreground`,f),n.style.setProperty(`--stream-monaco-editor-fg`,f)):(t.style.removeProperty(`--markstream-diff-editor-fg`),n.style.removeProperty(`--vscode-editor-foreground`),n.style.removeProperty(`--stream-monaco-editor-fg`)),p?(t.style.setProperty(`--markstream-diff-editor-bg`,p),t.style.setProperty(`--markstream-diff-panel-bg`,p),t.style.setProperty(`--markstream-diff-panel-bg-soft`,p),t.style.setProperty(`--markstream-diff-panel-bg-strong`,p),n.style.setProperty(`--vscode-editor-background`,p),n.style.setProperty(`--stream-monaco-editor-bg`,p),n.style.setProperty(`--stream-monaco-fixed-editor-bg`,p),n.style.setProperty(`--stream-monaco-panel-bg`,p),n.style.setProperty(`--stream-monaco-panel-bg-soft`,p),n.style.setProperty(`--stream-monaco-panel-bg-strong`,p),n.style.backgroundColor=p):(t.style.removeProperty(`--markstream-diff-editor-bg`),t.style.removeProperty(`--markstream-diff-panel-bg`),t.style.removeProperty(`--markstream-diff-panel-bg-soft`),t.style.removeProperty(`--markstream-diff-panel-bg-strong`),n.style.removeProperty(`--vscode-editor-background`),n.style.removeProperty(`--stream-monaco-editor-bg`),n.style.removeProperty(`--stream-monaco-fixed-editor-bg`),n.style.removeProperty(`--stream-monaco-panel-bg`),n.style.removeProperty(`--stream-monaco-panel-bg-soft`),n.style.removeProperty(`--stream-monaco-panel-bg-strong`),n.style.backgroundColor=``),d?n.style.setProperty(`--vscode-editor-selectionBackground`,d):n.style.removeProperty(`--vscode-editor-selectionBackground`);return}if(function(e,t,n){if(!Ve.value)return!1;let r=yr(e),i=yr(t);return n?r!=null&&r>170||i!=null&&i<110:r!=null&&r<85||i!=null&&i>190}(p,f,t.classList.contains(`is-dark`)))return n.style.removeProperty(`--vscode-editor-foreground`),n.style.removeProperty(`--vscode-editor-background`),void n.style.removeProperty(`--vscode-editor-selectionBackground`);f&&n.style.setProperty(`--vscode-editor-foreground`,f),p&&n.style.setProperty(`--vscode-editor-background`,p),d&&n.style.setProperty(`--vscode-editor-selectionBackground`,d)}let wr=0,Tr=0,Er=/auto|scroll|overlay/i;function Dr(e,t,n){if(typeof window>`u`||U.value||function(e){return on.value||an(e)}(e))return;let r=Math.ceil(n)-Math.ceil(t);if(Math.abs(r)<=1)return;let i=function(e){if(typeof window>`u`)return null;let t=e?.ownerDocument??document,n=t.scrollingElement||t.documentElement||t.body,r=e?.parentElement??null;for(;r&&r!==t.body&&r!==n;){let e=window.getComputedStyle(r),t=(e.overflowY||``).toLowerCase(),n=(e.overflow||``).toLowerCase();if(Er.test(t)||Er.test(n))return r;r=r.parentElement}return n}(e);if(!i)return;let a=e.ownerDocument??document,o=i===a.body||i===a.documentElement||i===a.scrollingElement,s=o?0:i.getBoundingClientRect().top;e.getBoundingClientRect().top-s>=0||(o&&typeof window.scrollBy==`function`?window.scrollBy(0,r):i.scrollTop+=r)}function Or(){try{let e=T.value;if(!e)return;let t=e.getBoundingClientRect().height,n=hr();if(n!=null&&n>0){let r=Hn(n,!0,{allowBelowEstimatedFloor:!U.value&&I.value&&gr()}),i=jn();e.style.minHeight=i==null?`0px`:`${i}px`,e.style.height=`${r}px`,e.style.maxHeight=`none`,e.style.overflow=`visible`,Dr(e,t,r);return}let r=jn();r!=null&&(e.style.minHeight=`${r}px`,e.style.height=`${r}px`,e.style.maxHeight=`none`,e.style.overflow=`visible`,Dr(e,t,r))}catch{}}function kr(){for(var e,t;At.length>0;)try{(t=(e=At.pop())?.dispose)==null||t.call(e)}catch{}Ue!=null&&(le(Ue),Ue=null),We!=null&&(le(We),We=null),Ge!=null&&(le(Ge),Ge=null),Ke=0,qe=!1}function Ar(){for(var e;jt.length>0;)try{(e=jt.pop())==null||e()}catch{}}function X(e=!1){N.value||(k.value?Or():function(e={}){try{let t=T.value;if(!t)return;let n=t.getBoundingClientRect().height,r=Kr(),i=Math.ceil(t.getBoundingClientRect?.call(t).height||0),a=Number.parseFloat(t.style.height||``),o=i>0?i:Number.isFinite(a)&&a>0?Math.ceil(a):0,s=U.value?function(){var e,t;if(Vr())return null;try{let n=H(),r=(n?.getOriginalEditor)?.call(n),i=(n?.getModifiedEditor)?.call(n);if(!r||!i)return null;let a=((e=r.getModel?.call(r))?.getLineCount)?.call(e)||1,o=((t=i.getModel?.call(i))?.getLineCount)?.call(t)||1,s=Math.max(a,o),c=Math.max(Kn(r),Kn(i)),l=Math.max(qn(r),qn(i)),u=Math.max(r.getContentHeight?.call(r)??0,i.getContentHeight?.call(i)??0);return Math.ceil(Math.max(u,s*c+l+0))}catch{return null}}():null,c=U.value&&vr(t),l=U.value&&Lr(t),u=U.value&&t.classList.contains(`stream-monaco-diff-native-stale`),d=c&&I.value&&K.value&&!sn.value;if(c||(R.value=null),Ze>0&&(Ze--,Ye.value!=null))return void Dr(t,n,Nr(t,Ye.value,r,{allowBelowEstimatedFloor:d,preserveScrollableOverflow:Fr(t)}));if(U.value&&!l&&!c&&sn.value){let e=Sr();if(e!=null){let i=Nr(t,e,r,{allowBelowEstimatedFloor:!0});Z(!0),Dr(t,n,i);return}}let f=U.value&&!0===e.preferModelDiffHeight,p=U.value?_r(t):null,h=p,g=!U.value&&I.value&&gr(),_=U.value&&!1!==m.loading&&(h!=null||s!=null&&i>0&&s0&&s0&&s0?o:null:s;else v=hr();if(U.value&&!1===m.loading&&u&&!d&&v!=null&&s!=null&&(v=Math.min(v,s)),U.value&&v!=null&&o>0&&(!1!==m.loading||!1===m.loading&&u&&!d||!0===e.holdCurrentDiffHeight&&!d)&&(v=Math.max(v,o)),v!=null&&v>0){let e=c&&R.value!=null,a=c&&i>0&&i=r-1,o=Nr(t,e?Math.max(R.value,v):a?i:v,r,{clearEstimatedFloor:!0,allowBelowEstimatedFloor:d||g||_,preserveScrollableOverflow:Fr(t)});c&&o0?s:0);if(te>0){let e=c&&R.value!=null,a=c&&i>0&&i=r-1,o=Nr(t,e?Math.max(R.value,te):a?i:te,r,{allowBelowEstimatedFloor:d});c&&o0?Dr(t,n,Nr(t,b,r,{allowBelowEstimatedFloor:d})):U.value||Dr(t,n,Nr(t,r,r))}catch{}}(typeof e==`object`?e:{}))}function jr(){wr=0,Tr=0}function Z(e=!1){if(N.value)return;let t=T.value;if(!t)return;let n=U.value?H():V();if(n&&typeof n.layout==`function`)try{let r=t.getBoundingClientRect?.call(t),i=Math.ceil((r?.width??0)||t.clientWidth||0),a=Math.ceil((r?.height??0)||t.clientHeight||Number.parseFloat(t.style.height||``)||0);if(i>0&&a>0){if(!e&&i===wr&&a===Tr)return;wr=i,Tr=a,n.layout({width:i,height:a})}else jr(),n.layout()}catch{}}function Q(){if(!U.value)return void Ar();let e=T.value;if(!e)return void Ar();let t=e.querySelector(`.monaco-diff-editor`);if(!t||t.classList.contains(`side-by-side`))return void Ar();let n=Array.from(t.querySelectorAll(`.editor.original .diff-hidden-lines`)),r=Array.from(t.querySelectorAll(`.editor.modified .diff-hidden-lines`)),i=Math.min(n.length,r.length);for(let e=0;e div:first-child`),a=t.querySelector(`.center`);if(!n||!i||!a||a.querySelector(`.markstream-inline-fold-proxy`))continue;let o=document.createElement(`button`);o.type=`button`,o.className=`markstream-inline-fold-proxy`,o.dataset.markstreamInlineFoldProxy=`true`;let s=n.getAttribute(`title`)||`Show Unchanged Region`;o.title=s,o.setAttribute(`aria-label`,s);let c=e=>{e.preventDefault(),e.stopPropagation()},l=e=>{e.preventDefault(),e.stopPropagation(),n.click(),w(()=>$())},u=e=>{e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),e.stopPropagation(),n.click(),w(()=>$()))};o.addEventListener(`mousedown`,c),o.addEventListener(`click`,l),o.addEventListener(`keydown`,u),a.appendChild(o),jt.push(()=>{o.removeEventListener(`mousedown`,c),o.removeEventListener(`click`,l),o.removeEventListener(`keydown`,u),o.parentElement===a&&a.removeChild(o)})}}function $(e=!1){if(L||Ue!=null)return;let t=()=>{L||(Q(),X(e),Z())};Ue=w(()=>{Ue=null,t(),We=w(()=>{We=null,t()})}),Mr()}function Mr(e=!1){if(!U.value||L||!e&&!1===m.loading||(qe||=e,Ke=Math.max(Ke,e?18:6),Ge!=null))return;let t=()=>{if(Ge=null,!U.value||L||Ke<=0||!qe&&!1===m.loading)return Ke=0,void(qe=!1);Ke--,Q(),X({preferModelDiffHeight:!0,holdCurrentDiffHeight:qe}),Z(),Ke>0?Ge=w(t):qe=!1};Ge=w(t)}function Nr(e,t,n,r={}){let i=U.value&&!1!==m.loading?_r(e):null,a=i!=null&&i>t+1?i:t,o=Math.min(a,n),s=!0===r.allowBelowEstimatedFloor||Vn(),c=Hn(o,!0===r.clearEstimatedFloor,{allowBelowEstimatedFloor:s}),l=jn();if(e.style.minHeight=l==null||s?`0px`:`${Math.min(l,Math.ceil(n))}px`,e.style.height=`${c}px`,e.style.maxHeight=`${Math.ceil(n)}px`,U.value)e.style.overflow=`hidden`;else{let i=!0===r.preserveScrollableOverflow||t>n+1;e.style.overflow=i?`auto`:`hidden`}return c}function Pr(e,t=0){let n=Math.ceil(e.getBoundingClientRect?.call(e).height||0),r=Math.max(t,e.clientHeight||0,n);return r>0&&e.scrollHeight>r+1}function Fr(e){return!U.value&&(Qe||Pr(e,Ye.value??0))}function Ir(e){var t,n,r,i;if(!U.value)return;let a=k.value||!vr(e)||e.getBoundingClientRect().height>=Kr()-1;if(Xe===a)return;Xe=a;let o=j(A({},m.monacoOptions?.scrollbar??{}),{handleMouseWheel:a}),s=H();try{(n=(t=(s?.getOriginalEditor)?.call(s))?.updateOptions)==null||n.call(t,{scrollbar:o}),(i=(r=(s?.getModifiedEditor)?.call(s))?.updateOptions)==null||i.call(r,{scrollbar:o})}catch{}}function Lr(e=T.value){return!!Vr(e)||!!e?.querySelector(`.monaco-diff-editor .view-lines .view-line`)}function Rr(e=T.value){return!!Vr(e)||!!e?.querySelector(`.monaco-editor .view-lines .view-line`)}function zr(){var e;if(Vr())return!0;let t=((e=V())?.getModel)?.call(e);return typeof t?.getValue==`function`&&t.getValue()===pn.value}function Br(e=T.value){return!!Vr(e)||!!e?.classList.contains(`stream-monaco-diff-root`)&&!(nn.value&&!e.classList.contains(`stream-monaco-diff-inline`))}function Vr(e=T.value){return!!e?.querySelector(`diffs-container`)}function Hr(e){return!1!==m.loading||K.value||e.classList.contains(`stream-monaco-diff-native-stale`)||vr(e)}function Ur(){let e=H();return typeof e?.getOriginalEditor==`function`||typeof e?.getModifiedEditor==`function`||typeof e?.getLineChanges==`function`}function Wr(){return M(this,arguments,function*(t={}){if(!U.value)return!0;if(Vr())return yield e(),yield Un(),Vr();let n=!1!==t.requireHighlight,r=0,i=Lt(String(m.node.originalCode??``),String(m.node.updatedCode??``)),a=Xn(i.original,i.updated),o=a.added>0||a.removed>0,s=()=>{let e=Lt(String(m.node.originalCode??``),String(m.node.updatedCode??``));e.original===i.original&&e.updated===i.updated||(i=e,a=Xn(i.original,i.updated),o=a.added>0||a.removed>0)};for(let t=0;t<30;t++){if(L)return!1;s();let t=T.value,i=H(),c=cr(),l=!1;try{let e=(i?.getLineChanges)?.call(i);l=Array.isArray(e)&&(!o||e.length>0)}catch{l=!1}let u=!!t?.querySelector(`.monaco-diff-editor`),d=Lr(t),f=!o||Qn(t,a),p=!o||tr(t,a),m=!c||nr(t);if(u&&d&&l&&f&&p&&m&&Zn(t)){try{Bt(),Q(),ur(),$()}catch{}if(yield e(),yield Un(),L)return!1;let t=T.value,i=!cr()||nr(t),s=!o||Qn(t,a),c=!o||tr(t,a),l=ir(t,o),u=or(t,a),d=!n||sr(t),f=Br(t)&&i&&rr(t)&&s&&c&&l&&u&&d,p=Br(t)&&i&&rr(t)&&s&&c&&Zn(t)&&d;if(f||p){if(r++,r>=2)return!0}else r=0}yield e(),yield Un()}return L||(Bt(),Q(),ur(),$(),s()),!1})}function Gr(t,n,r){return M(this,null,function*(){try{yield _t(t,n,r);return}catch(e){if(!zt(e))throw e}if(yield e(),yield Un(),!L&&U.value)try{yield _t(t,n,r)}catch(e){if(!zt(e))throw e}})}function Kr(){let e=m.monacoOptions?.MAX_HEIGHT??500;if(typeof e==`number`)return e;let t=String(e).match(/^(\d+(?:\.\d+)?)/);return t?Number.parseFloat(t[1]):500}let qr=v(()=>m.isShowPreview&&(D.value===`html`||D.value===`svg`));function Jr(){return typeof m.node.loading==`boolean`?m.node.loading:!0===m.loading}function Yr(){if(!Jr())return!0;let e=String(m.node.raw??``),t=e.split(/\r\n|\n|\r/,1)[0]?.trimStart()??``;return!/^(?:`{3,}|~{3,})/.test(t)||/\r\n|\n|\r/.test(e)}function Xr(e,t,n){return!n||Yr()&&String(t??``)?Ae(String(e??``)):`plain`}function Zr(){return Jr()}let Qr=null,$r=!1,ei=0;function ti(){Qr=null,ei++}function ni(){return M(this,arguments,function*(t=ei){if(!$r){$r=!0;try{for(;Qr&&!L&&!U.value&&t===ei;){let t=Qr;Qr=null;try{yield Promise.resolve(gt(t.code,t.language)),yield e(),L||U.value||(X(!1),Z())}catch{}}}finally{$r=!1,!Qr||L||U.value||ni()}}})}function ri(e,t){Qr={code:e,language:t},ni(ei)}t(()=>[m.node.language,m.node.code,m.node.raw,m.node.loading,m.loading],([e,t,n,r,i])=>{D.value=Xr(e,t,typeof r==`boolean`?r:!0===i)}),t(()=>[m.node.originalCode,m.node.updatedCode,U.value],()=>{R.value=null,lr(),w(()=>ur())},{immediate:!0});let ii=0;t(()=>[m.node.originalCode,m.node.updatedCode,O.value,U.value,m.stream],t=>M(null,[t],function*([,,,t,n]){let r=++ii;if(!t||Jr()||!1===n&&!P.value)return;if(!1!==n&&B&&!P.value&&T.value)try{yield vi(T.value)}catch{}let i=wt;if(i&&!F.value){try{yield i}catch{}if(L||!U.value||r!==ii)return}if(r!==ii)return;let a=Lt(String(m.node.originalCode??``),String(m.node.updatedCode??``)),o=!1===m.loading;o&&ki();try{if(yield Gr(a.original,a.updated,O.value),L||!U.value||r!==ii)return;yield e(),Z(!0),Q(),X(!1===m.loading||{preferModelDiffHeight:!0}),Z(!0),$(!0)}catch{return}if(o){if(L||!U.value)return;Bt(),Q(),ur(),$(),Mr(!0)}k.value&&w(()=>Or())})),t(()=>m.node.code,e=>M(null,null,function*(){if(Jr()||!1===m.stream||(D.value||=Ae(Et(e)),U.value))return;let t=wt;if(t&&!F.value){try{yield t}catch{}if(L||U.value)return}if(B&&!P.value&&T.value)try{yield vi(T.value)}catch{}ri(Rt(m.node.code),O.value),k.value&&w(()=>Or())}));let ai=v(()=>{let e=D.value;return e?pe[e]||e.charAt(0).toUpperCase()+e.slice(1):pe[``]||`Plain Text`}),oi=v(()=>fe(String(m.node.raw??``),ai.value,U.value)),si=v(()=>oi.value.title),ci=v(()=>oi.value.caption),li=v(()=>(me.value,function(e,t){if(t===void 0)return we(e);if(t){let n=t(e);if(n!=null&&n!==``)return n}return ve(Ae(e))||be()}(D.value||``,ue))),ui=v(()=>{let e={};e[`--markstream-code-layout-character-width`]=_n.value==null?`1ch`:`${_n.value}px`;let t=e=>{if(e!=null)return typeof e==`number`?`${e}px`:String(e)},n=t(m.minWidth),r=t(m.maxWidth);if(n&&(e.minWidth=n),r&&(e.maxWidth=r),Fn.value&&!U.value&&!N.value){let t=In.value;t!=null&&(e.minHeight=`${t}px`)}return U.value||(e.color=`var(--vscode-editor-foreground, var(--markstream-code-fallback-fg))`,e.backgroundColor=`var(--vscode-editor-background, var(--markstream-code-fallback-bg))`,e.borderColor=`var(--markstream-code-border-color)`),e}),di=v(()=>!1!==m.showTooltips);function fi(){return M(this,null,function*(){try{typeof navigator<`u`&&navigator.clipboard&&typeof navigator.clipboard.writeText==`function`&&(yield navigator.clipboard.writeText(m.node.code)),ze.value=!0,te(`copy`,m.node.code),setTimeout(()=>{ze.value=!1},1e3)}catch(e){console.error(`复制失败:`,e)}})}function pi(){k.value=!k.value;let e=U.value?H():V(),t=T.value;e&&t&&(k.value?(gi(!0),t.style.maxHeight=`none`,t.style.overflow=`visible`,X(!0)):(gi(!1),t.style.overflow=U.value?`hidden`:`auto`,X(!0)),Ir(t))}function mi(){var t;if(N.value=!N.value,N.value){if(Qe=!1,T.value){let e=Math.ceil((t=T.value).getBoundingClientRect?.call(t).height||0);Qe=!U.value&&(Pr(T.value,e)||T.value.style.overflow===`auto`||T.value.style.overflowY===`auto`),e>0&&(Ye.value=e)}gi(!1)}else k.value&&gi(!0),T.value&&Ye.value!=null&&(T.value.style.height=`${Ye.value}px`),Ze=2,e(()=>{N.value||L||(X(!0),Z(!0))})}function hi(){if(!qr.value)return;let e=D.value;if(Ie.value){let t=e===`html`?`text/html`:`image/svg+xml`,n=e===`html`?Le(`artifacts.htmlPreviewTitle`)||`HTML Preview`:Le(`artifacts.svgPreviewTitle`)||`SVG Preview`;te(`previewCode`,{node:m.node,artifactType:t,artifactTitle:n,id:`temp-${e}-${Date.now()}`});return}e===`html`&&(fn.value=!fn.value)}function gi(e){var t,n;try{if(U.value){let n=H();(t=n?.updateOptions)==null||t.call(n,{automaticLayout:e})}else{let t=V();(n=t?.updateOptions)==null||n.call(t,{automaticLayout:e})}}catch{}}function _i(t){return M(this,null,function*(){if(!B||L)return;let n=Wt.value;if(en=!1,q.value=!1,qt.value=null,F.value=!1,K.value=!1,Kt.value=!1,Xe=null,hn.value=null,gn.value=null,_n.value=null,function(){let e=function(){let e=T.value?.parentElement;return e instanceof HTMLElement?e:null}();e&&(e.style.removeProperty(`--stream-monaco-line-number-left`),e.style.removeProperty(`--stream-monaco-line-number-width`),e.style.removeProperty(`--stream-monaco-line-number-gap-to-code`),e.style.removeProperty(`--stream-monaco-original-line-number-gap-to-code`),e.style.removeProperty(`--stream-monaco-modified-line-number-gap-to-code`),e.style.removeProperty(`--stream-monaco-original-scrollable-left`),e.style.removeProperty(`--stream-monaco-modified-scrollable-left`))}(),jr(),function(){Xt.value=!1;let e=On.value;An.value=I.value||e==null?null:e}(),kr(),Ar(),function(e){e.replaceChildren()}(t),ki(),L)return;let r=M(null,null,function*(){if(n===`diff`){(function(){if(Ot||typeof window>`u`)return;Ot=!0;let e=e=>{zt(`reason`in e?e.reason:e.error??e.message)&&(e.preventDefault(),e.stopImmediatePropagation())};window.addEventListener(`error`,e,!0),window.addEventListener(`unhandledrejection`,e,!0),kt=()=>{window.removeEventListener(`error`,e,!0),window.removeEventListener(`unhandledrejection`,e,!0),Ot=!1,kt=null}})(),bt();let e=Lt(String(m.node.originalCode??``),String(m.node.updatedCode??``));ht?yield Pe(()=>ht(t,e.original,e.updated,O.value)):yield Pe(()=>B(t,m.node.code,O.value))}else yield Pe(()=>B(t,pn.value,O.value));F.value=!0}).finally(()=>{wt===r&&(wt=null)});if(wt=r,yield function(t){return M(this,null,function*(){if(!U.value)return void(yield t);let n,r=!1;for(t.then(()=>{r=!0},e=>{r=!0,n=e});;){if(L)return;if(r){if(n)throw n;return}if(Lr()&&Ur())return;yield e(),yield Un()}})}(r),L||Wt.value!==n)return;F.value=!0;let i=n===`diff`?H():V();if(typeof m.monacoOptions?.fontSize==`number`)i?.updateOptions({fontSize:m.monacoOptions.fontSize,automaticLayout:!1}),J.value=m.monacoOptions.fontSize,Y.value=m.monacoOptions.fontSize;else if(!xr()){let e=Gn();e&&e>0?(J.value=e,Y.value=e):(J.value=12,Y.value=12)}br(),yield Ti(),k.value||N.value||X(!1),I.value=!0,Gt.value=n,function(){if(kr(),U.value){let e=H(),t=(e?.getOriginalEditor)?.call(e),n=(e?.getModifiedEditor)?.call(e),r=(e,t)=>{try{let n=e?.[t];if(typeof n!=`function`)return;let r=n.call(e,()=>$());r&&At.push(r)}catch{}};try{let t=(e?.onDidUpdateDiff)?.call(e,()=>{$(),w(()=>ur())});t&&At.push(t)}catch{}r(t,`onDidContentSizeChange`),r(n,`onDidContentSizeChange`);let i=T.value;if(i&&typeof MutationObserver<`u`){let e=[`.view-line`,`.view-lines`,`.view-zones`,`.margin-view-zones`,`.diff-hidden-lines`,`.stream-monaco-diff-unchanged-bridge`,`.stream-monaco-fallback-inline-delete-zone`,`.stream-monaco-fallback-inline-delete-margin`].join(`,`),t=t=>{let n=t instanceof HTMLElement?t:t.parentElement;return!!(n?.closest)?.call(n,e)},n=t=>{let n=t instanceof HTMLElement?t:t.parentElement;return!!((n?.closest)?.call(n,e)||(n?.querySelector)?.call(n,e))},r=new MutationObserver(e=>{U.value&&Hr(i)&&e.some(e=>t(e.target)||Array.from(e.addedNodes).some(n)||Array.from(e.removedNodes).some(t))&&(Q(),X({preferModelDiffHeight:!0}),Z(),Mr())});r.observe(i,{attributeFilter:[`class`],attributes:!0,childList:!0,characterData:!0,subtree:!0}),At.push({dispose:()=>r.disconnect()})}if(i){let e=e=>{if(!(e.target instanceof Element?e.target:null)?.closest([`.stream-monaco-unchanged-summary`,`.stream-monaco-unchanged-reveal`,`.stream-monaco-unchanged-expand`,`.markstream-inline-fold-proxy`,`.diff-hidden-lines .center`].join(`,`)))return;let t=Math.ceil(i.getBoundingClientRect().height||0);t>0&&(R.value=t)};i.addEventListener(`click`,e,!0),At.push({dispose:()=>i.removeEventListener(`click`,e,!0)})}if(i&&typeof ResizeObserver<`u`){let e=new ResizeObserver(()=>{if(!U.value||(Z(),!Hr(i)))return;let e=_r(i);if(e==null)return;let t=Math.ceil(i.getBoundingClientRect().height||0),n=R.value;if(vr(i)&&n!=null){if(t>n+1)R.value=t;else if(te.disconnect()})}return}let e=V();try{let t=(e?.onDidContentSizeChange)?.call(e,()=>$());t&&At.push(t)}catch{}try{let t=(e?.onDidLayoutChange)?.call(e,()=>$());t&&At.push(t)}catch{}}(),Cr(),br(),Q(),ur(),$(),yield e();let a=null;St&&(a=yield St(),a&&(yield e(),yield Un()));let o=a??(n===`diff`?yield Wr({requireHighlight:!0}):yield function(){return M(this,null,function*(){if(Vr())return yield e(),yield Un(),Vr();for(let t=0;t<30;t++){if(L||U.value)return!1;let t=T.value,n=zr(),r=Rr(t),i=!pn.value.trim()||sr(t);if(n&&r&&i&&(yield e(),yield Un(),!L&&!U.value&&zr()&&Rr(T.value)&&(!pn.value.trim()||sr(T.value))))return!0;yield e(),yield Un()}return!1})}());L||(o?(br(),Bn(),(yield zn())||Ii()):Ii())})}function vi(t,n={}){if(!B||L||!1===m.stream&&!1!==m.loading||(Pi(),Fi())||G.value||T.value!==t||Zr())return null;if(Ct)return Ct;if(P.value&&I.value)return Promise.resolve();let r=Mi(),i=Jt.value,a=!1;P.value=!0,function(){let e=xe.value;C&&e&&Je!==e&&(Je&&C.markSettled(Je),Je=e,C.markPending(e))}();let o=M(null,null,function*(){try{yield _i(t),Zt=null}catch(e){let t=Mi(),o=i!==Jt.value,s=!1!==n.allowStaleContentRetry&&o&&Zt!==t;if(r!==t||s)return s&&(Zt=t),a=!0,P.value=!1,I.value=!1,F.value=!1,void(K.value=!1);throw Ii(r),e}}).finally(()=>{Ct===o&&(Ct=null),function(){let t=Je;C&&t&&(Je=``,e(()=>{if(!L){let e=E.value?.offsetHeight??0;e>0&&C.reportHeight(t,e)}C.markSettled(t)}))}(),a&&!L&&queueMicrotask(()=>{var e;let t=T.value;t&&!L&&((e=vi(t))==null||e.catch(e=>{I.value=!1,K.value=!1,Ii()}))})});return Ct=o,o}t(di,e=>{e||De()}),t(()=>Y.value,(e,t)=>{let n=U.value?H():V();n&&typeof e==`number`&&Number.isFinite(e)&&e>0&&(n.updateOptions({fontSize:e}),N.value||X(!0))},{flush:`post`,immediate:!1});let yi=0,bi=t(()=>[T.value,U.value,m.stream,m.loading,He.value,z.value,m.node.language,m.node.raw,m.node.code,m.node.loading],e=>M(null,[e],function*([e,t,n,r,i,a]){let o=++yi;if(!e||!a||Jr()||Qt||!1===n&&!1!==r||!B&&(yield function(){return M(this,null,function*(){if(typeof window>`u`||L||He.value||G.value)return;if(Tt)return Tt;let e=M(null,null,function*(){try{let e=yield Re();if(L)return;if(!e)return void(G.value=!0);let t=e.useMonaco,n=e.detectLanguage;if(typeof n==`function`&&(Et=n),typeof t!=`function`)return;Mt=Oi();let r=t(Mt);B=r.createEditor||B,ht=r.createDiffEditor||ht,gt=r.updateCode||gt,_t=r.updateDiff||_t,vt=r.getEditor||vt,V=r.getEditorView||V,H=r.getDiffEditorView||H,yt=r.cleanupEditor||yt,bt=r.safeClean||r.cleanupEditor||bt,xt=r.refreshDiffPresentation||xt,Dt=r.setTheme||Dt,St=r.whenVisualReady||null,He.value=!0}catch{if(L)return;G.value=!0}}).finally(()=>{Tt===e&&(Tt=null)});return Tt=e,e})}(),o!==yi||!1===m.stream&&!1!==m.loading||Zr()||!z.value||!B||G.value||P.value||Fi()||L||T.value!==e)||Zr())return;let s=vi(e);if(s){try{yield s}catch{I.value=!1,K.value=!1,Ii()}I.value&&K.value&&bi()}}));function xi(e){return!!e&&typeof e==`object`&&`light`in e&&`dark`in e}function Si(e){return typeof e==`string`?e:e&&typeof e==`object`&&`name`in e?String(e.name):null}function Ci(e,t){if(e===t)return!0;let n=Si(e),r=Si(t);return!!n&&n===r}function wi(){let e=function(){if(m.theme!==void 0){let e=m.theme;return xi(e)?m.isDark?e.dark:e.light:e}return m.isDark?m.darkTheme:m.lightTheme}(),t=W.value?.theme,n=e??t;if(typeof n==`object`&&n)return n;let r=Array.isArray(m.themes)?m.themes:[];if(!r.length||n==null)return n;let i=Si(n),a=r.map(e=>Si(e)).filter(e=>!!e);if(!i||a.includes(i))return n;let o=Si(t);return t!=null&&o&&a.includes(o)?t:r[0]}function Ti(){return M(this,arguments,function*(e={}){ki();let t=()=>{U.value&&Bt(),w(()=>{Cr(),$()})};if(e.appearanceOnly)return void t();let n=wi();if(n)try{yield Dt(n),t()}catch{}else t()})}function Ei(e,t){if(typeof t!=`string`)return;let n=Ae(t),r=ye(n),i=[`plain`,`objectivec`,`objectivecpp`].includes(n)?r:n;for(let t of[i,r])t&&!e.includes(t)&&e.push(t)}t(Wt,(t,n)=>M(null,null,function*(){if(t===n||q.value||Qt||(ti(),!B||!T.value)||!P.value||!1===m.stream&&!1!==m.loading||!z.value)return;let r=Ct;if(r){try{yield r}catch{}if(L||!T.value)return}if(Gt.value!==t||!P.value||!I.value)try{I.value=!1,K.value=!1,P.value=!1,F.value=!1,kr(),Ar(),bt(),yield e(),yield vi(T.value)}catch{I.value=!1,K.value=!1,Ii()}}));let Di=v(()=>{let e=[],t=W.value?.languages;if(Array.isArray(t))for(let n of t)Ei(e,n);return Yr()&&Ei(e,m.node.language),Ei(e,D.value),Ei(e,O.value),Ei(e,`plaintext`),e});function Oi(){let e=j(A(j(A({wordWrap:`on`,wrappingIndent:`same`,themes:m.themes},W.value||{}),{languages:Di.value,stream:!1,fontSize:yn.value,lineHeight:xn.value,theme:wi(),disableFileHeader:!0}),U.value?{diffAppearance:Ht.value}:{}),{onThemeChange(){Cr()}}),t=function(){let e=W.value?.fontFamily;return typeof e==`string`&&e.trim()?e.trim():U.value?function(){if(typeof window>`u`)return;let e=E.value?.querySelector(`pre.code-pre-fallback`);if(e)return window.getComputedStyle(e).fontFamily.trim()||void 0}():void 0}();if(t&&(e.fontFamily??=t),U.value){e.wordWrap=tn.value?`on`:`off`;let t=typeof e.unsafeCSS==`string`?`${e.unsafeCSS}\n`:``,n=function(){let e=rn.value;if(!1===e||typeof e==`object`&&!1===e.enabled)return null;let t=typeof e==`object`?e:de,n=Math.max(0,Math.floor(t.contextLineCount??2));return{contextLineCount:n,collapsedContextThreshold:n+Math.max(1,Math.floor(t.minimumLineCount??4))-1}}();e.unsafeCSS=`${t}\npre { column-gap: 0; }\npre > code { column-gap: 0; padding-block: 0; }\n[data-separator="line-info"] { margin-top: 0; }\n`,n?(e.parseDiffOptions=j(A({},e.parseDiffOptions),{context:n.contextLineCount}),e.collapsedContextThreshold=n.collapsedContextThreshold,e.expandUnchanged=!1,e.hunkSeparators=`line-info`,e.unsafeCSS+=`[data-separator="line-info"][data-separator-last] { height: 28px; } +import{A as e,G as t,I as n,J as r,N as i,O as a,P as o,S as s,T as c,U as l,_ as u,b as d,c as f,d as p,f as m,g as h,h as g,j as _,lt as ee,m as v,n as te,nt as y,ot as b,q as ne,rt as re,st as ie,u as ae,ut as x,v as S,w as C,y as oe,z as se}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{t as ce}from"./preload-helper-Czpn1I53.js";import{n as le,t as w}from"./safeRaf-BDp3SJMs.js";import{$ as ue,A as de,D as fe,J as pe,K as me,O as he,Q as ge,T as _e,X as ve,Y as ye,Z as be,_ as xe,a as Se,d as Ce,et as we,g as Te,h as Ee,n as De,o as Oe,p as ke,q as Ae,s as je,v as Me,x as Ne}from"./index-BWCY3EFX.js";var Pe=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),Fe=!1,Ie=null,Le=null,T=null;function Re(){return Pe(this,null,function*(){if(T)return T;T=Pe(null,null,function*(){if(!Le)try{if(Le=function(e){let t=e;if(typeof t?.useMonaco==`function`)return t;let n=e?.default;return typeof n?.useMonaco==`function`?n:null}(yield ce(()=>import(`./dist-DXDod8J6.js`),__vite__mapDeps([0,1]))),!Le)return null}catch{return null}try{return yield function(e){return Pe(this,null,function*(){if(!Fe)return Ie||(Ie=Pe(null,null,function*(){let t=globalThis==null?void 0:globalThis.MonacoEnvironment;t&&(typeof t.getWorker==`function`||typeof t.getWorkerUrl==`function`)||typeof e?.preloadMonacoWorkers!=`function`||(yield e.preloadMonacoWorkers()),Fe=!0}).finally(()=>{Ie=null}),Ie)})}(Le),ue(),Le}catch{return null}});try{return yield T}finally{T=null}})}var E=Object.defineProperty,ze=Object.defineProperties,D=Object.getOwnPropertyDescriptors,Be=Object.getOwnPropertySymbols,O=Object.prototype.hasOwnProperty,Ve=Object.prototype.propertyIsEnumerable,k=(e,t,n)=>t in e?E(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,A=(e,t)=>{for(var n in t||={})O.call(t,n)&&k(e,n,t[n]);if(Be)for(var n of Be(t))Ve.call(t,n)&&k(e,n,t[n]);return e},j=(e,t)=>ze(e,D(t)),M=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),N={key:0,class:`code-block-header flex justify-between items-center border-b px-[var(--ms-inset-panel-x)] py-[var(--ms-inset-panel-y)] border-[var(--code-border)] bg-[var(--code-header-bg)] text-[var(--code-fg)]`},P={class:`flex items-center gap-0.5`},F=[`aria-label`],I={class:`code-diff-stat removed`},He={class:`code-diff-stat added`},L=[`aria-label`],Ue={key:0,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},We={key:1,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},Ge=[`aria-pressed`],Ke={key:3,class:`relative`},qe=[`aria-expanded`],Je=[`disabled`],Ye=[`disabled`],R=[`disabled`],Xe={key:0,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},Ze={key:1,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},Qe={class:`code-loading-placeholder`},$e={class:`sr-only`,"aria-live":`polite`,role:`status`},et=C({__name:`CodeBlockShell`,props:{showHeader:{type:Boolean,default:!0},showCollapseButton:{type:Boolean,default:!0},showFontSizeButtons:{type:Boolean,default:!0},enableFontSizeControl:{type:Boolean,default:!0},showCopyButton:{type:Boolean,default:!0},showExpandButton:{type:Boolean,default:!0},showPreviewButton:{type:Boolean,default:!0},showTooltips:{type:Boolean,default:!0},isDark:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},stream:{type:Boolean,default:!1},isCollapsed:{type:Boolean,default:!1},isExpanded:{type:Boolean,default:!1},copyText:{type:Boolean,default:!1},isPreviewable:{type:Boolean,default:!1},codeFontSize:{},codeFontMin:{},codeFontMax:{},defaultCodeFontSize:{},fontBaselineReady:{type:Boolean,default:!1},diffStats:{},diffStatsAriaLabel:{}},emits:[`toggleCollapse`,`decreaseFont`,`resetFont`,`increaseFont`,`copy`,`toggleExpand`,`preview`],setup(e,{emit:t}){let i=e,a=t,o=y(!1),c=y(null),l=y(null);function m(){De(!0),o.value=!o.value,o.value&&document.addEventListener(`click`,_,{once:!0,capture:!0})}function h(){De(!0),o.value=!1}function _(e){let t=e.target;c.value?.contains(t)||l.value?.contains(t)?document.addEventListener(`click`,_,{once:!0,capture:!0}):h()}let re=v(()=>i.showFontSizeButtons&&i.enableFontSizeControl||i.showExpandButton||i.isPreviewable&&i.showPreviewButton),{t:C}=Se(),oe=v(()=>!1!==i.showTooltips);function ce(e,t){oe.value&&Ee(e.currentTarget,t,`top`,!1,void 0,i.isDark)}function le(){oe.value&&De()}function w(e){ce(e,i.copyText?C(`common.copied`)||`Copied`:C(`common.copy`)||`Copy`)}let ue=v(()=>!!Number.isFinite(i.codeFontSize)&&(i.codeFontSize??0)<=(i.codeFontMin??0)),de=v(()=>!i.fontBaselineReady||i.codeFontSize===i.defaultCodeFontSize),fe=v(()=>!!Number.isFinite(i.codeFontSize)&&(i.codeFontSize??0)>=(i.codeFontMax??100));return(t,_)=>(n(),S(p,null,[i.showHeader?(n(),S(`div`,N,[se(t.$slots,`header-left`),se(t.$slots,`header-right`,{},()=>[g(`div`,P,[e.diffStats?(n(),S(`div`,{key:0,class:`code-diff-stats`,"aria-label":e.diffStatsAriaLabel},[g(`span`,I,`-`+x(e.diffStats.removed),1),g(`span`,He,`+`+x(e.diffStats.added),1)],8,F)):u(``,!0),i.showCopyButton?(n(),S(`button`,{key:1,type:`button`,class:`code-action-btn inline-flex items-center justify-center p-[var(--ms-action-btn-padding)] rounded leading-none shrink-0 cursor-pointer text-[var(--code-action-fg)] hover:bg-[var(--code-action-hover-bg)] hover:text-[var(--code-action-hover-fg)] active:scale-[0.96] disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,"aria-label":e.copyText?b(C)(`common.copied`)||`Copied`:b(C)(`common.copy`)||`Copy`,onClick:_[0]||=e=>a(`copy`),onMouseenter:_[1]||=e=>w(e),onFocus:_[2]||=e=>w(e),onMouseleave:le,onBlur:le},[e.copyText?(n(),S(`svg`,We,[..._[14]||=[g(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M20 6L9 17l-5-5`},null,-1)]])):(n(),S(`svg`,Ue,[..._[13]||=[g(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[g(`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}),g(`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`})],-1)]]))],40,L)):u(``,!0),i.showCollapseButton?(n(),S(`button`,{key:2,type:`button`,class:`code-action-btn inline-flex items-center justify-center p-[var(--ms-action-btn-padding)] rounded leading-none shrink-0 cursor-pointer text-[var(--code-action-fg)] hover:bg-[var(--code-action-hover-bg)] hover:text-[var(--code-action-hover-fg)] active:scale-[0.96] disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,"aria-pressed":e.isCollapsed,onClick:_[3]||=e=>a(`toggleCollapse`),onMouseenter:_[4]||=t=>ce(t,e.isCollapsed?b(C)(`common.expand`)||`Expand`:b(C)(`common.collapse`)||`Collapse`),onFocus:_[5]||=t=>ce(t,e.isCollapsed?b(C)(`common.expand`)||`Expand`:b(C)(`common.collapse`)||`Collapse`),onMouseleave:le,onBlur:le},[(n(),S(`svg`,{style:ee({rotate:e.isCollapsed?`0deg`:`90deg`}),xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[..._[15]||=[g(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m9 18l6-6l-6-6`},null,-1)]],4))],40,Ge)):u(``,!0),re.value?(n(),S(`div`,Ke,[g(`button`,{ref_key:`moreBtnRef`,ref:l,type:`button`,class:`code-action-btn inline-flex items-center justify-center p-[var(--ms-action-btn-padding)] rounded leading-none shrink-0 cursor-pointer text-[var(--code-action-fg)] hover:bg-[var(--code-action-hover-bg)] hover:text-[var(--code-action-hover-fg)] active:scale-[0.96] transition-colors`,"aria-expanded":o.value,"aria-haspopup":`true`,onClick:ae(m,[`stop`]),onMouseenter:_[6]||=e=>ce(e,b(C)(`common.more`)||`More`),onFocus:_[7]||=e=>ce(e,b(C)(`common.more`)||`More`),onMouseleave:le,onBlur:le},[..._[16]||=[d(``,1)]],40,qe),s(te,{name:`code-menu`},{default:ne(()=>[o.value?(n(),S(`div`,{key:0,ref_key:`moreMenuRef`,ref:c,class:`code-more-menu min-w-[10rem] p-1 bg-[hsl(var(--ms-popover))] text-[hsl(var(--ms-popover-foreground))] border border-[var(--code-border)] shadow-[var(--ms-shadow-popover)]`,role:`menu`},[i.showFontSizeButtons&&i.enableFontSizeControl?(n(),S(p,{key:0},[g(`button`,{type:`button`,role:`menuitem`,class:`flex items-center gap-2 w-full py-1.5 px-2 rounded text-xs text-[var(--code-action-fg)] cursor-pointer whitespace-nowrap hover:bg-[var(--code-action-hover-bg)] hover:text-[var(--code-action-hover-fg)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,disabled:ue.value,onClick:_[8]||=e=>{b(De)(!0),a(`decreaseFont`)}},[_[17]||=g(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[g(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M5 12h14`})],-1),g(`span`,null,x(b(C)(`common.fontSmaller`)||`Font size −`),1)],8,Je),g(`button`,{type:`button`,role:`menuitem`,class:`flex items-center gap-2 w-full py-1.5 px-2 rounded text-xs text-[var(--code-action-fg)] cursor-pointer whitespace-nowrap hover:bg-[var(--code-action-hover-bg)] hover:text-[var(--code-action-hover-fg)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,disabled:de.value,onClick:_[9]||=e=>{b(De)(!0),a(`resetFont`)}},[_[18]||=g(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[g(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[g(`path`,{d:`M3 12a9 9 0 1 0 9-9a9.75 9.75 0 0 0-6.74 2.74L3 8`}),g(`path`,{d:`M3 3v5h5`})])],-1),g(`span`,null,x(b(C)(`common.fontReset`)||`Font size reset`),1)],8,Ye),g(`button`,{type:`button`,role:`menuitem`,class:`flex items-center gap-2 w-full py-1.5 px-2 rounded text-xs text-[var(--code-action-fg)] cursor-pointer whitespace-nowrap hover:bg-[var(--code-action-hover-bg)] hover:text-[var(--code-action-hover-fg)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,disabled:fe.value,onClick:_[10]||=e=>{b(De)(!0),a(`increaseFont`)}},[_[19]||=g(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[g(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M5 12h14m-7-7v14`})],-1),g(`span`,null,x(b(C)(`common.fontLarger`)||`Font size +`),1)],8,R)],64)):u(``,!0),i.showExpandButton?(n(),S(`button`,{key:1,type:`button`,role:`menuitem`,class:`flex items-center gap-2 w-full py-1.5 px-2 rounded text-xs text-[var(--code-action-fg)] cursor-pointer whitespace-nowrap hover:bg-[var(--code-action-hover-bg)] hover:text-[var(--code-action-hover-fg)] transition-colors`,onClick:_[11]||=e=>{h(),a(`toggleExpand`)}},[e.isExpanded?(n(),S(`svg`,Xe,[..._[20]||=[g(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m14 10l7-7m-1 7h-6V4M3 21l7-7m-6 0h6v6`},null,-1)]])):(n(),S(`svg`,Ze,[..._[21]||=[g(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M15 3h6v6m0-6l-7 7M3 21l7-7m-1 7H3v-6`},null,-1)]])),g(`span`,null,x(e.isExpanded?b(C)(`common.collapse`)||`Collapse`:b(C)(`common.expand`)||`Expand`),1)])):u(``,!0),e.isPreviewable&&i.showPreviewButton?(n(),S(`button`,{key:2,type:`button`,role:`menuitem`,class:`flex items-center gap-2 w-full py-1.5 px-2 rounded text-xs text-[var(--code-action-fg)] cursor-pointer whitespace-nowrap hover:bg-[var(--code-action-hover-bg)] hover:text-[var(--code-action-hover-fg)] transition-colors`,onClick:_[12]||=e=>{h(),a(`preview`)}},[_[22]||=g(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[g(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[g(`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 19.876 0a1 1 0 0 1 0 .696a10.75 10.75 0 0 1-19.876 0`}),g(`circle`,{cx:`12`,cy:`12`,r:`3`})])],-1),g(`span`,null,x(b(C)(`common.preview`)||`Preview`),1)])):u(``,!0)],512)):u(``,!0)]),_:1})])):u(``,!0)])])])):u(``,!0),r(g(`div`,{class:ie([`code-block-shell-content`,{"code-block-shell-content--collapsed":e.isCollapsed}])},[se(t.$slots,`default`)],2),[[f,!!e.stream||!e.loading]]),r(g(`div`,Qe,[se(t.$slots,`loading`,{},()=>[_[23]||=g(`div`,{class:`loading-skeleton`},[g(`div`,{class:`skeleton-line`}),g(`div`,{class:`skeleton-line`}),g(`div`,{class:`skeleton-line short`})],-1)])],512),[[f,!e.stream&&e.loading]]),g(`span`,$e,x(e.copyText?b(C)(`common.copied`)||`Copied`:``),1)],64))}}),tt={class:`html-preview-frame__header`},nt={class:`html-preview-frame__title`},rt={class:`html-preview-frame__label`},z=[`sandbox`,`srcdoc`],it=xe(C({__name:`HtmlPreviewFrame`,props:{code:{},isDark:{type:Boolean},htmlPreviewAllowScripts:{type:Boolean},htmlPreviewSandbox:{},onClose:{type:Function},title:{}},setup(e){let t=e,{t:r}=Se(),a=v(()=>{let e=t.code||``,n=e.trim().toLowerCase();return n.startsWith(`\n\n \n \n \n \n \n \n ${e}\n \n`}),s=v(()=>{return e=t.htmlPreviewSandbox,n=t.htmlPreviewAllowScripts,typeof e==`string`?e:e===void 0&&!0===n?`allow-scripts`:``;var e,n});function c(e){var n;e.key!==`Escape`&&e.key!==`Esc`||(n=t.onClose)==null||n.call(t)}return i(()=>{typeof window<`u`&&window.addEventListener(`keydown`,c)}),o(()=>{typeof window<`u`&&window.removeEventListener(`keydown`,c)}),(e,i)=>(n(),h(m,{to:`body`},[g(`div`,{class:ie([`markstream-vue`,{dark:t.isDark}])},[g(`div`,{class:`html-preview-frame__backdrop`,onClick:i[2]||=e=>t.onClose?.call(t)},[g(`div`,{class:`html-preview-frame`,onClick:i[1]||=ae(()=>{},[`stop`])},[g(`div`,tt,[g(`div`,nt,[i[3]||=g(`span`,{class:`html-preview-frame__dot`},null,-1),g(`span`,rt,x(t.title||b(r)(`common.preview`)||`Preview`),1)]),g(`button`,{type:`button`,class:`html-preview-frame__close`,onClick:i[0]||=e=>t.onClose?.call(t)},` × `)]),g(`iframe`,{class:`html-preview-frame__iframe`,sandbox:s.value,referrerpolicy:`no-referrer`,srcdoc:a.value},null,8,z)])])],2)]))}}),[[`__scopeId`,`data-v-24e66176`]]),at=[`data-markstream-enhanced`,`data-markstream-enhancement-state`,`data-markstream-code-block-state`,`data-markstream-pending`,`data-markstream-viewport-pending`],ot={class:`code-header-main`},st=[`innerHTML`],ct={class:`code-header-copy`},lt={class:`code-header-title`},ut={key:0,class:`code-header-caption`},dt=[`data-markstream-host-hidden`],ft=`__markstreamMonacoPassiveTouchState__`,pt=xe(C({__name:`CodeBlockNode`,props:{node:{},isDark:{type:Boolean,default:!1},loading:{type:Boolean,default:!0},stream:{type:Boolean,default:!0},theme:{},darkTheme:{default:`vitesse-dark`},lightTheme:{default:`vitesse-light`},isShowPreview:{type:Boolean,default:!0},monacoOptions:{},enableFontSizeControl:{type:Boolean,default:!0},minWidth:{default:void 0},maxWidth:{default:void 0},themes:{},showPreviewButton:{type:Boolean,default:!0},showCollapseButton:{type:Boolean,default:!0},showFontSizeButtons:{type:Boolean,default:!0},showTooltips:{type:Boolean},htmlPreviewAllowScripts:{type:Boolean},htmlPreviewSandbox:{},customId:{},showHeader:{type:Boolean,default:!0},showCopyButton:{type:Boolean,default:!0},showExpandButton:{type:Boolean,default:!0},estimatedHeightPx:{},estimatedContentHeightPx:{},estimatedDiffInline:{type:Boolean}},emits:[`previewCode`,`copy`],setup(d,{emit:p}){let m=d,te=p,ae=l(),C=a(ge,null),ce=a(`markstreamHostScrollManaged`,null),ue=a(_e,void 0),xe=v(()=>Ce(m,ae)),Ee=new Set;function Pe(e){return M(this,null,function*(){if(typeof window>`u`)return yield e();let t=window.Element?.prototype,n=t?.addEventListener;if(!t||!n)return yield e();let r=function(){let e=window,t=e[ft];if(t)return t;let n={depth:0,original:null};return e[ft]=n,n}(),i=null;try{r.depth===0&&(r.original=n,t.addEventListener=function(e,t,i){let a=r.original??n;return e===`touchstart`&&function(e,t){if(!e)return!1;let n=e;return!(typeof n.closest!=`function`||!n.closest(`.monaco-editor, .monaco-diff-editor`)||t&&typeof t==`object`&&`passive`in t)}(this,i)?a.call(this,e,t,function(e){return e==null?{passive:!0}:typeof e==`boolean`?{capture:e,passive:!0}:typeof e==`object`?`passive`in e?e:j(A({},e),{passive:!0}):{passive:!0}}(i)):a.call(this,e,t,i)}),r.depth++;let e=!1;i=()=>{e||(e=!0,Ee.delete(i),r.depth=Math.max(0,r.depth-1),r.depth===0&&r.original&&t.addEventListener!==r.original&&(t.addEventListener=r.original,r.original=null))},Ee.add(i)}catch{return yield e()}try{return yield e()}finally{i?.()}})}let Fe=c(),Ie=v(()=>{let e=Fe?.vnode.props;return!(!e||!e.onPreviewCode&&!e[`onPreview-code`])}),{t:Le}=Se(),T=y(null),E=y(null),ze=y(!1),D=y(Xr(m.node.language,m.node.code,Jr())),Be=v(()=>ye(D.value)),O=v(()=>Be.value===`plaintext`?`text`:Be.value),Ve=v(()=>Be.value===`plaintext`),k=y(!1),N=y(!1),P=y(!1),F=y(!1),I=y(!1),He=y(!1),L=!1,Ue=null,We=null,Ge=null,Ke=0,qe=!1,Je=``,Ye=y(null),R=y(null),Xe=null,Ze=0,Qe=!1,$e=ke(),tt=Ne(),nt=Me(),rt=re(null),z=y(typeof window>`u`||!nt.value),pt=c()?.vnode.el?.textContent??``,mt=y(!(typeof window<`u`&&String(m.node.code??``).length>0&&pt.includes(String(m.node.code))));i(()=>{mt.value=!0}),typeof window<`u`&&t([()=>E.value,nt],([e,t],n,r)=>{var i;if((i=rt.value)==null||i.destroy(),rt.value=null,!t||z.value)return void(z.value=!0);if(!e)return void(z.value=!1);let a=!0,o=tt?.value.heavyBlockMargin??tt?.value.rootMargin??`0px`,s=$e(e,{rootMargin:o,allowIdle:!1});rt.value=s,z.value=z.value||s.isVisible.value,s.whenVisible.then(()=>{a&&rt.value===s&&(z.value=!0)}).catch(()=>{}),r(()=>{a=!1,s.destroy(),rt.value===s&&(rt.value=null)})},{immediate:!0}),_(()=>{var e;L=!0;for(let e of Array.from(Ee))e();(function(){let e=Je;C&&e&&(Je=``,C.markSettled(e))})(),(e=rt.value)==null||e.destroy(),rt.value=null});let B=null,ht=null,gt=()=>{},_t=()=>{},vt=()=>null,V=()=>({getModel:()=>({getLineCount:()=>1}),getOption:()=>14,updateOptions:()=>{}}),H=()=>({getModel:()=>({getLineCount:()=>1}),getOption:()=>14,updateOptions:()=>{}}),yt=()=>{},bt=()=>{},xt=()=>{},St=null,Ct=null,wt=null,Tt=null,Et=()=>String(m.node.language??`plaintext`),Dt=()=>M(null,null,function*(){}),Ot=!1,kt=null,At=[],jt=[],Mt=null,U=v(()=>he(m.node)),Nt=y({removed:0,added:0}),Pt=v(()=>`-${Nt.value.removed} +${Nt.value.added}`),Ft=Object.freeze(j(A({},de),{enabled:!1,revealLineCount:0}));function It(e){var t;return je(e,((t=E.value)?.getBoundingClientRect)?.call(t).width||E.value?.clientWidth||(typeof window>`u`?0:window.innerWidth))}function Lt(e,t){return{original:Rt(e),updated:Rt(t)}}function Rt(e){return String(e??``).replace(/\r\n$|\n$|\r$/,``)}function zt(e){return String(e?.message??e).includes(`no diff result available`)}function Bt(){if(!Vr())try{let e=xt();e&&typeof e.catch==`function`&&e.catch(e=>{zt(e)})}catch(e){zt(e)}}let W=v(()=>{var e,t;let n=m.monacoOptions?A({},m.monacoOptions):{};if(!U.value)return A({lineDecorationsWidth:0,lineNumbersMinChars:2,glyphMargin:!1},n);let r=n.diffHideUnchangedRegions===void 0?A({},de):Te(n.diffHideUnchangedRegions),i=n.hideUnchangedRegions===void 0?void 0:Te(n.hideUnchangedRegions),a=!1!==m.stream&&!1!==m.loading,o=a?A({},Ft):r,s=a?A({},Ft):i,c=function(e){return e.diffWordWrap===void 0?`off`:e.diffWordWrap}(n),l=A({},n.experimental??{}),u=n.diffUnchangedRegionStyle??`line-info`,d=function(e){return A(j(A({},e.scrollbar&&typeof e.scrollbar==`object`?e.scrollbar:{}),{verticalScrollbarSize:0,horizontalScrollbarSize:0}),It(e)?{horizontal:`hidden`}:{})}(n);return j(A(j(A(A({},{maxComputationTime:0,diffAlgorithm:`legacy`,ignoreTrimWhitespace:!1,renderIndicators:!0,diffUpdateThrottleMs:120,renderLineHighlight:`none`,renderLineHighlightOnlyWhenFocus:!0,selectionHighlight:!1,occurrencesHighlight:`off`,matchBrackets:`never`,lineDecorationsWidth:4,lineNumbersMinChars:2,glyphMargin:!1,padding:{top:0,bottom:0},minimap:{enabled:!1},renderOverviewRuler:!1,overviewRulerBorder:!1,hideCursorInOverviewRuler:!0,scrollBeyondLastLine:!1,diffWordWrap:c,renderSideBySide:(e=n.renderSideBySide)==null||e,diffHideUnchangedRegions:o,useInlineViewWhenSpaceIsLimited:(t=n.useInlineViewWhenSpaceIsLimited)!=null&&t,diffLineStyle:`background`,diffAppearance:`auto`,diffUnchangedRegionStyle:u,diffHunkActionsOnHover:!1,experimental:l}),n),{experimental:l}),s===void 0?{}:{hideUnchangedRegions:s}),{diffHideUnchangedRegions:o,diffWordWrap:c,scrollbar:d})}),Vt=v(()=>(m.theme===void 0?Ci(m.darkTheme,m.lightTheme):!xi(m.theme))?function(e){if(e&&typeof e==`object`&&e.colors?.[`editor.background`]){let t=yr(e.colors[`editor.background`]);if(t!=null)return t<128}let t=(Si(e)??``).toLowerCase();return t?[`dark`,`night`,`moon`,`black`,`dracula`,`mocha`,`frappe`,`macchiato`,`palenight`,`ocean`,`poimandres`,`monokai`,`laserwave`,`tokyo`,`slack-dark`,`rose-pine`,`github-dark`,`material-theme`,`one-dark`,`catppuccin-mocha`,`catppuccin-frappe`,`catppuccin-macchiato`].some(e=>t.includes(e))&&![`light`,`latte`,`dawn`,`lotus`].some(e=>t.includes(e)):!!m.isDark}(wi()):!!m.isDark),Ht=v(()=>{if(!U.value)return Vt.value?`dark`:`light`;let e=W.value?.diffAppearance;return e===`light`||e===`dark`?e:Vt.value?`dark`:`light`}),Ut=v(()=>U.value?Ht.value===`dark`:Vt.value),Wt=v(()=>U.value?`diff`:`single`),Gt=y(Wt.value),G=y(!1),K=y(!1),Kt=y(!1),q=y(!1),qt=y(null),Jt=y(0),Yt=y(0),Xt=y(!1),Zt=null,Qt=!1,$t=null,en=!1,tn=v(()=>{if(U.value){let e=W.value?.diffWordWrap;if(e===`inherit`){let e=m.monacoOptions?.wordWrap;return e==null||String(e)!==`off`}return e===`on`}let e=m.monacoOptions?.wordWrap;return e==null||String(e)!==`off`}),nn=v(()=>!!U.value&&It(W.value??{})),rn=v(()=>{let e=m.monacoOptions?.diffHideUnchangedRegions;return e===void 0?A({},de):Te(e)});function an(e){return!0===ce?.value||!!e&&(!!e.closest(`[data-markstream-virtual-timeline="1"], .markstream-virtual-timeline`)||!!e.closest(`.vue-recycle-scroller, [data-virtualizer], [data-virtual-scroll-root]`))}let on=v(()=>an(E.value)),sn=v(()=>!(G.value||!q.value&&K.value)),cn=v(()=>sn.value),ln=v(()=>sn.value&&!Kt.value),un=v(()=>!G.value&&!q.value&&sn.value),dn=v(()=>K.value&&!G.value?`ready`:q.value?`fallback`:`pending`),fn=y(!1),pn=v(()=>Rt(m.node.code)),mn=v(()=>U.value?!0===m.node.diff?m.node:j(A({},m.node),{diff:!0}):pn.value===m.node.code?m.node:j(A({},m.node),{code:pn.value})),J=y(typeof m.monacoOptions?.fontSize==`number`?m.monacoOptions.fontSize:NaN),Y=y(J.value),hn=y(null),gn=y(null),_n=y(null),vn=v(()=>{let e=J.value,t=Y.value;return typeof e==`number`&&Number.isFinite(e)&&e>0&&typeof t==`number`&&Number.isFinite(t)&&t>0}),yn=v(()=>{let e=hn.value;if(typeof e==`number`&&Number.isFinite(e)&&e>0)return e;let t=m.monacoOptions?.fontSize;if(typeof t==`number`&&Number.isFinite(t)&&t>0)return t;let n=Y.value;return typeof n==`number`&&Number.isFinite(n)&&n>0?n:12}),bn=v(()=>{let e=gn.value;if(typeof e==`number`&&Number.isFinite(e)&&e>0)return e;let t=m.monacoOptions?.lineHeight;return typeof t==`number`&&Number.isFinite(t)&&t>0?t:yn.value===12?18:Math.max(12,Math.round(1.5*yn.value))}),xn=v(()=>bn.value),Sn=v(()=>{let e=m.monacoOptions?.tabSize;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:4}),Cn=v(()=>{let e=m.monacoOptions?.padding,t=U.value?0:8;return{top:typeof e?.top==`number`&&Number.isFinite(e.top)&&e.top>=0?e.top:t,bottom:typeof e?.bottom==`number`&&Number.isFinite(e.bottom)&&e.bottom>=0?e.bottom:t}}),wn=v(()=>{let e=m.estimatedContentHeightPx;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:null});function Tn(e){if(e==null)return null;let t=Math.ceil(e);return!Number.isFinite(t)||t<=0?null:Math.min(t,Math.ceil(Kr()))}function En(){return!U.value&&!1!==m.stream&&!1!==m.loading}let Dn=v(()=>U.value?null:wn.value==null||En()?Math.ceil((e=>{let t=String(e??``);return t?Math.max(1,t.split(/\r\n|\n|\r/).length):1})(pn.value)*xn.value+1):null),On=v(()=>{if(U.value)return null;let e=wn.value;return e==null||En()?Tn(Dn.value):Tn(e)}),kn=v(()=>{let e=m.estimatedHeightPx;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:null}),An=y(null);function jn(){let e=An.value;return typeof e==`number`&&Number.isFinite(e)&&e>0?Math.round(e):null}let Mn=v(()=>jn()??(!U.value&&Xt.value?null:sn.value||!K.value?On.value:null));function Nn(e){let t=e?`hsl(152 42% 60%)`:`var(--diff-added-fg)`,n=e?`hsl(0 58% 58%)`:`var(--diff-removed-fg)`,r=e?`hsl(152 42% 60% / 0.18)`:`var(--diff-added-bg)`,i=e?`hsl(0 58% 58% / 0.18)`:`var(--diff-removed-bg)`,a=e?`hsl(152 42% 60% / 0.28)`:`var(--diff-added-inline-bg)`,o=e?`hsl(0 58% 58% / 0.28)`:`var(--diff-removed-inline-bg)`,s=`linear-gradient(90deg, ${t} 0 4px, transparent 4px 100%)`,c=`linear-gradient(90deg, ${n} 0 4px, transparent 4px 100%)`,l=e?`hsl(0 0% 7% / 0.98)`:`hsl(var(--ms-muted) / 0.45)`,u=`var(--markstream-code-layout-character-width, 1ch)`,d=`calc(${u} + ${u})`,f=`calc(${u} + ${u} + ${u} + ${u} + ${u} + 2px)`,p=`calc(${f} + ${u})`;return{"--markstream-diff-line-number-bg":l,"--markstream-diff-added-fg":t,"--markstream-diff-removed-fg":n,"--markstream-diff-added-line":r,"--markstream-diff-removed-line":i,"--markstream-diff-added-line-fill":r,"--markstream-diff-removed-line-fill":i,"--markstream-diff-added-gutter":s,"--markstream-diff-removed-gutter":c,"--markstream-diff-added-inline":a,"--markstream-diff-removed-inline":o,"--stream-monaco-added-fg":t,"--stream-monaco-removed-fg":n,"--stream-monaco-added-line":r,"--stream-monaco-removed-line":i,"--stream-monaco-added-line-fill":r,"--stream-monaco-removed-line-fill":i,"--stream-monaco-added-gutter":s,"--stream-monaco-removed-gutter":c,"--stream-monaco-added-inline":a,"--stream-monaco-removed-inline":o,"--stream-monaco-gutter-marker-width":`4px`,"--stream-monaco-gutter-gap":`1ch`,"--stream-monaco-line-number-left":`0px`,"--stream-monaco-line-number-width":d,"--stream-monaco-line-number-padding-left":d,"--stream-monaco-line-number-padding-right":u,"--stream-monaco-line-number-separator-width":`2px`,"--stream-monaco-layout-character-width":u,"--stream-monaco-line-number-box-width":f,"--stream-monaco-line-number-gap-to-code":u,"--stream-monaco-line-number-bg":l,"--stream-monaco-diff-code-gap":u,"--stream-monaco-diff-code-padding":`0px`,"--stream-monaco-original-margin-width":p,"--stream-monaco-original-scrollable-left":p,"--stream-monaco-original-scrollable-width":`calc(100% - ${p})`,"--stream-monaco-modified-margin-width":p,"--stream-monaco-modified-scrollable-left":p,"--stream-monaco-modified-scrollable-width":`calc(100% - ${p})`}}let Pn=v(()=>{let e=m.monacoOptions?.fontFamily,t=Tn(wn.value),n=Tn(Dn.value),r=En(),i=A(A({fontSize:`${yn.value}px`,lineHeight:`${xn.value}px`,tabSize:Sn.value,boxSizing:`border-box`,maxHeight:`${Kr()}px`,overflow:`auto`,paddingTop:`${Cn.value.top}px`,paddingBottom:`${Cn.value.bottom}px`},U.value||t==null||r?U.value||n==null?{}:{minHeight:`${n}px`}:{height:`${t}px`,minHeight:`${t}px`}),typeof e==`string`&&e.trim()?{"--markstream-code-font-family":e.trim()}:{});return i[`--markstream-pre-line-number-top`]=`${Cn.value.top}px`,i[`--markstream-code-padding-left`]=`calc(2ch + 2ch + 1ch + 2px + 1ch)`,i[`--markstream-pre-line-number-left`]=`0px`,i[`--markstream-pre-line-number-width`]=`2ch`,i[`--markstream-pre-line-number-padding-left`]=`2ch`,i[`--markstream-pre-line-number-padding-right`]=`1ch`,i[`--markstream-pre-line-number-separator-width`]=`2px`,U.value&&(i[`--markstream-pre-diff-line-height`]=`${xn.value}px`,i[`--markstream-pre-diff-pane-bottom-padding`]=(nn.value,`0px`),Object.assign(i,Nn(Ut.value))),i}),Fn=v(()=>Mn.value!=null&&(!K.value||jn()!=null)),In=v(()=>{let e=Mn.value;if(e==null)return null;if(U.value)return Math.ceil(e);let t=kn.value,n=wn.value;if(t==null||n==null)return Math.ceil(e);let r=Math.max(0,Math.ceil(t)-Math.ceil(n));return Math.ceil(e+r)}),Ln=v(()=>{if(U.value&&sn.value)return{};let e=Mn.value;return Fn.value&&e!=null?{minHeight:`${e}px`}:{}});function Rn(){var e,t,n,r;let i=E.value?.querySelector(`pre.code-pre-fallback`),a=H(),o=i?.scrollTop??0;(t=(e=(a?.getOriginalEditor)?.call(a))?.setScrollTop)==null||t.call(e,o),(r=(n=(a?.getModifiedEditor)?.call(a))?.setScrollTop)==null||r.call(n,o)}function zn(){return M(this,null,function*(){return U.value?(Sr()??Bn(),Z(!0),Rn(),Q(),Kt.value=!0,yield e(),Z(!0),yield Un(),Z(!0),!(St&&!(yield St())||(br(),Bn(),Z(!0),K.value=!0,yield e(),Bn(),Z(!0),br(),Q(),$(),0))):!(St&&!(yield St())||(K.value=!0,yield e(),X(!1),Z(),0))})}function Bn(){let e=T.value;return e&&Lr(e)?(Q(),X({preferModelDiffHeight:!0}),Mr(),Number.parseFloat(e.style.height||``)||null):Sr()}function Vn(){if(!U.value||!I.value||!K.value||sn.value)return!1;let e=T.value;return!!e&&vr(e)}function Hn(e,t=!1,n={}){let r=Math.ceil(e),i=jn();if(i==null)return r;let a=!0===n.allowBelowEstimatedFloor||Vn();return r>=i||a?((t||a)&&I.value&&(An.value=null),r):i}function Un(){return new Promise(e=>{let t=!1,n=null,r=null,i=()=>{t||(t=!0,r!=null&&globalThis.clearTimeout(r),n!=null&&le(n),e())};r=globalThis.setTimeout(i,50),n=w(i)})}function Wn(){try{let e=T.value;if(!e)return null;let t=e.querySelector(`.view-lines .view-line`);if(t){let e=Math.ceil(t.getBoundingClientRect().height);if(e>0)return e}}catch{}return null}function Gn(){var e;try{let t=U.value?((e=H())?.getModifiedEditor)?.call(e)??H():V(),n=vt()?.EditorOption?.fontInfo;if(t&&n!=null){let e=t.getOption?.call(t,n)?.fontSize;if(typeof e==`number`&&Number.isFinite(e)&&e>0)return e}}catch{}try{let e=T.value;if(e){let t=e.querySelector(`.view-lines .view-line`);if(t)try{if(typeof window<`u`&&typeof window.getComputedStyle==`function`){let e=window.getComputedStyle(t).fontSize,n=e&&e.match(/^(\d+(?:\.\d+)?)/);if(n)return Number.parseFloat(n[1])}}catch{}}}catch{}return null}function Kn(e){try{let t=vt()?.EditorOption?.lineHeight;if(t!=null){let n=(e?.getOption)?.call(e,t);if(typeof n==`number`&&n>0)return n}}catch{}let t=Wn();if(t&&t>0)return t;let n=Number.isFinite(Y.value)&&Y.value>0?Y.value:14;return Math.max(12,Math.round(1.35*n))}function qn(e){try{let t=vt()?.EditorOption?.padding;if(t!=null){let n=(e?.getOption)?.call(e,t);if(typeof n?.top==`number`||typeof n?.bottom==`number`)return(typeof n?.top==`number`&&Number.isFinite(n.top)?Math.max(0,n.top):0)+(typeof n?.bottom==`number`&&Number.isFinite(n.bottom)?Math.max(0,n.bottom):0)}}catch{}let t=W.value?.padding;return typeof t?.top==`number`||typeof t?.bottom==`number`?(typeof t?.top==`number`&&Number.isFinite(t.top)?Math.max(0,t.top):0)+(typeof t?.bottom==`number`&&Number.isFinite(t.bottom)?Math.max(0,t.bottom):0):U.value?24:0}function Jn(e,t){return typeof e!=`number`||typeof t!=`number`||e<1||t=i&&o>=i&&n[a]===r[o];)a--,o--;let s=Math.max(0,a-i+1),c=Math.max(0,o-i+1);if(s===0||c===0)return{removed:s,added:c};if((s+1)*(c+1)<=15e5){let e=c+1,t=new Uint32Array(e),a=new Uint32Array(e);for(let e=s-1;e>=0;e--){a[c]=0;for(let o=c-1;o>=0;o--)a[o]=n[i+e]===r[i+o]?t[o+1]+1:Math.max(t[o],a[o+1]);let o=t;t=a,a=o}let o=t[0];return{removed:s-o,added:c-o}}return{removed:s,added:c}}function Zn(e){if(!function(){return!(!U.value||!nn.value)&&(m.node.originalCode!=null||m.node.updatedCode!=null?Xn(String(m.node.originalCode??``),String(m.node.updatedCode??``)).removed>0:String(m.node.code??``).split(/\r\n|\n|\r/).some(e=>function(e){return e.startsWith(`-`)&&!e.startsWith(`---`)}(e)))}())return!0;let t=e?.querySelector(`.stream-monaco-fallback-inline-delete-line`);if((t?.textContent)?.trim()&&(t.hasAttribute(`data-stream-monaco-colorize-signature`)||t.querySelector(`[class*="mtk"]`)))return!0;let n=e?.querySelector([`.editor.modified .view-zones .view-lines.line-delete`,`.editor.modified .view-lines .view-line.line-delete`,`.editor.original .view-zones .view-lines.line-delete`,`.editor.original .view-lines .view-line.line-delete`].join(`,`));if(!n||!n.matches(`.view-line`)&&!n.querySelector(`.view-line`))return!1;let r=n.getBoundingClientRect(),i=e?.getBoundingClientRect();return i?.width===0&&i.height===0||r.width>0&&r.height>0}function Qn(e,t){if(!e)return!1;let n=t.added<=0||!!e.querySelector([`.line-insert`,`.gutter-insert`,`.stream-monaco-fallback-line-insert`,`.stream-monaco-fallback-gutter-insert`,`.stream-monaco-fallback-line-number-insert`].join(`,`)),r=t.removed<=0||!!e.querySelector([`.line-delete`,`.gutter-delete`,`.inline-deleted-margin-view-zone`,`.stream-monaco-fallback-line-delete`,`.stream-monaco-fallback-gutter-delete`,`.stream-monaco-fallback-line-number-delete`,`.stream-monaco-fallback-inline-delete-line`,`.stream-monaco-fallback-inline-delete-margin`].join(`,`));return n&&r}function $n(e,t){let n=e?.querySelector(t);return n instanceof HTMLElement?typeof window>`u`||typeof window.getComputedStyle!=`function`?n:window.getComputedStyle(n).display===`none`?null:n:null}function er(e,t){return $n(e,t)!==null}function tr(e,t){if(!e)return!1;let n=t.added<=0||[`.gutter-insert`,`.stream-monaco-fallback-gutter-insert`].some(t=>er(e,t)),r=t.removed<=0||[`.gutter-delete`,`.inline-deleted-margin-view-zone`,`.stream-monaco-fallback-gutter-delete`,`.stream-monaco-fallback-inline-delete-margin`].some(t=>er(e,t));return n&&r}function nr(e){let t=Array.from(e?.querySelectorAll(`.monaco-diff-editor .margin-view-overlays .line-numbers`)??[]);return!!t.length&&t.some(e=>{if(!e.textContent?.trim())return!1;if(typeof window>`u`||typeof window.getComputedStyle!=`function`)return!0;let t=window.getComputedStyle(e);if(t.display===`none`)return!1;let n=e.getBoundingClientRect();if(n.width<=0&&n.height<=0)return!0;let r=Number.parseFloat(t.width||``),i=Number.parseFloat(t.paddingLeft||``),a=Number.parseFloat(t.paddingRight||``);return Math.max(n.width,Number.isFinite(r)?r:0)>=8&&Number.isFinite(i)&&i>=1&&Number.isFinite(a)&&a>=1})}function rr(e){let t=$n(e,`.monaco-diff-editor .view-lines .view-line`);if(!t)return!1;if(!cr())return!0;let n=$n(e,`.monaco-diff-editor .margin-view-overlays .line-numbers`);if(!n)return!1;if(typeof window>`u`||typeof window.getComputedStyle!=`function`)return!0;let r=t.getBoundingClientRect(),i=n.getBoundingClientRect();if(r.width<=0&&r.height<=0||i.width<=0&&i.height<=0)return!0;let a=r.left-i.right;return a>=0&&a<=32}function ir(e,t){return!nn.value||!(t||e?.querySelector([`.line-insert`,`.line-delete`,`.gutter-insert`,`.gutter-delete`,`.stream-monaco-line-number-insert`,`.stream-monaco-line-number-delete`,`.stream-monaco-line-insert-fill`,`.stream-monaco-line-delete-fill`,`.stream-monaco-fallback-line-insert`,`.stream-monaco-fallback-line-delete`,`.stream-monaco-fallback-inline-delete-line`].join(`,`)))||!!(e?.classList.contains(`stream-monaco-diff-inline-native-ready`)&&!e.classList.contains(`stream-monaco-diff-native-stale`))}function ar(e,t,n,r){let i=e?.querySelector(`.monaco-diff-editor .editor.${t}`);if(!i)return!1;let a=Array.from(i.querySelectorAll(`.margin-view-overlays .line-numbers.${n}`));if(!a.length)return!0;let o=Array.from(i.querySelectorAll(`.lines-content > .view-lines:not(.line-delete) > .view-line`));return!!o.length&&a.every(e=>{let t=e.getBoundingClientRect(),n=null;for(let e of o){let r=e.getBoundingClientRect(),i=Math.abs(r.top-t.top);(!n||i1.25||n.node.classList.contains(r)})}function or(e,t){if(!e)return!1;let n=t.added<=0||ar(e,`modified`,`stream-monaco-line-number-insert`,`stream-monaco-line-insert-fill`),r=t.removed<=0||(nn.value?!!e.classList.contains(`stream-monaco-diff-inline-native-ready`):ar(e,`original`,`stream-monaco-line-number-delete`,`stream-monaco-line-delete-fill`));return n&&r}function sr(e){if(Ve.value)return!0;if(!e)return!1;let t=Array.from(e.querySelectorAll(`.monaco-diff-editor .view-lines .view-line, .monaco-editor .view-lines .view-line`)).filter(e=>{if(!e.textContent?.trim())return!1;let t=e.getBoundingClientRect();return t.width>0||t.height>0});if(!t.length)return!1;let n=t.filter(e=>{var t;return t=e.textContent??``,/['"`{}()[\]:;=<>.,]|\/\/|\/\*|\b(?:async|await|class|const|enum|export|for|function|if|import|interface|let|return|switch|type|var|while)\b/.test(t.replace(/\u00A0/g,` `).trim())});return!n.length||n.filter(e=>Array.from(e.querySelectorAll(`span`)).filter(e=>e.textContent?.trim()).some(e=>String(e.className||``).split(/\s+/).some(e=>/^mtk\d+$/.test(e)&&e!==`mtk1`))).length>0}function cr(){return W.value?.lineNumbers!==`off`}function lr(){U.value?Nt.value=Xn(String(m.node.originalCode??``),String(m.node.updatedCode??``)):Nt.value={removed:0,added:0}}function ur(){if(U.value)try{let e=H(),t=(e?.getLineChanges)?.call(e);if(!Array.isArray(t))return void lr();let n=0,r=0;for(let e of t)n+=Jn(e.originalStartLineNumber,e.originalEndLineNumber),r+=Jn(e.modifiedStartLineNumber,e.modifiedEndLineNumber);Nt.value={removed:n,added:r}}catch{lr()}else Nt.value={removed:0,added:0}}function dr(){if(Number.isFinite(Y.value)&&Y.value>0&&Number.isFinite(J.value))return Y.value;let e=Gn();return typeof m.monacoOptions?.fontSize==`number`?(J.value=m.monacoOptions.fontSize,Y.value=m.monacoOptions.fontSize,Y.value):e&&e>0?(J.value=e,Y.value=e,e):(J.value=12,Y.value=12,12)}function fr(){let e=dr(),t=Math.min(36,e+1);Y.value=t}function pr(){let e=dr(),t=Math.max(10,e-1);Y.value=t}function mr(){dr(),Number.isFinite(J.value)&&(Y.value=J.value)}function hr(){var e,t,n,r,i;try{let a=U.value?H():null,o=U.value?a:V();if(!o)return null;if(a?.getOriginalEditor&&a?.getModifiedEditor){let i=a.getOriginalEditor?.call(a),o=a.getModifiedEditor?.call(a);(e=i?.layout)==null||e.call(i),(t=o?.layout)==null||t.call(o);let s=(i?.getContentHeight)?.call(i)||0,c=(o?.getContentHeight)?.call(o)||0,l=Math.max(s,c);if(l>0)return Math.ceil(l);let u=((n=(i?.getModel)?.call(i))?.getLineCount)?.call(n)||1,d=((r=(o?.getModel)?.call(o))?.getLineCount)?.call(r)||1,f=Math.max(u,d),p=Math.max(Kn(i),Kn(o)),m=Math.max(qn(i),qn(o));return Math.ceil(f*p+m+0)}if(o?.getContentHeight){(i=o?.layout)==null||i.call(o);let e=o.getContentHeight();if(e>0)return U.value||(Xt.value=!0),Math.ceil(e)}let s=(o?.getModel)?.call(o),c=1;s&&typeof s.getLineCount==`function`&&(c=s.getLineCount());let l=Kn(o);return Math.ceil(c*(l+1.5)+0)}catch{return null}}function gr(){var e;if(U.value)return!1;try{let t=((e=V())?.getContentHeight)?.call(e),n=typeof t==`number`&&Number.isFinite(t)&&t>0;return n&&(Xt.value=!0),n}catch{return!1}}function _r(e){if(typeof window>`u`)return null;try{let t=e.getBoundingClientRect(),n=window.getComputedStyle(e);if(n.display===`none`||n.visibility===`hidden`)return null;let r=e.querySelector(`diffs-container`);if(r instanceof HTMLElement){let e=r.getBoundingClientRect();if(e.height>0&&e.bottom>t.top)return Math.ceil(e.bottom-t.top)}let i=[`.editor.original .view-lines .view-line`,`.editor.modified .view-lines .view-line`,`.editor.original .view-zones > div`,`.editor.modified .view-zones > div`,`.editor.original .margin-view-zones > div`,`.editor.modified .margin-view-zones > div`,`.editor.original .diff-hidden-lines`,`.editor.modified .diff-hidden-lines`,`.stream-monaco-diff-unchanged-bridge`],a=0;for(let n of Array.from(e.querySelectorAll(i.join(`,`)))){if(!(n instanceof HTMLElement)||(n.parentElement?.classList.contains(`view-zones`)||n.parentElement?.classList.contains(`margin-view-zones`))&&!(n.textContent?.trim()||n.matches(`.line-delete, .line-insert, .cdr`)||n.querySelector(`.diff-hidden-lines, .stream-monaco-diff-unchanged-bridge, .line-delete, .line-insert, .cdr`)))continue;let e=window.getComputedStyle(n);if(e.display===`none`||e.visibility===`hidden`||Number.parseFloat(e.opacity||`1`)<=.01)continue;let r=n.getBoundingClientRect();r.height<=0||r.bottom<=t.top||(a=Math.max(a,r.bottom-t.top))}return a>0?Math.ceil(a):null}catch{return null}}function vr(e){if(typeof window>`u`)return!1;let t=e.getBoundingClientRect();if(t.width<=0||t.height<=0)return!1;let n=e.querySelectorAll(`.editor.modified .diff-hidden-lines, .editor.original .diff-hidden-lines, .stream-monaco-diff-unchanged-bridge`);for(let e of Array.from(n)){if(!(e instanceof HTMLElement))continue;let n=window.getComputedStyle(e);if(n.display===`none`||n.visibility===`hidden`||Number.parseFloat(n.opacity||`1`)<=.01)continue;let r=e.getBoundingClientRect();if(!(r.width<=0||r.height<=0||r.bottom<=t.top||r.top>=t.bottom))return!0}return!1}function yr(e){let t=String(e??``).trim(),n=t.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/i)?.[1];if(n){let e=n.length===3?n.split(``).map(e=>`${e}${e}`).join(``):n;return .2126*Number.parseInt(e.slice(0,2),16)+.7152*Number.parseInt(e.slice(2,4),16)+.0722*Number.parseInt(e.slice(4,6),16)}let r=t.match(/\d+(?:\.\d+)?/g);if(!r||r.length<3)return null;let[i,a,o]=r.slice(0,3).map(Number);return .2126*i+.7152*a+.0722*o}function br(){var e;if(xr())return;let t=Gn();t&&t>0&&(hn.value=t,Y.value=t,J.value=t);try{let t=Kn(U.value?((e=H())?.getModifiedEditor)?.call(e)??H():V());t&&t>0&&(gn.value=t)}catch{}try{let e=Wn();e&&e>0&&(gn.value=e)}catch{}}function xr(){return U.value&&cn.value}function Sr(){if(!U.value||!sn.value)return null;let e=T.value,t=E.value?.querySelector(`pre.code-pre-fallback`);if(!e||!t)return null;let n=Math.ceil(t.getBoundingClientRect().height);return!Number.isFinite(n)||n<=0?null:(e.style.height=`${n}px`,e.style.minHeight=`${n}px`,e.style.maxHeight=`${Math.ceil(Kr())}px`,e.style.overflow=`hidden`,n)}function Cr(){let e=T.value,t=E.value;if(!e||!t)return;let n=e,r=e.querySelector(`.monaco-editor`)||e,i=r.querySelector(`.monaco-editor-background`)||r,a=r.querySelector(`.view-lines`)||r,o=null,s=null,c=null;try{typeof window<`u`&&typeof window.getComputedStyle==`function`&&(o=window.getComputedStyle(r),s=i===r?o:window.getComputedStyle(i),c=a===r?o:window.getComputedStyle(a))}catch{o=null,s=null,c=null}let l=String(o?.getPropertyValue(`--vscode-editor-foreground`)??``).trim(),u=String(o?.getPropertyValue(`--vscode-editor-background`)??``).trim(),d=String(o?.getPropertyValue(`--vscode-editor-selectionBackground`)??o?.getPropertyValue(`--vscode-editor-hoverHighlightBackground`)??``).trim(),f=l||String(c?.color??o?.color??``).trim(),p=u||String(s?.backgroundColor??o?.backgroundColor??``).trim(),m=function(){var e;try{let t=U.value?((e=H())?.getModifiedEditor)?.call(e)??H():V(),n=vt()?.EditorOption?.fontInfo;if(t&&n!=null){let e=t.getOption?.call(t,n)?.typicalHalfwidthCharacterWidth;if(typeof e==`number`&&Number.isFinite(e)&&e>0)return e}}catch{}return null}();if(m!=null&&(_n.value=m),U.value){let e=(e,r)=>{r?(t.style.setProperty(e,r),n.style.setProperty(e,r)):(t.style.removeProperty(e),n.style.removeProperty(e))};for(let[n,r]of Object.entries(Nn(t.classList.contains(`is-dark`))))e(n,r);f?(t.style.setProperty(`--markstream-diff-editor-fg`,f),n.style.setProperty(`--vscode-editor-foreground`,f),n.style.setProperty(`--stream-monaco-editor-fg`,f)):(t.style.removeProperty(`--markstream-diff-editor-fg`),n.style.removeProperty(`--vscode-editor-foreground`),n.style.removeProperty(`--stream-monaco-editor-fg`)),p?(t.style.setProperty(`--markstream-diff-editor-bg`,p),t.style.setProperty(`--markstream-diff-panel-bg`,p),t.style.setProperty(`--markstream-diff-panel-bg-soft`,p),t.style.setProperty(`--markstream-diff-panel-bg-strong`,p),n.style.setProperty(`--vscode-editor-background`,p),n.style.setProperty(`--stream-monaco-editor-bg`,p),n.style.setProperty(`--stream-monaco-fixed-editor-bg`,p),n.style.setProperty(`--stream-monaco-panel-bg`,p),n.style.setProperty(`--stream-monaco-panel-bg-soft`,p),n.style.setProperty(`--stream-monaco-panel-bg-strong`,p),n.style.backgroundColor=p):(t.style.removeProperty(`--markstream-diff-editor-bg`),t.style.removeProperty(`--markstream-diff-panel-bg`),t.style.removeProperty(`--markstream-diff-panel-bg-soft`),t.style.removeProperty(`--markstream-diff-panel-bg-strong`),n.style.removeProperty(`--vscode-editor-background`),n.style.removeProperty(`--stream-monaco-editor-bg`),n.style.removeProperty(`--stream-monaco-fixed-editor-bg`),n.style.removeProperty(`--stream-monaco-panel-bg`),n.style.removeProperty(`--stream-monaco-panel-bg-soft`),n.style.removeProperty(`--stream-monaco-panel-bg-strong`),n.style.backgroundColor=``),d?n.style.setProperty(`--vscode-editor-selectionBackground`,d):n.style.removeProperty(`--vscode-editor-selectionBackground`);return}if(function(e,t,n){if(!Ve.value)return!1;let r=yr(e),i=yr(t);return n?r!=null&&r>170||i!=null&&i<110:r!=null&&r<85||i!=null&&i>190}(p,f,t.classList.contains(`is-dark`)))return n.style.removeProperty(`--vscode-editor-foreground`),n.style.removeProperty(`--vscode-editor-background`),void n.style.removeProperty(`--vscode-editor-selectionBackground`);f&&n.style.setProperty(`--vscode-editor-foreground`,f),p&&n.style.setProperty(`--vscode-editor-background`,p),d&&n.style.setProperty(`--vscode-editor-selectionBackground`,d)}let wr=0,Tr=0,Er=/auto|scroll|overlay/i;function Dr(e,t,n){if(typeof window>`u`||U.value||function(e){return on.value||an(e)}(e))return;let r=Math.ceil(n)-Math.ceil(t);if(Math.abs(r)<=1)return;let i=function(e){if(typeof window>`u`)return null;let t=e?.ownerDocument??document,n=t.scrollingElement||t.documentElement||t.body,r=e?.parentElement??null;for(;r&&r!==t.body&&r!==n;){let e=window.getComputedStyle(r),t=(e.overflowY||``).toLowerCase(),n=(e.overflow||``).toLowerCase();if(Er.test(t)||Er.test(n))return r;r=r.parentElement}return n}(e);if(!i)return;let a=e.ownerDocument??document,o=i===a.body||i===a.documentElement||i===a.scrollingElement,s=o?0:i.getBoundingClientRect().top;e.getBoundingClientRect().top-s>=0||(o&&typeof window.scrollBy==`function`?window.scrollBy(0,r):i.scrollTop+=r)}function Or(){try{let e=T.value;if(!e)return;let t=e.getBoundingClientRect().height,n=hr();if(n!=null&&n>0){let r=Hn(n,!0,{allowBelowEstimatedFloor:!U.value&&I.value&&gr()}),i=jn();e.style.minHeight=i==null?`0px`:`${i}px`,e.style.height=`${r}px`,e.style.maxHeight=`none`,e.style.overflow=`visible`,Dr(e,t,r);return}let r=jn();r!=null&&(e.style.minHeight=`${r}px`,e.style.height=`${r}px`,e.style.maxHeight=`none`,e.style.overflow=`visible`,Dr(e,t,r))}catch{}}function kr(){for(var e,t;At.length>0;)try{(t=(e=At.pop())?.dispose)==null||t.call(e)}catch{}Ue!=null&&(le(Ue),Ue=null),We!=null&&(le(We),We=null),Ge!=null&&(le(Ge),Ge=null),Ke=0,qe=!1}function Ar(){for(var e;jt.length>0;)try{(e=jt.pop())==null||e()}catch{}}function X(e=!1){N.value||(k.value?Or():function(e={}){try{let t=T.value;if(!t)return;let n=t.getBoundingClientRect().height,r=Kr(),i=Math.ceil(t.getBoundingClientRect?.call(t).height||0),a=Number.parseFloat(t.style.height||``),o=i>0?i:Number.isFinite(a)&&a>0?Math.ceil(a):0,s=U.value?function(){var e,t;if(Vr())return null;try{let n=H(),r=(n?.getOriginalEditor)?.call(n),i=(n?.getModifiedEditor)?.call(n);if(!r||!i)return null;let a=((e=r.getModel?.call(r))?.getLineCount)?.call(e)||1,o=((t=i.getModel?.call(i))?.getLineCount)?.call(t)||1,s=Math.max(a,o),c=Math.max(Kn(r),Kn(i)),l=Math.max(qn(r),qn(i)),u=Math.max(r.getContentHeight?.call(r)??0,i.getContentHeight?.call(i)??0);return Math.ceil(Math.max(u,s*c+l+0))}catch{return null}}():null,c=U.value&&vr(t),l=U.value&&Lr(t),u=U.value&&t.classList.contains(`stream-monaco-diff-native-stale`),d=c&&I.value&&K.value&&!sn.value;if(c||(R.value=null),Ze>0&&(Ze--,Ye.value!=null))return void Dr(t,n,Nr(t,Ye.value,r,{allowBelowEstimatedFloor:d,preserveScrollableOverflow:Fr(t)}));if(U.value&&!l&&!c&&sn.value){let e=Sr();if(e!=null){let i=Nr(t,e,r,{allowBelowEstimatedFloor:!0});Z(!0),Dr(t,n,i);return}}let f=U.value&&!0===e.preferModelDiffHeight,p=U.value?_r(t):null,h=p,g=!U.value&&I.value&&gr(),_=U.value&&!1!==m.loading&&(h!=null||s!=null&&i>0&&s0&&s0&&s0?o:null:s;else v=hr();if(U.value&&!1===m.loading&&u&&!d&&v!=null&&s!=null&&(v=Math.min(v,s)),U.value&&v!=null&&o>0&&(!1!==m.loading||!1===m.loading&&u&&!d||!0===e.holdCurrentDiffHeight&&!d)&&(v=Math.max(v,o)),v!=null&&v>0){let e=c&&R.value!=null,a=c&&i>0&&i=r-1,o=Nr(t,e?Math.max(R.value,v):a?i:v,r,{clearEstimatedFloor:!0,allowBelowEstimatedFloor:d||g||_,preserveScrollableOverflow:Fr(t)});c&&o0?s:0);if(te>0){let e=c&&R.value!=null,a=c&&i>0&&i=r-1,o=Nr(t,e?Math.max(R.value,te):a?i:te,r,{allowBelowEstimatedFloor:d});c&&o0?Dr(t,n,Nr(t,b,r,{allowBelowEstimatedFloor:d})):U.value||Dr(t,n,Nr(t,r,r))}catch{}}(typeof e==`object`?e:{}))}function jr(){wr=0,Tr=0}function Z(e=!1){if(N.value)return;let t=T.value;if(!t)return;let n=U.value?H():V();if(n&&typeof n.layout==`function`)try{let r=t.getBoundingClientRect?.call(t),i=Math.ceil((r?.width??0)||t.clientWidth||0),a=Math.ceil((r?.height??0)||t.clientHeight||Number.parseFloat(t.style.height||``)||0);if(i>0&&a>0){if(!e&&i===wr&&a===Tr)return;wr=i,Tr=a,n.layout({width:i,height:a})}else jr(),n.layout()}catch{}}function Q(){if(!U.value)return void Ar();let e=T.value;if(!e)return void Ar();let t=e.querySelector(`.monaco-diff-editor`);if(!t||t.classList.contains(`side-by-side`))return void Ar();let n=Array.from(t.querySelectorAll(`.editor.original .diff-hidden-lines`)),r=Array.from(t.querySelectorAll(`.editor.modified .diff-hidden-lines`)),i=Math.min(n.length,r.length);for(let e=0;e div:first-child`),a=t.querySelector(`.center`);if(!n||!i||!a||a.querySelector(`.markstream-inline-fold-proxy`))continue;let o=document.createElement(`button`);o.type=`button`,o.className=`markstream-inline-fold-proxy`,o.dataset.markstreamInlineFoldProxy=`true`;let s=n.getAttribute(`title`)||`Show Unchanged Region`;o.title=s,o.setAttribute(`aria-label`,s);let c=e=>{e.preventDefault(),e.stopPropagation()},l=e=>{e.preventDefault(),e.stopPropagation(),n.click(),w(()=>$())},u=e=>{e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),e.stopPropagation(),n.click(),w(()=>$()))};o.addEventListener(`mousedown`,c),o.addEventListener(`click`,l),o.addEventListener(`keydown`,u),a.appendChild(o),jt.push(()=>{o.removeEventListener(`mousedown`,c),o.removeEventListener(`click`,l),o.removeEventListener(`keydown`,u),o.parentElement===a&&a.removeChild(o)})}}function $(e=!1){if(L||Ue!=null)return;let t=()=>{L||(Q(),X(e),Z())};Ue=w(()=>{Ue=null,t(),We=w(()=>{We=null,t()})}),Mr()}function Mr(e=!1){if(!U.value||L||!e&&!1===m.loading||(qe||=e,Ke=Math.max(Ke,e?18:6),Ge!=null))return;let t=()=>{if(Ge=null,!U.value||L||Ke<=0||!qe&&!1===m.loading)return Ke=0,void(qe=!1);Ke--,Q(),X({preferModelDiffHeight:!0,holdCurrentDiffHeight:qe}),Z(),Ke>0?Ge=w(t):qe=!1};Ge=w(t)}function Nr(e,t,n,r={}){let i=U.value&&!1!==m.loading?_r(e):null,a=i!=null&&i>t+1?i:t,o=Math.min(a,n),s=!0===r.allowBelowEstimatedFloor||Vn(),c=Hn(o,!0===r.clearEstimatedFloor,{allowBelowEstimatedFloor:s}),l=jn();if(e.style.minHeight=l==null||s?`0px`:`${Math.min(l,Math.ceil(n))}px`,e.style.height=`${c}px`,e.style.maxHeight=`${Math.ceil(n)}px`,U.value)e.style.overflow=`hidden`;else{let i=!0===r.preserveScrollableOverflow||t>n+1;e.style.overflow=i?`auto`:`hidden`}return c}function Pr(e,t=0){let n=Math.ceil(e.getBoundingClientRect?.call(e).height||0),r=Math.max(t,e.clientHeight||0,n);return r>0&&e.scrollHeight>r+1}function Fr(e){return!U.value&&(Qe||Pr(e,Ye.value??0))}function Ir(e){var t,n,r,i;if(!U.value)return;let a=k.value||!vr(e)||e.getBoundingClientRect().height>=Kr()-1;if(Xe===a)return;Xe=a;let o=j(A({},m.monacoOptions?.scrollbar??{}),{handleMouseWheel:a}),s=H();try{(n=(t=(s?.getOriginalEditor)?.call(s))?.updateOptions)==null||n.call(t,{scrollbar:o}),(i=(r=(s?.getModifiedEditor)?.call(s))?.updateOptions)==null||i.call(r,{scrollbar:o})}catch{}}function Lr(e=T.value){return!!Vr(e)||!!e?.querySelector(`.monaco-diff-editor .view-lines .view-line`)}function Rr(e=T.value){return!!Vr(e)||!!e?.querySelector(`.monaco-editor .view-lines .view-line`)}function zr(){var e;if(Vr())return!0;let t=((e=V())?.getModel)?.call(e);return typeof t?.getValue==`function`&&t.getValue()===pn.value}function Br(e=T.value){return!!Vr(e)||!!e?.classList.contains(`stream-monaco-diff-root`)&&!(nn.value&&!e.classList.contains(`stream-monaco-diff-inline`))}function Vr(e=T.value){return!!e?.querySelector(`diffs-container`)}function Hr(e){return!1!==m.loading||K.value||e.classList.contains(`stream-monaco-diff-native-stale`)||vr(e)}function Ur(){let e=H();return typeof e?.getOriginalEditor==`function`||typeof e?.getModifiedEditor==`function`||typeof e?.getLineChanges==`function`}function Wr(){return M(this,arguments,function*(t={}){if(!U.value)return!0;if(Vr())return yield e(),yield Un(),Vr();let n=!1!==t.requireHighlight,r=0,i=Lt(String(m.node.originalCode??``),String(m.node.updatedCode??``)),a=Xn(i.original,i.updated),o=a.added>0||a.removed>0,s=()=>{let e=Lt(String(m.node.originalCode??``),String(m.node.updatedCode??``));e.original===i.original&&e.updated===i.updated||(i=e,a=Xn(i.original,i.updated),o=a.added>0||a.removed>0)};for(let t=0;t<30;t++){if(L)return!1;s();let t=T.value,i=H(),c=cr(),l=!1;try{let e=(i?.getLineChanges)?.call(i);l=Array.isArray(e)&&(!o||e.length>0)}catch{l=!1}let u=!!t?.querySelector(`.monaco-diff-editor`),d=Lr(t),f=!o||Qn(t,a),p=!o||tr(t,a),m=!c||nr(t);if(u&&d&&l&&f&&p&&m&&Zn(t)){try{Bt(),Q(),ur(),$()}catch{}if(yield e(),yield Un(),L)return!1;let t=T.value,i=!cr()||nr(t),s=!o||Qn(t,a),c=!o||tr(t,a),l=ir(t,o),u=or(t,a),d=!n||sr(t),f=Br(t)&&i&&rr(t)&&s&&c&&l&&u&&d,p=Br(t)&&i&&rr(t)&&s&&c&&Zn(t)&&d;if(f||p){if(r++,r>=2)return!0}else r=0}yield e(),yield Un()}return L||(Bt(),Q(),ur(),$(),s()),!1})}function Gr(t,n,r){return M(this,null,function*(){try{yield _t(t,n,r);return}catch(e){if(!zt(e))throw e}if(yield e(),yield Un(),!L&&U.value)try{yield _t(t,n,r)}catch(e){if(!zt(e))throw e}})}function Kr(){let e=m.monacoOptions?.MAX_HEIGHT??500;if(typeof e==`number`)return e;let t=String(e).match(/^(\d+(?:\.\d+)?)/);return t?Number.parseFloat(t[1]):500}let qr=v(()=>m.isShowPreview&&(D.value===`html`||D.value===`svg`));function Jr(){return typeof m.node.loading==`boolean`?m.node.loading:!0===m.loading}function Yr(){if(!Jr())return!0;let e=String(m.node.raw??``),t=e.split(/\r\n|\n|\r/,1)[0]?.trimStart()??``;return!/^(?:`{3,}|~{3,})/.test(t)||/\r\n|\n|\r/.test(e)}function Xr(e,t,n){return!n||Yr()&&String(t??``)?Ae(String(e??``)):`plain`}function Zr(){return Jr()}let Qr=null,$r=!1,ei=0;function ti(){Qr=null,ei++}function ni(){return M(this,arguments,function*(t=ei){if(!$r){$r=!0;try{for(;Qr&&!L&&!U.value&&t===ei;){let t=Qr;Qr=null;try{yield Promise.resolve(gt(t.code,t.language)),yield e(),L||U.value||(X(!1),Z())}catch{}}}finally{$r=!1,!Qr||L||U.value||ni()}}})}function ri(e,t){Qr={code:e,language:t},ni(ei)}t(()=>[m.node.language,m.node.code,m.node.raw,m.node.loading,m.loading],([e,t,n,r,i])=>{D.value=Xr(e,t,typeof r==`boolean`?r:!0===i)}),t(()=>[m.node.originalCode,m.node.updatedCode,U.value],()=>{R.value=null,lr(),w(()=>ur())},{immediate:!0});let ii=0;t(()=>[m.node.originalCode,m.node.updatedCode,O.value,U.value,m.stream],t=>M(null,[t],function*([,,,t,n]){let r=++ii;if(!t||Jr()||!1===n&&!P.value)return;if(!1!==n&&B&&!P.value&&T.value)try{yield vi(T.value)}catch{}let i=wt;if(i&&!F.value){try{yield i}catch{}if(L||!U.value||r!==ii)return}if(r!==ii)return;let a=Lt(String(m.node.originalCode??``),String(m.node.updatedCode??``)),o=!1===m.loading;o&&ki();try{if(yield Gr(a.original,a.updated,O.value),L||!U.value||r!==ii)return;yield e(),Z(!0),Q(),X(!1===m.loading||{preferModelDiffHeight:!0}),Z(!0),$(!0)}catch{return}if(o){if(L||!U.value)return;Bt(),Q(),ur(),$(),Mr(!0)}k.value&&w(()=>Or())})),t(()=>m.node.code,e=>M(null,null,function*(){if(Jr()||!1===m.stream||(D.value||=Ae(Et(e)),U.value))return;let t=wt;if(t&&!F.value){try{yield t}catch{}if(L||U.value)return}if(B&&!P.value&&T.value)try{yield vi(T.value)}catch{}ri(Rt(m.node.code),O.value),k.value&&w(()=>Or())}));let ai=v(()=>{let e=D.value;return e?pe[e]||e.charAt(0).toUpperCase()+e.slice(1):pe[``]||`Plain Text`}),oi=v(()=>fe(String(m.node.raw??``),ai.value,U.value)),si=v(()=>oi.value.title),ci=v(()=>oi.value.caption),li=v(()=>(me.value,function(e,t){if(t===void 0)return we(e);if(t){let n=t(e);if(n!=null&&n!==``)return n}return ve(Ae(e))||be()}(D.value||``,ue))),ui=v(()=>{let e={};e[`--markstream-code-layout-character-width`]=_n.value==null?`1ch`:`${_n.value}px`;let t=e=>{if(e!=null)return typeof e==`number`?`${e}px`:String(e)},n=t(m.minWidth),r=t(m.maxWidth);if(n&&(e.minWidth=n),r&&(e.maxWidth=r),Fn.value&&!U.value&&!N.value){let t=In.value;t!=null&&(e.minHeight=`${t}px`)}return U.value||(e.color=`var(--vscode-editor-foreground, var(--markstream-code-fallback-fg))`,e.backgroundColor=`var(--vscode-editor-background, var(--markstream-code-fallback-bg))`,e.borderColor=`var(--markstream-code-border-color)`),e}),di=v(()=>!1!==m.showTooltips);function fi(){return M(this,null,function*(){try{typeof navigator<`u`&&navigator.clipboard&&typeof navigator.clipboard.writeText==`function`&&(yield navigator.clipboard.writeText(m.node.code)),ze.value=!0,te(`copy`,m.node.code),setTimeout(()=>{ze.value=!1},1e3)}catch(e){console.error(`复制失败:`,e)}})}function pi(){k.value=!k.value;let e=U.value?H():V(),t=T.value;e&&t&&(k.value?(gi(!0),t.style.maxHeight=`none`,t.style.overflow=`visible`,X(!0)):(gi(!1),t.style.overflow=U.value?`hidden`:`auto`,X(!0)),Ir(t))}function mi(){var t;if(N.value=!N.value,N.value){if(Qe=!1,T.value){let e=Math.ceil((t=T.value).getBoundingClientRect?.call(t).height||0);Qe=!U.value&&(Pr(T.value,e)||T.value.style.overflow===`auto`||T.value.style.overflowY===`auto`),e>0&&(Ye.value=e)}gi(!1)}else k.value&&gi(!0),T.value&&Ye.value!=null&&(T.value.style.height=`${Ye.value}px`),Ze=2,e(()=>{N.value||L||(X(!0),Z(!0))})}function hi(){if(!qr.value)return;let e=D.value;if(Ie.value){let t=e===`html`?`text/html`:`image/svg+xml`,n=e===`html`?Le(`artifacts.htmlPreviewTitle`)||`HTML Preview`:Le(`artifacts.svgPreviewTitle`)||`SVG Preview`;te(`previewCode`,{node:m.node,artifactType:t,artifactTitle:n,id:`temp-${e}-${Date.now()}`});return}e===`html`&&(fn.value=!fn.value)}function gi(e){var t,n;try{if(U.value){let n=H();(t=n?.updateOptions)==null||t.call(n,{automaticLayout:e})}else{let t=V();(n=t?.updateOptions)==null||n.call(t,{automaticLayout:e})}}catch{}}function _i(t){return M(this,null,function*(){if(!B||L)return;let n=Wt.value;if(en=!1,q.value=!1,qt.value=null,F.value=!1,K.value=!1,Kt.value=!1,Xe=null,hn.value=null,gn.value=null,_n.value=null,function(){let e=function(){let e=T.value?.parentElement;return e instanceof HTMLElement?e:null}();e&&(e.style.removeProperty(`--stream-monaco-line-number-left`),e.style.removeProperty(`--stream-monaco-line-number-width`),e.style.removeProperty(`--stream-monaco-line-number-gap-to-code`),e.style.removeProperty(`--stream-monaco-original-line-number-gap-to-code`),e.style.removeProperty(`--stream-monaco-modified-line-number-gap-to-code`),e.style.removeProperty(`--stream-monaco-original-scrollable-left`),e.style.removeProperty(`--stream-monaco-modified-scrollable-left`))}(),jr(),function(){Xt.value=!1;let e=On.value;An.value=I.value||e==null?null:e}(),kr(),Ar(),function(e){e.replaceChildren()}(t),ki(),L)return;let r=M(null,null,function*(){if(n===`diff`){(function(){if(Ot||typeof window>`u`)return;Ot=!0;let e=e=>{zt(`reason`in e?e.reason:e.error??e.message)&&(e.preventDefault(),e.stopImmediatePropagation())};window.addEventListener(`error`,e,!0),window.addEventListener(`unhandledrejection`,e,!0),kt=()=>{window.removeEventListener(`error`,e,!0),window.removeEventListener(`unhandledrejection`,e,!0),Ot=!1,kt=null}})(),bt();let e=Lt(String(m.node.originalCode??``),String(m.node.updatedCode??``));ht?yield Pe(()=>ht(t,e.original,e.updated,O.value)):yield Pe(()=>B(t,m.node.code,O.value))}else yield Pe(()=>B(t,pn.value,O.value));F.value=!0}).finally(()=>{wt===r&&(wt=null)});if(wt=r,yield function(t){return M(this,null,function*(){if(!U.value)return void(yield t);let n,r=!1;for(t.then(()=>{r=!0},e=>{r=!0,n=e});;){if(L)return;if(r){if(n)throw n;return}if(Lr()&&Ur())return;yield e(),yield Un()}})}(r),L||Wt.value!==n)return;F.value=!0;let i=n===`diff`?H():V();if(typeof m.monacoOptions?.fontSize==`number`)i?.updateOptions({fontSize:m.monacoOptions.fontSize,automaticLayout:!1}),J.value=m.monacoOptions.fontSize,Y.value=m.monacoOptions.fontSize;else if(!xr()){let e=Gn();e&&e>0?(J.value=e,Y.value=e):(J.value=12,Y.value=12)}br(),yield Ti(),k.value||N.value||X(!1),I.value=!0,Gt.value=n,function(){if(kr(),U.value){let e=H(),t=(e?.getOriginalEditor)?.call(e),n=(e?.getModifiedEditor)?.call(e),r=(e,t)=>{try{let n=e?.[t];if(typeof n!=`function`)return;let r=n.call(e,()=>$());r&&At.push(r)}catch{}};try{let t=(e?.onDidUpdateDiff)?.call(e,()=>{$(),w(()=>ur())});t&&At.push(t)}catch{}r(t,`onDidContentSizeChange`),r(n,`onDidContentSizeChange`);let i=T.value;if(i&&typeof MutationObserver<`u`){let e=[`.view-line`,`.view-lines`,`.view-zones`,`.margin-view-zones`,`.diff-hidden-lines`,`.stream-monaco-diff-unchanged-bridge`,`.stream-monaco-fallback-inline-delete-zone`,`.stream-monaco-fallback-inline-delete-margin`].join(`,`),t=t=>{let n=t instanceof HTMLElement?t:t.parentElement;return!!(n?.closest)?.call(n,e)},n=t=>{let n=t instanceof HTMLElement?t:t.parentElement;return!!((n?.closest)?.call(n,e)||(n?.querySelector)?.call(n,e))},r=new MutationObserver(e=>{U.value&&Hr(i)&&e.some(e=>t(e.target)||Array.from(e.addedNodes).some(n)||Array.from(e.removedNodes).some(t))&&(Q(),X({preferModelDiffHeight:!0}),Z(),Mr())});r.observe(i,{attributeFilter:[`class`],attributes:!0,childList:!0,characterData:!0,subtree:!0}),At.push({dispose:()=>r.disconnect()})}if(i){let e=e=>{if(!(e.target instanceof Element?e.target:null)?.closest([`.stream-monaco-unchanged-summary`,`.stream-monaco-unchanged-reveal`,`.stream-monaco-unchanged-expand`,`.markstream-inline-fold-proxy`,`.diff-hidden-lines .center`].join(`,`)))return;let t=Math.ceil(i.getBoundingClientRect().height||0);t>0&&(R.value=t)};i.addEventListener(`click`,e,!0),At.push({dispose:()=>i.removeEventListener(`click`,e,!0)})}if(i&&typeof ResizeObserver<`u`){let e=new ResizeObserver(()=>{if(!U.value||(Z(),!Hr(i)))return;let e=_r(i);if(e==null)return;let t=Math.ceil(i.getBoundingClientRect().height||0),n=R.value;if(vr(i)&&n!=null){if(t>n+1)R.value=t;else if(te.disconnect()})}return}let e=V();try{let t=(e?.onDidContentSizeChange)?.call(e,()=>$());t&&At.push(t)}catch{}try{let t=(e?.onDidLayoutChange)?.call(e,()=>$());t&&At.push(t)}catch{}}(),Cr(),br(),Q(),ur(),$(),yield e();let a=null;St&&(a=yield St(),a&&(yield e(),yield Un()));let o=a??(n===`diff`?yield Wr({requireHighlight:!0}):yield function(){return M(this,null,function*(){if(Vr())return yield e(),yield Un(),Vr();for(let t=0;t<30;t++){if(L||U.value)return!1;let t=T.value,n=zr(),r=Rr(t),i=!pn.value.trim()||sr(t);if(n&&r&&i&&(yield e(),yield Un(),!L&&!U.value&&zr()&&Rr(T.value)&&(!pn.value.trim()||sr(T.value))))return!0;yield e(),yield Un()}return!1})}());L||(o?(br(),Bn(),(yield zn())||Ii()):Ii())})}function vi(t,n={}){if(!B||L||!1===m.stream&&!1!==m.loading||(Pi(),Fi())||G.value||T.value!==t||Zr())return null;if(Ct)return Ct;if(P.value&&I.value)return Promise.resolve();let r=Mi(),i=Jt.value,a=!1;P.value=!0,function(){let e=xe.value;C&&e&&Je!==e&&(Je&&C.markSettled(Je),Je=e,C.markPending(e))}();let o=M(null,null,function*(){try{yield _i(t),Zt=null}catch(e){let t=Mi(),o=i!==Jt.value,s=!1!==n.allowStaleContentRetry&&o&&Zt!==t;if(r!==t||s)return s&&(Zt=t),a=!0,P.value=!1,I.value=!1,F.value=!1,void(K.value=!1);throw Ii(r),e}}).finally(()=>{Ct===o&&(Ct=null),function(){let t=Je;C&&t&&(Je=``,e(()=>{if(!L){let e=E.value?.offsetHeight??0;e>0&&C.reportHeight(t,e)}C.markSettled(t)}))}(),a&&!L&&queueMicrotask(()=>{var e;let t=T.value;t&&!L&&((e=vi(t))==null||e.catch(e=>{I.value=!1,K.value=!1,Ii()}))})});return Ct=o,o}t(di,e=>{e||De()}),t(()=>Y.value,(e,t)=>{let n=U.value?H():V();n&&typeof e==`number`&&Number.isFinite(e)&&e>0&&(n.updateOptions({fontSize:e}),N.value||X(!0))},{flush:`post`,immediate:!1});let yi=0,bi=t(()=>[T.value,U.value,m.stream,m.loading,He.value,z.value,m.node.language,m.node.raw,m.node.code,m.node.loading],e=>M(null,[e],function*([e,t,n,r,i,a]){let o=++yi;if(!e||!a||Jr()||Qt||!1===n&&!1!==r||!B&&(yield function(){return M(this,null,function*(){if(typeof window>`u`||L||He.value||G.value)return;if(Tt)return Tt;let e=M(null,null,function*(){try{let e=yield Re();if(L)return;if(!e)return void(G.value=!0);let t=e.useMonaco,n=e.detectLanguage;if(typeof n==`function`&&(Et=n),typeof t!=`function`)return;Mt=Oi();let r=t(Mt);B=r.createEditor||B,ht=r.createDiffEditor||ht,gt=r.updateCode||gt,_t=r.updateDiff||_t,vt=r.getEditor||vt,V=r.getEditorView||V,H=r.getDiffEditorView||H,yt=r.cleanupEditor||yt,bt=r.safeClean||r.cleanupEditor||bt,xt=r.refreshDiffPresentation||xt,Dt=r.setTheme||Dt,St=r.whenVisualReady||null,He.value=!0}catch{if(L)return;G.value=!0}}).finally(()=>{Tt===e&&(Tt=null)});return Tt=e,e})}(),o!==yi||!1===m.stream&&!1!==m.loading||Zr()||!z.value||!B||G.value||P.value||Fi()||L||T.value!==e)||Zr())return;let s=vi(e);if(s){try{yield s}catch{I.value=!1,K.value=!1,Ii()}I.value&&K.value&&bi()}}));function xi(e){return!!e&&typeof e==`object`&&`light`in e&&`dark`in e}function Si(e){return typeof e==`string`?e:e&&typeof e==`object`&&`name`in e?String(e.name):null}function Ci(e,t){if(e===t)return!0;let n=Si(e),r=Si(t);return!!n&&n===r}function wi(){let e=function(){if(m.theme!==void 0){let e=m.theme;return xi(e)?m.isDark?e.dark:e.light:e}return m.isDark?m.darkTheme:m.lightTheme}(),t=W.value?.theme,n=e??t;if(typeof n==`object`&&n)return n;let r=Array.isArray(m.themes)?m.themes:[];if(!r.length||n==null)return n;let i=Si(n),a=r.map(e=>Si(e)).filter(e=>!!e);if(!i||a.includes(i))return n;let o=Si(t);return t!=null&&o&&a.includes(o)?t:r[0]}function Ti(){return M(this,arguments,function*(e={}){ki();let t=()=>{U.value&&Bt(),w(()=>{Cr(),$()})};if(e.appearanceOnly)return void t();let n=wi();if(n)try{yield Dt(n),t()}catch{}else t()})}function Ei(e,t){if(typeof t!=`string`)return;let n=Ae(t),r=ye(n),i=[`plain`,`objectivec`,`objectivecpp`].includes(n)?r:n;for(let t of[i,r])t&&!e.includes(t)&&e.push(t)}t(Wt,(t,n)=>M(null,null,function*(){if(t===n||q.value||Qt||(ti(),!B||!T.value)||!P.value||!1===m.stream&&!1!==m.loading||!z.value)return;let r=Ct;if(r){try{yield r}catch{}if(L||!T.value)return}if(Gt.value!==t||!P.value||!I.value)try{I.value=!1,K.value=!1,P.value=!1,F.value=!1,kr(),Ar(),bt(),yield e(),yield vi(T.value)}catch{I.value=!1,K.value=!1,Ii()}}));let Di=v(()=>{let e=[],t=W.value?.languages;if(Array.isArray(t))for(let n of t)Ei(e,n);return Yr()&&Ei(e,m.node.language),Ei(e,D.value),Ei(e,O.value),Ei(e,`plaintext`),e});function Oi(){let e=j(A(j(A({wordWrap:`on`,wrappingIndent:`same`,themes:m.themes},W.value||{}),{languages:Di.value,stream:!1,fontSize:yn.value,lineHeight:xn.value,theme:wi(),disableFileHeader:!0}),U.value?{diffAppearance:Ht.value}:{}),{onThemeChange(){Cr()}}),t=function(){let e=W.value?.fontFamily;return typeof e==`string`&&e.trim()?e.trim():U.value?function(){if(typeof window>`u`)return;let e=E.value?.querySelector(`pre.code-pre-fallback`);if(e)return window.getComputedStyle(e).fontFamily.trim()||void 0}():void 0}();if(t&&(e.fontFamily??=t),U.value){e.wordWrap=tn.value?`on`:`off`;let t=typeof e.unsafeCSS==`string`?`${e.unsafeCSS}\n`:``,n=function(){let e=rn.value;if(!1===e||typeof e==`object`&&!1===e.enabled)return null;let t=typeof e==`object`?e:de,n=Math.max(0,Math.floor(t.contextLineCount??2));return{contextLineCount:n,collapsedContextThreshold:n+Math.max(1,Math.floor(t.minimumLineCount??4))-1}}();e.unsafeCSS=`${t}\npre { column-gap: 0; }\npre > code { column-gap: 0; padding-block: 0; }\n[data-separator="line-info"] { margin-top: 0; }\n`,n?(e.parseDiffOptions=j(A({},e.parseDiffOptions),{context:n.contextLineCount}),e.collapsedContextThreshold=n.collapsedContextThreshold,e.expandUnchanged=!1,e.hunkSeparators=`line-info`,e.unsafeCSS+=`[data-separator="line-info"][data-separator-last] { height: 28px; } `):(e.expandUnchanged=!0,e.hunkSeparators=`simple`)}return e}function ki(){let e=Oi();if(!Mt)return Mt=e,Mt;for(let t of Object.keys(Mt))t in e||delete Mt[t];return Object.assign(Mt,e),Mt}let Ai=v(()=>{var e,t,n,r,i;return JSON.stringify({diffLineStyle:W.value?.diffLineStyle??`background`,diffUnchangedRegionStyle:W.value?.diffUnchangedRegionStyle??`line-info`,diffHideUnchangedRegions:m.monacoOptions?.diffHideUnchangedRegions===void 0?A({},de):Te(m.monacoOptions.diffHideUnchangedRegions),renderSideBySide:(e=W.value?.renderSideBySide)==null||e,useInlineViewWhenSpaceIsLimited:(t=W.value?.useInlineViewWhenSpaceIsLimited)!=null&&t,enableSplitViewResizing:(n=W.value?.enableSplitViewResizing)==null||n,ignoreTrimWhitespace:(r=W.value?.ignoreTrimWhitespace)==null||r,originalEditable:(i=W.value?.originalEditable)!=null&&i})}),ji=y(0);function Mi(){let e=wi();return JSON.stringify({kind:Wt.value,language:O.value,structural:Ai.value,optionsRevision:ji.value,settledContentGeneration:Yt.value,theme:Si(e)??(e==null?null:`custom`),isDark:m.isDark})}t(()=>[m.monacoOptions,m.theme,m.themes,m.lightTheme,m.darkTheme],()=>{ji.value+=1},{deep:!0}),t(()=>[pn.value,m.node.originalCode,m.node.updatedCode],()=>{Jt.value+=1,Jr()||(Yt.value+=1)});let Ni=v(()=>Mi());function Pi(){q.value&&qt.value!==Ni.value&&(q.value=!1,qt.value=null,Zt=null,$t=null,P.value=!1,I.value=!1,F.value=!1,K.value=!1,Kt.value=!1)}function Fi(){return Pi(),q.value&&qt.value===Ni.value}function Ii(e=Ni.value){qt.value=e,q.value=!0,Kt.value=!1}return t(Ni,()=>M(null,null,function*(){if(Qt||!q.value||qt.value===Ni.value||!B||!T.value||G.value||L||!z.value||!1===m.stream&&!1!==m.loading||Zr())return;let t=Ni.value;Qt=!0;try{if(Pi(),q.value)return;yield vi(T.value)}catch{I.value=!1,K.value=!1,Ii()}finally{$t=t,yield e(),Qt=!1}})),t(()=>[m.monacoOptions,z.value],()=>{var e;if(ki(),!B||!z.value)return;let t=U.value?H():V(),n=typeof m.monacoOptions?.fontSize==`number`?m.monacoOptions.fontSize:Number.isFinite(Y.value)?Y.value:void 0;typeof n==`number`&&Number.isFinite(n)&&n>0&&((e=t?.updateOptions)==null||e.call(t,{fontSize:n})),X(!1)},{deep:!0}),t(()=>[wi(),Ht.value,He.value,P.value,z.value],([e],t)=>{He.value&&I.value&&z.value&&Ti({appearanceOnly:t!=null&&Ci(e,t[0])})},{flush:`post`}),t(()=>[Ai.value,He.value,z.value],(t,n)=>M(null,[t,n],function*([t,n,r],[i]){if(ki(),!n||!r||!B||!T.value||!P.value||t===i||!1===m.stream&&!1!==m.loading)return;let a=Ct;if(a){try{yield a}catch{}if(L||!T.value)return}try{I.value=!1,K.value=!1,P.value=!1,F.value=!1,kr(),Ar(),bt(),yield e(),yield vi(T.value,{allowStaleContentRetry:!1})}catch{I.value=!1,K.value=!1,Ii()}}),{flush:`post`}),t(()=>[m.loading,z.value],(t,n)=>M(null,[t,n],function*([t,n],r){if(!n)return;let i=r?.[0];if(!1===i&&!1!==t&&U.value&&P.value&&(yield e(),w(()=>{M(null,null,function*(){let e=Ct;if(e)try{yield e}catch{}!L&&U.value&&!1!==m.loading&&(ki(),Bt(),$())})})),t)return;let a=i!==void 0&&!1!==i;yield e(),w(()=>{M(null,null,function*(){try{if(a&&(yield function(){return M(this,null,function*(){if(!q.value||!B||!T.value||G.value||L||!z.value)return!1;if($t===Ni.value)return!0;Qt=!0;try{q.value=!1,qt.value=null,Zt=null,P.value=!1,I.value=!1,F.value=!1,K.value=!1,kr(),Ar(),bt(),yield e();try{yield vi(T.value)}catch{I.value=!1,K.value=!1,Ii()}}finally{yield e(),Qt=!1}return!0})}()))return void X(!1);if(a&&U.value&&P.value&&en&&T.value)return en=!1,I.value=!1,K.value=!1,P.value=!1,F.value=!1,kr(),Ar(),bt(),yield e(),yield vi(T.value,{allowStaleContentRetry:!1}),void Mr(!0);if(a&&P.value)if(U.value&&T.value){let e=Ct;if(e)try{yield e}catch{}ki();let t=Lt(String(m.node.originalCode??``),String(m.node.updatedCode??``));if(yield Gr(t.original,t.updated,O.value),L||!U.value)return;Bt(),Z(!0),Rn(),Q(),ur();let n=yield Wr({requireHighlight:!0});L||!n||K.value||(yield zn()),$(),Mr(!0)}else ti(),ri(pn.value,O.value);a&&U.value?(X({preferModelDiffHeight:!0,holdCurrentDiffHeight:!0}),Mr(!0)):X(!1)}catch{}})})}),{immediate:!0,flush:`post`}),o(()=>{kr(),Ar(),yt(),kt?.()}),(e,t)=>G.value?(n(),h(b(Oe),{key:0,class:ie([`code-pre-fallback`,{"is-wrap":tn.value}]),style:ee(Pn.value),node:mn.value,loading:m.loading,"show-line-numbers":!0,"diff-inline":nn.value,"diff-hide-unchanged-regions":rn.value},null,8,[`class`,`style`,`node`,`loading`,`diff-inline`,`diff-hide-unchanged-regions`])):(n(),S(`div`,{key:1,ref_key:`container`,ref:E,style:ee(ui.value),class:ie([`code-block-container rounded-lg border`,[{dark:m.isDark,"is-rendering":m.loading,"is-dark":Ut.value,"is-diff":U.value,"is-plain-text":Ve.value}]]),"data-markstream-code-block":`1`,"data-markstream-enhanced":K.value&&!G.value?`true`:`false`,"data-markstream-enhancement-state":dn.value,"data-markstream-code-block-state":Jr()?`streaming`:`settled`,"data-markstream-pending":un.value?`true`:void 0,"data-markstream-viewport-pending":mt.value&&b(nt)&&!z.value?`true`:void 0},[s(et,{"show-header":m.showHeader,"show-collapse-button":m.showCollapseButton,"show-font-size-buttons":m.showFontSizeButtons,"enable-font-size-control":m.enableFontSizeControl,"show-copy-button":m.showCopyButton,"show-expand-button":m.showExpandButton,"show-preview-button":m.showPreviewButton,"show-tooltips":m.showTooltips,"is-dark":m.isDark,loading:m.loading,stream:d.stream,"is-collapsed":N.value,"is-expanded":k.value,"copy-text":ze.value,"is-previewable":qr.value,"code-font-size":Y.value,"code-font-min":10,"code-font-max":36,"default-code-font-size":J.value,"font-baseline-ready":vn.value,"diff-stats":U.value?Nt.value:null,"diff-stats-aria-label":Pt.value,onToggleCollapse:mi,onDecreaseFont:pr,onResetFont:mr,onIncreaseFont:fr,onCopy:fi,onToggleExpand:pi,onPreview:hi},oe({"header-left":ne(()=>[se(e.$slots,`header-left`,{},()=>[g(`div`,ot,[g(`span`,{class:`icon-slot h-4 w-4 flex-shrink-0`,innerHTML:li.value},null,8,st),g(`div`,ct,[g(`div`,lt,x(si.value),1),ci.value?(n(),S(`div`,ut,x(ci.value),1)):u(``,!0)])])],!0)]),loading:ne(()=>[se(e.$slots,`loading`,{loading:d.loading,stream:d.stream},()=>[t[0]||=g(`div`,{class:`loading-skeleton`},[g(`div`,{class:`skeleton-line`}),g(`div`,{class:`skeleton-line`}),g(`div`,{class:`skeleton-line short`})],-1)],!0)]),default:ne(()=>[r(g(`div`,{class:ie([`code-editor-layer`,{"code-editor-layer--collapsed":N.value}])},[g(`div`,{ref_key:`codeEditor`,ref:T,class:ie([`code-editor-container`,d.stream?``:`code-height-placeholder`]),"data-markstream-host-hidden":ln.value?`true`:void 0,style:ee(Ln.value)},null,14,dt),cn.value?(n(),h(b(Oe),{key:0,class:ie([`code-pre-fallback`,{"is-wrap":tn.value}]),style:ee(Pn.value),node:mn.value,"show-line-numbers":!0,"diff-inline":nn.value,"diff-hide-unchanged-regions":rn.value},null,8,[`class`,`style`,`node`,`diff-inline`,`diff-hide-unchanged-regions`])):u(``,!0)],2),[[f,!!d.stream||!d.loading]]),fn.value&&!Ie.value&&qr.value&&D.value===`html`?(n(),h(it,{key:0,code:m.node.code,"html-preview-allow-scripts":m.htmlPreviewAllowScripts,"html-preview-sandbox":m.htmlPreviewSandbox,"is-dark":m.isDark,"on-close":()=>fn.value=!1},null,8,[`code`,`html-preview-allow-scripts`,`html-preview-sandbox`,`is-dark`,`on-close`])):u(``,!0)]),_:2},[e.$slots[`header-right`]?{name:`header-right`,fn:ne(()=>[se(e.$slots,`header-right`,{},void 0,!0)]),key:`0`}:void 0]),1032,[`show-header`,`show-collapse-button`,`show-font-size-buttons`,`enable-font-size-control`,`show-copy-button`,`show-expand-button`,`show-preview-button`,`show-tooltips`,`is-dark`,`loading`,`stream`,`is-collapsed`,`is-expanded`,`copy-text`,`is-previewable`,`code-font-size`,`default-code-font-size`,`font-baseline-ready`,`diff-stats`,`diff-stats-aria-label`])],14,at))}}),[[`__scopeId`,`data-v-72200115`]]);export{pt as default}; \ No newline at end of file diff --git a/apps/pythinker-code/dist-web/assets/DesignSystemView-DWx8o64m.js b/apps/pythinker-code/dist-web/assets/DesignSystemView-BZ48D3sU.js similarity index 99% rename from apps/pythinker-code/dist-web/assets/DesignSystemView-DWx8o64m.js rename to apps/pythinker-code/dist-web/assets/DesignSystemView-BZ48D3sU.js index ff7f3a575..3e5cf51ab 100644 --- a/apps/pythinker-code/dist-web/assets/DesignSystemView-DWx8o64m.js +++ b/apps/pythinker-code/dist-web/assets/DesignSystemView-BZ48D3sU.js @@ -1,4 +1,4 @@ -import{I as e,N as t,P as n,R as r,S as i,b as a,d as o,h as s,ot as ee,ut as c,v as l,w as te,x as u}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{at as d,it as ne,nt as f,rt as re,t as p}from"./index-Ud6NtwuQ.js";var ie={class:`ds-page`},m={class:`layout`},h={class:`content`},g={class:`content-inner`},_={id:`tokens`},v={class:`icon-sizes`},y={class:`sz`},b={class:`p-ic`,style:{width:`14px`,height:`14px`},viewBox:`0 0 24 24`,fill:`currentColor`},x={class:`sz`},S={class:`p-ic`,style:{width:`16px`,height:`16px`},viewBox:`0 0 24 24`,fill:`currentColor`},C={class:`sz`},w={class:`p-ic`,style:{width:`20px`,height:`20px`},viewBox:`0 0 24 24`,fill:`currentColor`},T={class:`icon-grid`},E={class:`icon-group-label`},D={class:`ic-name`},O={id:`primitives`},k={class:`stage-wrap`},A={class:`stage p col`},j={class:`demo-row`},M={class:`p-btn primary disabled`},N={class:`p-spinner sm`,viewBox:`0 0 24 24`,style:{"--p-accent":`#fff`,"--p-line":`rgba(255,255,255,.35)`}},P={class:`stage-wrap`},F={class:`stage p col`},I={class:`demo-row`,style:{"font-size":`22px`,"line-height":`1`}},L={class:`demo-row`},ae={class:`p-thinking`},R={class:`p-thinking`},z={class:`stage-wrap`},B={class:`stage p col`},V={class:`demo-row`,style:{gap:`24px`,"flex-wrap":`wrap`}},H={class:`demo-row`,style:{gap:`24px`,"align-items":`center`}},U={class:`stage-wrap`},W={class:`stage p col`,style:{gap:`0`,background:`var(--p-surface)`,padding:`0`,"max-width":`300px`,"align-items":`stretch`}},G={style:{display:`flex`,"align-items":`center`,gap:`8px`,padding:`7px 10px`,margin:`1px 6px`,"border-radius":`8px`,color:`var(--p-text)`,"font-size":`13px`}},K={style:{color:`var(--d-fg-faint)`,flex:`none`},width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`currentColor`},q={style:{display:`flex`,"align-items":`center`,gap:`8px`,padding:`7px 10px`,margin:`1px 6px`,"border-radius":`8px`,color:`var(--p-text)`,"font-size":`13px`}},J={style:{color:`var(--d-fg-faint)`,flex:`none`},width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`currentColor`},oe={id:`chat`},se={class:`stage-wrap`},ce={class:`stage p col`,style:{"align-items":`center`,background:`#fff`}},le={class:`demo-chat`},ue={class:`p-thinking`},Y={class:`p-action`},de={class:`p-action-head`},fe={class:`p-ic`,style:{color:`var(--p-accent)`},viewBox:`0 0 24 24`,fill:`currentColor`},pe={class:`p-action warn`},me={class:`p-action-head`},he={class:`p-ic`,style:{color:`var(--p-warning)`},viewBox:`0 0 24 24`,fill:`currentColor`},X=d(te({__name:`DesignSystemView`,emits:[`close`],setup(te,{emit:d}){let X=d;function Z(){X(`close`)}let Q=null;function $(e){e.key===`Escape`&&Z()}return t(()=>{document.addEventListener(`keydown`,$);let e=Array.prototype.slice.call(document.querySelectorAll(`#nav a[href^="#"]`)),t=new Map;e.forEach(e=>{let n=e.getAttribute(`href`);if(!n)return;let r=document.getElementById(n.slice(1));r&&t.set(r,e)});let n=null;Q=new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting&&(n&&n.classList.remove(`active`),n=t.get(e.target)??null,n&&n.classList.add(`active`))})},{rootMargin:`-20% 0px -70% 0px`,threshold:0}),t.forEach((e,t)=>Q.observe(t)),e.length&&e[0].classList.add(`active`)}),n(()=>{document.removeEventListener(`keydown`,$),Q&&=(Q.disconnect(),null)}),(t,n)=>(e(),l(`div`,ie,[s(`div`,{class:`ds-topbar`},[s(`button`,{class:`ds-back`,type:`button`,onClick:Z},`← Back`),n[0]||=s(`span`,{class:`ds-topbar-title`},`Design system`,-1)]),s(`div`,m,[n[51]||=a(``,1),s(`main`,h,[s(`div`,g,[n[49]||=a(`
● Design System · v1.0

Pythinker Web Design System

This document defines the visual language and component specification for Pythinker Web — design tokens, component primitives, the chat interface, theming, and style rules. All UI work is grounded in it: unified, restrained, token-driven, and themeable.

Scope apps/pythinker-webComponent primitivesTheme 1 set · 4 customizable colorsLight / dark mode
i
This spec is the single reference when changing the web UI. Before adding or modifying a component, style, layout, or theme, read this document first; color, font, radius, spacing, shadow, z-index, and motion always use the §02 tokens, components reuse the §03 primitives, and the §06 style rules are followed.
01

Design Principles

Every UI decision traces back to the following principles. Pythinker Web is a local Agent tool for developers: quick scanning, long stretches of staring, often in the dark — the design serves the task, and is restrained, clinical, and density-first.

  • Consistency —— The same semantics use the same component. The primary button, dialog, input, and badge should each have exactly "one" correct way to be written across the entire site.
  • Hierarchy —— Build a clear hierarchy through size, weight, color, and whitespace; emphasize through "restraint" rather than "bolder and bigger".
  • Proximity —— Group related elements, leave whitespace between unrelated ones. A card's padding, line spacing, and group spacing all come from the same spacing scale.
  • Feedback —— hover / active / focus / loading / success / error all have visible states, and the state language is unified.
  • Breathing room —— Control density with the spacing scale rather than arbitrary pixels; prefer restrained whitespace over cramming controls together.
  • Accessibility (A11y) —— Text contrast ≥ 4.5:1, visible focus rings, touch targets ≥ 32px, and states that don't rely on color alone.
  • Reduction —— The number of colors, radii, shadow levels, and type sizes all converge to a finite set of tokens; delete stray values.
✓
Brand tone (the do-not list): calm, clinical, never exaggerated. Reject purple gradients, glassmorphism, glowing shadows, AI purple / blue glows, endlessly looping fussy micro-animations, "Boost your productivity"-style marketing copy, and using emoji as icons. These are all common tells of AI-generated interfaces (an "AI tell"), deliberately avoided.
i
Declare design intent first (Design Read): before adding a component / page, write one sentence describing its scenario, audience, and tone (for example, "a lightweight tool card embedded in a conversation, for developers, calm and restrained"), then build. If the intent isn't clear, ask one question first rather than defaulting to the nearest existing style.
`,2),s(`section`,_,[n[7]||=a(`
02

Design Tokens

Collapse every visual decision into tokens. Color tokens keep the existing short names and fill out the semantics (lowering migration cost), while spacing, z-index, motion, and font-weight fill in the scales that are currently missing. Every token has: name, light value, dark value, and usage.

i
Naming convention: --<category>-<role>-<state>. For example --color-text-muted, --radius-md, --space-4. To reduce churn, the existing short names (--bg / --ink / --line / --blue …) are kept as compatibility aliases for one release cycle.

Color

Semantic-first, in three layers: background / text / border + accent + status colors. All colors are defined in light / dark pairs, with contrast ≥ 4.5:1.

i
The table below shows the derived semantic tokens. The neutrals and the accent are derived from the 4 color seeds in §05 — for example --color-accent comes from --accent-primary, and --color-bg comes from the current light / dark surface. The semantic status colors (success / warning / danger / info) are independent palettes paired with the seeds, one set each for light / dark; they are not auto-derived from the seeds. Day-to-day reskinning usually only needs the 4 seeds, with the status colors fine-tuned as needed.
bg
#ffffff / #121212
surface
#fafbfc / #1f1f1f
surface-sunken
#f3f5f8 / #121212
selected
#eceff3 / #2d333b
fg
#14171c / #e8eaed
fg-muted
#6b7280 / #9aa0a8
line
#e7eaee / #2d333b
accent (KMBlue)
#1783ff / #58a6ff
accent-soft
#e8f3ff / rgba(88,166,255,.14)
TokenLightDarkUsage
--color-bg#ffffff#121212Page background
--color-surface#fafbfc#1f1f1fPanel / sidebar / card head
--color-surface-raised#ffffff#292929Raised card / dialog / input
--color-text#14171c#e8eaedBody text / headings
--color-text-muted#6b7280#9aa0a8Secondary text / placeholder
--color-line#e7eaee#2d333bDivider / card border
--color-selected#00000014#ffffff14Neutral selected fill (sidebar rows, list pickers) — translucent, never accent-tinted
--color-hover#0000000d#ffffff0dRow hover wash — lighter than the selected fill (hover < selected); translucent, sits on any surface
--color-media-alpha-bg-1≈#858585≈#676b72Checkerboard square A of the <img> alpha canvas — color-mix of --color-bg/--color-text (52/48); applied via --media-alpha-canvas (16px period)
--color-media-alpha-bg-2≈#6b6b6b≈#7a7e85Checkerboard square B (42/58) — both squares stay ≥3:1 against white and black; opaque images cover the canvas
--color-sidebar-bg#e9eaf2#2c343aSidebar solid composite (row masks / overlays). The visible sidebar surface is the frost pair --color-sidebar-glass + --sidebar-wash blurred by --p-sidebar-backdrop
--color-accent#1783ff#58a6ffPrimary action / link / focus
--color-success#0e7a38#3fb950Success / pass
--color-warning#a9610a#d29922Warning / pending
--color-danger#c0392b#f85149Danger / error / abort

Surface usage

The four surface layers each have a role — choose by "raised layer / default flat layer / sunken layer / page background", and avoid treating --p-surface-raised as a universal background.

TokenLightDarkUsage
--p-surface-raised#ffffff#292929Raised card / dialog / input (raised layer)
--p-surface#fafbfc#1f1f1fPanel / sidebar / card head (default flat layer)
--p-surface-sunken#f3f5f8#121212Code block / inline input / recessed area (sunken layer)
--p-bg#ffffff#121212Page background

Focus ring

All focusable controls (button, input, link, menu item, switch, checkbox) use the focus-ring token uniformly; do not hand-write a box-shadow focus ring.

TokenValueUsage
--p-focus-ring0 0 0 3px var(--p-accent-soft)Default focus ring (link, menu item, switch, checkbox)
--p-focus-ring-strong0 0 0 3px var(--p-accent-soft), 0 0 0 1px var(--p-accent)Strong focus ring (button, primary action)

Text selection

The text-selection color uses --p-selection uniformly (light rgba(23,131,255,.18) / dark rgba(88,166,255,.32)), applied by the global ::selection rule; do not set a separate highlight background.

Disabled state

All disabled controls use opacity:.5 + cursor:not-allowed uniformly; do not separately grey out or recolor.

Font families

Pythinker Web uses two font families: --font-ui (UI and body, Inter first) and --font-mono (code and monospace). Components always reference the variables; do not hard-code font names.

--font-ui · UI & body (Inter first)

Body and UI use self-hosted Inter as the primary face. CJK and platform system UI fonts sit late in the fallback chain so Latin glyphs resolve to Inter while Chinese text can fall through to native CJK fonts:

--font-ui
--font-ui: "Inter Variable", "Inter", "Helvetica Neue", Arial,
+import{I as e,N as t,P as n,R as r,S as i,b as a,d as o,h as s,ot as ee,ut as c,v as l,w as te,x as u}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{at as d,it as ne,nt as f,rt as re,t as p}from"./index-BWCY3EFX.js";var ie={class:`ds-page`},m={class:`layout`},h={class:`content`},g={class:`content-inner`},_={id:`tokens`},v={class:`icon-sizes`},y={class:`sz`},b={class:`p-ic`,style:{width:`14px`,height:`14px`},viewBox:`0 0 24 24`,fill:`currentColor`},x={class:`sz`},S={class:`p-ic`,style:{width:`16px`,height:`16px`},viewBox:`0 0 24 24`,fill:`currentColor`},C={class:`sz`},w={class:`p-ic`,style:{width:`20px`,height:`20px`},viewBox:`0 0 24 24`,fill:`currentColor`},T={class:`icon-grid`},E={class:`icon-group-label`},D={class:`ic-name`},O={id:`primitives`},k={class:`stage-wrap`},A={class:`stage p col`},j={class:`demo-row`},M={class:`p-btn primary disabled`},N={class:`p-spinner sm`,viewBox:`0 0 24 24`,style:{"--p-accent":`#fff`,"--p-line":`rgba(255,255,255,.35)`}},P={class:`stage-wrap`},F={class:`stage p col`},I={class:`demo-row`,style:{"font-size":`22px`,"line-height":`1`}},L={class:`demo-row`},ae={class:`p-thinking`},R={class:`p-thinking`},z={class:`stage-wrap`},B={class:`stage p col`},V={class:`demo-row`,style:{gap:`24px`,"flex-wrap":`wrap`}},H={class:`demo-row`,style:{gap:`24px`,"align-items":`center`}},U={class:`stage-wrap`},W={class:`stage p col`,style:{gap:`0`,background:`var(--p-surface)`,padding:`0`,"max-width":`300px`,"align-items":`stretch`}},G={style:{display:`flex`,"align-items":`center`,gap:`8px`,padding:`7px 10px`,margin:`1px 6px`,"border-radius":`8px`,color:`var(--p-text)`,"font-size":`13px`}},K={style:{color:`var(--d-fg-faint)`,flex:`none`},width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`currentColor`},q={style:{display:`flex`,"align-items":`center`,gap:`8px`,padding:`7px 10px`,margin:`1px 6px`,"border-radius":`8px`,color:`var(--p-text)`,"font-size":`13px`}},J={style:{color:`var(--d-fg-faint)`,flex:`none`},width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`currentColor`},oe={id:`chat`},se={class:`stage-wrap`},ce={class:`stage p col`,style:{"align-items":`center`,background:`#fff`}},le={class:`demo-chat`},ue={class:`p-thinking`},Y={class:`p-action`},de={class:`p-action-head`},fe={class:`p-ic`,style:{color:`var(--p-accent)`},viewBox:`0 0 24 24`,fill:`currentColor`},pe={class:`p-action warn`},me={class:`p-action-head`},he={class:`p-ic`,style:{color:`var(--p-warning)`},viewBox:`0 0 24 24`,fill:`currentColor`},X=d(te({__name:`DesignSystemView`,emits:[`close`],setup(te,{emit:d}){let X=d;function Z(){X(`close`)}let Q=null;function $(e){e.key===`Escape`&&Z()}return t(()=>{document.addEventListener(`keydown`,$);let e=Array.prototype.slice.call(document.querySelectorAll(`#nav a[href^="#"]`)),t=new Map;e.forEach(e=>{let n=e.getAttribute(`href`);if(!n)return;let r=document.getElementById(n.slice(1));r&&t.set(r,e)});let n=null;Q=new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting&&(n&&n.classList.remove(`active`),n=t.get(e.target)??null,n&&n.classList.add(`active`))})},{rootMargin:`-20% 0px -70% 0px`,threshold:0}),t.forEach((e,t)=>Q.observe(t)),e.length&&e[0].classList.add(`active`)}),n(()=>{document.removeEventListener(`keydown`,$),Q&&=(Q.disconnect(),null)}),(t,n)=>(e(),l(`div`,ie,[s(`div`,{class:`ds-topbar`},[s(`button`,{class:`ds-back`,type:`button`,onClick:Z},`← Back`),n[0]||=s(`span`,{class:`ds-topbar-title`},`Design system`,-1)]),s(`div`,m,[n[51]||=a(``,1),s(`main`,h,[s(`div`,g,[n[49]||=a(`
● Design System · v1.0

Pythinker Web Design System

This document defines the visual language and component specification for Pythinker Web — design tokens, component primitives, the chat interface, theming, and style rules. All UI work is grounded in it: unified, restrained, token-driven, and themeable.

Scope apps/pythinker-webComponent primitivesTheme 1 set · 4 customizable colorsLight / dark mode
i
This spec is the single reference when changing the web UI. Before adding or modifying a component, style, layout, or theme, read this document first; color, font, radius, spacing, shadow, z-index, and motion always use the §02 tokens, components reuse the §03 primitives, and the §06 style rules are followed.
01

Design Principles

Every UI decision traces back to the following principles. Pythinker Web is a local Agent tool for developers: quick scanning, long stretches of staring, often in the dark — the design serves the task, and is restrained, clinical, and density-first.

  • Consistency —— The same semantics use the same component. The primary button, dialog, input, and badge should each have exactly "one" correct way to be written across the entire site.
  • Hierarchy —— Build a clear hierarchy through size, weight, color, and whitespace; emphasize through "restraint" rather than "bolder and bigger".
  • Proximity —— Group related elements, leave whitespace between unrelated ones. A card's padding, line spacing, and group spacing all come from the same spacing scale.
  • Feedback —— hover / active / focus / loading / success / error all have visible states, and the state language is unified.
  • Breathing room —— Control density with the spacing scale rather than arbitrary pixels; prefer restrained whitespace over cramming controls together.
  • Accessibility (A11y) —— Text contrast ≥ 4.5:1, visible focus rings, touch targets ≥ 32px, and states that don't rely on color alone.
  • Reduction —— The number of colors, radii, shadow levels, and type sizes all converge to a finite set of tokens; delete stray values.
✓
Brand tone (the do-not list): calm, clinical, never exaggerated. Reject purple gradients, glassmorphism, glowing shadows, AI purple / blue glows, endlessly looping fussy micro-animations, "Boost your productivity"-style marketing copy, and using emoji as icons. These are all common tells of AI-generated interfaces (an "AI tell"), deliberately avoided.
i
Declare design intent first (Design Read): before adding a component / page, write one sentence describing its scenario, audience, and tone (for example, "a lightweight tool card embedded in a conversation, for developers, calm and restrained"), then build. If the intent isn't clear, ask one question first rather than defaulting to the nearest existing style.
`,2),s(`section`,_,[n[7]||=a(`
02

Design Tokens

Collapse every visual decision into tokens. Color tokens keep the existing short names and fill out the semantics (lowering migration cost), while spacing, z-index, motion, and font-weight fill in the scales that are currently missing. Every token has: name, light value, dark value, and usage.

i
Naming convention: --<category>-<role>-<state>. For example --color-text-muted, --radius-md, --space-4. To reduce churn, the existing short names (--bg / --ink / --line / --blue …) are kept as compatibility aliases for one release cycle.

Color

Semantic-first, in three layers: background / text / border + accent + status colors. All colors are defined in light / dark pairs, with contrast ≥ 4.5:1.

i
The table below shows the derived semantic tokens. The neutrals and the accent are derived from the 4 color seeds in §05 — for example --color-accent comes from --accent-primary, and --color-bg comes from the current light / dark surface. The semantic status colors (success / warning / danger / info) are independent palettes paired with the seeds, one set each for light / dark; they are not auto-derived from the seeds. Day-to-day reskinning usually only needs the 4 seeds, with the status colors fine-tuned as needed.
bg
#ffffff / #121212
surface
#fafbfc / #1f1f1f
surface-sunken
#f3f5f8 / #121212
selected
#eceff3 / #2d333b
fg
#14171c / #e8eaed
fg-muted
#6b7280 / #9aa0a8
line
#e7eaee / #2d333b
accent (KMBlue)
#1783ff / #58a6ff
accent-soft
#e8f3ff / rgba(88,166,255,.14)
TokenLightDarkUsage
--color-bg#ffffff#121212Page background
--color-surface#fafbfc#1f1f1fPanel / sidebar / card head
--color-surface-raised#ffffff#292929Raised card / dialog / input
--color-text#14171c#e8eaedBody text / headings
--color-text-muted#6b7280#9aa0a8Secondary text / placeholder
--color-line#e7eaee#2d333bDivider / card border
--color-selected#00000014#ffffff14Neutral selected fill (sidebar rows, list pickers) — translucent, never accent-tinted
--color-hover#0000000d#ffffff0dRow hover wash — lighter than the selected fill (hover < selected); translucent, sits on any surface
--color-media-alpha-bg-1≈#858585≈#676b72Checkerboard square A of the <img> alpha canvas — color-mix of --color-bg/--color-text (52/48); applied via --media-alpha-canvas (16px period)
--color-media-alpha-bg-2≈#6b6b6b≈#7a7e85Checkerboard square B (42/58) — both squares stay ≥3:1 against white and black; opaque images cover the canvas
--color-sidebar-bg#e9eaf2#2c343aSidebar solid composite (row masks / overlays). The visible sidebar surface is the frost pair --color-sidebar-glass + --sidebar-wash blurred by --p-sidebar-backdrop
--color-accent#1783ff#58a6ffPrimary action / link / focus
--color-success#0e7a38#3fb950Success / pass
--color-warning#a9610a#d29922Warning / pending
--color-danger#c0392b#f85149Danger / error / abort

Surface usage

The four surface layers each have a role — choose by "raised layer / default flat layer / sunken layer / page background", and avoid treating --p-surface-raised as a universal background.

TokenLightDarkUsage
--p-surface-raised#ffffff#292929Raised card / dialog / input (raised layer)
--p-surface#fafbfc#1f1f1fPanel / sidebar / card head (default flat layer)
--p-surface-sunken#f3f5f8#121212Code block / inline input / recessed area (sunken layer)
--p-bg#ffffff#121212Page background

Focus ring

All focusable controls (button, input, link, menu item, switch, checkbox) use the focus-ring token uniformly; do not hand-write a box-shadow focus ring.

TokenValueUsage
--p-focus-ring0 0 0 3px var(--p-accent-soft)Default focus ring (link, menu item, switch, checkbox)
--p-focus-ring-strong0 0 0 3px var(--p-accent-soft), 0 0 0 1px var(--p-accent)Strong focus ring (button, primary action)

Text selection

The text-selection color uses --p-selection uniformly (light rgba(23,131,255,.18) / dark rgba(88,166,255,.32)), applied by the global ::selection rule; do not set a separate highlight background.

Disabled state

All disabled controls use opacity:.5 + cursor:not-allowed uniformly; do not separately grey out or recolor.

Font families

Pythinker Web uses two font families: --font-ui (UI and body, Inter first) and --font-mono (code and monospace). Components always reference the variables; do not hard-code font names.

--font-ui · UI & body (Inter first)

Body and UI use self-hosted Inter as the primary face. CJK and platform system UI fonts sit late in the fallback chain so Latin glyphs resolve to Inter while Chinese text can fall through to native CJK fonts:

--font-ui
--font-ui: "Inter Variable", "Inter", "Helvetica Neue", Arial,
       "PingFang SC", "Microsoft YaHei", "Noto Sans SC",
       -apple-system, BlinkMacSystemFont, "Segoe UI",
       Roboto, Ubuntu, sans-serif,
diff --git a/apps/pythinker-code/dist-web/assets/Tooltip-Bj1LyJqp.js b/apps/pythinker-code/dist-web/assets/Tooltip-Dg3XeiZZ.js
similarity index 98%
rename from apps/pythinker-code/dist-web/assets/Tooltip-Bj1LyJqp.js
rename to apps/pythinker-code/dist-web/assets/Tooltip-Dg3XeiZZ.js
index b64473b12..494f67da9 100644
--- a/apps/pythinker-code/dist-web/assets/Tooltip-Bj1LyJqp.js
+++ b/apps/pythinker-code/dist-web/assets/Tooltip-Dg3XeiZZ.js
@@ -1 +1 @@
-import{A as e,G as t,I as n,J as r,S as i,c as a,f as o,g as s,h as c,j as l,lt as u,n as d,nt as f,q as p,st as m,ut as h,w as g,x as _}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{t as v}from"./preload-helper-Czpn1I53.js";import{_ as y}from"./index-Ud6NtwuQ.js";var b=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),x=[`id`],S=[`data-placement`],C=y(g({__name:`Tooltip`,props:{visible:{type:Boolean},anchorEl:{},content:{},placement:{},offset:{},originX:{},originY:{},id:{},isDark:{type:[Boolean,null]}},setup(g){let y=g,C=f(null),w=f(null),T=f({transform:`translate3d(0px, 0px, 0px)`,left:`0px`,top:`0px`}),E=f({}),D=f(y.placement??`top`),O=f(!1),k=null,A=null,j=null,M=null,N=null,P=0;function F(){return M?Promise.resolve(M):(N||=v(()=>import(`./floating-ui.dom-Bro65ANL.js`).then(e=>(M=e,e)),[]).catch(e=>{throw N=null,e}),N)}function I(){k&&=(k(),null),A=null,j=null}function L(e){return b(this,null,function*(){let t=y.anchorEl,n=C.value;if(!y.visible||!t||!n||A===t&&j===n)return;let{autoUpdate:r}=yield F();e()&&y.visible&&y.anchorEl===t&&C.value===n&&(I(),A=t,j=n,k=r(t,n,()=>{R().catch(()=>{z()})}))})}function R(){return b(this,null,function*(){let e=y.anchorEl,t=C.value;if(!y.visible||!e||!t)return!1;let{arrow:n,computePosition:r,flip:i,offset:a,shift:o}=yield F();if(!y.visible||y.anchorEl!==e||C.value!==t)return!1;let s=[a(y.offset??6),i(),o({padding:6}),...w.value?[n({element:w.value,padding:4})]:[]],{x:c,y:l,placement:u,middlewareData:d}=yield r(e,t,{placement:y.placement??`top`,middleware:s,strategy:`fixed`});if(!y.visible||y.anchorEl!==e||C.value!==t)return!1;if(T.value.transform=`translate3d(${Math.round(c)}px, ${Math.round(l)}px, 0)`,T.value.left=`0px`,T.value.top=`0px`,D.value=u,d.arrow&&w.value){let{x:e,y:t}=d.arrow,n={top:`bottom`,bottom:`top`,left:`right`,right:`left`}[u.split(`-`)[0]];E.value={left:e==null?``:`${e}px`,top:t==null?``:`${t}px`,[n]:`-3px`}}return!0})}function z(){let e=y.anchorEl,t=C.value;if(!e||!t)return!1;let n=e.getBoundingClientRect(),r=t.getBoundingClientRect(),i=y.offset??6,a=y.placement??`top`,o=n.left,s=n.top;return a===`bottom`?s=n.bottom+i:a===`left`?o=n.left-r.width-i:a===`right`?o=n.right+i:s=n.top-r.height-i,T.value.transform=`translate3d(${Math.round(Math.max(0,o))}px, ${Math.round(Math.max(0,s))}px, 0)`,T.value.left=`0px`,T.value.top=`0px`,D.value=a,E.value={},!0}t(()=>y.visible,t=>b(null,null,function*(){let n=++P;if(t){if(O.value=!1,yield e(),n!==P||!y.visible)return;if(y.anchorEl&&C.value)try{let t=y.anchorEl,r=C.value,i=t.getBoundingClientRect();if(!(yield R())||n!==P||!y.visible||y.anchorEl!==t||C.value!==r)return;let a=T.value.transform;if(y.originX!=null&&y.originY!=null){let t=Math.abs(Number(y.originX)-i.left),r=Math.abs(Number(y.originY)-i.top);if(Math.hypot(t,r)>120){if(T.value.transform=`translate3d(${Math.round(y.originX)}px, ${Math.round(y.originY)}px, 0)`,yield e(),n!==P||!y.visible||(O.value=!0,yield e(),n!==P||!y.visible))return;T.value.transform=a}else O.value=!0}else O.value=!0;yield L(()=>n===P)}catch{if(n!==P||!y.visible)return;if(O.value=z(),y.anchorEl&&C.value)try{yield L(()=>n===P)}catch{}}else O.value=!0}else O.value=!1,I()}));let B=0;return t([()=>y.anchorEl,()=>y.placement,()=>y.content],()=>b(null,null,function*(){let t=++B;if(y.visible&&y.anchorEl&&C.value){if(yield e(),t!==B||!y.visible||!y.anchorEl||!C.value)return;try{let e=yield R();if(t!==B||!y.visible||!y.anchorEl||!C.value)return;e||z()}catch{z()}yield L(()=>t===B)}})),l(()=>{P+=1,I()}),(e,t)=>(n(),s(o,{to:`body`},[c(`div`,{class:m([`markstream-vue`,{dark:g.isDark}])},[i(d,{name:`tooltip`,appear:``},{default:p(()=>[r(c(`div`,{id:y.id,ref_key:`tooltip`,ref:C,style:u({position:`fixed`,left:T.value.left,top:T.value.top,transform:T.value.transform,visibility:O.value?`visible`:`hidden`,pointerEvents:O.value?void 0:`none`}),class:`tooltip-element`,role:`tooltip`},[_(h(g.content)+` `,1),c(`div`,{ref_key:`arrowEl`,ref:w,class:`tooltip-arrow`,"data-placement":D.value,style:u(E.value)},null,12,S)],12,x),[[a,g.visible]])]),_:1})],2)]))}}),[[`__scopeId`,`data-v-c606ee4c`]]);export{C as default};
\ No newline at end of file
+import{A as e,G as t,I as n,J as r,S as i,c as a,f as o,g as s,h as c,j as l,lt as u,n as d,nt as f,q as p,st as m,ut as h,w as g,x as _}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{t as v}from"./preload-helper-Czpn1I53.js";import{_ as y}from"./index-BWCY3EFX.js";var b=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),x=[`id`],S=[`data-placement`],C=y(g({__name:`Tooltip`,props:{visible:{type:Boolean},anchorEl:{},content:{},placement:{},offset:{},originX:{},originY:{},id:{},isDark:{type:[Boolean,null]}},setup(g){let y=g,C=f(null),w=f(null),T=f({transform:`translate3d(0px, 0px, 0px)`,left:`0px`,top:`0px`}),E=f({}),D=f(y.placement??`top`),O=f(!1),k=null,A=null,j=null,M=null,N=null,P=0;function F(){return M?Promise.resolve(M):(N||=v(()=>import(`./floating-ui.dom-Bro65ANL.js`).then(e=>(M=e,e)),[]).catch(e=>{throw N=null,e}),N)}function I(){k&&=(k(),null),A=null,j=null}function L(e){return b(this,null,function*(){let t=y.anchorEl,n=C.value;if(!y.visible||!t||!n||A===t&&j===n)return;let{autoUpdate:r}=yield F();e()&&y.visible&&y.anchorEl===t&&C.value===n&&(I(),A=t,j=n,k=r(t,n,()=>{R().catch(()=>{z()})}))})}function R(){return b(this,null,function*(){let e=y.anchorEl,t=C.value;if(!y.visible||!e||!t)return!1;let{arrow:n,computePosition:r,flip:i,offset:a,shift:o}=yield F();if(!y.visible||y.anchorEl!==e||C.value!==t)return!1;let s=[a(y.offset??6),i(),o({padding:6}),...w.value?[n({element:w.value,padding:4})]:[]],{x:c,y:l,placement:u,middlewareData:d}=yield r(e,t,{placement:y.placement??`top`,middleware:s,strategy:`fixed`});if(!y.visible||y.anchorEl!==e||C.value!==t)return!1;if(T.value.transform=`translate3d(${Math.round(c)}px, ${Math.round(l)}px, 0)`,T.value.left=`0px`,T.value.top=`0px`,D.value=u,d.arrow&&w.value){let{x:e,y:t}=d.arrow,n={top:`bottom`,bottom:`top`,left:`right`,right:`left`}[u.split(`-`)[0]];E.value={left:e==null?``:`${e}px`,top:t==null?``:`${t}px`,[n]:`-3px`}}return!0})}function z(){let e=y.anchorEl,t=C.value;if(!e||!t)return!1;let n=e.getBoundingClientRect(),r=t.getBoundingClientRect(),i=y.offset??6,a=y.placement??`top`,o=n.left,s=n.top;return a===`bottom`?s=n.bottom+i:a===`left`?o=n.left-r.width-i:a===`right`?o=n.right+i:s=n.top-r.height-i,T.value.transform=`translate3d(${Math.round(Math.max(0,o))}px, ${Math.round(Math.max(0,s))}px, 0)`,T.value.left=`0px`,T.value.top=`0px`,D.value=a,E.value={},!0}t(()=>y.visible,t=>b(null,null,function*(){let n=++P;if(t){if(O.value=!1,yield e(),n!==P||!y.visible)return;if(y.anchorEl&&C.value)try{let t=y.anchorEl,r=C.value,i=t.getBoundingClientRect();if(!(yield R())||n!==P||!y.visible||y.anchorEl!==t||C.value!==r)return;let a=T.value.transform;if(y.originX!=null&&y.originY!=null){let t=Math.abs(Number(y.originX)-i.left),r=Math.abs(Number(y.originY)-i.top);if(Math.hypot(t,r)>120){if(T.value.transform=`translate3d(${Math.round(y.originX)}px, ${Math.round(y.originY)}px, 0)`,yield e(),n!==P||!y.visible||(O.value=!0,yield e(),n!==P||!y.visible))return;T.value.transform=a}else O.value=!0}else O.value=!0;yield L(()=>n===P)}catch{if(n!==P||!y.visible)return;if(O.value=z(),y.anchorEl&&C.value)try{yield L(()=>n===P)}catch{}}else O.value=!0}else O.value=!1,I()}));let B=0;return t([()=>y.anchorEl,()=>y.placement,()=>y.content],()=>b(null,null,function*(){let t=++B;if(y.visible&&y.anchorEl&&C.value){if(yield e(),t!==B||!y.visible||!y.anchorEl||!C.value)return;try{let e=yield R();if(t!==B||!y.visible||!y.anchorEl||!C.value)return;e||z()}catch{z()}yield L(()=>t===B)}})),l(()=>{P+=1,I()}),(e,t)=>(n(),s(o,{to:`body`},[c(`div`,{class:m([`markstream-vue`,{dark:g.isDark}])},[i(d,{name:`tooltip`,appear:``},{default:p(()=>[r(c(`div`,{id:y.id,ref_key:`tooltip`,ref:C,style:u({position:`fixed`,left:T.value.left,top:T.value.top,transform:T.value.transform,visibility:O.value?`visible`:`hidden`,pointerEvents:O.value?void 0:`none`}),class:`tooltip-element`,role:`tooltip`},[_(h(g.content)+` `,1),c(`div`,{ref_key:`arrowEl`,ref:w,class:`tooltip-arrow`,"data-placement":D.value,style:u(E.value)},null,12,S)],12,x),[[a,g.visible]])]),_:1})],2)]))}}),[[`__scopeId`,`data-v-c606ee4c`]]);export{C as default};
\ No newline at end of file
diff --git a/apps/pythinker-code/dist-web/assets/index-Ud6NtwuQ.js b/apps/pythinker-code/dist-web/assets/index-BWCY3EFX.js
similarity index 95%
rename from apps/pythinker-code/dist-web/assets/index-Ud6NtwuQ.js
rename to apps/pythinker-code/dist-web/assets/index-BWCY3EFX.js
index a60b457f4..667949c59 100644
--- a/apps/pythinker-code/dist-web/assets/index-Ud6NtwuQ.js
+++ b/apps/pythinker-code/dist-web/assets/index-BWCY3EFX.js
@@ -1,4 +1,4 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DesignSystemView-DWx8o64m.js","assets/vue.runtime.esm-bundler-CfVMpQsG.js","assets/rolldown-runtime-QTnfLwEv.js","assets/DesignSystemView-BKLoAAV8.css","assets/mhchem-Cyl3090Q.js","assets/katex-KvbZ9TWr.js","assets/mermaid.core-CL4kgY7H.js","assets/preload-helper-Czpn1I53.js","assets/chunk-Y2CYZVJY-DsF7k-Jl.js","assets/src-_wZywoZs.js","assets/chunk-DU6HZSFF-rOfNFUfo.js","assets/purify.es-DaBa283-.js","assets/chunk-75Z2AOVW-CkPsS-_5.js","assets/dist-D9sYb5Oa.js","assets/chunk-CLGD4ZFX-BKS09PJx.js","assets/chunk-PWAF6VOD-hqfkyfhT.js","assets/chunk-GMAD6QVW-ChoQtk4g.js","assets/chunk-P2QGCYS3-dHvfyrzQ.js","assets/chunk-4HAMMTFA-DsnHr1Wf.js","assets/rough.esm-CSKSodPl.js","assets/chunk-GVQU2GXP-DP6ao_b2.js","assets/chunk-OSK3NFVY-CKdbAZg-.js","assets/line-CWmZkD4P.js","assets/path-BWPyau1x.js","assets/array-BifhSqXX.js","assets/chunk-L3NEJ4N5-HaoP_cNN.js","assets/chunk-TLUHSLCS-CXntED1L.js","assets/chunk-2E4U76K2-C13TmL8F.js","assets/graphlib-DS17s2tU.js","assets/chunk-LNGE3PJU-DNNNwF8Y.js","assets/Tooltip-Bj1LyJqp.js","assets/CodeBlockNode-D0W6r4O4.js","assets/safeRaf-BDp3SJMs.js","assets/index7-DVxpAUAg.js","assets/index6-DWSH8E97.js","assets/index5-zhInUTZK.js","assets/index11-Cc6dLv_C.js","assets/index10-CgiEr33-.js","assets/index8-BogL88_S.js","assets/index3-CB2yWI7V.js","assets/index4-a1ugmBbs.js","assets/index9-DrhwA7rQ.js","assets/editor.main-DA7Mpuky.js","assets/editor.api2-OGP5z-MP.js","assets/editor-D_FpifaX.css","assets/monaco.contribution-Bf41IVDZ.js","assets/workers-Dlh03xFx.js","assets/dist-tn7yMyXj.js","assets/dist-Hmm53X0p.js"])))=>i.map(i=>d[i]);
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DesignSystemView-BZ48D3sU.js","assets/vue.runtime.esm-bundler-CfVMpQsG.js","assets/rolldown-runtime-QTnfLwEv.js","assets/DesignSystemView-BKLoAAV8.css","assets/mhchem-Cyl3090Q.js","assets/katex-KvbZ9TWr.js","assets/mermaid.core-CL4kgY7H.js","assets/preload-helper-Czpn1I53.js","assets/chunk-Y2CYZVJY-DsF7k-Jl.js","assets/src-_wZywoZs.js","assets/chunk-DU6HZSFF-rOfNFUfo.js","assets/purify.es-DaBa283-.js","assets/chunk-75Z2AOVW-CkPsS-_5.js","assets/dist-D9sYb5Oa.js","assets/chunk-CLGD4ZFX-BKS09PJx.js","assets/chunk-PWAF6VOD-hqfkyfhT.js","assets/chunk-GMAD6QVW-ChoQtk4g.js","assets/chunk-P2QGCYS3-dHvfyrzQ.js","assets/chunk-4HAMMTFA-DsnHr1Wf.js","assets/rough.esm-CSKSodPl.js","assets/chunk-GVQU2GXP-DP6ao_b2.js","assets/chunk-OSK3NFVY-CKdbAZg-.js","assets/line-CWmZkD4P.js","assets/path-BWPyau1x.js","assets/array-BifhSqXX.js","assets/chunk-L3NEJ4N5-HaoP_cNN.js","assets/chunk-TLUHSLCS-CXntED1L.js","assets/chunk-2E4U76K2-C13TmL8F.js","assets/graphlib-DS17s2tU.js","assets/chunk-LNGE3PJU-DNNNwF8Y.js","assets/Tooltip-Dg3XeiZZ.js","assets/CodeBlockNode-dfP7URyJ.js","assets/safeRaf-BDp3SJMs.js","assets/index7-D3XnABVb.js","assets/index6-DOjSPjd-.js","assets/index5-Cr4upCog.js","assets/index11-D1N3NjXP.js","assets/index10-E02w5TzI.js","assets/index8-CstP1mIT.js","assets/index3-BpVQpQH2.js","assets/index4-DMAnvl7P.js","assets/index9-BMNg-UH3.js","assets/editor.main-DA7Mpuky.js","assets/editor.api2-OGP5z-MP.js","assets/editor-D_FpifaX.css","assets/monaco.contribution-Bf41IVDZ.js","assets/workers-Dlh03xFx.js","assets/dist-tn7yMyXj.js","assets/dist-Hmm53X0p.js"])))=>i.map(i=>d[i]);
 import{n as e,r as t,t as n}from"./rolldown-runtime-QTnfLwEv.js";import{$ as r,A as i,B as a,C as o,D as s,E as c,G as l,I as u,J as d,K as f,L as p,M as m,N as h,O as g,P as _,Q as v,R as y,S as b,T as x,U as S,V as C,W as w,X as T,Y as E,Z as D,_ as O,a as k,at as A,b as j,c as M,ct as N,d as P,et as F,f as ee,g as I,h as L,i as te,it as ne,j as re,k as ie,l as ae,lt as oe,m as R,n as se,nt as z,o as ce,ot as B,p as le,q as V,r as ue,rt as de,s as fe,st as H,tt as pe,u as U,ut as W,v as G,w as K,x as q,y as me,z as he}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{t as ge}from"./preload-helper-Czpn1I53.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var _e=typeof window<`u`,ve=(e,t=!1)=>t?Symbol.for(e):Symbol(e),ye=(e,t,n)=>be({l:e,k:t,s:n}),be=e=>JSON.stringify(e).replace(/\u2028/g,`\\u2028`).replace(/\u2029/g,`\\u2029`).replace(/\u0027/g,`\\u0027`),xe=e=>typeof e==`number`&&isFinite(e),Se=e=>ze(e)===`[object Date]`,Ce=e=>ze(e)===`[object RegExp]`,we=e=>Be(e)&&Object.keys(e).length===0,Te=Object.assign,Ee=Object.create,De=(e=null)=>Ee(e),Oe,ke=()=>Oe||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:De(),Ae=Object.prototype.hasOwnProperty;function je(e,t){return Ae.call(e,t)}var Me=Array.isArray,Ne=e=>typeof e==`function`,Pe=e=>typeof e==`string`,Fe=e=>typeof e==`boolean`,Ie=e=>typeof e==`object`&&!!e,Le=e=>Ie(e)&&Ne(e.then)&&Ne(e.catch),Re=Object.prototype.toString,ze=e=>Re.call(e),Be=e=>ze(e)===`[object Object]`,Ve=e=>e==null?``:Me(e)||Be(e)&&e.toString===Re?JSON.stringify(e,null,2):String(e);function He(e,t=``){return e.reduce((e,n,r)=>r===0?e+n:e+t+n,``)}function Ue(e,t){typeof console<`u`&&(console.warn(`[intlify] `+e),t&&console.warn(t.stack))}function We(e){return e.replace(/&/g,`&`).replace(//g,`>`).replace(/"/g,`"`).replace(/'/g,`'`).replace(/\//g,`/`).replace(/=/g,`=`)}function Ge(e){return e.replace(/&(?![a-z0-9#]{2,6};)/gi,`&`).replace(/"/g,`"`).replace(/'/g,`'`).replace(//g,`>`)}var Ke=/^javascript:/i,qe=/^(?:href|src|action|formaction)$/i,Je=/&#(?:x([0-9a-f]+)|(\d+));?/gi,Ye=/&(?:Tab|NewLine);/g,Xe=/:?/gi,Ze=/[\u0000-\u0020\u007f-\u009f]/g,Qe=/(?:^|[\s"'<>/])on\w+\s*=\s*["']?[^"'>]+["']?/i,$e=/(^|[\s"'<>/])on(\w+\s*=)/gi,et=/(^|[\s"'<>/])((?:href|src|action|formaction)\s*=\s*)([^\s"'=<>`]+)/gi;function tt(e,t,n){let r=t||n;if(!r)return e;let i=Number.parseInt(r,t?16:10);return i<=127?String.fromCharCode(i):e}function nt(e){let t=e.replace(Je,tt).replace(Ye,``).replace(Xe,`:`).replace(Ze,``);return Ke.test(t)}function rt(e){let t=/url\s*\(/gi,n=``,r=0,i;for(;(i=t.exec(e))!==null;){let a=i.index,o=t.lastIndex-1,s=o+1,c=1,l=null;for(;s`${t}="${it(t,n)}"`),e=e.replace(/([\w:-]+)\s*=\s*'([^']*)'/g,(e,t,n)=>`${t}='${it(t,n)}'`),Qe.test(e)&&(e=e.replace($e,`$1on$2`)),e=e.replace(et,(e,t,n,r)=>nt(r)?`${t}${n}about:blank`:e),e}var ot=e=>!Ie(e)||Me(e);function st(e,t){if(ot(e)||ot(t))throw Error(`Invalid value`);let n=[{src:e,des:t}];for(;n.length;){let{src:e,des:t}=n.pop();Object.keys(e).forEach(r=>{if(r===`__proto__`)return;let i=e[r];if(Me(i)){let e=[];e.length=i.length,t[r]=e,n.push({src:i,des:e})}else Ie(i)?((!Ie(t[r])||Me(t[r]))&&(t[r]=De()),n.push({src:i,des:t[r]})):t[r]=i})}}function ct(e,t,n){return{line:e,column:t,offset:n}}function lt(e,t,n){let r={start:e,end:t};return n!=null&&(r.source=n),r}var ut={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16};ut.EXPECTED_TOKEN,ut.INVALID_TOKEN_IN_PLACEHOLDER,ut.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,ut.UNKNOWN_ESCAPE_SEQUENCE,ut.INVALID_UNICODE_ESCAPE_SEQUENCE,ut.UNBALANCED_CLOSING_BRACE,ut.UNTERMINATED_CLOSING_BRACE,ut.EMPTY_PLACEHOLDER,ut.NOT_ALLOW_NEST_PLACEHOLDER,ut.INVALID_LINKED_FORMAT,ut.MUST_HAVE_MESSAGES_IN_PLURAL,ut.UNEXPECTED_EMPTY_LINKED_MODIFIER,ut.UNEXPECTED_EMPTY_LINKED_KEY,ut.UNEXPECTED_LEXICAL_ANALYSIS,ut.UNHANDLED_CODEGEN_NODE_TYPE,ut.UNHANDLED_MINIFIER_NODE_TYPE;function dt(e,t,n={}){let{domain:r,messages:i,args:a}=n,o=SyntaxError(String(e));return o.code=e,t&&(o.location=t),o.domain=r,o}function ft(e){throw e}var pt=` `,mt=`\r`,ht=`
 `,gt=`\u2028`,_t=`\u2029`;function vt(e){let t=e,n=0,r=1,i=1,a=0,o=e=>t[e]===mt&&t[e+1]===ht,s=e=>t[e]===ht,c=e=>t[e]===_t,l=e=>t[e]===gt,u=e=>o(e)||s(e)||c(e)||l(e),d=()=>n,f=()=>r,p=()=>i,m=()=>a,h=e=>o(e)||c(e)||l(e)?ht:t[e],g=()=>h(n),_=()=>h(n+a);function v(){return a=0,u(n)&&(r++,i=0),o(n)&&n++,n++,i++,t[n]}function y(){return o(n+a)&&a++,a++,t[n+a]}function b(){n=0,r=1,i=1,a=0}function x(e=0){a=e}function S(){let e=n+a;for(;e!==n;)v();a=0}return{index:d,line:f,column:p,peekOffset:m,charAt:h,currentChar:g,currentPeek:_,next:v,peek:y,reset:b,resetPeek:x,skipToPeek:S}}var yt=void 0,bt=`'`,xt=`tokenizer`;function St(e,t={}){let n=t.location!==!1,r=vt(e),i=()=>r.index(),a=()=>ct(r.line(),r.column(),r.index()),o=a(),s=i(),c={currentType:13,offset:s,startLoc:o,endLoc:o,lastType:13,lastOffset:s,lastStartLoc:o,lastEndLoc:o,braceNest:0,inLinked:!1,text:``},l=()=>c,{onError:u}=t;function d(e,t,r,...i){let a=l();if(t.column+=r,t.offset+=r,u){let r=dt(e,n?lt(a.startLoc,t):null,{domain:xt,args:i});u(r)}}function f(e,t,r){e.endLoc=a(),e.currentType=t;let i={type:t};return n&&(i.loc=lt(e.startLoc,e.endLoc)),r!=null&&(i.value=r),i}let p=e=>f(e,13);function m(e,t){return e.currentChar()===t?(e.next(),t):(d(ut.EXPECTED_TOKEN,a(),0,t),``)}function h(e){let t=``;for(;e.currentPeek()===pt||e.currentPeek()===ht;)t+=e.currentPeek(),e.peek();return t}function g(e){let t=h(e);return e.skipToPeek(),t}function _(e){if(e===yt)return!1;let t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t===95}function v(e){if(e===yt)return!1;let t=e.charCodeAt(0);return t>=48&&t<=57}function y(e,t){let{currentType:n}=t;if(n!==2)return!1;h(e);let r=_(e.currentPeek());return e.resetPeek(),r}function b(e,t){let{currentType:n}=t;if(n!==2)return!1;h(e);let r=v(e.currentPeek()===`-`?e.peek():e.currentPeek());return e.resetPeek(),r}function x(e,t){let{currentType:n}=t;if(n!==2)return!1;h(e);let r=e.currentPeek()===bt;return e.resetPeek(),r}function S(e,t){let{currentType:n}=t;if(n!==7)return!1;h(e);let r=e.currentPeek()===`.`;return e.resetPeek(),r}function C(e,t){let{currentType:n}=t;if(n!==8)return!1;h(e);let r=_(e.currentPeek());return e.resetPeek(),r}function w(e,t){let{currentType:n}=t;if(!(n===7||n===11))return!1;h(e);let r=e.currentPeek()===`:`;return e.resetPeek(),r}function T(e,t){let{currentType:n}=t;if(n!==9)return!1;let r=()=>{let t=e.currentPeek();return t===`{`?_(e.peek()):t===`@`||t===`|`||t===`:`||t===`.`||t===pt||!t?!1:t===ht?(e.peek(),r()):D(e,!1)},i=r();return e.resetPeek(),i}function E(e){h(e);let t=e.currentPeek()===`|`;return e.resetPeek(),t}function D(e,t=!0){let n=(t=!1,r=``)=>{let i=e.currentPeek();return i===`{`||i===`@`||!i?t:i===`|`?!(r===pt||r===ht):i===pt?(e.peek(),n(!0,pt)):i===ht?(e.peek(),n(!0,ht)):!0},r=n();return t&&e.resetPeek(),r}function O(e,t){let n=e.currentChar();if(n!==yt)return t(n)?(e.next(),n):null}function k(e){let t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t>=48&&t<=57||t===95||t===36}function A(e){return O(e,k)}function j(e){let t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t>=48&&t<=57||t===95||t===36||t===45}function M(e){return O(e,j)}function N(e){let t=e.charCodeAt(0);return t>=48&&t<=57}function P(e){return O(e,N)}function F(e){let t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}function ee(e){return O(e,F)}function I(e){let t=``,n=``;for(;t=P(e);)n+=t;return n}function L(e){let t=``;for(;;){let n=e.currentChar();if(n===`\\`){let r=e.peek();r===`{`||r===`}`||r===`@`||r===`|`||r===`\\`?(t+=n+r,e.next(),e.next()):(e.resetPeek(),t+=n,e.next())}else if(n===`{`||n===`}`||n===`@`||n===`|`||!n)break;else if(n===pt||n===ht)if(D(e))t+=n,e.next();else if(E(e))break;else t+=n,e.next();else t+=n,e.next()}return t}function te(e){g(e);let t=``,n=``;for(;t=M(e);)n+=t;let r=e.currentChar();if(r&&r!==`}`&&r!==yt&&r!==pt&&r!==ht&&r!==` `){let t=se(e);return d(ut.INVALID_TOKEN_IN_PLACEHOLDER,a(),0,n+t),n+t}return e.currentChar()===yt&&d(ut.UNTERMINATED_CLOSING_BRACE,a(),0),n}function ne(e){g(e);let t=``;return e.currentChar()===`-`?(e.next(),t+=`-${I(e)}`):t+=I(e),e.currentChar()===yt&&d(ut.UNTERMINATED_CLOSING_BRACE,a(),0),t}function re(e){return e!==bt&&e!==ht}function ie(e){g(e),m(e,`'`);let t=``,n=``;for(;t=O(e,re);)t===`\\`?n+=ae(e):n+=t;let r=e.currentChar();return r===ht||r===yt?(d(ut.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,a(),0),r===ht&&(e.next(),m(e,`'`)),n):(m(e,`'`),n)}function ae(e){let t=e.currentChar();switch(t){case`\\`:case`'`:return e.next(),`\\${t}`;case`u`:return oe(e,t,4);case`U`:return oe(e,t,6);default:return d(ut.UNKNOWN_ESCAPE_SEQUENCE,a(),0,t),``}}function oe(e,t,n){m(e,t);let r=``;for(let i=0;i{let r=e.currentChar();return r===`{`||r===`@`||r===`|`||r===`(`||r===`)`||!r||r===pt?n:(n+=r,e.next(),t(n))};return t(``)}function B(e){g(e);let t=m(e,`|`);return g(e),t}function le(e,t){let n=null;switch(e.currentChar()){case`{`:return t.braceNest>=1&&d(ut.NOT_ALLOW_NEST_PLACEHOLDER,a(),0),e.next(),n=f(t,2,`{`),g(e),t.braceNest++,n;case`}`:return t.braceNest>0&&t.currentType===2&&d(ut.EMPTY_PLACEHOLDER,a(),0),e.next(),n=f(t,3,`}`),t.braceNest--,t.braceNest>0&&g(e),t.inLinked&&t.braceNest===0&&(t.inLinked=!1),n;case`@`:return t.braceNest>0&&d(ut.UNTERMINATED_CLOSING_BRACE,a(),0),n=V(e,t)||p(t),t.braceNest=0,n;default:{let r=!0,i=!0,o=!0;if(E(e))return t.braceNest>0&&d(ut.UNTERMINATED_CLOSING_BRACE,a(),0),n=f(t,1,B(e)),t.braceNest=0,t.inLinked=!1,n;if(t.braceNest>0&&(t.currentType===4||t.currentType===5||t.currentType===6))return d(ut.UNTERMINATED_CLOSING_BRACE,a(),0),t.braceNest=0,ue(e,t);if(r=y(e,t))return n=f(t,4,te(e)),g(e),n;if(i=b(e,t))return n=f(t,5,ne(e)),g(e),n;if(o=x(e,t))return n=f(t,6,ie(e)),g(e),n;if(!r&&!i&&!o)return n=f(t,12,se(e)),d(ut.INVALID_TOKEN_IN_PLACEHOLDER,a(),0,n.value),g(e),n;break}}return n}function V(e,t){let{currentType:n}=t,r=null,i=e.currentChar();switch((n===7||n===8||n===11||n===9)&&(i===ht||i===pt)&&d(ut.INVALID_LINKED_FORMAT,a(),0),i){case`@`:return e.next(),r=f(t,7,`@`),t.inLinked=!0,r;case`.`:return g(e),e.next(),f(t,8,`.`);case`:`:return g(e),e.next(),f(t,9,`:`);default:return E(e)?(r=f(t,1,B(e)),t.braceNest=0,t.inLinked=!1,r):S(e,t)||w(e,t)?(g(e),V(e,t)):C(e,t)?(g(e),f(t,11,z(e))):T(e,t)?(g(e),i===`{`?le(e,t)||r:f(t,10,ce(e))):(n===7&&d(ut.INVALID_LINKED_FORMAT,a(),0),t.braceNest=0,t.inLinked=!1,ue(e,t))}}function ue(e,t){let n={type:13};if(t.braceNest>0)return le(e,t)||p(t);if(t.inLinked)return V(e,t)||p(t);switch(e.currentChar()){case`{`:return le(e,t)||p(t);case`}`:return d(ut.UNBALANCED_CLOSING_BRACE,a(),0),e.next(),f(t,3,`}`);case`@`:return V(e,t)||p(t);default:if(E(e))return n=f(t,1,B(e)),t.braceNest=0,t.inLinked=!1,n;if(D(e))return f(t,0,L(e));break}return n}function de(){let{currentType:e,offset:t,startLoc:n,endLoc:o}=c;return c.lastType=e,c.lastOffset=t,c.lastStartLoc=n,c.lastEndLoc=o,c.offset=i(),c.startLoc=a(),r.currentChar()===yt?f(c,13):ue(r,c)}return{nextToken:de,currentOffset:i,currentPosition:a,context:l}}var Ct=`parser`,wt=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g,Tt=/\\([\\@{}|])/g;function Et(e,t){return t}function Dt(e,t,n){switch(e){case`\\\\`:return`\\`;case`\\'`:return`'`;default:{let e=parseInt(t||n,16);return e<=55295||e>=57344?String.fromCodePoint(e):`�`}}}function Ot(e={}){let t=e.location!==!1,{onError:n}=e;function r(e,r,i,a,...o){let s=e.currentPosition();if(s.offset+=a,s.column+=a,n){let e=dt(r,t?lt(i,s):null,{domain:Ct,args:o});n(e)}}function i(e,n,r){let i={type:e};return t&&(i.start=n,i.end=n,i.loc={start:r,end:r}),i}function a(e,n,r,i){t&&(e.end=n,e.loc&&(e.loc.end=r))}function o(e,t){let n=e.context(),r=i(3,n.offset,n.startLoc);return r.value=t.replace(Tt,Et),a(r,e.currentOffset(),e.currentPosition()),r}function s(e,t){let{lastOffset:n,lastStartLoc:r}=e.context(),o=i(5,n,r);return o.index=parseInt(t,10),e.nextToken(),a(o,e.currentOffset(),e.currentPosition()),o}function c(e,t){let{lastOffset:n,lastStartLoc:r}=e.context(),o=i(4,n,r);return o.key=t,e.nextToken(),a(o,e.currentOffset(),e.currentPosition()),o}function l(e,t){let{lastOffset:n,lastStartLoc:r}=e.context(),o=i(9,n,r);return o.value=t.replace(wt,Dt),e.nextToken(),a(o,e.currentOffset(),e.currentPosition()),o}function u(e){let t=e.nextToken(),n=e.context(),{lastOffset:o,lastStartLoc:s}=n,c=i(8,o,s);return t.type===11?(t.value??r(e,ut.UNEXPECTED_LEXICAL_ANALYSIS,n.lastStartLoc,0,kt(t)),c.value=t.value||``,a(c,e.currentOffset(),e.currentPosition()),{node:c}):(r(e,ut.UNEXPECTED_EMPTY_LINKED_MODIFIER,n.lastStartLoc,0),c.value=``,a(c,o,s),{nextConsumeToken:t,node:c})}function d(e,t){let n=e.context(),r=i(7,n.offset,n.startLoc);return r.value=t,a(r,e.currentOffset(),e.currentPosition()),r}function f(e){let t=e.context(),n=i(6,t.offset,t.startLoc),o=e.nextToken();if(o.type===8){let t=u(e);n.modifier=t.node,o=t.nextConsumeToken||e.nextToken()}switch(o.type!==9&&r(e,ut.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kt(o)),o=e.nextToken(),o.type===2&&(o=e.nextToken()),o.type){case 10:o.value??r(e,ut.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kt(o)),n.key=d(e,o.value||``);break;case 4:o.value??r(e,ut.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kt(o)),n.key=c(e,o.value||``);break;case 5:o.value??r(e,ut.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kt(o)),n.key=s(e,o.value||``);break;case 6:o.value??r(e,ut.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kt(o)),n.key=l(e,o.value||``);break;default:{r(e,ut.UNEXPECTED_EMPTY_LINKED_KEY,t.lastStartLoc,0);let s=e.context(),c=i(7,s.offset,s.startLoc);return c.value=``,a(c,s.offset,s.startLoc),n.key=c,a(n,s.offset,s.startLoc),{nextConsumeToken:o,node:n}}}return a(n,e.currentOffset(),e.currentPosition()),{node:n}}function p(e){let t=e.context(),n=i(2,t.currentType===1?e.currentOffset():t.offset,t.currentType===1?t.endLoc:t.startLoc);n.items=[];let u=null;do{let i=u||e.nextToken();switch(u=null,i.type){case 0:i.value??r(e,ut.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kt(i)),n.items.push(o(e,i.value||``));break;case 5:i.value??r(e,ut.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kt(i)),n.items.push(s(e,i.value||``));break;case 4:i.value??r(e,ut.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kt(i)),n.items.push(c(e,i.value||``));break;case 6:i.value??r(e,ut.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kt(i)),n.items.push(l(e,i.value||``));break;case 7:{let t=f(e);n.items.push(t.node),u=t.nextConsumeToken||null;break}}}while(t.currentType!==13&&t.currentType!==1);return a(n,t.currentType===1?t.lastOffset:e.currentOffset(),t.currentType===1?t.lastEndLoc:e.currentPosition()),n}function m(e,t,n,o){let s=e.context(),c=o.items.length===0,l=i(1,t,n);l.cases=[],l.cases.push(o);do{let t=p(e);c||=t.items.length===0,l.cases.push(t)}while(s.currentType!==13);return c&&r(e,ut.MUST_HAVE_MESSAGES_IN_PLURAL,n,0),a(l,e.currentOffset(),e.currentPosition()),l}function h(e){let t=e.context(),{offset:n,startLoc:r}=t,i=p(e);return t.currentType===13?i:m(e,n,r,i)}function g(n){let o=St(n,Te({},e)),s=o.context(),c=i(0,s.offset,s.startLoc);return t&&c.loc&&(c.loc.source=n),c.body=h(o),e.onCacheKey&&(c.cacheKey=e.onCacheKey(n)),s.currentType!==13&&r(o,ut.UNEXPECTED_LEXICAL_ANALYSIS,s.lastStartLoc,0,n[s.offset]||``),a(c,o.currentOffset(),o.currentPosition()),c}return{parse:g}}function kt(e){if(e.type===13)return`EOF`;let t=(e.value||``).replace(/\r?\n/gu,`\\n`);return t.length>10?t.slice(0,9)+`…`:t}function At(e,t={}){let n={ast:e,helpers:new Set};return{context:()=>n,helper:e=>(n.helpers.add(e),e)}}function jt(e,t){for(let n=0;nFt(e)),e}function Ft(e){if(e.items.length===1){let t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{let t=[];for(let n=0;no;function c(e,t){o.code+=e}function l(e,t=!0){let n=t?r:``;c(i?n+`  `.repeat(e):n)}function u(e=!0){let t=++o.indentLevel;e&&l(t)}function d(e=!0){let t=--o.indentLevel;e&&l(t)}function f(){l(o.indentLevel)}return{context:s,push:c,indent:u,deindent:d,newline:f,helper:e=>`_${e}`,needIndent:()=>o.needIndent}}function Rt(e,t){let{helper:n}=e;e.push(`${n(`linked`)}(`),Ht(e,t.key),t.modifier?(e.push(`, `),Ht(e,t.modifier),e.push(`, _type`)):e.push(`, undefined, _type`),e.push(`)`)}function zt(e,t){let{helper:n,needIndent:r}=e;e.push(`${n(`normalize`)}([`),e.indent(r());let i=t.items.length;for(let n=0;n1){e.push(`${n(`plural`)}([`),e.indent(r());let i=t.cases.length;for(let n=0;n{let n=Pe(t.mode)?t.mode:`normal`,r=Pe(t.filename)?t.filename:`message.intl`;t.sourceMap;let i=t.breakLineCode==null?n===`arrow`?`;`:`
 `:t.breakLineCode,a=t.needIndent?t.needIndent:n!==`arrow`,o=e.helpers||[],s=Lt(e,{filename:r,breakLineCode:i,needIndent:a});s.push(n===`normal`?`function __msg__ (ctx) {`:`(ctx) => {`),s.indent(a),o.length>0&&(s.push(`const { ${He(o.map(e=>`${e}: _${e}`),`, `)} } = ctx`),s.newline()),s.push(`return `),Ht(s,e),s.deindent(a),s.push(`}`),delete e.helpers;let{code:c,map:l}=s.context();return{ast:e,code:c,map:l?l.toJSON():void 0}};function Wt(e,t={}){let n=Te({},t),r=!!n.jit,i=!!n.minify,a=n.optimize==null||n.optimize,o=Ot(n).parse(e);return r?(a&&Pt(o),i&&It(o),{ast:o,code:``}):(Nt(o,n),Ut(o,n))}function Gt(){typeof __INTLIFY_PROD_DEVTOOLS__!=`boolean`&&(ke().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!=`boolean`&&(ke().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function Kt(e){return Ie(e)&&nn(e)===0&&(je(e,`b`)||je(e,`body`))}var qt=[`b`,`body`];function Jt(e){return un(e,qt)}var Yt=[`c`,`cases`];function Xt(e){return un(e,Yt,[])}var Zt=[`s`,`static`];function Qt(e){return un(e,Zt)}var $t=[`i`,`items`];function en(e){return un(e,$t,[])}var tn=[`t`,`type`];function nn(e){return un(e,tn)}var rn=[`v`,`value`];function an(e,t){let n=un(e,rn);if(n!=null)return n;throw fn(t)}var on=[`m`,`modifier`];function sn(e){return un(e,on)}var cn=[`k`,`key`];function ln(e){let t=un(e,cn);if(t)return t;throw fn(6)}function un(e,t,n){for(let n=0;nmn(t,e)}function mn(e,t){let n=Jt(t);if(n==null)throw fn(0);if(nn(n)===1){let t=Xt(n);return e.plural(t.reduce((t,n)=>[...t,hn(e,n)],[]))}else return hn(e,n)}function hn(e,t){let n=Qt(t);if(n!=null)return e.type===`text`?n:e.normalize([n]);{let n=en(t).reduce((t,n)=>[...t,gn(e,n)],[]);return e.normalize(n)}}function gn(e,t){let n=nn(t);switch(n){case 3:return an(t,n);case 9:return an(t,n);case 4:{let r=t;if(je(r,`k`)&&r.k)return e.interpolate(e.named(r.k));if(je(r,`key`)&&r.key)return e.interpolate(e.named(r.key));throw fn(n)}case 5:{let r=t;if(je(r,`i`)&&xe(r.i))return e.interpolate(e.list(r.i));if(je(r,`index`)&&xe(r.index))return e.interpolate(e.list(r.index));throw fn(n)}case 6:{let n=t,r=sn(n),i=ln(n);return e.linked(gn(e,i),r?gn(e,r):void 0,e.type)}case 7:return an(t,n);case 8:return an(t,n);default:throw Error(`unhandled node on format message part: ${n}`)}}var _n=e=>e,vn=De();function yn(e,t={}){let n=!1,r=t.onError||ft;return t.onError=e=>{n=!0,r(e)},{...Wt(e,t),detectError:n}}function bn(e,t){if(!__INTLIFY_DROP_MESSAGE_COMPILER__&&Pe(e)){Fe(t.warnHtmlMessage)&&t.warnHtmlMessage;let n=(t.onCacheKey||_n)(e),r=vn[n];if(r)return r;let{ast:i,detectError:a}=yn(e,{...t,location:!1,jit:!0}),o=pn(i);return a?o:vn[n]=o}else{let t=e.cacheKey;return t?vn[t]||(vn[t]=pn(e)):pn(e)}}var xn=null;function Sn(e){xn=e}function Cn(e,t,n){xn&&xn.emit(`i18n:init`,{timestamp:Date.now(),i18n:e,version:t,meta:n})}var wn=Tn(`function:translate`);function Tn(e){return t=>xn&&xn.emit(e,t)}var En={INVALID_ARGUMENT:17,INVALID_DATE_ARGUMENT:18,INVALID_ISO_DATE_ARGUMENT:19,NOT_SUPPORT_NON_STRING_MESSAGE:20,NOT_SUPPORT_LOCALE_PROMISE_VALUE:21,NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:22,NOT_SUPPORT_LOCALE_TYPE:23};function Dn(e){return dt(e,null,void 0)}En.INVALID_ARGUMENT,En.INVALID_DATE_ARGUMENT,En.INVALID_ISO_DATE_ARGUMENT,En.NOT_SUPPORT_NON_STRING_MESSAGE,En.NOT_SUPPORT_LOCALE_PROMISE_VALUE,En.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION,En.NOT_SUPPORT_LOCALE_TYPE;function On(e,t){return t.locale==null?An(e.locale):An(t.locale)}var kn;function An(e){if(Pe(e))return e;if(Ne(e)){if(e.resolvedOnce&&kn!=null)return kn;if(e.constructor.name===`Function`){let t=e();if(Le(t))throw Dn(En.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return kn=t}else throw Dn(En.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw Dn(En.NOT_SUPPORT_LOCALE_TYPE)}function jn(e,t,n){return[...new Set([n,...Me(t)?t:Ie(t)?Object.keys(t).filter(e=>e!=="default"):Pe(t)?[t]:[n]])]}function Mn(e,t,n){let r=Pe(n)?n:Jn,i=e,a;Ie(t)?(i.__localeChainObjectCache||=new WeakMap,a=i.__localeChainObjectCache.get(t),a||(a=new Map,i.__localeChainObjectCache.set(t,a))):(i.__localeChainCache||=new Map,a=i.__localeChainCache.get(t),a||(a=new Map,i.__localeChainCache.set(t,a)));let o=a.get(r);if(o)return o;let s=[],c=[n];for(;Me(c);)c=Nn(s,c,t);let l=Me(t)||!Be(t)?t:t.default?t.default:null;return c=Pe(l)?[l]:l,Me(c)&&Nn(s,c,!1),a.set(r,s),s}function Nn(e,t,n){let r=!0;for(let i=0;i{o===void 0?o=s:o+=s},f[1]=()=>{o!==void 0&&(t.push(o),o=void 0)},f[2]=()=>{f[0](),i++},f[3]=()=>{if(i>0)i--,r=4,f[0]();else{if(i=0,o===void 0||(o=Vn(o),o===!1))return!1;f[1]()}};function p(){let t=e[n+1];if(r===5&&t===`'`||r===6&&t===`"`)return n++,s=`\\`+t,f[0](),!0}for(;r!==null;)if(n++,a=e[n],!(a===`\\`&&p())){if(c=Bn(a),d=In[r],l=d[c]||d.l||8,l===8||(r=l[0],l[1]!==void 0&&(u=f[l[1]],u&&(s=a,u()===!1))))return;if(r===7)return t}}var Un=new Map;function Wn(e,t){return Ie(e)?e[t]:null}function Gn(e,t){if(!Ie(e))return null;let n=Un.get(t);if(n||(n=Hn(t),n&&Un.set(t,n)),!n)return null;let r=n.length,i=e,a=0;for(;a`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function Xn(){return{upper:(e,t)=>t===`text`&&Pe(e)?e.toUpperCase():t===`vnode`&&Ie(e)&&`__v_isVNode`in e?e.children.toUpperCase():e,lower:(e,t)=>t===`text`&&Pe(e)?e.toLowerCase():t===`vnode`&&Ie(e)&&`__v_isVNode`in e?e.children.toLowerCase():e,capitalize:(e,t)=>t===`text`&&Pe(e)?Yn(e):t===`vnode`&&Ie(e)&&`__v_isVNode`in e?Yn(e.children):e}}var Zn;function Qn(e){Zn=e}var $n;function er(e){$n=e}var tr;function nr(e){tr=e}var rr=null,ir=()=>rr,ar=null,or=e=>{ar=e},sr=()=>ar,cr=0;function lr(e={}){let t=Ne(e.onWarn)?e.onWarn:Ue,n=Pe(e.version)?e.version:qn,r=Pe(e.locale)||Ne(e.locale)?e.locale:Jn,i=Ne(r)?Jn:r,a=Me(e.fallbackLocale)||Be(e.fallbackLocale)||Pe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:i,o=Be(e.messages)?e.messages:ur(i),s=Be(e.datetimeFormats)?e.datetimeFormats:ur(i),c=Be(e.numberFormats)?e.numberFormats:ur(i),l=Te(De(),e.modifiers,Xn()),u=e.pluralRules||De(),d=Ne(e.missing)?e.missing:null,f=Fe(e.missingWarn)||Ce(e.missingWarn)?e.missingWarn:!0,p=Fe(e.fallbackWarn)||Ce(e.fallbackWarn)?e.fallbackWarn:!0,m=!!e.fallbackFormat,h=!!e.unresolving,g=Ne(e.postTranslation)?e.postTranslation:null,_=Be(e.processor)?e.processor:null,v=!Fe(e.warnHtmlMessage)||e.warnHtmlMessage,y=!!e.escapeParameter,b=Ne(e.messageCompiler)?e.messageCompiler:Zn,x=Ne(e.messageResolver)?e.messageResolver:$n||Wn,S=Ne(e.localeFallbacker)?e.localeFallbacker:tr||jn,C=Ie(e.fallbackContext)?e.fallbackContext:void 0,w=e,T=Ie(w.__datetimeFormatters)?w.__datetimeFormatters:new Map,E=Ie(w.__numberFormatters)?w.__numberFormatters:new Map,D=Ie(w.__meta)?w.__meta:{};cr++;let O={version:n,cid:cr,locale:r,fallbackLocale:a,messages:o,modifiers:l,pluralRules:u,missing:d,missingWarn:f,fallbackWarn:p,fallbackFormat:m,unresolving:h,postTranslation:g,processor:_,warnHtmlMessage:v,escapeParameter:y,messageCompiler:b,messageResolver:x,localeFallbacker:S,fallbackContext:C,onWarn:t,__meta:D};return O.datetimeFormats=s,O.numberFormats=c,O.__datetimeFormatters=T,O.__numberFormatters=E,__INTLIFY_PROD_DEVTOOLS__&&Cn(O,n,D),O}var ur=e=>({[e]:De()});function dr(e,t,n,r,i){let{missing:a,onWarn:o}=e;if(a!==null){let r=a(e,n,t,i);return Pe(r)?r:t}else return t}function fr(e,t){let n=e;Ie(t)?n.__localeChainObjectCache?.delete(t):n.__localeChainCache?.delete(t)}function pr(e,t,n){fr(e,n),e.fallbackContext&&fr(e.fallbackContext,n),e.localeFallbacker(e,n,t)}function mr(e,t){return e!==t&&e.split(`-`)[0]===t.split(`-`)[0]}function hr(e,t){let n=t.indexOf(e);if(n===-1)return!1;for(let r=n+1;r{r.includes(e)?s[e]=i[e]:t[e]=i[e]}),Pe(a)?t.locale=a:Be(a)&&(s=a),Be(o)&&(s=o),s}var br=typeof Intl<`u`;br&&Intl.DateTimeFormat,br&&Intl.NumberFormat;function xr(e,...t){let{datetimeFormats:n,unresolving:r,onWarn:i}=e,{__datetimeFormatters:a}=e;if(!Pe(t[0])&&!Se(t[0])&&!xe(t[0]))return``;let[o,s,c,l]=Cr(...t),u=Fe(c.missingWarn)?c.missingWarn:e.missingWarn,d=Fe(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,f=!!c.part,p=On(e,c);if(!Pe(o)||o===``){let e=new Intl.DateTimeFormat(p.replace(/!/g,``),l);return f?e.formatToParts(s):e.format(s)}let m=gr(e,o,p,n,u,d,`datetime format`);if(!Pe(m))return r?-1:o;let h=n[m][o],g=_r(m,o,l),_=a.get(g);return _||(_=new Intl.DateTimeFormat(m,Te({},h,l)),a.set(g,_)),f?_.formatToParts(s):_.format(s)}var Sr=[`localeMatcher`,`weekday`,`era`,`year`,`month`,`day`,`hour`,`minute`,`second`,`timeZoneName`,`formatMatcher`,`hour12`,`timeZone`,`dateStyle`,`timeStyle`,`calendar`,`dayPeriod`,`numberingSystem`,`hourCycle`,`fractionalSecondDigits`];function Cr(...e){let[t]=e,n=De(),r=De(),i;if(Pe(t)){let e=t.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/);if(!e)throw Dn(En.INVALID_ISO_DATE_ARGUMENT);let n=e[3]?e[3].trim().startsWith(`T`)?`${e[1].trim()}${e[3].trim()}`:`${e[1].trim()}T${e[3].trim()}`:e[1].trim();i=new Date(n);try{i.toISOString()}catch{throw Dn(En.INVALID_ISO_DATE_ARGUMENT)}}else if(Se(t)){if(isNaN(t.getTime()))throw Dn(En.INVALID_DATE_ARGUMENT);i=t}else if(xe(t))i=t;else throw Dn(En.INVALID_ARGUMENT);let a=yr(e,n,r,Sr);return[n.key||``,i,n,a]}function wr(e,t,n){vr(e.__datetimeFormatters,t,n)}function Tr(e,...t){let{numberFormats:n,unresolving:r,onWarn:i}=e,{__numberFormatters:a}=e;if(!xe(t[0]))return``;let[o,s,c,l]=Dr(...t),u=Fe(c.missingWarn)?c.missingWarn:e.missingWarn,d=Fe(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,f=!!c.part,p=On(e,c);if(!Pe(o)||o===``){let e=new Intl.NumberFormat(p.replace(/!/g,``),l);return f?e.formatToParts(s):e.format(s)}let m=gr(e,o,p,n,u,d,`number format`);if(!Pe(m))return r?-1:o;let h=n[m][o],g=_r(m,o,l),_=a.get(g);return _||(_=new Intl.NumberFormat(m,Te({},h,l)),a.set(g,_)),f?_.formatToParts(s):_.format(s)}var Er=[`localeMatcher`,`style`,`currency`,`currencyDisplay`,`currencySign`,`useGrouping`,`minimumIntegerDigits`,`minimumFractionDigits`,`maximumFractionDigits`,`minimumSignificantDigits`,`maximumSignificantDigits`,`compactDisplay`,`notation`,`signDisplay`,`unit`,`unitDisplay`,`roundingMode`,`roundingPriority`,`roundingIncrement`,`trailingZeroDisplay`];function Dr(...e){let[t]=e,n=De(),r=De();if(!xe(t))throw Dn(En.INVALID_ARGUMENT);let i=t,a=yr(e,n,r,Er);return[n.key||``,i,n,a]}function Or(e,t,n){vr(e.__numberFormatters,t,n)}var kr=e=>e,Ar=e=>``,jr=`text`,Mr=e=>e.length===0?``:He(e),Nr=Ve;function Pr(e,t){return e=Math.abs(e),t===2?e===1?0:1:Math.min(e,2)}function Fr(e){let t=xe(e.pluralIndex)?e.pluralIndex:-1;return xe(e.named?.count)?e.named.count:xe(e.named?.n)?e.named.n:t}function Ir(e={}){let t=e.locale,n=Fr(e),r=Pe(t)&&Ne(e.pluralRules?.[t])?e.pluralRules[t]:Pr,i=r===Pr?void 0:Pr,a=e=>e[r(n,e.length,i)],o=e.list||[],s=e=>o[e],c=e.named||De();xe(e.pluralIndex)&&(c.count||=e.pluralIndex,c.n||=e.pluralIndex);let l=e=>c[e];function u(t,n){return(Ne(e.messages)?e.messages(t,!!n):Ie(e.messages)?e.messages[t]:!1)||(e.parent?e.parent.message(t):Ar)}let d=t=>e.modifiers?e.modifiers[t]:kr,f=Ne(e.processor?.normalize)?e.processor.normalize:Mr,p=Ne(e.processor?.interpolate)?e.processor.interpolate:Nr,m={list:s,named:l,plural:a,linked:(e,...t)=>{let[n,r]=t,i=`text`,a=``;t.length===1?Ie(n)?(a=n.modifier||a,i=n.type||i):Pe(n)&&(a=n||a):t.length===2&&(Pe(n)&&(a=n||a),Pe(r)&&(i=r||i));let o=u(e,!0)(m),s=o===``||o===void 0?e:o,c=i===`vnode`&&Me(s)&&a?s[0]:s;return a?d(a)(c,i):c},message:u,type:Pe(e.processor?.type)?e.processor.type:jr,interpolate:p,normalize:f,values:Te(De(),o,c)};return m}var Lr=()=>``,Rr=e=>Ne(e);function zr(e,...t){let{fallbackFormat:n,postTranslation:r,unresolving:i,messageCompiler:a,fallbackLocale:o,messages:s}=e,[c,l]=Wr(...t),u=Fe(l.missingWarn)?l.missingWarn:e.missingWarn,d=Fe(l.fallbackWarn)?l.fallbackWarn:e.fallbackWarn,f=Fe(l.escapeParameter)?l.escapeParameter:e.escapeParameter,p=!!l.resolvedMessage,m=Pe(l.default)||Fe(l.default)?Fe(l.default)?a?c:()=>c:l.default:n?a?c:()=>c:null,h=n||m!=null&&(Pe(m)||Ne(m)),g=On(e,l);f&&Br(l);let[_,v,y]=p?[c,g,s[g]||De()]:Vr(e,c,g,o,d,u),b=_,x=c;if(!p&&!(Pe(b)||Kt(b)||Rr(b))&&h&&(b=m,x=b),!p&&(!(Pe(b)||Kt(b)||Rr(b))||!Pe(v)))return i?-1:c;let S=!1,C=Rr(b)?b:Hr(e,c,v,b,x,()=>{S=!0});if(S)return b;let w=Ur(e,C,Ir(Kr(e,v,y,l))),T=r?r(w,c):w;if(f&&Pe(T)&&(T=at(T)),__INTLIFY_PROD_DEVTOOLS__){let t={timestamp:Date.now(),key:Pe(c)?c:Rr(b)?b.key:``,locale:v||(Rr(b)?b.locale:``),format:Pe(b)?b:Rr(b)?b.source:``,message:T};t.meta=Te({},e.__meta,ir()||{}),wn(t)}return T}function Br(e){Me(e.list)?e.list=e.list.map(e=>Pe(e)?We(e):e):Ie(e.named)&&Object.keys(e.named).forEach(t=>{Pe(e.named[t])&&(e.named[t]=We(e.named[t]))})}function Vr(e,t,n,r,i,a){let{messages:o,onWarn:s,messageResolver:c,localeFallbacker:l}=e,u=l(e,r,n),d=De(),f,p=null;for(let n=0;nr);return e.locale=n,e.key=t,e}let c=o(r,Gr(e,n,i,r,s,a));return c.locale=n,c.key=t,c.source=r,c}function Ur(e,t,n){return t(n)}function Wr(...e){let[t,n,r]=e,i=De();if(!Pe(t)&&!xe(t)&&!Rr(t)&&!Kt(t))throw Dn(En.INVALID_ARGUMENT);let a=xe(t)?String(t):(Rr(t),t);return xe(n)?i.plural=n:Pe(n)?i.default=n:Be(n)&&!we(n)?i.named=n:Me(n)&&(i.list=n),xe(r)?i.plural=r:Pe(r)?i.default=r:Be(r)&&Te(i,r),[a,i]}function Gr(e,t,n,r,i,a){return{locale:t,key:n,warnHtmlMessage:i,onError:e=>{throw a&&a(e),e},onCacheKey:e=>ye(t,n,e)}}function Kr(e,t,n,r){let{modifiers:i,pluralRules:a,messageResolver:o,fallbackLocale:s,fallbackWarn:c,missingWarn:l,fallbackContext:u}=e,d={locale:t,modifiers:i,pluralRules:a,messages:(r,i)=>{let a=o(n,r);if(a==null&&(u||i)){let[n,,i]=Vr(u||e,r,t,s,c,l);a=n??o(i,r)}if(Pe(a)||Kt(a)){let n=!1,i=Hr(e,r,t,a,r,()=>{n=!0});return n?Lr:i}else if(Rr(a))return a;else return Lr}};return e.processor&&(d.processor=e.processor),r.list&&(d.list=r.list),r.named&&(d.named=r.named),xe(r.plural)&&(d.pluralIndex=r.plural),d}Gt();var qr=`11.4.12`;function Jr(){typeof __VUE_I18N_FULL_INSTALL__!=`boolean`&&(ke().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!=`boolean`&&(ke().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!=`boolean`&&(ke().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!=`boolean`&&(ke().__INTLIFY_PROD_DEVTOOLS__=!1)}var Yr={UNEXPECTED_RETURN_TYPE:24,INVALID_ARGUMENT:25,MUST_BE_CALL_SETUP_TOP:26,NOT_INSTALLED:27,REQUIRED_VALUE:28,INVALID_VALUE:29,CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:30,NOT_INSTALLED_WITH_PROVIDE:31,UNEXPECTED_ERROR:32,NOT_COMPATIBLE_LEGACY_VUE_I18N:33,NOT_AVAILABLE_COMPOSITION_IN_LEGACY:34};function Xr(e,...t){return dt(e,null,void 0)}Yr.UNEXPECTED_RETURN_TYPE,Yr.INVALID_ARGUMENT,Yr.MUST_BE_CALL_SETUP_TOP,Yr.NOT_INSTALLED,Yr.UNEXPECTED_ERROR,Yr.REQUIRED_VALUE,Yr.INVALID_VALUE,Yr.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN,Yr.NOT_INSTALLED_WITH_PROVIDE,Yr.NOT_COMPATIBLE_LEGACY_VUE_I18N,Yr.NOT_AVAILABLE_COMPOSITION_IN_LEGACY;var Zr=ve(`__translateVNode`),Qr=ve(`__datetimeParts`),$r=ve(`__numberParts`),ei=ve(`__setPluralRules`);ve(`__intlifyMeta`);var ti=ve(`__injectWithOption`),ni=ve(`__dispose`),ri={FALLBACK_TO_ROOT:10,NOT_FOUND_PARENT_SCOPE:11,IGNORE_OBJ_FLATTEN:12,DEPRECATE_LEGACY_MODE:13,DEPRECATE_TRANSLATE_CUSTOME_DIRECTIVE:14,DUPLICATE_USE_I18N_CALLING:15};ri.FALLBACK_TO_ROOT,ri.NOT_FOUND_PARENT_SCOPE,ri.IGNORE_OBJ_FLATTEN,ri.DEPRECATE_LEGACY_MODE,ri.DEPRECATE_TRANSLATE_CUSTOME_DIRECTIVE,ri.DUPLICATE_USE_I18N_CALLING;var ii=null;{let e=ke().__VUE_INSTANCE_SETTERS__;Me(e)&&e.push(e=>{ii=e})}function ai(e){if(!Ie(e)||Kt(e))return e;for(let t in e)if(je(e,t))if(!t.includes(`.`))Ie(e[t])&&ai(e[t]);else{let n=t.split(`.`),r=n.length-1,i=e,a=!1;for(let e=0;e{if(`locale`in e&&`resource`in e){let{locale:t,resource:n}=e;t?(o[t]=o[t]||De(),st(n,o[t])):st(n,o)}else Pe(e)&&st(JSON.parse(e),o)}),i==null&&a)for(let e in o)je(o,e)&&ai(o[e]);return o}function si(e){return e.type}function ci(e,t,n){let r=Ie(t.messages)?t.messages:De();`__i18nGlobal`in n&&(r=oi(e.locale.value,{messages:r,__i18n:n.__i18nGlobal}));let i=Object.keys(r);if(i.length&&i.forEach(t=>{e.mergeLocaleMessage(t,r[t])}),Ie(t.datetimeFormats)){let n=Object.keys(t.datetimeFormats);n.length&&n.forEach(n=>{e.mergeDateTimeFormat(n,t.datetimeFormats[n])})}if(Ie(t.numberFormats)){let n=Object.keys(t.numberFormats);n.length&&n.forEach(n=>{e.mergeNumberFormat(n,t.numberFormats[n])})}}function li(e){return b(le,null,e,0)}function ui(){return ii??x()}var di=()=>[],fi=()=>!1,pi=0;function mi(e){return((t,n,r,i)=>e(n,r,ui()||void 0,i))}function hi(e={}){let{__root:t,__injectWithOption:n}=e,r=t===void 0,i=e.flatJson,a=_e?z:de,o=!Fe(e.inheritLocale)||e.inheritLocale,s=a(t&&o?t.locale.value:Pe(e.locale)?e.locale:Jn),c=a(t&&o?t.fallbackLocale.value:Pe(e.fallbackLocale)||Me(e.fallbackLocale)||Be(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:s.value),u=a(oi(s.value,e)),d=a(Be(e.datetimeFormats)?e.datetimeFormats:{[s.value]:{}}),f=a(Be(e.numberFormats)?e.numberFormats:{[s.value]:{}}),p=t?t.missingWarn:Fe(e.missingWarn)||Ce(e.missingWarn)?e.missingWarn:!0,m=t?t.fallbackWarn:Fe(e.fallbackWarn)||Ce(e.fallbackWarn)?e.fallbackWarn:!0,h=t?t.fallbackRoot:!Fe(e.fallbackRoot)||e.fallbackRoot,g=!!e.fallbackFormat,_=Ne(e.missing)?e.missing:null,v=Ne(e.missing)?mi(e.missing):null,y=Ne(e.postTranslation)?e.postTranslation:null,b=t?t.warnHtmlMessage:!Fe(e.warnHtmlMessage)||e.warnHtmlMessage,x=!!e.escapeParameter,S=t?t.modifiers:Be(e.modifiers)?e.modifiers:{},C=e.pluralRules||t&&t.pluralRules,w;w=(()=>{r&&or(null);let t={version:qr,locale:s.value,fallbackLocale:c.value,messages:u.value,modifiers:S,pluralRules:C,missing:v===null?void 0:v,missingWarn:p,fallbackWarn:m,fallbackFormat:g,unresolving:!0,postTranslation:y===null?void 0:y,warnHtmlMessage:b,escapeParameter:x,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:`vue`}};t.datetimeFormats=d.value,t.numberFormats=f.value,t.__datetimeFormatters=Be(w)?w.__datetimeFormatters:void 0,t.__numberFormatters=Be(w)?w.__numberFormatters:void 0;let n=lr(t);return r&&or(n),n})(),pr(w,s.value,c.value);function T(){return[s.value,c.value,u.value,d.value,f.value]}let E=R({get:()=>s.value,set:e=>{w.locale=e,s.value=e}});function D(e){r||(w.fallbackContext=t?sr():void 0);try{pr(w,s.value,e)}finally{r||(w.fallbackContext=void 0)}}let O=R({get:()=>c.value,set:e=>{c.value=e,w.fallbackLocale=c.value,D(c.value)}}),k=R(()=>u.value),A=R(()=>d.value),j=R(()=>f.value);function M(){return Ne(y)?y:null}function N(e){y=e,w.postTranslation=e}function P(){return _}function F(e){e!==null&&(v=mi(e)),_=e,w.missing=v}let ee=(e,n,i,a,o,s)=>{T();let c;try{__INTLIFY_PROD_DEVTOOLS__,r||(w.fallbackContext=t?sr():void 0),c=e(w)}finally{__INTLIFY_PROD_DEVTOOLS__,r||(w.fallbackContext=void 0)}if(i!==`translate exists`&&xe(c)&&c===-1||i===`translate exists`&&!c){let[e,r]=n();return t&&h?a(t):o(e)}else if(s(c))return c;else throw Xr(Yr.UNEXPECTED_RETURN_TYPE)};function I(...e){return ee(t=>Reflect.apply(zr,null,[t,...e]),()=>Wr(...e),`translate`,t=>Reflect.apply(t.t,t,[...e]),e=>e,e=>Pe(e))}function L(...e){let[t,n,r]=e;if(r&&!Ie(r))throw Xr(Yr.INVALID_ARGUMENT);return I(t,n,Te({resolvedMessage:!0},r||{}))}function te(...e){return ee(t=>Reflect.apply(xr,null,[t,...e]),()=>Cr(...e),`datetime format`,t=>Reflect.apply(t.d,t,[...e]),()=>``,e=>Pe(e)||Me(e))}function ne(...e){return ee(t=>Reflect.apply(Tr,null,[t,...e]),()=>Dr(...e),`number format`,t=>Reflect.apply(t.n,t,[...e]),()=>``,e=>Pe(e)||Me(e))}function re(e){return e.map(e=>Pe(e)||xe(e)||Fe(e)?li(String(e)):e)}let ie={normalize:re,interpolate:e=>e,type:`vnode`};function ae(...e){return ee(t=>{let n,r=t;try{r.processor=ie,n=Reflect.apply(zr,null,[r,...e])}finally{r.processor=null}return n},()=>Wr(...e),`translate`,t=>t[Zr](...e),e=>[li(e)],e=>Me(e))}function oe(...e){return ee(t=>Reflect.apply(Tr,null,[t,...e]),()=>Dr(...e),`number format`,t=>t[$r](...e),di,e=>Pe(e)||Me(e))}function se(...e){return ee(t=>Reflect.apply(xr,null,[t,...e]),()=>Cr(...e),`datetime format`,t=>t[Qr](...e),di,e=>Pe(e)||Me(e))}function ce(e){C=e,w.pluralRules=C}function B(e,t){return ee(()=>{if(!e)return!1;let n=Pe(t)?t:s.value,r=Pe(t)?[n]:Mn(w,c.value,n);for(let t=0;t[e],`translate exists`,n=>Reflect.apply(n.te,n,[e,t]),fi,e=>Fe(e))}function le(e){let t=null,n=Mn(w,c.value,s.value);for(let r=0;rD(c.value),{deep:!0,flush:`sync`}),t&&_e&&(l(t.locale,e=>{o&&(s.value=e,w.locale=e,pr(w,s.value,c.value))}),l(t.fallbackLocale,e=>{o&&(c.value=e,w.fallbackLocale=c.value,pr(w,s.value,c.value))}));let me={id:pi,locale:E,fallbackLocale:O,get inheritLocale(){return o},set inheritLocale(e){o=e,e&&t&&(E.value=t.locale.value,O.value=t.fallbackLocale.value)},get availableLocales(){return Object.keys(u.value).sort()},messages:k,get modifiers(){return S},get pluralRules(){return C||{}},get isGlobal(){return r},get missingWarn(){return p},set missingWarn(e){p=e,w.missingWarn=p},get fallbackWarn(){return m},set fallbackWarn(e){m=e,w.fallbackWarn=m},get fallbackRoot(){return h},set fallbackRoot(e){h=e},get fallbackFormat(){return g},set fallbackFormat(e){g=e,w.fallbackFormat=g},get warnHtmlMessage(){return b},set warnHtmlMessage(e){b=e,w.warnHtmlMessage=e},get escapeParameter(){return x},set escapeParameter(e){x=e,w.escapeParameter=e},t:I,getLocaleMessage:ue,setLocaleMessage:fe,mergeLocaleMessage:H,getPostTranslationHandler:M,setPostTranslationHandler:N,getMissingHandler:P,setMissingHandler:F,[ei]:ce};return me.datetimeFormats=A,me.numberFormats=j,me.rt=L,me.te=B,me.tm=V,me.d=te,me.n=ne,me.getDateTimeFormat=pe,me.setDateTimeFormat=U,me.mergeDateTimeFormat=W,me.getNumberFormat=G,me.setNumberFormat=K,me.mergeNumberFormat=q,me[ti]=n,me[Zr]=ae,me[Qr]=se,me[$r]=oe,me}function gi(e){let t=Pe(e.locale)?e.locale:Jn,n=Pe(e.fallbackLocale)||Me(e.fallbackLocale)||Be(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,r=Ne(e.missing)?e.missing:void 0,i=Fe(e.silentTranslationWarn)||Ce(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,a=Fe(e.silentFallbackWarn)||Ce(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,o=!Fe(e.fallbackRoot)||e.fallbackRoot,s=!!e.formatFallbackMessages,c=Be(e.modifiers)?e.modifiers:{},l=e.pluralizationRules,u=Ne(e.postTranslation)?e.postTranslation:void 0,d=!Pe(e.warnHtmlInMessage)||e.warnHtmlInMessage!==`off`,f=!!e.escapeParameterHtml,p=!Fe(e.sync)||e.sync,m=e.messages;if(Be(e.sharedMessages)){let t=e.sharedMessages;m=Object.keys(t).reduce((e,n)=>(Te(e[n]||(e[n]={}),t[n]),e),m||{})}let{__i18n:h,__root:g,__injectWithOption:_}=e,v=e.datetimeFormats,y=e.numberFormats,b=e.flatJson;return{locale:t,fallbackLocale:n,messages:m,flatJson:b,datetimeFormats:v,numberFormats:y,missing:r,missingWarn:i,fallbackWarn:a,fallbackRoot:o,fallbackFormat:s,modifiers:c,pluralRules:l,postTranslation:u,warnHtmlMessage:d,escapeParameter:f,messageResolver:e.messageResolver,inheritLocale:p,__i18n:h,__root:g,__injectWithOption:_}}function _i(e={}){let t=hi(gi(e)),{__extender:n}=e,r={id:t.id,get locale(){return t.locale.value},set locale(e){t.locale.value=e},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(e){t.fallbackLocale.value=e},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get missing(){return t.getMissingHandler()},set missing(e){t.setMissingHandler(e)},get silentTranslationWarn(){return Fe(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(e){t.missingWarn=Fe(e)?!e:e},get silentFallbackWarn(){return Fe(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(e){t.fallbackWarn=Fe(e)?!e:e},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(e){t.fallbackFormat=e},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(e){t.setPostTranslationHandler(e)},get sync(){return t.inheritLocale},set sync(e){t.inheritLocale=e},get warnHtmlInMessage(){return t.warnHtmlMessage?`warn`:`off`},set warnHtmlInMessage(e){t.warnHtmlMessage=e!==`off`},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(e){t.escapeParameter=e},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...e){return Reflect.apply(t.t,t,[...e])},rt(...e){return Reflect.apply(t.rt,t,[...e])},te(e,n){return t.te(e,n)},tm(e){return t.tm(e)},getLocaleMessage(e){return t.getLocaleMessage(e)},setLocaleMessage(e,n){t.setLocaleMessage(e,n)},mergeLocaleMessage(e,n){t.mergeLocaleMessage(e,n)},d(...e){return Reflect.apply(t.d,t,[...e])},getDateTimeFormat(e){return t.getDateTimeFormat(e)},setDateTimeFormat(e,n){t.setDateTimeFormat(e,n)},mergeDateTimeFormat(e,n){t.mergeDateTimeFormat(e,n)},n(...e){return Reflect.apply(t.n,t,[...e])},getNumberFormat(e){return t.getNumberFormat(e)},setNumberFormat(e,n){t.setNumberFormat(e,n)},mergeNumberFormat(e,n){t.mergeNumberFormat(e,n)}};return r.__extender=n,r}function vi(e,t,n){return{beforeCreate(){let r=ui();if(!r)throw Xr(Yr.UNEXPECTED_ERROR);let i=this.$options;if(i.i18n){let r=i.i18n;if(i.__i18n&&(r.__i18n=i.__i18n),r.__root=t,this===this.$root)this.$i18n=yi(e,r);else{r.__injectWithOption=!0,r.__extender=n.__vueI18nExtend,this.$i18n=_i(r);let e=this.$i18n;e.__extender&&(e.__disposer=e.__extender(this.$i18n))}}else if(i.__i18n)if(this===this.$root)this.$i18n=yi(e,i);else{this.$i18n=_i({__i18n:i.__i18n,__injectWithOption:!0,__extender:n.__vueI18nExtend,__root:t});let e=this.$i18n;e.__extender&&(e.__disposer=e.__extender(this.$i18n))}else this.$i18n=e;i.__i18nGlobal&&ci(t,i,i),this.$t=(...e)=>this.$i18n.t(...e),this.$rt=(...e)=>this.$i18n.rt(...e),this.$te=(e,t)=>this.$i18n.te(e,t),this.$d=(...e)=>this.$i18n.d(...e),this.$n=(...e)=>this.$i18n.n(...e),this.$tm=e=>this.$i18n.tm(e),n.__setInstance(r,this.$i18n)},mounted(){},unmounted(){let e=ui();if(!e)throw Xr(Yr.UNEXPECTED_ERROR);let t=this.$i18n;t&&(delete this.$t,delete this.$rt,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,t?.__disposer&&(t.__disposer(),delete t.__disposer,delete t.__extender),n.__deleteInstance(e),delete this.$i18n)}}}function yi(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[ei](t.pluralizationRules||e.pluralizationRules);let n=oi(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(t=>e.mergeLocaleMessage(t,n[t])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(n=>e.mergeDateTimeFormat(n,t.datetimeFormats[n])),t.numberFormats&&Object.keys(t.numberFormats).forEach(n=>e.mergeNumberFormat(n,t.numberFormats[n])),e}var bi={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e===`parent`||e===`global`,default:`parent`},i18n:{type:Object}};function xi({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((e,t)=>[...e,...t.type===P?t.children:[t]],[]):t.reduce((t,n)=>{let r=e[n];return r&&(t[n]=r()),t},De())}function Si(){return P}var Ci=K({name:`i18n-t`,props:Te({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>xe(e)||!isNaN(e)}},bi),setup(e,t){let{slots:n,attrs:r}=t,i=e.i18n||Pi({useScope:e.scope,__useComponent:!0});return()=>{let a=()=>{let r=Object.keys(n).filter(e=>e[0]!==`_`),a=De();e.locale&&(a.locale=e.locale),e.plural!==void 0&&(a.plural=Pe(e.plural)?+e.plural:e.plural);let o=xi(t,r);return i[Zr](e.keypath,o,a)},o=Te(De(),r),c=Pe(e.tag)||Ie(e.tag)?e.tag:Si();return Ie(c)?s(c,o,{default:a}):s(c,o,a())}}});function wi(e){return Me(e)&&!Pe(e[0])}function Ti(e,t,n,r){let{slots:i,attrs:a}=t;return()=>{let t=()=>{let t={part:!0},a=De();e.locale&&(t.locale=e.locale),Pe(e.format)?t.key=e.format:Ie(e.format)&&(Pe(e.format.key)&&(t.key=e.format.key),a=Object.keys(e.format).reduce((t,r)=>n.includes(r)?Te(De(),t,{[r]:e.format[r]}):t,De()));let o=r(e.value,t,a),s=[t.key];return Me(o)?s=o.map((e,t)=>{let n=i[e.type],r=n?n({[e.type]:e.value,index:t,parts:o}):[e.value];return wi(r)&&(r[0].key=`${e.type}-${t}`),r}):Pe(o)&&(s=[o]),s},o=Te(De(),a),c=Pe(e.tag)||Ie(e.tag)?e.tag:Si();return Ie(c)?s(c,o,{default:t}):s(c,o,t())}}var Ei=K({name:`i18n-n`,props:Te({value:{type:Number,required:!0},format:{type:[String,Object]}},bi),setup(e,t){let n=e.i18n||Pi({useScope:e.scope,__useComponent:!0});return Ti(e,t,Er,(...e)=>n[$r](...e))}});function Di(e,t){let n=e;if(e.mode===`composition`)return n.__getInstance(t)||e.global;{let r=n.__getInstance(t);return r==null?e.global.__composer:r.__composer}}function Oi(e){let t=t=>{let{instance:n,value:r}=t;if(!n||!n.$)throw Xr(Yr.UNEXPECTED_ERROR);let i=Di(e,n.$),a=ki(r);return[Reflect.apply(i.t,i,[...Ai(a)]),i]};return{created:(e,n)=>{let[r,i]=t(n);_e&&(e.__i18nWatcher=l(i.locale,()=>{n.instance&&n.instance.$forceUpdate()})),e.__composer=i,e.textContent=r},unmounted:e=>{_e&&e.__i18nWatcher&&(e.__i18nWatcher(),e.__i18nWatcher=void 0,delete e.__i18nWatcher),e.__composer&&(e.__composer=void 0,delete e.__composer)},beforeUpdate:(e,{value:t})=>{if(e.__composer){let n=e.__composer,r=ki(t);e.textContent=Reflect.apply(n.t,n,[...Ai(r)])}},getSSRProps:e=>{let[n]=t(e);return{textContent:n}}}}function ki(e){if(Pe(e))return{path:e};if(Be(e)){if(!(`path`in e))throw Xr(Yr.REQUIRED_VALUE,`path`);return e}else throw Xr(Yr.INVALID_VALUE)}function Ai(e){let{path:t,locale:n,args:r,choice:i,plural:a}=e,o={},s=r||{};return Pe(n)&&(o.locale=n),xe(i)&&(o.plural=i),xe(a)&&(o.plural=a),[t,s,o]}function ji(e,t,...n){let r=Be(n[0])?n[0]:{};(!Fe(r.globalInstall)||r.globalInstall)&&([Ci.name,`I18nT`].forEach(t=>e.component(t,Ci)),[Ei.name,`I18nN`].forEach(t=>e.component(t,Ei)),[Gi.name,`I18nD`].forEach(t=>e.component(t,Gi))),e.directive(`t`,Oi(t))}var Mi=ve(`global-vue-i18n`);function Ni(e={}){let t=__VUE_I18N_LEGACY_API__&&Fe(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,n=!Fe(e.globalInjection)||e.globalInjection,r=new Map,[i,a]=Fi(e,t),o=ve(``);function s(e){return r.get(e)||null}function c(e,t){r.set(e,t)}function l(e){r.delete(e)}let u={get mode(){return __VUE_I18N_LEGACY_API__&&t?`legacy`:`composition`},async install(e,...r){if(e.__VUE_I18N_SYMBOL__=o,e.provide(e.__VUE_I18N_SYMBOL__,u),Be(r[0])){let e=r[0];u.__composerExtend=e.__composerExtend,u.__vueI18nExtend=e.__vueI18nExtend}let i=null;!t&&n&&(i=Wi(e,u.global)),__VUE_I18N_FULL_INSTALL__&&ji(e,u,...r),__VUE_I18N_LEGACY_API__&&t&&e.mixin(vi(a,a.__composer,u));let s=e.unmount;e.unmount=()=>{i&&i(),u.dispose(),s()}},get global(){return a},dispose(){i.stop()},__instances:r,__getInstance:s,__setInstance:c,__deleteInstance:l};return u}function Pi(e={}){let t=ui();if(t==null)throw Xr(Yr.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw Xr(Yr.NOT_INSTALLED);let n=Ii(t),i=Ri(n),a=si(t),o=Li(e,a);if(o===`global`)return ci(i,e,a),i;if(o===`parent`){let r=zi(n,t,e.__useComponent);return r??=i,r}if(o===`isolated`){if(n.mode!==`composition`)throw Xr(Yr.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);let a=n,o=Te({},e);o.__root=zi(n,t)||i;let s=hi(o);return a.__composerExtend&&(s[ni]=a.__composerExtend(s)),T()&&r(()=>{let e=s[ni];e&&(e(),delete s[ni])}),s}let s=n,c=s.__getInstance(t);if(c==null){let n=Te({},e);`__i18n`in a&&(n.__i18n=a.__i18n),i&&(n.__root=i),c=hi(n),s.__composerExtend&&(c[ni]=s.__composerExtend(c)),Vi(s,t,c),s.__setInstance(t,c)}return c}function Fi(e,t){let n=E(),r=__VUE_I18N_LEGACY_API__&&t?n.run(()=>_i(e)):n.run(()=>hi(e));if(r==null)throw Xr(Yr.UNEXPECTED_ERROR);return[n,r]}function Ii(e){let t=g(e.isCE?Mi:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw Xr(e.isCE?Yr.NOT_INSTALLED_WITH_PROVIDE:Yr.UNEXPECTED_ERROR);return t}function Li(e,t){return we(e)?`__i18n`in t?`local`:`global`:e.useScope?e.useScope:`local`}function Ri(e){return e.mode===`composition`?e.global:e.global.__composer}function zi(e,t,n=!1){let r=null,i=t.root,a=Bi(t,n);for(;a!=null;){let t=e;if(e.mode===`composition`)r=t.__getInstance(a);else if(__VUE_I18N_LEGACY_API__){let e=t.__getInstance(a);e!=null&&(r=e.__composer,n&&r&&!r[ti]&&(r=null))}if(r!=null||i===a)break;a=a.parent}return r}function Bi(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function Vi(e,t,n){h(()=>{},t),_(()=>{let r=n;e.__deleteInstance(t);let i=r[ni];i&&(i(),delete r[ni])},t)}var Hi=[`locale`,`fallbackLocale`,`availableLocales`],Ui=[`t`,`rt`,`d`,`n`,`tm`,`te`];function Wi(e,t){let n=Object.create(null);return Hi.forEach(e=>{let r=Object.getOwnPropertyDescriptor(t,e);if(!r)throw Xr(Yr.UNEXPECTED_ERROR);let i=D(r.value)?{get(){return r.value.value},set(e){r.value.value=e}}:{get(){return r.get&&r.get()}};Object.defineProperty(n,e,i)}),e.config.globalProperties.$i18n=n,Ui.forEach(n=>{let r=Object.getOwnPropertyDescriptor(t,n);if(!r||!r.value)throw Xr(Yr.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${n}`,r)}),()=>{delete e.config.globalProperties.$i18n,Ui.forEach(t=>{delete e.config.globalProperties[`$${t}`]})}}var Gi=K({name:`i18n-d`,props:Te({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},bi),setup(e,t){let n=e.i18n||Pi({useScope:e.scope,__useComponent:!0});return Ti(e,t,Sr,(...e)=>n[Qr](...e))}});if(Jr(),Qn(bn),er(Gn),nr(Mn),__INTLIFY_PROD_DEVTOOLS__){let e=ke();e.__INTLIFY__=!0,Sn(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}function Ki(){if(typeof window>`u`||!window.location?.origin)return``;let e=window.__PYTHINKER_RELAY_PREFIX__;if(typeof e!=`string`||!e.startsWith(`/`))return``;let t=e.replace(/\/+$/,``),n=window.location.pathname;return t!==``&&(n===t||n.startsWith(`${t}/`))?t:``}var qi={permission:`pythinker-web.permission`,activeWorkspace:`pythinker-active-workspace`,planMode:`pythinker-web.plan-mode`,planArmed:`pythinker-web.plan-armed`,dynamicWorkflowMode:`pythinker-web.dynamic-workflow-mode`,goalMode:`pythinker-web.goal-mode`,discussionPair:`pythinker-web.discussion-pair`,discussionReasoning:`pythinker-web.discussion-reasoning`,uiFontSize:`pythinker-web.ui-font-size`,starredModels:`pythinker-web.starred-models`,unread:`pythinker-web.unread`,onboarded:`pythinker-web.onboarded`,accent:`pythinker-web.accent`,colorScheme:`pythinker-web.color-scheme`,hiddenWorkspaces:`pythinker-web.hidden-workspaces`,collapsedWorkspaces:`pythinker-web.collapsed-workspaces`,workspaceOrder:`pythinker-web.workspace-order`,workspaceNameOverrides:`pythinker-web.workspace-name-overrides`,workspaceSort:`pythinker-web.workspace-sort`,pinnedSessions:`pythinker-web.pinned-sessions`,pinnedCollapsed:`pythinker-web.pinned-collapsed`,recentEmojis:`pythinker-web.recent-emojis`,conversationToc:`pythinker-web.beta-toc`,turnFolding:`pythinker-web.turn-folding`,activityRunFolding:`pythinker-web.activity-run-folding`,notifyOnComplete:`pythinker-web.notify-on-complete`,notifyOnQuestion:`pythinker-web.notify-on-question`,notifyOnApproval:`pythinker-web.notify-on-approval`,soundOnComplete:`pythinker-web.sound-on-complete`,inputHistory:`pythinker-web.input-history`,clientId:`pythinker-web.client-id`,debug:`pythinker-web.debug`,openInLastTarget:`pythinker-web.open-in.last-target`,sidebarCollapsed:`pythinker-web.sidebar-collapsed`,sidebarPinnedHeight:`pythinker-web.sidebar-pinned-height`,sidebarWidth:`pythinker-web.sidebar-width`,codeFont:`pythinker-web.code-font`,contentAlign:`pythinker-web.content-align`,theme:`pythinker-web.theme`,thinking:`pythinker-web.thinking`};function Ji(e){return`pythinker-web.draft.${e&&e.length>0?e:`__new__`}`}var Yi=new Map,Xi={getItem:e=>Yi.get(e)??null,setItem:(e,t)=>{Yi.set(e,String(t))},removeItem:e=>{Yi.delete(e)}};function Zi(){return Ki()===``?globalThis.localStorage:Xi}function Qi(e){try{return Zi()?.getItem(e)??null}catch{return null}}function $i(e,t){try{Zi()?.setItem(e,t)}catch{}}function ea(e){try{Zi()?.removeItem(e)}catch{}}function ta(e){let t=Qi(e);if(t===null)return null;try{return JSON.parse(t)}catch{return null}}function na(e,t){try{Zi()?.setItem(e,JSON.stringify(t))}catch{}}function ra(){let e=Qi(qi.unread);if(!e)return{};try{let t=JSON.parse(e);if(!t||typeof t!=`object`)return{};let n={};for(let[e,r]of Object.entries(t))r===!0&&(n[e]=!0);return n}catch{return{}}}function ia(e){let t={...ra()};for(let[n,r]of Object.entries(e))r?t[n]=!0:delete t[n];$i(qi.unread,JSON.stringify(t))}function aa(){let e=ta(qi.collapsedWorkspaces);return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function oa(e){na(qi.collapsedWorkspaces,Array.from(e))}function sa(){let e=ta(qi.workspaceOrder);return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function ca(e){na(qi.workspaceOrder,Array.from(e))}function la(){let e=ta(qi.workspaceNameOverrides);if(!e||typeof e!=`object`)return{};let t={};for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return t}function ua(e){na(qi.workspaceNameOverrides,e)}function da(){return Qi(qi.workspaceSort)}function fa(e){$i(qi.workspaceSort,e)}var pa=qi.clientId,ma=`pythinker-code-web`,ha=`web`;function ga(){return{serverHttpUrl:ya(void 0),clientId:Sa(),clientName:ma,clientVersion:Ca(),clientUiMode:ha}}function _a(){return typeof window<`u`&&window.location?.origin?window.location.origin+Ki():`http://127.0.0.1:58627`}function va(e){return Ki()+e}function ya(e){let t=e&&e.trim()?e:_a(),n=new URL(t);return n.pathname=n.pathname.replace(/\/v1\/?$/,``).replace(/\/$/,``),n.search=``,n.hash=``,n.toString().replace(/\/$/,``)}function ba(e,t,n=`v1`){return`${e}/api/${n}${t.startsWith(`/`)?t:`/${t}`}`}function xa(e,t){let n=new URL(`${e}/api/v1/ws`);return n.protocol=n.protocol===`https:`?`wss:`:`ws:`,n.searchParams.set(`client_id`,t),n.toString()}function Sa(){let e=Qi(pa);if(e)return e;let t=`web_${globalThis.crypto?.randomUUID?.()||Math.random().toString(36).slice(2)}`;return $i(pa,t),t}function Ca(){return`0.2.0`}async function wa(e){let t=typeof navigator<`u`?navigator.clipboard:void 0;if(t&&typeof t.writeText==`function`)try{return await t.writeText(e),!0}catch{}return Ea(e)}function Ta(e){if(typeof e!=`string`)return;let t=typeof navigator<`u`?navigator.clipboard:void 0;t&&typeof t.writeText==`function`||wa(e)}function Ea(e){if(typeof document>`u`||typeof document.execCommand!=`function`)return!1;let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,``),t.style.position=`fixed`,t.style.top=`-9999px`,t.style.left=`-9999px`,t.style.opacity=`0`,document.body.appendChild(t);let n=!1;try{t.focus(),t.select(),n=document.execCommand(`copy`)}catch{n=!1}finally{document.body.removeChild(t)}return n}function Da(e,t){if(e.length===0)return null;let n=new Set(e),r=t.filter(e=>n.has(e)),i=e.filter(e=>!t.includes(e));return i.length===0&&r.length===t.length?null:[...i,...r]}function Oa(e,t){let n=new Map(t.map((e,t)=>[e,t]));return e.toSorted((e,t)=>(n.get(e.id)??-1)-(n.get(t.id)??-1))}function ka(e,t,n,r=`before`){let i=e.indexOf(t),a=e.indexOf(n);if(i===-1||a===-1||i===a)return e;let o=[...e];o.splice(i,1);let s=i(t.get(n.id)??-1/0)-(t.get(e.id)??-1/0))}var ja={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`};function Ma(e){return e.replace(/[&<>"']/g,e=>ja[e]??e)}function Na(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Pa(e,t,n=40){let r=e.replace(/\s+/g,` `).trim();if(r.length===0)return``;let i=t.trim();if(i.length===0)return Fa(r,n*2);let a=r.toLowerCase().indexOf(i.toLowerCase());if(a<0)return Fa(r,n*2);let o=Math.max(0,a-n),s=Math.min(r.length,a+i.length+n),c=o>0,l=s`${e}`)}var La=z(0),Ra=[`type`,`disabled`,`aria-label`],za=K({__name:`IconButton`,props:{size:{default:`md`},disabled:{type:Boolean},label:{},type:{default:`button`}},setup(e,{expose:t}){let n=z();return t({el:n}),(t,r)=>(u(),G(`button`,{ref_key:`el`,ref:n,class:H([`ui-icon-button`,`ui-icon-button--${e.size}`]),type:e.type,disabled:e.disabled,"aria-label":e.label},[he(t.$slots,`default`,{},void 0,!0)],10,Ra))}}),J=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},Ba=J(za,[[`__scopeId`,`data-v-4b23513f`]]),Va=z(!1),Ha=!1;function Ua(){let e=document.documentElement.dataset.colorScheme;return e===`dark`?!0:e===`light`||typeof window.matchMedia!=`function`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}function Wa(){return!Ha&&typeof window<`u`&&typeof document<`u`&&(Ha=!0,Va.value=Ua(),new MutationObserver(()=>{Va.value=Ua()}).observe(document.documentElement,{attributes:!0,attributeFilter:[`data-color-scheme`]}),window.matchMedia?.(`(prefers-color-scheme: dark)`)?.addEventListener(`change`,()=>{Va.value=Ua()})),Va}var Ga={"._sc_":`godot-assets`,".adonisrc.json":`adonis`,".aiexclude":`gemini-ai`,".angular-cli.json":`angular`,".appveyor.yml":`appveyor`,".astylerc":`astyle`,".autorc":`auto`,".babel-plugin-macrosrc":`babel`,".babel-plugin-macrosrc.cjs":`babel`,".babel-plugin-macrosrc.cts":`babel`,".babel-plugin-macrosrc.js":`babel`,".babel-plugin-macrosrc.json":`babel`,".babel-plugin-macrosrc.json5":`babel`,".babel-plugin-macrosrc.jsonc":`babel`,".babel-plugin-macrosrc.mjs":`babel`,".babel-plugin-macrosrc.mts":`babel`,".babel-plugin-macrosrc.toml":`babel`,".babel-plugin-macrosrc.ts":`babel`,".babel-plugin-macrosrc.yaml":`babel`,".babel-plugin-macrosrc.yml":`babel`,".babelrc":`babel`,".babelrc.cjs":`babel`,".babelrc.cts":`babel`,".babelrc.js":`babel`,".babelrc.json":`babel`,".babelrc.json5":`babel`,".babelrc.jsonc":`babel`,".babelrc.mjs":`babel`,".babelrc.mts":`babel`,".babelrc.toml":`babel`,".babelrc.ts":`babel`,".babelrc.yaml":`babel`,".babelrc.yml":`babel`,".bazelignore":`bazel`,".bazelrc":`bazel`,".bazelversion":`bazel`,".biome.json":`biome`,".biome.jsonc":`biome`,".bithoundrc":`bithound`,".blitz.config.compiled.js":`blitz`,".bowerrc":`bower`,".browserslistrc":`browserlist`,".buckconfig":`buck`,".buildignore":`settings`,".bun-version":`bun`,".cfignore":`cloudfoundry`,".clang-format":`settings`,".clang-format-ignore":`settings`,".clang-tidy":`settings`,".clangd":`clangd`,".clinerules":`cline`,".codeclimate.yml":`code-climate`,".codecov.yaml":`codecov`,".codecov.yml":`codecov`,".coderabbit.yaml":`coderabbit-ai`,".coderabbit.yml":`coderabbit-ai`,".commitlint.yaml":`commitlint`,".commitlint.yml":`commitlint`,".commitlintrc":`commitlint`,".commitlintrc.cjs":`commitlint`,".commitlintrc.cts":`commitlint`,".commitlintrc.js":`commitlint`,".commitlintrc.json":`commitlint`,".commitlintrc.json5":`commitlint`,".commitlintrc.jsonc":`commitlint`,".commitlintrc.mjs":`commitlint`,".commitlintrc.mts":`commitlint`,".commitlintrc.toml":`commitlint`,".commitlintrc.ts":`commitlint`,".commitlintrc.yaml":`commitlint`,".commitlintrc.yml":`commitlint`,".conf":`settings`,".config/babel-plugin-macrosrc":`babel`,".config/babel-plugin-macrosrc.cjs":`babel`,".config/babel-plugin-macrosrc.cts":`babel`,".config/babel-plugin-macrosrc.js":`babel`,".config/babel-plugin-macrosrc.json":`babel`,".config/babel-plugin-macrosrc.json5":`babel`,".config/babel-plugin-macrosrc.jsonc":`babel`,".config/babel-plugin-macrosrc.mjs":`babel`,".config/babel-plugin-macrosrc.mts":`babel`,".config/babel-plugin-macrosrc.toml":`babel`,".config/babel-plugin-macrosrc.ts":`babel`,".config/babel-plugin-macrosrc.yaml":`babel`,".config/babel-plugin-macrosrc.yml":`babel`,".config/babelrc":`babel`,".config/babelrc.cjs":`babel`,".config/babelrc.cts":`babel`,".config/babelrc.js":`babel`,".config/babelrc.json":`babel`,".config/babelrc.json5":`babel`,".config/babelrc.jsonc":`babel`,".config/babelrc.mjs":`babel`,".config/babelrc.mts":`babel`,".config/babelrc.toml":`babel`,".config/babelrc.ts":`babel`,".config/babelrc.yaml":`babel`,".config/babelrc.yml":`babel`,".config/commitlintrc":`commitlint`,".config/commitlintrc.cjs":`commitlint`,".config/commitlintrc.cts":`commitlint`,".config/commitlintrc.js":`commitlint`,".config/commitlintrc.json":`commitlint`,".config/commitlintrc.json5":`commitlint`,".config/commitlintrc.jsonc":`commitlint`,".config/commitlintrc.mjs":`commitlint`,".config/commitlintrc.mts":`commitlint`,".config/commitlintrc.toml":`commitlint`,".config/commitlintrc.ts":`commitlint`,".config/commitlintrc.yaml":`commitlint`,".config/commitlintrc.yml":`commitlint`,".config/cracorc":`craco`,".config/cracorc.cjs":`craco`,".config/cracorc.cts":`craco`,".config/cracorc.js":`craco`,".config/cracorc.json":`craco`,".config/cracorc.json5":`craco`,".config/cracorc.jsonc":`craco`,".config/cracorc.mjs":`craco`,".config/cracorc.mts":`craco`,".config/cracorc.toml":`craco`,".config/cracorc.ts":`craco`,".config/cracorc.yaml":`craco`,".config/cracorc.yml":`craco`,".config/eslintrc":`eslint`,".config/eslintrc.cjs":`eslint`,".config/eslintrc.cts":`eslint`,".config/eslintrc.js":`eslint`,".config/eslintrc.json":`eslint`,".config/eslintrc.json5":`eslint`,".config/eslintrc.jsonc":`eslint`,".config/eslintrc.mjs":`eslint`,".config/eslintrc.mts":`eslint`,".config/eslintrc.toml":`eslint`,".config/eslintrc.ts":`eslint`,".config/eslintrc.yaml":`eslint`,".config/eslintrc.yml":`eslint`,".config/graphqlrc":`graphql`,".config/graphqlrc.cjs":`graphql`,".config/graphqlrc.cts":`graphql`,".config/graphqlrc.js":`graphql`,".config/graphqlrc.json":`graphql`,".config/graphqlrc.json5":`graphql`,".config/graphqlrc.jsonc":`graphql`,".config/graphqlrc.mjs":`graphql`,".config/graphqlrc.mts":`graphql`,".config/graphqlrc.toml":`graphql`,".config/graphqlrc.ts":`graphql`,".config/graphqlrc.yaml":`graphql`,".config/graphqlrc.yml":`graphql`,".config/huskyrc":`husky`,".config/huskyrc.cjs":`husky`,".config/huskyrc.cts":`husky`,".config/huskyrc.js":`husky`,".config/huskyrc.json":`husky`,".config/huskyrc.json5":`husky`,".config/huskyrc.jsonc":`husky`,".config/huskyrc.mjs":`husky`,".config/huskyrc.mts":`husky`,".config/huskyrc.toml":`husky`,".config/huskyrc.ts":`husky`,".config/huskyrc.yaml":`husky`,".config/huskyrc.yml":`husky`,".config/postcssrc":`postcss`,".config/postcssrc.cjs":`postcss`,".config/postcssrc.cts":`postcss`,".config/postcssrc.js":`postcss`,".config/postcssrc.json":`postcss`,".config/postcssrc.json5":`postcss`,".config/postcssrc.jsonc":`postcss`,".config/postcssrc.mjs":`postcss`,".config/postcssrc.mts":`postcss`,".config/postcssrc.toml":`postcss`,".config/postcssrc.ts":`postcss`,".config/postcssrc.yaml":`postcss`,".config/postcssrc.yml":`postcss`,".config/posthtmlrc":`posthtml`,".config/posthtmlrc.cjs":`posthtml`,".config/posthtmlrc.cts":`posthtml`,".config/posthtmlrc.js":`posthtml`,".config/posthtmlrc.json":`posthtml`,".config/posthtmlrc.json5":`posthtml`,".config/posthtmlrc.jsonc":`posthtml`,".config/posthtmlrc.mjs":`posthtml`,".config/posthtmlrc.mts":`posthtml`,".config/posthtmlrc.toml":`posthtml`,".config/posthtmlrc.ts":`posthtml`,".config/posthtmlrc.yaml":`posthtml`,".config/posthtmlrc.yml":`posthtml`,".config/prettierrc":`prettier`,".config/prettierrc.cjs":`prettier`,".config/prettierrc.cts":`prettier`,".config/prettierrc.js":`prettier`,".config/prettierrc.json":`prettier`,".config/prettierrc.json5":`prettier`,".config/prettierrc.jsonc":`prettier`,".config/prettierrc.mjs":`prettier`,".config/prettierrc.mts":`prettier`,".config/prettierrc.toml":`prettier`,".config/prettierrc.ts":`prettier`,".config/prettierrc.yaml":`prettier`,".config/prettierrc.yml":`prettier`,".config/puppeteerrc":`puppeteer`,".config/puppeteerrc.cjs":`puppeteer`,".config/puppeteerrc.cts":`puppeteer`,".config/puppeteerrc.js":`puppeteer`,".config/puppeteerrc.json":`puppeteer`,".config/puppeteerrc.json5":`puppeteer`,".config/puppeteerrc.jsonc":`puppeteer`,".config/puppeteerrc.mjs":`puppeteer`,".config/puppeteerrc.mts":`puppeteer`,".config/puppeteerrc.toml":`puppeteer`,".config/puppeteerrc.ts":`puppeteer`,".config/puppeteerrc.yaml":`puppeteer`,".config/puppeteerrc.yml":`puppeteer`,".config/releaserc":`semantic-release`,".config/releaserc.cjs":`semantic-release`,".config/releaserc.cts":`semantic-release`,".config/releaserc.js":`semantic-release`,".config/releaserc.json":`semantic-release`,".config/releaserc.json5":`semantic-release`,".config/releaserc.jsonc":`semantic-release`,".config/releaserc.mjs":`semantic-release`,".config/releaserc.mts":`semantic-release`,".config/releaserc.toml":`semantic-release`,".config/releaserc.ts":`semantic-release`,".config/releaserc.yaml":`semantic-release`,".config/releaserc.yml":`semantic-release`,".config/stylelintrc":`stylelint`,".config/stylelintrc.cjs":`stylelint`,".config/stylelintrc.cts":`stylelint`,".config/stylelintrc.js":`stylelint`,".config/stylelintrc.json":`stylelint`,".config/stylelintrc.json5":`stylelint`,".config/stylelintrc.jsonc":`stylelint`,".config/stylelintrc.mjs":`stylelint`,".config/stylelintrc.mts":`stylelint`,".config/stylelintrc.toml":`stylelint`,".config/stylelintrc.ts":`stylelint`,".config/stylelintrc.yaml":`stylelint`,".config/stylelintrc.yml":`stylelint`,".config/svgrrc":`svgr`,".config/svgrrc.cjs":`svgr`,".config/svgrrc.cts":`svgr`,".config/svgrrc.js":`svgr`,".config/svgrrc.json":`svgr`,".config/svgrrc.json5":`svgr`,".config/svgrrc.jsonc":`svgr`,".config/svgrrc.mjs":`svgr`,".config/svgrrc.mts":`svgr`,".config/svgrrc.toml":`svgr`,".config/svgrrc.ts":`svgr`,".config/svgrrc.yaml":`svgr`,".config/svgrrc.yml":`svgr`,".config/syncpackrc":`syncpack`,".config/syncpackrc.cjs":`syncpack`,".config/syncpackrc.cts":`syncpack`,".config/syncpackrc.js":`syncpack`,".config/syncpackrc.json":`syncpack`,".config/syncpackrc.json5":`syncpack`,".config/syncpackrc.jsonc":`syncpack`,".config/syncpackrc.mjs":`syncpack`,".config/syncpackrc.mts":`syncpack`,".config/syncpackrc.toml":`syncpack`,".config/syncpackrc.ts":`syncpack`,".config/syncpackrc.yaml":`syncpack`,".config/syncpackrc.yml":`syncpack`,".copilotignore":`copilot`,".coverage":`python-misc`,".coveragerc":`python-misc`,".cracorc":`craco`,".cracorc.cjs":`craco`,".cracorc.cts":`craco`,".cracorc.js":`craco`,".cracorc.json":`craco`,".cracorc.json5":`craco`,".cracorc.jsonc":`craco`,".cracorc.mjs":`craco`,".cracorc.mts":`craco`,".cracorc.toml":`craco`,".cracorc.ts":`craco`,".cracorc.yaml":`craco`,".cracorc.yml":`craco`,".cursor":`cursor`,".cursor.json":`cursor`,".cursorignore":`cursor`,".cursorindexingignore":`cursor`,".cursorrc":`cursor`,".cursorrules":`cursor`,".cz.json":`commitizen`,".cz.toml":`commitizen`,".cz.yaml":`commitizen`,".cz.yml":`commitizen`,".czrc":`commitizen`,".deepsource.toml":`deepsource`,".dev.vars":`tune`,".drone.yml":`drone`,".easignore":`expo`,".ecrc":`editorconfig`,".editorconfig":`editorconfig`,".editorconfig-checker.json":`editorconfig`,".ember-cli":`ember`,".ember-cli.js":`ember`,".env.alpha":`tune`,".env.defaults":`tune`,".env.dev":`tune`,".env.dev.local":`tune`,".env.development":`tune`,".env.development.local":`tune`,".env.dist":`tune`,".env.e2e":`tune`,".env.example":`tune`,".env.local":`tune`,".env.preview":`tune`,".env.prod":`tune`,".env.prod.example":`tune`,".env.prod.local":`tune`,".env.production":`tune`,".env.production.example":`tune`,".env.production.local":`tune`,".env.qa":`tune`,".env.qa.local":`tune`,".env.sample":`tune`,".env.schema":`tune`,".env.sentry-build-plugin":`sentry`,".env.stage":`tune`,".env.staging":`tune`,".env.staging.local":`tune`,".env.stg":`tune`,".env.stg.local":`tune`,".env.template":`tune`,".env.test":`tune`,".env.test.local":`tune`,".env.testing":`tune`,".env.uat":`tune`,".envrc":`console`,".esformatter":`json`,".eslintcache":`eslint`,".eslintignore":`eslint`,".eslintrc":`eslint`,".eslintrc-jsdoc.js":`eslint`,".eslintrc-md.js":`eslint`,".eslintrc.base.json":`eslint`,".eslintrc.cjs":`eslint`,".eslintrc.cts":`eslint`,".eslintrc.js":`eslint`,".eslintrc.json":`eslint`,".eslintrc.json5":`eslint`,".eslintrc.jsonc":`eslint`,".eslintrc.mjs":`eslint`,".eslintrc.mts":`eslint`,".eslintrc.toml":`eslint`,".eslintrc.ts":`eslint`,".eslintrc.yaml":`eslint`,".eslintrc.yml":`eslint`,".esmrc":`nodejs`,".firebaserc":`firebase`,".flowconfig":`flow`,".gardenignore":`garden`,".gcloudignore":`gcp`,".gdignore":`godot-assets`,".git":`git`,".git-blame-ignore":`git`,".git-blame-ignore-revs":`git`,".git-for-windows-updater":`git`,".gitattributes":`git`,".gitattributes-global":`git`,".gitattributes_global":`git`,".gitconfig":`git`,".github/funding.yml":`github-sponsors`,".github/labeler.yaml":`label`,".github/labeler.yml":`label`,".gitignore":`git`,".gitignore-global":`git`,".gitignore_global":`git`,".gitinclude":`git`,".gitkeep":`git`,".gitmessage":`git`,".gitmodules":`git`,".gitpod.yml":`gitpod`,".gitpreserve":`git`,".graphqlconfig":`graphql`,".graphqlrc":`graphql`,".graphqlrc.cjs":`graphql`,".graphqlrc.cts":`graphql`,".graphqlrc.js":`graphql`,".graphqlrc.json":`graphql`,".graphqlrc.json5":`graphql`,".graphqlrc.jsonc":`graphql`,".graphqlrc.mjs":`graphql`,".graphqlrc.mts":`graphql`,".graphqlrc.toml":`graphql`,".graphqlrc.ts":`graphql`,".graphqlrc.yaml":`graphql`,".graphqlrc.yml":`graphql`,".hadolint.yaml":`hadolint`,".hadolint.yml":`hadolint`,".happo.cjs":`happo`,".happo.js":`happo`,".happo.mjs":`happo`,".helmignore":`helm`,".hg":`mercurial`,".hgflow":`mercurial`,".hgignore":`mercurial`,".hgrc":`mercurial`,".hgtags":`mercurial`,".hhconfig":`hack`,".hintrc":`webhint`,".histoire.cjs":`histoire`,".histoire.cts":`histoire`,".histoire.js":`histoire`,".histoire.mjs":`histoire`,".histoire.mts":`histoire`,".histoire.ts":`histoire`,".htaccess":`xml`,".htpasswd":`key`,".hushlogin":`console`,".huskyrc":`husky`,".huskyrc.cjs":`husky`,".huskyrc.cts":`husky`,".huskyrc.js":`husky`,".huskyrc.json":`husky`,".huskyrc.json5":`husky`,".huskyrc.jsonc":`husky`,".huskyrc.mjs":`husky`,".huskyrc.mts":`husky`,".huskyrc.toml":`husky`,".huskyrc.ts":`husky`,".huskyrc.yaml":`husky`,".huskyrc.yml":`husky`,".io-config.json":`ionic`,".istanbul.yml":`istanbul`,".jestrc":`jest`,".jestrc.js":`jest`,".jestrc.json":`jest`,".jsbeautifyrc":`json`,".jscsrc":`json`,".jshintignore":`settings`,".jshintrc":`json`,".justfile":`just`,".k8s.yaml":`kubernetes`,".k8s.yml":`kubernetes`,".keep":`git`,".kl":`kl`,".knip.json":`knip`,".knip.jsonc":`knip`,".latexmkrc":`latexmk`,".lefthook-local.json":`lefthook`,".lefthook-local.toml":`lefthook`,".lefthook-local.yaml":`lefthook`,".lefthook-local.yml":`lefthook`,".lefthook.json":`lefthook`,".lefthook.toml":`lefthook`,".lefthook.yaml":`lefthook`,".lefthook.yml":`lefthook`,".lefthookrc":`lefthook`,".liaraignore":`liara`,".lighthouserc.cjs":`lighthouse`,".lighthouserc.js":`lighthouse`,".lighthouserc.json":`lighthouse`,".lighthouserc.yaml":`lighthouse`,".lighthouserc.yml":`lighthouse`,".lintstagedrc":`lintstaged`,".lintstagedrc.cjs":`lintstaged`,".lintstagedrc.js":`lintstaged`,".lintstagedrc.json":`lintstaged`,".lintstagedrc.mjs":`lintstaged`,".lintstagedrc.yaml":`lintstaged`,".lintstagedrc.yml":`lintstaged`,".luacheckrc":`lua`,".luaurc":`luau`,".mailmap":`email`,".markdownlint-cli2.cjs":`markdownlint`,".markdownlint-cli2.jsonc":`markdownlint`,".markdownlint-cli2.mjs":`markdownlint`,".markdownlint-cli2.yaml":`markdownlint`,".markdownlint.json":`markdownlint`,".markdownlint.jsonc":`markdownlint`,".markdownlint.yaml":`markdownlint`,".markdownlint.yml":`markdownlint`,".markdownlintignore":`markdownlint`,".mcattributes":`minecraft`,".mcdefinitions":`minecraft`,".mcignore":`minecraft`,".mincloudrc":`ifanr-cloud`,".mjmlconfig":`mjml`,".mocharc.cjs":`mocha`,".mocharc.js":`mocha`,".mocharc.json":`mocha`,".mocharc.jsonc":`mocha`,".mocharc.yaml":`mocha`,".mocharc.yml":`mocha`,".modernizrrc":`modernizr`,".modernizrrc.js":`modernizr`,".modernizrrc.json":`modernizr`,".mrconfig":`settings`,".nano-staged.cjs":`nano-staged`,".nano-staged.js":`nano-staged`,".nano-staged.json":`nano-staged`,".nano-staged.mjs":`nano-staged`,".nanostagedrc":`nano-staged`,".nest-cli.json":`nest`,".nestconfig.json":`nest`,".node-version":`nodejs`,".nowignore":`vercel`,".npmignore":`npm`,".npmrc":`npm`,".nuspec":`nuget`,".nuxtignore":`nuxt`,".nuxtrc":`nuxt`,".nvmrc":`nodejs`,".nxignore":`nx`,".nycrc":`istanbul`,".nycrc.json":`istanbul`,".nycrc.yaml":`istanbul`,".nycrc.yml":`istanbul`,".oxfmtrc.json":`oxc`,".oxfmtrc.jsonc":`oxc`,".oxlintrc.json":`oxc`,".oxlintrc.jsonc":`oxc`,".packshiprc":`packship`,".packshiprc.js":`packship`,".packshiprc.json":`packship`,".packshiprc.ts":`packship`,".parcelrc":`parcel`,".pdm-python":`pdm`,".percy.yml":`percy`,".php-cs-fixer.dist.php":`php-cs-fixer`,".php-cs-fixer.php":`php-cs-fixer`,".php_cs":`php-cs-fixer`,".php_cs.dist":`php-cs-fixer`,".php_cs.dist.php":`php-cs-fixer`,".php_cs.php":`php-cs-fixer`,".phpunit-watcher.yml":`phpunit`,".phpunit.result.cache":`phpunit`,".pnpmfile.cjs":`pnpm`,".postcssrc":`postcss`,".postcssrc.cjs":`postcss`,".postcssrc.cts":`postcss`,".postcssrc.js":`postcss`,".postcssrc.json":`postcss`,".postcssrc.json5":`postcss`,".postcssrc.jsonc":`postcss`,".postcssrc.mjs":`postcss`,".postcssrc.mts":`postcss`,".postcssrc.toml":`postcss`,".postcssrc.ts":`postcss`,".postcssrc.yaml":`postcss`,".postcssrc.yml":`postcss`,".posthtmlrc":`posthtml`,".posthtmlrc.cjs":`posthtml`,".posthtmlrc.cts":`posthtml`,".posthtmlrc.js":`posthtml`,".posthtmlrc.json":`posthtml`,".posthtmlrc.json5":`posthtml`,".posthtmlrc.jsonc":`posthtml`,".posthtmlrc.mjs":`posthtml`,".posthtmlrc.mts":`posthtml`,".posthtmlrc.toml":`posthtml`,".posthtmlrc.ts":`posthtml`,".posthtmlrc.yaml":`posthtml`,".posthtmlrc.yml":`posthtml`,".pre-commit-config.yaml":`pre-commit`,".pre-commit-hooks.yaml":`pre-commit`,".prettierignore":`prettier`,".prettierrc":`prettier`,".prettierrc.cjs":`prettier`,".prettierrc.cts":`prettier`,".prettierrc.js":`prettier`,".prettierrc.json":`prettier`,".prettierrc.json5":`prettier`,".prettierrc.jsonc":`prettier`,".prettierrc.mjs":`prettier`,".prettierrc.mts":`prettier`,".prettierrc.toml":`prettier`,".prettierrc.ts":`prettier`,".prettierrc.yaml":`prettier`,".prettierrc.yml":`prettier`,".pubignore":`dart`,".pug-lintrc":`pug`,".pug-lintrc.js":`pug`,".pug-lintrc.json":`pug`,".puppeteerrc":`puppeteer`,".puppeteerrc.cjs":`puppeteer`,".puppeteerrc.cts":`puppeteer`,".puppeteerrc.js":`puppeteer`,".puppeteerrc.json":`puppeteer`,".puppeteerrc.json5":`puppeteer`,".puppeteerrc.jsonc":`puppeteer`,".puppeteerrc.mjs":`puppeteer`,".puppeteerrc.mts":`puppeteer`,".puppeteerrc.toml":`puppeteer`,".puppeteerrc.ts":`puppeteer`,".puppeteerrc.yaml":`puppeteer`,".puppeteerrc.yml":`puppeteer`,".pylintrc":`python-misc`,".python-version":`python-misc`,".qa-mincloudrc":`ifanr-cloud`,".release-it.cjs":`rocket`,".release-it.js":`rocket`,".release-it.json":`rocket`,".release-it.toml":`rocket`,".release-it.ts":`rocket`,".release-it.yaml":`rocket`,".release-it.yml":`rocket`,".release-plz.toml":`rocket`,".releaserc":`semantic-release`,".releaserc.cjs":`semantic-release`,".releaserc.cts":`semantic-release`,".releaserc.js":`semantic-release`,".releaserc.json":`semantic-release`,".releaserc.json5":`semantic-release`,".releaserc.jsonc":`semantic-release`,".releaserc.mjs":`semantic-release`,".releaserc.mts":`semantic-release`,".releaserc.toml":`semantic-release`,".releaserc.ts":`semantic-release`,".releaserc.yaml":`semantic-release`,".releaserc.yml":`semantic-release`,".remarkignore":`remark`,".remarkrc":`remark`,".remarkrc.cjs":`remark`,".remarkrc.js":`remark`,".remarkrc.json":`remark`,".remarkrc.mjs":`remark`,".remarkrc.yaml":`remark`,".remarkrc.yml":`remark`,".renovaterc":`renovate`,".renovaterc.json":`renovate`,".replit":`replit`,".rhistory":`r`,".rspec":`rspec`,".rubocop-todo.yml":`rubocop`,".rubocop.yml":`rubocop`,".rubocop_todo.yml":`rubocop`,".ruby-version":`ruby`,".ruff.toml":`ruff`,".scrapy":`python-misc`,".secrets":`key`,".semgrepignore":`semgrep`,".sentryclirc":`sentry`,".sequelizerc":`sequelize`,".shellcheckrc":`shellcheck`,".slugignore":`slug`,".snyk":`snyk`,".sonarcloud.properties":`sonarcloud`,".stackblitzrc":`stackblitz`,".steadybit.yaml":`steadybit`,".steadybit.yml":`steadybit`,".stryker.conf.cjs":`stryker`,".stryker.conf.js":`stryker`,".stryker.conf.json":`stryker`,".stryker.conf.mjs":`stryker`,".stryker.config.cjs":`stryker`,".stryker.config.js":`stryker`,".stryker.config.json":`stryker`,".stryker.config.mjs":`stryker`,".stylelintcache":`stylelint`,".stylelintignore":`stylelint`,".stylelintrc":`stylelint`,".stylelintrc.cjs":`stylelint`,".stylelintrc.cts":`stylelint`,".stylelintrc.js":`stylelint`,".stylelintrc.json":`stylelint`,".stylelintrc.json5":`stylelint`,".stylelintrc.jsonc":`stylelint`,".stylelintrc.mjs":`stylelint`,".stylelintrc.mts":`stylelint`,".stylelintrc.toml":`stylelint`,".stylelintrc.ts":`stylelint`,".stylelintrc.yaml":`stylelint`,".stylelintrc.yml":`stylelint`,".svgrrc":`svgr`,".svgrrc.cjs":`svgr`,".svgrrc.cts":`svgr`,".svgrrc.js":`svgr`,".svgrrc.json":`svgr`,".svgrrc.json5":`svgr`,".svgrrc.jsonc":`svgr`,".svgrrc.mjs":`svgr`,".svgrrc.mts":`svgr`,".svgrrc.toml":`svgr`,".svgrrc.ts":`svgr`,".svgrrc.yaml":`svgr`,".svgrrc.yml":`svgr`,".swift-format":`swift`,".swift-version":`swift`,".swiftformat":`swift`,".syncpackrc":`syncpack`,".syncpackrc.cjs":`syncpack`,".syncpackrc.cts":`syncpack`,".syncpackrc.js":`syncpack`,".syncpackrc.json":`syncpack`,".syncpackrc.json5":`syncpack`,".syncpackrc.jsonc":`syncpack`,".syncpackrc.mjs":`syncpack`,".syncpackrc.mts":`syncpack`,".syncpackrc.toml":`syncpack`,".syncpackrc.ts":`syncpack`,".syncpackrc.yaml":`syncpack`,".syncpackrc.yml":`syncpack`,".taskrc.yaml":`taskfile`,".taskrc.yml":`taskfile`,".taurignore":`tauri`,".tazerc":`taze`,".tazerc.json":`taze`,".textlintignore":`textlint`,".textlintrc":`textlint`,".textlintrc.cjs":`textlint`,".textlintrc.js":`textlint`,".textlintrc.json":`textlint`,".textlintrc.yaml":`textlint`,".textlintrc.yml":`textlint`,".tobimake":`tobimake`,".travis.yml":`travis`,".umirc.cjs":`umi`,".umirc.cts":`umi`,".umirc.js":`umi`,".umirc.mjs":`umi`,".umirc.mts":`umi`,".umirc.ts":`umi`,".uv.toml":`uv`,".vars":`tune`,".vercelignore":`vercel`,".vfl":`vfl`,".vsconfig":`visualstudio`,".vuerc":`vue-config`,".wakatime-project":`wakatime`,".watchmanconfig":`watchman`,".whitesource":`json`,".yardopts":`settings`,".yarn-integrity":`yarn`,".yarnclean":`yarn`,".yarnrc":`yarn`,".yarnrc.yaml":`yarn`,".yarnrc.yml":`yarn`,_sc_:`godot-assets`,ace:`adonis`,"amplify.yml":`amplify`,"androidmanifest.xml":`android`,"angular-cli.json":`angular`,"angular.json":`angular`,apkbuild:`console`,"apollo.config.js":`apollo`,appfile:`fastlane`,appraisals:`ruby`,"appveyor.yml":`appveyor`,"appwrite.js":`appwrite`,"appwrite.json":`appwrite`,"appwrite.ts":`appwrite`,architecture:`architecture`,"architecture.md":`architecture`,"architecture.rst":`architecture`,"architecture.txt":`architecture`,artisan:`laravel`,"astro.config.cjs":`astro-config`,"astro.config.cts":`astro-config`,"astro.config.js":`astro-config`,"astro.config.mjs":`astro-config`,"astro.config.mts":`astro-config`,"astro.config.ts":`astro-config`,"aurelia.json":`aurelia`,authors:`authors`,"authors.md":`authors`,"authors.rst":`authors`,"authors.txt":`authors`,"auto-config.js":`auto`,"auto-config.json":`auto`,"auto-config.ts":`auto`,"auto-config.yaml":`auto`,"auto-config.yml":`auto`,"auto.config.js":`auto`,"auto.config.ts":`auto`,"azure-pipelines-main.yaml":`azure-pipelines`,"azure-pipelines-main.yml":`azure-pipelines`,"azure-pipelines.yaml":`azure-pipelines`,"azure-pipelines.yml":`azure-pipelines`,"babel-plugin-macros.config.cjs":`babel`,"babel-plugin-macros.config.cts":`babel`,"babel-plugin-macros.config.js":`babel`,"babel-plugin-macros.config.json":`babel`,"babel-plugin-macros.config.json5":`babel`,"babel-plugin-macros.config.jsonc":`babel`,"babel-plugin-macros.config.mjs":`babel`,"babel-plugin-macros.config.mts":`babel`,"babel-plugin-macros.config.toml":`babel`,"babel-plugin-macros.config.ts":`babel`,"babel-plugin-macros.config.yaml":`babel`,"babel-plugin-macros.config.yml":`babel`,"babel-transform.js":`babel`,"babel.config.cjs":`babel`,"babel.config.cts":`babel`,"babel.config.js":`babel`,"babel.config.json":`babel`,"babel.config.json5":`babel`,"babel.config.jsonc":`babel`,"babel.config.mjs":`babel`,"babel.config.mts":`babel`,"babel.config.toml":`babel`,"babel.config.ts":`babel`,"babel.config.yaml":`babel`,"babel.config.yml":`babel`,bashrc_apple_terminal:`console`,berksfile:`ruby`,"berksfile.lock":`ruby`,"biome.json":`biome`,"biome.jsonc":`biome`,"bitbucket-pipelines.yaml":`bitbucket`,"bitbucket-pipelines.yml":`bitbucket`,"blitz.config.js":`blitz`,"blitz.config.ts":`blitz`,"bower.json":`bower`,brewfile:`ruby`,browserslist:`browserlist`,"buildkite.yaml":`buildkite`,"buildkite.yml":`buildkite`,"bun.lock":`bun`,"bun.lockb":`bun`,"bunfig.toml":`bun`,"cabal.project":`cabal`,"cabal.project.freeze":`cabal`,"cabal.project.local":`cabal`,caddyfile:`caddy`,"capacitor.config.json":`capacitor`,"capacitor.config.ts":`capacitor`,capfile:`ruby`,"cdp.pid":`json`,"celerybeat-schedule":`python-misc`,"celerybeat.pid":`python-misc`,changelog:`changelog`,"changelog.md":`changelog`,"changelog.rst":`changelog`,"changelog.txt":`changelog`,changes:`changelog`,"changes.md":`changelog`,"changes.rst":`changelog`,"changes.txt":`changelog`,cheffile:`ruby`,"chromatic.config.json":`chromatic`,"circle.yml":`circleci`,"citation.cff":`citation`,"claude.local.md":`claude`,"claude.md":`claude`,"cmakecache.txt":`cmake`,"cmakelists.txt":`cmake`,"cmakepresets.json":`cmake`,cname:`http`,code_of_conduct:`conduct`,"code_of_conduct.md":`conduct`,"code_of_conduct.txt":`conduct`,"codecov.yaml":`codecov`,"codecov.yml":`codecov`,codeowners:`codeowners`,"commit-msg":`console`,commit_editmsg:`git`,"commitlint.config.cjs":`commitlint`,"commitlint.config.cts":`commitlint`,"commitlint.config.js":`commitlint`,"commitlint.config.json":`commitlint`,"commitlint.config.json5":`commitlint`,"commitlint.config.jsonc":`commitlint`,"commitlint.config.mjs":`commitlint`,"commitlint.config.mts":`commitlint`,"commitlint.config.toml":`commitlint`,"commitlint.config.ts":`commitlint`,"commitlint.config.yaml":`commitlint`,"commitlint.config.yml":`commitlint`,"compile_flags.txt":`settings`,"compose.alpha.yaml":`docker`,"compose.alpha.yml":`docker`,"compose.beta.yaml":`docker`,"compose.beta.yml":`docker`,"compose.ci.yaml":`docker`,"compose.ci.yml":`docker`,"compose.dev.yaml":`docker`,"compose.dev.yml":`docker`,"compose.development.yaml":`docker`,"compose.development.yml":`docker`,"compose.local.yaml":`docker`,"compose.local.yml":`docker`,"compose.override.yaml":`docker`,"compose.override.yml":`docker`,"compose.prod.yaml":`docker`,"compose.prod.yml":`docker`,"compose.production.yaml":`docker`,"compose.production.yml":`docker`,"compose.stage.yaml":`docker`,"compose.stage.yml":`docker`,"compose.staging.yaml":`docker`,"compose.staging.yml":`docker`,"compose.test.yaml":`docker`,"compose.test.yml":`docker`,"compose.testing.yaml":`docker`,"compose.testing.yml":`docker`,"compose.web.yaml":`docker`,"compose.web.yml":`docker`,"compose.worker.yaml":`docker`,"compose.worker.yml":`docker`,"compose.yaml":`docker`,"compose.yml":`docker`,"composer.lock":`json`,"concourse.yml":`concourse`,containerfile:`docker`,"containerfile.alpha":`docker`,"containerfile.beta":`docker`,"containerfile.ci":`docker`,"containerfile.dev":`docker`,"containerfile.development":`docker`,"containerfile.local":`docker`,"containerfile.prod":`docker`,"containerfile.production":`docker`,"containerfile.stage":`docker`,"containerfile.staging":`docker`,"containerfile.test":`docker`,"containerfile.testing":`docker`,"containerfile.web":`docker`,"containerfile.worker":`docker`,"contentlayer.config.cjs":`contentlayer`,"contentlayer.config.cts":`contentlayer`,"contentlayer.config.js":`contentlayer`,"contentlayer.config.mjs":`contentlayer`,"contentlayer.config.mts":`contentlayer`,"contentlayer.config.ts":`contentlayer`,contributing:`contributing`,"contributing.md":`contributing`,"contributing.rst":`contributing`,"contributing.txt":`contributing`,contributors:`authors`,"contributors.md":`authors`,"contributors.rst":`authors`,"contributors.txt":`authors`,"copilot-instructions.md":`copilot`,copying:`license`,"copying.md":`license`,"copying.rst":`license`,"copying.txt":`license`,copyright:`license`,"copyright.md":`license`,"copyright.rst":`license`,"copyright.txt":`license`,"craco.config.cjs":`craco`,"craco.config.cts":`craco`,"craco.config.js":`craco`,"craco.config.json":`craco`,"craco.config.json5":`craco`,"craco.config.jsonc":`craco`,"craco.config.mjs":`craco`,"craco.config.mts":`craco`,"craco.config.toml":`craco`,"craco.config.ts":`craco`,"craco.config.yaml":`craco`,"craco.config.yml":`craco`,credits:`credits`,"credits.md":`credits`,"credits.rst":`credits`,"credits.txt":`credits`,"cypress.config.cjs":`cypress`,"cypress.config.cts":`cypress`,"cypress.config.js":`cypress`,"cypress.config.mjs":`cypress`,"cypress.config.mts":`cypress`,"cypress.config.ts":`cypress`,"cypress.env.json":`cypress`,"cypress.json":`cypress`,"cz.json":`commitizen`,"cz.toml":`commitizen`,"cz.yaml":`commitizen`,"cz.yml":`commitizen`,dangerfile:`ruby`,deliverfile:`ruby`,"deno.json":`deno`,"deno.jsonc":`deno`,"deno.lock":`deno`,"dependabot.yaml":`dependabot`,"dependabot.yml":`dependabot`,"docker-compose.alpha.yaml":`docker`,"docker-compose.alpha.yml":`docker`,"docker-compose.beta.yaml":`docker`,"docker-compose.beta.yml":`docker`,"docker-compose.ci.yaml":`docker`,"docker-compose.ci.yml":`docker`,"docker-compose.dev.yaml":`docker`,"docker-compose.dev.yml":`docker`,"docker-compose.development.yaml":`docker`,"docker-compose.development.yml":`docker`,"docker-compose.local.yaml":`docker`,"docker-compose.local.yml":`docker`,"docker-compose.override.yaml":`docker`,"docker-compose.override.yml":`docker`,"docker-compose.prod.yaml":`docker`,"docker-compose.prod.yml":`docker`,"docker-compose.production.yaml":`docker`,"docker-compose.production.yml":`docker`,"docker-compose.stage.yaml":`docker`,"docker-compose.stage.yml":`docker`,"docker-compose.staging.yaml":`docker`,"docker-compose.staging.yml":`docker`,"docker-compose.test.yaml":`docker`,"docker-compose.test.yml":`docker`,"docker-compose.testing.yaml":`docker`,"docker-compose.testing.yml":`docker`,"docker-compose.web.yaml":`docker`,"docker-compose.web.yml":`docker`,"docker-compose.worker.yaml":`docker`,"docker-compose.worker.yml":`docker`,"docker-compose.yaml":`docker`,"docker-compose.yml":`docker`,dockerfile:`docker`,"dockerfile.alpha":`docker`,"dockerfile.beta":`docker`,"dockerfile.ci":`docker`,"dockerfile.dev":`docker`,"dockerfile.development":`docker`,"dockerfile.local":`docker`,"dockerfile.prod":`docker`,"dockerfile.production":`docker`,"dockerfile.stage":`docker`,"dockerfile.staging":`docker`,"dockerfile.test":`docker`,"dockerfile.testing":`docker`,"dockerfile.web":`docker`,"dockerfile.windows":`docker`,"dockerfile.worker":`docker`,"drizzle.config.dev.js":`drizzle`,"drizzle.config.dev.json":`drizzle`,"drizzle.config.dev.ts":`drizzle`,"drizzle.config.js":`drizzle`,"drizzle.config.json":`drizzle`,"drizzle.config.prod.js":`drizzle`,"drizzle.config.prod.json":`drizzle`,"drizzle.config.prod.ts":`drizzle`,"drizzle.config.ts":`drizzle`,"duc.fbs":`duc`,dune:`dune`,"dune-project":`dune`,"dune-workspace":`dune`,"dune-workspace.dev":`dune`,"eas.json":`expo`,"ecosystem.config.cjs":`pm2-ecosystem`,"ecosystem.config.cts":`pm2-ecosystem`,"ecosystem.config.js":`pm2-ecosystem`,"ecosystem.config.mjs":`pm2-ecosystem`,"ecosystem.config.mts":`pm2-ecosystem`,"ecosystem.config.ts":`pm2-ecosystem`,"ember-cli-builds.js":`ember`,"esbuild.cjs":`esbuild`,"esbuild.config.cjs":`esbuild`,"esbuild.config.cts":`esbuild`,"esbuild.config.js":`esbuild`,"esbuild.config.mjs":`esbuild`,"esbuild.config.mts":`esbuild`,"esbuild.config.ts":`esbuild`,"esbuild.cts":`esbuild`,"esbuild.dev.cjs":`esbuild`,"esbuild.dev.cts":`esbuild`,"esbuild.dev.js":`esbuild`,"esbuild.dev.mjs":`esbuild`,"esbuild.dev.mts":`esbuild`,"esbuild.dev.ts":`esbuild`,"esbuild.js":`esbuild`,"esbuild.mjs":`esbuild`,"esbuild.mts":`esbuild`,"esbuild.prod.cjs":`esbuild`,"esbuild.prod.cts":`esbuild`,"esbuild.prod.js":`esbuild`,"esbuild.prod.mjs":`esbuild`,"esbuild.prod.mts":`esbuild`,"esbuild.prod.ts":`esbuild`,"esbuild.stage.cjs":`esbuild`,"esbuild.stage.cts":`esbuild`,"esbuild.stage.js":`esbuild`,"esbuild.stage.mjs":`esbuild`,"esbuild.stage.mts":`esbuild`,"esbuild.stage.ts":`esbuild`,"esbuild.test.cjs":`esbuild`,"esbuild.test.cts":`esbuild`,"esbuild.test.js":`esbuild`,"esbuild.test.mjs":`esbuild`,"esbuild.test.mts":`esbuild`,"esbuild.test.ts":`esbuild`,"esbuild.ts":`esbuild`,"eslint-options.js":`eslint`,"eslint.config.cjs":`eslint`,"eslint.config.cts":`eslint`,"eslint.config.js":`eslint`,"eslint.config.json":`eslint`,"eslint.config.json5":`eslint`,"eslint.config.jsonc":`eslint`,"eslint.config.mjs":`eslint`,"eslint.config.mts":`eslint`,"eslint.config.toml":`eslint`,"eslint.config.ts":`eslint`,"eslint.config.yaml":`eslint`,"eslint.config.yml":`eslint`,excalidraw:`excalidraw`,"excalidraw.json":`excalidraw`,"excalidraw.png":`excalidraw`,"excalidraw.svg":`excalidraw`,"fabric.mod.json":`minecraft-fabric`,fastfile:`fastlane`,"favicon.ico":`favicon`,"firebase.config.js":`firebase`,"firebase.json":`firebase`,"firestore.indexes.json":`firebase`,"firestore.rules":`firebase`,"fuse.js":`fusebox`,"garden.yaml":`garden`,"garden.yml":`garden`,"gatsby-browser.js":`gatsby`,"gatsby-browser.tsx":`gatsby`,"gatsby-config.js":`gatsby`,"gatsby-config.mjs":`gatsby`,"gatsby-config.ts":`gatsby`,"gatsby-node.js":`gatsby`,"gatsby-node.mjs":`gatsby`,"gatsby-node.ts":`gatsby`,"gatsby-ssr.js":`gatsby`,"gatsby-ssr.tsx":`gatsby`,gemfile:`gemfile`,"gemini.md":`gemini-ai`,"git-history":`git`,"git-rebase-todo":`git`,"gleam.toml":`gleam`,gnumakefile:`makefile`,"go.mod":`go-mod`,"go.sum":`go-mod`,"go.work":`go-mod`,"go.work.sum":`go-mod`,"google-services.json":`google`,"googleservice-info.plist":`google`,"gradle-wrapper.properties":`gradle`,"gradle.properties":`gradle`,gradlew:`gradle`,"gradlew.bat":`gradle`,"graphql.config.cjs":`graphql`,"graphql.config.cts":`graphql`,"graphql.config.js":`graphql`,"graphql.config.json":`graphql`,"graphql.config.json5":`graphql`,"graphql.config.jsonc":`graphql`,"graphql.config.mjs":`graphql`,"graphql.config.mts":`graphql`,"graphql.config.toml":`graphql`,"graphql.config.ts":`graphql`,"graphql.config.yaml":`graphql`,"graphql.config.yml":`graphql`,"gridsome.config.js":`gridsome`,"gridsome.server.js":`gridsome`,"gruntfile.babel.coffee":`grunt`,"gruntfile.babel.js":`grunt`,"gruntfile.babel.ts":`grunt`,"gruntfile.cjs":`grunt`,"gruntfile.coffee":`grunt`,"gruntfile.cts":`grunt`,"gruntfile.js":`grunt`,"gruntfile.ts":`grunt`,guardfile:`ruby`,"gulpfile.babel.js":`gulp`,"gulpfile.cjs":`gulp`,"gulpfile.cts":`gulp`,"gulpfile.js":`gulp`,"gulpfile.mjs":`gulp`,"gulpfile.mts":`gulp`,"gulpfile.ts":`gulp`,gymfile:`ruby`,"hadolint.yaml":`hadolint`,"hadolint.yml":`hadolint`,"hardhat.config.js":`hardhat`,"hardhat.config.ts":`hardhat`,"harmonix.config.js":`harmonix`,"harmonix.config.ts":`harmonix`,hgrc:`mercurial`,"histoire.config.cjs":`histoire`,"histoire.config.cts":`histoire`,"histoire.config.js":`histoire`,"histoire.config.mjs":`histoire`,"histoire.config.mts":`histoire`,"histoire.config.ts":`histoire`,hobofile:`ruby`,"horusec-config.json":`horusec`,hosts:`hosts`,"husky.config.cjs":`husky`,"husky.config.cts":`husky`,"husky.config.js":`husky`,"husky.config.json":`husky`,"husky.config.json5":`husky`,"husky.config.jsonc":`husky`,"husky.config.mjs":`husky`,"husky.config.mts":`husky`,"husky.config.toml":`husky`,"husky.config.ts":`husky`,"husky.config.yaml":`husky`,"husky.config.yml":`husky`,install:`installation`,installation:`installation`,"ionic.config.json":`ionic`,jakefile:`javascript`,jenkinsfile:`jenkins`,"jest-e2e.config.cjs":`jest`,"jest-e2e.config.cts":`jest`,"jest-e2e.config.js":`jest`,"jest-e2e.config.json":`jest`,"jest-e2e.config.mjs":`jest`,"jest-e2e.config.mts":`jest`,"jest-e2e.config.ts":`jest`,"jest-e2e.json":`jest`,"jest-github-actions-reporter.js":`jest`,"jest-preset.cjs":`jest`,"jest-preset.js":`jest`,"jest-preset.json":`jest`,"jest-preset.mjs":`jest`,"jest-unit.config.js":`jest`,"jest.config.cjs":`jest`,"jest.config.cts":`jest`,"jest.config.js":`jest`,"jest.config.json":`jest`,"jest.config.mjs":`jest`,"jest.config.mts":`jest`,"jest.config.ts":`jest`,"jest.e2e.config.cjs":`jest`,"jest.e2e.config.cts":`jest`,"jest.e2e.config.js":`jest`,"jest.e2e.config.json":`jest`,"jest.e2e.config.mjs":`jest`,"jest.e2e.config.mts":`jest`,"jest.e2e.config.ts":`jest`,"jest.e2e.json":`jest`,"jest.json":`jest`,"jest.preset.cjs":`jest`,"jest.preset.js":`jest`,"jest.preset.json":`jest`,"jest.preset.mjs":`jest`,"jest.setup.js":`jest`,"jest.setup.ts":`jest`,"jest.teardown.js":`jest`,"jsconfig.json":`jsconfig`,"jsr.json":`jsr`,"jsr.jsonc":`jsr`,justfile:`just`,"jvm.config":`maven`,"k8s.yaml":`kubernetes`,"k8s.yml":`kubernetes`,"karma-main.js":`karma`,"karma-main.ts":`karma`,"karma.conf.coffee":`karma`,"karma.conf.js":`karma`,"karma.conf.ts":`karma`,"karma.config.js":`karma`,"karma.config.ts":`karma`,kbuild:`makefile`,"kcl.mod":`kcl`,"kcl.yaml":`kcl`,"kcl.yml":`kcl`,"keystatic.config.js":`keystatic`,"keystatic.config.jsx":`keystatic`,"keystatic.config.ts":`keystatic`,"keystatic.config.tsx":`keystatic`,"knip.config.js":`knip`,"knip.config.ts":`knip`,"knip.js":`knip`,"knip.json":`knip`,"knip.jsonc":`knip`,"knip.ts":`knip`,"kubernetes.yaml":`kubernetes`,"kubernetes.yml":`kubernetes`,latexmkrc:`latexmk`,"lefthook-local.json":`lefthook`,"lefthook-local.toml":`lefthook`,"lefthook-local.yaml":`lefthook`,"lefthook-local.yml":`lefthook`,"lefthook.json":`lefthook`,"lefthook.toml":`lefthook`,"lefthook.yaml":`lefthook`,"lefthook.yml":`lefthook`,lefthookrc:`lefthook`,"lerna.json":`lerna`,"liara.json":`liara`,licence:`license`,"licence-agpl":`license`,"licence-apache":`license`,"licence-bsd":`license`,"licence-gpl":`license`,"licence-lgpl":`license`,"licence-mit":`license`,"licence.md":`license`,"licence.rst":`license`,"licence.txt":`license`,license:`license`,"license-agpl":`license`,"license-apache":`license`,"license-bsd":`license`,"license-gpl":`license`,"license-lgpl":`license`,"license-mit":`license`,"license.md":`license`,"license.rst":`license`,"license.txt":`license`,"lighthouserc.cjs":`lighthouse`,"lighthouserc.js":`lighthouse`,"lighthouserc.json":`lighthouse`,"lighthouserc.yaml":`lighthouse`,"lighthouserc.yml":`lighthouse`,"lint-staged.config.cjs":`lintstaged`,"lint-staged.config.js":`lintstaged`,"lint-staged.config.mjs":`lintstaged`,"lynx.config.cjs":`lynx`,"lynx.config.cts":`lynx`,"lynx.config.js":`lynx`,"lynx.config.mjs":`lynx`,"lynx.config.mts":`lynx`,"lynx.config.ts":`lynx`,makefile:`makefile`,"manifest.in":`python-misc`,"manifest.mf":`settings`,"markdoc.config.cjs":`markdoc-config`,"markdoc.config.cts":`markdoc-config`,"markdoc.config.js":`markdoc-config`,"markdoc.config.mjs":`markdoc-config`,"markdoc.config.mts":`markdoc-config`,"markdoc.config.ts":`markdoc-config`,matchfile:`ruby`,"maven.config":`maven`,"mercurial.ini":`mercurial`,merge_msg:`git`,"meson.build":`meson`,"meson.options":`meson`,"meson_options.txt":`meson`,"metro.config.cjs":`metro`,"metro.config.cts":`metro`,"metro.config.js":`metro`,"metro.config.json":`metro`,"metro.config.mjs":`metro`,"metro.config.mts":`metro`,"metro.config.ts":`metro`,"milestones.md":`roadmap`,"milestones.txt":`roadmap`,"mocha.opts":`mocha`,"moon.yml":`moon`,"nano-staged.cjs":`nano-staged`,"nano-staged.js":`nano-staged`,"nano-staged.json":`nano-staged`,"nano-staged.mjs":`nano-staged`,"nest-cli.json":`nest`,"nestconfig.json":`nest`,"netlify.json":`netlify`,"netlify.toml":`netlify`,"netlify.yaml":`netlify`,"netlify.yml":`netlify`,"next.config.js":`next`,"next.config.mjs":`next`,"next.config.mts":`next`,"next.config.ts":`next`,"ng-package.json":`angular`,"nginx.conf":`nginx`,"nodemon-debug.json":`nodemon`,"nodemon.json":`nodemon`,"now.json":`vercel`,"nuget.config":`nuget`,"nuget.exe":`nuget`,"nuxt.config.js":`nuxt`,"nuxt.config.ts":`nuxt`,"nx.json":`nx`,"nyc.config.cjs":`istanbul`,"nyc.config.js":`istanbul`,"openapi.json":`openapi`,"openapi.yaml":`openapi`,"openapi.yml":`openapi`,"opencode.json":`opencode`,"opencode.jsonc":`opencode`,owners:`codeowners`,"oxfmt.config.ts":`oxc`,"oxlint.config.ts":`oxc`,"package-lock.json":`nodejs`,"package.json":`nodejs`,"packship.config.js":`packship`,"packship.config.json":`packship`,"packship.config.mjs":`packship`,"packship.config.mts":`packship`,"packship.config.ts":`packship`,"panda.config.cjs":`panda`,"panda.config.cts":`panda`,"panda.config.js":`panda`,"panda.config.mjs":`panda`,"panda.config.mts":`panda`,"panda.config.ts":`panda`,"payload.config.js":`payload`,"payload.config.mjs":`payload`,"payload.config.mts":`payload`,"payload.config.ts":`payload`,"pdm.lock":`pdm`,"pdm.toml":`pdm`,"phpstan.dist.neon":`phpstan`,"phpstan.neon":`phpstan`,"phpstan.neon.dist":`phpstan`,"phpunit-watcher.yml":`phpunit`,"phpunit-watcher.yml.dist":`phpunit`,"phpunit.xml":`phpunit`,"phpunit.xml.dist":`phpunit`,pipfile:`python-misc`,pkgbuild:`console`,pklproject:`pkl`,"pklproject.deps.json":`pkl`,"plastic.branchexplorer":`plastic`,"plastic.selector":`plastic`,"plastic.wktree":`plastic`,"plastic.workspace":`plastic`,"plastic.workspaces":`plastic`,"playwright-ct.config.cjs":`playwright`,"playwright-ct.config.cts":`playwright`,"playwright-ct.config.js":`playwright`,"playwright-ct.config.mjs":`playwright`,"playwright-ct.config.mts":`playwright`,"playwright-ct.config.ts":`playwright`,"playwright.config.base.cjs":`playwright`,"playwright.config.base.cts":`playwright`,"playwright.config.base.js":`playwright`,"playwright.config.base.mjs":`playwright`,"playwright.config.base.mts":`playwright`,"playwright.config.base.ts":`playwright`,"playwright.config.cjs":`playwright`,"playwright.config.cts":`playwright`,"playwright.config.js":`playwright`,"playwright.config.mjs":`playwright`,"playwright.config.mts":`playwright`,"playwright.config.ts":`playwright`,"plopfile.cjs":`plop`,"plopfile.js":`plop`,"plopfile.mjs":`plop`,"plopfile.ts":`plop`,"pnpm-lock.yaml":`pnpm`,"pnpm-workspace.yaml":`pnpm`,podfile:`ruby`,"poetry.lock":`poetry`,"pom.xml":`maven`,"post-merge":`console`,"postcss.config.cjs":`postcss`,"postcss.config.cts":`postcss`,"postcss.config.js":`postcss`,"postcss.config.json":`postcss`,"postcss.config.json5":`postcss`,"postcss.config.jsonc":`postcss`,"postcss.config.mjs":`postcss`,"postcss.config.mts":`postcss`,"postcss.config.toml":`postcss`,"postcss.config.ts":`postcss`,"postcss.config.yaml":`postcss`,"postcss.config.yml":`postcss`,"posthtml.config.cjs":`posthtml`,"posthtml.config.cts":`posthtml`,"posthtml.config.js":`posthtml`,"posthtml.config.json":`posthtml`,"posthtml.config.json5":`posthtml`,"posthtml.config.jsonc":`posthtml`,"posthtml.config.mjs":`posthtml`,"posthtml.config.mts":`posthtml`,"posthtml.config.toml":`posthtml`,"posthtml.config.ts":`posthtml`,"posthtml.config.yaml":`posthtml`,"posthtml.config.yml":`posthtml`,"pre-commit":`console`,"pre-push":`console`,"prettier.config.cjs":`prettier`,"prettier.config.cts":`prettier`,"prettier.config.js":`prettier`,"prettier.config.json":`prettier`,"prettier.config.json5":`prettier`,"prettier.config.jsonc":`prettier`,"prettier.config.mjs":`prettier`,"prettier.config.mts":`prettier`,"prettier.config.toml":`prettier`,"prettier.config.ts":`prettier`,"prettier.config.yaml":`prettier`,"prettier.config.yml":`prettier`,"prisma.config.ts":`prisma`,"prisma.yml":`prisma`,procfile:`heroku`,"procfile.windows":`heroku`,"project.garden.yaml":`garden`,"project.garden.yml":`garden`,"project.graphcool":`graphcool`,"protractor.conf.coffee":`protractor`,"protractor.conf.js":`protractor`,"protractor.conf.ts":`protractor`,"protractor.config.js":`protractor`,"protractor.config.ts":`protractor`,"puppeteer.config.cjs":`puppeteer`,"puppeteer.config.cts":`puppeteer`,"puppeteer.config.js":`puppeteer`,"puppeteer.config.json":`puppeteer`,"puppeteer.config.json5":`puppeteer`,"puppeteer.config.jsonc":`puppeteer`,"puppeteer.config.mjs":`puppeteer`,"puppeteer.config.mts":`puppeteer`,"puppeteer.config.toml":`puppeteer`,"puppeteer.config.ts":`puppeteer`,"puppeteer.config.yaml":`puppeteer`,"puppeteer.config.yml":`puppeteer`,puppetfile:`ruby`,"py.typed":`python-misc`,pylintrc:`python-misc`,"pyproject.toml":`python-misc`,"quasar.conf.js":`quasar`,"quasar.conf.ts":`quasar`,"quasar.config.cjs":`quasar`,"quasar.config.js":`quasar`,"quasar.config.ts":`quasar`,rakefile:`ruby`,rantfile:`ruby`,readme:`readme`,"readme.md":`readme`,"readme.rst":`readme`,"readme.txt":`readme`,"release-plz.toml":`rocket`,"release.config.cjs":`semantic-release`,"release.config.cts":`semantic-release`,"release.config.js":`semantic-release`,"release.config.json":`semantic-release`,"release.config.json5":`semantic-release`,"release.config.jsonc":`semantic-release`,"release.config.mjs":`semantic-release`,"release.config.mts":`semantic-release`,"release.config.toml":`semantic-release`,"release.config.ts":`semantic-release`,"release.config.yaml":`semantic-release`,"release.config.yml":`semantic-release`,"release.toml":`rocket`,"remix.config.js":`remix`,"remix.config.ts":`remix`,"renovate-config.json":`renovate`,"renovate.json":`renovate`,"renovate.json5":`renovate`,"requirements.txt":`python-misc`,"roadmap.md":`roadmap`,"roadmap.txt":`roadmap`,"robots.txt":`robots`,"rolldown.config.cjs":`rolldown`,"rolldown.config.cts":`rolldown`,"rolldown.config.js":`rolldown`,"rolldown.config.mjs":`rolldown`,"rolldown.config.mts":`rolldown`,"rolldown.config.ts":`rolldown`,"rollup-config.js":`rollup`,"rollup-config.mjs":`rollup`,"rollup-config.ts":`rollup`,"rollup.config.base.js":`rollup`,"rollup.config.base.mjs":`rollup`,"rollup.config.base.ts":`rollup`,"rollup.config.common.js":`rollup`,"rollup.config.common.mjs":`rollup`,"rollup.config.common.ts":`rollup`,"rollup.config.dev.js":`rollup`,"rollup.config.dev.mjs":`rollup`,"rollup.config.dev.ts":`rollup`,"rollup.config.js":`rollup`,"rollup.config.mjs":`rollup`,"rollup.config.prod.js":`rollup`,"rollup.config.prod.mjs":`rollup`,"rollup.config.prod.ts":`rollup`,"rollup.config.prod.vendor.js":`rollup`,"rollup.config.prod.vendor.mjs":`rollup`,"rollup.config.prod.vendor.ts":`rollup`,"rollup.config.ts":`rollup`,"rome.json":`rome`,"route.js":`routing`,"route.jsx":`routing`,"route.ts":`routing`,"route.tsx":`routing`,"router.js":`routing`,"router.jsx":`routing`,"router.ts":`routing`,"router.tsx":`routing`,"routes.js":`routing`,"routes.jsx":`routing`,"routes.ts":`routing`,"routes.tsx":`routing`,"rsbuild.config.cjs":`rstack`,"rsbuild.config.cts":`rstack`,"rsbuild.config.js":`rstack`,"rsbuild.config.mjs":`rstack`,"rsbuild.config.mts":`rstack`,"rsbuild.config.ts":`rstack`,"rslib.config.cjs":`rstack`,"rslib.config.cts":`rstack`,"rslib.config.js":`rstack`,"rslib.config.mjs":`rstack`,"rslib.config.mts":`rstack`,"rslib.config.ts":`rstack`,"rslint.config.cjs":`rstack`,"rslint.config.cts":`rstack`,"rslint.config.js":`rstack`,"rslint.config.mjs":`rstack`,"rslint.config.mts":`rstack`,"rslint.config.ts":`rstack`,"rslint.json":`rstack`,"rslint.jsonc":`rstack`,"rspack.config.cjs":`rstack`,"rspack.config.cts":`rstack`,"rspack.config.js":`rstack`,"rspack.config.mjs":`rstack`,"rspack.config.mts":`rstack`,"rspack.config.ts":`rstack`,"rspress.config.cjs":`rstack`,"rspress.config.cts":`rstack`,"rspress.config.js":`rstack`,"rspress.config.mjs":`rstack`,"rspress.config.mts":`rstack`,"rspress.config.ts":`rstack`,"rstest.config.cjs":`rstack`,"rstest.config.cts":`rstack`,"rstest.config.js":`rstack`,"rstest.config.mjs":`rstack`,"rstest.config.mts":`rstack`,"rstest.config.ts":`rstack`,"ruff.toml":`ruff`,scanfile:`ruby`,sconscript:`scons`,sconstruct:`scons`,"screwdriver.yaml":`screwdriver`,"screwdriver.yml":`screwdriver`,scsub:`scons`,security:`lock`,"security.md":`lock`,"security.txt":`lock`,"semgrep.yml":`semgrep`,"sentry.client.config.cjs":`sentry`,"sentry.client.config.cts":`sentry`,"sentry.client.config.js":`sentry`,"sentry.client.config.mjs":`sentry`,"sentry.client.config.mts":`sentry`,"sentry.client.config.ts":`sentry`,"sentry.edge.config.cjs":`sentry`,"sentry.edge.config.cts":`sentry`,"sentry.edge.config.js":`sentry`,"sentry.edge.config.mjs":`sentry`,"sentry.edge.config.mts":`sentry`,"sentry.edge.config.ts":`sentry`,"sentry.server.config.cjs":`sentry`,"sentry.server.config.cts":`sentry`,"sentry.server.config.js":`sentry`,"sentry.server.config.mjs":`sentry`,"sentry.server.config.mts":`sentry`,"sentry.server.config.ts":`sentry`,"serverless.js":`serverless`,"serverless.json":`serverless`,"serverless.ts":`serverless`,"serverless.yaml":`serverless`,"serverless.yml":`serverless`,sha256sums:`key`,shellcheckrc:`shellcheck`,"skill.md":`skill`,snakefile:`snakemake`,"snapcraft.yaml":`snapcraft`,"snapcraft.yml":`snapcraft`,snapfile:`ruby`,"snowpack.config.cjs":`snowpack`,"snowpack.config.cts":`snowpack`,"snowpack.config.js":`snowpack`,"snowpack.config.json":`snowpack`,"snowpack.config.mjs":`snowpack`,"snowpack.config.mts":`snowpack`,"snowpack.config.ts":`snowpack`,"snowpack.deps.json":`snowpack`,"sonar-project.properties":`sonarcloud`,"sonarcloud.yaml":`sonarcloud`,"sonarqube.analysis.xml":`sonarcloud`,"src/bashly.yaml":`bashly`,"src/bashly.yml":`bashly`,"steadybit.yaml":`steadybit`,"steadybit.yml":`steadybit`,"stencil.config.js":`stencil`,"stencil.config.ts":`stencil`,"stitches.config.js":`stitches`,"stitches.config.ts":`stitches`,"stryker.conf.cjs":`stryker`,"stryker.conf.js":`stryker`,"stryker.conf.json":`stryker`,"stryker.conf.mjs":`stryker`,"stryker.config.cjs":`stryker`,"stryker.config.js":`stryker`,"stryker.config.json":`stryker`,"stryker.config.mjs":`stryker`,"stylelint.config.cjs":`stylelint`,"stylelint.config.cts":`stylelint`,"stylelint.config.js":`stylelint`,"stylelint.config.json":`stylelint`,"stylelint.config.json5":`stylelint`,"stylelint.config.jsonc":`stylelint`,"stylelint.config.mjs":`stylelint`,"stylelint.config.mts":`stylelint`,"stylelint.config.toml":`stylelint`,"stylelint.config.ts":`stylelint`,"stylelint.config.yaml":`stylelint`,"stylelint.config.yml":`stylelint`,"supabase.js":`supabase`,"supabase.py":`supabase`,"supabase.ts":`supabase`,"svelte.config.cjs":`svelte`,"svelte.config.cts":`svelte`,"svelte.config.js":`svelte`,"svelte.config.mjs":`svelte`,"svelte.config.mts":`svelte`,"svelte.config.ts":`svelte`,"svgo.config.cjs":`svgo`,"svgo.config.js":`svgo`,"svgo.config.mjs":`svgo`,"svgr.config.cjs":`svgr`,"svgr.config.cts":`svgr`,"svgr.config.js":`svgr`,"svgr.config.json":`svgr`,"svgr.config.json5":`svgr`,"svgr.config.jsonc":`svgr`,"svgr.config.mjs":`svgr`,"svgr.config.mts":`svgr`,"svgr.config.toml":`svgr`,"svgr.config.ts":`svgr`,"svgr.config.yaml":`svgr`,"svgr.config.yml":`svgr`,"swagger.json":`swagger`,"swagger.yaml":`swagger`,"swagger.yml":`swagger`,"syncpack.config.cjs":`syncpack`,"syncpack.config.cts":`syncpack`,"syncpack.config.js":`syncpack`,"syncpack.config.json":`syncpack`,"syncpack.config.json5":`syncpack`,"syncpack.config.jsonc":`syncpack`,"syncpack.config.mjs":`syncpack`,"syncpack.config.mts":`syncpack`,"syncpack.config.toml":`syncpack`,"syncpack.config.ts":`syncpack`,"syncpack.config.yaml":`syncpack`,"syncpack.config.yml":`syncpack`,tags:`label`,"tailwind.config.cjs":`tailwindcss`,"tailwind.config.cts":`tailwindcss`,"tailwind.config.js":`tailwindcss`,"tailwind.config.mjs":`tailwindcss`,"tailwind.config.mts":`tailwindcss`,"tailwind.config.ts":`tailwindcss`,"tailwind.js":`tailwindcss`,"tailwind.ts":`tailwindcss`,"taskfile.dist.yaml":`taskfile`,"taskfile.dist.yml":`taskfile`,"taskfile.yaml":`taskfile`,"taskfile.yml":`taskfile`,"tauri.conf.json":`tauri`,"tauri.config.json":`tauri`,"tauri.linux.conf.json":`tauri`,"tauri.macos.conf.json":`tauri`,"tauri.windows.conf.json":`tauri`,"taze.config.cjs":`taze`,"taze.config.cts":`taze`,"taze.config.js":`taze`,"taze.config.mjs":`taze`,"taze.config.mts":`taze`,"taze.config.ts":`taze`,thorfile:`ruby`,tiltfile:`tilt`,"timeline.md":`roadmap`,"timeline.txt":`roadmap`,"todo.md":`todo`,"todos.md":`todo`,"trigger.config.cjs":`trigger`,"trigger.config.cts":`trigger`,"trigger.config.js":`trigger`,"trigger.config.mjs":`trigger`,"trigger.config.mts":`trigger`,"trigger.config.ts":`trigger`,"tsconfig.app.json":`tsconfig`,"tsconfig.base.json":`tsconfig`,"tsconfig.build.json":`tsconfig`,"tsconfig.cjs.json":`tsconfig`,"tsconfig.client.json":`tsconfig`,"tsconfig.config.json":`tsconfig`,"tsconfig.declaration.json":`tsconfig`,"tsconfig.doc.json":`tsconfig`,"tsconfig.e2e.json":`tsconfig`,"tsconfig.editor.json":`tsconfig`,"tsconfig.eslint.json":`tsconfig`,"tsconfig.esm.json":`tsconfig`,"tsconfig.json":`tsconfig`,"tsconfig.lib.json":`tsconfig`,"tsconfig.lib.prod.json":`tsconfig`,"tsconfig.main.json":`tsconfig`,"tsconfig.mjs.json":`tsconfig`,"tsconfig.node.json":`tsconfig`,"tsconfig.paths.json":`tsconfig`,"tsconfig.renderer.json":`tsconfig`,"tsconfig.server.json":`tsconfig`,"tsconfig.spec.json":`tsconfig`,"tsconfig.test.json":`tsconfig`,"tsconfig.vitest.json":`tsconfig`,"tsconfig.web.json":`tsconfig`,"tsconfig.webworker.json":`tsconfig`,"tsconfig.worker.json":`tsconfig`,"tsdoc.json":`tsdoc`,"tsdown.config":`tsdown`,"tsdown.config.cjs":`tsdown`,"tsdown.config.cts":`tsdown`,"tsdown.config.js":`tsdown`,"tsdown.config.json":`tsdown`,"tsdown.config.mjs":`tsdown`,"tsdown.config.mts":`tsdown`,"tsdown.config.ts":`tsdown`,"turbo.json":`turborepo`,"turbo.jsonc":`turborepo`,"typedoc.js":`typedoc`,"typedoc.json":`typedoc`,"typst.toml":`typst`,unlicense:`unlicense`,"unlicense.txt":`unlicense`,"uno.config.js":`unocss`,"uno.config.mjs":`unocss`,"uno.config.mts":`unocss`,"uno.config.ts":`unocss`,"unocss.config.js":`unocss`,"unocss.config.mjs":`unocss`,"unocss.config.mts":`unocss`,"unocss.config.ts":`unocss`,"uv.lock":`uv`,"uv.toml":`uv`,"v.mod":`vlang`,vagrantfile:`vagrant`,"velite.config.cjs":`velite`,"velite.config.cts":`velite`,"velite.config.js":`velite`,"velite.config.mjs":`velite`,"velite.config.mts":`velite`,"velite.config.ts":`velite`,"vercel.json":`vercel`,"vercel.ts":`vercel`,"verdaccio.yml":`verdaccio`,"vetur.config.js":`vue-config`,"vetur.config.ts":`vue-config`,"vite.config.cjs":`vite`,"vite.config.cts":`vite`,"vite.config.js":`vite`,"vite.config.mjs":`vite`,"vite.config.mts":`vite`,"vite.config.ts":`vite`,"vitest.config.cjs":`vitest`,"vitest.config.cts":`vitest`,"vitest.config.js":`vitest`,"vitest.config.mjs":`vitest`,"vitest.config.mts":`vitest`,"vitest.config.ts":`vitest`,"vitest.e2e.config.cjs":`vitest`,"vitest.e2e.config.cts":`vitest`,"vitest.e2e.config.js":`vitest`,"vitest.e2e.config.mjs":`vitest`,"vitest.e2e.config.mts":`vitest`,"vitest.e2e.config.ts":`vitest`,"vitest.unit.config.cjs":`vitest`,"vitest.unit.config.cts":`vitest`,"vitest.unit.config.js":`vitest`,"vitest.unit.config.mjs":`vitest`,"vitest.unit.config.mts":`vitest`,"vitest.unit.config.ts":`vitest`,"vitest.workspace.cjs":`vitest`,"vitest.workspace.cts":`vitest`,"vitest.workspace.js":`vitest`,"vitest.workspace.mjs":`vitest`,"vitest.workspace.mts":`vitest`,"vitest.workspace.ts":`vitest`,"volar.config.js":`vue-config`,"vpkg.json":`vlang`,"vue.config.cjs":`vue-config`,"vue.config.js":`vue-config`,"vue.config.mjs":`vue-config`,"vue.config.ts":`vue-config`,"wallaby.conf.js":`wallaby`,"wallaby.js":`wallaby`,"wally.toml":`wally`,"warp.md":`warp`,"webpack.base.cjs":`webpack`,"webpack.base.cts":`webpack`,"webpack.base.js":`webpack`,"webpack.base.mjs":`webpack`,"webpack.base.mts":`webpack`,"webpack.base.ts":`webpack`,"webpack.cjs":`webpack`,"webpack.client.cjs":`webpack`,"webpack.client.cts":`webpack`,"webpack.client.js":`webpack`,"webpack.client.mjs":`webpack`,"webpack.client.mts":`webpack`,"webpack.client.ts":`webpack`,"webpack.common.cjs":`webpack`,"webpack.common.cts":`webpack`,"webpack.common.js":`webpack`,"webpack.common.mjs":`webpack`,"webpack.common.mts":`webpack`,"webpack.common.ts":`webpack`,"webpack.config.babel.cjs":`webpack`,"webpack.config.babel.cts":`webpack`,"webpack.config.babel.js":`webpack`,"webpack.config.babel.mjs":`webpack`,"webpack.config.babel.mts":`webpack`,"webpack.config.babel.ts":`webpack`,"webpack.config.base.babel.cjs":`webpack`,"webpack.config.base.babel.cts":`webpack`,"webpack.config.base.babel.js":`webpack`,"webpack.config.base.babel.mjs":`webpack`,"webpack.config.base.babel.mts":`webpack`,"webpack.config.base.babel.ts":`webpack`,"webpack.config.base.cjs":`webpack`,"webpack.config.base.cts":`webpack`,"webpack.config.base.js":`webpack`,"webpack.config.base.mjs":`webpack`,"webpack.config.base.mts":`webpack`,"webpack.config.base.ts":`webpack`,"webpack.config.cjs":`webpack`,"webpack.config.client.cjs":`webpack`,"webpack.config.client.cts":`webpack`,"webpack.config.client.js":`webpack`,"webpack.config.client.mjs":`webpack`,"webpack.config.client.mts":`webpack`,"webpack.config.client.ts":`webpack`,"webpack.config.coffee":`webpack`,"webpack.config.common.babel.cjs":`webpack`,"webpack.config.common.babel.cts":`webpack`,"webpack.config.common.babel.js":`webpack`,"webpack.config.common.babel.mjs":`webpack`,"webpack.config.common.babel.mts":`webpack`,"webpack.config.common.babel.ts":`webpack`,"webpack.config.common.cjs":`webpack`,"webpack.config.common.cts":`webpack`,"webpack.config.common.js":`webpack`,"webpack.config.common.mjs":`webpack`,"webpack.config.common.mts":`webpack`,"webpack.config.common.ts":`webpack`,"webpack.config.cts":`webpack`,"webpack.config.dev.babel.cjs":`webpack`,"webpack.config.dev.babel.cts":`webpack`,"webpack.config.dev.babel.js":`webpack`,"webpack.config.dev.babel.mjs":`webpack`,"webpack.config.dev.babel.mts":`webpack`,"webpack.config.dev.babel.ts":`webpack`,"webpack.config.dev.cjs":`webpack`,"webpack.config.dev.cts":`webpack`,"webpack.config.dev.js":`webpack`,"webpack.config.dev.mjs":`webpack`,"webpack.config.dev.mts":`webpack`,"webpack.config.dev.ts":`webpack`,"webpack.config.js":`webpack`,"webpack.config.main.cjs":`webpack`,"webpack.config.main.cts":`webpack`,"webpack.config.main.js":`webpack`,"webpack.config.main.mjs":`webpack`,"webpack.config.main.mts":`webpack`,"webpack.config.main.ts":`webpack`,"webpack.config.mjs":`webpack`,"webpack.config.mts":`webpack`,"webpack.config.prod.babel.cjs":`webpack`,"webpack.config.prod.babel.cts":`webpack`,"webpack.config.prod.babel.js":`webpack`,"webpack.config.prod.babel.mjs":`webpack`,"webpack.config.prod.babel.mts":`webpack`,"webpack.config.prod.babel.ts":`webpack`,"webpack.config.prod.cjs":`webpack`,"webpack.config.prod.cts":`webpack`,"webpack.config.prod.js":`webpack`,"webpack.config.prod.mjs":`webpack`,"webpack.config.prod.mts":`webpack`,"webpack.config.prod.ts":`webpack`,"webpack.config.production.babel.cjs":`webpack`,"webpack.config.production.babel.cts":`webpack`,"webpack.config.production.babel.js":`webpack`,"webpack.config.production.babel.mjs":`webpack`,"webpack.config.production.babel.mts":`webpack`,"webpack.config.production.babel.ts":`webpack`,"webpack.config.production.cjs":`webpack`,"webpack.config.production.cts":`webpack`,"webpack.config.production.js":`webpack`,"webpack.config.production.mjs":`webpack`,"webpack.config.production.mts":`webpack`,"webpack.config.production.ts":`webpack`,"webpack.config.renderer.cjs":`webpack`,"webpack.config.renderer.cts":`webpack`,"webpack.config.renderer.js":`webpack`,"webpack.config.renderer.mjs":`webpack`,"webpack.config.renderer.mts":`webpack`,"webpack.config.renderer.ts":`webpack`,"webpack.config.server.cjs":`webpack`,"webpack.config.server.cts":`webpack`,"webpack.config.server.js":`webpack`,"webpack.config.server.mjs":`webpack`,"webpack.config.server.mts":`webpack`,"webpack.config.server.ts":`webpack`,"webpack.config.staging.babel.cjs":`webpack`,"webpack.config.staging.babel.cts":`webpack`,"webpack.config.staging.babel.js":`webpack`,"webpack.config.staging.babel.mjs":`webpack`,"webpack.config.staging.babel.mts":`webpack`,"webpack.config.staging.babel.ts":`webpack`,"webpack.config.staging.cjs":`webpack`,"webpack.config.staging.cts":`webpack`,"webpack.config.staging.js":`webpack`,"webpack.config.staging.mjs":`webpack`,"webpack.config.staging.mts":`webpack`,"webpack.config.staging.ts":`webpack`,"webpack.config.test.cjs":`webpack`,"webpack.config.test.cts":`webpack`,"webpack.config.test.js":`webpack`,"webpack.config.test.mjs":`webpack`,"webpack.config.test.mts":`webpack`,"webpack.config.test.ts":`webpack`,"webpack.config.ts":`webpack`,"webpack.config.vendor.cjs":`webpack`,"webpack.config.vendor.cts":`webpack`,"webpack.config.vendor.js":`webpack`,"webpack.config.vendor.mjs":`webpack`,"webpack.config.vendor.mts":`webpack`,"webpack.config.vendor.production.cjs":`webpack`,"webpack.config.vendor.production.cts":`webpack`,"webpack.config.vendor.production.js":`webpack`,"webpack.config.vendor.production.mjs":`webpack`,"webpack.config.vendor.production.mts":`webpack`,"webpack.config.vendor.production.ts":`webpack`,"webpack.config.vendor.ts":`webpack`,"webpack.cts":`webpack`,"webpack.dev.cjs":`webpack`,"webpack.dev.cts":`webpack`,"webpack.dev.js":`webpack`,"webpack.dev.mjs":`webpack`,"webpack.dev.mts":`webpack`,"webpack.dev.ts":`webpack`,"webpack.development.cjs":`webpack`,"webpack.development.cts":`webpack`,"webpack.development.js":`webpack`,"webpack.development.mjs":`webpack`,"webpack.development.mts":`webpack`,"webpack.development.ts":`webpack`,"webpack.dist.cjs":`webpack`,"webpack.dist.cts":`webpack`,"webpack.dist.js":`webpack`,"webpack.dist.mjs":`webpack`,"webpack.dist.mts":`webpack`,"webpack.dist.ts":`webpack`,"webpack.js":`webpack`,"webpack.mix.cjs":`webpack`,"webpack.mix.cts":`webpack`,"webpack.mix.js":`webpack`,"webpack.mix.mjs":`webpack`,"webpack.mix.mts":`webpack`,"webpack.mix.ts":`webpack`,"webpack.mjs":`webpack`,"webpack.mts":`webpack`,"webpack.prod.cjs":`webpack`,"webpack.prod.config.cjs":`webpack`,"webpack.prod.config.cts":`webpack`,"webpack.prod.config.js":`webpack`,"webpack.prod.config.mjs":`webpack`,"webpack.prod.config.mts":`webpack`,"webpack.prod.config.ts":`webpack`,"webpack.prod.cts":`webpack`,"webpack.prod.js":`webpack`,"webpack.prod.mjs":`webpack`,"webpack.prod.mts":`webpack`,"webpack.prod.ts":`webpack`,"webpack.production.cjs":`webpack`,"webpack.production.cts":`webpack`,"webpack.production.js":`webpack`,"webpack.production.mjs":`webpack`,"webpack.production.mts":`webpack`,"webpack.production.ts":`webpack`,"webpack.server.cjs":`webpack`,"webpack.server.cts":`webpack`,"webpack.server.js":`webpack`,"webpack.server.mjs":`webpack`,"webpack.server.mts":`webpack`,"webpack.server.ts":`webpack`,"webpack.test.cjs":`webpack`,"webpack.test.cts":`webpack`,"webpack.test.js":`webpack`,"webpack.test.mjs":`webpack`,"webpack.test.mts":`webpack`,"webpack.test.ts":`webpack`,"webpack.ts":`webpack`,"webpackfile.cjs":`webpack`,"webpackfile.cts":`webpack`,"webpackfile.js":`webpack`,"webpackfile.mjs":`webpack`,"webpackfile.mts":`webpack`,"webpackfile.ts":`webpack`,"werf-giterminism.yaml":`werf`,"werf-giterminism.yml":`werf`,"werf-includes.lock":`werf`,"werf-includes.yaml":`werf`,"werf-includes.yml":`werf`,"werf.yaml":`werf`,"werf.yml":`werf`,"windi.config.cjs":`windicss`,"windi.config.cts":`windicss`,"windi.config.js":`windicss`,"windi.config.json":`windicss`,"windi.config.ts":`windicss`,"wrangler.json":`wrangler`,"wrangler.jsonc":`wrangler`,"wrangler.toml":`wrangler`,"wxt.config.cjs":`wxt`,"wxt.config.cts":`wxt`,"wxt.config.js":`wxt`,"wxt.config.mjs":`wxt`,"wxt.config.mts":`wxt`,"wxt.config.ts":`wxt`,"xamlstyler.json":`xaml`,xmake:`xmake`,"xmake.lua":`xmake`,"yarn-error.log":`yarn`,"yarn.lock":`yarn`,"zeabur.json":`zeabur`,"zeabur.json5":`zeabur`,"zeabur.jsonc":`zeabur`,"zeabur.toml":`zeabur`,"zeabur.yaml":`zeabur`,"zeabur.yml":`zeabur`,zlogin:`console`,zlogout:`console`,zprofile:`console`,zshenv:`console`,zshrc:`console`,zshrc_apple_terminal:`console`},Ka={60:`slint`,".ncurc.js":`dependencies-update`,".ncurc.json":`dependencies-update`,".ncurc.yml":`dependencies-update`,".wakatime-project":`wakatime`,"001":`zip`,"123dx":`3d`,"3dm":`3d`,"3ds":`3d`,"3fr":`image`,"3mf":`3d`,"4th":`forth`,"7z":`zip`,"8svx":`audio`,a:`lib`,a51:`assembly`,aa:`audio`,aac:`audio`,aax:`audio`,abap:`abap`,abc:`abc`,ac:`3d`,ac3:`audio`,accdb:`database`,accde:`database`,acds:`abap`,act:`palette`,ad:`asciidoc`,ada:`ada`,adb:`ada`,adoc:`asciidoc`,adp:`database`,ads:`ada`,aea:`assembly`,afphoto:`image`,agc:`assembly`,ags:`assembly`,ahk:`autohotkey`,ai:`adobe-illustrator`,aif:`audio`,aiff:`audio`,ait:`adobe-illustrator`,alac:`audio`,ali:`ada`,alloy:`grafana-alloy`,ami:`image`,amr:`audio`,amx:`pawn`,ape:`audio`,apfs:`zip`,apib:`apiblueprint`,apiblueprint:`apiblueprint`,apk:`android`,applescript:`applescript`,apx:`image`,argus:`assembly`,ari:`image`,arj:`zip`,arw:`image`,as:`actionscript`,asc:`key`,asciidoc:`asciidoc`,ascx:`xml`,asddls:`abap`,ase:`image`,aseprite:`image`,asm:`assembly`,asp:`html`,aspx:`html`,ass:`subtitles`,ast:`sas`,astore:`sas`,astro:`astro`,atom:`xml`,au3:`autoit`,aux:`tex`,avi:`video`,avif:`image`,awk:`console`,axaml:`xml`,axml:`xml`,azcli:`azure`,"azure-pipelines-main.yaml":`azure-pipelines`,"azure-pipelines-main.yml":`azure-pipelines`,"azure-pipelines.yaml":`azure-pipelines`,"azure-pipelines.yml":`azure-pipelines`,b:`brainfuck`,bak:`database`,bal:`ballerina`,balx:`ballerina`,bas:`visualstudio`,bash:`console`,bash_aliases:`console`,bash_login:`console`,bash_logout:`console`,bash_profile:`console`,bashrc:`console`,bat:`console`,bay:`image`,bazel:`bazel`,bbl:`bibliography`,bbx:`bbx`,bcf:`bibliography`,bdb:`database`,bean:`beancount`,beancount:`beancount`,"bench.cjs":`bench-js`,"bench.cts":`bench-ts`,"bench.js":`bench-js`,"bench.jsx":`bench-jsx`,"bench.mjs":`bench-js`,"bench.mts":`bench-ts`,"bench.ts":`bench-ts`,"bench.tsx":`bench-jsx`,bf:`brainfuck`,bib:`bibliography`,bicep:`bicep`,bin:`hex`,binsource:`assembly`,"blade.php":`laravel`,blend:`blender`,blend1:`blender`,blend2:`blender`,blg:`bibliography`,blink:`blink`,bmap:`font`,bmp:`image`,bpg:`image`,bpmn:`xml`,br:`zip`,braw:`image`,brk:`image`,brotli:`zip`,brs:`visualstudio`,bru:`bruno`,bst:`bibtex-style`,bubble:`dinophp`,bz2:`zip`,bzip2:`zip`,bzl:`bazel`,c:`c`,"c++":`cpp`,"c++m":`cpp`,c3:`c3`,cab:`zip`,cabal:`cabal`,caf:`audio`,cairo:`cairo`,cake:`cake`,cap:`image`,capnp:`capnp`,catpart:`3d`,catproduct:`3d`,cbl:`cobol`,cbx:`cbx`,cc:`cpp`,ccm:`cpp`,cda:`audio`,cdc:`cadence`,cdr:`audio`,cds:`cds`,cer:`certificate`,cert:`certificate`,cfc:`coldfusion`,cff:`yaml`,cfg:`settings`,cfm:`coldfusion`,cfml:`coldfusion`,cginc:`shader`,cjs:`javascript`,"cjs.map":`javascript-map`,cl:`lisp`,class:`javaclass`,clip:`image`,clj:`clojure`,cljc:`clojure`,cljs:`clojure`,cljx:`clojure`,clo:`tex`,clojure:`clojure`,cls:`tex`,cm:`sml`,cmake:`cmake`,cmd:`console`,cmj:`bucklescript`,cmx:`ocaml`,cnf:`settings`,coafile:`coala`,coarc:`coala`,cob:`cobol`,coco:`coconut`,"code-profile":`vscode`,"code-search":`search`,"code-snippets":`vscode`,"code-workplace":`vscode`,"code-workspace":`vscode`,coffee:`coffee`,command:`command`,comp:`shader`,"comp.glsl":`shader`,"comp.hlsl":`shader`,"compose.yaml":`docker`,"compose.yml":`docker`,compute:`shader`,"compute.glsl":`shader`,"compute.hlsl":`shader`,computeshader:`shader`,conf:`settings`,config:`settings`,containerfile:`docker`,containerignore:`docker`,"controller.js":`controller`,"controller.ts":`controller`,copilotmd:`markdown`,cp:`cpp`,cpio:`zip`,cpn:`coloredpetrinets`,cpp:`cpp`,cppm:`cpp`,cpt:`image`,cpy:`python`,cr:`crystal`,cr2:`image`,cr3:`image`,crt:`certificate`,crw:`image`,crx:`chrome`,cs:`csharp`,csh:`console`,csharp:`csharp`,cshrc:`console`,cshtml:`razor`,csl:`xml`,cson:`coffee`,csproj:`visualstudio`,"csproj.user":`xml`,css:`css`,"css.cjs":`vanilla-extract`,"css.js":`vanilla-extract`,"css.jsx":`vanilla-extract`,"css.map":`css-map`,"css.mjs":`vanilla-extract`,"css.ts":`vanilla-extract`,"css.tsx":`vanilla-extract`,csv:`table`,csx:`csharp`,ctp:`php`,cts:`typescript`,ctx:`context`,cu:`cuda`,cue:`cue`,cuh:`cuda`,cur:`image`,cxx:`cpp`,cxxm:`cpp`,"cy.js":`test-js`,"cy.jsx":`test-jsx`,"cy.ts":`test-ts`,"cy.tsx":`test-jsx`,d:`d`,"d.cts":`typescript-def`,"d.ets":`typescript-def`,"d.mts":`typescript-def`,"d.ts":`typescript-def`,dae:`3d`,dart:`dart`,dat:`hex`,data:`image`,db:`database`,db3:`database`,dbf:`database`,dblite:`database`,dblite3:`database`,dcr:`image`,dcs:`image`,dds:`image`,deb:`zip`,debugsymbols:`database`,def:`dotjs`,dex:`android`,dfxp:`subtitles`,dhall:`dhall`,dhallb:`dhall`,diff:`diff`,dio:`drawio`,directory:`settings`,dita:`xml`,ditamap:`xml`,djt:`django`,dlc:`settings`,dll:`dll`,dmg:`disc`,dmn:`xml`,dng:`image`,do:`tcl`,doc:`word`,"docker-compose.yaml":`docker`,"docker-compose.yml":`docker`,dockerfile:`docker`,dockerignore:`docker`,docx:`word`,dot:`dotjs`,drawio:`drawio`,drf:`image`,"drone.yml":`drone`,dsc:`denizenscript`,dsql:`database`,dss:`audio`,dtd:`xml`,dtml:`xml`,duc:`duc`,dwg:`3d`,dxf:`3d`,"e2e-spec.cjs":`test-js`,"e2e-spec.cts":`test-ts`,"e2e-spec.js":`test-js`,"e2e-spec.mjs":`test-js`,"e2e-spec.mts":`test-ts`,"e2e-spec.ts":`test-ts`,ebuild:`console`,ec3:`audio`,eclass:`console`,ecr:`crystal`,edb:`email`,edge:`edge`,edn:`clojure`,eex:`elixir`,efs:`audio`,egg:`python-misc`,eip:`image`,ejs:`ejs`,elm:`elm`,eml:`email`,emlx:`email`,enc:`audio`,ent:`xml`,env:`tune`,eot:`font`,eps:`image`,epub:`epub`,erb:`ruby`,erf:`image`,erl:`erlang`,es6:`javascript`,esd:`zip`,esx:`javascript`,ex:`elixir`,excalidraw:`excalidraw`,"excalidraw.json":`excalidraw`,"excalidraw.png":`excalidraw`,"excalidraw.svg":`excalidraw`,exe:`exe`,exp:`console`,exr:`image`,exrc:`vim`,exs:`elixir`,eyaml:`yaml`,eyml:`yaml`,f:`fortran`,f03:`fortran`,f08:`fortran`,f3d:`3d`,f77:`fortran`,f90:`fortran`,f95:`fortran`,far:`zip`,fast:`lisp`,fat:`zip`,fbx:`3d`,fdb:`database`,feather:`database`,feature:`cucumber`,features:`cucumber`,fen:`chess`,fff:`image`,fhtml:`velocity`,fig:`figma`,fish:`console`,flac:`audio`,flp:`audio`,flv:`video`,fnt:`font`,font:`font`,fonts:`font`,fpx:`image`,frag:`shader`,"frag.glsl":`shader`,"fragment.glsl":`shader`,fragmentshader:`shader`,"freezed.dart":`dart_generated`,frm:`database`,frt:`forth`,fs:`fsharp`,"fs.glsl":`shader`,fsi:`fsharp`,fsproj:`fsharp`,fsscript:`fsharp`,fsx:`fsharp`,fth:`forth`,ftl:`freemarker`,fun:`sml`,fx:`shader`,fxh:`shader`,fxml:`xml`,fxp:`foxpro`,"g.dart":`dart_generated`,g4:`antlr`,"garden.yaml":`garden`,"garden.yml":`garden`,gbr:`image`,gd:`godot`,gdb:`database`,gdextension:`godot-assets`,gdnlib:`godot-assets`,gdns:`godot-assets`,gdshader:`godot-assets`,gdshaderinc:`godot-assets`,gemini:`gemini`,gemspec:`ruby`,geojson:`json`,geom:`shader`,"geom.glsl":`shader`,"geom.hlsl":`shader`,"geometry.glsl":`shader`,"geometry.hlsl":`shader`,geometryshader:`shader`,gif:`image`,gifv:`video`,"gitlab-ci.yml":`gitlab`,glb:`3d`,gleam:`gleam`,glsl:`shader`,gltf:`3d`,gmi:`gemini`,gml:`gamemaker`,gnu:`gnuplot`,go:`go`,godot:`godot-assets`,gp:`audio`,gpg:`key`,gpl:`palette`,gpr:`image`,gql:`graphql`,gr:`grain`,gradle:`gradle`,graphcool:`graphcool`,graphql:`graphql`,grm:`sml`,groovy:`groovy`,gs:`apps-script`,"gs.glsl":`shader`,gsm:`audio`,gvimrc:`vim`,gvy:`groovy`,gyp:`python`,gypi:`python`,gz:`zip`,gzip:`zip`,h:`h`,"h++":`hpp`,"h.in":`cpp`,haml:`haml`,handlebars:`handlebars`,har:`json`,hbs:`handlebars`,hcl:`hcl`,hdd:`disc`,heex:`elixir`,heic:`image`,heif:`image`,hex:`hex`,hfs:`zip`,hh:`hpp`,hip:`hip`,hjs:`handlebars`,hjson:`hjson`,hlsl:`shader`,hlsli:`shader`,"horusec-config.json":`horusec`,hp:`hpp`,hpp:`hpp`,"hpp.in":`cpp`,hs:`haskell`,htm:`html`,html:`html`,"html.bubble":`dinophp`,html_vm:`html`,http:`http`,huff:`huff`,hurl:`hurl`,hx:`haxe`,hxx:`hpp`,i:`c`,iam:`3d`,ibc:`idris`,ibd:`database`,iced:`coffee`,icns:`image`,ico:`image`,ics:`email`,idr:`idris`,ige:`3d`,iges:`3d`,igs:`3d`,ii:`cpp`,iiq:`image`,ilk:`dll`,imba:`imba`,img:`image`,iml:`xml`,inc:`assembly`,ini:`settings`,"inky.php":`laravel`,inl:`hpp`,ino:`arduino`,ins:`doctex-installer`,ipa:`applescript`,ipp:`cpp`,ipt:`3d`,ipy:`python`,ipynb:`jupyter`,isml:`xml`,iso:`disc`,it:`audio`,iuml:`uml`,ixx:`cpp`,j2:`jinja`,jade:`pug`,jar:`jar`,jav:`java`,java:`java`,jb2:`image`,jbig2:`image`,jenkins:`jenkins`,jenkinsfile:`jenkins`,jfif:`image`,jinja:`jinja`,"jinja-html":`jinja`,jinja2:`jinja`,jl:`julia`,jmx:`xml`,jng:`image`,jpeg:`image`,jpg:`image`,jrxml:`xml`,js:`javascript`,"js.map":`javascript-map`,"js.snap":`test-js`,"jsconfig.json":`jsconfig`,jshtm:`html`,json:`json`,json5:`json`,jsonc:`json`,jsonl:`json`,jsonld:`json`,jsp:`java`,jst:`dotjs`,jsx:`react`,"jsx.snap":`test-jsx`,jt:`3d`,jxl:`image`,jxr:`image`,k:`kcl`,k25:`image`,kdbx:`database`,kdc:`image`,key:`key`,kl:`kl`,kql:`kusto`,kra:`image`,ksh:`console`,kt:`kotlin`,kts:`kotlin`,ktx:`image`,ktx2:`image`,kv:`kivy`,lang:`i18n`,latex:`tex`,launch:`xml`,lbx:`lbx`,ldf:`database`,lean:`lean`,leex:`elixir`,less:`less`,lex:`sml`,lha:`zip`,lhs:`haskell`,lib:`lib`,liquid:`liquid`,lisp:`lisp`,litcoffee:`markdown`,liz:`zip`,lock:`lock`,log:`log`,lol:`lolcode`,lottie:`lottie`,lrc:`lyric`,ls:`livescript`,lsp:`lisp`,ltx:`tex`,lua:`lua`,luau:`luau`,lucee:`coldfusion`,ly:`lilypond`,lz:`zip`,lz4:`zip`,lz5:`zip`,lzh:`zip`,lzma:`zip`,lzma2:`zip`,m:`objective-c`,m2:`macaulay2`,m2v:`video`,m3u:`audio`,m3u8:`audio`,m4a:`audio`,m4b:`audio`,m4p:`audio`,m4r:`audio`,m4v:`video`,mak:`settings`,manifest:`xml`,markdn:`markdown`,markdoc:`markdoc`,"markdoc.md":`markdoc`,markdown:`markdown`,marko:`markojs`,mbox:`email`,mca:`minecraft`,mcaddon:`minecraft`,mcfunction:`minecraft`,mcgame:`minecraft`,mclevel:`minecraft`,mcmeta:`minecraft`,mcpack:`minecraft`,mcproject:`minecraft`,mcr:`minecraft`,mcstructure:`minecraft`,mctemplate:`minecraft`,mcworld:`minecraft`,md:`markdown`,mdb:`database`,mdc:`image`,mde:`database`,mdf:`database`,mdoc:`markdoc`,mdown:`markdown`,mdp:`image`,mdtext:`markdown`,mdtxt:`markdown`,mdwn:`markdown`,mdx:`mdx`,mef:`image`,menu:`xml`,merlin:`merlin`,mermaid:`mermaid`,mesh:`3d`,mi:`c`,mid:`audio`,mii:`cpp`,mine:`minecraft`,mint:`mint`,mitigus:`assembly`,mjml:`mjml`,mjs:`javascript`,"mjs.map":`javascript-map`,mk:`makefile`,mka:`audio`,mkd:`markdown`,mkdn:`markdown`,mkv:`video`,ml:`ocaml`,mlb:`sml`,mli:`ocaml`,mlton:`sml`,mm:`objective-cpp`,mmd:`mermaid`,mmf:`audio`,mo:`i18n`,mod:`audio`,"module.js":`angular`,"module.ts":`angular`,mojo:`mojo`,moon:`moonscript`,mos:`image`,mov:`video`,mp2:`video`,mp3:`audio`,mp4:`video`,mpc:`audio`,mpe:`video`,mpeg:`video`,mpg:`video`,mpv:`video`,mqo:`3d`,mrf:`font`,mrpack:`mrpack`,mrw:`image`,ms:`assembly`,mscz:`audio`,msg:`email`,msi:`exe`,mtm:`audio`,mts:`typescript`,mui:`audio`,mus:`minecraft`,mustache:`handlebars`,musx:`audio`,mxl:`audio`,mxml:`mxml`,myd:`database`,myi:`database`,nasm:`assembly`,nb:`mathematica`,ndf:`database`,ndjson:`json`,"ndst.json":`ndst`,"ndst.yaml":`ndst`,"ndst.yml":`ndst`,nef:`image`,nf:`groovy`,"ng-template":`angular`,nginx:`nginx`,nginxconf:`nginx`,nginxconfig:`nginx`,nim:`nim`,nimble:`nim`,nix:`nix`,njk:`nunjucks`,npmrc:`settings`,nrw:`image`,nsa:`audio`,ntf:`font`,ntfs:`zip`,nu:`console`,nunjucks:`nunjucks`,nupkg:`nuget`,nuspec:`nuget`,o:`3d`,obj:`3d`,obm:`image`,odb:`database`,odin:`odin`,odp:`powerpoint`,ods:`table`,odt:`word`,odttf:`font`,oft:`email`,ogg:`video`,ogv:`video`,olm:`email`,onnx:`onnx`,opam:`opam`,"openapi.json":`openapi`,"openapi.yaml":`openapi`,"openapi.yml":`openapi`,opml:`xml`,option:`settings`,opus:`audio`,ora:`image`,orc:`database`,orf:`image`,ost:`email`,otf:`font`,otne:`otne`,owl:`xml`,p:`prolog`,p7s:`email`,pac:`javascript`,pal:`palette`,parquet:`database`,pas:`pascal`,passwd:`key`,patch:`git`,pbm:`image`,pcss:`postcss`,pdb:`database`,pde:`processing`,pdf:`pdf`,"pdm.lock":`pdm`,"pdm.toml":`pdm`,pdn:`image`,pef:`image`,pem:`key`,pgf:`image`,pgm:`image`,pgn:`chess`,pgsql:`database`,php:`php`,"php.bubble":`dinophp`,php4:`php`,php5:`php`,phtml:`php`,pic:`image`,pine:`pinejs`,pipeline:`pipeline`,"pixel.hlsl":`shader`,pkb:`database`,pkf:`audio`,pkl:`pkl`,pks:`database`,pl:`prolog`,plantuml:`uml`,plist:`xml`,plpgsql:`database`,ply:`3d`,pm:`perl`,pmd:`3d`,pmx:`3d`,png:`image`,pnm:`image`,pnml:`coloredpetrinets`,po:`i18n`,pod:`perl`,podspec:`ruby`,postgres:`database`,pot:`i18n`,potm:`powerpoint`,potx:`powerpoint`,pp:`puppet`,ppa:`powerpoint`,ppam:`powerpoint`,ppm:`image`,pps:`powerpoint`,ppsm:`powerpoint`,ppsx:`powerpoint`,ppt:`powerpoint`,pptm:`powerpoint`,pptx:`powerpoint`,prefs:`settings`,prg:`foxpro`,prisma:`prisma`,pro:`prolog`,profile:`console`,proj:`xml`,project:`xml`,"prompt.md":`prompt`,"prompts.md":`prompt`,prop:`settings`,properties:`settings`,props:`settings`,proto:`proto`,prt:`3d`,prw:`advpl`,prx:`advpl`,ps1:`powershell`,ps1xml:`powershell`,psb:`adobe-photoshop`,psc1:`powershell`,psd:`adobe-photoshop`,psd1:`powershell`,psdt:`adobe-photoshop`,psgi:`perl`,psh:`shader`,psm1:`powershell`,psql:`database`,psrc:`powershell`,pssc:`powershell`,pst:`email`,psv:`table`,pt:`pytorch`,pth:`pytorch`,ptx:`image`,pu:`uml`,pub:`key`,publishsettings:`xml`,pubxml:`xml`,"pubxml.user":`xml`,pug:`pug`,puml:`uml`,pure:`purescript`,purs:`purescript`,pwf:`pytorch`,pwn:`pawn`,"px.hlsl":`shader`,pxn:`image`,py:`python`,pyc:`python-misc`,pyi:`python`,pyt:`python`,pyw:`python`,qcow:`disc`,qcow2:`disc`,qcp:`audio`,qed:`disc`,qmd:`quarto`,qs:`qsharp`,qt:`video`,"quokka.js":`quokka`,"quokka.jsx":`quokka`,"quokka.ts":`quokka`,"quokka.tsx":`quokka`,r:`r`,r3d:`image`,ra:`audio`,raf:`image`,rahit:`shader`,"rahit.glsl":`shader`,rake:`ruby`,raku:`perl`,raml:`raml`,rar:`zip`,raw:`image`,razor:`razor`,rb:`ruby`,rbi:`ruby`,rbs:`ruby`,rbx:`ruby`,rbxl:`roblox`,rbxlx:`roblox`,rbxm:`roblox`,"rbxmk.lua":`rbxmk`,"rbxmk.luau":`rbxmk`,rbxmx:`roblox`,rc:`rc`,rcall:`shader`,"rcall.glsl":`shader`,rchit:`shader`,"rchit.glsl":`shader`,rdf:`xml`,re:`reason`,reb:`image`,red:`red`,reg:`regedit`,rego:`opa`,rei:`reason`,rej:`diff`,repo:`settings`,res:`rescript`,resi:`rescript-interface`,rest:`http`,restql:`restql`,resx:`xml`,rf64:`audio`,rgen:`shader`,"rgen.glsl":`shader`,rhistory:`r`,rhtml:`html`,rint:`shader`,"rint.glsl":`shader`,riot:`riot`,rip:`audio`,rjs:`ruby`,rkt:`racket`,rm:`video`,rmd:`r`,rmiss:`shader`,"rmiss.glsl":`shader`,rmvb:`video`,rng:`xml`,robot:`robot`,ron:`rust`,ronn:`markdown`,"route.js":`routing`,"route.jsx":`routing`,"route.ts":`routing`,"route.tsx":`routing`,"routes.js":`routing`,"routes.jsx":`routing`,"routes.ts":`routing`,"routes.tsx":`routing`,"routing.js":`routing`,"routing.jsx":`routing`,"routing.ts":`routing`,"routing.tsx":`routing`,rpm:`zip`,rpmsg:`email`,rprofile:`r`,rpy:`python`,rql:`restql`,rs:`rust`,rss:`xml`,rst:`markdown`,rt:`r`,rtf:`word`,ru:`ruby`,ruleset:`visualstudio`,rw2:`image`,rwl:`image`,rwz:`image`,s:`assembly`,sab:`3d`,sai:`image`,san:`san`,sas:`sas`,sas7bdat:`sas`,sashdat:`sas`,sass:`sass`,sast:`sas`,sat:`3d`,sbt:`sbt`,sbv:`subtitles`,sc:`scala`,scala:`scala`,"schema.json":`json_schema`,scm:`scheme`,scss:`sass`,sdf:`database`,sdt:`audio`,secret:`key`,sesx:`audio`,settings:`settings`,sf2:`audio`,sh:`console`,sha256:`key`,sha256sum:`key`,sha256sums:`key`,shader:`shader`,shasum:`key`,shproj:`xml`,shtml:`html`,sig:`sml`,"sigstore.json":`verified`,sketch:`sketch`,"skill.md":`skill`,"skills.md":`skill`,skp:`3d`,slang:`shader`,sldasm:`3d`,slddrw:`3d`,sldprt:`3d`,slim:`slim`,slint:`slint`,sln:`visualstudio`,"sln.dotsettings":`settings`,"sln.dotsettings.user":`settings`,slnf:`visualstudio`,slnx:`visualstudio`,sls:`salt`,slx:`simulink`,smali:`android`,smb:`3d`,smk:`snakemake`,sml:`sml`,smt:`3d`,snakemake:`snakemake`,so:`dll`,sol:`solidity`,"spec-d.ts":`test-ts`,"spec-d.tsx":`test-jsx`,"spec.cjs":`test-js`,"spec.cts":`test-ts`,"spec.js":`test-js`,"spec.jsx":`test-jsx`,"spec.mjs":`test-js`,"spec.mts":`test-ts`,"spec.ts":`test-ts`,"spec.tsx":`test-jsx`,spv:`shader`,spwn:`spwn`,sql:`database`,sqlite:`database`,sqlite3:`database`,squashfs:`zip`,sr2:`image`,srf:`image`,srt:`subtitles`,srw:`image`,ss:`scheme`,ssa:`subtitles`,sss:`postcss`,"st.css":`stylable`,stan:`stan`,stap:`audio`,ste:`3d`,"steadybit.yaml":`steadybit`,"steadybit.yml":`steadybit`,step:`3d`,stl:`3d`,"stories.js":`storybook`,"stories.jsx":`storybook`,"stories.mdx":`storybook`,"stories.svelte":`storybook`,"stories.ts":`storybook`,"stories.tsx":`storybook`,"stories.vue":`storybook`,"story.js":`storybook`,"story.jsx":`storybook`,"story.mdx":`storybook`,"story.ts":`storybook`,"story.tsx":`storybook`,storyboard:`xml`,stp:`3d`,styl:`stylus`,sub:`subtitles`,"sublime-project":`sublime`,"sublime-workspace":`sublime`,sui:`font`,suit:`font`,suo:`visualstudio`,sv:`verilog`,svelte:`svelte`,svg:`svg`,svh:`verilog`,svx:`mdsvex`,sw:`sway`,"swagger.json":`swagger`,"swagger.yaml":`swagger`,"swagger.yml":`swagger`,swc:`adobe-swc`,swcrc:`swc`,swf:`flash`,swift:`swift`,swiftdeps:`swift`,swiftdoc:`swift`,swiftmodule:`swift`,swiftsourceinfo:`swift`,swm:`zip`,sy:`siyuan`,synctex:`tex`,"synctex.gz":`tex`,t:`perl`,tag:`riot`,tar:`zip`,targets:`xml`,"taskfile.yaml":`taskfile`,"taskfile.yml":`taskfile`,tauri:`tauri`,taz:`zip`,tbz:`zip`,tbz2:`zip`,tcc:`hpp`,tcl:`tcl`,tcsh:`console`,tcshrc:`console`,templ:`templ`,template:`template`,terraformignore:`terraform`,tesc:`shader`,"tesc.glsl":`shader`,tese:`shader`,"tese.glsl":`shader`,"tess.hlsl":`shader`,"tessellation.hlsl":`shader`,"test-d.ts":`test-ts`,"test-d.tsx":`test-jsx`,"test.cjs":`test-js`,"test.cts":`test-ts`,"test.js":`test-js`,"test.jsx":`test-jsx`,"test.mjs":`test-js`,"test.mts":`test-ts`,"test.ts":`test-ts`,"test.tsx":`test-jsx`,tex:`tex`,tf:`terraform`,"tf.json":`terraform`,tfbackend:`terraform`,tfstate:`terraform`,tfvars:`terraform`,tg:`audio`,tga:`image`,tgz:`zip`,tif:`image`,tiff:`image`,tikz:`tex`,tl:`teal`,tld:`xml`,tldr:`tldraw`,tlz:`zip`,tmlanguage:`xml`,tmx:`xml`,tnef:`email`,tobi:`tobi`,toc:`toc`,todo:`todo`,tofu:`opentofu`,toml:`toml`,"tool-versions":`settings`,toon:`toon`,tpl:`smarty`,tpp:`cpp`,tpz:`zip`,tree:`tree`,tres:`godot-assets`,ts:`typescript`,"ts.glsl":`shader`,"ts.map":`json`,"ts.snap":`test-ts`,tsbuildinfo:`json`,tscn:`godot-assets`,"tsconfig.json":`tsconfig`,tsv:`table`,tsx:`react_ts`,"tsx.snap":`test-jsx`,ttc:`font`,ttf:`font`,ttml:`subtitles`,tw:`twine`,twee:`twine`,twig:`twig`,txt:`document`,txx:`cpp`,txz:`zip`,typ:`typst`,tz:`zip`,tzst:`zip`,tzstd:`zip`,ua:`uiua`,unity:`unity`,unitypackage:`unity`,url:`url`,usd:`3d`,usdz:`3d`,use:`sml`,v:`vlang`,vac:`3d`,vagrantfile:`vagrant`,vala:`vala`,vb:`visualstudio`,vba:`visualstudio`,vbhtml:`razor`,vbox:`virtual`,"vbox-prev":`virtual`,vbproj:`xml`,"vbproj.user":`xml`,vbs:`visualstudio`,vcl:`varnish`,vcxitems:`visualstudio`,"vcxitems.filters":`visualstudio`,vcxproj:`visualstudio`,"vcxproj.filters":`visualstudio`,vdi:`virtual`,vdp:`3d`,ved:`vedic`,veda:`vedic`,vedic:`vedic`,verse:`verse`,vert:`shader`,"vert.glsl":`shader`,"vertex.glsl":`shader`,vertexshader:`shader`,vfl:`vfl`,vhd:`verilog`,vhdl:`verilog`,vhdx:`verilog`,vim:`vim`,viminfo:`vim`,vimrc:`vim`,vm:`velocity`,vmdk:`disc`,vob:`video`,voc:`audio`,volt:`html`,vox:`3d`,vqf:`audio`,"vs.glsl":`shader`,vscodeignore:`vscode`,vsh:`shader`,vsix:`vscode`,vsixmanifest:`vscode`,vtl:`velocity`,vtt:`subtitles`,vue:`vue`,wasm:`webassembly`,wat:`webassembly`,wav:`audio`,weba:`audio`,webm:`video`,webmanifest:`json`,webp:`image`,wfp:`audio`,wgsl:`shader`,whl:`python-misc`,wim:`zip`,windi:`windicss`,winget:`yaml`,wire:`3d`,wixproj:`visualstudio`,wl:`wolframlanguage`,wls:`wolframlanguage`,wma:`audio`,wmv:`video`,woff:`font`,woff2:`font`,workbook:`markdown`,wpl:`audio`,wproj:`audio`,wpy:`wepy`,wrap:`meson`,wrl:`3d`,wsd:`uml`,wsdl:`xml`,wv:`audio`,wxi:`xml`,wxl:`xml`,wxs:`xml`,x3f:`image`,x_b:`3d`,x_t:`3d`,xaml:`xaml`,xar:`zip`,xbl:`xml`,xcf:`image`,xcplayground:`swift`,xht:`html`,xhtml:`html`,xib:`xml`,xlf:`i18n`,xliff:`xml`,xls:`table`,xlsm:`table`,xlsx:`table`,xml:`xml`,"xml.dist":`xml`,"xml.dist.sample":`xml`,xmp:`xml`,xoml:`xml`,xpdl:`xml`,xprofile:`console`,xquery:`xml`,xsd:`xml`,xsession:`console`,xsessionrc:`console`,xsh:`console`,xsl:`xml`,xslt:`xml`,xul:`xml`,xz:`zip`,yaml:`yaml`,"yaml-tmlanguage":`yaml`,"yaml-tmpreferences":`yaml`,"yaml-tmtheme":`yaml`,"yaml.dist":`yaml`,yang:`yang`,yash_profile:`console`,yashrc:`console`,yml:`yaml`,"yml.dist":`yaml`,yuv:`video`,yy:`gamemaker`,yyp:`gamemaker`,yyz:`gamemaker`,z:`zip`,zeabur:`zeabur`,zig:`zig`,zip:`zip`,zlogin:`console`,zlogout:`console`,zon:`zig`,zprofile:`console`,zsh:`console`,"zsh-theme":`console`,zshenv:`console`,zshrc:`console`,zst:`zip`,zstd:`zip`,ц:`tsil`,"🔥":`mojo`},qa={"-@types":`folder-typescript`,"-addin":`folder-plugin`,"-addins":`folder-plugin`,"-addon":`folder-plugin`,"-addons":`folder-plugin`,"-admin":`folder-admin`,"-admins":`folder-admin`,"-agent":`folder-robot`,"-agents":`folder-robot`,"-android":`folder-android`,"-angular":`folder-angular`,"-anim":`folder-animation`,"-animated":`folder-animation`,"-animation":`folder-animation`,"-animations":`folder-animation`,"-anims":`folder-animation`,"-ansible":`folder-ansible`,"-api":`folder-api`,"-apis":`folder-api`,"-apollo":`folder-apollo`,"-apollo-cache":`folder-apollo`,"-apollo-client":`folder-apollo`,"-apollo-config":`folder-apollo`,"-app":`folder-app`,"-apple":`folder-macos`,"-application":`folder-app`,"-applications":`folder-app`,"-apps":`folder-app`,"-appwrite":`folder-appwrite`,"-arc":`folder-archive`,"-archival":`folder-archive`,"-archive":`folder-archive`,"-archives":`folder-archive`,"-arcs":`folder-archive`,"-article":`folder-docs`,"-articles":`folder-docs`,"-asm":`folder-assembly`,"-assembly":`folder-assembly`,"-asset":`folder-resource`,"-assets":`folder-resource`,"-astro":`folder-astro`,"-atom":`folder-atom`,"-atoms":`folder-atom`,"-attachment":`folder-attachment`,"-attachments":`folder-attachment`,"-aud":`folder-audio`,"-audio":`folder-audio`,"-audios":`folder-audio`,"-auds":`folder-audio`,"-aurelia_project":`folder-aurelia`,"-auth":`folder-secure`,"-authentication":`folder-secure`,"-auto":`folder-generator`,"-aws":`folder-aws`,"-azure":`folder-aws`,"-azure-pipelines":`folder-azure-pipelines`,"-azure-pipelines-ci":`folder-azure-pipelines`,"-back-up":`folder-backup`,"-back-ups":`folder-backup`,"-backend":`folder-server`,"-backends":`folder-server`,"-backup":`folder-backup`,"-backups":`folder-backup`,"-bak":`folder-backup`,"-baks":`folder-backup`,"-base":`folder-base`,"-bases":`folder-base`,"-batch":`folder-batch`,"-batches":`folder-batch`,"-batchs":`folder-batch`,"-bench":`folder-benchmark`,"-benches":`folder-benchmark`,"-benchmark":`folder-benchmark`,"-benchmarks":`folder-benchmark`,"-bibliographies":`folder-bibliography`,"-bibliography":`folder-bibliography`,"-bicep":`folder-bicep`,"-bin":`folder-dist`,"-bkp":`folder-backup`,"-bkps":`folder-backup`,"-blender":`folder-blender`,"-blender-assets":`folder-blender`,"-blender-files":`folder-blender`,"-blender-models":`folder-blender`,"-blender-project":`folder-blender`,"-bloc":`folder-bloc`,"-blocs":`folder-bloc`,"-blog":`folder-docs`,"-book":`folder-bibliography`,"-books":`folder-bibliography`,"-bot":`folder-robot`,"-bots":`folder-robot`,"-bower_components":`folder-bower`,"-browser":`folder-public`,"-browsers":`folder-public`,"-build":`folder-dist`,"-buildkite":`folder-buildkite`,"-builds":`folder-dist`,"-built":`folder-dist`,"-bull":`folder-queue`,"-cache":`folder-temp`,"-cached":`folder-temp`,"-calc":`folder-functions`,"-calcs":`folder-functions`,"-calculation":`folder-functions`,"-calculations":`folder-functions`,"-cargo":`folder-rust`,"-cart":`folder-cart`,"-centos":`folder-linux`,"-cert":`folder-secure`,"-certificate":`folder-secure`,"-certificates":`folder-secure`,"-certs":`folder-secure`,"-cfg":`folder-config`,"-cfgs":`folder-config`,"-cfn-gen":`folder-generator`,"-changes":`folder-delta`,"-changeset":`folder-changesets`,"-changesets":`folder-changesets`,"-chat":`folder-messages`,"-chats":`folder-messages`,"-ci":`folder-ci`,"-cipher":`folder-secure`,"-circleci":`folder-circleci`,"-cjs":`folder-javascript`,"-class":`folder-class`,"-classes":`folder-class`,"-claude":`folder-claude`,"-cli":`folder-command`,"-client":`folder-client`,"-clients":`folder-client`,"-cline_docs":`folder-cline`,"-clis":`folder-command`,"-cloud-firestore":`folder-firestore`,"-cloud-functions":`folder-cloud-functions`,"-cloudflare":`folder-cloudflare`,"-cloudfunctions":`folder-cloud-functions`,"-cluster":`folder-cluster`,"-clusters":`folder-cluster`,"-cmd":`folder-command`,"-cobol":`folder-cobol`,"-code":`folder-src`,"-color":`folder-theme`,"-colors":`folder-theme`,"-colour":`folder-theme`,"-colours":`folder-theme`,"-command":`folder-command`,"-commandline":`folder-command`,"-commands":`folder-command`,"-common":`folder-shared`,"-compiled":`folder-dist`,"-components":`folder-components`,"-composable":`folder-functions`,"-composables":`folder-functions`,"-concept":`folder-mock`,"-concepts":`folder-mock`,"-conf":`folder-config`,"-config":`folder-config`,"-configs":`folder-config`,"-configuration":`folder-config`,"-configurations":`folder-config`,"-confs":`folder-config`,"-connection":`folder-connection`,"-connections":`folder-connection`,"-console":`folder-console`,"-const":`folder-constant`,"-constant":`folder-constant`,"-constants":`folder-constant`,"-consts":`folder-constant`,"-container":`folder-container`,"-containers":`folder-container`,"-content":`folder-content`,"-contents":`folder-content`,"-context":`folder-context`,"-contexts":`folder-context`,"-contract":`folder-contract`,"-contract-test":`folder-contract`,"-contract-testing":`folder-contract`,"-contract-tests":`folder-contract`,"-contracts":`folder-contract`,"-controller":`folder-controller`,"-controllers":`folder-controller`,"-controls":`folder-controller`,"-conversation":`folder-messages`,"-conversations":`folder-messages`,"-core":`folder-core`,"-coverage":`folder-coverage`,"-crash":`folder-error`,"-crashes":`folder-error`,"-crates":`folder-lib`,"-css":`folder-css`,"-cts":`folder-typescript`,"-cubit":`folder-bloc`,"-cubits":`folder-bloc`,"-cue":`folder-cue`,"-cues":`folder-cue`,"-cursor":`folder-cursor`,"-custom":`folder-custom`,"-customs":`folder-custom`,"-cypher":`folder-secure`,"-cypress":`folder-cypress`,"-dal":`folder-dal`,"-dart":`folder-dart`,"-dart_tool":`folder-dart`,"-dart_tools":`folder-dart`,"-data":`folder-database`,"-data-access":`folder-dal`,"-data-access-layer":`folder-dal`,"-database":`folder-database`,"-databases":`folder-database`,"-db":`folder-database`,"-deb":`folder-linux`,"-debian":`folder-linux`,"-debug":`folder-debug`,"-debugger":`folder-debug`,"-debugging":`folder-debug`,"-decorator":`folder-decorators`,"-decorators":`folder-decorators`,"-deepin":`folder-linux`,"-delta":`folder-delta`,"-deltas":`folder-delta`,"-demo":`folder-examples`,"-demos":`folder-examples`,"-dependencies":`folder-packages`,"-design":`folder-theme`,"-designs":`folder-theme`,"-desktop":`folder-desktop`,"-devcontainer":`folder-container`,"-devpackages":`folder-packages`,"-devtools":`folder-tools`,"-dialog":`folder-messages`,"-dialogs":`folder-messages`,"-diary":`folder-docs`,"-directive":`folder-directive`,"-directives":`folder-directive`,"-display":`folder-desktop`,"-dist":`folder-dist`,"-distribution":`folder-dist`,"-doc":`folder-docs`,"-docker":`folder-docker`,"-dockerfiles":`folder-docker`,"-dockerhub":`folder-docker`,"-docs":`folder-docs`,"-document":`folder-docs`,"-documentation":`folder-docs`,"-documents":`folder-docs`,"-download":`folder-download`,"-downloader":`folder-download`,"-downloaders":`folder-download`,"-downloads":`folder-download`,"-draft":`folder-mock`,"-drafts":`folder-mock`,"-drizzle":`folder-drizzle`,"-ds_store":`folder-macos`,"-dump":`folder-dump`,"-dumps":`folder-dump`,"-e2e":`folder-coverage`,"-easing":`folder-animation`,"-easings":`folder-animation`,"-element":`folder-element`,"-elements":`folder-element`,"-email":`folder-mail`,"-emails":`folder-mail`,"-enum":`folder-enum`,"-enums":`folder-enum`,"-env":`folder-environment`,"-environment":`folder-environment`,"-environments":`folder-environment`,"-envs":`folder-environment`,"-err":`folder-error`,"-error":`folder-error`,"-errors":`folder-error`,"-errs":`folder-error`,"-eslint":`folder-eslint`,"-eslint-config":`folder-eslint`,"-eslint-configs":`folder-eslint`,"-eslint-plugin":`folder-eslint`,"-eslint-plugins":`folder-eslint`,"-etc":`folder-other`,"-event":`folder-event`,"-events":`folder-event`,"-example":`folder-examples`,"-examples":`folder-examples`,"-expo":`folder-expo`,"-expo-shared":`folder-expo`,"-export":`folder-export`,"-exported":`folder-export`,"-exports":`folder-export`,"-extension":`folder-plugin`,"-extensions":`folder-plugin`,"-external":`folder-lib`,"-externals":`folder-lib`,"-extra":`folder-other`,"-extras":`folder-other`,"-fastlane":`folder-fastlane`,"-favicon":`folder-favicon`,"-favicons":`folder-favicon`,"-feat":`folder-features`,"-feats":`folder-features`,"-feature":`folder-features`,"-features":`folder-features`,"-fig":`folder-images`,"-figs":`folder-images`,"-figure":`folder-images`,"-figures":`folder-images`,"-filter":`folder-filter`,"-filters":`folder-filter`,"-firebase":`folder-firebase`,"-firebase-cloud-functions":`folder-cloud-functions`,"-firebase-cloudfunctions":`folder-cloud-functions`,"-firebase-firestore":`folder-firestore`,"-firestore":`folder-firestore`,"-fixture":`folder-mock`,"-fixtures":`folder-mock`,"-flow-typed":`folder-flow`,"-flutter":`folder-flutter`,"-font":`folder-font`,"-fonts":`folder-font`,"-forgejo":`folder-forgejo`,"-form":`folder-form`,"-forms":`folder-form`,"-forum":`folder-messages`,"-fragments":`folder-components`,"-frontend":`folder-client`,"-frontends":`folder-client`,"-func":`folder-functions`,"-funcs":`folder-functions`,"-function":`folder-functions`,"-functions":`folder-functions`,"-game":`folder-console`,"-gamemaker":`folder-gamemaker`,"-gamemaker2":`folder-gamemaker`,"-games":`folder-console`,"-gcp":`folder-aws`,"-gemini":`folder-gemini-ai`,"-gemini-ai":`folder-gemini-ai`,"-geminiai":`folder-gemini-ai`,"-gen":`folder-generator`,"-generated":`folder-generator`,"-generator":`folder-generator`,"-generators":`folder-generator`,"-gens":`folder-generator`,"-git":`folder-git`,"-gitea":`folder-gitea`,"-githooks":`folder-git`,"-github":`folder-github`,"-github/issue_template":`folder-template`,"-github/pull_request_template":`folder-template`,"-github/workflows":`folder-gh-workflows`,"-gitlab":`folder-gitlab`,"-global":`folder-global`,"-glsl":`folder-shader`,"-go":`folder-go`,"-godot":`folder-godot`,"-godot-cpp":`folder-godot`,"-golang":`folder-go`,"-gql":`folder-graphql`,"-gradle":`folder-gradle`,"-graphql":`folder-graphql`,"-guard":`folder-guard`,"-guards":`folder-guard`,"-gui":`folder-ui`,"-gulp":`folder-gulp`,"-gulp-tasks":`folder-gulp`,"-gulpfile.babel.js":`folder-gulp`,"-gulpfile.js":`folder-gulp`,"-gulpfile.mjs":`folder-gulp`,"-gulpfile.ts":`folder-gulp`,"-gulpfiles":`folder-gulp`,"-handler":`folder-controller`,"-handlers":`folder-controller`,"-helm":`folder-helm`,"-helmchart":`folder-helm`,"-helmcharts":`folder-helm`,"-helper":`folder-helper`,"-helpers":`folder-helper`,"-hg":`folder-mercurial`,"-hgext":`folder-mercurial`,"-hghooks":`folder-mercurial`,"-histories":`folder-backup`,"-history":`folder-backup`,"-hlsl":`folder-shader`,"-home":`folder-home`,"-hook":`folder-hook`,"-hooks":`folder-hook`,"-html":`folder-views`,"-husky":`folder-husky`,"-i18n":`folder-i18n`,"-ico":`folder-images`,"-icon":`folder-images`,"-icons":`folder-images`,"-icos":`folder-images`,"-idea":`folder-intellij`,"-image":`folder-images`,"-images":`folder-images`,"-img":`folder-images`,"-imgs":`folder-images`,"-import":`folder-import`,"-imported":`folder-import`,"-imports":`folder-import`,"-in":`folder-input`,"-inc":`folder-include`,"-inc64":`folder-include`,"-include":`folder-include`,"-includes":`folder-include`,"-infra":`folder-server`,"-infrastructure":`folder-server`,"-input":`folder-input`,"-inputs":`folder-input`,"-integration":`folder-connection`,"-integration-test":`folder-coverage`,"-integration-tests":`folder-coverage`,"-integrations":`folder-connection`,"-interceptor":`folder-interceptor`,"-interceptors":`folder-interceptor`,"-interface":`folder-interface`,"-interfaces":`folder-interface`,"-internationalization":`folder-i18n`,"-inventories":`folder-server`,"-inventory":`folder-server`,"-io":`folder-input`,"-ios":`folder-ios`,"-ipad":`folder-macos`,"-iphone":`folder-macos`,"-ipod":`folder-macos`,"-ipynb":`folder-jupyter`,"-it":`folder-coverage`,"-j2":`folder-jinja`,"-java":`folder-java`,"-javascript":`folder-javascript`,"-javascripts":`folder-javascript`,"-jinja":`folder-jinja`,"-jinja2":`folder-jinja`,"-job":`folder-job`,"-jobs":`folder-job`,"-js":`folder-javascript`,"-json":`folder-json`,"-jsonc":`folder-json`,"-jsonl":`folder-json`,"-jsons":`folder-json`,"-jupyter":`folder-jupyter`,"-jwt":`folder-keys`,"-k8s":`folder-kubernetes`,"-key":`folder-keys`,"-keys":`folder-keys`,"-kit":`folder-tools`,"-kits":`folder-tools`,"-knowledge":`folder-docs`,"-kotlin":`folder-kotlin`,"-kql":`folder-kusto`,"-kubernetes":`folder-kubernetes`,"-kusto":`folder-kusto`,"-l10n":`folder-i18n`,"-lambda":`folder-functions`,"-lambdas":`folder-functions`,"-landing":`folder-home`,"-lang":`folder-i18n`,"-langs":`folder-i18n`,"-language":`folder-i18n`,"-languages":`folder-i18n`,"-layout":`folder-layout`,"-layouts":`folder-layout`,"-lefthook":`folder-lefthook`,"-lefthook-local":`folder-lefthook`,"-less":`folder-less`,"-lib":`folder-lib`,"-lib64":`folder-lib`,"-libraries":`folder-lib`,"-library":`folder-lib`,"-libs":`folder-lib`,"-license":`folder-license`,"-licenses":`folder-license`,"-link":`folder-link`,"-links":`folder-link`,"-linux":`folder-linux`,"-linuxbsd":`folder-linux`,"-liquibase":`folder-liquibase`,"-locale":`folder-i18n`,"-locales":`folder-i18n`,"-localization":`folder-i18n`,"-log":`folder-log`,"-logging":`folder-log`,"-logic":`folder-functions`,"-logs":`folder-log`,"-lottie":`folder-lottie`,"-lottiefiles":`folder-lottie`,"-lotties":`folder-lottie`,"-lua":`folder-lua`,"-luau":`folder-luau`,"-mac":`folder-macos`,"-macbook":`folder-macos`,"-macbook-air":`folder-macos`,"-macos":`folder-macos`,"-macosx":`folder-macos`,"-mail":`folder-mail`,"-mailers":`folder-mail`,"-mails":`folder-mail`,"-main":`folder-home`,"-manager":`folder-admin`,"-managers":`folder-admin`,"-mapping":`folder-mappings`,"-mappings":`folder-mappings`,"-markdown":`folder-markdown`,"-math":`folder-functions`,"-maths":`folder-functions`,"-md":`folder-markdown`,"-measure":`folder-benchmark`,"-measurement":`folder-benchmark`,"-measures":`folder-benchmark`,"-media":`folder-video`,"-messages":`folder-messages`,"-messaging":`folder-messages`,"-meta":`folder-meta`,"-meta-inf":`folder-config`,"-metadata":`folder-meta`,"-metro":`folder-metro`,"-middleware":`folder-middleware`,"-middlewares":`folder-middleware`,"-migration":`folder-migrations`,"-migrations":`folder-migrations`,"-mint":`folder-linux`,"-misc":`folder-other`,"-miscellaneous":`folder-other`,"-mjml":`folder-mjml`,"-mjs":`folder-javascript`,"-mobile":`folder-mobile`,"-mobiles":`folder-mobile`,"-mock":`folder-mock`,"-mocks":`folder-mock`,"-mod":`folder-plugin`,"-modding":`folder-plugin`,"-model":`folder-class`,"-models":`folder-class`,"-moderator":`folder-admin`,"-moderators":`folder-admin`,"-mods":`folder-plugin`,"-module":`folder-plugin`,"-modules":`folder-plugin`,"-mojo":`folder-mojo`,"-molecule":`folder-molecule`,"-molecules":`folder-molecule`,"-moon":`folder-moon`,"-motion":`folder-animation`,"-motions":`folder-animation`,"-movie":`folder-video`,"-movies":`folder-video`,"-mq":`folder-queue`,"-mts":`folder-typescript`,"-music":`folder-audio`,"-navigation":`folder-routes`,"-navigations":`folder-routes`,"-netlify":`folder-netlify`,"-news":`folder-docs`,"-next":`folder-next`,"-nginx":`folder-nginx`,"-node":`folder-node`,"-node_modules":`folder-node`,"-nodejs":`folder-node`,"-note":`folder-docs`,"-notebook":`folder-jupyter`,"-notebooks":`folder-jupyter`,"-notes":`folder-docs`,"-now":`folder-vercel`,"-nuxt":`folder-nuxt`,"-nyc-output":`folder-coverage`,"-nyc_output":`folder-coverage`,"-obsidian":`folder-obsidian`,"-opencode":`folder-opencode`,"-option":`folder-config`,"-options":`folder-config`,"-organism":`folder-organism`,"-organisms":`folder-organism`,"-osx":`folder-macos`,"-other":`folder-other`,"-others":`folder-other`,"-out":`folder-dist`,"-output":`folder-dist`,"-outputs":`folder-dist`,"-package":`folder-packages`,"-packages":`folder-packages`,"-pact":`folder-contract`,"-pacts":`folder-contract`,"-page":`folder-views`,"-pages":`folder-views`,"-palette":`folder-theme`,"-palettes":`folder-theme`,"-partial":`folder-include`,"-partials":`folder-include`,"-patches":`folder-git`,"-pdf":`folder-pdf`,"-pdfs":`folder-pdf`,"-pdm-build":`folder-pdm`,"-pdm-plugins":`folder-pdm`,"-perf":`folder-benchmark`,"-performance":`folder-benchmark`,"-phone":`folder-mobile`,"-phones":`folder-mobile`,"-photo":`folder-images`,"-photograph":`folder-images`,"-photographs":`folder-images`,"-photos":`folder-images`,"-php":`folder-php`,"-phpmailer":`folder-phpmailer`,"-pic":`folder-images`,"-pics":`folder-images`,"-picture":`folder-images`,"-pictures":`folder-images`,"-pipe":`folder-pipe`,"-pipeline":`folder-pipe`,"-pipelines":`folder-pipe`,"-pipes":`folder-pipe`,"-pkg":`folder-packages`,"-pkgs":`folder-packages`,"-plastic":`folder-plastic`,"-playground":`folder-sandbox`,"-playgrounds":`folder-sandbox`,"-playlist":`folder-audio`,"-playlists":`folder-audio`,"-plugin":`folder-plugin`,"-plugins":`folder-plugin`,"-policies":`folder-policy`,"-policy":`folder-policy`,"-popos":`folder-linux`,"-portability":`folder-mobile`,"-portable":`folder-mobile`,"-post":`folder-docs`,"-postman":`folder-postman`,"-posts":`folder-docs`,"-powershell":`folder-powershell`,"-pref":`folder-config`,"-preference":`folder-config`,"-preferences":`folder-config`,"-prefs":`folder-config`,"-presentation":`folder-ui`,"-preview":`folder-review`,"-previews":`folder-review`,"-prisma":`folder-prisma`,"-prisma/schema":`folder-prisma`,"-private":`folder-private`,"-profiling":`folder-benchmark`,"-proj":`folder-project`,"-project":`folder-project`,"-projects":`folder-project`,"-projs":`folder-project`,"-prompt":`folder-prompts`,"-prompts":`folder-prompts`,"-properties":`folder-config`,"-props":`folder-config`,"-proto":`folder-proto`,"-protobuf":`folder-proto`,"-protobufs":`folder-proto`,"-protos":`folder-proto`,"-provider":`folder-controller`,"-providers":`folder-controller`,"-proxy":`folder-public`,"-ps":`folder-powershell`,"-ps1":`folder-powershell`,"-ps4":`folder-console`,"-ps5":`folder-console`,"-public":`folder-public`,"-public_html":`folder-views`,"-pwa":`folder-client`,"-pycache":`folder-python`,"-pytest_cache":`folder-python`,"-python":`folder-python`,"-pytorch":`folder-pytorch`,"-quasar":`folder-quasar`,"-queue":`folder-queue`,"-queues":`folder-queue`,"-r":`folder-r`,"-recordings":`folder-audio`,"-release":`folder-dist`,"-remote":`folder-connection`,"-remotes":`folder-connection`,"-repo":`folder-repository`,"-report":`folder-resource`,"-reports":`folder-resource`,"-repos":`folder-repository`,"-repositories":`folder-repository`,"-repository":`folder-repository`,"-res":`folder-resource`,"-resolver":`folder-resolver`,"-resolvers":`folder-resolver`,"-resource":`folder-resource`,"-resources":`folder-resource`,"-restapi":`folder-api`,"-review":`folder-review`,"-reviewed":`folder-review`,"-reviews":`folder-review`,"-revisal":`folder-review`,"-revisals":`folder-review`,"-robot":`folder-robot`,"-robots":`folder-robot`,"-router":`folder-routes`,"-routers":`folder-routes`,"-routes":`folder-routes`,"-routing":`folder-routes`,"-rule":`folder-rules`,"-rules":`folder-rules`,"-rust":`folder-rust`,"-salt":`folder-salt`,"-saltstack":`folder-salt`,"-sample":`folder-examples`,"-sample-data":`folder-examples`,"-samples":`folder-examples`,"-sandbox":`folder-sandbox`,"-sandboxes":`folder-sandbox`,"-sass":`folder-sass`,"-scala":`folder-scala`,"-schema":`folder-class`,"-schemas":`folder-class`,"-sconf_temp":`folder-scons`,"-scons":`folder-scons`,"-scons_cache":`folder-scons`,"-screen":`folder-views`,"-screengrab":`folder-images`,"-screengrabs":`folder-images`,"-screens":`folder-views`,"-screenshot":`folder-images`,"-screenshots":`folder-images`,"-script":`folder-scripts`,"-scripting":`folder-scripts`,"-scripts":`folder-scripts`,"-scss":`folder-sass`,"-secret":`folder-keys`,"-secrets":`folder-keys`,"-secure":`folder-secure`,"-security":`folder-secure`,"-seed":`folder-seeders`,"-seeders":`folder-seeders`,"-seeding":`folder-seeders`,"-seeds":`folder-seeders`,"-server":`folder-server`,"-serverless":`folder-serverless`,"-serverpackages":`folder-packages`,"-servers":`folder-server`,"-service":`folder-controller`,"-services":`folder-controller`,"-setting":`folder-config`,"-settings":`folder-config`,"-shader":`folder-shader`,"-shaders":`folder-shader`,"-shared":`folder-shared`,"-shop":`folder-cart`,"-shopping":`folder-cart`,"-shopping-cart":`folder-cart`,"-sim":`folder-simulations`,"-sims":`folder-simulations`,"-simulation":`folder-simulations`,"-simulations":`folder-simulations`,"-site":`folder-public`,"-sketch":`folder-mock`,"-sketches":`folder-mock`,"-skill":`folder-skills`,"-skills":`folder-skills`,"-smtp":`folder-mail`,"-snap":`folder-snapcraft`,"-snapcraft":`folder-snapcraft`,"-snapshots":`folder-test`,"-snippet":`folder-snippet`,"-snippets":`folder-snippet`,"-song":`folder-audio`,"-songs":`folder-audio`,"-sound":`folder-audio`,"-sounds":`folder-audio`,"-source":`folder-src`,"-sources":`folder-src`,"-spa":`folder-client`,"-spec":`folder-test`,"-specs":`folder-test`,"-spellcheck":`folder-syntax`,"-spellcheckers":`folder-syntax`,"-sql":`folder-database`,"-src":`folder-src`,"-src-tauri":`folder-src-tauri`,"-srcs":`folder-src`,"-ssl":`folder-secure`,"-stack":`folder-stack`,"-stacks":`folder-stack`,"-start":`folder-home`,"-static":`folder-resource`,"-stencil":`folder-stencil`,"-store":`folder-store`,"-stores":`folder-store`,"-stories":`folder-storybook`,"-storybook":`folder-storybook`,"-style":`folder-css`,"-styles":`folder-css`,"-stylesheet":`folder-css`,"-stylesheets":`folder-css`,"-stylus":`folder-stylus`,"-sublime":`folder-sublime`,"-submodules":`folder-git`,"-supabase":`folder-supabase`,"-svelte":`folder-svelte`,"-svelte-kit":`folder-svelte`,"-svg":`folder-svg`,"-svgs":`folder-svg`,"-switch":`folder-console`,"-syntax":`folder-syntax`,"-syntaxes":`folder-syntax`,"-table-of-contents":`folder-toc`,"-target":`folder-target`,"-taskfile":`folder-taskfile`,"-taskfiles":`folder-taskfile`,"-tasks":`folder-tasks`,"-television":`folder-television`,"-temp":`folder-temp`,"-template":`folder-template`,"-templates":`folder-template`,"-terraform":`folder-terraform`,"-test":`folder-test`,"-testfiles":`folder-test`,"-testing":`folder-test`,"-tests":`folder-test`,"-texture":`folder-images`,"-textures":`folder-images`,"-theme":`folder-theme`,"-themes":`folder-theme`,"-third-party":`folder-lib`,"-thirdparty":`folder-lib`,"-tickets":`folder-tasks`,"-tls":`folder-secure`,"-tmp":`folder-temp`,"-toc":`folder-toc`,"-token":`folder-keys`,"-tokens":`folder-keys`,"-toolbox":`folder-tools`,"-toolboxes":`folder-tools`,"-tooling":`folder-tools`,"-toolkit":`folder-tools`,"-toolkits":`folder-tools`,"-tools":`folder-tools`,"-torch":`folder-pytorch`,"-transition":`folder-animation`,"-transitions":`folder-animation`,"-translate":`folder-i18n`,"-translation":`folder-i18n`,"-translations":`folder-i18n`,"-trash":`folder-trash`,"-trigger":`folder-trigger`,"-triggers":`folder-trigger`,"-ts":`folder-typescript`,"-turbo":`folder-turborepo`,"-tv":`folder-television`,"-tx":`folder-i18n`,"-typeface":`folder-font`,"-typefaces":`folder-font`,"-types":`folder-typescript`,"-typescript":`folder-typescript`,"-typings":`folder-typescript`,"-ubuntu":`folder-linux`,"-ui":`folder-ui`,"-unity":`folder-unity`,"-unix":`folder-linux`,"-update":`folder-update`,"-updates":`folder-update`,"-upgrade":`folder-update`,"-upgrades":`folder-update`,"-upload":`folder-upload`,"-uploads":`folder-upload`,"-util":`folder-utils`,"-utilities":`folder-utils`,"-utility":`folder-utils`,"-utils":`folder-utils`,"-ux":`folder-ui`,"-validation":`folder-rules`,"-validations":`folder-rules`,"-validator":`folder-rules`,"-validators":`folder-rules`,"-vector":`folder-svg`,"-vectors":`folder-svg`,"-vendor":`folder-lib`,"-vendors":`folder-lib`,"-venv":`folder-environment`,"-vercel":`folder-vercel`,"-verdaccio":`folder-verdaccio`,"-vid":`folder-video`,"-video":`folder-video`,"-videos":`folder-video`,"-vids":`folder-video`,"-view":`folder-views`,"-views":`folder-views`,"-vm":`folder-vm`,"-vms":`folder-vm`,"-voice":`folder-audio`,"-voices":`folder-audio`,"-vscode":`folder-vscode`,"-vscode-test":`folder-vscode`,"-vue":`folder-vue`,"-vuepress":`folder-vuepress`,"-wakatime":`folder-wakatime`,"-web":`folder-public`,"-webpack":`folder-webpack`,"-website":`folder-public`,"-websites":`folder-public`,"-widget":`folder-components`,"-widgets":`folder-components`,"-wiki":`folder-docs`,"-win":`folder-windows`,"-win10":`folder-windows`,"-win11":`folder-windows`,"-win32":`folder-windows`,"-windows":`folder-windows`,"-windows10":`folder-windows`,"-windows11":`folder-windows`,"-windowsnt":`folder-windows`,"-windowsxp":`folder-windows`,"-winnt":`folder-windows`,"-winxp":`folder-windows`,"-wordpress-org":`folder-wordpress`,"-wp-content":`folder-wordpress`,"-wsl":`folder-linux`,"-www":`folder-public`,"-wwwroot":`folder-public`,"-xbox":`folder-console`,"-xtask":`folder-scripts`,"-yarn":`folder-yarn`,"-zeabur":`folder-zeabur`,"-zed":`folder-zed`,".@types":`folder-typescript`,".addin":`folder-plugin`,".addins":`folder-plugin`,".addon":`folder-plugin`,".addons":`folder-plugin`,".admin":`folder-admin`,".admins":`folder-admin`,".agent":`folder-robot`,".agents":`folder-robot`,".android":`folder-android`,".angular":`folder-angular`,".anim":`folder-animation`,".animated":`folder-animation`,".animation":`folder-animation`,".animations":`folder-animation`,".anims":`folder-animation`,".ansible":`folder-ansible`,".api":`folder-api`,".apis":`folder-api`,".apollo":`folder-apollo`,".apollo-cache":`folder-apollo`,".apollo-client":`folder-apollo`,".apollo-config":`folder-apollo`,".app":`folder-app`,".apple":`folder-macos`,".application":`folder-app`,".applications":`folder-app`,".apps":`folder-app`,".appwrite":`folder-appwrite`,".arc":`folder-archive`,".archival":`folder-archive`,".archive":`folder-archive`,".archives":`folder-archive`,".arcs":`folder-archive`,".article":`folder-docs`,".articles":`folder-docs`,".asm":`folder-assembly`,".assembly":`folder-assembly`,".asset":`folder-resource`,".assets":`folder-resource`,".astro":`folder-astro`,".atom":`folder-atom`,".atoms":`folder-atom`,".attachment":`folder-attachment`,".attachments":`folder-attachment`,".aud":`folder-audio`,".audio":`folder-audio`,".audios":`folder-audio`,".auds":`folder-audio`,".aurelia_project":`folder-aurelia`,".auth":`folder-secure`,".authentication":`folder-secure`,".auto":`folder-generator`,".aws":`folder-aws`,".azure":`folder-aws`,".azure-pipelines":`folder-azure-pipelines`,".azure-pipelines-ci":`folder-azure-pipelines`,".back-up":`folder-backup`,".back-ups":`folder-backup`,".backend":`folder-server`,".backends":`folder-server`,".backup":`folder-backup`,".backups":`folder-backup`,".bak":`folder-backup`,".baks":`folder-backup`,".base":`folder-base`,".bases":`folder-base`,".batch":`folder-batch`,".batches":`folder-batch`,".batchs":`folder-batch`,".bench":`folder-benchmark`,".benches":`folder-benchmark`,".benchmark":`folder-benchmark`,".benchmarks":`folder-benchmark`,".bibliographies":`folder-bibliography`,".bibliography":`folder-bibliography`,".bicep":`folder-bicep`,".bin":`folder-dist`,".bkp":`folder-backup`,".bkps":`folder-backup`,".blender":`folder-blender`,".blender-assets":`folder-blender`,".blender-files":`folder-blender`,".blender-models":`folder-blender`,".blender-project":`folder-blender`,".bloc":`folder-bloc`,".blocs":`folder-bloc`,".blog":`folder-docs`,".book":`folder-bibliography`,".books":`folder-bibliography`,".bot":`folder-robot`,".bots":`folder-robot`,".bower_components":`folder-bower`,".browser":`folder-public`,".browsers":`folder-public`,".build":`folder-dist`,".buildkite":`folder-buildkite`,".builds":`folder-dist`,".built":`folder-dist`,".bull":`folder-queue`,".cache":`folder-temp`,".cached":`folder-temp`,".calc":`folder-functions`,".calcs":`folder-functions`,".calculation":`folder-functions`,".calculations":`folder-functions`,".cargo":`folder-rust`,".cart":`folder-cart`,".centos":`folder-linux`,".cert":`folder-secure`,".certificate":`folder-secure`,".certificates":`folder-secure`,".certs":`folder-secure`,".cfg":`folder-config`,".cfgs":`folder-config`,".cfn-gen":`folder-generator`,".changes":`folder-delta`,".changeset":`folder-changesets`,".changesets":`folder-changesets`,".chat":`folder-messages`,".chats":`folder-messages`,".ci":`folder-ci`,".cipher":`folder-secure`,".circleci":`folder-circleci`,".cjs":`folder-javascript`,".class":`folder-class`,".classes":`folder-class`,".claude":`folder-claude`,".cli":`folder-command`,".client":`folder-client`,".clients":`folder-client`,".cline_docs":`folder-cline`,".clis":`folder-command`,".cloud-firestore":`folder-firestore`,".cloud-functions":`folder-cloud-functions`,".cloudflare":`folder-cloudflare`,".cloudfunctions":`folder-cloud-functions`,".cluster":`folder-cluster`,".clusters":`folder-cluster`,".cmd":`folder-command`,".cobol":`folder-cobol`,".code":`folder-src`,".color":`folder-theme`,".colors":`folder-theme`,".colour":`folder-theme`,".colours":`folder-theme`,".command":`folder-command`,".commandline":`folder-command`,".commands":`folder-command`,".common":`folder-shared`,".compiled":`folder-dist`,".components":`folder-components`,".composable":`folder-functions`,".composables":`folder-functions`,".concept":`folder-mock`,".concepts":`folder-mock`,".conf":`folder-config`,".config":`folder-config`,".configs":`folder-config`,".configuration":`folder-config`,".configurations":`folder-config`,".confs":`folder-config`,".connection":`folder-connection`,".connections":`folder-connection`,".console":`folder-console`,".const":`folder-constant`,".constant":`folder-constant`,".constants":`folder-constant`,".consts":`folder-constant`,".container":`folder-container`,".containers":`folder-container`,".content":`folder-content`,".contents":`folder-content`,".context":`folder-context`,".contexts":`folder-context`,".contract":`folder-contract`,".contract-test":`folder-contract`,".contract-testing":`folder-contract`,".contract-tests":`folder-contract`,".contracts":`folder-contract`,".controller":`folder-controller`,".controllers":`folder-controller`,".controls":`folder-controller`,".conversation":`folder-messages`,".conversations":`folder-messages`,".core":`folder-core`,".coverage":`folder-coverage`,".crash":`folder-error`,".crashes":`folder-error`,".crates":`folder-lib`,".css":`folder-css`,".cts":`folder-typescript`,".cubit":`folder-bloc`,".cubits":`folder-bloc`,".cue":`folder-cue`,".cues":`folder-cue`,".cursor":`folder-cursor`,".custom":`folder-custom`,".customs":`folder-custom`,".cypher":`folder-secure`,".cypress":`folder-cypress`,".dal":`folder-dal`,".dart":`folder-dart`,".dart_tool":`folder-dart`,".dart_tools":`folder-dart`,".data":`folder-database`,".data-access":`folder-dal`,".data-access-layer":`folder-dal`,".database":`folder-database`,".databases":`folder-database`,".db":`folder-database`,".deb":`folder-linux`,".debian":`folder-linux`,".debug":`folder-debug`,".debugger":`folder-debug`,".debugging":`folder-debug`,".decorator":`folder-decorators`,".decorators":`folder-decorators`,".deepin":`folder-linux`,".delta":`folder-delta`,".deltas":`folder-delta`,".demo":`folder-examples`,".demos":`folder-examples`,".dependencies":`folder-packages`,".design":`folder-theme`,".designs":`folder-theme`,".desktop":`folder-desktop`,".devcontainer":`folder-container`,".devpackages":`folder-packages`,".devtools":`folder-tools`,".dialog":`folder-messages`,".dialogs":`folder-messages`,".diary":`folder-docs`,".directive":`folder-directive`,".directives":`folder-directive`,".display":`folder-desktop`,".dist":`folder-dist`,".distribution":`folder-dist`,".doc":`folder-docs`,".docker":`folder-docker`,".dockerfiles":`folder-docker`,".dockerhub":`folder-docker`,".docs":`folder-docs`,".document":`folder-docs`,".documentation":`folder-docs`,".documents":`folder-docs`,".download":`folder-download`,".downloader":`folder-download`,".downloaders":`folder-download`,".downloads":`folder-download`,".draft":`folder-mock`,".drafts":`folder-mock`,".drizzle":`folder-drizzle`,".ds_store":`folder-macos`,".dump":`folder-dump`,".dumps":`folder-dump`,".e2e":`folder-coverage`,".easing":`folder-animation`,".easings":`folder-animation`,".element":`folder-element`,".elements":`folder-element`,".email":`folder-mail`,".emails":`folder-mail`,".enum":`folder-enum`,".enums":`folder-enum`,".env":`folder-environment`,".environment":`folder-environment`,".environments":`folder-environment`,".envs":`folder-environment`,".err":`folder-error`,".error":`folder-error`,".errors":`folder-error`,".errs":`folder-error`,".eslint":`folder-eslint`,".eslint-config":`folder-eslint`,".eslint-configs":`folder-eslint`,".eslint-plugin":`folder-eslint`,".eslint-plugins":`folder-eslint`,".etc":`folder-other`,".event":`folder-event`,".events":`folder-event`,".example":`folder-examples`,".examples":`folder-examples`,".expo":`folder-expo`,".expo-shared":`folder-expo`,".export":`folder-export`,".exported":`folder-export`,".exports":`folder-export`,".extension":`folder-plugin`,".extensions":`folder-plugin`,".external":`folder-lib`,".externals":`folder-lib`,".extra":`folder-other`,".extras":`folder-other`,".fastlane":`folder-fastlane`,".favicon":`folder-favicon`,".favicons":`folder-favicon`,".feat":`folder-features`,".feats":`folder-features`,".feature":`folder-features`,".features":`folder-features`,".fig":`folder-images`,".figs":`folder-images`,".figure":`folder-images`,".figures":`folder-images`,".filter":`folder-filter`,".filters":`folder-filter`,".firebase":`folder-firebase`,".firebase-cloud-functions":`folder-cloud-functions`,".firebase-cloudfunctions":`folder-cloud-functions`,".firebase-firestore":`folder-firestore`,".firestore":`folder-firestore`,".fixture":`folder-mock`,".fixtures":`folder-mock`,".flow-typed":`folder-flow`,".flutter":`folder-flutter`,".font":`folder-font`,".fonts":`folder-font`,".forgejo":`folder-forgejo`,".form":`folder-form`,".forms":`folder-form`,".forum":`folder-messages`,".fragments":`folder-components`,".frontend":`folder-client`,".frontends":`folder-client`,".func":`folder-functions`,".funcs":`folder-functions`,".function":`folder-functions`,".functions":`folder-functions`,".game":`folder-console`,".gamemaker":`folder-gamemaker`,".gamemaker2":`folder-gamemaker`,".games":`folder-console`,".gcp":`folder-aws`,".gemini":`folder-gemini-ai`,".gemini-ai":`folder-gemini-ai`,".geminiai":`folder-gemini-ai`,".gen":`folder-generator`,".generated":`folder-generator`,".generator":`folder-generator`,".generators":`folder-generator`,".gens":`folder-generator`,".git":`folder-git`,".gitea":`folder-gitea`,".githooks":`folder-git`,".github":`folder-github`,".github/issue_template":`folder-template`,".github/pull_request_template":`folder-template`,".github/workflows":`folder-gh-workflows`,".gitlab":`folder-gitlab`,".global":`folder-global`,".glsl":`folder-shader`,".go":`folder-go`,".godot":`folder-godot`,".godot-cpp":`folder-godot`,".golang":`folder-go`,".gql":`folder-graphql`,".gradle":`folder-gradle`,".graphql":`folder-graphql`,".guard":`folder-guard`,".guards":`folder-guard`,".gui":`folder-ui`,".gulp":`folder-gulp`,".gulp-tasks":`folder-gulp`,".gulpfile.babel.js":`folder-gulp`,".gulpfile.js":`folder-gulp`,".gulpfile.mjs":`folder-gulp`,".gulpfile.ts":`folder-gulp`,".gulpfiles":`folder-gulp`,".handler":`folder-controller`,".handlers":`folder-controller`,".helm":`folder-helm`,".helmchart":`folder-helm`,".helmcharts":`folder-helm`,".helper":`folder-helper`,".helpers":`folder-helper`,".hg":`folder-mercurial`,".hgext":`folder-mercurial`,".hghooks":`folder-mercurial`,".histories":`folder-backup`,".history":`folder-backup`,".hlsl":`folder-shader`,".home":`folder-home`,".hook":`folder-hook`,".hooks":`folder-hook`,".html":`folder-views`,".husky":`folder-husky`,".i18n":`folder-i18n`,".ico":`folder-images`,".icon":`folder-images`,".icons":`folder-images`,".icos":`folder-images`,".idea":`folder-intellij`,".image":`folder-images`,".images":`folder-images`,".img":`folder-images`,".imgs":`folder-images`,".import":`folder-import`,".imported":`folder-import`,".imports":`folder-import`,".in":`folder-input`,".inc":`folder-include`,".inc64":`folder-include`,".include":`folder-include`,".includes":`folder-include`,".infra":`folder-server`,".infrastructure":`folder-server`,".input":`folder-input`,".inputs":`folder-input`,".integration":`folder-connection`,".integration-test":`folder-coverage`,".integration-tests":`folder-coverage`,".integrations":`folder-connection`,".interceptor":`folder-interceptor`,".interceptors":`folder-interceptor`,".interface":`folder-interface`,".interfaces":`folder-interface`,".internationalization":`folder-i18n`,".inventories":`folder-server`,".inventory":`folder-server`,".io":`folder-input`,".ios":`folder-ios`,".ipad":`folder-macos`,".iphone":`folder-macos`,".ipod":`folder-macos`,".ipynb":`folder-jupyter`,".it":`folder-coverage`,".j2":`folder-jinja`,".java":`folder-java`,".javascript":`folder-javascript`,".javascripts":`folder-javascript`,".jinja":`folder-jinja`,".jinja2":`folder-jinja`,".job":`folder-job`,".jobs":`folder-job`,".js":`folder-javascript`,".json":`folder-json`,".jsonc":`folder-json`,".jsonl":`folder-json`,".jsons":`folder-json`,".jupyter":`folder-jupyter`,".jwt":`folder-keys`,".k8s":`folder-kubernetes`,".key":`folder-keys`,".keys":`folder-keys`,".kit":`folder-tools`,".kits":`folder-tools`,".knowledge":`folder-docs`,".kotlin":`folder-kotlin`,".kql":`folder-kusto`,".kubernetes":`folder-kubernetes`,".kusto":`folder-kusto`,".l10n":`folder-i18n`,".lambda":`folder-functions`,".lambdas":`folder-functions`,".landing":`folder-home`,".lang":`folder-i18n`,".langs":`folder-i18n`,".language":`folder-i18n`,".languages":`folder-i18n`,".layout":`folder-layout`,".layouts":`folder-layout`,".lefthook":`folder-lefthook`,".lefthook-local":`folder-lefthook`,".less":`folder-less`,".lib":`folder-lib`,".lib64":`folder-lib`,".libraries":`folder-lib`,".library":`folder-lib`,".libs":`folder-lib`,".license":`folder-license`,".licenses":`folder-license`,".link":`folder-link`,".links":`folder-link`,".linux":`folder-linux`,".linuxbsd":`folder-linux`,".liquibase":`folder-liquibase`,".locale":`folder-i18n`,".locales":`folder-i18n`,".localization":`folder-i18n`,".log":`folder-log`,".logging":`folder-log`,".logic":`folder-functions`,".logs":`folder-log`,".lottie":`folder-lottie`,".lottiefiles":`folder-lottie`,".lotties":`folder-lottie`,".lua":`folder-lua`,".luau":`folder-luau`,".mac":`folder-macos`,".macbook":`folder-macos`,".macbook-air":`folder-macos`,".macos":`folder-macos`,".macosx":`folder-macos`,".mail":`folder-mail`,".mailers":`folder-mail`,".mails":`folder-mail`,".main":`folder-home`,".manager":`folder-admin`,".managers":`folder-admin`,".mapping":`folder-mappings`,".mappings":`folder-mappings`,".markdown":`folder-markdown`,".math":`folder-functions`,".maths":`folder-functions`,".md":`folder-markdown`,".measure":`folder-benchmark`,".measurement":`folder-benchmark`,".measures":`folder-benchmark`,".media":`folder-video`,".messages":`folder-messages`,".messaging":`folder-messages`,".meta":`folder-meta`,".meta-inf":`folder-config`,".metadata":`folder-meta`,".metro":`folder-metro`,".middleware":`folder-middleware`,".middlewares":`folder-middleware`,".migration":`folder-migrations`,".migrations":`folder-migrations`,".mint":`folder-linux`,".misc":`folder-other`,".miscellaneous":`folder-other`,".mjml":`folder-mjml`,".mjs":`folder-javascript`,".mobile":`folder-mobile`,".mobiles":`folder-mobile`,".mock":`folder-mock`,".mocks":`folder-mock`,".mod":`folder-plugin`,".modding":`folder-plugin`,".model":`folder-class`,".models":`folder-class`,".moderator":`folder-admin`,".moderators":`folder-admin`,".mods":`folder-plugin`,".module":`folder-plugin`,".modules":`folder-plugin`,".mojo":`folder-mojo`,".molecule":`folder-molecule`,".molecules":`folder-molecule`,".moon":`folder-moon`,".motion":`folder-animation`,".motions":`folder-animation`,".movie":`folder-video`,".movies":`folder-video`,".mq":`folder-queue`,".mts":`folder-typescript`,".music":`folder-audio`,".navigation":`folder-routes`,".navigations":`folder-routes`,".netlify":`folder-netlify`,".news":`folder-docs`,".next":`folder-next`,".nginx":`folder-nginx`,".node":`folder-node`,".node_modules":`folder-node`,".nodejs":`folder-node`,".note":`folder-docs`,".notebook":`folder-jupyter`,".notebooks":`folder-jupyter`,".notes":`folder-docs`,".now":`folder-vercel`,".nuxt":`folder-nuxt`,".nyc-output":`folder-coverage`,".nyc_output":`folder-coverage`,".obsidian":`folder-obsidian`,".opencode":`folder-opencode`,".option":`folder-config`,".options":`folder-config`,".organism":`folder-organism`,".organisms":`folder-organism`,".osx":`folder-macos`,".other":`folder-other`,".others":`folder-other`,".out":`folder-dist`,".output":`folder-dist`,".outputs":`folder-dist`,".package":`folder-packages`,".packages":`folder-packages`,".pact":`folder-contract`,".pacts":`folder-contract`,".page":`folder-views`,".pages":`folder-views`,".palette":`folder-theme`,".palettes":`folder-theme`,".partial":`folder-include`,".partials":`folder-include`,".patches":`folder-git`,".pdf":`folder-pdf`,".pdfs":`folder-pdf`,".pdm-build":`folder-pdm`,".pdm-plugins":`folder-pdm`,".perf":`folder-benchmark`,".performance":`folder-benchmark`,".phone":`folder-mobile`,".phones":`folder-mobile`,".photo":`folder-images`,".photograph":`folder-images`,".photographs":`folder-images`,".photos":`folder-images`,".php":`folder-php`,".phpmailer":`folder-phpmailer`,".pic":`folder-images`,".pics":`folder-images`,".picture":`folder-images`,".pictures":`folder-images`,".pipe":`folder-pipe`,".pipeline":`folder-pipe`,".pipelines":`folder-pipe`,".pipes":`folder-pipe`,".pkg":`folder-packages`,".pkgs":`folder-packages`,".plastic":`folder-plastic`,".playground":`folder-sandbox`,".playgrounds":`folder-sandbox`,".playlist":`folder-audio`,".playlists":`folder-audio`,".plugin":`folder-plugin`,".plugins":`folder-plugin`,".policies":`folder-policy`,".policy":`folder-policy`,".popos":`folder-linux`,".portability":`folder-mobile`,".portable":`folder-mobile`,".post":`folder-docs`,".postman":`folder-postman`,".posts":`folder-docs`,".powershell":`folder-powershell`,".pref":`folder-config`,".preference":`folder-config`,".preferences":`folder-config`,".prefs":`folder-config`,".presentation":`folder-ui`,".preview":`folder-review`,".previews":`folder-review`,".prisma":`folder-prisma`,".prisma/schema":`folder-prisma`,".private":`folder-private`,".profiling":`folder-benchmark`,".proj":`folder-project`,".project":`folder-project`,".projects":`folder-project`,".projs":`folder-project`,".prompt":`folder-prompts`,".prompts":`folder-prompts`,".properties":`folder-config`,".props":`folder-config`,".proto":`folder-proto`,".protobuf":`folder-proto`,".protobufs":`folder-proto`,".protos":`folder-proto`,".provider":`folder-controller`,".providers":`folder-controller`,".proxy":`folder-public`,".ps":`folder-powershell`,".ps1":`folder-powershell`,".ps4":`folder-console`,".ps5":`folder-console`,".public":`folder-public`,".public_html":`folder-views`,".pwa":`folder-client`,".pycache":`folder-python`,".pytest_cache":`folder-python`,".python":`folder-python`,".pytorch":`folder-pytorch`,".quasar":`folder-quasar`,".queue":`folder-queue`,".queues":`folder-queue`,".r":`folder-r`,".recordings":`folder-audio`,".release":`folder-dist`,".remote":`folder-connection`,".remotes":`folder-connection`,".repo":`folder-repository`,".report":`folder-resource`,".reports":`folder-resource`,".repos":`folder-repository`,".repositories":`folder-repository`,".repository":`folder-repository`,".res":`folder-resource`,".resolver":`folder-resolver`,".resolvers":`folder-resolver`,".resource":`folder-resource`,".resources":`folder-resource`,".restapi":`folder-api`,".review":`folder-review`,".reviewed":`folder-review`,".reviews":`folder-review`,".revisal":`folder-review`,".revisals":`folder-review`,".robot":`folder-robot`,".robots":`folder-robot`,".router":`folder-routes`,".routers":`folder-routes`,".routes":`folder-routes`,".routing":`folder-routes`,".rule":`folder-rules`,".rules":`folder-rules`,".rust":`folder-rust`,".salt":`folder-salt`,".saltstack":`folder-salt`,".sample":`folder-examples`,".sample-data":`folder-examples`,".samples":`folder-examples`,".sandbox":`folder-sandbox`,".sandboxes":`folder-sandbox`,".sass":`folder-sass`,".scala":`folder-scala`,".schema":`folder-class`,".schemas":`folder-class`,".sconf_temp":`folder-scons`,".scons":`folder-scons`,".scons_cache":`folder-scons`,".screen":`folder-views`,".screengrab":`folder-images`,".screengrabs":`folder-images`,".screens":`folder-views`,".screenshot":`folder-images`,".screenshots":`folder-images`,".script":`folder-scripts`,".scripting":`folder-scripts`,".scripts":`folder-scripts`,".scss":`folder-sass`,".secret":`folder-keys`,".secrets":`folder-keys`,".secure":`folder-secure`,".security":`folder-secure`,".seed":`folder-seeders`,".seeders":`folder-seeders`,".seeding":`folder-seeders`,".seeds":`folder-seeders`,".server":`folder-server`,".serverless":`folder-serverless`,".serverpackages":`folder-packages`,".servers":`folder-server`,".service":`folder-controller`,".services":`folder-controller`,".setting":`folder-config`,".settings":`folder-config`,".shader":`folder-shader`,".shaders":`folder-shader`,".shared":`folder-shared`,".shop":`folder-cart`,".shopping":`folder-cart`,".shopping-cart":`folder-cart`,".sim":`folder-simulations`,".sims":`folder-simulations`,".simulation":`folder-simulations`,".simulations":`folder-simulations`,".site":`folder-public`,".sketch":`folder-mock`,".sketches":`folder-mock`,".skill":`folder-skills`,".skills":`folder-skills`,".smtp":`folder-mail`,".snap":`folder-snapcraft`,".snapcraft":`folder-snapcraft`,".snapshots":`folder-test`,".snippet":`folder-snippet`,".snippets":`folder-snippet`,".song":`folder-audio`,".songs":`folder-audio`,".sound":`folder-audio`,".sounds":`folder-audio`,".source":`folder-src`,".sources":`folder-src`,".spa":`folder-client`,".spec":`folder-test`,".specs":`folder-test`,".spellcheck":`folder-syntax`,".spellcheckers":`folder-syntax`,".sql":`folder-database`,".src":`folder-src`,".src-tauri":`folder-src-tauri`,".srcs":`folder-src`,".ssl":`folder-secure`,".stack":`folder-stack`,".stacks":`folder-stack`,".start":`folder-home`,".static":`folder-resource`,".stencil":`folder-stencil`,".store":`folder-store`,".stores":`folder-store`,".stories":`folder-storybook`,".storybook":`folder-storybook`,".style":`folder-css`,".styles":`folder-css`,".stylesheet":`folder-css`,".stylesheets":`folder-css`,".stylus":`folder-stylus`,".sublime":`folder-sublime`,".submodules":`folder-git`,".supabase":`folder-supabase`,".svelte":`folder-svelte`,".svelte-kit":`folder-svelte`,".svg":`folder-svg`,".svgs":`folder-svg`,".switch":`folder-console`,".syntax":`folder-syntax`,".syntaxes":`folder-syntax`,".table-of-contents":`folder-toc`,".target":`folder-target`,".taskfile":`folder-taskfile`,".taskfiles":`folder-taskfile`,".tasks":`folder-tasks`,".television":`folder-television`,".temp":`folder-temp`,".template":`folder-template`,".templates":`folder-template`,".terraform":`folder-terraform`,".test":`folder-test`,".testfiles":`folder-test`,".testing":`folder-test`,".tests":`folder-test`,".texture":`folder-images`,".textures":`folder-images`,".theme":`folder-theme`,".themes":`folder-theme`,".third-party":`folder-lib`,".thirdparty":`folder-lib`,".tickets":`folder-tasks`,".tls":`folder-secure`,".tmp":`folder-temp`,".toc":`folder-toc`,".token":`folder-keys`,".tokens":`folder-keys`,".toolbox":`folder-tools`,".toolboxes":`folder-tools`,".tooling":`folder-tools`,".toolkit":`folder-tools`,".toolkits":`folder-tools`,".tools":`folder-tools`,".torch":`folder-pytorch`,".transition":`folder-animation`,".transitions":`folder-animation`,".translate":`folder-i18n`,".translation":`folder-i18n`,".translations":`folder-i18n`,".trash":`folder-trash`,".trigger":`folder-trigger`,".triggers":`folder-trigger`,".ts":`folder-typescript`,".turbo":`folder-turborepo`,".tv":`folder-television`,".tx":`folder-i18n`,".typeface":`folder-font`,".typefaces":`folder-font`,".types":`folder-typescript`,".typescript":`folder-typescript`,".typings":`folder-typescript`,".ubuntu":`folder-linux`,".ui":`folder-ui`,".unity":`folder-unity`,".unix":`folder-linux`,".update":`folder-update`,".updates":`folder-update`,".upgrade":`folder-update`,".upgrades":`folder-update`,".upload":`folder-upload`,".uploads":`folder-upload`,".util":`folder-utils`,".utilities":`folder-utils`,".utility":`folder-utils`,".utils":`folder-utils`,".ux":`folder-ui`,".validation":`folder-rules`,".validations":`folder-rules`,".validator":`folder-rules`,".validators":`folder-rules`,".vector":`folder-svg`,".vectors":`folder-svg`,".vendor":`folder-lib`,".vendors":`folder-lib`,".venv":`folder-environment`,".vercel":`folder-vercel`,".verdaccio":`folder-verdaccio`,".vid":`folder-video`,".video":`folder-video`,".videos":`folder-video`,".vids":`folder-video`,".view":`folder-views`,".views":`folder-views`,".vm":`folder-vm`,".vms":`folder-vm`,".voice":`folder-audio`,".voices":`folder-audio`,".vscode":`folder-vscode`,".vscode-test":`folder-vscode`,".vue":`folder-vue`,".vuepress":`folder-vuepress`,".wakatime":`folder-wakatime`,".web":`folder-public`,".webpack":`folder-webpack`,".website":`folder-public`,".websites":`folder-public`,".widget":`folder-components`,".widgets":`folder-components`,".wiki":`folder-docs`,".win":`folder-windows`,".win10":`folder-windows`,".win11":`folder-windows`,".win32":`folder-windows`,".windows":`folder-windows`,".windows10":`folder-windows`,".windows11":`folder-windows`,".windowsnt":`folder-windows`,".windowsxp":`folder-windows`,".winnt":`folder-windows`,".winxp":`folder-windows`,".wordpress-org":`folder-wordpress`,".wp-content":`folder-wordpress`,".wsl":`folder-linux`,".www":`folder-public`,".wwwroot":`folder-public`,".xbox":`folder-console`,".xtask":`folder-scripts`,".yarn":`folder-yarn`,".zeabur":`folder-zeabur`,".zed":`folder-zed`,"@types":`folder-typescript`,"_@types":`folder-typescript`,"__@types__":`folder-typescript`,__addin__:`folder-plugin`,__addins__:`folder-plugin`,__addon__:`folder-plugin`,__addons__:`folder-plugin`,__admin__:`folder-admin`,__admins__:`folder-admin`,__agent__:`folder-robot`,__agents__:`folder-robot`,__android__:`folder-android`,__angular__:`folder-angular`,__anim__:`folder-animation`,__animated__:`folder-animation`,__animation__:`folder-animation`,__animations__:`folder-animation`,__anims__:`folder-animation`,__ansible__:`folder-ansible`,__api__:`folder-api`,__apis__:`folder-api`,"__apollo-cache__":`folder-apollo`,"__apollo-client__":`folder-apollo`,"__apollo-config__":`folder-apollo`,__apollo__:`folder-apollo`,__app__:`folder-app`,__apple__:`folder-macos`,__application__:`folder-app`,__applications__:`folder-app`,__apps__:`folder-app`,__appwrite__:`folder-appwrite`,__arc__:`folder-archive`,__archival__:`folder-archive`,__archive__:`folder-archive`,__archives__:`folder-archive`,__arcs__:`folder-archive`,__article__:`folder-docs`,__articles__:`folder-docs`,__asm__:`folder-assembly`,__assembly__:`folder-assembly`,__asset__:`folder-resource`,__assets__:`folder-resource`,__astro__:`folder-astro`,__atom__:`folder-atom`,__atoms__:`folder-atom`,__attachment__:`folder-attachment`,__attachments__:`folder-attachment`,__aud__:`folder-audio`,__audio__:`folder-audio`,__audios__:`folder-audio`,__auds__:`folder-audio`,__aurelia_project__:`folder-aurelia`,__auth__:`folder-secure`,__authentication__:`folder-secure`,__auto__:`folder-generator`,__aws__:`folder-aws`,"__azure-pipelines-ci__":`folder-azure-pipelines`,"__azure-pipelines__":`folder-azure-pipelines`,__azure__:`folder-aws`,"__back-up__":`folder-backup`,"__back-ups__":`folder-backup`,__backend__:`folder-server`,__backends__:`folder-server`,__backup__:`folder-backup`,__backups__:`folder-backup`,__bak__:`folder-backup`,__baks__:`folder-backup`,__base__:`folder-base`,__bases__:`folder-base`,__batch__:`folder-batch`,__batches__:`folder-batch`,__batchs__:`folder-batch`,__bench__:`folder-benchmark`,__benches__:`folder-benchmark`,__benchmark__:`folder-benchmark`,__benchmarks__:`folder-benchmark`,__bibliographies__:`folder-bibliography`,__bibliography__:`folder-bibliography`,__bicep__:`folder-bicep`,__bin__:`folder-dist`,__bkp__:`folder-backup`,__bkps__:`folder-backup`,"__blender-assets__":`folder-blender`,"__blender-files__":`folder-blender`,"__blender-models__":`folder-blender`,"__blender-project__":`folder-blender`,__blender__:`folder-blender`,__bloc__:`folder-bloc`,__blocs__:`folder-bloc`,__blog__:`folder-docs`,__book__:`folder-bibliography`,__books__:`folder-bibliography`,__bot__:`folder-robot`,__bots__:`folder-robot`,__bower_components__:`folder-bower`,__browser__:`folder-public`,__browsers__:`folder-public`,__build__:`folder-dist`,__buildkite__:`folder-buildkite`,__builds__:`folder-dist`,__built__:`folder-dist`,__bull__:`folder-queue`,__cache__:`folder-temp`,__cached__:`folder-temp`,__calc__:`folder-functions`,__calcs__:`folder-functions`,__calculation__:`folder-functions`,__calculations__:`folder-functions`,__cargo__:`folder-rust`,__cart__:`folder-cart`,__centos__:`folder-linux`,__cert__:`folder-secure`,__certificate__:`folder-secure`,__certificates__:`folder-secure`,__certs__:`folder-secure`,__cfg__:`folder-config`,__cfgs__:`folder-config`,"__cfn-gen__":`folder-generator`,__changes__:`folder-delta`,__changeset__:`folder-changesets`,__changesets__:`folder-changesets`,__chat__:`folder-messages`,__chats__:`folder-messages`,__ci__:`folder-ci`,__cipher__:`folder-secure`,__circleci__:`folder-circleci`,__cjs__:`folder-javascript`,__class__:`folder-class`,__classes__:`folder-class`,__claude__:`folder-claude`,__cli__:`folder-command`,__client__:`folder-client`,__clients__:`folder-client`,__cline_docs__:`folder-cline`,__clis__:`folder-command`,"__cloud-firestore__":`folder-firestore`,"__cloud-functions__":`folder-cloud-functions`,__cloudflare__:`folder-cloudflare`,__cloudfunctions__:`folder-cloud-functions`,__cluster__:`folder-cluster`,__clusters__:`folder-cluster`,__cmd__:`folder-command`,__cobol__:`folder-cobol`,__code__:`folder-src`,__color__:`folder-theme`,__colors__:`folder-theme`,__colour__:`folder-theme`,__colours__:`folder-theme`,__command__:`folder-command`,__commandline__:`folder-command`,__commands__:`folder-command`,__common__:`folder-shared`,__compiled__:`folder-dist`,__components__:`folder-components`,__composable__:`folder-functions`,__composables__:`folder-functions`,__concept__:`folder-mock`,__concepts__:`folder-mock`,__conf__:`folder-config`,__config__:`folder-config`,__configs__:`folder-config`,__configuration__:`folder-config`,__configurations__:`folder-config`,__confs__:`folder-config`,__connection__:`folder-connection`,__connections__:`folder-connection`,__console__:`folder-console`,__const__:`folder-constant`,__constant__:`folder-constant`,__constants__:`folder-constant`,__consts__:`folder-constant`,__container__:`folder-container`,__containers__:`folder-container`,__content__:`folder-content`,__contents__:`folder-content`,__context__:`folder-context`,__contexts__:`folder-context`,"__contract-test__":`folder-contract`,"__contract-testing__":`folder-contract`,"__contract-tests__":`folder-contract`,__contract__:`folder-contract`,__contracts__:`folder-contract`,__controller__:`folder-controller`,__controllers__:`folder-controller`,__controls__:`folder-controller`,__conversation__:`folder-messages`,__conversations__:`folder-messages`,__core__:`folder-core`,__coverage__:`folder-coverage`,__crash__:`folder-error`,__crashes__:`folder-error`,__crates__:`folder-lib`,__css__:`folder-css`,__cts__:`folder-typescript`,__cubit__:`folder-bloc`,__cubits__:`folder-bloc`,__cue__:`folder-cue`,__cues__:`folder-cue`,__cursor__:`folder-cursor`,__custom__:`folder-custom`,__customs__:`folder-custom`,__cypher__:`folder-secure`,__cypress__:`folder-cypress`,__dal__:`folder-dal`,__dart__:`folder-dart`,__dart_tool__:`folder-dart`,__dart_tools__:`folder-dart`,"__data-access-layer__":`folder-dal`,"__data-access__":`folder-dal`,__data__:`folder-database`,__database__:`folder-database`,__databases__:`folder-database`,__db__:`folder-database`,__deb__:`folder-linux`,__debian__:`folder-linux`,__debug__:`folder-debug`,__debugger__:`folder-debug`,__debugging__:`folder-debug`,__decorator__:`folder-decorators`,__decorators__:`folder-decorators`,__deepin__:`folder-linux`,__delta__:`folder-delta`,__deltas__:`folder-delta`,__demo__:`folder-examples`,__demos__:`folder-examples`,__dependencies__:`folder-packages`,__design__:`folder-theme`,__designs__:`folder-theme`,__desktop__:`folder-desktop`,__devcontainer__:`folder-container`,__devpackages__:`folder-packages`,__devtools__:`folder-tools`,__dialog__:`folder-messages`,__dialogs__:`folder-messages`,__diary__:`folder-docs`,__directive__:`folder-directive`,__directives__:`folder-directive`,__display__:`folder-desktop`,__dist__:`folder-dist`,__distribution__:`folder-dist`,__doc__:`folder-docs`,__docker__:`folder-docker`,__dockerfiles__:`folder-docker`,__dockerhub__:`folder-docker`,__docs__:`folder-docs`,__document__:`folder-docs`,__documentation__:`folder-docs`,__documents__:`folder-docs`,__download__:`folder-download`,__downloader__:`folder-download`,__downloaders__:`folder-download`,__downloads__:`folder-download`,__draft__:`folder-mock`,__drafts__:`folder-mock`,__drizzle__:`folder-drizzle`,__ds_store__:`folder-macos`,__dump__:`folder-dump`,__dumps__:`folder-dump`,__e2e__:`folder-coverage`,__easing__:`folder-animation`,__easings__:`folder-animation`,__element__:`folder-element`,__elements__:`folder-element`,__email__:`folder-mail`,__emails__:`folder-mail`,__enum__:`folder-enum`,__enums__:`folder-enum`,__env__:`folder-environment`,__environment__:`folder-environment`,__environments__:`folder-environment`,__envs__:`folder-environment`,__err__:`folder-error`,__error__:`folder-error`,__errors__:`folder-error`,__errs__:`folder-error`,"__eslint-config__":`folder-eslint`,"__eslint-configs__":`folder-eslint`,"__eslint-plugin__":`folder-eslint`,"__eslint-plugins__":`folder-eslint`,__eslint__:`folder-eslint`,__etc__:`folder-other`,__event__:`folder-event`,__events__:`folder-event`,__example__:`folder-examples`,__examples__:`folder-examples`,"__expo-shared__":`folder-expo`,__expo__:`folder-expo`,__export__:`folder-export`,__exported__:`folder-export`,__exports__:`folder-export`,__extension__:`folder-plugin`,__extensions__:`folder-plugin`,__external__:`folder-lib`,__externals__:`folder-lib`,__extra__:`folder-other`,__extras__:`folder-other`,__fastlane__:`folder-fastlane`,__favicon__:`folder-favicon`,__favicons__:`folder-favicon`,__feat__:`folder-features`,__feats__:`folder-features`,__feature__:`folder-features`,__features__:`folder-features`,__fig__:`folder-images`,__figs__:`folder-images`,__figure__:`folder-images`,__figures__:`folder-images`,__filter__:`folder-filter`,__filters__:`folder-filter`,"__firebase-cloud-functions__":`folder-cloud-functions`,"__firebase-cloudfunctions__":`folder-cloud-functions`,"__firebase-firestore__":`folder-firestore`,__firebase__:`folder-firebase`,__firestore__:`folder-firestore`,__fixture__:`folder-mock`,__fixtures__:`folder-mock`,"__flow-typed__":`folder-flow`,__flutter__:`folder-flutter`,__font__:`folder-font`,__fonts__:`folder-font`,__forgejo__:`folder-forgejo`,__form__:`folder-form`,__forms__:`folder-form`,__forum__:`folder-messages`,__fragments__:`folder-components`,__frontend__:`folder-client`,__frontends__:`folder-client`,__func__:`folder-functions`,__funcs__:`folder-functions`,__function__:`folder-functions`,__functions__:`folder-functions`,__game__:`folder-console`,__gamemaker2__:`folder-gamemaker`,__gamemaker__:`folder-gamemaker`,__games__:`folder-console`,__gcp__:`folder-aws`,"__gemini-ai__":`folder-gemini-ai`,__gemini__:`folder-gemini-ai`,__geminiai__:`folder-gemini-ai`,__gen__:`folder-generator`,__generated__:`folder-generator`,__generator__:`folder-generator`,__generators__:`folder-generator`,__gens__:`folder-generator`,__git__:`folder-git`,__gitea__:`folder-gitea`,__githooks__:`folder-git`,"__github/issue_template__":`folder-template`,"__github/pull_request_template__":`folder-template`,"__github/workflows__":`folder-gh-workflows`,__github__:`folder-github`,__gitlab__:`folder-gitlab`,__global__:`folder-global`,__glsl__:`folder-shader`,__go__:`folder-go`,"__godot-cpp__":`folder-godot`,__godot__:`folder-godot`,__golang__:`folder-go`,__gql__:`folder-graphql`,__gradle__:`folder-gradle`,__graphql__:`folder-graphql`,__guard__:`folder-guard`,__guards__:`folder-guard`,__gui__:`folder-ui`,"__gulp-tasks__":`folder-gulp`,__gulp__:`folder-gulp`,"__gulpfile.babel.js__":`folder-gulp`,"__gulpfile.js__":`folder-gulp`,"__gulpfile.mjs__":`folder-gulp`,"__gulpfile.ts__":`folder-gulp`,__gulpfiles__:`folder-gulp`,__handler__:`folder-controller`,__handlers__:`folder-controller`,__helm__:`folder-helm`,__helmchart__:`folder-helm`,__helmcharts__:`folder-helm`,__helper__:`folder-helper`,__helpers__:`folder-helper`,__hg__:`folder-mercurial`,__hgext__:`folder-mercurial`,__hghooks__:`folder-mercurial`,__histories__:`folder-backup`,__history__:`folder-backup`,__hlsl__:`folder-shader`,__home__:`folder-home`,__hook__:`folder-hook`,__hooks__:`folder-hook`,__html__:`folder-views`,__husky__:`folder-husky`,__i18n__:`folder-i18n`,__ico__:`folder-images`,__icon__:`folder-images`,__icons__:`folder-images`,__icos__:`folder-images`,__idea__:`folder-intellij`,__image__:`folder-images`,__images__:`folder-images`,__img__:`folder-images`,__imgs__:`folder-images`,__import__:`folder-import`,__imported__:`folder-import`,__imports__:`folder-import`,__in__:`folder-input`,__inc64__:`folder-include`,__inc__:`folder-include`,__include__:`folder-include`,__includes__:`folder-include`,__infra__:`folder-server`,__infrastructure__:`folder-server`,__input__:`folder-input`,__inputs__:`folder-input`,"__integration-test__":`folder-coverage`,"__integration-tests__":`folder-coverage`,__integration__:`folder-connection`,__integrations__:`folder-connection`,__interceptor__:`folder-interceptor`,__interceptors__:`folder-interceptor`,__interface__:`folder-interface`,__interfaces__:`folder-interface`,__internationalization__:`folder-i18n`,__inventories__:`folder-server`,__inventory__:`folder-server`,__io__:`folder-input`,__ios__:`folder-ios`,__ipad__:`folder-macos`,__iphone__:`folder-macos`,__ipod__:`folder-macos`,__ipynb__:`folder-jupyter`,__it__:`folder-coverage`,__j2__:`folder-jinja`,__java__:`folder-java`,__javascript__:`folder-javascript`,__javascripts__:`folder-javascript`,__jinja2__:`folder-jinja`,__jinja__:`folder-jinja`,__job__:`folder-job`,__jobs__:`folder-job`,__js__:`folder-javascript`,__json__:`folder-json`,__jsonc__:`folder-json`,__jsonl__:`folder-json`,__jsons__:`folder-json`,__jupyter__:`folder-jupyter`,__jwt__:`folder-keys`,__k8s__:`folder-kubernetes`,__key__:`folder-keys`,__keys__:`folder-keys`,__kit__:`folder-tools`,__kits__:`folder-tools`,__knowledge__:`folder-docs`,__kotlin__:`folder-kotlin`,__kql__:`folder-kusto`,__kubernetes__:`folder-kubernetes`,__kusto__:`folder-kusto`,__l10n__:`folder-i18n`,__lambda__:`folder-functions`,__lambdas__:`folder-functions`,__landing__:`folder-home`,__lang__:`folder-i18n`,__langs__:`folder-i18n`,__language__:`folder-i18n`,__languages__:`folder-i18n`,__layout__:`folder-layout`,__layouts__:`folder-layout`,"__lefthook-local__":`folder-lefthook`,__lefthook__:`folder-lefthook`,__less__:`folder-less`,__lib64__:`folder-lib`,__lib__:`folder-lib`,__libraries__:`folder-lib`,__library__:`folder-lib`,__libs__:`folder-lib`,__license__:`folder-license`,__licenses__:`folder-license`,__link__:`folder-link`,__links__:`folder-link`,__linux__:`folder-linux`,__linuxbsd__:`folder-linux`,__liquibase__:`folder-liquibase`,__locale__:`folder-i18n`,__locales__:`folder-i18n`,__localization__:`folder-i18n`,__log__:`folder-log`,__logging__:`folder-log`,__logic__:`folder-functions`,__logs__:`folder-log`,__lottie__:`folder-lottie`,__lottiefiles__:`folder-lottie`,__lotties__:`folder-lottie`,__lua__:`folder-lua`,__luau__:`folder-luau`,__mac__:`folder-macos`,"__macbook-air__":`folder-macos`,__macbook__:`folder-macos`,__macos__:`folder-macos`,__macosx__:`folder-macos`,__mail__:`folder-mail`,__mailers__:`folder-mail`,__mails__:`folder-mail`,__main__:`folder-home`,__manager__:`folder-admin`,__managers__:`folder-admin`,__mapping__:`folder-mappings`,__mappings__:`folder-mappings`,__markdown__:`folder-markdown`,__math__:`folder-functions`,__maths__:`folder-functions`,__md__:`folder-markdown`,__measure__:`folder-benchmark`,__measurement__:`folder-benchmark`,__measures__:`folder-benchmark`,__media__:`folder-video`,__messages__:`folder-messages`,__messaging__:`folder-messages`,"__meta-inf__":`folder-config`,__meta__:`folder-meta`,__metadata__:`folder-meta`,__metro__:`folder-metro`,__middleware__:`folder-middleware`,__middlewares__:`folder-middleware`,__migration__:`folder-migrations`,__migrations__:`folder-migrations`,__mint__:`folder-linux`,__misc__:`folder-other`,__miscellaneous__:`folder-other`,__mjml__:`folder-mjml`,__mjs__:`folder-javascript`,__mobile__:`folder-mobile`,__mobiles__:`folder-mobile`,__mock__:`folder-mock`,__mocks__:`folder-mock`,__mod__:`folder-plugin`,__modding__:`folder-plugin`,__model__:`folder-class`,__models__:`folder-class`,__moderator__:`folder-admin`,__moderators__:`folder-admin`,__mods__:`folder-plugin`,__module__:`folder-plugin`,__modules__:`folder-plugin`,__mojo__:`folder-mojo`,__molecule__:`folder-molecule`,__molecules__:`folder-molecule`,__moon__:`folder-moon`,__motion__:`folder-animation`,__motions__:`folder-animation`,__movie__:`folder-video`,__movies__:`folder-video`,__mq__:`folder-queue`,__mts__:`folder-typescript`,__music__:`folder-audio`,__navigation__:`folder-routes`,__navigations__:`folder-routes`,__netlify__:`folder-netlify`,__news__:`folder-docs`,__next__:`folder-next`,__nginx__:`folder-nginx`,__node__:`folder-node`,__node_modules__:`folder-node`,__nodejs__:`folder-node`,__note__:`folder-docs`,__notebook__:`folder-jupyter`,__notebooks__:`folder-jupyter`,__notes__:`folder-docs`,__now__:`folder-vercel`,__nuxt__:`folder-nuxt`,"__nyc-output__":`folder-coverage`,__nyc_output__:`folder-coverage`,__obsidian__:`folder-obsidian`,__opencode__:`folder-opencode`,__option__:`folder-config`,__options__:`folder-config`,__organism__:`folder-organism`,__organisms__:`folder-organism`,__osx__:`folder-macos`,__other__:`folder-other`,__others__:`folder-other`,__out__:`folder-dist`,__output__:`folder-dist`,__outputs__:`folder-dist`,__package__:`folder-packages`,__packages__:`folder-packages`,__pact__:`folder-contract`,__pacts__:`folder-contract`,__page__:`folder-views`,__pages__:`folder-views`,__palette__:`folder-theme`,__palettes__:`folder-theme`,__partial__:`folder-include`,__partials__:`folder-include`,__patches__:`folder-git`,__pdf__:`folder-pdf`,__pdfs__:`folder-pdf`,"__pdm-build__":`folder-pdm`,"__pdm-plugins__":`folder-pdm`,__perf__:`folder-benchmark`,__performance__:`folder-benchmark`,__phone__:`folder-mobile`,__phones__:`folder-mobile`,__photo__:`folder-images`,__photograph__:`folder-images`,__photographs__:`folder-images`,__photos__:`folder-images`,__php__:`folder-php`,__phpmailer__:`folder-phpmailer`,__pic__:`folder-images`,__pics__:`folder-images`,__picture__:`folder-images`,__pictures__:`folder-images`,__pipe__:`folder-pipe`,__pipeline__:`folder-pipe`,__pipelines__:`folder-pipe`,__pipes__:`folder-pipe`,__pkg__:`folder-packages`,__pkgs__:`folder-packages`,__plastic__:`folder-plastic`,__playground__:`folder-sandbox`,__playgrounds__:`folder-sandbox`,__playlist__:`folder-audio`,__playlists__:`folder-audio`,__plugin__:`folder-plugin`,__plugins__:`folder-plugin`,__policies__:`folder-policy`,__policy__:`folder-policy`,__popos__:`folder-linux`,__portability__:`folder-mobile`,__portable__:`folder-mobile`,__post__:`folder-docs`,__postman__:`folder-postman`,__posts__:`folder-docs`,__powershell__:`folder-powershell`,__pref__:`folder-config`,__preference__:`folder-config`,__preferences__:`folder-config`,__prefs__:`folder-config`,__presentation__:`folder-ui`,__preview__:`folder-review`,__previews__:`folder-review`,"__prisma/schema__":`folder-prisma`,__prisma__:`folder-prisma`,__private__:`folder-private`,__profiling__:`folder-benchmark`,__proj__:`folder-project`,__project__:`folder-project`,__projects__:`folder-project`,__projs__:`folder-project`,__prompt__:`folder-prompts`,__prompts__:`folder-prompts`,__properties__:`folder-config`,__props__:`folder-config`,__protobuf__:`folder-proto`,__protobufs__:`folder-proto`,__protos__:`folder-proto`,__provider__:`folder-controller`,__providers__:`folder-controller`,__proxy__:`folder-public`,__ps1__:`folder-powershell`,__ps4__:`folder-console`,__ps5__:`folder-console`,__ps__:`folder-powershell`,__public__:`folder-public`,__public_html__:`folder-views`,__pwa__:`folder-client`,__pycache__:`folder-python`,__pytest_cache__:`folder-python`,__python__:`folder-python`,__pytorch__:`folder-pytorch`,__quasar__:`folder-quasar`,__queue__:`folder-queue`,__queues__:`folder-queue`,__r__:`folder-r`,__recordings__:`folder-audio`,__release__:`folder-dist`,__remote__:`folder-connection`,__remotes__:`folder-connection`,__repo__:`folder-repository`,__report__:`folder-resource`,__reports__:`folder-resource`,__repos__:`folder-repository`,__repositories__:`folder-repository`,__repository__:`folder-repository`,__res__:`folder-resource`,__resolver__:`folder-resolver`,__resolvers__:`folder-resolver`,__resource__:`folder-resource`,__resources__:`folder-resource`,__restapi__:`folder-api`,__review__:`folder-review`,__reviewed__:`folder-review`,__reviews__:`folder-review`,__revisal__:`folder-review`,__revisals__:`folder-review`,__robot__:`folder-robot`,__robots__:`folder-robot`,__router__:`folder-routes`,__routers__:`folder-routes`,__routes__:`folder-routes`,__routing__:`folder-routes`,__rule__:`folder-rules`,__rules__:`folder-rules`,__rust__:`folder-rust`,__salt__:`folder-salt`,__saltstack__:`folder-salt`,"__sample-data__":`folder-examples`,__sample__:`folder-examples`,__samples__:`folder-examples`,__sandbox__:`folder-sandbox`,__sandboxes__:`folder-sandbox`,__sass__:`folder-sass`,__scala__:`folder-scala`,__schema__:`folder-class`,__schemas__:`folder-class`,__sconf_temp__:`folder-scons`,__scons__:`folder-scons`,__scons_cache__:`folder-scons`,__screen__:`folder-views`,__screengrab__:`folder-images`,__screengrabs__:`folder-images`,__screens__:`folder-views`,__screenshot__:`folder-images`,__screenshots__:`folder-images`,__script__:`folder-scripts`,__scripting__:`folder-scripts`,__scripts__:`folder-scripts`,__scss__:`folder-sass`,__secret__:`folder-keys`,__secrets__:`folder-keys`,__secure__:`folder-secure`,__security__:`folder-secure`,__seed__:`folder-seeders`,__seeders__:`folder-seeders`,__seeding__:`folder-seeders`,__seeds__:`folder-seeders`,__server__:`folder-server`,__serverless__:`folder-serverless`,__serverpackages__:`folder-packages`,__servers__:`folder-server`,__service__:`folder-controller`,__services__:`folder-controller`,__setting__:`folder-config`,__settings__:`folder-config`,__shader__:`folder-shader`,__shaders__:`folder-shader`,__shared__:`folder-shared`,__shop__:`folder-cart`,"__shopping-cart__":`folder-cart`,__shopping__:`folder-cart`,__sim__:`folder-simulations`,__sims__:`folder-simulations`,__simulation__:`folder-simulations`,__simulations__:`folder-simulations`,__site__:`folder-public`,__sketch__:`folder-mock`,__sketches__:`folder-mock`,__skill__:`folder-skills`,__skills__:`folder-skills`,__smtp__:`folder-mail`,__snap__:`folder-snapcraft`,__snapcraft__:`folder-snapcraft`,__snapshots__:`folder-test`,__snippet__:`folder-snippet`,__snippets__:`folder-snippet`,__song__:`folder-audio`,__songs__:`folder-audio`,__sound__:`folder-audio`,__sounds__:`folder-audio`,__source__:`folder-src`,__sources__:`folder-src`,__spa__:`folder-client`,__spec__:`folder-test`,__specs__:`folder-test`,__spellcheck__:`folder-syntax`,__spellcheckers__:`folder-syntax`,__sql__:`folder-database`,"__src-tauri__":`folder-src-tauri`,__src__:`folder-src`,__srcs__:`folder-src`,__ssl__:`folder-secure`,__stack__:`folder-stack`,__stacks__:`folder-stack`,__start__:`folder-home`,__static__:`folder-resource`,__stencil__:`folder-stencil`,__store__:`folder-store`,__stores__:`folder-store`,__stories__:`folder-storybook`,__storybook__:`folder-storybook`,__style__:`folder-css`,__styles__:`folder-css`,__stylesheet__:`folder-css`,__stylesheets__:`folder-css`,__stylus__:`folder-stylus`,__sublime__:`folder-sublime`,__submodules__:`folder-git`,__supabase__:`folder-supabase`,"__svelte-kit__":`folder-svelte`,__svelte__:`folder-svelte`,__svg__:`folder-svg`,__svgs__:`folder-svg`,__switch__:`folder-console`,__syntax__:`folder-syntax`,__syntaxes__:`folder-syntax`,"__table-of-contents__":`folder-toc`,__target__:`folder-target`,__taskfile__:`folder-taskfile`,__taskfiles__:`folder-taskfile`,__tasks__:`folder-tasks`,__television__:`folder-television`,__temp__:`folder-temp`,__template__:`folder-template`,__templates__:`folder-template`,__terraform__:`folder-terraform`,__test__:`folder-test`,__testfiles__:`folder-test`,__testing__:`folder-test`,__tests__:`folder-test`,__texture__:`folder-images`,__textures__:`folder-images`,__theme__:`folder-theme`,__themes__:`folder-theme`,"__third-party__":`folder-lib`,__thirdparty__:`folder-lib`,__tickets__:`folder-tasks`,__tls__:`folder-secure`,__tmp__:`folder-temp`,__toc__:`folder-toc`,__token__:`folder-keys`,__tokens__:`folder-keys`,__toolbox__:`folder-tools`,__toolboxes__:`folder-tools`,__tooling__:`folder-tools`,__toolkit__:`folder-tools`,__toolkits__:`folder-tools`,__tools__:`folder-tools`,__torch__:`folder-pytorch`,__transition__:`folder-animation`,__transitions__:`folder-animation`,__translate__:`folder-i18n`,__translation__:`folder-i18n`,__translations__:`folder-i18n`,__trash__:`folder-trash`,__trigger__:`folder-trigger`,__triggers__:`folder-trigger`,__ts__:`folder-typescript`,__turbo__:`folder-turborepo`,__tv__:`folder-television`,__tx__:`folder-i18n`,__typeface__:`folder-font`,__typefaces__:`folder-font`,__types__:`folder-typescript`,__typescript__:`folder-typescript`,__typings__:`folder-typescript`,__ubuntu__:`folder-linux`,__ui__:`folder-ui`,__unity__:`folder-unity`,__unix__:`folder-linux`,__update__:`folder-update`,__updates__:`folder-update`,__upgrade__:`folder-update`,__upgrades__:`folder-update`,__upload__:`folder-upload`,__uploads__:`folder-upload`,__util__:`folder-utils`,__utilities__:`folder-utils`,__utility__:`folder-utils`,__utils__:`folder-utils`,__ux__:`folder-ui`,__validation__:`folder-rules`,__validations__:`folder-rules`,__validator__:`folder-rules`,__validators__:`folder-rules`,__vector__:`folder-svg`,__vectors__:`folder-svg`,__vendor__:`folder-lib`,__vendors__:`folder-lib`,__venv__:`folder-environment`,__vercel__:`folder-vercel`,__verdaccio__:`folder-verdaccio`,__vid__:`folder-video`,__video__:`folder-video`,__videos__:`folder-video`,__vids__:`folder-video`,__view__:`folder-views`,__views__:`folder-views`,__vm__:`folder-vm`,__vms__:`folder-vm`,__voice__:`folder-audio`,__voices__:`folder-audio`,"__vscode-test__":`folder-vscode`,__vscode__:`folder-vscode`,__vue__:`folder-vue`,__vuepress__:`folder-vuepress`,__wakatime__:`folder-wakatime`,__web__:`folder-public`,__webpack__:`folder-webpack`,__website__:`folder-public`,__websites__:`folder-public`,__widget__:`folder-components`,__widgets__:`folder-components`,__wiki__:`folder-docs`,__win10__:`folder-windows`,__win11__:`folder-windows`,__win32__:`folder-windows`,__win__:`folder-windows`,__windows10__:`folder-windows`,__windows11__:`folder-windows`,__windows__:`folder-windows`,__windowsnt__:`folder-windows`,__windowsxp__:`folder-windows`,__winnt__:`folder-windows`,__winxp__:`folder-windows`,"__wordpress-org__":`folder-wordpress`,"__wp-content__":`folder-wordpress`,__wsl__:`folder-linux`,__www__:`folder-public`,__wwwroot__:`folder-public`,__xbox__:`folder-console`,__xtask__:`folder-scripts`,__yarn__:`folder-yarn`,__zeabur__:`folder-zeabur`,__zed__:`folder-zed`,_addin:`folder-plugin`,_addins:`folder-plugin`,_addon:`folder-plugin`,_addons:`folder-plugin`,_admin:`folder-admin`,_admins:`folder-admin`,_agent:`folder-robot`,_agents:`folder-robot`,_android:`folder-android`,_angular:`folder-angular`,_anim:`folder-animation`,_animated:`folder-animation`,_animation:`folder-animation`,_animations:`folder-animation`,_anims:`folder-animation`,_ansible:`folder-ansible`,_api:`folder-api`,_apis:`folder-api`,_apollo:`folder-apollo`,"_apollo-cache":`folder-apollo`,"_apollo-client":`folder-apollo`,"_apollo-config":`folder-apollo`,_app:`folder-app`,_apple:`folder-macos`,_application:`folder-app`,_applications:`folder-app`,_apps:`folder-app`,_appwrite:`folder-appwrite`,_arc:`folder-archive`,_archival:`folder-archive`,_archive:`folder-archive`,_archives:`folder-archive`,_arcs:`folder-archive`,_article:`folder-docs`,_articles:`folder-docs`,_asm:`folder-assembly`,_assembly:`folder-assembly`,_asset:`folder-resource`,_assets:`folder-resource`,_astro:`folder-astro`,_atom:`folder-atom`,_atoms:`folder-atom`,_attachment:`folder-attachment`,_attachments:`folder-attachment`,_aud:`folder-audio`,_audio:`folder-audio`,_audios:`folder-audio`,_auds:`folder-audio`,_aurelia_project:`folder-aurelia`,_auth:`folder-secure`,_authentication:`folder-secure`,_auto:`folder-generator`,_aws:`folder-aws`,_azure:`folder-aws`,"_azure-pipelines":`folder-azure-pipelines`,"_azure-pipelines-ci":`folder-azure-pipelines`,"_back-up":`folder-backup`,"_back-ups":`folder-backup`,_backend:`folder-server`,_backends:`folder-server`,_backup:`folder-backup`,_backups:`folder-backup`,_bak:`folder-backup`,_baks:`folder-backup`,_base:`folder-base`,_bases:`folder-base`,_batch:`folder-batch`,_batches:`folder-batch`,_batchs:`folder-batch`,_bench:`folder-benchmark`,_benches:`folder-benchmark`,_benchmark:`folder-benchmark`,_benchmarks:`folder-benchmark`,_bibliographies:`folder-bibliography`,_bibliography:`folder-bibliography`,_bicep:`folder-bicep`,_bin:`folder-dist`,_bkp:`folder-backup`,_bkps:`folder-backup`,_blender:`folder-blender`,"_blender-assets":`folder-blender`,"_blender-files":`folder-blender`,"_blender-models":`folder-blender`,"_blender-project":`folder-blender`,_bloc:`folder-bloc`,_blocs:`folder-bloc`,_blog:`folder-docs`,_book:`folder-bibliography`,_books:`folder-bibliography`,_bot:`folder-robot`,_bots:`folder-robot`,_bower_components:`folder-bower`,_browser:`folder-public`,_browsers:`folder-public`,_build:`folder-dist`,_buildkite:`folder-buildkite`,_builds:`folder-dist`,_built:`folder-dist`,_bull:`folder-queue`,_cache:`folder-temp`,_cached:`folder-temp`,_calc:`folder-functions`,_calcs:`folder-functions`,_calculation:`folder-functions`,_calculations:`folder-functions`,_cargo:`folder-rust`,_cart:`folder-cart`,_centos:`folder-linux`,_cert:`folder-secure`,_certificate:`folder-secure`,_certificates:`folder-secure`,_certs:`folder-secure`,_cfg:`folder-config`,_cfgs:`folder-config`,"_cfn-gen":`folder-generator`,_changes:`folder-delta`,_changeset:`folder-changesets`,_changesets:`folder-changesets`,_chat:`folder-messages`,_chats:`folder-messages`,_ci:`folder-ci`,_cipher:`folder-secure`,_circleci:`folder-circleci`,_cjs:`folder-javascript`,_class:`folder-class`,_classes:`folder-class`,_claude:`folder-claude`,_cli:`folder-command`,_client:`folder-client`,_clients:`folder-client`,_cline_docs:`folder-cline`,_clis:`folder-command`,"_cloud-firestore":`folder-firestore`,"_cloud-functions":`folder-cloud-functions`,_cloudflare:`folder-cloudflare`,_cloudfunctions:`folder-cloud-functions`,_cluster:`folder-cluster`,_clusters:`folder-cluster`,_cmd:`folder-command`,_cobol:`folder-cobol`,_code:`folder-src`,_color:`folder-theme`,_colors:`folder-theme`,_colour:`folder-theme`,_colours:`folder-theme`,_command:`folder-command`,_commandline:`folder-command`,_commands:`folder-command`,_common:`folder-shared`,_compiled:`folder-dist`,_components:`folder-components`,_composable:`folder-functions`,_composables:`folder-functions`,_concept:`folder-mock`,_concepts:`folder-mock`,_conf:`folder-config`,_config:`folder-config`,_configs:`folder-config`,_configuration:`folder-config`,_configurations:`folder-config`,_confs:`folder-config`,_connection:`folder-connection`,_connections:`folder-connection`,_console:`folder-console`,_const:`folder-constant`,_constant:`folder-constant`,_constants:`folder-constant`,_consts:`folder-constant`,_container:`folder-container`,_containers:`folder-container`,_content:`folder-content`,_contents:`folder-content`,_context:`folder-context`,_contexts:`folder-context`,_contract:`folder-contract`,"_contract-test":`folder-contract`,"_contract-testing":`folder-contract`,"_contract-tests":`folder-contract`,_contracts:`folder-contract`,_controller:`folder-controller`,_controllers:`folder-controller`,_controls:`folder-controller`,_conversation:`folder-messages`,_conversations:`folder-messages`,_core:`folder-core`,_coverage:`folder-coverage`,_crash:`folder-error`,_crashes:`folder-error`,_crates:`folder-lib`,_css:`folder-css`,_cts:`folder-typescript`,_cubit:`folder-bloc`,_cubits:`folder-bloc`,_cue:`folder-cue`,_cues:`folder-cue`,_cursor:`folder-cursor`,_custom:`folder-custom`,_customs:`folder-custom`,_cypher:`folder-secure`,_cypress:`folder-cypress`,_dal:`folder-dal`,_dart:`folder-dart`,_dart_tool:`folder-dart`,_dart_tools:`folder-dart`,_data:`folder-database`,"_data-access":`folder-dal`,"_data-access-layer":`folder-dal`,_database:`folder-database`,_databases:`folder-database`,_db:`folder-database`,_deb:`folder-linux`,_debian:`folder-linux`,_debug:`folder-debug`,_debugger:`folder-debug`,_debugging:`folder-debug`,_decorator:`folder-decorators`,_decorators:`folder-decorators`,_deepin:`folder-linux`,_delta:`folder-delta`,_deltas:`folder-delta`,_demo:`folder-examples`,_demos:`folder-examples`,_dependencies:`folder-packages`,_design:`folder-theme`,_designs:`folder-theme`,_desktop:`folder-desktop`,_devcontainer:`folder-container`,_devpackages:`folder-packages`,_devtools:`folder-tools`,_dialog:`folder-messages`,_dialogs:`folder-messages`,_diary:`folder-docs`,_directive:`folder-directive`,_directives:`folder-directive`,_display:`folder-desktop`,_dist:`folder-dist`,_distribution:`folder-dist`,_doc:`folder-docs`,_docker:`folder-docker`,_dockerfiles:`folder-docker`,_dockerhub:`folder-docker`,_docs:`folder-docs`,_document:`folder-docs`,_documentation:`folder-docs`,_documents:`folder-docs`,_download:`folder-download`,_downloader:`folder-download`,_downloaders:`folder-download`,_downloads:`folder-download`,_draft:`folder-mock`,_drafts:`folder-mock`,_drizzle:`folder-drizzle`,_ds_store:`folder-macos`,_dump:`folder-dump`,_dumps:`folder-dump`,_e2e:`folder-coverage`,_easing:`folder-animation`,_easings:`folder-animation`,_element:`folder-element`,_elements:`folder-element`,_email:`folder-mail`,_emails:`folder-mail`,_enum:`folder-enum`,_enums:`folder-enum`,_env:`folder-environment`,_environment:`folder-environment`,_environments:`folder-environment`,_envs:`folder-environment`,_err:`folder-error`,_error:`folder-error`,_errors:`folder-error`,_errs:`folder-error`,_eslint:`folder-eslint`,"_eslint-config":`folder-eslint`,"_eslint-configs":`folder-eslint`,"_eslint-plugin":`folder-eslint`,"_eslint-plugins":`folder-eslint`,_etc:`folder-other`,_event:`folder-event`,_events:`folder-event`,_example:`folder-examples`,_examples:`folder-examples`,_expo:`folder-expo`,"_expo-shared":`folder-expo`,_export:`folder-export`,_exported:`folder-export`,_exports:`folder-export`,_extension:`folder-plugin`,_extensions:`folder-plugin`,_external:`folder-lib`,_externals:`folder-lib`,_extra:`folder-other`,_extras:`folder-other`,_fastlane:`folder-fastlane`,_favicon:`folder-favicon`,_favicons:`folder-favicon`,_feat:`folder-features`,_feats:`folder-features`,_feature:`folder-features`,_features:`folder-features`,_fig:`folder-images`,_figs:`folder-images`,_figure:`folder-images`,_figures:`folder-images`,_filter:`folder-filter`,_filters:`folder-filter`,_firebase:`folder-firebase`,"_firebase-cloud-functions":`folder-cloud-functions`,"_firebase-cloudfunctions":`folder-cloud-functions`,"_firebase-firestore":`folder-firestore`,_firestore:`folder-firestore`,_fixture:`folder-mock`,_fixtures:`folder-mock`,"_flow-typed":`folder-flow`,_flutter:`folder-flutter`,_font:`folder-font`,_fonts:`folder-font`,_forgejo:`folder-forgejo`,_form:`folder-form`,_forms:`folder-form`,_forum:`folder-messages`,_fragments:`folder-components`,_frontend:`folder-client`,_frontends:`folder-client`,_func:`folder-functions`,_funcs:`folder-functions`,_function:`folder-functions`,_functions:`folder-functions`,_game:`folder-console`,_gamemaker:`folder-gamemaker`,_gamemaker2:`folder-gamemaker`,_games:`folder-console`,_gcp:`folder-aws`,_gemini:`folder-gemini-ai`,"_gemini-ai":`folder-gemini-ai`,_geminiai:`folder-gemini-ai`,_gen:`folder-generator`,_generated:`folder-generator`,_generator:`folder-generator`,_generators:`folder-generator`,_gens:`folder-generator`,_git:`folder-git`,_gitea:`folder-gitea`,_githooks:`folder-git`,_github:`folder-github`,"_github/issue_template":`folder-template`,"_github/pull_request_template":`folder-template`,"_github/workflows":`folder-gh-workflows`,_gitlab:`folder-gitlab`,_global:`folder-global`,_glsl:`folder-shader`,_go:`folder-go`,_godot:`folder-godot`,"_godot-cpp":`folder-godot`,_golang:`folder-go`,_gql:`folder-graphql`,_gradle:`folder-gradle`,_graphql:`folder-graphql`,_guard:`folder-guard`,_guards:`folder-guard`,_gui:`folder-ui`,_gulp:`folder-gulp`,"_gulp-tasks":`folder-gulp`,"_gulpfile.babel.js":`folder-gulp`,"_gulpfile.js":`folder-gulp`,"_gulpfile.mjs":`folder-gulp`,"_gulpfile.ts":`folder-gulp`,_gulpfiles:`folder-gulp`,_handler:`folder-controller`,_handlers:`folder-controller`,_helm:`folder-helm`,_helmchart:`folder-helm`,_helmcharts:`folder-helm`,_helper:`folder-helper`,_helpers:`folder-helper`,_hg:`folder-mercurial`,_hgext:`folder-mercurial`,_hghooks:`folder-mercurial`,_histories:`folder-backup`,_history:`folder-backup`,_hlsl:`folder-shader`,_home:`folder-home`,_hook:`folder-hook`,_hooks:`folder-hook`,_html:`folder-views`,_husky:`folder-husky`,_i18n:`folder-i18n`,_ico:`folder-images`,_icon:`folder-images`,_icons:`folder-images`,_icos:`folder-images`,_idea:`folder-intellij`,_image:`folder-images`,_images:`folder-images`,_img:`folder-images`,_imgs:`folder-images`,_import:`folder-import`,_imported:`folder-import`,_imports:`folder-import`,_in:`folder-input`,_inc:`folder-include`,_inc64:`folder-include`,_include:`folder-include`,_includes:`folder-include`,_infra:`folder-server`,_infrastructure:`folder-server`,_input:`folder-input`,_inputs:`folder-input`,_integration:`folder-connection`,"_integration-test":`folder-coverage`,"_integration-tests":`folder-coverage`,_integrations:`folder-connection`,_interceptor:`folder-interceptor`,_interceptors:`folder-interceptor`,_interface:`folder-interface`,_interfaces:`folder-interface`,_internationalization:`folder-i18n`,_inventories:`folder-server`,_inventory:`folder-server`,_io:`folder-input`,_ios:`folder-ios`,_ipad:`folder-macos`,_iphone:`folder-macos`,_ipod:`folder-macos`,_ipynb:`folder-jupyter`,_it:`folder-coverage`,_j2:`folder-jinja`,_java:`folder-java`,_javascript:`folder-javascript`,_javascripts:`folder-javascript`,_jinja:`folder-jinja`,_jinja2:`folder-jinja`,_job:`folder-job`,_jobs:`folder-job`,_js:`folder-javascript`,_json:`folder-json`,_jsonc:`folder-json`,_jsonl:`folder-json`,_jsons:`folder-json`,_jupyter:`folder-jupyter`,_jwt:`folder-keys`,_k8s:`folder-kubernetes`,_key:`folder-keys`,_keys:`folder-keys`,_kit:`folder-tools`,_kits:`folder-tools`,_knowledge:`folder-docs`,_kotlin:`folder-kotlin`,_kql:`folder-kusto`,_kubernetes:`folder-kubernetes`,_kusto:`folder-kusto`,_l10n:`folder-i18n`,_lambda:`folder-functions`,_lambdas:`folder-functions`,_landing:`folder-home`,_lang:`folder-i18n`,_langs:`folder-i18n`,_language:`folder-i18n`,_languages:`folder-i18n`,_layout:`folder-layout`,_layouts:`folder-layout`,_lefthook:`folder-lefthook`,"_lefthook-local":`folder-lefthook`,_less:`folder-less`,_lib:`folder-lib`,_lib64:`folder-lib`,_libraries:`folder-lib`,_library:`folder-lib`,_libs:`folder-lib`,_license:`folder-license`,_licenses:`folder-license`,_link:`folder-link`,_links:`folder-link`,_linux:`folder-linux`,_linuxbsd:`folder-linux`,_liquibase:`folder-liquibase`,_locale:`folder-i18n`,_locales:`folder-i18n`,_localization:`folder-i18n`,_log:`folder-log`,_logging:`folder-log`,_logic:`folder-functions`,_logs:`folder-log`,_lottie:`folder-lottie`,_lottiefiles:`folder-lottie`,_lotties:`folder-lottie`,_lua:`folder-lua`,_luau:`folder-luau`,_mac:`folder-macos`,_macbook:`folder-macos`,"_macbook-air":`folder-macos`,_macos:`folder-macos`,_macosx:`folder-macos`,_mail:`folder-mail`,_mailers:`folder-mail`,_mails:`folder-mail`,_main:`folder-home`,_manager:`folder-admin`,_managers:`folder-admin`,_mapping:`folder-mappings`,_mappings:`folder-mappings`,_markdown:`folder-markdown`,_math:`folder-functions`,_maths:`folder-functions`,_md:`folder-markdown`,_measure:`folder-benchmark`,_measurement:`folder-benchmark`,_measures:`folder-benchmark`,_media:`folder-video`,_messages:`folder-messages`,_messaging:`folder-messages`,_meta:`folder-meta`,"_meta-inf":`folder-config`,_metadata:`folder-meta`,_metro:`folder-metro`,_middleware:`folder-middleware`,_middlewares:`folder-middleware`,_migration:`folder-migrations`,_migrations:`folder-migrations`,_mint:`folder-linux`,_misc:`folder-other`,_miscellaneous:`folder-other`,_mjml:`folder-mjml`,_mjs:`folder-javascript`,_mobile:`folder-mobile`,_mobiles:`folder-mobile`,_mock:`folder-mock`,_mocks:`folder-mock`,_mod:`folder-plugin`,_modding:`folder-plugin`,_model:`folder-class`,_models:`folder-class`,_moderator:`folder-admin`,_moderators:`folder-admin`,_mods:`folder-plugin`,_module:`folder-plugin`,_modules:`folder-plugin`,_mojo:`folder-mojo`,_molecule:`folder-molecule`,_molecules:`folder-molecule`,_moon:`folder-moon`,_motion:`folder-animation`,_motions:`folder-animation`,_movie:`folder-video`,_movies:`folder-video`,_mq:`folder-queue`,_mts:`folder-typescript`,_music:`folder-audio`,_navigation:`folder-routes`,_navigations:`folder-routes`,_netlify:`folder-netlify`,_news:`folder-docs`,_next:`folder-next`,_nginx:`folder-nginx`,_node:`folder-node`,_node_modules:`folder-node`,_nodejs:`folder-node`,_note:`folder-docs`,_notebook:`folder-jupyter`,_notebooks:`folder-jupyter`,_notes:`folder-docs`,_now:`folder-vercel`,_nuxt:`folder-nuxt`,"_nyc-output":`folder-coverage`,_nyc_output:`folder-coverage`,_obsidian:`folder-obsidian`,_opencode:`folder-opencode`,_option:`folder-config`,_options:`folder-config`,_organism:`folder-organism`,_organisms:`folder-organism`,_osx:`folder-macos`,_other:`folder-other`,_others:`folder-other`,_out:`folder-dist`,_output:`folder-dist`,_outputs:`folder-dist`,_package:`folder-packages`,_packages:`folder-packages`,_pact:`folder-contract`,_pacts:`folder-contract`,_page:`folder-views`,_pages:`folder-views`,_palette:`folder-theme`,_palettes:`folder-theme`,_partial:`folder-include`,_partials:`folder-include`,_patches:`folder-git`,_pdf:`folder-pdf`,_pdfs:`folder-pdf`,"_pdm-build":`folder-pdm`,"_pdm-plugins":`folder-pdm`,_perf:`folder-benchmark`,_performance:`folder-benchmark`,_phone:`folder-mobile`,_phones:`folder-mobile`,_photo:`folder-images`,_photograph:`folder-images`,_photographs:`folder-images`,_photos:`folder-images`,_php:`folder-php`,_phpmailer:`folder-phpmailer`,_pic:`folder-images`,_pics:`folder-images`,_picture:`folder-images`,_pictures:`folder-images`,_pipe:`folder-pipe`,_pipeline:`folder-pipe`,_pipelines:`folder-pipe`,_pipes:`folder-pipe`,_pkg:`folder-packages`,_pkgs:`folder-packages`,_plastic:`folder-plastic`,_playground:`folder-sandbox`,_playgrounds:`folder-sandbox`,_playlist:`folder-audio`,_playlists:`folder-audio`,_plugin:`folder-plugin`,_plugins:`folder-plugin`,_policies:`folder-policy`,_policy:`folder-policy`,_popos:`folder-linux`,_portability:`folder-mobile`,_portable:`folder-mobile`,_post:`folder-docs`,_postman:`folder-postman`,_posts:`folder-docs`,_powershell:`folder-powershell`,_pref:`folder-config`,_preference:`folder-config`,_preferences:`folder-config`,_prefs:`folder-config`,_presentation:`folder-ui`,_preview:`folder-review`,_previews:`folder-review`,_prisma:`folder-prisma`,"_prisma/schema":`folder-prisma`,_private:`folder-private`,_profiling:`folder-benchmark`,_proj:`folder-project`,_project:`folder-project`,_projects:`folder-project`,_projs:`folder-project`,_prompt:`folder-prompts`,_prompts:`folder-prompts`,_properties:`folder-config`,_props:`folder-config`,_proto:`folder-proto`,_protobuf:`folder-proto`,_protobufs:`folder-proto`,_protos:`folder-proto`,_provider:`folder-controller`,_providers:`folder-controller`,_proxy:`folder-public`,_ps:`folder-powershell`,_ps1:`folder-powershell`,_ps4:`folder-console`,_ps5:`folder-console`,_public:`folder-public`,_public_html:`folder-views`,_pwa:`folder-client`,_pycache:`folder-python`,_pytest_cache:`folder-python`,_python:`folder-python`,_pytorch:`folder-pytorch`,_quasar:`folder-quasar`,_queue:`folder-queue`,_queues:`folder-queue`,_r:`folder-r`,_recordings:`folder-audio`,_release:`folder-dist`,_remote:`folder-connection`,_remotes:`folder-connection`,_repo:`folder-repository`,_report:`folder-resource`,_reports:`folder-resource`,_repos:`folder-repository`,_repositories:`folder-repository`,_repository:`folder-repository`,_res:`folder-resource`,_resolver:`folder-resolver`,_resolvers:`folder-resolver`,_resource:`folder-resource`,_resources:`folder-resource`,_restapi:`folder-api`,_review:`folder-review`,_reviewed:`folder-review`,_reviews:`folder-review`,_revisal:`folder-review`,_revisals:`folder-review`,_robot:`folder-robot`,_robots:`folder-robot`,_router:`folder-routes`,_routers:`folder-routes`,_routes:`folder-routes`,_routing:`folder-routes`,_rule:`folder-rules`,_rules:`folder-rules`,_rust:`folder-rust`,_salt:`folder-salt`,_saltstack:`folder-salt`,_sample:`folder-examples`,"_sample-data":`folder-examples`,_samples:`folder-examples`,_sandbox:`folder-sandbox`,_sandboxes:`folder-sandbox`,_sass:`folder-sass`,_scala:`folder-scala`,_schema:`folder-class`,_schemas:`folder-class`,_sconf_temp:`folder-scons`,_scons:`folder-scons`,_scons_cache:`folder-scons`,_screen:`folder-views`,_screengrab:`folder-images`,_screengrabs:`folder-images`,_screens:`folder-views`,_screenshot:`folder-images`,_screenshots:`folder-images`,_script:`folder-scripts`,_scripting:`folder-scripts`,_scripts:`folder-scripts`,_scss:`folder-sass`,_secret:`folder-keys`,_secrets:`folder-keys`,_secure:`folder-secure`,_security:`folder-secure`,_seed:`folder-seeders`,_seeders:`folder-seeders`,_seeding:`folder-seeders`,_seeds:`folder-seeders`,_server:`folder-server`,_serverless:`folder-serverless`,_serverpackages:`folder-packages`,_servers:`folder-server`,_service:`folder-controller`,_services:`folder-controller`,_setting:`folder-config`,_settings:`folder-config`,_shader:`folder-shader`,_shaders:`folder-shader`,_shared:`folder-shared`,_shop:`folder-cart`,_shopping:`folder-cart`,"_shopping-cart":`folder-cart`,_sim:`folder-simulations`,_sims:`folder-simulations`,_simulation:`folder-simulations`,_simulations:`folder-simulations`,_site:`folder-public`,_sketch:`folder-mock`,_sketches:`folder-mock`,_skill:`folder-skills`,_skills:`folder-skills`,_smtp:`folder-mail`,_snap:`folder-snapcraft`,_snapcraft:`folder-snapcraft`,_snapshots:`folder-test`,_snippet:`folder-snippet`,_snippets:`folder-snippet`,_song:`folder-audio`,_songs:`folder-audio`,_sound:`folder-audio`,_sounds:`folder-audio`,_source:`folder-src`,_sources:`folder-src`,_spa:`folder-client`,_spec:`folder-test`,_specs:`folder-test`,_spellcheck:`folder-syntax`,_spellcheckers:`folder-syntax`,_sql:`folder-database`,_src:`folder-src`,"_src-tauri":`folder-src-tauri`,_srcs:`folder-src`,_ssl:`folder-secure`,_stack:`folder-stack`,_stacks:`folder-stack`,_start:`folder-home`,_static:`folder-resource`,_stencil:`folder-stencil`,_store:`folder-store`,_stores:`folder-store`,_stories:`folder-storybook`,_storybook:`folder-storybook`,_style:`folder-css`,_styles:`folder-css`,_stylesheet:`folder-css`,_stylesheets:`folder-css`,_stylus:`folder-stylus`,_sublime:`folder-sublime`,_submodules:`folder-git`,_supabase:`folder-supabase`,_svelte:`folder-svelte`,"_svelte-kit":`folder-svelte`,_svg:`folder-svg`,_svgs:`folder-svg`,_switch:`folder-console`,_syntax:`folder-syntax`,_syntaxes:`folder-syntax`,"_table-of-contents":`folder-toc`,_target:`folder-target`,_taskfile:`folder-taskfile`,_taskfiles:`folder-taskfile`,_tasks:`folder-tasks`,_television:`folder-television`,_temp:`folder-temp`,_template:`folder-template`,_templates:`folder-template`,_terraform:`folder-terraform`,_test:`folder-test`,_testfiles:`folder-test`,_testing:`folder-test`,_tests:`folder-test`,_texture:`folder-images`,_textures:`folder-images`,_theme:`folder-theme`,_themes:`folder-theme`,"_third-party":`folder-lib`,_thirdparty:`folder-lib`,_tickets:`folder-tasks`,_tls:`folder-secure`,_tmp:`folder-temp`,_toc:`folder-toc`,_token:`folder-keys`,_tokens:`folder-keys`,_toolbox:`folder-tools`,_toolboxes:`folder-tools`,_tooling:`folder-tools`,_toolkit:`folder-tools`,_toolkits:`folder-tools`,_tools:`folder-tools`,_torch:`folder-pytorch`,_transition:`folder-animation`,_transitions:`folder-animation`,_translate:`folder-i18n`,_translation:`folder-i18n`,_translations:`folder-i18n`,_trash:`folder-trash`,_trigger:`folder-trigger`,_triggers:`folder-trigger`,_ts:`folder-typescript`,_turbo:`folder-turborepo`,_tv:`folder-television`,_tx:`folder-i18n`,_typeface:`folder-font`,_typefaces:`folder-font`,_types:`folder-typescript`,_typescript:`folder-typescript`,_typings:`folder-typescript`,_ubuntu:`folder-linux`,_ui:`folder-ui`,_unity:`folder-unity`,_unix:`folder-linux`,_update:`folder-update`,_updates:`folder-update`,_upgrade:`folder-update`,_upgrades:`folder-update`,_upload:`folder-upload`,_uploads:`folder-upload`,_util:`folder-utils`,_utilities:`folder-utils`,_utility:`folder-utils`,_utils:`folder-utils`,_ux:`folder-ui`,_validation:`folder-rules`,_validations:`folder-rules`,_validator:`folder-rules`,_validators:`folder-rules`,_vector:`folder-svg`,_vectors:`folder-svg`,_vendor:`folder-lib`,_vendors:`folder-lib`,_venv:`folder-environment`,_vercel:`folder-vercel`,_verdaccio:`folder-verdaccio`,_vid:`folder-video`,_video:`folder-video`,_videos:`folder-video`,_vids:`folder-video`,_view:`folder-views`,_views:`folder-views`,_vm:`folder-vm`,_vms:`folder-vm`,_voice:`folder-audio`,_voices:`folder-audio`,_vscode:`folder-vscode`,"_vscode-test":`folder-vscode`,_vue:`folder-vue`,_vuepress:`folder-vuepress`,_wakatime:`folder-wakatime`,_web:`folder-public`,_webpack:`folder-webpack`,_website:`folder-public`,_websites:`folder-public`,_widget:`folder-components`,_widgets:`folder-components`,_wiki:`folder-docs`,_win:`folder-windows`,_win10:`folder-windows`,_win11:`folder-windows`,_win32:`folder-windows`,_windows:`folder-windows`,_windows10:`folder-windows`,_windows11:`folder-windows`,_windowsnt:`folder-windows`,_windowsxp:`folder-windows`,_winnt:`folder-windows`,_winxp:`folder-windows`,"_wordpress-org":`folder-wordpress`,"_wp-content":`folder-wordpress`,_wsl:`folder-linux`,_www:`folder-public`,_wwwroot:`folder-public`,_xbox:`folder-console`,_xtask:`folder-scripts`,_yarn:`folder-yarn`,_zeabur:`folder-zeabur`,_zed:`folder-zed`,addin:`folder-plugin`,addins:`folder-plugin`,addon:`folder-plugin`,addons:`folder-plugin`,admin:`folder-admin`,admins:`folder-admin`,agent:`folder-robot`,agents:`folder-robot`,android:`folder-android`,angular:`folder-angular`,anim:`folder-animation`,animated:`folder-animation`,animation:`folder-animation`,animations:`folder-animation`,anims:`folder-animation`,ansible:`folder-ansible`,api:`folder-api`,apis:`folder-api`,apollo:`folder-apollo`,"apollo-cache":`folder-apollo`,"apollo-client":`folder-apollo`,"apollo-config":`folder-apollo`,app:`folder-app`,apple:`folder-macos`,application:`folder-app`,applications:`folder-app`,apps:`folder-app`,appwrite:`folder-appwrite`,arc:`folder-archive`,archival:`folder-archive`,archive:`folder-archive`,archives:`folder-archive`,arcs:`folder-archive`,article:`folder-docs`,articles:`folder-docs`,asm:`folder-assembly`,assembly:`folder-assembly`,asset:`folder-resource`,assets:`folder-resource`,astro:`folder-astro`,atom:`folder-atom`,atoms:`folder-atom`,attachment:`folder-attachment`,attachments:`folder-attachment`,aud:`folder-audio`,audio:`folder-audio`,audios:`folder-audio`,auds:`folder-audio`,aurelia_project:`folder-aurelia`,auth:`folder-secure`,authentication:`folder-secure`,auto:`folder-generator`,aws:`folder-aws`,azure:`folder-aws`,"azure-pipelines":`folder-azure-pipelines`,"azure-pipelines-ci":`folder-azure-pipelines`,"back-up":`folder-backup`,"back-ups":`folder-backup`,backend:`folder-server`,backends:`folder-server`,backup:`folder-backup`,backups:`folder-backup`,bak:`folder-backup`,baks:`folder-backup`,base:`folder-base`,bases:`folder-base`,batch:`folder-batch`,batches:`folder-batch`,batchs:`folder-batch`,bench:`folder-benchmark`,benches:`folder-benchmark`,benchmark:`folder-benchmark`,benchmarks:`folder-benchmark`,bibliographies:`folder-bibliography`,bibliography:`folder-bibliography`,bicep:`folder-bicep`,bin:`folder-dist`,bkp:`folder-backup`,bkps:`folder-backup`,blender:`folder-blender`,"blender-assets":`folder-blender`,"blender-files":`folder-blender`,"blender-models":`folder-blender`,"blender-project":`folder-blender`,bloc:`folder-bloc`,blocs:`folder-bloc`,blog:`folder-docs`,book:`folder-bibliography`,books:`folder-bibliography`,bot:`folder-robot`,bots:`folder-robot`,bower_components:`folder-bower`,browser:`folder-public`,browsers:`folder-public`,build:`folder-dist`,buildkite:`folder-buildkite`,builds:`folder-dist`,built:`folder-dist`,bull:`folder-queue`,cache:`folder-temp`,cached:`folder-temp`,calc:`folder-functions`,calcs:`folder-functions`,calculation:`folder-functions`,calculations:`folder-functions`,cargo:`folder-rust`,cart:`folder-cart`,centos:`folder-linux`,cert:`folder-secure`,certificate:`folder-secure`,certificates:`folder-secure`,certs:`folder-secure`,cfg:`folder-config`,cfgs:`folder-config`,"cfn-gen":`folder-generator`,changes:`folder-delta`,changeset:`folder-changesets`,changesets:`folder-changesets`,chat:`folder-messages`,chats:`folder-messages`,ci:`folder-ci`,cipher:`folder-secure`,circleci:`folder-circleci`,cjs:`folder-javascript`,class:`folder-class`,classes:`folder-class`,claude:`folder-claude`,cli:`folder-command`,client:`folder-client`,clients:`folder-client`,cline_docs:`folder-cline`,clis:`folder-command`,"cloud-firestore":`folder-firestore`,"cloud-functions":`folder-cloud-functions`,cloudflare:`folder-cloudflare`,cloudfunctions:`folder-cloud-functions`,cluster:`folder-cluster`,clusters:`folder-cluster`,cmd:`folder-command`,cobol:`folder-cobol`,code:`folder-src`,color:`folder-theme`,colors:`folder-theme`,colour:`folder-theme`,colours:`folder-theme`,command:`folder-command`,commandline:`folder-command`,commands:`folder-command`,common:`folder-shared`,compiled:`folder-dist`,components:`folder-components`,composable:`folder-functions`,composables:`folder-functions`,concept:`folder-mock`,concepts:`folder-mock`,conf:`folder-config`,config:`folder-config`,configs:`folder-config`,configuration:`folder-config`,configurations:`folder-config`,confs:`folder-config`,connection:`folder-connection`,connections:`folder-connection`,console:`folder-console`,const:`folder-constant`,constant:`folder-constant`,constants:`folder-constant`,consts:`folder-constant`,container:`folder-container`,containers:`folder-container`,content:`folder-content`,contents:`folder-content`,context:`folder-context`,contexts:`folder-context`,contract:`folder-contract`,"contract-test":`folder-contract`,"contract-testing":`folder-contract`,"contract-tests":`folder-contract`,contracts:`folder-contract`,controller:`folder-controller`,controllers:`folder-controller`,controls:`folder-controller`,conversation:`folder-messages`,conversations:`folder-messages`,core:`folder-core`,coverage:`folder-coverage`,crash:`folder-error`,crashes:`folder-error`,crates:`folder-lib`,css:`folder-css`,cts:`folder-typescript`,cubit:`folder-bloc`,cubits:`folder-bloc`,cue:`folder-cue`,cues:`folder-cue`,cursor:`folder-cursor`,custom:`folder-custom`,customs:`folder-custom`,cypher:`folder-secure`,cypress:`folder-cypress`,dal:`folder-dal`,dart:`folder-dart`,dart_tool:`folder-dart`,dart_tools:`folder-dart`,data:`folder-database`,"data-access":`folder-dal`,"data-access-layer":`folder-dal`,database:`folder-database`,databases:`folder-database`,db:`folder-database`,deb:`folder-linux`,debian:`folder-linux`,debug:`folder-debug`,debugger:`folder-debug`,debugging:`folder-debug`,decorator:`folder-decorators`,decorators:`folder-decorators`,deepin:`folder-linux`,delta:`folder-delta`,deltas:`folder-delta`,demo:`folder-examples`,demos:`folder-examples`,dependencies:`folder-packages`,design:`folder-theme`,designs:`folder-theme`,desktop:`folder-desktop`,devcontainer:`folder-container`,devpackages:`folder-packages`,devtools:`folder-tools`,dialog:`folder-messages`,dialogs:`folder-messages`,diary:`folder-docs`,directive:`folder-directive`,directives:`folder-directive`,display:`folder-desktop`,dist:`folder-dist`,distribution:`folder-dist`,doc:`folder-docs`,docker:`folder-docker`,dockerfiles:`folder-docker`,dockerhub:`folder-docker`,docs:`folder-docs`,document:`folder-docs`,documentation:`folder-docs`,documents:`folder-docs`,download:`folder-download`,downloader:`folder-download`,downloaders:`folder-download`,downloads:`folder-download`,draft:`folder-mock`,drafts:`folder-mock`,drizzle:`folder-drizzle`,ds_store:`folder-macos`,dump:`folder-dump`,dumps:`folder-dump`,e2e:`folder-coverage`,easing:`folder-animation`,easings:`folder-animation`,element:`folder-element`,elements:`folder-element`,email:`folder-mail`,emails:`folder-mail`,enum:`folder-enum`,enums:`folder-enum`,env:`folder-environment`,environment:`folder-environment`,environments:`folder-environment`,envs:`folder-environment`,err:`folder-error`,error:`folder-error`,errors:`folder-error`,errs:`folder-error`,eslint:`folder-eslint`,"eslint-config":`folder-eslint`,"eslint-configs":`folder-eslint`,"eslint-plugin":`folder-eslint`,"eslint-plugins":`folder-eslint`,etc:`folder-other`,event:`folder-event`,events:`folder-event`,example:`folder-examples`,examples:`folder-examples`,expo:`folder-expo`,"expo-shared":`folder-expo`,export:`folder-export`,exported:`folder-export`,exports:`folder-export`,extension:`folder-plugin`,extensions:`folder-plugin`,external:`folder-lib`,externals:`folder-lib`,extra:`folder-other`,extras:`folder-other`,fastlane:`folder-fastlane`,favicon:`folder-favicon`,favicons:`folder-favicon`,feat:`folder-features`,feats:`folder-features`,feature:`folder-features`,features:`folder-features`,fig:`folder-images`,figs:`folder-images`,figure:`folder-images`,figures:`folder-images`,filter:`folder-filter`,filters:`folder-filter`,firebase:`folder-firebase`,"firebase-cloud-functions":`folder-cloud-functions`,"firebase-cloudfunctions":`folder-cloud-functions`,"firebase-firestore":`folder-firestore`,firestore:`folder-firestore`,fixture:`folder-mock`,fixtures:`folder-mock`,"flow-typed":`folder-flow`,flutter:`folder-flutter`,font:`folder-font`,fonts:`folder-font`,forgejo:`folder-forgejo`,form:`folder-form`,forms:`folder-form`,forum:`folder-messages`,fragments:`folder-components`,frontend:`folder-client`,frontends:`folder-client`,func:`folder-functions`,funcs:`folder-functions`,function:`folder-functions`,functions:`folder-functions`,game:`folder-console`,gamemaker:`folder-gamemaker`,gamemaker2:`folder-gamemaker`,games:`folder-console`,gcp:`folder-aws`,gemini:`folder-gemini-ai`,"gemini-ai":`folder-gemini-ai`,geminiai:`folder-gemini-ai`,gen:`folder-generator`,generated:`folder-generator`,generator:`folder-generator`,generators:`folder-generator`,gens:`folder-generator`,git:`folder-git`,gitea:`folder-gitea`,githooks:`folder-git`,github:`folder-github`,"github/issue_template":`folder-template`,"github/pull_request_template":`folder-template`,"github/workflows":`folder-gh-workflows`,gitlab:`folder-gitlab`,global:`folder-global`,glsl:`folder-shader`,go:`folder-go`,godot:`folder-godot`,"godot-cpp":`folder-godot`,golang:`folder-go`,gql:`folder-graphql`,gradle:`folder-gradle`,graphql:`folder-graphql`,guard:`folder-guard`,guards:`folder-guard`,gui:`folder-ui`,gulp:`folder-gulp`,"gulp-tasks":`folder-gulp`,"gulpfile.babel.js":`folder-gulp`,"gulpfile.js":`folder-gulp`,"gulpfile.mjs":`folder-gulp`,"gulpfile.ts":`folder-gulp`,gulpfiles:`folder-gulp`,handler:`folder-controller`,handlers:`folder-controller`,helm:`folder-helm`,helmchart:`folder-helm`,helmcharts:`folder-helm`,helper:`folder-helper`,helpers:`folder-helper`,hg:`folder-mercurial`,hgext:`folder-mercurial`,hghooks:`folder-mercurial`,histories:`folder-backup`,history:`folder-backup`,hlsl:`folder-shader`,home:`folder-home`,hook:`folder-hook`,hooks:`folder-hook`,html:`folder-views`,husky:`folder-husky`,i18n:`folder-i18n`,ico:`folder-images`,icon:`folder-images`,icons:`folder-images`,icos:`folder-images`,idea:`folder-intellij`,image:`folder-images`,images:`folder-images`,img:`folder-images`,imgs:`folder-images`,import:`folder-import`,imported:`folder-import`,imports:`folder-import`,in:`folder-input`,inc:`folder-include`,inc64:`folder-include`,include:`folder-include`,includes:`folder-include`,infra:`folder-server`,infrastructure:`folder-server`,input:`folder-input`,inputs:`folder-input`,integration:`folder-connection`,"integration-test":`folder-coverage`,"integration-tests":`folder-coverage`,integrations:`folder-connection`,interceptor:`folder-interceptor`,interceptors:`folder-interceptor`,interface:`folder-interface`,interfaces:`folder-interface`,internationalization:`folder-i18n`,inventories:`folder-server`,inventory:`folder-server`,io:`folder-input`,ios:`folder-ios`,ipad:`folder-macos`,iphone:`folder-macos`,ipod:`folder-macos`,ipynb:`folder-jupyter`,it:`folder-coverage`,j2:`folder-jinja`,java:`folder-java`,javascript:`folder-javascript`,javascripts:`folder-javascript`,jinja:`folder-jinja`,jinja2:`folder-jinja`,job:`folder-job`,jobs:`folder-job`,js:`folder-javascript`,json:`folder-json`,jsonc:`folder-json`,jsonl:`folder-json`,jsons:`folder-json`,jupyter:`folder-jupyter`,jwt:`folder-keys`,k8s:`folder-kubernetes`,key:`folder-keys`,keys:`folder-keys`,kit:`folder-tools`,kits:`folder-tools`,knowledge:`folder-docs`,kotlin:`folder-kotlin`,kql:`folder-kusto`,kubernetes:`folder-kubernetes`,kusto:`folder-kusto`,l10n:`folder-i18n`,lambda:`folder-functions`,lambdas:`folder-functions`,landing:`folder-home`,lang:`folder-i18n`,langs:`folder-i18n`,language:`folder-i18n`,languages:`folder-i18n`,layout:`folder-layout`,layouts:`folder-layout`,lefthook:`folder-lefthook`,"lefthook-local":`folder-lefthook`,less:`folder-less`,lib:`folder-lib`,lib64:`folder-lib`,libraries:`folder-lib`,library:`folder-lib`,libs:`folder-lib`,license:`folder-license`,licenses:`folder-license`,link:`folder-link`,links:`folder-link`,linux:`folder-linux`,linuxbsd:`folder-linux`,liquibase:`folder-liquibase`,locale:`folder-i18n`,locales:`folder-i18n`,localization:`folder-i18n`,log:`folder-log`,logging:`folder-log`,logic:`folder-functions`,logs:`folder-log`,lottie:`folder-lottie`,lottiefiles:`folder-lottie`,lotties:`folder-lottie`,lua:`folder-lua`,luau:`folder-luau`,mac:`folder-macos`,macbook:`folder-macos`,"macbook-air":`folder-macos`,macos:`folder-macos`,macosx:`folder-macos`,mail:`folder-mail`,mailers:`folder-mail`,mails:`folder-mail`,main:`folder-home`,manager:`folder-admin`,managers:`folder-admin`,mapping:`folder-mappings`,mappings:`folder-mappings`,markdown:`folder-markdown`,math:`folder-functions`,maths:`folder-functions`,md:`folder-markdown`,measure:`folder-benchmark`,measurement:`folder-benchmark`,measures:`folder-benchmark`,media:`folder-video`,messages:`folder-messages`,messaging:`folder-messages`,meta:`folder-meta`,"meta-inf":`folder-config`,metadata:`folder-meta`,metro:`folder-metro`,middleware:`folder-middleware`,middlewares:`folder-middleware`,migration:`folder-migrations`,migrations:`folder-migrations`,mint:`folder-linux`,misc:`folder-other`,miscellaneous:`folder-other`,mjml:`folder-mjml`,mjs:`folder-javascript`,mobile:`folder-mobile`,mobiles:`folder-mobile`,mock:`folder-mock`,mocks:`folder-mock`,mod:`folder-plugin`,modding:`folder-plugin`,model:`folder-class`,models:`folder-class`,moderator:`folder-admin`,moderators:`folder-admin`,mods:`folder-plugin`,module:`folder-plugin`,modules:`folder-plugin`,mojo:`folder-mojo`,molecule:`folder-molecule`,molecules:`folder-molecule`,moon:`folder-moon`,motion:`folder-animation`,motions:`folder-animation`,movie:`folder-video`,movies:`folder-video`,mq:`folder-queue`,mts:`folder-typescript`,music:`folder-audio`,navigation:`folder-routes`,navigations:`folder-routes`,netlify:`folder-netlify`,news:`folder-docs`,next:`folder-next`,nginx:`folder-nginx`,node:`folder-node`,node_modules:`folder-node`,nodejs:`folder-node`,note:`folder-docs`,notebook:`folder-jupyter`,notebooks:`folder-jupyter`,notes:`folder-docs`,now:`folder-vercel`,nuxt:`folder-nuxt`,"nyc-output":`folder-coverage`,nyc_output:`folder-coverage`,obsidian:`folder-obsidian`,opencode:`folder-opencode`,option:`folder-config`,options:`folder-config`,organism:`folder-organism`,organisms:`folder-organism`,osx:`folder-macos`,other:`folder-other`,others:`folder-other`,out:`folder-dist`,output:`folder-dist`,outputs:`folder-dist`,package:`folder-packages`,packages:`folder-packages`,pact:`folder-contract`,pacts:`folder-contract`,page:`folder-views`,pages:`folder-views`,palette:`folder-theme`,palettes:`folder-theme`,partial:`folder-include`,partials:`folder-include`,patches:`folder-git`,pdf:`folder-pdf`,pdfs:`folder-pdf`,"pdm-build":`folder-pdm`,"pdm-plugins":`folder-pdm`,perf:`folder-benchmark`,performance:`folder-benchmark`,phone:`folder-mobile`,phones:`folder-mobile`,photo:`folder-images`,photograph:`folder-images`,photographs:`folder-images`,photos:`folder-images`,php:`folder-php`,phpmailer:`folder-phpmailer`,pic:`folder-images`,pics:`folder-images`,picture:`folder-images`,pictures:`folder-images`,pipe:`folder-pipe`,pipeline:`folder-pipe`,pipelines:`folder-pipe`,pipes:`folder-pipe`,pkg:`folder-packages`,pkgs:`folder-packages`,plastic:`folder-plastic`,playground:`folder-sandbox`,playgrounds:`folder-sandbox`,playlist:`folder-audio`,playlists:`folder-audio`,plugin:`folder-plugin`,plugins:`folder-plugin`,policies:`folder-policy`,policy:`folder-policy`,popos:`folder-linux`,portability:`folder-mobile`,portable:`folder-mobile`,post:`folder-docs`,postman:`folder-postman`,posts:`folder-docs`,powershell:`folder-powershell`,pref:`folder-config`,preference:`folder-config`,preferences:`folder-config`,prefs:`folder-config`,presentation:`folder-ui`,preview:`folder-review`,previews:`folder-review`,prisma:`folder-prisma`,"prisma/schema":`folder-prisma`,private:`folder-private`,profiling:`folder-benchmark`,proj:`folder-project`,project:`folder-project`,projects:`folder-project`,projs:`folder-project`,prompt:`folder-prompts`,prompts:`folder-prompts`,properties:`folder-config`,props:`folder-config`,proto:`folder-proto`,protobuf:`folder-proto`,protobufs:`folder-proto`,protos:`folder-proto`,provider:`folder-controller`,providers:`folder-controller`,proxy:`folder-public`,ps:`folder-powershell`,ps1:`folder-powershell`,ps4:`folder-console`,ps5:`folder-console`,public:`folder-public`,public_html:`folder-views`,pwa:`folder-client`,pycache:`folder-python`,pytest_cache:`folder-python`,python:`folder-python`,pytorch:`folder-pytorch`,quasar:`folder-quasar`,queue:`folder-queue`,queues:`folder-queue`,r:`folder-r`,recordings:`folder-audio`,release:`folder-dist`,remote:`folder-connection`,remotes:`folder-connection`,repo:`folder-repository`,report:`folder-resource`,reports:`folder-resource`,repos:`folder-repository`,repositories:`folder-repository`,repository:`folder-repository`,res:`folder-resource`,resolver:`folder-resolver`,resolvers:`folder-resolver`,resource:`folder-resource`,resources:`folder-resource`,restapi:`folder-api`,review:`folder-review`,reviewed:`folder-review`,reviews:`folder-review`,revisal:`folder-review`,revisals:`folder-review`,robot:`folder-robot`,robots:`folder-robot`,router:`folder-routes`,routers:`folder-routes`,routes:`folder-routes`,routing:`folder-routes`,rule:`folder-rules`,rules:`folder-rules`,rust:`folder-rust`,salt:`folder-salt`,saltstack:`folder-salt`,sample:`folder-examples`,"sample-data":`folder-examples`,samples:`folder-examples`,sandbox:`folder-sandbox`,sandboxes:`folder-sandbox`,sass:`folder-sass`,scala:`folder-scala`,schema:`folder-class`,schemas:`folder-class`,sconf_temp:`folder-scons`,scons:`folder-scons`,scons_cache:`folder-scons`,screen:`folder-views`,screengrab:`folder-images`,screengrabs:`folder-images`,screens:`folder-views`,screenshot:`folder-images`,screenshots:`folder-images`,script:`folder-scripts`,scripting:`folder-scripts`,scripts:`folder-scripts`,scss:`folder-sass`,secret:`folder-keys`,secrets:`folder-keys`,secure:`folder-secure`,security:`folder-secure`,seed:`folder-seeders`,seeders:`folder-seeders`,seeding:`folder-seeders`,seeds:`folder-seeders`,server:`folder-server`,serverless:`folder-serverless`,serverpackages:`folder-packages`,servers:`folder-server`,service:`folder-controller`,services:`folder-controller`,setting:`folder-config`,settings:`folder-config`,shader:`folder-shader`,shaders:`folder-shader`,shared:`folder-shared`,shop:`folder-cart`,shopping:`folder-cart`,"shopping-cart":`folder-cart`,sim:`folder-simulations`,sims:`folder-simulations`,simulation:`folder-simulations`,simulations:`folder-simulations`,site:`folder-public`,sketch:`folder-mock`,sketches:`folder-mock`,skill:`folder-skills`,skills:`folder-skills`,smtp:`folder-mail`,snap:`folder-snapcraft`,snapcraft:`folder-snapcraft`,snapshots:`folder-test`,snippet:`folder-snippet`,snippets:`folder-snippet`,song:`folder-audio`,songs:`folder-audio`,sound:`folder-audio`,sounds:`folder-audio`,source:`folder-src`,sources:`folder-src`,spa:`folder-client`,spec:`folder-test`,specs:`folder-test`,spellcheck:`folder-syntax`,spellcheckers:`folder-syntax`,sql:`folder-database`,src:`folder-src`,"src-tauri":`folder-src-tauri`,srcs:`folder-src`,ssl:`folder-secure`,stack:`folder-stack`,stacks:`folder-stack`,start:`folder-home`,static:`folder-resource`,stencil:`folder-stencil`,store:`folder-store`,stores:`folder-store`,stories:`folder-storybook`,storybook:`folder-storybook`,style:`folder-css`,styles:`folder-css`,stylesheet:`folder-css`,stylesheets:`folder-css`,stylus:`folder-stylus`,sublime:`folder-sublime`,submodules:`folder-git`,supabase:`folder-supabase`,svelte:`folder-svelte`,"svelte-kit":`folder-svelte`,svg:`folder-svg`,svgs:`folder-svg`,switch:`folder-console`,syntax:`folder-syntax`,syntaxes:`folder-syntax`,"table-of-contents":`folder-toc`,target:`folder-target`,taskfile:`folder-taskfile`,taskfiles:`folder-taskfile`,tasks:`folder-tasks`,television:`folder-television`,temp:`folder-temp`,template:`folder-template`,templates:`folder-template`,terraform:`folder-terraform`,test:`folder-test`,testfiles:`folder-test`,testing:`folder-test`,tests:`folder-test`,texture:`folder-images`,textures:`folder-images`,theme:`folder-theme`,themes:`folder-theme`,"third-party":`folder-lib`,thirdparty:`folder-lib`,tickets:`folder-tasks`,tls:`folder-secure`,tmp:`folder-temp`,toc:`folder-toc`,token:`folder-keys`,tokens:`folder-keys`,toolbox:`folder-tools`,toolboxes:`folder-tools`,tooling:`folder-tools`,toolkit:`folder-tools`,toolkits:`folder-tools`,tools:`folder-tools`,torch:`folder-pytorch`,transition:`folder-animation`,transitions:`folder-animation`,translate:`folder-i18n`,translation:`folder-i18n`,translations:`folder-i18n`,trash:`folder-trash`,trigger:`folder-trigger`,triggers:`folder-trigger`,ts:`folder-typescript`,turbo:`folder-turborepo`,tv:`folder-television`,tx:`folder-i18n`,typeface:`folder-font`,typefaces:`folder-font`,types:`folder-typescript`,typescript:`folder-typescript`,typings:`folder-typescript`,ubuntu:`folder-linux`,ui:`folder-ui`,unity:`folder-unity`,unix:`folder-linux`,update:`folder-update`,updates:`folder-update`,upgrade:`folder-update`,upgrades:`folder-update`,upload:`folder-upload`,uploads:`folder-upload`,util:`folder-utils`,utilities:`folder-utils`,utility:`folder-utils`,utils:`folder-utils`,ux:`folder-ui`,validation:`folder-rules`,validations:`folder-rules`,validator:`folder-rules`,validators:`folder-rules`,vector:`folder-svg`,vectors:`folder-svg`,vendor:`folder-lib`,vendors:`folder-lib`,venv:`folder-environment`,vercel:`folder-vercel`,verdaccio:`folder-verdaccio`,vid:`folder-video`,video:`folder-video`,videos:`folder-video`,vids:`folder-video`,view:`folder-views`,views:`folder-views`,vm:`folder-vm`,vms:`folder-vm`,voice:`folder-audio`,voices:`folder-audio`,vscode:`folder-vscode`,"vscode-test":`folder-vscode`,vue:`folder-vue`,vuepress:`folder-vuepress`,wakatime:`folder-wakatime`,web:`folder-public`,webpack:`folder-webpack`,website:`folder-public`,websites:`folder-public`,widget:`folder-components`,widgets:`folder-components`,wiki:`folder-docs`,win:`folder-windows`,win10:`folder-windows`,win11:`folder-windows`,win32:`folder-windows`,windows:`folder-windows`,windows10:`folder-windows`,windows11:`folder-windows`,windowsnt:`folder-windows`,windowsxp:`folder-windows`,winnt:`folder-windows`,winxp:`folder-windows`,"wordpress-org":`folder-wordpress`,"wp-content":`folder-wordpress`,wsl:`folder-linux`,www:`folder-public`,wwwroot:`folder-public`,xbox:`folder-console`,xtask:`folder-scripts`,yarn:`folder-yarn`,zeabur:`folder-zeabur`,zed:`folder-zed`},Ja={".autorc":`auto_light`,".browserslistrc":`browserlist_light`,".bun-version":`bun_light`,".codeclimate.yml":`code-climate_light`,".config/releaserc":`semantic-release_light`,".config/releaserc.cjs":`semantic-release_light`,".config/releaserc.cts":`semantic-release_light`,".config/releaserc.js":`semantic-release_light`,".config/releaserc.json":`semantic-release_light`,".config/releaserc.json5":`semantic-release_light`,".config/releaserc.jsonc":`semantic-release_light`,".config/releaserc.mjs":`semantic-release_light`,".config/releaserc.mts":`semantic-release_light`,".config/releaserc.toml":`semantic-release_light`,".config/releaserc.ts":`semantic-release_light`,".config/releaserc.yaml":`semantic-release_light`,".config/releaserc.yml":`semantic-release_light`,".config/stylelintrc":`stylelint_light`,".config/stylelintrc.cjs":`stylelint_light`,".config/stylelintrc.cts":`stylelint_light`,".config/stylelintrc.js":`stylelint_light`,".config/stylelintrc.json":`stylelint_light`,".config/stylelintrc.json5":`stylelint_light`,".config/stylelintrc.jsonc":`stylelint_light`,".config/stylelintrc.mjs":`stylelint_light`,".config/stylelintrc.mts":`stylelint_light`,".config/stylelintrc.toml":`stylelint_light`,".config/stylelintrc.ts":`stylelint_light`,".config/stylelintrc.yaml":`stylelint_light`,".config/stylelintrc.yml":`stylelint_light`,".copilotignore":`copilot_light`,".cursor":`cursor_light`,".cursor.json":`cursor_light`,".cursorignore":`cursor_light`,".cursorindexingignore":`cursor_light`,".cursorrc":`cursor_light`,".cursorrules":`cursor_light`,".drone.yml":`drone_light`,".easignore":`expo_light`,".nano-staged.cjs":`nano-staged_light`,".nano-staged.js":`nano-staged_light`,".nano-staged.json":`nano-staged_light`,".nano-staged.mjs":`nano-staged_light`,".nanostagedrc":`nano-staged_light`,".nowignore":`vercel_light`,".pnpmfile.cjs":`pnpm_light`,".releaserc":`semantic-release_light`,".releaserc.cjs":`semantic-release_light`,".releaserc.cts":`semantic-release_light`,".releaserc.js":`semantic-release_light`,".releaserc.json":`semantic-release_light`,".releaserc.json5":`semantic-release_light`,".releaserc.jsonc":`semantic-release_light`,".releaserc.mjs":`semantic-release_light`,".releaserc.mts":`semantic-release_light`,".releaserc.toml":`semantic-release_light`,".releaserc.ts":`semantic-release_light`,".releaserc.yaml":`semantic-release_light`,".releaserc.yml":`semantic-release_light`,".rubocop-todo.yml":`rubocop_light`,".rubocop.yml":`rubocop_light`,".rubocop_todo.yml":`rubocop_light`,".shellcheckrc":`shellcheck_light`,".stylelintcache":`stylelint_light`,".stylelintignore":`stylelint_light`,".stylelintrc":`stylelint_light`,".stylelintrc.cjs":`stylelint_light`,".stylelintrc.cts":`stylelint_light`,".stylelintrc.js":`stylelint_light`,".stylelintrc.json":`stylelint_light`,".stylelintrc.json5":`stylelint_light`,".stylelintrc.jsonc":`stylelint_light`,".stylelintrc.mjs":`stylelint_light`,".stylelintrc.mts":`stylelint_light`,".stylelintrc.toml":`stylelint_light`,".stylelintrc.ts":`stylelint_light`,".stylelintrc.yaml":`stylelint_light`,".stylelintrc.yml":`stylelint_light`,".vercelignore":`vercel_light`,".wakatime-project":`wakatime_light`,"auto-config.js":`auto_light`,"auto-config.json":`auto_light`,"auto-config.ts":`auto_light`,"auto-config.yaml":`auto_light`,"auto-config.yml":`auto_light`,"auto.config.js":`auto_light`,"auto.config.ts":`auto_light`,browserslist:`browserlist_light`,"bun.lock":`bun_light`,"bun.lockb":`bun_light`,"bunfig.toml":`bun_light`,"circle.yml":`circleci_light`,"copilot-instructions.md":`copilot_light`,"deno.json":`deno_light`,"deno.jsonc":`deno_light`,"deno.lock":`deno_light`,"eas.json":`expo_light`,hosts:`hosts_light`,"jsr.json":`jsr_light`,"jsr.jsonc":`jsr_light`,"nano-staged.cjs":`nano-staged_light`,"nano-staged.js":`nano-staged_light`,"nano-staged.json":`nano-staged_light`,"nano-staged.mjs":`nano-staged_light`,"netlify.json":`netlify_light`,"netlify.toml":`netlify_light`,"netlify.yaml":`netlify_light`,"netlify.yml":`netlify_light`,"next.config.js":`next_light`,"next.config.mjs":`next_light`,"next.config.mts":`next_light`,"next.config.ts":`next_light`,"now.json":`vercel_light`,"openapi.json":`openapi_light`,"openapi.yaml":`openapi_light`,"openapi.yml":`openapi_light`,"opencode.json":`opencode_light`,"opencode.jsonc":`opencode_light`,"payload.config.js":`payload_light`,"payload.config.mjs":`payload_light`,"payload.config.mts":`payload_light`,"payload.config.ts":`payload_light`,"pnpm-lock.yaml":`pnpm_light`,"pnpm-workspace.yaml":`pnpm_light`,"release.config.cjs":`semantic-release_light`,"release.config.cts":`semantic-release_light`,"release.config.js":`semantic-release_light`,"release.config.json":`semantic-release_light`,"release.config.json5":`semantic-release_light`,"release.config.jsonc":`semantic-release_light`,"release.config.mjs":`semantic-release_light`,"release.config.mts":`semantic-release_light`,"release.config.toml":`semantic-release_light`,"release.config.ts":`semantic-release_light`,"release.config.yaml":`semantic-release_light`,"release.config.yml":`semantic-release_light`,"remix.config.js":`remix_light`,"remix.config.ts":`remix_light`,sconscript:`scons_light`,sconstruct:`scons_light`,scsub:`scons_light`,shellcheckrc:`shellcheck_light`,"snowpack.config.cjs":`snowpack_light`,"snowpack.config.cts":`snowpack_light`,"snowpack.config.js":`snowpack_light`,"snowpack.config.json":`snowpack_light`,"snowpack.config.mjs":`snowpack_light`,"snowpack.config.mts":`snowpack_light`,"snowpack.config.ts":`snowpack_light`,"snowpack.deps.json":`snowpack_light`,"stitches.config.js":`stitches_light`,"stitches.config.ts":`stitches_light`,"stylelint.config.cjs":`stylelint_light`,"stylelint.config.cts":`stylelint_light`,"stylelint.config.js":`stylelint_light`,"stylelint.config.json":`stylelint_light`,"stylelint.config.json5":`stylelint_light`,"stylelint.config.jsonc":`stylelint_light`,"stylelint.config.mjs":`stylelint_light`,"stylelint.config.mts":`stylelint_light`,"stylelint.config.toml":`stylelint_light`,"stylelint.config.ts":`stylelint_light`,"stylelint.config.yaml":`stylelint_light`,"stylelint.config.yml":`stylelint_light`,"turbo.json":`turborepo_light`,"turbo.jsonc":`turborepo_light`,"vercel.json":`vercel_light`,"vercel.ts":`vercel_light`,"warp.md":`warp_light`,"zeabur.json":`zeabur_light`,"zeabur.json5":`zeabur_light`,"zeabur.jsonc":`zeabur_light`,"zeabur.toml":`zeabur_light`,"zeabur.yaml":`zeabur_light`,"zeabur.yml":`zeabur_light`},Ya={".wakatime-project":`wakatime_light`,ai:`adobe-illustrator_light`,ait:`adobe-illustrator_light`,blink:`blink_light`,cr:`crystal_light`,"drone.yml":`drone_light`,ecr:`crystal_light`,fen:`chess_light`,hcl:`hcl_light`,huff:`huff_light`,iuml:`uml_light`,j2:`jinja_light`,jinja:`jinja_light`,"jinja-html":`jinja_light`,jinja2:`jinja_light`,"openapi.json":`openapi_light`,"openapi.yaml":`openapi_light`,"openapi.yml":`openapi_light`,pgn:`chess_light`,plantuml:`uml_light`,psb:`adobe-photoshop_light`,psd:`adobe-photoshop_light`,psdt:`adobe-photoshop_light`,pu:`uml_light`,puml:`uml_light`,tldr:`tldraw_light`,tofu:`opentofu_light`,toml:`toml_light`,verse:`verse_light`,wsd:`uml_light`,zeabur:`zeabur_light`},Xa={"-cursor":`folder-cursor_light`,"-idea":`folder-intellij_light`,"-j2":`folder-jinja_light`,"-jinja":`folder-jinja_light`,"-jinja2":`folder-jinja_light`,".cursor":`folder-cursor_light`,".idea":`folder-intellij_light`,".j2":`folder-jinja_light`,".jinja":`folder-jinja_light`,".jinja2":`folder-jinja_light`,__cursor__:`folder-cursor_light`,__idea__:`folder-intellij_light`,__j2__:`folder-jinja_light`,__jinja2__:`folder-jinja_light`,__jinja__:`folder-jinja_light`,_cursor:`folder-cursor_light`,_idea:`folder-intellij_light`,_j2:`folder-jinja_light`,_jinja:`folder-jinja_light`,_jinja2:`folder-jinja_light`,cursor:`folder-cursor_light`,idea:`folder-intellij_light`,j2:`folder-jinja_light`,jinja:`folder-jinja_light`,jinja2:`folder-jinja_light`},Za={pug:``,just:``,json:``,playwright:``,xml:``,javascript:``,rocket:``,routing:``,settings:``,typedoc:``,"markdoc-config":``,"astro-config":``,visualstudio:``,"go-mod":``,"python-misc":``,ruff:``,uv:``,scons:``,console:``,excalidraw:``,gradle:``,license:``,unlicense:``,key:``,keystatic:``,ruby:``,gemfile:``,rubocop:``,rspec:``,swift:``,docker:``,latexmk:``,email:``,graphql:``,xaml:``,happo:``,chromatic:``,git:``,lua:``,r:``,dart:``,cmake:``,semgrep:``,"vue-config":``,nuxt:``,harmonix:``,lock:``,angular:``,mjml:``,vercel:``,liara:``,verdaccio:``,payload:``,next:``,remark:``,remix:``,laravel:``,vfl:``,kl:``,postcss:``,posthtml:``,todo:``,cabal:``,http:``,graphcool:``,webpack:``,rstack:``,lynx:``,ionic:``,gulp:``,nodejs:``,npm:``,yarn:``,android:``,tune:``,turborepo:``,babel:``,blitz:``,contributing:``,readme:``,changelog:``,architecture:``,credits:``,authors:``,flow:``,favicon:``,karma:``,bithound:``,svgo:``,appveyor:``,travis:``,codecov:``,sonarcloud:``,protractor:``,fusebox:``,heroku:``,editorconfig:``,bower:``,eslint:``,conduct:``,watchman:``,aurelia:``,auto:``,mocha:``,jenkins:``,firebase:``,rollup:``,hack:``,hardhat:``,stylelint:``,"code-climate":``,prettier:``,renovate:``,apollo:``,nodemon:``,webhint:``,browserlist:``,snyk:``,drone:``,opencode:``,sequelize:``,gatsby:``,wakatime:``,circleci:``,cloudfoundry:``,grunt:``,jest:``,fastlane:``,helm:``,wallaby:``,stencil:``,makefile:``,"semantic-release":``,bitbucket:``,bazel:``,"godot-assets":``,"azure-pipelines":``,vagrant:``,prisma:``,istanbul:``,tailwindcss:``,buildkite:``,netlify:``,svelte:``,nest:``,moon:``,percy:``,gitpod:``,stackblitz:``,codeowners:``,gcp:``,amplify:``,husky:``,tilt:``,capacitor:``,adonis:``,meson:``,commitizen:``,commitlint:``,buck:``,nx:``,dune:``,roadmap:``,nuget:``,stryker:``,modernizr:``,slug:``,stitches:``,nginx:``,minecraft:``,replit:``,duc:``,snowpack:``,quasar:``,dependabot:``,vite:``,vitest:``,velite:``,rolldown:``,lerna:``,windicss:``,textlint:``,vlang:``,sentry:``,contentlayer:``,phpunit:``,"php-cs-fixer":``,robots:``,tsconfig:``,tauri:``,jsconfig:``,maven:``,serverless:``,supabase:``,ember:``,horusec:``,poetry:``,pdm:``,parcel:``,astyle:``,lighthouse:``,svgr:``,rome:``,cypress:``,plop:``,tobimake:``,gleam:``,pnpm:``,gridsome:``,steadybit:``,caddy:``,openapi:``,swagger:``,bun:``,"nano-staged":``,knip:``,taskfile:``,craco:``,mercurial:``,deno:``,plastic:``,typst:``,unocss:``,"ifanr-cloud":``,concourse:``,syncpack:``,werf:``,luau:``,wally:``,panda:``,biome:``,esbuild:``,drizzle:``,puppeteer:``,garden:``,pkl:``,kubernetes:``,phpstan:``,screwdriver:``,snapcraft:``,kcl:``,clangd:``,markdownlint:``,trigger:``,deepsource:``,jsr:``,"coderabbit-ai":``,"gemini-ai":``,taze:``,wxt:``,lefthook:``,label:``,zeabur:``,copilot:``,"pre-commit":``,lintstaged:``,histoire:``,installation:``,"github-sponsors":``,"minecraft-fabric":``,umi:``,"pm2-ecosystem":``,hosts:``,citation:``,xmake:``,wrangler:``,cline:``,packship:``,snakemake:``,hadolint:``,tsdoc:``,oxc:``,claude:``,cursor:``,metro:``,bashly:``,google:``,shellcheck:``,warp:``,skill:``,tsdown:``,appwrite:``,expo:``,slint:``,html:``,markdown:``,blink:``,css:``,sass:``,less:``,json_schema:``,hjson:``,jinja:``,proto:``,prompt:``,sublime:``,simulink:``,quarto:``,twine:``,yaml:``,toml:``,toon:``,image:``,palette:``,react:``,react_ts:``,typescript:``,"typescript-def":``,markdoc:``,markojs:``,astro:``,pdf:``,table:``,vscode:``,varnish:``,database:``,kusto:``,csharp:``,qsharp:``,zip:``,vala:``,zig:``,exe:``,hex:``,java:``,jar:``,javaclass:``,c3:``,c:``,h:``,hip:``,cpp:``,hpp:``,"objective-c":``,"objective-cpp":``,rc:``,go:``,python:``,url:``,powershell:``,word:``,certificate:``,font:``,lib:``,bibliography:``,"bibtex-style":``,dll:``,fsharp:``,arduino:``,tex:``,context:``,"doctex-installer":``,bbx:``,cbx:``,lbx:``,powerpoint:``,video:``,virtual:``,vedic:``,audio:``,coffee:``,document:``,lyric:``,rust:``,raml:``,haskell:``,kotlin:``,otne:``,diff:``,clojure:``,groovy:``,dart_generated:``,actionscript:``,mxml:``,autohotkey:``,flash:``,"adobe-swc":``,swc:``,assembly:``,vue:``,ocaml:``,odin:``,onnx:``,"javascript-map":``,"css-map":``,handlebars:``,perl:``,haxe:``,"test-ts":``,"test-jsx":``,"test-js":``,puppet:``,elixir:``,livescript:``,erlang:``,twig:``,julia:``,elm:``,purescript:``,smarty:``,stylus:``,reason:``,bucklescript:``,merlin:``,verilog:``,mathematica:``,wolframlanguage:``,nunjucks:``,robot:``,solidity:``,autoit:``,haml:``,yang:``,terraform:``,opentofu:``,applescript:``,cake:``,cucumber:``,nim:``,apiblueprint:``,riot:``,coldfusion:``,nix:``,slim:``,restql:``,kivy:``,sbt:``,gitlab:``,figma:``,huff:``,crystal:``,cuda:``,log:``,dotjs:``,ejs:``,processing:``,storybook:``,wepy:``,hcl:``,san:``,quokka:``,django:``,red:``,foxpro:``,i18n:``,webassembly:``,jupyter:``,d:``,mdx:``,mdsvex:``,ballerina:``,racket:``,mint:``,velocity:``,godot:``,azure:``,razor:``,abc:``,asciidoc:``,edge:``,scheme:``,lisp:``,"3d":``,svg:``,"adobe-illustrator":``,"adobe-photoshop":``,vim:``,moonscript:``,advpl:``,disc:``,fortran:``,tcl:``,liquid:``,prolog:``,coconut:``,sketch:``,pawn:``,forth:``,uml:``,dhall:``,sml:``,opam:``,imba:``,drawio:``,pascal:``,unity:``,sas:``,command:``,denizenscript:``,search:``,rescript:``,"rescript-interface":``,brainfuck:``,bicep:``,cobol:``,grain:``,lolcode:``,idris:``,pipeline:``,opa:``,scala:``,lilypond:``,chess:``,gemini:``,php:``,ada:``,coala:``,dinophp:``,teal:``,template:``,shader:``,siyuan:``,ndst:``,tobi:``,capnp:``,tree:``,cadence:``,antlr:``,stylable:``,pinejs:``,gamemaker:``,tldraw:``,mermaid:``,mojo:``,roblox:``,rbxmk:``,spwn:``,templ:``,chrome:``,stan:``,abap:``,lottie:``,"apps-script":``,verified:``,bruno:``,cairo:``,"grafana-alloy":``,freemarker:``,tsil:``,hurl:``,cds:``,verse:``,sway:``,"bench-ts":``,"bench-jsx":``,"bench-js":``,controller:``,"dependencies-update":``,subtitles:``,beancount:``,epub:``,regedit:``,gnuplot:``,coloredpetrinets:``,pytorch:``,blender:``,"vanilla-extract":``,toc:``,cue:``,lean:``,salt:``,macaulay2:``,uiua:``,mrpack:``,"folder-rust":``,"folder-robot":``,"folder-src":``,"folder-dist":``,"folder-css":``,"folder-sass":``,"folder-television":``,"folder-desktop":``,"folder-console":``,"folder-images":``,"folder-scripts":``,"folder-node":``,"folder-javascript":``,"folder-json":``,"folder-font":``,"folder-bower":``,"folder-test":``,"folder-directive":``,"folder-jinja":``,"folder-markdown":``,"folder-pdm":``,"folder-php":``,"folder-phpmailer":``,"folder-sublime":``,"folder-docs":``,"folder-gh-workflows":``,"folder-git":``,"folder-github":``,"folder-gitea":``,"folder-gitlab":``,"folder-forgejo":``,"folder-vscode":``,"folder-views":``,"folder-vue":``,"folder-vuepress":``,"folder-expo":``,"folder-config":``,"folder-i18n":``,"folder-components":``,"folder-verdaccio":``,"folder-aurelia":``,"folder-resource":``,"folder-lib":``,"folder-theme":``,"folder-webpack":``,"folder-global":``,"folder-public":``,"folder-include":``,"folder-docker":``,"folder-nginx":``,"folder-astro":``,"folder-database":``,"folder-migrations":``,"folder-log":``,"folder-target":``,"folder-temp":``,"folder-aws":``,"folder-audio":``,"folder-video":``,"folder-kubernetes":``,"folder-import":``,"folder-export":``,"folder-wakatime":``,"folder-circleci":``,"folder-wordpress":``,"folder-gradle":``,"folder-coverage":``,"folder-class":``,"folder-other":``,"folder-lua":``,"folder-turborepo":``,"folder-typescript":``,"folder-graphql":``,"folder-routes":``,"folder-ci":``,"folder-eslint":``,"folder-benchmark":``,"folder-messages":``,"folder-less":``,"folder-gulp":``,"folder-python":``,"folder-r":``,"folder-sandbox":``,"folder-scons":``,"folder-mojo":``,"folder-moon":``,"folder-debug":``,"folder-fastlane":``,"folder-plugin":``,"folder-middleware":``,"folder-controller":``,"folder-ansible":``,"folder-server":``,"folder-client":``,"folder-tasks":``,"folder-android":``,"folder-ios":``,"folder-ui":``,"folder-upload":``,"folder-download":``,"folder-tools":``,"folder-helper":``,"folder-serverless":``,"folder-api":``,"folder-app":``,"folder-apollo":``,"folder-archive":``,"folder-backup":``,"folder-batch":``,"folder-buildkite":``,"folder-cluster":``,"folder-command":``,"folder-constant":``,"folder-container":``,"folder-content":``,"folder-context":``,"folder-core":``,"folder-delta":``,"folder-dump":``,"folder-examples":``,"folder-environment":``,"folder-functions":``,"folder-generator":``,"folder-hook":``,"folder-trigger":``,"folder-job":``,"folder-keys":``,"folder-layout":``,"folder-mail":``,"folder-mappings":``,"folder-meta":``,"folder-changesets":``,"folder-packages":``,"folder-shared":``,"folder-shader":``,"folder-stack":``,"folder-template":``,"folder-utils":``,"folder-supabase":``,"folder-private":``,"folder-linux":``,"folder-windows":``,"folder-macos":``,"folder-error":``,"folder-event":``,"folder-secure":``,"folder-custom":``,"folder-mock":``,"folder-syntax":``,"folder-vm":``,"folder-stylus":``,"folder-flow":``,"folder-rules":``,"folder-review":``,"folder-animation":``,"folder-guard":``,"folder-prisma":``,"folder-pipe":``,"folder-interceptor":``,"folder-svg":``,"folder-nuxt":``,"folder-terraform":``,"folder-mobile":``,"folder-stencil":``,"folder-firebase":``,"folder-firestore":``,"folder-cloud-functions":``,"folder-svelte":``,"folder-update":``,"folder-intellij":``,"folder-azure-pipelines":``,"folder-mjml":``,"folder-admin":``,"folder-jupyter":``,"folder-scala":``,"folder-connection":``,"folder-quasar":``,"folder-next":``,"folder-dal":``,"folder-cobol":``,"folder-yarn":``,"folder-husky":``,"folder-storybook":``,"folder-base":``,"folder-cart":``,"folder-home":``,"folder-project":``,"folder-prompts":``,"folder-interface":``,"folder-netlify":``,"folder-enum":``,"folder-contract":``,"folder-helm":``,"folder-queue":``,"folder-vercel":``,"folder-cypress":``,"folder-decorators":``,"folder-java":``,"folder-resolver":``,"folder-angular":``,"folder-unity":``,"folder-pdf":``,"folder-proto":``,"folder-plastic":``,"folder-gamemaker":``,"folder-mercurial":``,"folder-godot":``,"folder-lottie":``,"folder-taskfile":``,"folder-drizzle":``,"folder-cloudflare":``,"folder-seeders":``,"folder-store":``,"folder-bicep":``,"folder-snapcraft":``,"folder-flutter":``,"folder-snippet":``,"folder-element":``,"folder-src-tauri":``,"folder-favicon":``,"folder-features":``,"folder-lefthook":``,"folder-bloc":``,"folder-powershell":``,"folder-repository":``,"folder-luau":``,"folder-obsidian":``,"folder-trash":``,"folder-cline":``,"folder-liquibase":``,"folder-dart":``,"folder-zeabur":``,"folder-kusto":``,"folder-policy":``,"folder-attachment":``,"folder-bibliography":``,"folder-link":``,"folder-pytorch":``,"folder-blender":``,"folder-atom":``,"folder-molecule":``,"folder-organism":``,"folder-claude":``,"folder-cursor":``,"folder-gemini-ai":``,"folder-opencode":``,"folder-input":``,"folder-salt":``,"folder-simulations":``,"folder-metro":``,"folder-filter":``,"folder-toc":``,"folder-cue":``,"folder-license":``,"folder-form":``,"folder-postman":``,"folder-skills":``,"folder-zed":``,"folder-appwrite":``,"folder-assembly":``,"folder-go":``,"folder-kotlin":``,file:``,folder:``,scons_light:``,rubocop_light:``,vercel_light:``,payload_light:``,next_light:``,remix_light:``,turborepo_light:``,auto_light:``,stylelint_light:``,"code-climate_light":``,browserlist_light:``,drone_light:``,opencode_light:``,wakatime_light:``,circleci_light:``,"semantic-release_light":``,netlify_light:``,stitches_light:``,snowpack_light:``,pnpm_light:``,openapi_light:``,bun_light:``,"nano-staged_light":``,deno_light:``,jsr_light:``,zeabur_light:``,copilot_light:``,hosts_light:``,cursor_light:``,shellcheck_light:``,warp_light:``,expo_light:``,blink_light:``,jinja_light:``,toml_light:``,opentofu_light:``,huff_light:``,crystal_light:``,hcl_light:``,"adobe-illustrator_light":``,"adobe-photoshop_light":``,uml_light:``,chess_light:``,tldraw_light:``,verse_light:``,"folder-jinja_light":``,"folder-intellij_light":``,"folder-cursor_light":``};function Qa(e,t){return Object.hasOwn(e,t)}function $a(e,t,n,r){let i=e[n];return!r||!Qa(t,n)?i:t[n]}function eo(){return typeof window<`u`&&typeof window.matchMedia!=`function`?!1:!Wa().value}function to(e,t){let n=e.toLowerCase();if(Qa(Ga,e))return $a(Ga,Ja,e,t);if(Qa(Ga,n))return $a(Ga,Ja,n,t)}function no(e,t){let n=e.toLowerCase().split(`.`);for(let e=1;ee.length>0).at(-1)??e}function ao(e){return e.replaceAll(/\s(?:width|height)="[^"]*"/g,``).replace(/^
-
`};let c=/^\[(\d+)\]/,l=/^\[([^\]\n]+)\]/,u=e=>{if(!e.startsWith(`[`))return!1;let t=l.exec(e);if(!t)return e!==`[`&&!/^\[\d+$/.test(e);let n=String(t[1]??``);return!e.slice(t[0].length).startsWith(`(`)&&!/^\d+$/.test(n)};n.inline.ruler.before(`escape`,`reference`,(e,t)=>{let n=e;if(n.src[n.pos]!==`[`)return!1;let r=c.exec(n.src.slice(n.pos));if(!r)return!1;let i=n.src.slice(Math.max(0,n.pos-120),n.pos);if(/"[^"\n]{1,80}"\s*:\s*$/.test(i))return!1;let a=n.src.slice(n.pos+r[0].length);if(a.startsWith(`](`)||a.startsWith(`(`)||u(a))return!1;if(!t){let e=r[1],t=n.push(`reference`,`span`,0);t.content=e,t.markup=r[0],t.raw=r[0]}return n.pos+=r[0].length,!0}),n.renderer.rules.reference=(e,t)=>{let n=String(e[t].content??``);return`${n}`};let d=n.use.bind(n);return n.use=((...e)=>(r.__markstreamHasCustomParserExtensions=!0,d(...e))),n}function JK({nextContent:e,previousContent:t,typewriterEnabled:n}){return!n||e===t?{settledContent:e,streamedDelta:``,appended:!1}:t&&e.startsWith(t)&&e.length>t.length?{settledContent:t,streamedDelta:e.slice(t.length),appended:!0}:{settledContent:e,streamedDelta:``,appended:!1}}function YK({nextContent:e,persistedContent:t,currentState:n,typewriterEnabled:r,streamRenderVersionChanged:i=!1}){let a=`${n.settledContent}${n.streamedDelta}`;return r?n.streamedDelta&&a===e?i?{settledContent:a,streamedDelta:``,appended:!1}:{settledContent:n.settledContent,streamedDelta:n.streamedDelta,appended:!1}:JK({nextContent:e,previousContent:t??a,typewriterEnabled:r}):{settledContent:e,streamedDelta:``,appended:!1}}var XK={plain:`plaintext`,text:`plaintext`,txt:`plaintext`,js:`javascript`,mjs:`javascript`,cjs:`javascript`,ts:`typescript`,mts:`typescript`,cts:`typescript`,golang:`go`,py:`python`,rb:`ruby`,rs:`rust`,kt:`kotlin`,kts:`kotlin`,md:`markdown`,yml:`yaml`,sh:`shellscript`,bash:`shellscript`,zsh:`shellscript`,shell:`shellscript`,shellscript:`shellscript`,ps:`powershell`,ps1:`powershell`,pwsh:`powershell`,"c++":`cpp`,"c#":`csharp`,cs:`csharp`,objc:`objective-c`,objectivec:`objective-c`,"objective-c":`objective-c`,objectivecpp:`objective-cpp`,"objective-c++":`objective-cpp`,"objective-cpp":`objective-cpp`};function ZK(e){let t=String(e??``).trim();if(!t)return``;let[n=``]=t.split(/\s+/);return n.split(`:`)[0]?.trim().toLowerCase()??``}function QK(e){let t=ZK(e);return XK[t]??t}function $K(e){if(!Array.isArray(e))return;let t=e.filter(e=>typeof e==`string`).map(e=>QK(e)).filter(Boolean),n=Array.from(new Set(t)).sort();return n.length>0?n:void 0}function eq(e){if(!Array.isArray(e))return;let t=[],n=new Set;for(let r of e){if(typeof r!=`string`)continue;let e=r.trim();!e||n.has(e)||(n.add(e),t.push(e))}return t.length>0?t:void 0}function tq(e){return eq(e)?.join(`\0`)??``}function nq(e,t){return`${tq(e)}\u0000\u0000${$K(t)?.join(`\0`)??``}`}function rq(e,t,n=1){let r=Number(e);return Number.isFinite(r)?Math.max(n,r):t}function iq(e,t){let n=Number(e);return Number.isFinite(n)?Math.max(0,n):t}var aq=class{constructor(e={},t){this.source=``,this.visible=``,this.done=!1,this.paused=!1,this.listeners=new Set,this.rafId=0,this.startedAt=0,this.lastTick=0,this.charBudget=0,this.hasStarted=!1,this.destroyed=!1,this.getSnapshot=()=>({source:this.source,visible:this.visible,done:this.done,paused:this.paused,pendingChars:this.pendingChars,caughtUp:this.caughtUp,final:this.final}),this.subscribe=e=>this.destroyed?()=>{}:(this.listeners.add(e),()=>{this.listeners.delete(e)}),this.enqueue=e=>{if(this.destroyed||!e)return;this.done&&=!1;let t=this.source.length>0,n=this.pendingChars<=0;if(this.source+=e,n){let e=lq();this.startedAt=t&&this.hasStarted?e-this.normalizedStartDelayMs:e,this.lastTick=e,this.charBudget=0}this.hasStarted=!0,this.emit(),this.ensureLoop()},this.finish=(e={})=>{if(!this.destroyed){if(this.done=!0,e.flush??this.flushOnFinish){this.visible=this.source,this.charBudget=0,this.currentCps=this.minCharsPerSecond,this.cancelLoop(),this.emit();return}this.emit(),this.ensureLoop()}},this.flush=()=>{this.destroyed||(this.visible=this.source,this.charBudget=0,this.currentCps=this.minCharsPerSecond,this.cancelLoop(),this.emit())},this.reset=(e=``)=>{this.destroyed||(this.cancelLoop(),this.source=e,this.visible=e,this.done=!1,this.paused=!1,this.hasStarted=!1,this.startedAt=0,this.lastTick=0,this.charBudget=0,this.currentCps=this.minCharsPerSecond,this.emit())},this.pause=()=>{this.destroyed||this.paused||(this.paused=!0,this.cancelLoop(),this.emit())},this.resume=()=>{if(this.destroyed||!this.paused)return;this.paused=!1;let e=lq();this.lastTick=e,this.startedAt||=e,this.emit(),this.ensureLoop()},this.destroy=()=>{this.destroyed||(this.destroyed=!0,this.cancelLoop(),this.listeners.clear())},this.dispose=()=>{this.destroy()},this.tick=e=>{if(this.rafId=0,this.destroyed||this.paused)return;if(this.pendingChars<=0){this.startedAt=0,this.lastTick=0,this.charBudget=0,this.currentCps=this.minCharsPerSecond;return}if(e-this.startedAtthis.normalizedCatchUpThreshold?this.normalizedCatchUpLatencyMs:this.normalizedTargetLatencyMs,a=uq(r/Math.max(.001,i/1e3),this.minCharsPerSecond,this.maxCharsPerSecond);if(this.currentCps+=(a-this.currentCps)*.2,this.charBudget+=this.currentCps*(n/1e3),this.charBudget<1){this.ensureLoop();return}let o=Math.min(Math.floor(this.charBudget),this.maxCharsPerCommit),s=cq(this.source.slice(this.visible.length),o,this.segmenter);s.text&&(this.visible+=s.text,this.charBudget=Math.max(0,this.charBudget-s.graphemeCount),this.emit()),this.ensureLoop()};let{minCharsPerSecond:n=40,maxCharsPerSecond:r=1e3,targetLatencyMs:i=900,catchUpLatencyMs:a=350,catchUpThreshold:o=600,maxCommitFps:s=30,startDelayMs:c=80,maxCharsPerCommit:l=80,flushOnFinish:u=!1}=e;this.minCharsPerSecond=rq(n,40,1),this.maxCharsPerSecond=Math.max(this.minCharsPerSecond,rq(r,1e3,1)),this.normalizedTargetLatencyMs=rq(i,900,1),this.normalizedCatchUpLatencyMs=rq(a,350,1),this.normalizedCatchUpThreshold=iq(o,600),this.normalizedStartDelayMs=iq(c,80),this.maxCommitFps=Math.trunc(rq(s,30,1)),this.maxCharsPerCommit=Math.trunc(rq(l,80,1)),this.flushOnFinish=u,this.segmenter=sq(),t&&this.listeners.add(t),this.currentCps=this.minCharsPerSecond}get pendingChars(){return Math.max(0,this.source.length-this.visible.length)}get caughtUp(){return this.pendingChars===0}get final(){return this.done&&this.caughtUp}ensureLoop(){if(!(this.destroyed||this.rafId||this.paused||this.pendingChars<=0)){if(typeof requestAnimationFrame!=`function`){this.flush();return}this.rafId=requestAnimationFrame(this.tick)}}cancelLoop(){this.rafId&&=(typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(this.rafId),0)}emit(){if(!this.destroyed)for(let e of this.listeners)e()}};function oq(e={},t){let n=new aq(e,t);return{getSnapshot:n.getSnapshot,subscribe:n.subscribe,enqueue:n.enqueue,finish:n.finish,flush:n.flush,reset:n.reset,pause:n.pause,resume:n.resume,destroy:n.destroy,dispose:n.dispose}}function sq(){if(typeof Intl>`u`)return null;let e=Intl.Segmenter;return e?new e(void 0,{granularity:`grapheme`}):null}function cq(e,t,n){if(!e||t<=0)return{text:``,graphemeCount:0};if(!n){let n=Array.from(e).slice(0,t);return{text:n.join(``),graphemeCount:n.length}}let r=``,i=0;for(let a of n.segment(e)){if(i>=t)break;r+=a.segment,i++}return{text:r,graphemeCount:i}}function lq(){return typeof performance<`u`?performance.now():Date.now()}function uq(e,t,n){return Math.min(n,Math.max(t,e))}var dq=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),fq=Symbol.for(`markstream-vue:node-lifecycle`);function pq(){}var mq=new Map,hq=`material`,gq=new Map,_q=new Map,vq=null;function yq(e){mq.set(e.id,e)}function bq(e){let t=mq.get(hq);if(!t)return;let n=t.core[e];if(n)return n;let r=gq.get(t.id);if(r){let t=r[e];if(t)return t}t.loadExtended&&!gq.has(t.id)&&Sq(t)}function xq(){return mq.get(hq)?.fallback??``}function Sq(e){return dq(this,null,function*(){if(gq.has(e.id))return gq.get(e.id)??null;let t=_q.get(e.id);return t||(t=(e.loadExtended?.call(e)??Promise.resolve(null)).then(t=>(gq.set(e.id,t),vq?.(),t)).catch(()=>(gq.set(e.id,null),null)),_q.set(e.id,t)),t})}var Cq=``,wq=``,Tq={id:`material`,core:{"":wq,plain:``,text:wq,javascript:``,typescript:``,jsx:``,tsx:``,html:``,css:``,scss:``,json:``,python:``,ruby:``,go:``,java:``,kotlin:``,c:``,cpp:``,cs:Cq,csharp:Cq,php:``,shell:``,powershell:``,sql:``,yaml:``,markdown:``,xml:``,rust:``,vue:``,mermaid:``},fallback:``,loadExtended:()=>ge(()=>import(`./extended-BP0HZdSW.js`).then(e=>e.materialExtendedMap),[])},Eq=de(0);vq=()=>{Eq.value++},yq(Tq);var Dq={"":``,javascript:`javascript`,js:`javascript`,mjs:`javascript`,cjs:`javascript`,typescript:`typescript`,ts:`typescript`,jsx:`jsx`,tsx:`tsx`,golang:`go`,py:`python`,rb:`ruby`,sh:`shell`,bash:`shell`,zsh:`shell`,shellscript:`shell`,bat:`shell`,batch:`shell`,ps1:`powershell`,plaintext:`plain`,text:`plain`,txt:`plain`,"c++":`cpp`,"c#":`csharp`,cs:`csharp`,"objective-c":`objectivec`,"objective-c++":`objectivecpp`,yml:`yaml`,md:`markdown`,rs:`rust`,kt:`kotlin`};function Oq(e){let t=function(e){if(!e)return``;let t=e.trim();if(!t)return``;let[n]=t.split(/\s+/),[r]=n.split(`:`);return r.toLowerCase()}(e);return Dq[t]??t}function kq(e){let t=Oq(e);if(!t)return`plaintext`;switch(t){case`plain`:return`plaintext`;case`jsx`:return`javascript`;case`tsx`:return`typescript`;case`objectivec`:return`objective-c`;case`objectivecpp`:return`objective-cpp`;default:return t}}function Aq(e){return bq(Oq(e))||xq()}var jq={js:`JavaScript`,javascript:`JavaScript`,ts:`TypeScript`,jsx:`JSX`,tsx:`TSX`,html:`HTML`,css:`CSS`,scss:`SCSS`,json:`JSON`,py:`Python`,python:`Python`,rb:`Ruby`,go:`Go`,java:`Java`,c:`C`,cpp:`C++`,cs:`C#`,csharp:`C#`,php:`PHP`,sh:`Shell`,bash:`Bash`,sql:`SQL`,yaml:`YAML`,md:`Markdown`,d2:`D2`,d2lang:`D2`,"":`Plain Text`,plain:`Plain Text`},Mq=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),Nq=null,Pq=!1,Fq=null,Iq=zq;function Lq(e){let t=e?.default??e;return t&&typeof t.renderToString==`function`?t:null}function Rq(){try{return Lq(globalThis?.katex)}catch{return null}}function zq(){return Mq(null,null,function*(){let e=Rq();if(e)return e;let t=yield ge(()=>import(`./katex-KvbZ9TWr.js`),[]);try{yield ge(()=>import(`./mhchem-Cyl3090Q.js`),__vite__mapDeps([4,5]))}catch{}return Lq(t)})}function Bq(e){let t=Promise.resolve(e).then(e=>Fq===t&&e?(Nq=Lq(e)??e,Nq):null).catch(()=>null).finally(()=>{Fq===t&&(Fq=null)});return Fq=t,Pq=!0,t}function Vq(e){Iq=e,Nq=null,Pq=!1,Fq=null}function Hq(e){Vq(e??zq)}function Uq(){return typeof Iq==`function`}function Wq(){let e=Iq;if(!e||e===zq)return null;if(Nq)return Nq;let t=Rq();if(t)return Nq=t,Nq;if(Pq)return null;try{let t=e();return t?typeof t?.then==`function`?(Bq(t),null):(Nq=Lq(t)??t,Nq):null}catch{return null}}function Gq(){return Mq(this,null,function*(){let e=Rq();if(e)return Nq=e,Nq;if(Nq)return Nq;if(Fq)return Fq;if(Pq)return null;let t=Iq;if(!t)return Pq=!0,null;try{let e=t();if(typeof e?.then==`function`)return Bq(e);if(e)return Nq=Lq(e)??e,Pq=!0,Nq}catch{}return Pq=!0,null})}function Kq(e){return e?e.replace(/·/g,`⋅`).replace(/℃/g,`°C`):``}var qq=null,Jq=null,Yq=new Map,Xq=new Map,Zq=5,Qq=new Set;function $q(){if(Yq.size{let{id:t,html:n,error:r}=e.data,i=Yq.get(t);if(i)if(Yq.delete(t),clearTimeout(i.timeoutId),i.cleanup(),$q(),r)i.aborted||i.reject(Error(r));else{let{content:t,displayMode:r}=e.data;if(t){let e=`${r?`d`:`i`}:${t}`;if(Xq.set(e,n),Xq.size>200){let e=Xq.keys().next().value;Xq.delete(e)}}i.aborted||i.resolve(n)}},qq.onerror=e=>{console.error(`[katexWorkerClient] Worker error:`,e);for(let[t,n]of Yq.entries())clearTimeout(n.timeoutId),n.cleanup(),n.aborted||n.reject(Error(`Worker error: ${e.message}`));Yq.clear(),eJ()}}function nJ(){var e;for(let e of Yq.values())clearTimeout(e.timeoutId),e.cleanup(),e.aborted||e.reject(Error(`Worker cleared`));Yq.clear(),eJ(),qq&&((e=qq.terminate)==null||e.call(qq)),qq=null,Jq=null}function rJ(e,t=!0,n=2e3,r){return Mq(this,null,function*(){performance.now();let i=Kq(e);if(!Uq()){let e=Error(`KaTeX rendering disabled`);return e.name=`KaTeXDisabled`,e.code=`KATEX_DISABLED`,Promise.reject(e)}if(Jq)return Promise.reject(Jq);let a=`${t?`d`:`i`}:${i}`,o=Xq.get(a);if(o)return $q(),Promise.resolve(o);let s=qq||(Jq=Error(`[katexWorkerClient] No worker instance set. Please inject a Worker via setKaTeXWorker().`),Jq.name=`WorkerInitError`,Jq.code=`WORKER_INIT_ERROR`,null);if(!s)return Promise.reject(Jq);if(Yq.size>=Zq){let e=Error(`Worker busy`);return e.name=`WorkerBusy`,e.code=`WORKER_BUSY`,e.busy=!0,e.inFlight=Yq.size,e.max=Zq,Promise.reject(e)}return new Promise((e,a)=>{if(r?.aborted){let e=Error(`Aborted`);e.name=`AbortError`,a(e);return}let o=Math.random().toString(36).slice(2),c=null,l=globalThis.setTimeout(()=>{let e=Yq.get(o);if(!e)return;Yq.delete(o),e.cleanup();let t=Error(`Worker render timed out`);t.name=`WorkerTimeout`,t.code=`WORKER_TIMEOUT`,e.aborted||e.reject(t),$q()},n);c=()=>{let e=Yq.get(o);if(!e||e.aborted)return;e.aborted=!0,e.cleanup();let t=Error(`Aborted`);t.name=`AbortError`,a(t)},r&&r.addEventListener(`abort`,c,{once:!0});let u=e,d=a;Yq.set(o,{resolve:e=>{u(e)},reject:e=>{d(e)},timeoutId:l,aborted:!1,cleanup:()=>{r&&c&&r.removeEventListener(`abort`,c),c=null}});try{s.postMessage({id:o,content:i,displayMode:t})}catch(e){let t=Yq.get(o);Yq.delete(o),clearTimeout(l),t?.cleanup(),t?.reject(e),$q()}})})}function iJ(e,t=!0,n){let r=`${t?`d`:`i`}:${Kq(e)}`;if(Xq.set(r,n),Xq.size>200){let e=Xq.keys().next().value;Xq.delete(e)}}var aJ=`WORKER_BUSY`;function oJ(e=2e3,t){return Yq.size{let i,a=!1,o=null,s=()=>{},c=()=>{i&&globalThis.clearTimeout(i),Qq.delete(s),t&&o&&t.removeEventListener(`abort`,o),o=null};s=()=>{a||(a=!0,c(),n())},Qq.add(s),i=globalThis.setTimeout(()=>{if(a)return;a=!0,c();let e=Error(`Wait for worker slot timed out`);e.name=`WorkerBusyTimeout`,e.code=`WORKER_BUSY_TIMEOUT`,r(e)},e),queueMicrotask(()=>$q()),t&&(o=()=>{if(a)return;a=!0,c();let e=Error(`Aborted`);e.name=`AbortError`,r(e)},t.aborted?o():t.addEventListener(`abort`,o,{once:!0}))})}var sJ={timeout:2e3,waitTimeout:1500,backoffMs:30,maxRetries:1};function cJ(e){return Mq(this,arguments,function*(e,t=!0,n={}){if(!Uq()){let e=Error(`KaTeX rendering disabled`);throw e.name=`KaTeXDisabled`,e.code=`KATEX_DISABLED`,e}let r=n.timeout??sJ.timeout,i=n.waitTimeout??sJ.waitTimeout,a=n.backoffMs??sJ.backoffMs,o=n.maxRetries??sJ.maxRetries,s=Number.isFinite(o)?Math.max(0,Math.min(Math.floor(o),8)):sJ.maxRetries,c=n.signal,l=0;for(;;){if(c?.aborted){let e=Error(`Aborted`);throw e.name=`AbortError`,e}try{return yield rJ(e,t,r,c)}catch(e){if(e?.code!==`WORKER_BUSY`||l>=s)throw e;if(l++,yield oJ(i,c).catch(()=>{}),c?.aborted){let e=Error(`Aborted`);throw e.name=`AbortError`,e}a>0&&(yield new Promise(e=>globalThis.setTimeout(e,a*l)))}}})}function lJ(e){let t=typeof e==`number`?e:Number.parseFloat(String(e??``));return Number.isFinite(t)&&t>0?t:null}function uJ(e){for(let t of e.split(/\r?\n/)){let e=t.trim();if(!(!e||e.startsWith(`%%`)))return(e.match(/^([A-Z][\w-]*)\b/i)?.[1])?.toLowerCase()||``}return``}function dJ(e){let t=e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e&&!e.startsWith(`%%`)),n=Math.max(1,t.length),r=uJ(e);return r===`gantt`?220+28*n:r===`sequencediagram`?180+26*n:r===`classdiagram`||r===`statediagram`||r===`erdiagram`?180+24*n:r===`flowchart`||r===`graph`?170+28*n:200+22*n}function fJ(e){let t=e.split(/\r?\n/).filter(e=>/^\s*-\s+/.test(e)).length;return t>=3?500:t>0?280+60*t:360}function pJ(e,t=360,n=500){return n==null?Math.max(t,e):Math.min(Math.max(t,e),n)}function mJ(e,t=360,n=500){return pJ(e,t,n)}function hJ(e,t=360,n=500){return pJ(e,t,n)}var gJ=Object.defineProperty,_J=Object.defineProperties,vJ=Object.getOwnPropertyDescriptors,yJ=Object.getOwnPropertySymbols,bJ=Object.prototype.hasOwnProperty,xJ=Object.prototype.propertyIsEnumerable,SJ=(e,t,n)=>t in e?gJ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,CJ=(e,t)=>{for(var n in t||={})bJ.call(t,n)&&SJ(e,n,t[n]);if(yJ)for(var n of yJ(t))xJ.call(t,n)&&SJ(e,n,t[n]);return e},wJ=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),TJ=()=>ge(()=>import(`./mermaid.core-CL4kgY7H.js`),__vite__mapDeps([6,7,8,9,2,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29])),EJ=null,DJ=TJ,OJ=null,kJ=!1,AJ=!1,jJ=0;function MJ(e){DJ=e,jJ++,EJ=null,OJ=null,kJ=!1,AJ=!1}function NJ(e){MJ(e??TJ)}function PJ(){return typeof DJ==`function`}function FJ(e){if(!e)return e;let t=e&&e.default?e.default:e;if(t&&(typeof t.render==`function`||typeof t.parse==`function`||typeof t.initialize==`function`))return t;if(t&&t.mermaidAPI&&(typeof t.mermaidAPI.render==`function`||typeof t.mermaidAPI.parse==`function`)){let e=t.mermaidAPI;return n=CJ({},t),r={render:e.render.bind(e),parse:e.parse?e.parse.bind(e):void 0,initialize:n=>typeof t.initialize==`function`?t.initialize(n):e.initialize?e.initialize(n):void 0},_J(n,vJ(r))}var n,r;return e.mermaid&&typeof e.mermaid.render==`function`?e.mermaid:t}function IJ(e){if(e)try{let t=e?.initialize;e.initialize=n=>{let r=CJ({suppressErrorRendering:!0},n||{});return typeof t==`function`?t.call(e,r):e?.mermaidAPI&&typeof e.mermaidAPI.initialize==`function`?e.mermaidAPI.initialize(r):void 0}}catch{}}function LJ(){return wJ(this,null,function*(){if(EJ)return EJ;let e=function(){try{return FJ(globalThis?.mermaid)}catch{return null}}();if(e)return EJ=e,IJ(EJ),EJ;let t=DJ,n=jJ;return t?t===TJ&&kJ?null:OJ||(OJ=wJ(null,null,function*(){let e;try{e=yield t()}catch(e){if(t===TJ)return n===jJ&&t===DJ&&(kJ=!0,function(e){AJ||(AJ=!0,console.warn(`[markstream-vue] Optional dependency "mermaid" is not installed. Mermaid blocks will render as source.`,e))}(e)),null;throw e}finally{n===jJ&&t===DJ&&(OJ=null)}return n!==jJ||t!==DJ?null:e?(EJ=FJ(e),IJ(EJ),EJ):null}),OJ):null})}var RJ=null,zJ=null,BJ=new Map,VJ=new Map;function HJ(e){for(let t of BJ.values())t.reject(e);BJ.clear(),VJ.clear()}var UJ=5,WJ=`MERMAID_DISABLED`;function GJ(e){if(RJ&&RJ!==e){let e=Error(`Worker replaced`);e.code=`WORKER_REPLACED`,HJ(e)}RJ=e,zJ=null;let t=e;RJ.onmessage=e=>{if(RJ!==t)return;let{id:n,ok:r,result:i,error:a}=e.data,o=BJ.get(n);o&&(!1===r||a?o.reject(Error(a||`Unknown error`)):o.resolve(i))},RJ.onerror=e=>{var n,r;if(RJ===t)if(BJ.size!==0){try{(r=console.debug)==null||r.call(console,`[mermaidWorkerClient] Worker error:`,e?.message||e)}catch{}HJ(Error(`Worker error: ${e.message}`))}else(n=console.debug)==null||n.call(console,`[mermaidWorkerClient] Worker error (no pending):`,e?.message||e)},RJ.onmessageerror=e=>{var n,r;if(RJ===t)if(BJ.size!==0){try{(r=console.debug)==null||r.call(console,`[mermaidWorkerClient] Worker messageerror:`,e)}catch{}HJ(Error(`Worker messageerror`))}else(n=console.debug)==null||n.call(console,`[mermaidWorkerClient] Worker messageerror (no pending):`,e)}}function KJ(){var e;if(RJ)try{HJ(Error(`Worker cleared`)),(e=RJ.terminate)==null||e.call(RJ)}catch{}RJ=null,zJ=null}function qJ(e,t,n,r){if(!PJ()){let e=Error(`Mermaid rendering disabled`);return e.name=`MermaidDisabled`,e.code=WJ,Promise.reject(e)}let i=`${e}\0${t.theme}\0${n}\0${t.code}`,a=VJ.get(i);return a||(a=function(e,t,n=1400){if(!PJ()){let e=Error(`Mermaid rendering disabled`);return e.name=`MermaidDisabled`,e.code=`MERMAID_DISABLED`,Promise.reject(e)}if(zJ)return Promise.reject(zJ);let r=RJ||(zJ=Error(`[mermaidWorkerClient] No worker instance set. Please inject a Worker via setMermaidWorker().`),zJ.name=`WorkerInitError`,zJ.code=`WORKER_INIT_ERROR`,null);if(!r)return Promise.reject(zJ);if(BJ.size>=UJ){let e=Error(`Worker busy`);return e.name=`WorkerBusy`,e.code=`WORKER_BUSY`,e.inFlight=BJ.size,e.max=UJ,Promise.reject(e)}return new Promise((i,a)=>{let o=Math.random().toString(36).slice(2),s,c=!1,l=()=>{c||(c=!0,s!=null&&globalThis.clearTimeout(s),BJ.delete(o))};BJ.set(o,{resolve:e=>{l(),i(e)},reject:e=>{l(),a(e)}});try{r.postMessage({id:o,action:e,payload:t})}catch(e){BJ.delete(o),a(e);return}s=globalThis.setTimeout(()=>{let e=Error(`Worker call timed out`);e.name=`WorkerTimeout`,e.code=`WORKER_TIMEOUT`;let t=BJ.get(o);t&&t.reject(e)},n)})}(e,t,n),VJ.set(i,a),a.then(()=>{VJ.get(i)===a&&VJ.delete(i)},()=>{VJ.get(i)===a&&VJ.delete(i)})),function(e,t){if(!t)return e;if(t.aborted){let e=Error(`Aborted`);return e.name=`AbortError`,Promise.reject(e)}return new Promise((n,r)=>{let i=()=>{},a=()=>t.removeEventListener(`abort`,i);i=()=>{a();let e=Error(`Aborted`);e.name=`AbortError`,r(e)},t.addEventListener(`abort`,i,{once:!0}),e.then(e=>{a(),n(e)},e=>{a(),r(e)})})}(a,r)}function JJ(e,t,n=1400,r){return qJ(`canParse`,{code:e,theme:t},n,r)}function YJ(e,t,n=1400,r){return qJ(`findPrefix`,{code:e,theme:t},n,r)}var XJ=Object.defineProperty,ZJ=Object.defineProperties,QJ=Object.getOwnPropertyDescriptors,$J=Object.getOwnPropertySymbols,eY=Object.prototype.hasOwnProperty,tY=Object.prototype.propertyIsEnumerable,nY=(e,t,n)=>t in e?XJ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Q=(e,t)=>{for(var n in t||={})eY.call(t,n)&&nY(e,n,t[n]);if($J)for(var n of $J(t))tY.call(t,n)&&nY(e,n,t[n]);return e},rY=(e,t)=>ZJ(e,QJ(t)),iY=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),aY=`__global__`,oY=`__MARKSTREAM_VUE_CUSTOM_COMPONENTS_STORE__`,sY=(()=>{let e=globalThis;if(e[oY])return e[oY];let t={scopedCustomComponents:{},revision:de(0)};return e[oY]=t,t})(),cY=sY.revision,lY=Symbol(`markstreamCustomComponents`),uY=new Set(`text.paragraph.heading.code_block.list.list_item.blockquote.table.table_row.table_cell.definition_list.definition_item.footnote.footnote_reference.footnote_anchor.admonition.hardbreak.link.image.thematic_break.math_inline.math_block.strong.emphasis.strikethrough.highlight.insert.subscript.superscript.emoji.checkbox.checkbox_input.inline_code.html_inline.html_block.reference.mermaid.infographic.d2.vmr_container`.split(`.`));function dY(e){return uY.has(String(e).trim().toLowerCase())}function fY(e){return e.trim().replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/[_\s]+/g,`-`).toLowerCase()}function pY(e={}){let t={};for(let[n,r]of Object.entries(e))if(r!=null){t[n]=r;for(let e of new Set([bL(n),bL(fY(n))]))!e||dY(e)||Object.prototype.hasOwnProperty.call(t,e)||(t[e]=r)}return t}function mY(e){let t=g(lY,null);return R(()=>(cY.value,function(e,t={}){return cY.value,Q(Q(Q({},pY(sY.scopedCustomComponents[aY]||{})),pY(t)),pY(function(e){return e&&sY.scopedCustomComponents[e]||{}}(e)))}(e?.(),t?.value??{})))}var hY=[`aria-label`],gY={key:0,xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,class:`checkbox-icon checkbox-unchecked`},_Y={key:1,xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,class:`checkbox-icon checkbox-checked`},vY=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},yY=vY(K({__name:`CheckboxNode`,props:{node:{}},setup:e=>(t,n)=>(u(),G(`span`,{class:`checkbox-node`,role:`img`,"aria-label":e.node.checked?`checked`:`unchecked`},[e.node.checked?(u(),G(`svg`,_Y,[...n[1]||=[L(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`4`,fill:`currentColor`},null,-1),L(`path`,{d:`M9 12l2 2 4-4`,stroke:`hsl(var(--ms-background))`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,-1)]])):(u(),G(`svg`,gY,[...n[0]||=[L(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`4`,stroke:`currentColor`,"stroke-width":`2`},null,-1)]]))],8,hY))}),[[`__scopeId`,`data-v-be21ab83`]]);yY.install=e=>{e.component(yY.__name,yY)};var bY={class:`emoji-node`},xY=vY(K({__name:`EmojiNode`,props:{node:{}},setup:e=>(t,n)=>(u(),G(`span`,bY,W(e.node.name),1))}),[[`__scopeId`,`data-v-de55dc97`]]);xY.install=e=>{e.component(xY.__name,xY)};var SY=[`id`],CY=[`title`],wY=vY(K({__name:`FootnoteReferenceNode`,props:{node:{}},setup(e){let t=`#fnref--${e.node.id}`;function n(){if(typeof document>`u`)return;let e=document.querySelector(t);e?e.scrollIntoView({behavior:`smooth`}):console.warn(`Element with href: ${t} not found`)}return(r,i)=>(u(),G(`sup`,{id:`fnref-${e.node.id}`,class:`footnote-reference`,onClick:n},[L(`span`,{href:t,title:`查看脚注 ${e.node.id}`,class:`footnote-link cursor-pointer`},`[`+W(e.node.id)+`]`,9,CY)],8,SY))}}),[[`__scopeId`,`data-v-c1463a29`]]);wY.install=e=>{e.component(wY.__name,wY)};var TY=(()=>{try{return!1}catch{}return!1})();function EY(e){TY&&console.warn(e)}function DY(e,t=`safe`,n){return lK(e,t,n)}function OY(e){return pK(e)}function kY(e){return!0===e?``:!1===e?`false`:e==null?null:String(e)}function AY(e,t=`safe`){let n=String(e.tag||e.type||``).trim(),r=dK((i=e.attrs)?Array.isArray(i)?i.every(Array.isArray)?i.map(([e,t])=>[String(e),kY(t)]):i.filter(e=>e&&typeof e==`object`&&!Array.isArray(e)&&`name`in e).map(e=>[String(e.name),kY(e.value)]):Object.entries(i).map(([e,t])=>[e,kY(t)]):null,t,n);var i;if(!r)return;let a=OY(uK(r));return Object.keys(a).length>0?a:void 0}function jY(e,t,n=!1){let r=Object.entries(t??{}),i=r.length>0?r.map(([e,t])=>t===``?` ${e}`:` ${e}="${t}"`).join(``):``;return n?`<${e}${i} />`:`<${e}${i}>`}function MY(e,t){Array.isArray(t)?e.push(...t):t!=null&&e.push(t)}function NY(e,t,n,r,i,a,o=!1){let c=function(e,t){return cK(e,t)}(e,r);if(qI.has(e.toLowerCase())||!c&&eK(e,a))return null;if(!c&&$G(e,a))return o?[jY(e,t,!0)]:[jY(e,t),...n,``];let l=lK(t,a,e),u=l.key,d=u!=null&&u!==``?u:i;return c?s(r[e]||r[e.toLowerCase()],rY(Q({},OY(l)),{key:d}),n.length>0?n:void 0):s(e,rY(Q({},l),{innerHTML:void 0,key:d}),n.length>0?n:void 0)}function PY(e,t){return vK(e,t)}function FY(e,t,n=`safe`){if(!e)return[];try{return function(e,t,n=`safe`){let r=0,i=[],a=[];for(let o of e)if(o.type===`text`)(i.length>0?i[i.length-1].children:a).push(o.content);else if(o.type===`self_closing`){let e=NY(o.tagName,o.attrs||{},[],t,`ms-html-`+r++,n,!0);MY(i.length>0?i[i.length-1].children:a,e)}else if(o.type===`tag_open`)i.push({tagName:o.tagName,children:[],attrs:o.attrs,autoKey:`ms-html-`+r++});else if(o.type===`tag_close`){let e=o.tagName.toLowerCase(),r=-1;for(let t=i.length-1;t>=0;t--)if(i[t].tagName.toLowerCase()===e){r=t;break}if(r!==-1)for(;i.length>r;){let o=i.pop(),s=NY(o.tagName,o.attrs||{},o.children,t,o.autoKey,n);i.length>0?MY(i[i.length-1].children,s):MY(a,s),o.tagName.toLowerCase()!==e&&i.length>r&&EY(`Auto-closing unclosed tag: <${o.tagName}>`)}else EY(`Ignoring closing tag with no matching opening tag: `)}for(;i.length>0;){let e=i.pop(),r=NY(e.tagName,e.attrs||{},e.children,t,e.autoKey,n);i.length>0?MY(i[i.length-1].children,r):MY(a,r),EY(`Auto-closing unclosed tag: <${e.tagName}>`)}return a}(hK(e),t,n)}catch(e){return r=e,TY&&console.error(`Failed to parse HTML to VNodes:`,r),null}var r}var IY=[`innerHTML`],LY=vY(K({__name:`HtmlInlineNode`,props:{node:{},customId:{},htmlPolicy:{}},setup(e){let t=e,n=g(`markstreamHtmlPolicy`,void 0),r=R(()=>t.htmlPolicy??n?.value??`safe`),i=mY(()=>t.customId),a=K({name:`DynamicRenderer`,props:{nodes:{type:Array,required:!0}},render(){return this.nodes}}),o=R(()=>{let e=t.node.content;if(!e)return{mode:`html`,content:``};if(r.value===`escape`)return{mode:`html`,content:yK(e,r.value)};if(t.node.loading&&!t.node.autoClosed)return{mode:`text`,content:e};if(t.node.loading&&t.node.autoClosed){let t=FY(e,i.value,r.value);if(t!==null)return{mode:`dynamic`,nodes:t}}if(!PY(e,i.value))return{mode:`html`,content:yK(e,r.value)};let n=FY(e,i.value,r.value);return n===null?{mode:`html`,content:yK(e,r.value)}:{mode:`dynamic`,nodes:n}});return(e,n)=>o.value.mode===`dynamic`?(u(),G(`span`,{key:0,class:H([`html-inline-node`,{"html-inline-node--loading":t.node.loading}])},[b(B(a),{nodes:o.value.nodes},null,8,[`nodes`])],2)):o.value.mode===`text`?(u(),G(`span`,{key:1,class:H([`html-inline-node`,{"html-inline-node--loading":t.node.loading}])},W(o.value.content),3)):(u(),G(`span`,{key:2,class:H([`html-inline-node`,{"html-inline-node--loading":t.node.loading}]),innerHTML:o.value.content},null,10,IY))}}),[[`__scopeId`,`data-v-d17f12b0`]]);LY.install=e=>{e.component(LY.__name,LY)};var RY={class:`inline-code`},zY={key:0},BY=vY(K({__name:`InlineCodeNode`,props:{node:{}},setup(e){let t=e,n=S(),i=g(`markstreamFade`,void 0),a=g(`markstreamTextStreamState`,void 0),o=g(`markstreamStreamVersion`,void 0),s=R(()=>{let e=n.fade;return e===``||!0===e||e===`true`||!1!==e&&e!==`false`&&void 0}),c=R(()=>typeof s.value==`boolean`?s.value:typeof i?.value!=`boolean`||i.value),d=R(()=>String(t.node.code??``)),f=R(()=>!c.value),p=R(()=>{let e=n[`index-key`]??n.indexKey;return e==null||e===``?``:String(e)}),m=z(t.node.code),h=z(``),_=z(0),v;function y(){v?.(),v=void 0}function b(){y(),h.value&&=(m.value+=h.value,``)}l([()=>t.node.code,p,c],([e])=>{let t=String(e??``),n=p.value,r=YK({nextContent:t,persistedContent:n?a?.get(n):void 0,currentState:{settledContent:m.value,streamedDelta:h.value},typewriterEnabled:c.value});m.value=r.settledContent,h.value=r.streamedDelta,r.appended?(_.value+=1,function(){if(!h.value||v||!o)return;let e=o.value;v=l(()=>o.value,t=>{t!==e&&b()},{flush:`sync`})}()):h.value||y(),n&&a?.set(n,t)},{immediate:!0}),r(y);let x=R(()=>_.value%2==0?`inline-code-stream-delta--a`:`inline-code-stream-delta--b`);return(e,t)=>(u(),G(`code`,RY,[f.value?(u(),G(P,{key:0},[q(W(d.value),1)],64)):(u(),G(P,{key:1},[m.value?(u(),G(`span`,zY,W(m.value),1)):O(``,!0),h.value?(u(),G(`span`,{key:1,class:H([`inline-code-stream-delta`,[x.value]]),onAnimationend:b},W(h.value),35)):O(``,!0)],64))]))}}),[[`__scopeId`,`data-v-4e331c97`]]);BY.install=e=>{e.component(BY.__name,BY)};var VY=z(!1),HY=z(``),UY=z(`top`),WY=z(null),GY=z(null),KY=z(null),qY=z(null),JY=z(null),YY=null,XY=null,ZY=0;function QY(){YY&&=(clearTimeout(YY),null),XY&&=(clearTimeout(XY),null)}var $Y=!1,eX=null,tX=!1;function nX(e,t,n=`top`,r=!1,i,a){if(!e)return;let o=++ZY;QY();let s=()=>iY(null,null,function*(){if(yield function(){return iY(this,null,function*(){if(!$Y&&!tX&&typeof document<`u`){eX??=iY(null,null,function*(){let[{createApp:e,h:t},{default:n}]=yield Promise.all([ge(()=>import(`./vue.runtime.esm-bundler-CfVMpQsG.js`).then(e=>e.t),__vite__mapDeps([1,2])),ge(()=>import(`./Tooltip-Bj1LyJqp.js`),__vite__mapDeps([30,1,2,7]))]),r=document.createElement(`div`);r.setAttribute(`data-singleton-tooltip`,`1`),document.body.appendChild(r),e({setup:()=>()=>t(n,{visible:VY.value,"anchor-el":WY.value,content:HY.value,placement:UY.value,id:GY.value,originX:KY.value,originY:qY.value,isDark:JY.value??void 0})}).mount(r),$Y=!0});try{yield eX}catch(e){$Y=!1,eX=null,tX=!0,console.warn(`[markstream-vue] Failed to mount Tooltip component. Tooltips will be disabled.`,e)}}})}(),$Y&&o===ZY){GY.value=`tooltip-${Date.now()}-${Math.floor(1e3*Math.random())}`,WY.value=e,HY.value=t,UY.value=n,KY.value=i?.x??null,qY.value=i?.y??null,JY.value=typeof a==`boolean`?a:null,VY.value=!0;try{e.setAttribute(`aria-describedby`,GY.value)}catch{}}});r?s():YY=setTimeout(s,80)}function rX(e=!1){ZY+=1,QY();let t=()=>{if(WY.value&&GY.value)try{WY.value.removeAttribute(`aria-describedby`)}catch{}VY.value=!1,WY.value=null,GY.value=null,KY.value=null,qY.value=null};e?t():XY=setTimeout(t,120)}var iX={"common.copy":`Copy`,"common.copied":`Copied`,"common.decrease":`Decrease`,"common.reset":`Reset`,"common.increase":`Increase`,"common.expand":`Expand`,"common.collapse":`Collapse`,"common.preview":`Preview`,"common.source":`Source`,"common.export":`Export`,"common.open":`Open`,"common.minimize":`Minimize`,"common.zoomIn":`Zoom in`,"common.zoomOut":`Zoom out`,"common.resetZoom":`Reset zoom`,"image.loadError":`Image failed to load`,"image.loading":`Loading image...`},aX=Symbol(`markstreamI18nFallback`);function oX(e,t){return t?.[e]??iX[e]}var sX=(e,t)=>oX(e,t)??function(e){return(e.split(`.`).pop()||e).replace(/[_-]/g,` `).replace(/([A-Z])/g,` $1`).replace(/\s+/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}(e);function cX(e,t){return{t(n){let r=oX(n,t);if(e.te&&r!=null&&!e.te(n))return sX(n,t);let i=e.t(n);return i===n&&r!=null?sX(n,t):i}}}function lX(){let e=function(){try{let e=x(),t=aX,n=e?.provides,r=e?.appContext?.provides;return n?.[t]??r?.[t]??null}catch{}return null}(),t=function(){try{let e=x(),t=e?.proxy,n=t?.$t;if(typeof n==`function`){let e=t?.$te;return{t:n.bind(t),te:typeof e==`function`?e.bind(t):void 0}}let r=e?.appContext?.config?.globalProperties,i=r?.$t;if(typeof i==`function`){let e=r?.$te;return{t:i.bind(r),te:typeof e==`function`?e.bind(r):void 0}}}catch{}return null}();if(t)return cX(t,e);try{let t=globalThis.$vueI18nUse||null;if(t&&typeof t==`function`)try{let n=t();if(n&&typeof n.t==`function`)return cX({t:n.t.bind(n),te:typeof n.te==`function`?n.te.bind(n):void 0},e)}catch{}}catch{}return{t:t=>sX(t,e)}}var uX=Symbol(`ViewportPriority`),dX=Symbol(`ViewportPriorityOptions`),fX=Symbol(`OffscreenHeavyNodeDeferral`),pX=R(()=>!1),mX=`400px`;function hX(){return g(dX,void 0)}function gX(){return g(fX,pX)}function _X(e,t){let n=typeof window<`u`&&typeof document<`u`,r=typeof t==`boolean`?z(t):t,i=n?window.requestIdleCallback??(e=>window.setTimeout(()=>e({didTimeout:!0,timeRemaining:()=>0}),16)):null,a=n?window.cancelIdleCallback??(e=>window.clearTimeout(e)):null,o=new WeakMap,s=1,c=new Map,u=new Map,d=new Set,f=null,m=null;function h(e){if(!e)return`viewport`;let t=o.get(e);return t||(t=s++,o.set(e,t)),String(t)}function g(){if(f!=null){try{a?.(f)}catch{}f=null}}function _(e){if(e){let t=c.get(e);if(t&&!t.targets.size){try{t.io.disconnect()}catch{}c.delete(e)}}u.size||d.size||g()}function v(e){let t=u.get(e);if(!t)return;let n=c.get(t.bucketKey);if(!t.visible.value){t.visible.value=!0;try{t.resolve()}catch{}}try{n?.io.unobserve(e)}catch{}n?.targets.delete(e),u.delete(e),d.delete(e),_(t.bucketKey)}function y(){!0!==window.__MARKSTREAM_DISABLE_VIEWPORT_PRIORITY_IDLE_DRAIN__&&i&&f==null&&d.size&&(f=i(()=>{f=null;let e=d.values().next().value;e&&(d.delete(e),v(e),d.size&&y())},{timeout:1200}))}function b(t,r){if(!n||typeof IntersectionObserver>`u`)return null;let i=function(t,n){return{root:e?.(t??null)??null,rootMargin:n?.rootMargin??mX,threshold:n?.threshold??0}}(t,r),a=[h((o=i).root),o.rootMargin,o.threshold].join(`\0`);var o;let s=c.get(a);if(s)return{key:a,bucket:s};let l;try{l=new IntersectionObserver(e=>{for(let t of e)(t.isIntersecting||t.intersectionRatio>0)&&v(t.target)},{root:i.root,rootMargin:i.rootMargin,threshold:i.threshold})}catch{return null}let u={io:l,targets:new Map};return c.set(a,u),{key:a,bucket:u}}function x(){if(n&&r.value)for(let[e,t]of Array.from(u.entries())){let n=b(e,t.opts);if(!n){v(e);continue}if(n.key===t.bucketKey)continue;let r=t.bucketKey,i=c.get(r);try{i?.io.unobserve(e)}catch{}i?.targets.delete(e),t.bucketKey=n.key,n.bucket.targets.set(e,t),n.bucket.io.observe(e),_(r)}}l(r,e=>{if(!e){for(let e of Array.from(u.keys()))v(e);g()}},{flush:`sync`});let S=(e,t)=>{let i=z(!1),a,o=!1,s=new Promise(e=>{a=()=>{o||(o=!0,e())}}),l=()=>{let t=u.get(e);if(!t)return d.delete(e),void _();let n=c.get(t.bucketKey);try{n?.io.unobserve(e)}catch{}n?.targets.delete(e),u.delete(e),d.delete(e),_(t.bucketKey)};if(!n||!r.value)return i.value=!0,a(),{isVisible:i,whenVisible:s,destroy:l};let f=b(e,t);if(!f)return i.value=!0,a(),{isVisible:i,whenVisible:s,destroy:l};let p={resolve:a,visible:i,bucketKey:f.key,opts:t};return u.set(e,p),f.bucket.targets.set(e,p),f.bucket.io.observe(e),n&&m==null&&(m=window.requestAnimationFrame(()=>{m=null,x()})),!1!==t?.allowIdle&&(d.add(e),y()),{isVisible:i,whenVisible:s,destroy:l}};return S.refresh=x,p(uX,S),S}function vX(){let e=g(uX,void 0);if(e)return e;let t=new WeakMap,n=new Map,r=new Set,i=null,a=typeof window<`u`?window.requestIdleCallback??(e=>window.setTimeout(()=>e({didTimeout:!0,timeRemaining:()=>0}),16)):null,o=typeof window<`u`?window.cancelIdleCallback??(e=>window.clearTimeout(e)):null,s=()=>{if(i!=null){try{o?.(i)}catch{}i=null}},c=e=>{if(!e)return;let t=n.get(e);if(t&&!t.targets.size){try{t.io.disconnect()}catch{}n.delete(e)}},l=e=>{let i=t.get(e);if(!i)return;let a=n.get(i.bucketKey);if(!i.visible.value){i.visible.value=!0;try{i.resolve()}catch{}}try{a?.io.unobserve(e)}catch{}t.delete(e),a?.targets.delete(e),r.delete(e),c(i.bucketKey),r.size||s()},u=()=>{!0!==window.__MARKSTREAM_DISABLE_VIEWPORT_PRIORITY_IDLE_DRAIN__&&a&&i==null&&r.size&&(i=a(()=>{i=null;let e=r.values().next().value;e&&(r.delete(e),l(e),r.size&&u())},{timeout:1200}))};return(e,i)=>{let a=z(!1),o,d=!1,f=new Promise(e=>{o=()=>{d||(d=!0,e())}}),p=()=>{let i=t.get(e);if(!i)return r.delete(e),void(r.size||s());let a=n.get(i.bucketKey);try{a?.io.unobserve(e)}catch{}t.delete(e),a?.targets.delete(e),r.delete(e),c(i.bucketKey),r.size||s()},m=(e=>{if(typeof window>`u`||typeof IntersectionObserver>`u`)return null;let t=(e=>[e?.rootMargin??mX,e?.threshold??0].join(`\0`))(e),r=n.get(t);if(r)return{key:t,bucket:r};let i=e?.rootMargin??mX,a;try{a=new IntersectionObserver(e=>{for(let t of e)(t.isIntersecting||t.intersectionRatio>0)&&l(t.target)},{root:null,rootMargin:i,threshold:e?.threshold??0})}catch{return null}let o={io:a,targets:new Set};return n.set(t,o),{key:t,bucket:o}})(i);return m?(t.set(e,{resolve:o,visible:a,bucketKey:m.key}),m.bucket.targets.add(e),m.bucket.io.observe(e),!1!==i?.allowIdle&&(r.add(e),u()),{isVisible:a,whenVisible:f,destroy:p}):(a.value=!0,o(),{isVisible:a,whenVisible:f,destroy:p})}}function yX(e,t){let n=e.indexKey??t[`index-key`]??t.indexKey;return n==null||n===``?``:String(n)}var bX=[`data-markstream-viewport-pending`],xX=[`src`,`alt`,`title`,`loading`,`fetchpriority`,`decoding`,`tabindex`,`aria-label`],SX={key:1,class:`image-placeholder`},CX={key:1,class:`image-node__raw-text`},wX={key:2,class:`image-shimmer-overlay`},TX={key:1,class:`image-node__raw-text`},EX={key:3,class:`image-error`},DX=vY(K({__name:`ImageNode`,props:{node:{},fallbackSrc:{default:``},lazy:{type:Boolean,default:!1},usePlaceholder:{type:Boolean,default:!0}},emits:[`load`,`error`,`click`],setup(e,{emit:t}){var n;let r=e,a=t,o=z(!1),s=z(!1),c=z(``),d=z(`primary`),f=z(null),p=S(),m=g(fq,null),h=vX(),_=hX(),v=gX(),y=R(()=>uL(r.node.src)),b=R(()=>uL(r.fallbackSrc)),C=((n=x()?.vnode.el)?.querySelector)?.call(n,`img`),w=typeof window<`u`&&C?.getAttribute(`src`)===(y.value||b.value),T=z(typeof window>`u`||w||!v.value),E=de(null),D=``,k=null,A=R(()=>c.value),j=R(()=>!r.lazy),M=R(()=>typeof window<`u`&&v.value&&!w),N=R(()=>!M.value||T.value),P=R(()=>N.value?A.value:``),F=R(()=>_?.value.heavyBlockMargin??_?.value.rootMargin??mX),ee=R(()=>!r.node.loading&&d.value!==`failed`&&c.value.length>0),I=R(()=>d.value===`failed`),te=R(()=>(!j.value||M.value&&!T.value)&&!o.value&&!s.value&&d.value!==`failed`&&c.value.length>0),ne=R(()=>yX(r,p));function ie(e=ne.value){e&&f.value&&m?.reportHeight(e,f.value.offsetHeight)}function ae(e=ne.value){e&&i(()=>{ie(e)})}function oe(){k&&=(clearTimeout(k),null)}function se(){let e=ne.value;e&&D!==e&&(D&&m?.markSettled(D),oe(),D=e,m?.markPending(e),typeof window<`u`&&(k=window.setTimeout(()=>{D===e&&(ae(e),ce())},8e3)))}function ce(){return iY(this,null,function*(){let e=D;e&&(oe(),D=``,yield i(),ie(e),m?.markSettled(e))})}function le(){if(d.value===`primary`&&b.value&&b.value!==c.value)return d.value=`fallback`,c.value=b.value,o.value=!1,s.value=!1,void ae();d.value=`failed`,s.value=!0,a(`error`,c.value),ae()}function V(){o.value=!0,s.value=!1,a(`load`,A.value),ae()}function ue(e){e.preventDefault(),o.value&&!s.value&&a(`click`,[e,A.value])}let{t:fe}=lX();return l([y,b,()=>r.node.loading],()=>(o.value=!1,s.value=!1,r.node.loading||y.value?(c.value=y.value,void(d.value=`primary`)):b.value?(c.value=b.value,void(d.value=`fallback`)):(c.value=``,d.value=`failed`,void(s.value=!0))),{immediate:!0}),typeof window<`u`&&l([f,M],([e,t],n,r)=>{var i;if((i=E.value)==null||i.destroy(),E.value=null,!t||T.value)return void(T.value=!0);if(!e)return void(T.value=!1);let a=!0,o=h(e,{rootMargin:F.value,allowIdle:!1});E.value=o,T.value=o.isVisible.value,o.whenVisible.then(()=>{a&&E.value===o&&(T.value=!0)}),r(()=>{a=!1,o.destroy(),E.value===o&&(E.value=null)})},{immediate:!0}),l([ee,o,s,A,()=>r.lazy,N],([e,t,n,r,i,a])=>e&&r&&!n&&a?t?(ce(),void ae()):i?(se(),void ae()):void(t||n||se()):(ce(),void ae()),{flush:`post`,immediate:!0}),re(()=>{var e;(e=E.value)==null||e.destroy(),E.value=null,function(){let e=D;e&&(oe(),D=``,m?.markSettled(e))}()}),(t,n)=>(u(),G(`span`,{ref_key:`rootRef`,ref:f,class:`image-node-container`,"data-markstream-viewport-pending":M.value&&!T.value?`true`:void 0},[ee.value?(u(),G(`img`,{key:0,src:P.value||void 0,alt:String(r.node.alt??r.node.title??``),title:String(r.node.title??r.node.alt??``),class:H([`image-node__img`,{"is-loading":!j.value&&!o.value,"is-loaded":j.value||o.value,"has-natural-size":o.value,"cursor-pointer":o.value}]),loading:r.lazy?`lazy`:void 0,fetchpriority:j.value?`high`:void 0,decoding:j.value?`sync`:`async`,tabindex:o.value?0:-1,"aria-label":r.node.alt??B(fe)(`image.preview`),onError:le,onLoad:V,onClick:ue},null,42,xX)):O(``,!0),e.node.loading&&!s.value?(u(),G(`span`,SX,[r.usePlaceholder?he(t.$slots,`placeholder`,{key:0,node:r.node,displaySrc:A.value,imageLoaded:o.value,hasError:s.value,fallbackSrc:r.fallbackSrc,lazy:r.lazy},()=>[n[0]||=L(`span`,{class:`image-shimmer`},null,-1)],!0):(u(),G(`span`,CX,W(e.node.raw),1))])):O(``,!0),te.value&&!e.node.loading?(u(),G(`span`,wX,[r.usePlaceholder?he(t.$slots,`placeholder`,{key:0,node:r.node,displaySrc:A.value,imageLoaded:o.value,hasError:s.value,fallbackSrc:r.fallbackSrc,lazy:r.lazy},()=>[n[1]||=L(`span`,{class:`image-shimmer`},null,-1)],!0):(u(),G(`span`,TX,W(e.node.raw),1))])):O(``,!0),I.value?(u(),G(`span`,EX,[he(t.$slots,`error`,{node:r.node,displaySrc:A.value,imageLoaded:o.value,hasError:s.value,fallbackSrc:r.fallbackSrc,lazy:r.lazy},()=>[n[2]||=L(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 24 24`},[L(`path`,{fill:`currentColor`,d:`M2 2h20v10h-2V4H4v9.586l5-5L14.414 14L13 15.414l-4-4l-5 5V20h8v2H2zm13.547 5a1 1 0 1 0 0 2a1 1 0 0 0 0-2m-3 1a3 3 0 1 1 6 0a3 3 0 0 1-6 0m3.625 6.757L19 17.586l2.828-2.829l1.415 1.415L20.414 19l2.829 2.828l-1.415 1.415L19 20.414l-2.828 2.829l-1.415-1.415L17.586 19l-2.829-2.828z`})],-1),L(`span`,null,W(B(fe)(`image.loadError`)),1)],!0)])):O(``,!0)],8,bX))}}),[[`__scopeId`,`data-v-046e82ac`]]);DX.install=e=>{e.component(DX.__name,DX)};var OX={key:2},kX=K({__name:`NodeChildRenderer`,props:{node:{},components:{},customId:{},indexKey:{},fallbackToText:{type:Boolean,default:!1}},setup(e){let t=e,n=mY(()=>t.customId),r=g(`markstreamHtmlPolicy`,void 0),i=g(`markstreamNestedRendererProps`,void 0),a=R(()=>r?.value??`safe`),s=R(()=>{let e=i?.value??{};return rY(Q({},e),{customId:t.customId??e.customId,htmlPolicy:a.value})}),c=o({loader:()=>Promise.resolve().then(()=>k0),suspensible:!1}),l=R(()=>t.components[String(t.node.type)]),d=R(()=>!!(l.value&&n.value[t.node.type]&&!dY(String(t.node.type)))),f=R(()=>d.value?AY(t.node,a.value):void 0),p=R(()=>Array.isArray(t.node.children)&&t.node.children.length>0),m=R(()=>String(t.node.content??``)),h=R(()=>String(t.node.content??t.node.raw??``));return(t,n)=>l.value&&d.value?(u(),I(C(l.value),ie({key:0},f.value,{node:e.node,loading:e.node.loading,"index-key":e.indexKey,"custom-id":e.customId,"is-dark":s.value.isDark}),{default:V(()=>[p.value?(u(),I(B(c),ie({key:0},s.value,{nodes:e.node.children,"index-key":e.indexKey,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`nodes`,`index-key`])):m.value?(u(),I(B(c),ie({key:1},s.value,{content:m.value,final:!e.node.loading,"index-key":`${e.indexKey||`child`}-content`,"smooth-streaming":!1,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`content`,`final`,`index-key`])):O(``,!0)]),_:1},16,[`node`,`loading`,`index-key`,`custom-id`,`is-dark`])):l.value?(u(),I(C(l.value),{key:1,node:e.node,"custom-id":e.customId,"index-key":e.indexKey},null,8,[`node`,`custom-id`,`index-key`])):e.fallbackToText?(u(),G(`span`,OX,W(h.value),1)):O(``,!0)}}),AX=Object.freeze({enabled:!0,contextLineCount:2,minimumLineCount:4,revealLineCount:5});function jX(e){var t;if(typeof e==`boolean`)return e;if(e&&typeof e==`object`){let n=e;return rY(Q(Q({},AX),n),{enabled:(t=n.enabled)==null||t})}return Q({},AX)}function MX(e,t){if(!1===e.renderSideBySide)return!0;if(!0!==e.useInlineViewWhenSpaceIsLimited)return!1;let n=e.renderSideBySideInlineBreakpoint;return t>0&&t<=(typeof n==`number`&&Number.isFinite(n)?n:900)}function NX(e){let t=String(e??``).split(/\r?\n/,1)[0]?.trim()??``;if(t.length<3)return``;let n=t[0];if(n!=="`"&&n!==`~`||t[1]!==n||t[2]!==n)return``;let r=3;for(;t[r]===n;)r+=1;return t.slice(r).trim()}function PX(e){return(String(e??``).trim().split(/\s+/,1)[0]??``)===`diff`}function FX(e){return!0===e.diff||PX(e.language)||PX(NX(String(e.raw??``)))}function IX(e,t,n){let r=function(e){let t=NX(e);if(!t)return``;let n=t.split(/\s+/).filter(Boolean);if(!n.length)return``;let r=n[0]===`diff`?n.slice(1):n;for(let e of r){let t=e.includes(`:`)?e.slice(e.indexOf(`:`)+1):e;if(t&&/[./\\-]/.test(t))return t}return``}(e);return{title:r||t,caption:r?n?`Diff / ${t}`:t:``}}var LX=[`aria-busy`,`aria-label`,`data-language`,`data-markstream-line-numbers`],RX={key:0,translate:`no`,class:`markstream-pre__diff-code`},zX={class:`markstream-pre__diff-pane-content`},BX={class:`markstream-pre__diff-number`,"aria-hidden":`true`},VX={class:`markstream-pre__diff-content`},HX={class:`markstream-pre__diff-content-inner`},UX={key:0,class:`markstream-pre__line-numbers`,"aria-hidden":`true`},WX=[`textContent`],GX=[`textContent`],KX=K({__name:`PreCodeNode`,props:{node:{},loading:{type:Boolean},showLineNumbers:{type:Boolean},diffInline:{type:Boolean},diffHideUnchangedRegions:{type:[Boolean,Object]},reservedHeightPx:{}},setup(e){let t=e;function n(e,t){let n=String(e??``);return t?n:n.replace(/\r\n$|\n$|\r$/,``)}let r=R(()=>{let e=String(t.node?.language??``);return String(String(e).split(/\s+/g)[0]??``).toLowerCase().replace(/[^\w-]/g,``)||`plaintext`}),a=R(()=>`language-${r.value}`),o=R(()=>!0===t.loading||!0===t.node?.loading),s=R(()=>n(t.node?.code,o.value)),c=``,d=1,f=R(()=>function(e){let t=0,n=1;e.startsWith(c)&&(t=c.length,n=d,t>0&&e[t-1]===`\r`&&e[t]===` + `};let c=/^\[(\d+)\]/,l=/^\[([^\]\n]+)\]/,u=e=>{if(!e.startsWith(`[`))return!1;let t=l.exec(e);if(!t)return e!==`[`&&!/^\[\d+$/.test(e);let n=String(t[1]??``);return!e.slice(t[0].length).startsWith(`(`)&&!/^\d+$/.test(n)};n.inline.ruler.before(`escape`,`reference`,(e,t)=>{let n=e;if(n.src[n.pos]!==`[`)return!1;let r=c.exec(n.src.slice(n.pos));if(!r)return!1;let i=n.src.slice(Math.max(0,n.pos-120),n.pos);if(/"[^"\n]{1,80}"\s*:\s*$/.test(i))return!1;let a=n.src.slice(n.pos+r[0].length);if(a.startsWith(`](`)||a.startsWith(`(`)||u(a))return!1;if(!t){let e=r[1],t=n.push(`reference`,`span`,0);t.content=e,t.markup=r[0],t.raw=r[0]}return n.pos+=r[0].length,!0}),n.renderer.rules.reference=(e,t)=>{let n=String(e[t].content??``);return`${n}`};let d=n.use.bind(n);return n.use=((...e)=>(r.__markstreamHasCustomParserExtensions=!0,d(...e))),n}function JK({nextContent:e,previousContent:t,typewriterEnabled:n}){return!n||e===t?{settledContent:e,streamedDelta:``,appended:!1}:t&&e.startsWith(t)&&e.length>t.length?{settledContent:t,streamedDelta:e.slice(t.length),appended:!0}:{settledContent:e,streamedDelta:``,appended:!1}}function YK({nextContent:e,persistedContent:t,currentState:n,typewriterEnabled:r,streamRenderVersionChanged:i=!1}){let a=`${n.settledContent}${n.streamedDelta}`;return r?n.streamedDelta&&a===e?i?{settledContent:a,streamedDelta:``,appended:!1}:{settledContent:n.settledContent,streamedDelta:n.streamedDelta,appended:!1}:JK({nextContent:e,previousContent:t??a,typewriterEnabled:r}):{settledContent:e,streamedDelta:``,appended:!1}}var XK={plain:`plaintext`,text:`plaintext`,txt:`plaintext`,js:`javascript`,mjs:`javascript`,cjs:`javascript`,ts:`typescript`,mts:`typescript`,cts:`typescript`,golang:`go`,py:`python`,rb:`ruby`,rs:`rust`,kt:`kotlin`,kts:`kotlin`,md:`markdown`,yml:`yaml`,sh:`shellscript`,bash:`shellscript`,zsh:`shellscript`,shell:`shellscript`,shellscript:`shellscript`,ps:`powershell`,ps1:`powershell`,pwsh:`powershell`,"c++":`cpp`,"c#":`csharp`,cs:`csharp`,objc:`objective-c`,objectivec:`objective-c`,"objective-c":`objective-c`,objectivecpp:`objective-cpp`,"objective-c++":`objective-cpp`,"objective-cpp":`objective-cpp`};function ZK(e){let t=String(e??``).trim();if(!t)return``;let[n=``]=t.split(/\s+/);return n.split(`:`)[0]?.trim().toLowerCase()??``}function QK(e){let t=ZK(e);return XK[t]??t}function $K(e){if(!Array.isArray(e))return;let t=e.filter(e=>typeof e==`string`).map(e=>QK(e)).filter(Boolean),n=Array.from(new Set(t)).sort();return n.length>0?n:void 0}function eq(e){if(!Array.isArray(e))return;let t=[],n=new Set;for(let r of e){if(typeof r!=`string`)continue;let e=r.trim();!e||n.has(e)||(n.add(e),t.push(e))}return t.length>0?t:void 0}function tq(e){return eq(e)?.join(`\0`)??``}function nq(e,t){return`${tq(e)}\u0000\u0000${$K(t)?.join(`\0`)??``}`}function rq(e,t,n=1){let r=Number(e);return Number.isFinite(r)?Math.max(n,r):t}function iq(e,t){let n=Number(e);return Number.isFinite(n)?Math.max(0,n):t}var aq=class{constructor(e={},t){this.source=``,this.visible=``,this.done=!1,this.paused=!1,this.listeners=new Set,this.rafId=0,this.startedAt=0,this.lastTick=0,this.charBudget=0,this.hasStarted=!1,this.destroyed=!1,this.getSnapshot=()=>({source:this.source,visible:this.visible,done:this.done,paused:this.paused,pendingChars:this.pendingChars,caughtUp:this.caughtUp,final:this.final}),this.subscribe=e=>this.destroyed?()=>{}:(this.listeners.add(e),()=>{this.listeners.delete(e)}),this.enqueue=e=>{if(this.destroyed||!e)return;this.done&&=!1;let t=this.source.length>0,n=this.pendingChars<=0;if(this.source+=e,n){let e=lq();this.startedAt=t&&this.hasStarted?e-this.normalizedStartDelayMs:e,this.lastTick=e,this.charBudget=0}this.hasStarted=!0,this.emit(),this.ensureLoop()},this.finish=(e={})=>{if(!this.destroyed){if(this.done=!0,e.flush??this.flushOnFinish){this.visible=this.source,this.charBudget=0,this.currentCps=this.minCharsPerSecond,this.cancelLoop(),this.emit();return}this.emit(),this.ensureLoop()}},this.flush=()=>{this.destroyed||(this.visible=this.source,this.charBudget=0,this.currentCps=this.minCharsPerSecond,this.cancelLoop(),this.emit())},this.reset=(e=``)=>{this.destroyed||(this.cancelLoop(),this.source=e,this.visible=e,this.done=!1,this.paused=!1,this.hasStarted=!1,this.startedAt=0,this.lastTick=0,this.charBudget=0,this.currentCps=this.minCharsPerSecond,this.emit())},this.pause=()=>{this.destroyed||this.paused||(this.paused=!0,this.cancelLoop(),this.emit())},this.resume=()=>{if(this.destroyed||!this.paused)return;this.paused=!1;let e=lq();this.lastTick=e,this.startedAt||=e,this.emit(),this.ensureLoop()},this.destroy=()=>{this.destroyed||(this.destroyed=!0,this.cancelLoop(),this.listeners.clear())},this.dispose=()=>{this.destroy()},this.tick=e=>{if(this.rafId=0,this.destroyed||this.paused)return;if(this.pendingChars<=0){this.startedAt=0,this.lastTick=0,this.charBudget=0,this.currentCps=this.minCharsPerSecond;return}if(e-this.startedAtthis.normalizedCatchUpThreshold?this.normalizedCatchUpLatencyMs:this.normalizedTargetLatencyMs,a=uq(r/Math.max(.001,i/1e3),this.minCharsPerSecond,this.maxCharsPerSecond);if(this.currentCps+=(a-this.currentCps)*.2,this.charBudget+=this.currentCps*(n/1e3),this.charBudget<1){this.ensureLoop();return}let o=Math.min(Math.floor(this.charBudget),this.maxCharsPerCommit),s=cq(this.source.slice(this.visible.length),o,this.segmenter);s.text&&(this.visible+=s.text,this.charBudget=Math.max(0,this.charBudget-s.graphemeCount),this.emit()),this.ensureLoop()};let{minCharsPerSecond:n=40,maxCharsPerSecond:r=1e3,targetLatencyMs:i=900,catchUpLatencyMs:a=350,catchUpThreshold:o=600,maxCommitFps:s=30,startDelayMs:c=80,maxCharsPerCommit:l=80,flushOnFinish:u=!1}=e;this.minCharsPerSecond=rq(n,40,1),this.maxCharsPerSecond=Math.max(this.minCharsPerSecond,rq(r,1e3,1)),this.normalizedTargetLatencyMs=rq(i,900,1),this.normalizedCatchUpLatencyMs=rq(a,350,1),this.normalizedCatchUpThreshold=iq(o,600),this.normalizedStartDelayMs=iq(c,80),this.maxCommitFps=Math.trunc(rq(s,30,1)),this.maxCharsPerCommit=Math.trunc(rq(l,80,1)),this.flushOnFinish=u,this.segmenter=sq(),t&&this.listeners.add(t),this.currentCps=this.minCharsPerSecond}get pendingChars(){return Math.max(0,this.source.length-this.visible.length)}get caughtUp(){return this.pendingChars===0}get final(){return this.done&&this.caughtUp}ensureLoop(){if(!(this.destroyed||this.rafId||this.paused||this.pendingChars<=0)){if(typeof requestAnimationFrame!=`function`){this.flush();return}this.rafId=requestAnimationFrame(this.tick)}}cancelLoop(){this.rafId&&=(typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(this.rafId),0)}emit(){if(!this.destroyed)for(let e of this.listeners)e()}};function oq(e={},t){let n=new aq(e,t);return{getSnapshot:n.getSnapshot,subscribe:n.subscribe,enqueue:n.enqueue,finish:n.finish,flush:n.flush,reset:n.reset,pause:n.pause,resume:n.resume,destroy:n.destroy,dispose:n.dispose}}function sq(){if(typeof Intl>`u`)return null;let e=Intl.Segmenter;return e?new e(void 0,{granularity:`grapheme`}):null}function cq(e,t,n){if(!e||t<=0)return{text:``,graphemeCount:0};if(!n){let n=Array.from(e).slice(0,t);return{text:n.join(``),graphemeCount:n.length}}let r=``,i=0;for(let a of n.segment(e)){if(i>=t)break;r+=a.segment,i++}return{text:r,graphemeCount:i}}function lq(){return typeof performance<`u`?performance.now():Date.now()}function uq(e,t,n){return Math.min(n,Math.max(t,e))}var dq=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),fq=Symbol.for(`markstream-vue:node-lifecycle`);function pq(){}var mq=new Map,hq=`material`,gq=new Map,_q=new Map,vq=null;function yq(e){mq.set(e.id,e)}function bq(e){let t=mq.get(hq);if(!t)return;let n=t.core[e];if(n)return n;let r=gq.get(t.id);if(r){let t=r[e];if(t)return t}t.loadExtended&&!gq.has(t.id)&&Sq(t)}function xq(){return mq.get(hq)?.fallback??``}function Sq(e){return dq(this,null,function*(){if(gq.has(e.id))return gq.get(e.id)??null;let t=_q.get(e.id);return t||(t=(e.loadExtended?.call(e)??Promise.resolve(null)).then(t=>(gq.set(e.id,t),vq?.(),t)).catch(()=>(gq.set(e.id,null),null)),_q.set(e.id,t)),t})}var Cq=``,wq=``,Tq={id:`material`,core:{"":wq,plain:``,text:wq,javascript:``,typescript:``,jsx:``,tsx:``,html:``,css:``,scss:``,json:``,python:``,ruby:``,go:``,java:``,kotlin:``,c:``,cpp:``,cs:Cq,csharp:Cq,php:``,shell:``,powershell:``,sql:``,yaml:``,markdown:``,xml:``,rust:``,vue:``,mermaid:``},fallback:``,loadExtended:()=>ge(()=>import(`./extended-BP0HZdSW.js`).then(e=>e.materialExtendedMap),[])},Eq=de(0);vq=()=>{Eq.value++},yq(Tq);var Dq={"":``,javascript:`javascript`,js:`javascript`,mjs:`javascript`,cjs:`javascript`,typescript:`typescript`,ts:`typescript`,jsx:`jsx`,tsx:`tsx`,golang:`go`,py:`python`,rb:`ruby`,sh:`shell`,bash:`shell`,zsh:`shell`,shellscript:`shell`,bat:`shell`,batch:`shell`,ps1:`powershell`,plaintext:`plain`,text:`plain`,txt:`plain`,"c++":`cpp`,"c#":`csharp`,cs:`csharp`,"objective-c":`objectivec`,"objective-c++":`objectivecpp`,yml:`yaml`,md:`markdown`,rs:`rust`,kt:`kotlin`};function Oq(e){let t=function(e){if(!e)return``;let t=e.trim();if(!t)return``;let[n]=t.split(/\s+/),[r]=n.split(`:`);return r.toLowerCase()}(e);return Dq[t]??t}function kq(e){let t=Oq(e);if(!t)return`plaintext`;switch(t){case`plain`:return`plaintext`;case`jsx`:return`javascript`;case`tsx`:return`typescript`;case`objectivec`:return`objective-c`;case`objectivecpp`:return`objective-cpp`;default:return t}}function Aq(e){return bq(Oq(e))||xq()}var jq={js:`JavaScript`,javascript:`JavaScript`,ts:`TypeScript`,jsx:`JSX`,tsx:`TSX`,html:`HTML`,css:`CSS`,scss:`SCSS`,json:`JSON`,py:`Python`,python:`Python`,rb:`Ruby`,go:`Go`,java:`Java`,c:`C`,cpp:`C++`,cs:`C#`,csharp:`C#`,php:`PHP`,sh:`Shell`,bash:`Bash`,sql:`SQL`,yaml:`YAML`,md:`Markdown`,d2:`D2`,d2lang:`D2`,"":`Plain Text`,plain:`Plain Text`},Mq=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),Nq=null,Pq=!1,Fq=null,Iq=zq;function Lq(e){let t=e?.default??e;return t&&typeof t.renderToString==`function`?t:null}function Rq(){try{return Lq(globalThis?.katex)}catch{return null}}function zq(){return Mq(null,null,function*(){let e=Rq();if(e)return e;let t=yield ge(()=>import(`./katex-KvbZ9TWr.js`),[]);try{yield ge(()=>import(`./mhchem-Cyl3090Q.js`),__vite__mapDeps([4,5]))}catch{}return Lq(t)})}function Bq(e){let t=Promise.resolve(e).then(e=>Fq===t&&e?(Nq=Lq(e)??e,Nq):null).catch(()=>null).finally(()=>{Fq===t&&(Fq=null)});return Fq=t,Pq=!0,t}function Vq(e){Iq=e,Nq=null,Pq=!1,Fq=null}function Hq(e){Vq(e??zq)}function Uq(){return typeof Iq==`function`}function Wq(){let e=Iq;if(!e||e===zq)return null;if(Nq)return Nq;let t=Rq();if(t)return Nq=t,Nq;if(Pq)return null;try{let t=e();return t?typeof t?.then==`function`?(Bq(t),null):(Nq=Lq(t)??t,Nq):null}catch{return null}}function Gq(){return Mq(this,null,function*(){let e=Rq();if(e)return Nq=e,Nq;if(Nq)return Nq;if(Fq)return Fq;if(Pq)return null;let t=Iq;if(!t)return Pq=!0,null;try{let e=t();if(typeof e?.then==`function`)return Bq(e);if(e)return Nq=Lq(e)??e,Pq=!0,Nq}catch{}return Pq=!0,null})}function Kq(e){return e?e.replace(/·/g,`⋅`).replace(/℃/g,`°C`):``}var qq=null,Jq=null,Yq=new Map,Xq=new Map,Zq=5,Qq=new Set;function $q(){if(Yq.size{let{id:t,html:n,error:r}=e.data,i=Yq.get(t);if(i)if(Yq.delete(t),clearTimeout(i.timeoutId),i.cleanup(),$q(),r)i.aborted||i.reject(Error(r));else{let{content:t,displayMode:r}=e.data;if(t){let e=`${r?`d`:`i`}:${t}`;if(Xq.set(e,n),Xq.size>200){let e=Xq.keys().next().value;Xq.delete(e)}}i.aborted||i.resolve(n)}},qq.onerror=e=>{console.error(`[katexWorkerClient] Worker error:`,e);for(let[t,n]of Yq.entries())clearTimeout(n.timeoutId),n.cleanup(),n.aborted||n.reject(Error(`Worker error: ${e.message}`));Yq.clear(),eJ()}}function nJ(){var e;for(let e of Yq.values())clearTimeout(e.timeoutId),e.cleanup(),e.aborted||e.reject(Error(`Worker cleared`));Yq.clear(),eJ(),qq&&((e=qq.terminate)==null||e.call(qq)),qq=null,Jq=null}function rJ(e,t=!0,n=2e3,r){return Mq(this,null,function*(){performance.now();let i=Kq(e);if(!Uq()){let e=Error(`KaTeX rendering disabled`);return e.name=`KaTeXDisabled`,e.code=`KATEX_DISABLED`,Promise.reject(e)}if(Jq)return Promise.reject(Jq);let a=`${t?`d`:`i`}:${i}`,o=Xq.get(a);if(o)return $q(),Promise.resolve(o);let s=qq||(Jq=Error(`[katexWorkerClient] No worker instance set. Please inject a Worker via setKaTeXWorker().`),Jq.name=`WorkerInitError`,Jq.code=`WORKER_INIT_ERROR`,null);if(!s)return Promise.reject(Jq);if(Yq.size>=Zq){let e=Error(`Worker busy`);return e.name=`WorkerBusy`,e.code=`WORKER_BUSY`,e.busy=!0,e.inFlight=Yq.size,e.max=Zq,Promise.reject(e)}return new Promise((e,a)=>{if(r?.aborted){let e=Error(`Aborted`);e.name=`AbortError`,a(e);return}let o=Math.random().toString(36).slice(2),c=null,l=globalThis.setTimeout(()=>{let e=Yq.get(o);if(!e)return;Yq.delete(o),e.cleanup();let t=Error(`Worker render timed out`);t.name=`WorkerTimeout`,t.code=`WORKER_TIMEOUT`,e.aborted||e.reject(t),$q()},n);c=()=>{let e=Yq.get(o);if(!e||e.aborted)return;e.aborted=!0,e.cleanup();let t=Error(`Aborted`);t.name=`AbortError`,a(t)},r&&r.addEventListener(`abort`,c,{once:!0});let u=e,d=a;Yq.set(o,{resolve:e=>{u(e)},reject:e=>{d(e)},timeoutId:l,aborted:!1,cleanup:()=>{r&&c&&r.removeEventListener(`abort`,c),c=null}});try{s.postMessage({id:o,content:i,displayMode:t})}catch(e){let t=Yq.get(o);Yq.delete(o),clearTimeout(l),t?.cleanup(),t?.reject(e),$q()}})})}function iJ(e,t=!0,n){let r=`${t?`d`:`i`}:${Kq(e)}`;if(Xq.set(r,n),Xq.size>200){let e=Xq.keys().next().value;Xq.delete(e)}}var aJ=`WORKER_BUSY`;function oJ(e=2e3,t){return Yq.size{let i,a=!1,o=null,s=()=>{},c=()=>{i&&globalThis.clearTimeout(i),Qq.delete(s),t&&o&&t.removeEventListener(`abort`,o),o=null};s=()=>{a||(a=!0,c(),n())},Qq.add(s),i=globalThis.setTimeout(()=>{if(a)return;a=!0,c();let e=Error(`Wait for worker slot timed out`);e.name=`WorkerBusyTimeout`,e.code=`WORKER_BUSY_TIMEOUT`,r(e)},e),queueMicrotask(()=>$q()),t&&(o=()=>{if(a)return;a=!0,c();let e=Error(`Aborted`);e.name=`AbortError`,r(e)},t.aborted?o():t.addEventListener(`abort`,o,{once:!0}))})}var sJ={timeout:2e3,waitTimeout:1500,backoffMs:30,maxRetries:1};function cJ(e){return Mq(this,arguments,function*(e,t=!0,n={}){if(!Uq()){let e=Error(`KaTeX rendering disabled`);throw e.name=`KaTeXDisabled`,e.code=`KATEX_DISABLED`,e}let r=n.timeout??sJ.timeout,i=n.waitTimeout??sJ.waitTimeout,a=n.backoffMs??sJ.backoffMs,o=n.maxRetries??sJ.maxRetries,s=Number.isFinite(o)?Math.max(0,Math.min(Math.floor(o),8)):sJ.maxRetries,c=n.signal,l=0;for(;;){if(c?.aborted){let e=Error(`Aborted`);throw e.name=`AbortError`,e}try{return yield rJ(e,t,r,c)}catch(e){if(e?.code!==`WORKER_BUSY`||l>=s)throw e;if(l++,yield oJ(i,c).catch(()=>{}),c?.aborted){let e=Error(`Aborted`);throw e.name=`AbortError`,e}a>0&&(yield new Promise(e=>globalThis.setTimeout(e,a*l)))}}})}function lJ(e){let t=typeof e==`number`?e:Number.parseFloat(String(e??``));return Number.isFinite(t)&&t>0?t:null}function uJ(e){for(let t of e.split(/\r?\n/)){let e=t.trim();if(!(!e||e.startsWith(`%%`)))return(e.match(/^([A-Z][\w-]*)\b/i)?.[1])?.toLowerCase()||``}return``}function dJ(e){let t=e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e&&!e.startsWith(`%%`)),n=Math.max(1,t.length),r=uJ(e);return r===`gantt`?220+28*n:r===`sequencediagram`?180+26*n:r===`classdiagram`||r===`statediagram`||r===`erdiagram`?180+24*n:r===`flowchart`||r===`graph`?170+28*n:200+22*n}function fJ(e){let t=e.split(/\r?\n/).filter(e=>/^\s*-\s+/.test(e)).length;return t>=3?500:t>0?280+60*t:360}function pJ(e,t=360,n=500){return n==null?Math.max(t,e):Math.min(Math.max(t,e),n)}function mJ(e,t=360,n=500){return pJ(e,t,n)}function hJ(e,t=360,n=500){return pJ(e,t,n)}var gJ=Object.defineProperty,_J=Object.defineProperties,vJ=Object.getOwnPropertyDescriptors,yJ=Object.getOwnPropertySymbols,bJ=Object.prototype.hasOwnProperty,xJ=Object.prototype.propertyIsEnumerable,SJ=(e,t,n)=>t in e?gJ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,CJ=(e,t)=>{for(var n in t||={})bJ.call(t,n)&&SJ(e,n,t[n]);if(yJ)for(var n of yJ(t))xJ.call(t,n)&&SJ(e,n,t[n]);return e},wJ=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),TJ=()=>ge(()=>import(`./mermaid.core-CL4kgY7H.js`),__vite__mapDeps([6,7,8,9,2,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29])),EJ=null,DJ=TJ,OJ=null,kJ=!1,AJ=!1,jJ=0;function MJ(e){DJ=e,jJ++,EJ=null,OJ=null,kJ=!1,AJ=!1}function NJ(e){MJ(e??TJ)}function PJ(){return typeof DJ==`function`}function FJ(e){if(!e)return e;let t=e&&e.default?e.default:e;if(t&&(typeof t.render==`function`||typeof t.parse==`function`||typeof t.initialize==`function`))return t;if(t&&t.mermaidAPI&&(typeof t.mermaidAPI.render==`function`||typeof t.mermaidAPI.parse==`function`)){let e=t.mermaidAPI;return n=CJ({},t),r={render:e.render.bind(e),parse:e.parse?e.parse.bind(e):void 0,initialize:n=>typeof t.initialize==`function`?t.initialize(n):e.initialize?e.initialize(n):void 0},_J(n,vJ(r))}var n,r;return e.mermaid&&typeof e.mermaid.render==`function`?e.mermaid:t}function IJ(e){if(e)try{let t=e?.initialize;e.initialize=n=>{let r=CJ({suppressErrorRendering:!0},n||{});return typeof t==`function`?t.call(e,r):e?.mermaidAPI&&typeof e.mermaidAPI.initialize==`function`?e.mermaidAPI.initialize(r):void 0}}catch{}}function LJ(){return wJ(this,null,function*(){if(EJ)return EJ;let e=function(){try{return FJ(globalThis?.mermaid)}catch{return null}}();if(e)return EJ=e,IJ(EJ),EJ;let t=DJ,n=jJ;return t?t===TJ&&kJ?null:OJ||(OJ=wJ(null,null,function*(){let e;try{e=yield t()}catch(e){if(t===TJ)return n===jJ&&t===DJ&&(kJ=!0,function(e){AJ||(AJ=!0,console.warn(`[markstream-vue] Optional dependency "mermaid" is not installed. Mermaid blocks will render as source.`,e))}(e)),null;throw e}finally{n===jJ&&t===DJ&&(OJ=null)}return n!==jJ||t!==DJ?null:e?(EJ=FJ(e),IJ(EJ),EJ):null}),OJ):null})}var RJ=null,zJ=null,BJ=new Map,VJ=new Map;function HJ(e){for(let t of BJ.values())t.reject(e);BJ.clear(),VJ.clear()}var UJ=5,WJ=`MERMAID_DISABLED`;function GJ(e){if(RJ&&RJ!==e){let e=Error(`Worker replaced`);e.code=`WORKER_REPLACED`,HJ(e)}RJ=e,zJ=null;let t=e;RJ.onmessage=e=>{if(RJ!==t)return;let{id:n,ok:r,result:i,error:a}=e.data,o=BJ.get(n);o&&(!1===r||a?o.reject(Error(a||`Unknown error`)):o.resolve(i))},RJ.onerror=e=>{var n,r;if(RJ===t)if(BJ.size!==0){try{(r=console.debug)==null||r.call(console,`[mermaidWorkerClient] Worker error:`,e?.message||e)}catch{}HJ(Error(`Worker error: ${e.message}`))}else(n=console.debug)==null||n.call(console,`[mermaidWorkerClient] Worker error (no pending):`,e?.message||e)},RJ.onmessageerror=e=>{var n,r;if(RJ===t)if(BJ.size!==0){try{(r=console.debug)==null||r.call(console,`[mermaidWorkerClient] Worker messageerror:`,e)}catch{}HJ(Error(`Worker messageerror`))}else(n=console.debug)==null||n.call(console,`[mermaidWorkerClient] Worker messageerror (no pending):`,e)}}function KJ(){var e;if(RJ)try{HJ(Error(`Worker cleared`)),(e=RJ.terminate)==null||e.call(RJ)}catch{}RJ=null,zJ=null}function qJ(e,t,n,r){if(!PJ()){let e=Error(`Mermaid rendering disabled`);return e.name=`MermaidDisabled`,e.code=WJ,Promise.reject(e)}let i=`${e}\0${t.theme}\0${n}\0${t.code}`,a=VJ.get(i);return a||(a=function(e,t,n=1400){if(!PJ()){let e=Error(`Mermaid rendering disabled`);return e.name=`MermaidDisabled`,e.code=`MERMAID_DISABLED`,Promise.reject(e)}if(zJ)return Promise.reject(zJ);let r=RJ||(zJ=Error(`[mermaidWorkerClient] No worker instance set. Please inject a Worker via setMermaidWorker().`),zJ.name=`WorkerInitError`,zJ.code=`WORKER_INIT_ERROR`,null);if(!r)return Promise.reject(zJ);if(BJ.size>=UJ){let e=Error(`Worker busy`);return e.name=`WorkerBusy`,e.code=`WORKER_BUSY`,e.inFlight=BJ.size,e.max=UJ,Promise.reject(e)}return new Promise((i,a)=>{let o=Math.random().toString(36).slice(2),s,c=!1,l=()=>{c||(c=!0,s!=null&&globalThis.clearTimeout(s),BJ.delete(o))};BJ.set(o,{resolve:e=>{l(),i(e)},reject:e=>{l(),a(e)}});try{r.postMessage({id:o,action:e,payload:t})}catch(e){BJ.delete(o),a(e);return}s=globalThis.setTimeout(()=>{let e=Error(`Worker call timed out`);e.name=`WorkerTimeout`,e.code=`WORKER_TIMEOUT`;let t=BJ.get(o);t&&t.reject(e)},n)})}(e,t,n),VJ.set(i,a),a.then(()=>{VJ.get(i)===a&&VJ.delete(i)},()=>{VJ.get(i)===a&&VJ.delete(i)})),function(e,t){if(!t)return e;if(t.aborted){let e=Error(`Aborted`);return e.name=`AbortError`,Promise.reject(e)}return new Promise((n,r)=>{let i=()=>{},a=()=>t.removeEventListener(`abort`,i);i=()=>{a();let e=Error(`Aborted`);e.name=`AbortError`,r(e)},t.addEventListener(`abort`,i,{once:!0}),e.then(e=>{a(),n(e)},e=>{a(),r(e)})})}(a,r)}function JJ(e,t,n=1400,r){return qJ(`canParse`,{code:e,theme:t},n,r)}function YJ(e,t,n=1400,r){return qJ(`findPrefix`,{code:e,theme:t},n,r)}var XJ=Object.defineProperty,ZJ=Object.defineProperties,QJ=Object.getOwnPropertyDescriptors,$J=Object.getOwnPropertySymbols,eY=Object.prototype.hasOwnProperty,tY=Object.prototype.propertyIsEnumerable,nY=(e,t,n)=>t in e?XJ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Q=(e,t)=>{for(var n in t||={})eY.call(t,n)&&nY(e,n,t[n]);if($J)for(var n of $J(t))tY.call(t,n)&&nY(e,n,t[n]);return e},rY=(e,t)=>ZJ(e,QJ(t)),iY=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),aY=`__global__`,oY=`__MARKSTREAM_VUE_CUSTOM_COMPONENTS_STORE__`,sY=(()=>{let e=globalThis;if(e[oY])return e[oY];let t={scopedCustomComponents:{},revision:de(0)};return e[oY]=t,t})(),cY=sY.revision,lY=Symbol(`markstreamCustomComponents`),uY=new Set(`text.paragraph.heading.code_block.list.list_item.blockquote.table.table_row.table_cell.definition_list.definition_item.footnote.footnote_reference.footnote_anchor.admonition.hardbreak.link.image.thematic_break.math_inline.math_block.strong.emphasis.strikethrough.highlight.insert.subscript.superscript.emoji.checkbox.checkbox_input.inline_code.html_inline.html_block.reference.mermaid.infographic.d2.vmr_container`.split(`.`));function dY(e){return uY.has(String(e).trim().toLowerCase())}function fY(e){return e.trim().replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/[_\s]+/g,`-`).toLowerCase()}function pY(e={}){let t={};for(let[n,r]of Object.entries(e))if(r!=null){t[n]=r;for(let e of new Set([bL(n),bL(fY(n))]))!e||dY(e)||Object.prototype.hasOwnProperty.call(t,e)||(t[e]=r)}return t}function mY(e){let t=g(lY,null);return R(()=>(cY.value,function(e,t={}){return cY.value,Q(Q(Q({},pY(sY.scopedCustomComponents[aY]||{})),pY(t)),pY(function(e){return e&&sY.scopedCustomComponents[e]||{}}(e)))}(e?.(),t?.value??{})))}var hY=[`aria-label`],gY={key:0,xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,class:`checkbox-icon checkbox-unchecked`},_Y={key:1,xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,class:`checkbox-icon checkbox-checked`},vY=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},yY=vY(K({__name:`CheckboxNode`,props:{node:{}},setup:e=>(t,n)=>(u(),G(`span`,{class:`checkbox-node`,role:`img`,"aria-label":e.node.checked?`checked`:`unchecked`},[e.node.checked?(u(),G(`svg`,_Y,[...n[1]||=[L(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`4`,fill:`currentColor`},null,-1),L(`path`,{d:`M9 12l2 2 4-4`,stroke:`hsl(var(--ms-background))`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,-1)]])):(u(),G(`svg`,gY,[...n[0]||=[L(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`4`,stroke:`currentColor`,"stroke-width":`2`},null,-1)]]))],8,hY))}),[[`__scopeId`,`data-v-be21ab83`]]);yY.install=e=>{e.component(yY.__name,yY)};var bY={class:`emoji-node`},xY=vY(K({__name:`EmojiNode`,props:{node:{}},setup:e=>(t,n)=>(u(),G(`span`,bY,W(e.node.name),1))}),[[`__scopeId`,`data-v-de55dc97`]]);xY.install=e=>{e.component(xY.__name,xY)};var SY=[`id`],CY=[`title`],wY=vY(K({__name:`FootnoteReferenceNode`,props:{node:{}},setup(e){let t=`#fnref--${e.node.id}`;function n(){if(typeof document>`u`)return;let e=document.querySelector(t);e?e.scrollIntoView({behavior:`smooth`}):console.warn(`Element with href: ${t} not found`)}return(r,i)=>(u(),G(`sup`,{id:`fnref-${e.node.id}`,class:`footnote-reference`,onClick:n},[L(`span`,{href:t,title:`查看脚注 ${e.node.id}`,class:`footnote-link cursor-pointer`},`[`+W(e.node.id)+`]`,9,CY)],8,SY))}}),[[`__scopeId`,`data-v-c1463a29`]]);wY.install=e=>{e.component(wY.__name,wY)};var TY=(()=>{try{return!1}catch{}return!1})();function EY(e){TY&&console.warn(e)}function DY(e,t=`safe`,n){return lK(e,t,n)}function OY(e){return pK(e)}function kY(e){return!0===e?``:!1===e?`false`:e==null?null:String(e)}function AY(e,t=`safe`){let n=String(e.tag||e.type||``).trim(),r=dK((i=e.attrs)?Array.isArray(i)?i.every(Array.isArray)?i.map(([e,t])=>[String(e),kY(t)]):i.filter(e=>e&&typeof e==`object`&&!Array.isArray(e)&&`name`in e).map(e=>[String(e.name),kY(e.value)]):Object.entries(i).map(([e,t])=>[e,kY(t)]):null,t,n);var i;if(!r)return;let a=OY(uK(r));return Object.keys(a).length>0?a:void 0}function jY(e,t,n=!1){let r=Object.entries(t??{}),i=r.length>0?r.map(([e,t])=>t===``?` ${e}`:` ${e}="${t}"`).join(``):``;return n?`<${e}${i} />`:`<${e}${i}>`}function MY(e,t){Array.isArray(t)?e.push(...t):t!=null&&e.push(t)}function NY(e,t,n,r,i,a,o=!1){let c=function(e,t){return cK(e,t)}(e,r);if(qI.has(e.toLowerCase())||!c&&eK(e,a))return null;if(!c&&$G(e,a))return o?[jY(e,t,!0)]:[jY(e,t),...n,``];let l=lK(t,a,e),u=l.key,d=u!=null&&u!==``?u:i;return c?s(r[e]||r[e.toLowerCase()],rY(Q({},OY(l)),{key:d}),n.length>0?n:void 0):s(e,rY(Q({},l),{innerHTML:void 0,key:d}),n.length>0?n:void 0)}function PY(e,t){return vK(e,t)}function FY(e,t,n=`safe`){if(!e)return[];try{return function(e,t,n=`safe`){let r=0,i=[],a=[];for(let o of e)if(o.type===`text`)(i.length>0?i[i.length-1].children:a).push(o.content);else if(o.type===`self_closing`){let e=NY(o.tagName,o.attrs||{},[],t,`ms-html-`+r++,n,!0);MY(i.length>0?i[i.length-1].children:a,e)}else if(o.type===`tag_open`)i.push({tagName:o.tagName,children:[],attrs:o.attrs,autoKey:`ms-html-`+r++});else if(o.type===`tag_close`){let e=o.tagName.toLowerCase(),r=-1;for(let t=i.length-1;t>=0;t--)if(i[t].tagName.toLowerCase()===e){r=t;break}if(r!==-1)for(;i.length>r;){let o=i.pop(),s=NY(o.tagName,o.attrs||{},o.children,t,o.autoKey,n);i.length>0?MY(i[i.length-1].children,s):MY(a,s),o.tagName.toLowerCase()!==e&&i.length>r&&EY(`Auto-closing unclosed tag: <${o.tagName}>`)}else EY(`Ignoring closing tag with no matching opening tag: `)}for(;i.length>0;){let e=i.pop(),r=NY(e.tagName,e.attrs||{},e.children,t,e.autoKey,n);i.length>0?MY(i[i.length-1].children,r):MY(a,r),EY(`Auto-closing unclosed tag: <${e.tagName}>`)}return a}(hK(e),t,n)}catch(e){return r=e,TY&&console.error(`Failed to parse HTML to VNodes:`,r),null}var r}var IY=[`innerHTML`],LY=vY(K({__name:`HtmlInlineNode`,props:{node:{},customId:{},htmlPolicy:{}},setup(e){let t=e,n=g(`markstreamHtmlPolicy`,void 0),r=R(()=>t.htmlPolicy??n?.value??`safe`),i=mY(()=>t.customId),a=K({name:`DynamicRenderer`,props:{nodes:{type:Array,required:!0}},render(){return this.nodes}}),o=R(()=>{let e=t.node.content;if(!e)return{mode:`html`,content:``};if(r.value===`escape`)return{mode:`html`,content:yK(e,r.value)};if(t.node.loading&&!t.node.autoClosed)return{mode:`text`,content:e};if(t.node.loading&&t.node.autoClosed){let t=FY(e,i.value,r.value);if(t!==null)return{mode:`dynamic`,nodes:t}}if(!PY(e,i.value))return{mode:`html`,content:yK(e,r.value)};let n=FY(e,i.value,r.value);return n===null?{mode:`html`,content:yK(e,r.value)}:{mode:`dynamic`,nodes:n}});return(e,n)=>o.value.mode===`dynamic`?(u(),G(`span`,{key:0,class:H([`html-inline-node`,{"html-inline-node--loading":t.node.loading}])},[b(B(a),{nodes:o.value.nodes},null,8,[`nodes`])],2)):o.value.mode===`text`?(u(),G(`span`,{key:1,class:H([`html-inline-node`,{"html-inline-node--loading":t.node.loading}])},W(o.value.content),3)):(u(),G(`span`,{key:2,class:H([`html-inline-node`,{"html-inline-node--loading":t.node.loading}]),innerHTML:o.value.content},null,10,IY))}}),[[`__scopeId`,`data-v-d17f12b0`]]);LY.install=e=>{e.component(LY.__name,LY)};var RY={class:`inline-code`},zY={key:0},BY=vY(K({__name:`InlineCodeNode`,props:{node:{}},setup(e){let t=e,n=S(),i=g(`markstreamFade`,void 0),a=g(`markstreamTextStreamState`,void 0),o=g(`markstreamStreamVersion`,void 0),s=R(()=>{let e=n.fade;return e===``||!0===e||e===`true`||!1!==e&&e!==`false`&&void 0}),c=R(()=>typeof s.value==`boolean`?s.value:typeof i?.value!=`boolean`||i.value),d=R(()=>String(t.node.code??``)),f=R(()=>!c.value),p=R(()=>{let e=n[`index-key`]??n.indexKey;return e==null||e===``?``:String(e)}),m=z(t.node.code),h=z(``),_=z(0),v;function y(){v?.(),v=void 0}function b(){y(),h.value&&=(m.value+=h.value,``)}l([()=>t.node.code,p,c],([e])=>{let t=String(e??``),n=p.value,r=YK({nextContent:t,persistedContent:n?a?.get(n):void 0,currentState:{settledContent:m.value,streamedDelta:h.value},typewriterEnabled:c.value});m.value=r.settledContent,h.value=r.streamedDelta,r.appended?(_.value+=1,function(){if(!h.value||v||!o)return;let e=o.value;v=l(()=>o.value,t=>{t!==e&&b()},{flush:`sync`})}()):h.value||y(),n&&a?.set(n,t)},{immediate:!0}),r(y);let x=R(()=>_.value%2==0?`inline-code-stream-delta--a`:`inline-code-stream-delta--b`);return(e,t)=>(u(),G(`code`,RY,[f.value?(u(),G(P,{key:0},[q(W(d.value),1)],64)):(u(),G(P,{key:1},[m.value?(u(),G(`span`,zY,W(m.value),1)):O(``,!0),h.value?(u(),G(`span`,{key:1,class:H([`inline-code-stream-delta`,[x.value]]),onAnimationend:b},W(h.value),35)):O(``,!0)],64))]))}}),[[`__scopeId`,`data-v-4e331c97`]]);BY.install=e=>{e.component(BY.__name,BY)};var VY=z(!1),HY=z(``),UY=z(`top`),WY=z(null),GY=z(null),KY=z(null),qY=z(null),JY=z(null),YY=null,XY=null,ZY=0;function QY(){YY&&=(clearTimeout(YY),null),XY&&=(clearTimeout(XY),null)}var $Y=!1,eX=null,tX=!1;function nX(e,t,n=`top`,r=!1,i,a){if(!e)return;let o=++ZY;QY();let s=()=>iY(null,null,function*(){if(yield function(){return iY(this,null,function*(){if(!$Y&&!tX&&typeof document<`u`){eX??=iY(null,null,function*(){let[{createApp:e,h:t},{default:n}]=yield Promise.all([ge(()=>import(`./vue.runtime.esm-bundler-CfVMpQsG.js`).then(e=>e.t),__vite__mapDeps([1,2])),ge(()=>import(`./Tooltip-Dg3XeiZZ.js`),__vite__mapDeps([30,1,2,7]))]),r=document.createElement(`div`);r.setAttribute(`data-singleton-tooltip`,`1`),document.body.appendChild(r),e({setup:()=>()=>t(n,{visible:VY.value,"anchor-el":WY.value,content:HY.value,placement:UY.value,id:GY.value,originX:KY.value,originY:qY.value,isDark:JY.value??void 0})}).mount(r),$Y=!0});try{yield eX}catch(e){$Y=!1,eX=null,tX=!0,console.warn(`[markstream-vue] Failed to mount Tooltip component. Tooltips will be disabled.`,e)}}})}(),$Y&&o===ZY){GY.value=`tooltip-${Date.now()}-${Math.floor(1e3*Math.random())}`,WY.value=e,HY.value=t,UY.value=n,KY.value=i?.x??null,qY.value=i?.y??null,JY.value=typeof a==`boolean`?a:null,VY.value=!0;try{e.setAttribute(`aria-describedby`,GY.value)}catch{}}});r?s():YY=setTimeout(s,80)}function rX(e=!1){ZY+=1,QY();let t=()=>{if(WY.value&&GY.value)try{WY.value.removeAttribute(`aria-describedby`)}catch{}VY.value=!1,WY.value=null,GY.value=null,KY.value=null,qY.value=null};e?t():XY=setTimeout(t,120)}var iX={"common.copy":`Copy`,"common.copied":`Copied`,"common.decrease":`Decrease`,"common.reset":`Reset`,"common.increase":`Increase`,"common.expand":`Expand`,"common.collapse":`Collapse`,"common.preview":`Preview`,"common.source":`Source`,"common.export":`Export`,"common.open":`Open`,"common.minimize":`Minimize`,"common.zoomIn":`Zoom in`,"common.zoomOut":`Zoom out`,"common.resetZoom":`Reset zoom`,"image.loadError":`Image failed to load`,"image.loading":`Loading image...`},aX=Symbol(`markstreamI18nFallback`);function oX(e,t){return t?.[e]??iX[e]}var sX=(e,t)=>oX(e,t)??function(e){return(e.split(`.`).pop()||e).replace(/[_-]/g,` `).replace(/([A-Z])/g,` $1`).replace(/\s+/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}(e);function cX(e,t){return{t(n){let r=oX(n,t);if(e.te&&r!=null&&!e.te(n))return sX(n,t);let i=e.t(n);return i===n&&r!=null?sX(n,t):i}}}function lX(){let e=function(){try{let e=x(),t=aX,n=e?.provides,r=e?.appContext?.provides;return n?.[t]??r?.[t]??null}catch{}return null}(),t=function(){try{let e=x(),t=e?.proxy,n=t?.$t;if(typeof n==`function`){let e=t?.$te;return{t:n.bind(t),te:typeof e==`function`?e.bind(t):void 0}}let r=e?.appContext?.config?.globalProperties,i=r?.$t;if(typeof i==`function`){let e=r?.$te;return{t:i.bind(r),te:typeof e==`function`?e.bind(r):void 0}}}catch{}return null}();if(t)return cX(t,e);try{let t=globalThis.$vueI18nUse||null;if(t&&typeof t==`function`)try{let n=t();if(n&&typeof n.t==`function`)return cX({t:n.t.bind(n),te:typeof n.te==`function`?n.te.bind(n):void 0},e)}catch{}}catch{}return{t:t=>sX(t,e)}}var uX=Symbol(`ViewportPriority`),dX=Symbol(`ViewportPriorityOptions`),fX=Symbol(`OffscreenHeavyNodeDeferral`),pX=R(()=>!1),mX=`400px`;function hX(){return g(dX,void 0)}function gX(){return g(fX,pX)}function _X(e,t){let n=typeof window<`u`&&typeof document<`u`,r=typeof t==`boolean`?z(t):t,i=n?window.requestIdleCallback??(e=>window.setTimeout(()=>e({didTimeout:!0,timeRemaining:()=>0}),16)):null,a=n?window.cancelIdleCallback??(e=>window.clearTimeout(e)):null,o=new WeakMap,s=1,c=new Map,u=new Map,d=new Set,f=null,m=null;function h(e){if(!e)return`viewport`;let t=o.get(e);return t||(t=s++,o.set(e,t)),String(t)}function g(){if(f!=null){try{a?.(f)}catch{}f=null}}function _(e){if(e){let t=c.get(e);if(t&&!t.targets.size){try{t.io.disconnect()}catch{}c.delete(e)}}u.size||d.size||g()}function v(e){let t=u.get(e);if(!t)return;let n=c.get(t.bucketKey);if(!t.visible.value){t.visible.value=!0;try{t.resolve()}catch{}}try{n?.io.unobserve(e)}catch{}n?.targets.delete(e),u.delete(e),d.delete(e),_(t.bucketKey)}function y(){!0!==window.__MARKSTREAM_DISABLE_VIEWPORT_PRIORITY_IDLE_DRAIN__&&i&&f==null&&d.size&&(f=i(()=>{f=null;let e=d.values().next().value;e&&(d.delete(e),v(e),d.size&&y())},{timeout:1200}))}function b(t,r){if(!n||typeof IntersectionObserver>`u`)return null;let i=function(t,n){return{root:e?.(t??null)??null,rootMargin:n?.rootMargin??mX,threshold:n?.threshold??0}}(t,r),a=[h((o=i).root),o.rootMargin,o.threshold].join(`\0`);var o;let s=c.get(a);if(s)return{key:a,bucket:s};let l;try{l=new IntersectionObserver(e=>{for(let t of e)(t.isIntersecting||t.intersectionRatio>0)&&v(t.target)},{root:i.root,rootMargin:i.rootMargin,threshold:i.threshold})}catch{return null}let u={io:l,targets:new Map};return c.set(a,u),{key:a,bucket:u}}function x(){if(n&&r.value)for(let[e,t]of Array.from(u.entries())){let n=b(e,t.opts);if(!n){v(e);continue}if(n.key===t.bucketKey)continue;let r=t.bucketKey,i=c.get(r);try{i?.io.unobserve(e)}catch{}i?.targets.delete(e),t.bucketKey=n.key,n.bucket.targets.set(e,t),n.bucket.io.observe(e),_(r)}}l(r,e=>{if(!e){for(let e of Array.from(u.keys()))v(e);g()}},{flush:`sync`});let S=(e,t)=>{let i=z(!1),a,o=!1,s=new Promise(e=>{a=()=>{o||(o=!0,e())}}),l=()=>{let t=u.get(e);if(!t)return d.delete(e),void _();let n=c.get(t.bucketKey);try{n?.io.unobserve(e)}catch{}n?.targets.delete(e),u.delete(e),d.delete(e),_(t.bucketKey)};if(!n||!r.value)return i.value=!0,a(),{isVisible:i,whenVisible:s,destroy:l};let f=b(e,t);if(!f)return i.value=!0,a(),{isVisible:i,whenVisible:s,destroy:l};let p={resolve:a,visible:i,bucketKey:f.key,opts:t};return u.set(e,p),f.bucket.targets.set(e,p),f.bucket.io.observe(e),n&&m==null&&(m=window.requestAnimationFrame(()=>{m=null,x()})),!1!==t?.allowIdle&&(d.add(e),y()),{isVisible:i,whenVisible:s,destroy:l}};return S.refresh=x,p(uX,S),S}function vX(){let e=g(uX,void 0);if(e)return e;let t=new WeakMap,n=new Map,r=new Set,i=null,a=typeof window<`u`?window.requestIdleCallback??(e=>window.setTimeout(()=>e({didTimeout:!0,timeRemaining:()=>0}),16)):null,o=typeof window<`u`?window.cancelIdleCallback??(e=>window.clearTimeout(e)):null,s=()=>{if(i!=null){try{o?.(i)}catch{}i=null}},c=e=>{if(!e)return;let t=n.get(e);if(t&&!t.targets.size){try{t.io.disconnect()}catch{}n.delete(e)}},l=e=>{let i=t.get(e);if(!i)return;let a=n.get(i.bucketKey);if(!i.visible.value){i.visible.value=!0;try{i.resolve()}catch{}}try{a?.io.unobserve(e)}catch{}t.delete(e),a?.targets.delete(e),r.delete(e),c(i.bucketKey),r.size||s()},u=()=>{!0!==window.__MARKSTREAM_DISABLE_VIEWPORT_PRIORITY_IDLE_DRAIN__&&a&&i==null&&r.size&&(i=a(()=>{i=null;let e=r.values().next().value;e&&(r.delete(e),l(e),r.size&&u())},{timeout:1200}))};return(e,i)=>{let a=z(!1),o,d=!1,f=new Promise(e=>{o=()=>{d||(d=!0,e())}}),p=()=>{let i=t.get(e);if(!i)return r.delete(e),void(r.size||s());let a=n.get(i.bucketKey);try{a?.io.unobserve(e)}catch{}t.delete(e),a?.targets.delete(e),r.delete(e),c(i.bucketKey),r.size||s()},m=(e=>{if(typeof window>`u`||typeof IntersectionObserver>`u`)return null;let t=(e=>[e?.rootMargin??mX,e?.threshold??0].join(`\0`))(e),r=n.get(t);if(r)return{key:t,bucket:r};let i=e?.rootMargin??mX,a;try{a=new IntersectionObserver(e=>{for(let t of e)(t.isIntersecting||t.intersectionRatio>0)&&l(t.target)},{root:null,rootMargin:i,threshold:e?.threshold??0})}catch{return null}let o={io:a,targets:new Set};return n.set(t,o),{key:t,bucket:o}})(i);return m?(t.set(e,{resolve:o,visible:a,bucketKey:m.key}),m.bucket.targets.add(e),m.bucket.io.observe(e),!1!==i?.allowIdle&&(r.add(e),u()),{isVisible:a,whenVisible:f,destroy:p}):(a.value=!0,o(),{isVisible:a,whenVisible:f,destroy:p})}}function yX(e,t){let n=e.indexKey??t[`index-key`]??t.indexKey;return n==null||n===``?``:String(n)}var bX=[`data-markstream-viewport-pending`],xX=[`src`,`alt`,`title`,`loading`,`fetchpriority`,`decoding`,`tabindex`,`aria-label`],SX={key:1,class:`image-placeholder`},CX={key:1,class:`image-node__raw-text`},wX={key:2,class:`image-shimmer-overlay`},TX={key:1,class:`image-node__raw-text`},EX={key:3,class:`image-error`},DX=vY(K({__name:`ImageNode`,props:{node:{},fallbackSrc:{default:``},lazy:{type:Boolean,default:!1},usePlaceholder:{type:Boolean,default:!0}},emits:[`load`,`error`,`click`],setup(e,{emit:t}){var n;let r=e,a=t,o=z(!1),s=z(!1),c=z(``),d=z(`primary`),f=z(null),p=S(),m=g(fq,null),h=vX(),_=hX(),v=gX(),y=R(()=>uL(r.node.src)),b=R(()=>uL(r.fallbackSrc)),C=((n=x()?.vnode.el)?.querySelector)?.call(n,`img`),w=typeof window<`u`&&C?.getAttribute(`src`)===(y.value||b.value),T=z(typeof window>`u`||w||!v.value),E=de(null),D=``,k=null,A=R(()=>c.value),j=R(()=>!r.lazy),M=R(()=>typeof window<`u`&&v.value&&!w),N=R(()=>!M.value||T.value),P=R(()=>N.value?A.value:``),F=R(()=>_?.value.heavyBlockMargin??_?.value.rootMargin??mX),ee=R(()=>!r.node.loading&&d.value!==`failed`&&c.value.length>0),I=R(()=>d.value===`failed`),te=R(()=>(!j.value||M.value&&!T.value)&&!o.value&&!s.value&&d.value!==`failed`&&c.value.length>0),ne=R(()=>yX(r,p));function ie(e=ne.value){e&&f.value&&m?.reportHeight(e,f.value.offsetHeight)}function ae(e=ne.value){e&&i(()=>{ie(e)})}function oe(){k&&=(clearTimeout(k),null)}function se(){let e=ne.value;e&&D!==e&&(D&&m?.markSettled(D),oe(),D=e,m?.markPending(e),typeof window<`u`&&(k=window.setTimeout(()=>{D===e&&(ae(e),ce())},8e3)))}function ce(){return iY(this,null,function*(){let e=D;e&&(oe(),D=``,yield i(),ie(e),m?.markSettled(e))})}function le(){if(d.value===`primary`&&b.value&&b.value!==c.value)return d.value=`fallback`,c.value=b.value,o.value=!1,s.value=!1,void ae();d.value=`failed`,s.value=!0,a(`error`,c.value),ae()}function V(){o.value=!0,s.value=!1,a(`load`,A.value),ae()}function ue(e){e.preventDefault(),o.value&&!s.value&&a(`click`,[e,A.value])}let{t:fe}=lX();return l([y,b,()=>r.node.loading],()=>(o.value=!1,s.value=!1,r.node.loading||y.value?(c.value=y.value,void(d.value=`primary`)):b.value?(c.value=b.value,void(d.value=`fallback`)):(c.value=``,d.value=`failed`,void(s.value=!0))),{immediate:!0}),typeof window<`u`&&l([f,M],([e,t],n,r)=>{var i;if((i=E.value)==null||i.destroy(),E.value=null,!t||T.value)return void(T.value=!0);if(!e)return void(T.value=!1);let a=!0,o=h(e,{rootMargin:F.value,allowIdle:!1});E.value=o,T.value=o.isVisible.value,o.whenVisible.then(()=>{a&&E.value===o&&(T.value=!0)}),r(()=>{a=!1,o.destroy(),E.value===o&&(E.value=null)})},{immediate:!0}),l([ee,o,s,A,()=>r.lazy,N],([e,t,n,r,i,a])=>e&&r&&!n&&a?t?(ce(),void ae()):i?(se(),void ae()):void(t||n||se()):(ce(),void ae()),{flush:`post`,immediate:!0}),re(()=>{var e;(e=E.value)==null||e.destroy(),E.value=null,function(){let e=D;e&&(oe(),D=``,m?.markSettled(e))}()}),(t,n)=>(u(),G(`span`,{ref_key:`rootRef`,ref:f,class:`image-node-container`,"data-markstream-viewport-pending":M.value&&!T.value?`true`:void 0},[ee.value?(u(),G(`img`,{key:0,src:P.value||void 0,alt:String(r.node.alt??r.node.title??``),title:String(r.node.title??r.node.alt??``),class:H([`image-node__img`,{"is-loading":!j.value&&!o.value,"is-loaded":j.value||o.value,"has-natural-size":o.value,"cursor-pointer":o.value}]),loading:r.lazy?`lazy`:void 0,fetchpriority:j.value?`high`:void 0,decoding:j.value?`sync`:`async`,tabindex:o.value?0:-1,"aria-label":r.node.alt??B(fe)(`image.preview`),onError:le,onLoad:V,onClick:ue},null,42,xX)):O(``,!0),e.node.loading&&!s.value?(u(),G(`span`,SX,[r.usePlaceholder?he(t.$slots,`placeholder`,{key:0,node:r.node,displaySrc:A.value,imageLoaded:o.value,hasError:s.value,fallbackSrc:r.fallbackSrc,lazy:r.lazy},()=>[n[0]||=L(`span`,{class:`image-shimmer`},null,-1)],!0):(u(),G(`span`,CX,W(e.node.raw),1))])):O(``,!0),te.value&&!e.node.loading?(u(),G(`span`,wX,[r.usePlaceholder?he(t.$slots,`placeholder`,{key:0,node:r.node,displaySrc:A.value,imageLoaded:o.value,hasError:s.value,fallbackSrc:r.fallbackSrc,lazy:r.lazy},()=>[n[1]||=L(`span`,{class:`image-shimmer`},null,-1)],!0):(u(),G(`span`,TX,W(e.node.raw),1))])):O(``,!0),I.value?(u(),G(`span`,EX,[he(t.$slots,`error`,{node:r.node,displaySrc:A.value,imageLoaded:o.value,hasError:s.value,fallbackSrc:r.fallbackSrc,lazy:r.lazy},()=>[n[2]||=L(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 24 24`},[L(`path`,{fill:`currentColor`,d:`M2 2h20v10h-2V4H4v9.586l5-5L14.414 14L13 15.414l-4-4l-5 5V20h8v2H2zm13.547 5a1 1 0 1 0 0 2a1 1 0 0 0 0-2m-3 1a3 3 0 1 1 6 0a3 3 0 0 1-6 0m3.625 6.757L19 17.586l2.828-2.829l1.415 1.415L20.414 19l2.829 2.828l-1.415 1.415L19 20.414l-2.828 2.829l-1.415-1.415L17.586 19l-2.829-2.828z`})],-1),L(`span`,null,W(B(fe)(`image.loadError`)),1)],!0)])):O(``,!0)],8,bX))}}),[[`__scopeId`,`data-v-046e82ac`]]);DX.install=e=>{e.component(DX.__name,DX)};var OX={key:2},kX=K({__name:`NodeChildRenderer`,props:{node:{},components:{},customId:{},indexKey:{},fallbackToText:{type:Boolean,default:!1}},setup(e){let t=e,n=mY(()=>t.customId),r=g(`markstreamHtmlPolicy`,void 0),i=g(`markstreamNestedRendererProps`,void 0),a=R(()=>r?.value??`safe`),s=R(()=>{let e=i?.value??{};return rY(Q({},e),{customId:t.customId??e.customId,htmlPolicy:a.value})}),c=o({loader:()=>Promise.resolve().then(()=>k0),suspensible:!1}),l=R(()=>t.components[String(t.node.type)]),d=R(()=>!!(l.value&&n.value[t.node.type]&&!dY(String(t.node.type)))),f=R(()=>d.value?AY(t.node,a.value):void 0),p=R(()=>Array.isArray(t.node.children)&&t.node.children.length>0),m=R(()=>String(t.node.content??``)),h=R(()=>String(t.node.content??t.node.raw??``));return(t,n)=>l.value&&d.value?(u(),I(C(l.value),ie({key:0},f.value,{node:e.node,loading:e.node.loading,"index-key":e.indexKey,"custom-id":e.customId,"is-dark":s.value.isDark}),{default:V(()=>[p.value?(u(),I(B(c),ie({key:0},s.value,{nodes:e.node.children,"index-key":e.indexKey,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`nodes`,`index-key`])):m.value?(u(),I(B(c),ie({key:1},s.value,{content:m.value,final:!e.node.loading,"index-key":`${e.indexKey||`child`}-content`,"smooth-streaming":!1,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`content`,`final`,`index-key`])):O(``,!0)]),_:1},16,[`node`,`loading`,`index-key`,`custom-id`,`is-dark`])):l.value?(u(),I(C(l.value),{key:1,node:e.node,"custom-id":e.customId,"index-key":e.indexKey},null,8,[`node`,`custom-id`,`index-key`])):e.fallbackToText?(u(),G(`span`,OX,W(h.value),1)):O(``,!0)}}),AX=Object.freeze({enabled:!0,contextLineCount:2,minimumLineCount:4,revealLineCount:5});function jX(e){var t;if(typeof e==`boolean`)return e;if(e&&typeof e==`object`){let n=e;return rY(Q(Q({},AX),n),{enabled:(t=n.enabled)==null||t})}return Q({},AX)}function MX(e,t){if(!1===e.renderSideBySide)return!0;if(!0!==e.useInlineViewWhenSpaceIsLimited)return!1;let n=e.renderSideBySideInlineBreakpoint;return t>0&&t<=(typeof n==`number`&&Number.isFinite(n)?n:900)}function NX(e){let t=String(e??``).split(/\r?\n/,1)[0]?.trim()??``;if(t.length<3)return``;let n=t[0];if(n!=="`"&&n!==`~`||t[1]!==n||t[2]!==n)return``;let r=3;for(;t[r]===n;)r+=1;return t.slice(r).trim()}function PX(e){return(String(e??``).trim().split(/\s+/,1)[0]??``)===`diff`}function FX(e){return!0===e.diff||PX(e.language)||PX(NX(String(e.raw??``)))}function IX(e,t,n){let r=function(e){let t=NX(e);if(!t)return``;let n=t.split(/\s+/).filter(Boolean);if(!n.length)return``;let r=n[0]===`diff`?n.slice(1):n;for(let e of r){let t=e.includes(`:`)?e.slice(e.indexOf(`:`)+1):e;if(t&&/[./\\-]/.test(t))return t}return``}(e);return{title:r||t,caption:r?n?`Diff / ${t}`:t:``}}var LX=[`aria-busy`,`aria-label`,`data-language`,`data-markstream-line-numbers`],RX={key:0,translate:`no`,class:`markstream-pre__diff-code`},zX={class:`markstream-pre__diff-pane-content`},BX={class:`markstream-pre__diff-number`,"aria-hidden":`true`},VX={class:`markstream-pre__diff-content`},HX={class:`markstream-pre__diff-content-inner`},UX={key:0,class:`markstream-pre__line-numbers`,"aria-hidden":`true`},WX=[`textContent`],GX=[`textContent`],KX=K({__name:`PreCodeNode`,props:{node:{},loading:{type:Boolean},showLineNumbers:{type:Boolean},diffInline:{type:Boolean},diffHideUnchangedRegions:{type:[Boolean,Object]},reservedHeightPx:{}},setup(e){let t=e;function n(e,t){let n=String(e??``);return t?n:n.replace(/\r\n$|\n$|\r$/,``)}let r=R(()=>{let e=String(t.node?.language??``);return String(String(e).split(/\s+/g)[0]??``).toLowerCase().replace(/[^\w-]/g,``)||`plaintext`}),a=R(()=>`language-${r.value}`),o=R(()=>!0===t.loading||!0===t.node?.loading),s=R(()=>n(t.node?.code,o.value)),c=``,d=1,f=R(()=>function(e){let t=0,n=1;e.startsWith(c)&&(t=c.length,n=d,t>0&&e[t-1]===`\r`&&e[t]===` `&&t++);for(let r=t;rs.value.split(/\r\n|\n|\r/)),m=0,h=``,g=R(()=>{let e=f.value;e!0===t.showLineNumbers&&!0===t.node?.diff),v=R(()=>_.value&&!0===t.diffInline),b=R(()=>{let e=Number(t.reservedHeightPx);if(!Number.isFinite(e)||e<=0)return;let n=`${Math.ceil(e)}px`;return o.value?{maxHeight:n,overflow:`auto`}:{height:n,minHeight:n,maxHeight:n,overflow:`auto`}}),x=[`diff `,`index `,`--- `,`+++ `,`@@ `];function S(e){return String(e??``).trim().length===0}function C(e,t=`context`,n={}){let r=S(e);return{code:e,kind:r&&t!==`hunk`&&t!==`spacer`&&!n.preserveBlankKind?`context`:t,empty:r}}function w(e){let t=n(e,o.value);return t?t.split(/\r\n|\n|\r/):[]}function T(e,t){return!S(e[t])||tx.some(t=>e.startsWith(t)))}function A(e,t){return t||!e.startsWith(` `)||e.startsWith(` `)?e:` ${e}`}function j(e,t){let n=e.length,r=t.length,i=[],a=0;for(;a=a&&l>=a&&e[c]===t[l];)s.unshift({originalIndex:c,modifiedIndex:l}),c--,l--;let u=c-a+1,d=l-a+1;if(u<=0||d<=0||o.value||(u+1)*(d+1)>15e5)return i.concat(s);let f=d+1,p=new Uint32Array((u+1)*(d+1));for(let n=u-1;n>=0;n--)for(let r=d-1;r>=0;r--){let i=n*f+r;if(e[a+n]===t[a+r])p[i]=p[(n+1)*f+r+1]+1;else{let e=p[(n+1)*f+r],t=p[n*f+r+1];p[i]=e>=t?e:t}}let m=[],h=0,g=0;for(;h=p[h*f+g+1]?h++:g++;return i.concat(m,s)}function M(e){let n=function(){let e=t.diffHideUnchangedRegions;if(e==null||!1===e)return null;let n=!0===e?{}:e;return!1===n.enabled?null:{contextLineCount:Math.max(0,Math.floor(n.contextLineCount??2)),minimumLineCount:Math.max(1,Math.floor(n.minimumLineCount??4))}}();if(!n||e.length<1||e.length>2||e.length===2&&e[0].lines.length!==e[1].lines.length)return e;let r=e[0].lines,i=e[1]?.lines,a=e=>r[e].kind===`context`&&(i===void 0||i[e].kind===`context`&&r[e].code===i[e].code),o=[],s=0;for(;s=n.minimumLineCount){let i=e+(e===0?0:n.contextLineCount),a=t-(t===r.length?0:n.contextLineCount);a-i>=n.minimumLineCount&&o.push({start:i,end:a})}s===e&&s++}return o.length?e.map((e,t)=>{let n=[],r=0;for(let i of o)n.push(...e.lines.slice(r,i.start)),n.push({code:t===0?`Unmodified lines`:``,kind:`collapsed`,empty:!1,key:`${e.key}-collapsed-${i.start}-${i.end}`,number:``}),r=i.end;return n.push(...e.lines.slice(r)),rY(Q({},e),{lines:n})}):e}let N=R(()=>{if(!_.value)return[];let e=function(e){let n=e.some(e=>E(e)),i=e.some(e=>D(e));return n&&i||function(){if(r.value===`diff`)return!0;let e=String(t.node?.raw??``).split(/\r?\n/,1)[0]?.trim()??``;return/^`{3,}\s*diff(?:\s|$)|^~{3,}\s*diff(?:\s|$)/.test(e)}()&&(n||i)}(p.value),n=function(){return t.node?.originalCode!=null||t.node?.updatedCode!=null}();if(v.value)return M([{key:`inline`,className:`markstream-pre__diff-pane--inline`,lines:n?function(e,t){let n=w(e),r=w(t),i=j(n,r);if(i.length>0){let e=[],t=0,a=0;for(let o of i){for(;t=o&&c>=o&&n[s]===r[c];)l.unshift(rY(Q({},C(r[c])),{key:`inline-suffix-${c}`,number:c+1})),s--,c--;for(let e=o;e<=s;e++)a.push(rY(Q({},C(n[e],`removed`,{preserveBlankKind:T(n,e)})),{key:`inline-removed-source-${e}`,number:e+1}));for(let e=o;e<=c;e++)a.push(rY(Q({},C(r[e],`added`,{preserveBlankKind:T(r,e)})),{key:`inline-added-source-${e}`,number:e+1}));return a.concat(l)}(t.node?.originalCode,t.node?.updatedCode):function(e){let t=[],n=1,r=1,i=k(e);for(let[a,o]of e.entries())if(o.startsWith(`@@`)){let e=o.match(/^@@\s+-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@/);e&&(n=Number(e[1]),r=Number(e[2])),t.push(rY(Q({},C(o,`hunk`)),{key:`inline-hunk-${a}`,number:``}))}else if(E(o))t.push(rY(Q({},C(A(o.slice(1),i),`removed`,{preserveBlankKind:!0})),{key:`inline-removed-${a}`,number:n++}));else if(D(o))t.push(rY(Q({},C(A(o.slice(1),i),`added`,{preserveBlankKind:!0})),{key:`inline-added-${a}`,number:r++}));else{let e=i&&o.startsWith(` `)?o.slice(1):o;t.push(rY(Q({},C(e)),{key:`inline-context-${a}`,number:r})),n++,r++}return t}(p.value)}]);if(!e&&n)return function(e,t){let n=w(e),r=w(t),i=j(n,r),a=[],o=[],s=0,c=0,l=0,u=(e,t)=>{let i=Math.max(e-s,t-c);for(let u=0;urY(Q({},e),{key:`original-${t}`,number:t+1}))},{key:`modified`,className:`markstream-pre__diff-pane--modified`,lines:a.map((e,t)=>rY(Q({},e),{key:`modified-${t}`,number:t+1}))}])}),F=R(()=>N.value.some(e=>e.lines.some(e=>e.kind===`collapsed`))),ee=R(()=>{let e=r.value;return e?`Code block: ${e}`:`Code block`}),I=z(null),te=z([]),ne=null,ie=!1,ae=null;function se(e){let t=Number.parseFloat(String(e??``));return Number.isFinite(t)&&t>0?t:0}function ce(e,t){if(!e)return t;if(e.classList.contains(`markstream-pre__diff-line--collapsed`))return 32;let n=e.querySelector(`.markstream-pre__diff-content`)?.getBoundingClientRect()?.height??0;return Math.max(t,Math.ceil(n))}function B(){ie||typeof window>`u`||(ne!=null&&window.cancelAnimationFrame(ne),ne=window.requestAnimationFrame(()=>{ne=null,ie||function(){ne=null;let e=I.value;if(!e||!_.value||v.value||!e.classList.contains(`is-wrap`))return void(te.value.length&&(te.value=[]));let t=function(e){let t=window.getComputedStyle(e),n=se(t.getPropertyValue(`--markstream-pre-diff-line-height`));if(n>0)return n;let r=se(t.lineHeight);return r>0?r:18}(e),n=Array.from(e.querySelectorAll(`.markstream-pre__diff-pane--original .markstream-pre__diff-line`)),r=Array.from(e.querySelectorAll(`.markstream-pre__diff-pane--modified .markstream-pre__diff-line`)),i=Math.max(n.length,r.length),a=[];for(let e=0;e{let n=s[t];return n&&Math.abs(e.rowHeight-n.rowHeight)<=.5&&Math.abs(e.originalHeight-n.originalHeight)<=.5&&Math.abs(e.modifiedHeight-n.modifiedHeight)<=.5})||(te.value=a)}()}))}function le(e){ae?.disconnect(),ae=null,e&&_.value&&!v.value&&typeof ResizeObserver<`u`&&(ae=new ResizeObserver(()=>{B()}),ae.observe(e))}function V(e,t){let n=te.value[e];if(!n)return;let r=t===`original`?n.originalHeight:n.modifiedHeight;return{"--markstream-pre-diff-synced-row-height":`${Math.ceil(n.rowHeight)}px`,"--markstream-pre-diff-content-height":`${Math.ceil(r)}px`}}return l(I,e=>{le(e),i(()=>B())},{flush:`post`}),l([_,v,N],()=>{le(I.value),i(()=>B())},{flush:`post`,immediate:!0}),re(()=>{ie=!0,ne!=null&&(window.cancelAnimationFrame(ne),ne=null),ae?.disconnect(),ae=null}),(e,n)=>(u(),G(`pre`,{ref_key:`preRef`,ref:I,style:oe(b.value),class:H([a.value,{"markstream-pre--line-numbers":t.showLineNumbers,"markstream-pre--diff-preview":_.value,"markstream-pre--diff-inline":v.value,"markstream-pre--diff-collapsed":F.value}]),"aria-busy":o.value,"aria-label":ee.value,"data-language":r.value,"data-markstream-line-numbers":t.showLineNumbers?`1`:void 0,"data-markstream-pre":`1`,tabindex:`0`},[_.value?(u(),G(`code`,RX,[(u(!0),G(P,null,y(N.value,e=>(u(),G(`span`,{key:e.key,class:H([`markstream-pre__diff-pane`,e.className])},[L(`span`,zX,[(u(!0),G(P,null,y(e.lines,(t,r)=>(u(),G(`span`,{key:t.key,class:H([`markstream-pre__diff-line`,[`markstream-pre__diff-line--${t.kind}`,{"markstream-pre__diff-line--empty":t.empty}]]),style:oe(V(r,e.key))},[n[0]||=L(`span`,{class:`markstream-pre__diff-rail`,"aria-hidden":`true`},null,-1),L(`span`,BX,W(t.number),1),L(`span`,VX,[L(`span`,HX,W(t.code),1)])],6))),128))])],2))),128))])):(u(),G(P,{key:1},[t.showLineNumbers?(u(),G(`span`,UX,[L(`span`,{class:`markstream-pre__line-numbers-text`,textContent:W(g.value)},null,8,WX)])):O(``,!0),L(`code`,{translate:`no`,class:`markstream-pre__code`,textContent:W(s.value)},null,8,GX)],64))],14,LX))}});KX.install=e=>{e.component(KX.__name,KX)};var qX={key:0},JX=vY(K({__name:`TextNode`,props:{node:{}},emits:[`copy`],setup(e){let t=e,n=S(),i=g(`markstreamFade`,void 0),a=g(`markstreamTextStreamState`,void 0),o=g(`markstreamStreamVersion`,void 0),s=R(()=>{let e=n.fade;return e===``||!0===e||e===`true`||!1!==e&&e!==`false`&&void 0}),c=R(()=>typeof s.value==`boolean`?s.value:typeof i?.value!=`boolean`||i.value),d=R(()=>{let e=n[`index-key`]??n.indexKey;return e==null||e===``?``:String(e)}),f=z(t.node.content),p=z(``),m=z(0),h;function _(){h?.(),h=void 0}function v(){_(),p.value&&=(f.value+=p.value,``)}l([()=>t.node.content,d,c],([e])=>{let t=String(e??``),n=d.value,r=YK({nextContent:t,persistedContent:n?a?.get(n):void 0,currentState:{settledContent:f.value,streamedDelta:p.value},typewriterEnabled:c.value});f.value=r.settledContent,p.value=r.streamedDelta,r.appended?(m.value+=1,function(){if(!p.value||h||!o)return;let e=o.value;h=l(()=>o.value,t=>{t!==e&&v()},{flush:`sync`})}()):p.value||_(),n&&a?.set(n,t)},{immediate:!0}),r(_);let y=R(()=>m.value%2==0?`text-node-stream-delta--a`:`text-node-stream-delta--b`);return(t,n)=>(u(),G(`span`,{class:H([[e.node.center?`text-node-center`:``],`text-node`])},[f.value?(u(),G(`span`,qX,W(f.value),1)):O(``,!0),p.value?(u(),G(`span`,{key:1,class:H([`text-node-stream-delta`,[y.value]]),onAnimationend:v},W(p.value),35)):O(``,!0)],2))}}),[[`__scopeId`,`data-v-a7e90764`]]);function YX(e,t,n){return K({name:e,inheritAttrs:!1,setup(e,{attrs:r,slots:i}){let a=vX(),o=hX(),c=gX(),u=typeof window<`u`&&x()?.vnode.el?.nodeType===1,d=z(typeof window>`u`||u||!c.value),f=de(null),p=null;function m(e){let t=e&&`$el`in e?e.$el:e;f.value=t instanceof HTMLElement?t:null}return typeof window<`u`&&l([f,c],([e,t],n,r)=>{if(p?.destroy(),p=null,!t||d.value)return void(d.value=!0);if(!e)return;let i=!0,s=a(e,{rootMargin:o?.value.heavyBlockMargin,allowIdle:!1});p=s,d.value=s.isVisible.value,s.whenVisible.then(()=>{i&&p===s&&(d.value=!0)}),r(()=>{i=!1,s.destroy(),p===s&&(p=null)})},{immediate:!0}),re(()=>{p?.destroy(),p=null}),()=>s(d.value?t:n,rY(Q({},r),{ref:m}),i)}})}JX.install=e=>{e.component(JX.__name,JX)};var XX=K({name:`CodeBlockNodeLoading`,inheritAttrs:!1,props:`node.isDark.loading.stream.theme.darkTheme.lightTheme.isShowPreview.monacoOptions.enableFontSizeControl.minWidth.maxWidth.themes.showHeader.showCopyButton.showExpandButton.showPreviewButton.showCollapseButton.showFontSizeButtons.showTooltips.htmlPreviewAllowScripts.htmlPreviewSandbox.customId.estimatedHeightPx.estimatedContentHeightPx.estimatedDiffInline`.split(`.`),emits:[`previewCode`,`copy`],setup(e,{attrs:t}){let n=e;return()=>{let e=Oq(String(n.node?.language??``)),r=jq[e]||(e?e.charAt(0).toUpperCase()+e.slice(1):jq[``]),i=FX(n.node),a=IX(String(n.node?.raw??``),r,i),o=n.monacoOptions,c=i&&(n.estimatedDiffInline??MX(o??{},typeof window>`u`?0:window.innerWidth)),l=o?.diffAppearance,u=l===`dark`||l!==`light`&&!0===n.isDark,d=typeof o?.fontSize==`number`&&Number.isFinite(o.fontSize)&&o.fontSize>0?o.fontSize:12,f=typeof o?.lineHeight==`number`&&Number.isFinite(o.lineHeight)&&o.lineHeight>0?o.lineHeight:d===12?18:Math.max(12,Math.round(1.5*d)),p=typeof o?.tabSize==`number`&&Number.isFinite(o.tabSize)&&o.tabSize>0?o.tabSize:4,m=i?0:8,h=typeof o?.padding?.top==`number`&&Number.isFinite(o.padding.top)&&o.padding.top>=0?o.padding.top:m,g=typeof o?.padding?.bottom==`number`&&Number.isFinite(o.padding.bottom)&&o.padding.bottom>=0?o.padding.bottom:m,_=typeof o?.fontFamily==`string`?o.fontFamily.trim():``,v=Q(Q({fontSize:`${d}px`,lineHeight:`${f}px`,tabSize:p,paddingTop:`${h}px`,paddingBottom:`${g}px`,"--markstream-pre-line-number-top":`${h}px`},i?{"--markstream-pre-diff-line-height":`${f}px`}:{}),_?{"--markstream-code-font-family":_}:{}),y=()=>s(`button`,{class:`code-action-btn inline-flex items-center justify-center p-[var(--ms-action-btn-padding)] rounded leading-none shrink-0`,"aria-hidden":`true`,disabled:!0,tabindex:-1,type:`button`},[s(`svg`,{class:`action-icon`})]),b=!1!==n.isShowPreview&&(e===`html`||e===`svg`),x=!1!==n.showFontSizeButtons&&!1!==n.enableFontSizeControl||!1!==n.showExpandButton||b&&!1!==n.showPreviewButton,S=e=>{if(e!=null)return typeof e==`number`?`${e}px`:String(e)},C=Q(Q(Q({"--markstream-code-layout-character-width":`1ch`},S(n.minWidth)?{minWidth:S(n.minWidth)}:{}),S(n.maxWidth)?{maxWidth:S(n.maxWidth)}:{}),i?{}:{color:`var(--vscode-editor-foreground, var(--markstream-code-fallback-fg, var(--code-fg)))`,backgroundColor:`var(--vscode-editor-background, var(--markstream-code-fallback-bg, var(--code-bg)))`,borderColor:`var(--markstream-code-border-color, var(--code-border))`});return s(`div`,rY(Q({},t),{class:[`code-block-container`,`rounded-lg`,`border`,{dark:!0===n.isDark,"is-rendering":!1!==n.loading,"is-dark":u,"is-diff":i,"is-plain-text":e===``||e===`plaintext`||e===`text`},t.class],style:[C,t.style],"data-markstream-code-block":`1`,"data-markstream-enhanced":`false`,"data-markstream-code-block-state":n.loading?`streaming`:`settled`,"data-markstream-code-loading":`1`}),[!1===n.showHeader?null:s(`div`,{class:`code-block-header flex justify-between items-center border-b px-[var(--ms-inset-panel-x)] py-[var(--ms-inset-panel-y)] border-[var(--code-border)] bg-[var(--code-header-bg)] text-[var(--code-fg)]`},[s(`div`,{class:`code-header-main`},[s(`span`,{class:`icon-slot h-4 w-4 flex-shrink-0`}),s(`div`,{class:`code-header-copy`},[s(`div`,{class:`code-header-title`},a.title),a.caption?s(`div`,{class:`code-header-caption`},a.caption):null])]),s(`div`,{class:`flex items-center gap-0.5`,style:{visibility:`hidden`}},[i?s(`div`,{class:`code-diff-stats`,"aria-hidden":`true`},[s(`span`,{class:`code-diff-stat removed`},`-0`),s(`span`,{class:`code-diff-stat added`},`+0`)]):null,!1===n.showCopyButton?null:y(),!1===n.showCollapseButton?null:y(),x?s(`div`,{class:`relative`},[y()]):null])]),s(`div`,{class:`code-block-shell-content`,style:!1!==n.stream||!1===n.loading?void 0:{display:`none`}},[s(KX,{node:n.node,loading:n.loading,showLineNumbers:!0,reservedHeightPx:i?void 0:n.estimatedContentHeightPx,diffInline:c,diffHideUnchangedRegions:i?jX(o?.diffHideUnchangedRegions):void 0,class:`code-pre-fallback`,style:v,"data-markstream-code-loading":`1`})]),s(`div`,{class:`code-loading-placeholder`,style:!1===n.stream&&!1!==n.loading?void 0:{display:`none`}},[s(`div`,{class:`loading-skeleton`},[s(`div`,{class:`skeleton-line`}),s(`div`,{class:`skeleton-line`}),s(`div`,{class:`skeleton-line short`})])]),s(`span`,{class:`sr-only`,"aria-live":`polite`,role:`status`})])}}}),ZX=YX(`ViewportDeferredCodeBlockNode`,o({loader:()=>iY(null,null,function*(){try{return(yield ge(()=>import(`./CodeBlockNode-D0W6r4O4.js`),__vite__mapDeps([31,1,2,7,32]))).default}catch(e){return console.warn(`[markstream-vue] Optional peer dependency stream-diffs is missing. Falling back to preformatted code rendering. To enable enhanced code block features, please install "stream-diffs".`,e),KX}}),loadingComponent:XX,delay:0,suspensible:!1}),XX),QX=o(()=>iY(null,null,function*(){if(function(){return Reflect.get(globalThis,`process`)?.env}()?.NODE_ENV===`test`&&typeof window<`u`)return e=>s(JX,rY(Q({},e),{node:{type:`text`,content:e.node.raw??`$${e.node.content??``}$`,raw:e.node.raw??`$${e.node.content??``}$`}}));try{return yield Gq(),(yield ge(()=>import(`./index7-DVxpAUAg.js`),__vite__mapDeps([33,1,2]))).default}catch(e){console.warn(`[markstream-vue] Optional peer dependencies for MathInlineNode are missing. Falling back to text rendering. To enable full math rendering features, please install "katex".`,e)}return e=>s(JX,rY(Q({},e),{node:{type:`text`,content:e.node.raw??`$${e.node.content??``}$`,raw:e.node.raw??`$${e.node.content??``}$`}}))})),$X=o(()=>iY(null,null,function*(){try{return yield Gq(),(yield ge(()=>import(`./index6-DWSH8E97.js`),__vite__mapDeps([34,1,2]))).default}catch(e){console.warn(`[markstream-vue] Optional peer dependencies for MathBlockNode are missing. Falling back to text rendering. To enable full math rendering features, please install "katex".`,e)}return e=>s(JX,rY(Q({},e),{node:{type:`text`,content:e.node.raw??`$$${e.node.content??``}$$`,raw:e.node.raw??`$$${e.node.content??``}$$`}}))})),eZ=vY(K({__name:`ReferenceNode`,props:{node:{},messageId:{},threadId:{}},emits:[`click`,`mouseEnter`,`mouseLeave`],setup:e=>(t,n)=>(u(),G(`span`,{class:`reference-node cursor-pointer text-xs rounded-md px-1.5 mx-0.5`,role:`button`,tabindex:`0`,onClick:n[0]||=n=>t.$emit(`click`,n,e.node.id,e.messageId,e.threadId),onMouseenter:n[1]||=n=>t.$emit(`mouseEnter`,n,e.node.id,e.messageId,e.threadId),onMouseleave:n[2]||=n=>t.$emit(`mouseLeave`,n,e.node.id,e.messageId,e.threadId)},W(e.node.id),33))}),[[`__scopeId`,`data-v-775c65e4`]]);eZ.install=e=>{e.component(eZ.__name,eZ)};var tZ={class:`superscript-node`},nZ=vY(K({__name:`SuperscriptNode`,props:{node:{},customId:{},indexKey:{}},setup(e){let t=e,n=mY(()=>t.customId),r=R(()=>Q({text:JX,inline_code:BY,link:pZ,html_inline:LY,strong:oZ,emphasis:yZ,footnote_reference:wY,strikethrough:cZ,highlight:_Z,insert:hZ,subscript:iZ,emoji:xY,math_inline:QX,reference:eZ},n.value));return(n,i)=>(u(),G(`sup`,tZ,[(u(!0),G(P,null,y(e.node.children,(n,i)=>(u(),I(B(kX),{key:`${e.indexKey||`superscript`}-${i}`,components:r.value,node:n,"custom-id":t.customId,"index-key":`${e.indexKey||`superscript`}-${i}`,"fallback-to-text":``},null,8,[`components`,`node`,`custom-id`,`index-key`]))),128))]))}}),[[`__scopeId`,`data-v-24160b22`]]);nZ.install=e=>{e.component(nZ.__name,nZ)};var rZ={class:`subscript-node`},iZ=vY(K({__name:`SubscriptNode`,props:{node:{},customId:{},indexKey:{}},setup(e){let t=e,n=mY(()=>t.customId),r=R(()=>Q({text:JX,inline_code:BY,link:pZ,html_inline:LY,strong:oZ,emphasis:yZ,footnote_reference:wY,strikethrough:cZ,highlight:_Z,insert:hZ,superscript:nZ,emoji:xY,math_inline:QX,reference:eZ},n.value));return(n,i)=>(u(),G(`sub`,rZ,[(u(!0),G(P,null,y(e.node.children,(n,i)=>(u(),I(B(kX),{key:`${e.indexKey||`subscript`}-${i}`,components:r.value,node:n,"custom-id":t.customId,"index-key":`${e.indexKey||`subscript`}-${i}`,"fallback-to-text":``},null,8,[`components`,`node`,`custom-id`,`index-key`]))),128))]))}}),[[`__scopeId`,`data-v-197fa13b`]]);iZ.install=e=>{e.component(iZ.__name,iZ)};var aZ={class:`strong-node`},oZ=vY(K({__name:`StrongNode`,props:{node:{},customId:{},indexKey:{}},setup(e){let t=e,n=mY(()=>t.customId),r=R(()=>Q({text:JX,inline_code:BY,link:pZ,html_inline:LY,emphasis:yZ,strikethrough:cZ,highlight:_Z,insert:hZ,subscript:iZ,superscript:nZ,emoji:xY,footnote_reference:wY,math_inline:QX,reference:eZ},n.value));return(n,i)=>(u(),G(`strong`,aZ,[(u(!0),G(P,null,y(e.node.children,(n,i)=>(u(),I(B(kX),{key:`${e.indexKey||`strong`}-${i}`,components:r.value,node:n,"index-key":`${e.indexKey||`strong`}-${i}`,"custom-id":t.customId},null,8,[`components`,`node`,`index-key`,`custom-id`]))),128))]))}}),[[`__scopeId`,`data-v-a8647104`]]);oZ.install=e=>{e.component(oZ.__name,oZ)};var sZ={class:`strikethrough-node`},cZ=vY(K({__name:`StrikethroughNode`,props:{node:{},customId:{},indexKey:{}},setup(e){let t=e,n=mY(()=>t.customId),r=R(()=>Q({text:JX,inline_code:BY,link:pZ,html_inline:LY,strong:oZ,emphasis:yZ,highlight:_Z,insert:hZ,subscript:iZ,superscript:nZ,emoji:xY,footnote_reference:wY,math_inline:QX,reference:eZ},n.value));return(n,i)=>(u(),G(`del`,sZ,[(u(!0),G(P,null,y(e.node.children,(n,i)=>(u(),I(B(kX),{key:`${e.indexKey||`strikethrough`}-${i}`,components:r.value,node:n,"custom-id":t.customId,"index-key":`${e.indexKey||`strikethrough`}-${i}`},null,8,[`components`,`node`,`custom-id`,`index-key`]))),128))]))}}),[[`__scopeId`,`data-v-b7a531fa`]]);cZ.install=e=>{e.component(cZ.__name,cZ)};var lZ=[`href`,`title`,`aria-label`,`aria-hidden`,`target`,`rel`],uZ=[`aria-hidden`],dZ={class:`link-text-wrapper relative inline-flex`},fZ={class:`leading-[normal] link-text`},pZ=vY(K({__name:`LinkNode`,props:{node:{},indexKey:{},customId:{},showTooltip:{type:Boolean,default:!0},color:{},underlineHeight:{},underlineBottom:{},animationDuration:{},animationOpacity:{},animationTiming:{},animationIteration:{}},setup(e){let t=e,n=g(`markstreamShowTooltips`,void 0),r=R(()=>{let e=n?.value;return typeof e==`boolean`?e:t.showTooltip}),i=R(()=>{let e=t.underlineBottom===void 0?`-3px`:typeof t.underlineBottom==`number`?`${t.underlineBottom}px`:String(t.underlineBottom),n=t.animationOpacity??.35,r=Math.max(.12,Math.min(.5*n,n)),i={"--underline-height":`${t.underlineHeight??2}px`,"--underline-bottom":e,"--underline-opacity":String(n),"--underline-rest-opacity":String(r),"--underline-duration":`${t.animationDuration??1.6}s`,"--underline-timing":t.animationTiming??`ease-in-out`,"--underline-iteration":typeof t.animationIteration==`number`?String(t.animationIteration):t.animationIteration??`infinite`};return t.color&&(i[`--link-color`]=t.color),i}),a=mY(()=>t.customId),o=R(()=>Q({text:JX,strong:oZ,strikethrough:cZ,emphasis:yZ,image:DX,html_inline:LY,inline_code:BY},a.value)),s=S(),c=R(()=>{let e=t.node?.attrs;if(!e||typeof e!=`object`)return{};let n={};if(Array.isArray(e))for(let t of e)Array.isArray(t)&&t[0]&&(n[String(t[0])]=String(t[1]??``));else for(let[t,r]of Object.entries(e))t&&r!=null&&!1!==r&&(n[t]=!0===r?``:String(r));return DY(n,`safe`,`a`)}),l=R(()=>Q(Q({},s),c.value)),d=R(()=>DY({href:String(t.node?.href??``)},`safe`,`a`).href),f=R(()=>{if(!d.value)return;let e=l.value.target;return(typeof e==`string`?e.trim():String(e??``).trim())||(cL(d.value)?`_blank`:void 0)}),p=R(()=>String(f.value??``).trim().toLowerCase()===`_blank`),m=R(()=>{if(!d.value)return;let e=l.value.rel,t=new Set((typeof e==`string`?e:String(e??``)).split(/\s+/).filter(Boolean)),n=new Set(Array.from(t).filter(e=>e.toLowerCase()!==`opener`));return p.value&&(n.add(`noopener`),n.add(`noreferrer`)),n.size>0?Array.from(n).join(` `):void 0}),h=R(()=>{let e=Q({},l.value);return delete e.title,delete e.href,delete e.target,delete e.rel,e});function _(){r.value&&rX()}let v=R(()=>{let e=t.node?.title;return typeof e==`string`&&e.trim().length>0?e:String(d.value??``)});return(n,a)=>e.node.loading?(u(),G(`span`,ie({key:1,class:`link-loading inline-flex items-baseline gap-1.5`,"aria-hidden":e.node.loading?`false`:`true`},B(s),{style:i.value}),[L(`span`,dZ,[L(`span`,fZ,[b(B(JX),{class:`leading-[normal] link-text`,node:{type:`text`,content:String(e.node.text??``),raw:String(e.node.text??``)},"index-key":`${e.indexKey||`link-text`}-loading`},null,8,[`node`,`index-key`])]),a[1]||=L(`span`,{class:`link-loading-indicator`,"aria-hidden":`true`},null,-1)])],16,uZ)):(u(),G(`a`,ie({key:0,class:`link-node`,href:d.value,title:r.value?``:v.value,"aria-label":`Link: ${v.value}`,"aria-hidden":e.node.loading?`true`:`false`,target:f.value,rel:m.value},h.value,{style:i.value,onMouseenter:a[0]||=e=>function(e){if(!r.value)return;let n=e,i=n?.clientX!=null&&n?.clientY!=null?{x:n.clientX,y:n.clientY}:void 0,a=t.node?.title||(d.value?.includes(`xn--`)&&(t.node?.text)?.includes(`://`)?t.node.text:d.value)||``;nX(e.currentTarget,a,`top`,!1,i)}(e),onMouseleave:_}),[(u(!0),G(P,null,y(e.node.children,(n,r)=>(u(),I(B(kX),{key:`${e.indexKey||`emphasis`}-${r}`,components:o.value,node:n,"custom-id":t.customId,"index-key":`${e.indexKey||`link-text`}-${r}`},null,8,[`components`,`node`,`custom-id`,`index-key`]))),128))],16,lZ))}}),[[`__scopeId`,`data-v-367e6ca4`]]);pZ.install=e=>{e.component(pZ.__name,pZ)};var mZ={class:`insert-node`},hZ=vY(K({__name:`InsertNode`,props:{node:{},customId:{},indexKey:{}},setup(e){let t=e,n=mY(()=>t.customId),r=R(()=>Q({text:JX,inline_code:BY,link:pZ,html_inline:LY,strong:oZ,emphasis:yZ,strikethrough:cZ,highlight:_Z,subscript:iZ,superscript:nZ,emoji:xY,footnote_reference:wY,math_inline:QX,reference:eZ},n.value));return(n,i)=>(u(),G(`ins`,mZ,[(u(!0),G(P,null,y(e.node.children,(n,i)=>(u(),I(B(kX),{key:`${e.indexKey||`insert`}-${i}`,components:r.value,node:n,"custom-id":t.customId,"index-key":`${e.indexKey||`insert`}-${i}`},null,8,[`components`,`node`,`custom-id`,`index-key`]))),128))]))}}),[[`__scopeId`,`data-v-1e2c29d4`]]);hZ.install=e=>{e.component(hZ.__name,hZ)};var gZ={class:`highlight-node`},_Z=vY(K({__name:`HighlightNode`,props:{node:{},customId:{},indexKey:{}},setup(e){let t=e,n=mY(()=>t.customId),r=R(()=>Q({text:JX,inline_code:BY,link:pZ,html_inline:LY,strong:oZ,emphasis:yZ,strikethrough:cZ,insert:hZ,subscript:iZ,superscript:nZ,emoji:xY,footnote_reference:wY,math_inline:QX,reference:eZ},n.value));return(n,i)=>(u(),G(`mark`,gZ,[(u(!0),G(P,null,y(e.node.children,(n,i)=>(u(),I(B(kX),{key:`${e.indexKey||`highlight`}-${i}`,components:r.value,node:n,"custom-id":t.customId,"index-key":`${e.indexKey||`highlight`}-${i}`},null,8,[`components`,`node`,`custom-id`,`index-key`]))),128))]))}}),[[`__scopeId`,`data-v-7a62982a`]]);_Z.install=e=>{e.component(_Z.__name,_Z)};var vZ={class:`emphasis-node`},yZ=vY(K({__name:`EmphasisNode`,props:{node:{},customId:{},indexKey:{}},setup(e){let t=e,n=mY(()=>t.customId),r=R(()=>Q({text:JX,inline_code:BY,link:pZ,html_inline:LY,strong:oZ,strikethrough:cZ,highlight:_Z,insert:hZ,subscript:iZ,superscript:nZ,emoji:xY,footnote_reference:wY,math_inline:QX,reference:eZ},n.value));return(n,i)=>(u(),G(`em`,vZ,[(u(!0),G(P,null,y(e.node.children,(n,i)=>(u(),I(B(kX),{key:`${e.indexKey||`emphasis`}-${i}`,components:r.value,node:n,"custom-id":t.customId,"index-key":`${e.indexKey||`emphasis`}-${i}`},null,8,[`components`,`node`,`custom-id`,`index-key`]))),128))]))}}),[[`__scopeId`,`data-v-2a5aafbf`]]);yZ.install=e=>{e.component(yZ.__name,yZ)};var bZ={class:`hard-break`},xZ=vY(K({__name:`HardBreakNode`,props:{node:{}},setup:e=>(e,t)=>(u(),G(`br`,bZ))}),[[`__scopeId`,`data-v-50c58f70`]]);xZ.install=e=>{e.component(xZ.__name,xZ)};var SZ=K({__name:`SimpleInlineRenderer`,props:{nodes:{},customId:{},indexKey:{}},setup(e){let t=e,n=v({checkbox:yY,checkbox_input:yY,emoji:xY,emphasis:yZ,hardbreak:xZ,highlight:_Z,inline_code:BY,insert:hZ,link:pZ,reference:eZ,strikethrough:cZ,strong:oZ,subscript:iZ,superscript:nZ,text:JX}),r=mY(()=>t.customId),i=R(()=>{let e=r.value;return Object.keys(e).length>0?Q(Q({},n),e):n});return(n,r)=>(u(!0),G(P,null,y(e.nodes,(n,r)=>(u(),I(B(kX),{key:r,components:i.value,node:n,"custom-id":t.customId,"index-key":`${e.indexKey||`inline`}-${r}`},null,8,[`components`,`node`,`custom-id`,`index-key`]))),128))}});function CZ(e){if(!e||typeof e!=`object`)return!1;let t=`|${e.type}|`;if(!`|checkbox|checkbox_input|emoji|emphasis|hardbreak|highlight|inline_code|insert|link|reference|strikethrough|strong|subscript|superscript|text|`.includes(t))return!1;if(!`|emphasis|highlight|insert|link|strikethrough|strong|subscript|superscript|`.includes(t))return!0;let n=e.children;return Array.isArray(n)&&n.every(CZ)}function wZ(e,t=!0,n=!1){if(!e||!n&&e.length===0)return null;if(e.every(CZ))return e;if(!t||e.length!==1)return null;let r=e[0];if(r?.type!==`paragraph`||!Array.isArray(r.children))return null;let i=r.children;return(n||i.length>0)&&i.every(CZ)?i:null}function TZ(e){if(!e?.length)return null;let t=``;for(let n of e){if(n?.type!==`text`||!0===n.center)return null;t+=String(n.content??n.raw??``)}return t}var EZ=[`cite`],DZ={key:0,dir:`auto`,class:`paragraph-node`},OZ=[`custom-id`],kZ=vY(K({__name:`BlockquoteNode`,props:{node:{},indexKey:{},typewriter:{type:Boolean},fade:{type:Boolean},customId:{},showTooltips:{type:Boolean}},emits:[`copy`],setup(e){let t=e,n=mY(()=>t.customId),r=R(()=>!!n.value.paragraph),i=R(()=>!!n.value.text),a=R(()=>wZ(t.node.children,!r.value)),o=R(()=>!1!==t.fade||i.value?null:TZ(a.value));return p(`markstreamShowTooltips`,R(()=>t.showTooltips)),p(`markstreamFade`,R(()=>t.fade)),(n,r)=>(u(),G(`blockquote`,{class:`blockquote blockquote-node`,dir:`auto`,cite:e.node.cite},[a.value?(u(),G(`p`,DZ,[o.value===null?(u(),I(B(SZ),{key:1,nodes:a.value,"custom-id":t.customId,"index-key":`blockquote-${t.indexKey}-paragraph`},null,8,[`nodes`,`custom-id`,`index-key`])):(u(),G(`span`,{key:0,class:`text-node`,"custom-id":t.customId},W(o.value),9,OZ))])):(u(),I(B(O0),{key:1,"show-tooltips":t.showTooltips,"index-key":`blockquote-${t.indexKey}`,nodes:t.node.children||[],"custom-id":t.customId,typewriter:t.typewriter,fade:t.fade,onCopy:r[0]||=e=>n.$emit(`copy`,e)},null,8,[`show-tooltips`,`index-key`,`nodes`,`custom-id`,`typewriter`,`fade`]))],8,EZ))}}),[[`__scopeId`,`data-v-abfecebc`]]);kZ.install=e=>{e.component(kZ.__name,kZ)};var AZ={class:`definition-list`},jZ={class:`definition-term`},MZ={class:`definition-desc`},NZ=vY(K({__name:`DefinitionListNode`,props:{node:{},indexKey:{},typewriter:{type:Boolean},fade:{type:Boolean},customId:{}},emits:[`copy`],setup(e){let t=e;return(e,n)=>(u(),G(`dl`,AZ,[(u(!0),G(P,null,y(t.node.items,(r,i)=>(u(),G(P,{key:i},[L(`dt`,jZ,[b(B(O0),{"index-key":`definition-term-${t.indexKey}-${i}`,nodes:r.term,"custom-id":t.customId,typewriter:t.typewriter,fade:t.fade,onCopy:n[0]||=t=>e.$emit(`copy`,t)},null,8,[`index-key`,`nodes`,`custom-id`,`typewriter`,`fade`])]),L(`dd`,MZ,[b(B(O0),{"index-key":`definition-desc-${t.indexKey}-${i}`,nodes:r.definition,"custom-id":t.customId,typewriter:t.typewriter,fade:t.fade,onCopy:n[1]||=t=>e.$emit(`copy`,t)},null,8,[`index-key`,`nodes`,`custom-id`,`typewriter`,`fade`])])],64))),128))]))}}),[[`__scopeId`,`data-v-4e103b30`]]);NZ.install=e=>{e.component(NZ.__name,NZ)};var PZ=[`href`,`title`],FZ=vY(K({__name:`FootnoteAnchorNode`,props:{node:{}},setup(e){let t=e;function n(e){if(e.preventDefault(),typeof document>`u`)return;let n=`fnref-${String(t.node.id??``)}`,r=document.getElementById(n);r&&r.scrollIntoView({behavior:`smooth`,block:`center`})}return(t,r)=>(u(),G(`a`,{class:`footnote-anchor text-sm hover:underline cursor-pointer`,href:`#fnref-${e.node.id}`,title:`返回引用 ${e.node.id}`,onClick:n},` ↩︎ `,8,PZ))}}),[[`__scopeId`,`data-v-e1eb37b6`]]);FZ.install=e=>{e.component(FZ.__name,FZ)};var IZ=[`id`],LZ={class:`flex-1`},RZ=K({__name:`FootnoteNode`,props:{node:{},indexKey:{},typewriter:{type:Boolean},fade:{type:Boolean},customId:{}},emits:[`copy`],setup(e){let t=e;return(n,r)=>(u(),G(`div`,{id:`fnref--${e.node.id}`,class:`footnote-node flex text-sm leading-relaxed border-t border-[var(--footnote-border)] pt-2`},[L(`div`,LZ,[b(B(O0),{"index-key":`footnote-${t.indexKey}`,nodes:t.node.children,"custom-id":t.customId,typewriter:t.typewriter,fade:t.fade,onCopy:r[0]||=e=>n.$emit(`copy`,e)},null,8,[`index-key`,`nodes`,`custom-id`,`typewriter`,`fade`])])],8,IZ))}});RZ.install=e=>{e.component(RZ.__name,RZ)};var zZ=[`custom-id`],BZ=vY(K({__name:`HeadingNode`,props:{node:{},customId:{},indexKey:{}},setup(e){let t=e,n=mY(()=>t.customId),r=g(`markstreamFade`,void 0),i=R(()=>!1!==r?.value||n.value.text?null:TZ(t.node.children)),a=R(()=>Q({text:JX,inline_code:BY,link:pZ,image:DX,strong:oZ,emphasis:yZ,strikethrough:cZ,highlight:_Z,insert:hZ,subscript:iZ,superscript:nZ,emoji:xY,checkbox:yY,checkbox_input:yY,footnote_reference:wY,hardbreak:xZ,math_inline:QX,reference:eZ},n.value));return(n,r)=>(u(),I(C(`h${e.node.level}`),ie({class:[`heading-node`,[`heading-${e.node.level}`]],dir:`auto`},e.node.attrs),{default:V(()=>[i.value===null?(u(!0),G(P,{key:1},y(e.node.children,(n,r)=>(u(),I(B(kX),{key:r,components:a.value,"custom-id":t.customId,node:n,"index-key":`${e.indexKey||`heading`}-${r}`},null,8,[`components`,`custom-id`,`node`,`index-key`]))),128)):(u(),G(`span`,{key:0,class:`text-node`,"custom-id":t.customId},W(i.value),9,zZ))]),_:1},16,[`class`]))}}),[[`__scopeId`,`data-v-7122dbe1`]]),VZ=BZ;VZ.install=e=>{e.component(BZ.__name,BZ)};var HZ={key:0,dir:`auto`,class:`paragraph-node`},UZ=[`custom-id`],WZ={dir:`auto`,class:`paragraph-node`},GZ=[`custom-id`],KZ=vY(K({__name:`ListItemNode`,props:{node:{},item:{},indexKey:{},customId:{},typewriter:{type:Boolean},fade:{type:Boolean},showTooltips:{type:Boolean},value:{},isDark:{type:Boolean}},emits:[`copy`],setup(e){let t=e,n=R(()=>t.node??t.item),r=mY(()=>t.customId),i=R(()=>!!r.value.paragraph),a=R(()=>!!r.value.text),o=R(()=>wZ(n.value?.children,!i.value)),s=R(()=>{if(i.value)return null;let e=n.value?.children;if(!Array.isArray(e)||e.length<2)return null;let t=e[0];if(t?.type!==`paragraph`||!Array.isArray(t.children))return null;let r=e.slice(1);if(!r.every(e=>e?.type===`list`))return null;let a=wZ([t]);return a?{paragraphChildren:a,nestedLists:r}:null});function c(){return!1===t.fade&&!a.value}let l=R(()=>c()?TZ(o.value):null),d=R(()=>c()?TZ(s.value?.paragraphChildren):null),f=Object.freeze({}),m=R(()=>{let{value:e}=t;return typeof e==`number`&&Number.isFinite(e)?{value:e}:f});return p(`markstreamShowTooltips`,R(()=>t.showTooltips)),p(`markstreamFade`,R(()=>t.fade)),(e,r)=>(u(),G(`li`,ie({class:`list-item`,dir:`auto`},m.value),[o.value?(u(),G(`p`,HZ,[l.value===null?(u(),I(B(SZ),{key:1,nodes:o.value,"custom-id":t.customId,"index-key":`list-item-${t.indexKey}-paragraph`},null,8,[`nodes`,`custom-id`,`index-key`])):(u(),G(`span`,{key:0,class:`text-node`,"custom-id":t.customId},W(l.value),9,UZ))])):s.value?(u(),G(P,{key:1},[L(`p`,WZ,[d.value===null?(u(),I(B(SZ),{key:1,nodes:s.value.paragraphChildren,"custom-id":t.customId,"index-key":`list-item-${t.indexKey}-paragraph`},null,8,[`nodes`,`custom-id`,`index-key`])):(u(),G(`span`,{key:0,class:`text-node`,"custom-id":t.customId},W(d.value),9,GZ))]),(u(!0),G(P,null,y(s.value.nestedLists,(n,i)=>(u(),I(B(O0),{key:i,nodes:[n],"custom-id":t.customId,"index-key":`list-item-${t.indexKey}-nested-${i}`,"show-tooltips":t.showTooltips,typewriter:t.typewriter,fade:t.fade,"is-dark":t.isDark,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0,onCopy:r[0]||=t=>e.$emit(`copy`,t)},null,8,[`nodes`,`custom-id`,`index-key`,`show-tooltips`,`typewriter`,`fade`,`is-dark`]))),128))],64)):(u(),I(B(O0),{key:2,"show-tooltips":t.showTooltips,"index-key":`list-item-${t.indexKey}`,nodes:n.value?.children??[],"custom-id":t.customId,typewriter:t.typewriter,fade:t.fade,"is-dark":t.isDark,"batch-rendering":!1,onCopy:r[1]||=t=>e.$emit(`copy`,t)},null,8,[`show-tooltips`,`index-key`,`nodes`,`custom-id`,`typewriter`,`fade`,`is-dark`]))],16))}}),[[`__scopeId`,`data-v-617214f9`]]);KZ.install=e=>{e.component(KZ.__name,KZ)};var qZ=vY(K({__name:`ListNode`,props:{node:{},customId:{},indexKey:{},typewriter:{type:Boolean},fade:{type:Boolean},showTooltips:{type:Boolean},isDark:{type:Boolean}},emits:[`copy`],setup(e){let t=mY(()=>e.customId),n=R(()=>t.value.list_item||KZ);return(t,r)=>(u(),I(C(e.node.ordered?`ol`:`ul`),{class:H([`list-node`,{"list-decimal":e.node.ordered,"list-disc":!e.node.ordered}])},{default:V(()=>[(u(!0),G(P,null,y(e.node.items,(i,a)=>(u(),I(C(n.value),ie({key:`${e.indexKey||`list`}-${a}`},{ref_for:!0},{showTooltips:e.showTooltips},{node:i,"custom-id":e.customId,"index-key":`${e.indexKey||`list`}-${a}`,typewriter:e.typewriter,fade:e.fade,"is-dark":e.isDark,value:e.node.ordered?(e.node.start??1)+a:void 0,onCopy:r[0]||=e=>t.$emit(`copy`,e)}),null,16,[`node`,`custom-id`,`index-key`,`typewriter`,`fade`,`is-dark`,`value`]))),128))]),_:1},8,[`class`]))}}),[[`__scopeId`,`data-v-99cb95e0`]]);qZ.install=e=>{e.component(qZ.__name,qZ)};var JZ={key:2,class:`html-block-node__raw`},YZ=[`innerHTML`],XZ={key:1,class:`html-block-node__placeholder`},ZZ=vY(K({__name:`HtmlBlockNode`,props:{node:{},customId:{},htmlPolicy:{}},setup(e){let t=e,n=g(`markstreamHtmlPolicy`,void 0),r=g(`markstreamNestedRendererProps`,void 0),i=R(()=>t.htmlPolicy??n?.value??`safe`),a=R(()=>{let e=r?.value??{};return rY(Q({},e),{customId:t.customId??e.customId,htmlPolicy:i.value})}),s=o({loader:()=>Promise.resolve().then(()=>k0),suspensible:!1}),d=R(()=>{let e=dK(t.node.attrs,i.value);if(!e)return;let n=uK(e);return Object.keys(n).length>0?n:void 0}),f=R(()=>{let e=String(t.node.tag||``).trim(),n=dK(t.node.attrs,i.value,e);if(!n)return;let r=uK(n);return Object.keys(r).length>0?r:void 0}),p=mY(()=>t.customId),m=K({name:`DynamicRenderer`,props:{nodes:{type:Array,required:!0}},render(){return this.nodes}}),h=z(null),_=z(typeof window>`u`),v=z(t.node.content),y=R(()=>Array.isArray(t.node.children)?t.node.children:[]),b=R(()=>String(t.node.tag||`div`)),x=R(()=>{if(b.value.trim().toLowerCase()!==`details`||t.node.attrs?.some(([e])=>String(e).toLowerCase()===`open`))return null;let e=y.value[0];return e?.type===`html_block`&&String(e.tag||``).toLowerCase()===`summary`?e:null}),S=R(()=>TZ(x.value?.children)),w=R(()=>{let e=x.value;if(!e)return;let t=dK(e.attrs,i.value,`summary`);if(!t)return;let n=uK(t);return Object.keys(n).length>0?n:void 0}),T=R(()=>S.value==null?y.value:y.value.slice(1)),E=R(()=>{let e=b.value.trim().toLowerCase();return JI.has(e)||$G(e,i.value)}),D=R(()=>y.value.length>0&&!!t.node.tag&&!E.value),k=R(()=>{if(D.value)return{mode:`structured`};if(!_.value)return{mode:`html`,content:v.value??``};let e=v.value??t.node.content;if(!e)return{mode:`html`,content:``};if(i.value===`escape`)return{mode:`html`,content:yK(e,i.value)};if(t.node.loading){let n=FY(e,p.value,i.value);return n===null?{mode:`text`,content:t.node.raw??e}:{mode:`dynamic`,nodes:n}}if(!PY(e,p.value))return{mode:`html`,content:yK(e,i.value)};let n=FY(e,p.value,i.value);return n===null?{mode:`html`,content:yK(e,i.value)}:{mode:`dynamic`,nodes:n}}),A=vX(),j=hX(),M=gX(),F=de(null),ee=!!t.node.loading;return typeof window<`u`?(l([()=>h.value,()=>j?.value.heavyBlockMargin,()=>j?.value.rootMargin],([e],n,r)=>{var i,a;if((a=(i=F.value)?.destroy)==null||a.call(i),F.value=null,!ee)return _.value=!0,void(v.value=t.node.content);if(!e)return void(_.value=!1);let o=!0,s=j?.value.heavyBlockMargin??j?.value.rootMargin??mX,c=A(e,{rootMargin:s,allowIdle:!M.value});F.value=c,_.value=_.value||c.isVisible.value,c.whenVisible.then(()=>{o&&F.value===c&&(_.value=!0)}),r(()=>{o=!1,c.destroy(),F.value===c&&(F.value=null)})},{immediate:!0}),l(()=>t.node.content,e=>{ee&&!_.value||(v.value=e)})):_.value=!0,re(()=>{var e,t;(t=(e=F.value)?.destroy)==null||t.call(e),F.value=null}),(t,n)=>(u(),I(C(D.value?b.value:`div`),ie({ref_key:`htmlRef`,ref:h,class:`html-block-node`,"data-markstream-viewport-pending":B(M)&&!_.value?`true`:void 0},D.value?f.value:void 0),{default:V(()=>[_.value?(u(),G(P,{key:0},[k.value.mode===`structured`?(u(),G(P,{key:0},[S.value===null?(u(),I(B(s),ie({key:1},a.value,{nodes:y.value,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`nodes`])):(u(),G(P,{key:0},[L(`summary`,N(c(w.value)),W(S.value),17),T.value.length?(u(),I(B(s),ie({key:0},a.value,{nodes:T.value,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`nodes`])):O(``,!0)],64))],64)):k.value.mode===`dynamic`?(u(),I(B(m),{key:1,nodes:k.value.nodes},null,8,[`nodes`])):k.value.mode===`text`?(u(),G(`pre`,JZ,W(k.value.content),1)):(u(),G(`div`,ie({key:3},d.value,{innerHTML:k.value.content}),null,16,YZ))],64)):(u(),G(`div`,XZ,[he(t.$slots,`placeholder`,{node:e.node},()=>[n[0]||=L(`span`,{class:`html-block-node__placeholder-bar`},null,-1),n[1]||=L(`span`,{class:`html-block-node__placeholder-bar w-4/5`},null,-1),n[2]||=L(`span`,{class:`html-block-node__placeholder-bar w-2/3`},null,-1)],!0)]))]),_:3},16,[`data-markstream-viewport-pending`]))}}),[[`__scopeId`,`data-v-e140a874`]]);ZZ.install=e=>{e.component(ZZ.__name,ZZ)};var QZ={dir:`auto`,class:`paragraph-node`},$Z=[`custom-id`],eQ=vY(K({__name:`ParagraphNode`,props:{node:{},customId:{},indexKey:{},customHtmlTags:{},parseOptions:{},customMarkdownIt:{type:Function}},setup(e){let t=e,n=mY(()=>t.customId),r=g(`markstreamHtmlPolicy`,void 0),i=g(`markstreamFade`,void 0),a=g(`markstreamParseOptions`,void 0),s=g(`markstreamCustomMarkdownIt`,void 0),c=g(`markstreamNestedRendererProps`,void 0),l=R(()=>r?.value??`safe`),d=R(()=>t.parseOptions??a?.value),f=R(()=>t.customMarkdownIt??s?.value),p=R(()=>t.customHtmlTags??c?.value?.customHtmlTags),m=R(()=>{let e=c?.value??{};return rY(Q({},e),{customId:t.customId??e.customId,customHtmlTags:p.value,parseOptions:d.value,customMarkdownIt:f.value,htmlPolicy:l.value})}),h=o({loader:()=>Promise.resolve().then(()=>k0),suspensible:!1});function _(e){return e.type===`text`&&String(e.content??``).trim()===``}let v=R(()=>t.node.children.filter(e=>!_(e))),b=R(()=>v.value.length>0&&v.value.every(e=>e.type===`image`||function(e){let t=function(e){return e.type===`link`&&Array.isArray(e.children)?e.children.filter(e=>!_(e)):[]}(e);return t.length===1&&t[0]?.type===`image`}(e))),x=R(()=>new Set(xL(p.value))),S=R(()=>{if(!b.value||v.value.length<=1)return t.node.children;let e=[];for(let n=0;n0,a=t.node.children.slice(n+1).some(e=>!_(e));i&&a&&e.push(rY(Q({},r),{content:` `,raw:` `}))}return e}),w=R(()=>!1===i?.value&&!n.value.text),T=R(()=>w.value?TZ(S.value):null);function E(e,n){return{node:e,"index-key":`${t.indexKey}-${n}`,"custom-id":t.customId,"custom-html-tags":p.value}}let D=R(()=>Q({inline_code:BY,image:DX,link:pZ,hardbreak:xZ,emphasis:yZ,strong:oZ,strikethrough:cZ,highlight:_Z,insert:hZ,subscript:iZ,superscript:nZ,html_inline:LY,html_block:ZZ,emoji:xY,checkbox:yY,math_inline:QX,checkbox_input:yY,reference:eZ,footnote_anchor:FZ,footnote_reference:wY,text:JX},n.value)),k=R(()=>S.value.map((e,r)=>{let i=function(e){if(e.type===`html_block`||e.type===`html_inline`){let t=String(e.tag??``).trim().toLowerCase()||wL(e.content);if(t&&!x.value.has(t)&&EL(e.content??e.raw,t)){let t=String(e.content??e.raw??``);return{child:{type:`text`,content:t,raw:t},component:JX,isCustomComponent:!1}}}return{child:e,component:D.value[e.type],isCustomComponent:!!(n.value[e.type]&&!dY(String(e.type)))}}(e);return rY(Q({},i),{index:r,key:`${t.indexKey||`paragraph`}-${r}`,customAttrs:i.isCustomComponent?AY(i.child,l.value):void 0,hasSlotChildren:Array.isArray(i.child.children)&&i.child.children.length>0,slotContent:String(i.child.content??``),originalChild:e})}));return(e,n)=>(u(),G(`p`,QZ,[T.value===null?(u(!0),G(P,{key:1},y(k.value,e=>{return u(),G(P,{key:e.key},[b.value&&_(e.originalChild)?(u(),G(P,{key:0},[q(W((n=e.originalChild,String((r=n.content)??``))),1)],64)):e.isCustomComponent?(u(),I(C(e.component),ie({key:1,ref_for:!0},e.customAttrs,{node:e.child,loading:e.child.loading,"index-key":e.key,"custom-id":t.customId,"custom-html-tags":p.value,"is-dark":m.value.isDark}),{default:V(()=>[e.hasSlotChildren?(u(),I(B(h),ie({key:0,ref_for:!0},m.value,{nodes:e.child.children,"index-key":e.key,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`nodes`,`index-key`])):e.slotContent?(u(),I(B(h),ie({key:1,ref_for:!0},m.value,{content:e.slotContent,final:!e.child.loading,"index-key":`${e.key}-content`,"smooth-streaming":!1,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`content`,`final`,`index-key`])):O(``,!0)]),_:2},1040,[`node`,`loading`,`index-key`,`custom-id`,`custom-html-tags`,`is-dark`])):(u(),I(C(e.component),ie({key:2,ref_for:!0},E(e.child,e.index)),null,16))],64);var n,r}),128)):(u(),G(`span`,{key:0,class:`text-node`,"custom-id":t.customId},W(T.value),9,$Z))]))}}),[[`__scopeId`,`data-v-c59ff506`]]);eQ.install=e=>{e.component(eQ.__name,eQ)};var tQ={class:`table-node-wrapper`},nQ=[`aria-busy`],rQ={key:0},iQ=[`custom-id`],aQ=[`aria-label`,`onPointerdown`],oQ=[`custom-id`],sQ={key:0,class:`table-node__loading`,role:`status`,"aria-live":`polite`},cQ=vY(K({__name:`TableNode`,props:{node:{},indexKey:{},isDark:{type:Boolean},typewriter:{type:Boolean},fade:{type:Boolean},customId:{},showTooltips:{type:Boolean}},emits:[`copy`],setup(e){let t=e,n=R(()=>{var e;return(e=t.node.loading)!=null&&e}),r=R(()=>t.node.rows??[]),i=z(null),a=z([]),o=null,s=R(()=>t.node.header.cells.length),c=R(()=>a.value.some(e=>Number.isFinite(e)&&e>0)),d=R(()=>c.value?a.value.map(e=>e>0?{width:`${e}px`}:void 0):[]);p(`markstreamShowTooltips`,R(()=>t.showTooltips)),p(`markstreamFade`,R(()=>t.fade));let f=mY(()=>t.customId),m=R(()=>!!f.value.text),h=R(()=>!!f.value.paragraph),g=new WeakMap;function _(e){let n=!1===t.fade&&!m.value,r=!h.value,i=g.get(e);if(i?.children===e.children&&i.textFastPath===n&&i.paragraphFastPath===r)return i.info;let a=wZ(e.children,r,!0),o={simpleChildren:a,plainText:a&&n?TZ(a):null};return g.set(e,{children:e.children,textFastPath:n,paragraphFastPath:r,info:o}),o}function v(e){if(!o)return;e.preventDefault();let t=o.startWidth+o.nextStartWidth,n=Math.min(48,Math.floor(t/2)),r=Math.max(n,Math.min(t-n,Math.round(o.startWidth+e.clientX-o.startX))),i=[...o.widths];i[o.index]=r,i[o.index+1]=t-r,a.value=i}function x(){o&&=(window.removeEventListener(`pointermove`,v),window.removeEventListener(`pointerup`,x),window.removeEventListener(`pointercancel`,x),null)}return l(s,()=>{x(),a.value=[]}),re(x),(s,l)=>(u(),G(`div`,tQ,[L(`table`,{ref_key:`tableRef`,ref:i,class:H([`table-node`,{"table-node--loading":n.value}]),"aria-busy":n.value},[c.value?(u(),G(`colgroup`,rQ,[(u(!0),G(P,null,y(e.node.header.cells,(e,t)=>(u(),G(`col`,{key:t,style:oe(d.value[t])},null,4))),128))])):O(``,!0),L(`thead`,null,[L(`tr`,null,[(u(!0),G(P,null,y(e.node.header.cells,(n,r)=>(u(),G(`th`,{key:r,dir:`auto`,class:H([n.align===`right`?`text-right`:n.align===`center`?`text-center`:`text-left`])},[_(n).plainText===null?_(n).simpleChildren?(u(),I(B(SZ),{key:1,nodes:_(n).simpleChildren,"custom-id":t.customId,"index-key":`table-th-${t.indexKey}-${r}`},null,8,[`nodes`,`custom-id`,`index-key`])):(u(),I(B(O0),{key:2,nodes:n.children,"index-key":`table-th-${t.indexKey}`,"custom-id":t.customId,typewriter:t.typewriter,fade:t.fade,"show-tooltips":t.showTooltips,onCopy:l[0]||=e=>s.$emit(`copy`,e)},null,8,[`nodes`,`index-key`,`custom-id`,`typewriter`,`fade`,`show-tooltips`])):(u(),G(`span`,{key:0,class:`text-node`,"custom-id":t.customId},W(_(n).plainText),9,iQ)),rfunction(e,t){if(t.button!==0)return;let n=function(){let e=i.value?.querySelectorAll(`thead th`);return Array.from(e??[],e=>Math.round(e.getBoundingClientRect().width))}(),r=n[e],s=n[e+1];r&&s&&(t.preventDefault(),o={index:e,startX:t.clientX,startWidth:r,nextStartWidth:s,widths:n},a.value=n,window.addEventListener(`pointermove`,v),window.addEventListener(`pointerup`,x),window.addEventListener(`pointercancel`,x))}(r,e)},null,40,aQ)):O(``,!0)],2))),128))])]),L(`tbody`,null,[(u(!0),G(P,null,y(r.value,(e,n)=>(u(),G(`tr`,{key:n},[(u(!0),G(P,null,y(e.cells,(e,r)=>(u(),G(`td`,{key:r,class:H([e.align===`right`?`text-right`:e.align===`center`?`text-center`:`text-left`]),dir:`auto`},[_(e).plainText===null?_(e).simpleChildren?(u(),I(B(SZ),{key:1,nodes:_(e).simpleChildren,"custom-id":t.customId,"index-key":`table-td-${t.indexKey}-${n}-${r}`},null,8,[`nodes`,`custom-id`,`index-key`])):(u(),I(B(O0),{key:2,nodes:e.children,"index-key":`table-td-${t.indexKey}`,"custom-id":t.customId,typewriter:t.typewriter,fade:t.fade,"show-tooltips":t.showTooltips,onCopy:l[1]||=e=>s.$emit(`copy`,e)},null,8,[`nodes`,`index-key`,`custom-id`,`typewriter`,`fade`,`show-tooltips`])):(u(),G(`span`,{key:0,class:`text-node`,"custom-id":t.customId},W(_(e).plainText),9,oQ))],2))),128))]))),128))])],10,nQ),b(se,{name:`table-node-fade`},{default:V(()=>[n.value?(u(),G(`div`,sQ,[he(s.$slots,`loading`,{isLoading:n.value},()=>[l[2]||=L(`span`,{class:`table-node__spinner animate-spin`,"aria-hidden":`true`},null,-1),l[3]||=L(`span`,{class:`sr-only`},`Loading`,-1)],!0)])):O(``,!0)]),_:3})]))}}),[[`__scopeId`,`data-v-39f87b5d`]]);cQ.install=e=>{e.component(cQ.__name,cQ)};var lQ={class:`hr-node`},uQ=vY({},[[`render`,function(e,t){return u(),G(`hr`,lQ)}],[`__scopeId`,`data-v-39b2349c`]]);uQ.install=e=>{e.component(uQ.__name,uQ)};var dQ={class:`unknown-node`},fQ=K({__name:`FallbackComponent`,props:{node:{}},setup:e=>(t,n)=>(u(),G(`div`,dQ,W(e.node.raw),1))}),pQ=vY(K({__name:`VmrContainerNode`,props:{node:{},indexKey:{},isDark:{type:Boolean},typewriter:{type:Boolean},fade:{type:Boolean},customId:{}},setup(e){let t=e,n=R(()=>`vmr-container vmr-container-${t.node.name}`),r=mY(()=>t.customId),i=R(()=>Q({text:JX,paragraph:eQ,heading:VZ,inline_code:BY,link:pZ,image:DX,strong:oZ,emphasis:yZ,strikethrough:cZ,insert:hZ,subscript:iZ,superscript:nZ,checkbox:yY,checkbox_input:yY,hardbreak:xZ,math_inline:QX,reference:eZ,list:qZ,math_block:$X,table:cQ},r.value));return(r,a)=>(u(),G(`div`,ie({class:n.value},e.node.attrs),[(u(!0),G(P,null,y(e.node.children,(n,r)=>{return u(),I(C((a=n.type,i.value[a]||fQ)),{key:`${e.indexKey||`vmr-container`}-${r}`,"custom-id":t.customId,node:n,"index-key":`${e.indexKey||`vmr-container`}-${r}`,typewriter:t.typewriter,fade:t.fade},null,8,[`custom-id`,`node`,`index-key`,`typewriter`,`fade`]);var a}),128))],16))}}),[[`__scopeId`,`data-v-911e41c4`]]);pQ.install=e=>{e.component(pQ.__name,pQ)};var mQ=`BN.BN.BN.BN.BN.BN.BN.BN.BN.S.B.S.WS.B.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.B.B.B.S.WS.ON.ON.ET.ET.ET.ON.ON.ON.ON.ON.ES.CS.ES.CS.CS.EN.EN.EN.EN.EN.EN.EN.EN.EN.EN.CS.ON.ON.ON.ON.ON.ON.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.ON.ON.ON.ON.ON.ON.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.ON.ON.ON.ON.BN.BN.BN.BN.BN.BN.B.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.CS.ON.ET.ET.ET.ET.ON.ON.ON.ON.L.ON.ON.BN.ON.ON.ET.ET.EN.EN.ON.L.ON.ON.ON.EN.L.ON.ON.ON.ON.ON.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.ON.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.ON.L.L.L.L.L.L.L.L`.split(`.`),hQ=[[697,698,`ON`],[706,719,`ON`],[722,735,`ON`],[741,749,`ON`],[751,767,`ON`],[768,879,`NSM`],[884,885,`ON`],[894,894,`ON`],[900,901,`ON`],[903,903,`ON`],[1014,1014,`ON`],[1155,1161,`NSM`],[1418,1418,`ON`],[1421,1422,`ON`],[1423,1423,`ET`],[1424,1424,`R`],[1425,1469,`NSM`],[1470,1470,`R`],[1471,1471,`NSM`],[1472,1472,`R`],[1473,1474,`NSM`],[1475,1475,`R`],[1476,1477,`NSM`],[1478,1478,`R`],[1479,1479,`NSM`],[1480,1535,`R`],[1536,1541,`AN`],[1542,1543,`ON`],[1544,1544,`AL`],[1545,1546,`ET`],[1547,1547,`AL`],[1548,1548,`CS`],[1549,1549,`AL`],[1550,1551,`ON`],[1552,1562,`NSM`],[1563,1610,`AL`],[1611,1631,`NSM`],[1632,1641,`AN`],[1642,1642,`ET`],[1643,1644,`AN`],[1645,1647,`AL`],[1648,1648,`NSM`],[1649,1749,`AL`],[1750,1756,`NSM`],[1757,1757,`AN`],[1758,1758,`ON`],[1759,1764,`NSM`],[1765,1766,`AL`],[1767,1768,`NSM`],[1769,1769,`ON`],[1770,1773,`NSM`],[1774,1775,`AL`],[1776,1785,`EN`],[1786,1808,`AL`],[1809,1809,`NSM`],[1810,1839,`AL`],[1840,1866,`NSM`],[1867,1957,`AL`],[1958,1968,`NSM`],[1969,1983,`AL`],[1984,2026,`R`],[2027,2035,`NSM`],[2036,2037,`R`],[2038,2041,`ON`],[2042,2044,`R`],[2045,2045,`NSM`],[2046,2069,`R`],[2070,2073,`NSM`],[2074,2074,`R`],[2075,2083,`NSM`],[2084,2084,`R`],[2085,2087,`NSM`],[2088,2088,`R`],[2089,2093,`NSM`],[2094,2136,`R`],[2137,2139,`NSM`],[2140,2143,`R`],[2144,2191,`AL`],[2192,2193,`AN`],[2194,2198,`AL`],[2199,2207,`NSM`],[2208,2249,`AL`],[2250,2273,`NSM`],[2274,2274,`AN`],[2275,2306,`NSM`],[2362,2362,`NSM`],[2364,2364,`NSM`],[2369,2376,`NSM`],[2381,2381,`NSM`],[2385,2391,`NSM`],[2402,2403,`NSM`],[2433,2433,`NSM`],[2492,2492,`NSM`],[2497,2500,`NSM`],[2509,2509,`NSM`],[2530,2531,`NSM`],[2546,2547,`ET`],[2555,2555,`ET`],[2558,2558,`NSM`],[2561,2562,`NSM`],[2620,2620,`NSM`],[2625,2626,`NSM`],[2631,2632,`NSM`],[2635,2637,`NSM`],[2641,2641,`NSM`],[2672,2673,`NSM`],[2677,2677,`NSM`],[2689,2690,`NSM`],[2748,2748,`NSM`],[2753,2757,`NSM`],[2759,2760,`NSM`],[2765,2765,`NSM`],[2786,2787,`NSM`],[2801,2801,`ET`],[2810,2815,`NSM`],[2817,2817,`NSM`],[2876,2876,`NSM`],[2879,2879,`NSM`],[2881,2884,`NSM`],[2893,2893,`NSM`],[2901,2902,`NSM`],[2914,2915,`NSM`],[2946,2946,`NSM`],[3008,3008,`NSM`],[3021,3021,`NSM`],[3059,3064,`ON`],[3065,3065,`ET`],[3066,3066,`ON`],[3072,3072,`NSM`],[3076,3076,`NSM`],[3132,3132,`NSM`],[3134,3136,`NSM`],[3142,3144,`NSM`],[3146,3149,`NSM`],[3157,3158,`NSM`],[3170,3171,`NSM`],[3192,3198,`ON`],[3201,3201,`NSM`],[3260,3260,`NSM`],[3276,3277,`NSM`],[3298,3299,`NSM`],[3328,3329,`NSM`],[3387,3388,`NSM`],[3393,3396,`NSM`],[3405,3405,`NSM`],[3426,3427,`NSM`],[3457,3457,`NSM`],[3530,3530,`NSM`],[3538,3540,`NSM`],[3542,3542,`NSM`],[3633,3633,`NSM`],[3636,3642,`NSM`],[3647,3647,`ET`],[3655,3662,`NSM`],[3761,3761,`NSM`],[3764,3772,`NSM`],[3784,3790,`NSM`],[3864,3865,`NSM`],[3893,3893,`NSM`],[3895,3895,`NSM`],[3897,3897,`NSM`],[3898,3901,`ON`],[3953,3966,`NSM`],[3968,3972,`NSM`],[3974,3975,`NSM`],[3981,3991,`NSM`],[3993,4028,`NSM`],[4038,4038,`NSM`],[4141,4144,`NSM`],[4146,4151,`NSM`],[4153,4154,`NSM`],[4157,4158,`NSM`],[4184,4185,`NSM`],[4190,4192,`NSM`],[4209,4212,`NSM`],[4226,4226,`NSM`],[4229,4230,`NSM`],[4237,4237,`NSM`],[4253,4253,`NSM`],[4957,4959,`NSM`],[5008,5017,`ON`],[5120,5120,`ON`],[5760,5760,`WS`],[5787,5788,`ON`],[5906,5908,`NSM`],[5938,5939,`NSM`],[5970,5971,`NSM`],[6002,6003,`NSM`],[6068,6069,`NSM`],[6071,6077,`NSM`],[6086,6086,`NSM`],[6089,6099,`NSM`],[6107,6107,`ET`],[6109,6109,`NSM`],[6128,6137,`ON`],[6144,6154,`ON`],[6155,6157,`NSM`],[6158,6158,`BN`],[6159,6159,`NSM`],[6277,6278,`NSM`],[6313,6313,`NSM`],[6432,6434,`NSM`],[6439,6440,`NSM`],[6450,6450,`NSM`],[6457,6459,`NSM`],[6464,6464,`ON`],[6468,6469,`ON`],[6622,6655,`ON`],[6679,6680,`NSM`],[6683,6683,`NSM`],[6742,6742,`NSM`],[6744,6750,`NSM`],[6752,6752,`NSM`],[6754,6754,`NSM`],[6757,6764,`NSM`],[6771,6780,`NSM`],[6783,6783,`NSM`],[6832,6877,`NSM`],[6880,6891,`NSM`],[6912,6915,`NSM`],[6964,6964,`NSM`],[6966,6970,`NSM`],[6972,6972,`NSM`],[6978,6978,`NSM`],[7019,7027,`NSM`],[7040,7041,`NSM`],[7074,7077,`NSM`],[7080,7081,`NSM`],[7083,7085,`NSM`],[7142,7142,`NSM`],[7144,7145,`NSM`],[7149,7149,`NSM`],[7151,7153,`NSM`],[7212,7219,`NSM`],[7222,7223,`NSM`],[7376,7378,`NSM`],[7380,7392,`NSM`],[7394,7400,`NSM`],[7405,7405,`NSM`],[7412,7412,`NSM`],[7416,7417,`NSM`],[7616,7679,`NSM`],[8125,8125,`ON`],[8127,8129,`ON`],[8141,8143,`ON`],[8157,8159,`ON`],[8173,8175,`ON`],[8189,8190,`ON`],[8192,8202,`WS`],[8203,8205,`BN`],[8207,8207,`R`],[8208,8231,`ON`],[8232,8232,`WS`],[8233,8233,`B`],[8234,8238,`BN`],[8239,8239,`CS`],[8240,8244,`ET`],[8245,8259,`ON`],[8260,8260,`CS`],[8261,8286,`ON`],[8287,8287,`WS`],[8288,8303,`BN`],[8304,8304,`EN`],[8308,8313,`EN`],[8314,8315,`ES`],[8316,8318,`ON`],[8320,8329,`EN`],[8330,8331,`ES`],[8332,8334,`ON`],[8352,8399,`ET`],[8400,8432,`NSM`],[8448,8449,`ON`],[8451,8454,`ON`],[8456,8457,`ON`],[8468,8468,`ON`],[8470,8472,`ON`],[8478,8483,`ON`],[8485,8485,`ON`],[8487,8487,`ON`],[8489,8489,`ON`],[8494,8494,`ET`],[8506,8507,`ON`],[8512,8516,`ON`],[8522,8525,`ON`],[8528,8543,`ON`],[8585,8587,`ON`],[8592,8721,`ON`],[8722,8722,`ES`],[8723,8723,`ET`],[8724,9013,`ON`],[9083,9108,`ON`],[9110,9257,`ON`],[9280,9290,`ON`],[9312,9351,`ON`],[9352,9371,`EN`],[9450,9899,`ON`],[9901,10239,`ON`],[10496,11123,`ON`],[11126,11263,`ON`],[11493,11498,`ON`],[11503,11505,`NSM`],[11513,11519,`ON`],[11647,11647,`NSM`],[11744,11775,`NSM`],[11776,11869,`ON`],[11904,11929,`ON`],[11931,12019,`ON`],[12032,12245,`ON`],[12272,12287,`ON`],[12288,12288,`WS`],[12289,12292,`ON`],[12296,12320,`ON`],[12330,12333,`NSM`],[12336,12336,`ON`],[12342,12343,`ON`],[12349,12351,`ON`],[12441,12442,`NSM`],[12443,12444,`ON`],[12448,12448,`ON`],[12539,12539,`ON`],[12736,12773,`ON`],[12783,12783,`ON`],[12829,12830,`ON`],[12880,12895,`ON`],[12924,12926,`ON`],[12977,12991,`ON`],[13004,13007,`ON`],[13175,13178,`ON`],[13278,13279,`ON`],[13311,13311,`ON`],[19904,19967,`ON`],[42128,42182,`ON`],[42509,42511,`ON`],[42607,42610,`NSM`],[42611,42611,`ON`],[42612,42621,`NSM`],[42622,42623,`ON`],[42654,42655,`NSM`],[42736,42737,`NSM`],[42752,42785,`ON`],[42888,42888,`ON`],[43010,43010,`NSM`],[43014,43014,`NSM`],[43019,43019,`NSM`],[43045,43046,`NSM`],[43048,43051,`ON`],[43052,43052,`NSM`],[43064,43065,`ET`],[43124,43127,`ON`],[43204,43205,`NSM`],[43232,43249,`NSM`],[43263,43263,`NSM`],[43302,43309,`NSM`],[43335,43345,`NSM`],[43392,43394,`NSM`],[43443,43443,`NSM`],[43446,43449,`NSM`],[43452,43453,`NSM`],[43493,43493,`NSM`],[43561,43566,`NSM`],[43569,43570,`NSM`],[43573,43574,`NSM`],[43587,43587,`NSM`],[43596,43596,`NSM`],[43644,43644,`NSM`],[43696,43696,`NSM`],[43698,43700,`NSM`],[43703,43704,`NSM`],[43710,43711,`NSM`],[43713,43713,`NSM`],[43756,43757,`NSM`],[43766,43766,`NSM`],[43882,43883,`ON`],[44005,44005,`NSM`],[44008,44008,`NSM`],[44013,44013,`NSM`],[64285,64285,`R`],[64286,64286,`NSM`],[64287,64296,`R`],[64297,64297,`ES`],[64298,64335,`R`],[64336,64450,`AL`],[64451,64466,`ON`],[64467,64829,`AL`],[64830,64847,`ON`],[64848,64911,`AL`],[64912,64913,`ON`],[64914,64967,`AL`],[64968,64975,`ON`],[64976,65007,`BN`],[65008,65020,`AL`],[65021,65023,`ON`],[65024,65039,`NSM`],[65040,65049,`ON`],[65056,65071,`NSM`],[65072,65103,`ON`],[65104,65104,`CS`],[65105,65105,`ON`],[65106,65106,`CS`],[65108,65108,`ON`],[65109,65109,`CS`],[65110,65118,`ON`],[65119,65119,`ET`],[65120,65121,`ON`],[65122,65123,`ES`],[65124,65126,`ON`],[65128,65128,`ON`],[65129,65130,`ET`],[65131,65131,`ON`],[65136,65278,`AL`],[65279,65279,`BN`],[65281,65282,`ON`],[65283,65285,`ET`],[65286,65290,`ON`],[65291,65291,`ES`],[65292,65292,`CS`],[65293,65293,`ES`],[65294,65295,`CS`],[65296,65305,`EN`],[65306,65306,`CS`],[65307,65312,`ON`],[65339,65344,`ON`],[65371,65381,`ON`],[65504,65505,`ET`],[65506,65508,`ON`],[65509,65510,`ET`],[65512,65518,`ON`],[65520,65528,`BN`],[65529,65533,`ON`],[65534,65535,`BN`],[65793,65793,`ON`],[65856,65932,`ON`],[65936,65948,`ON`],[65952,65952,`ON`],[66045,66045,`NSM`],[66272,66272,`NSM`],[66273,66299,`EN`],[66422,66426,`NSM`],[67584,67870,`R`],[67871,67871,`ON`],[67872,68096,`R`],[68097,68099,`NSM`],[68100,68100,`R`],[68101,68102,`NSM`],[68103,68107,`R`],[68108,68111,`NSM`],[68112,68151,`R`],[68152,68154,`NSM`],[68155,68158,`R`],[68159,68159,`NSM`],[68160,68324,`R`],[68325,68326,`NSM`],[68327,68408,`R`],[68409,68415,`ON`],[68416,68863,`R`],[68864,68899,`AL`],[68900,68903,`NSM`],[68904,68911,`AL`],[68912,68921,`AN`],[68922,68927,`AL`],[68928,68937,`AN`],[68938,68968,`R`],[68969,68973,`NSM`],[68974,68974,`ON`],[68975,69215,`R`],[69216,69246,`AN`],[69247,69290,`R`],[69291,69292,`NSM`],[69293,69311,`R`],[69312,69327,`AL`],[69328,69336,`ON`],[69337,69369,`AL`],[69370,69375,`NSM`],[69376,69423,`R`],[69424,69445,`AL`],[69446,69456,`NSM`],[69457,69487,`AL`],[69488,69505,`R`],[69506,69509,`NSM`],[69510,69631,`R`],[69633,69633,`NSM`],[69688,69702,`NSM`],[69714,69733,`ON`],[69744,69744,`NSM`],[69747,69748,`NSM`],[69759,69761,`NSM`],[69811,69814,`NSM`],[69817,69818,`NSM`],[69826,69826,`NSM`],[69888,69890,`NSM`],[69927,69931,`NSM`],[69933,69940,`NSM`],[70003,70003,`NSM`],[70016,70017,`NSM`],[70070,70078,`NSM`],[70089,70092,`NSM`],[70095,70095,`NSM`],[70191,70193,`NSM`],[70196,70196,`NSM`],[70198,70199,`NSM`],[70206,70206,`NSM`],[70209,70209,`NSM`],[70367,70367,`NSM`],[70371,70378,`NSM`],[70400,70401,`NSM`],[70459,70460,`NSM`],[70464,70464,`NSM`],[70502,70508,`NSM`],[70512,70516,`NSM`],[70587,70592,`NSM`],[70606,70606,`NSM`],[70608,70608,`NSM`],[70610,70610,`NSM`],[70625,70626,`NSM`],[70712,70719,`NSM`],[70722,70724,`NSM`],[70726,70726,`NSM`],[70750,70750,`NSM`],[70835,70840,`NSM`],[70842,70842,`NSM`],[70847,70848,`NSM`],[70850,70851,`NSM`],[71090,71093,`NSM`],[71100,71101,`NSM`],[71103,71104,`NSM`],[71132,71133,`NSM`],[71219,71226,`NSM`],[71229,71229,`NSM`],[71231,71232,`NSM`],[71264,71276,`ON`],[71339,71339,`NSM`],[71341,71341,`NSM`],[71344,71349,`NSM`],[71351,71351,`NSM`],[71453,71453,`NSM`],[71455,71455,`NSM`],[71458,71461,`NSM`],[71463,71467,`NSM`],[71727,71735,`NSM`],[71737,71738,`NSM`],[71995,71996,`NSM`],[71998,71998,`NSM`],[72003,72003,`NSM`],[72148,72151,`NSM`],[72154,72155,`NSM`],[72160,72160,`NSM`],[72193,72198,`NSM`],[72201,72202,`NSM`],[72243,72248,`NSM`],[72251,72254,`NSM`],[72263,72263,`NSM`],[72273,72278,`NSM`],[72281,72283,`NSM`],[72330,72342,`NSM`],[72344,72345,`NSM`],[72544,72544,`NSM`],[72546,72548,`NSM`],[72550,72550,`NSM`],[72752,72758,`NSM`],[72760,72765,`NSM`],[72850,72871,`NSM`],[72874,72880,`NSM`],[72882,72883,`NSM`],[72885,72886,`NSM`],[73009,73014,`NSM`],[73018,73018,`NSM`],[73020,73021,`NSM`],[73023,73029,`NSM`],[73031,73031,`NSM`],[73104,73105,`NSM`],[73109,73109,`NSM`],[73111,73111,`NSM`],[73459,73460,`NSM`],[73472,73473,`NSM`],[73526,73530,`NSM`],[73536,73536,`NSM`],[73538,73538,`NSM`],[73562,73562,`NSM`],[73685,73692,`ON`],[73693,73696,`ET`],[73697,73713,`ON`],[78912,78912,`NSM`],[78919,78933,`NSM`],[90398,90409,`NSM`],[90413,90415,`NSM`],[92912,92916,`NSM`],[92976,92982,`NSM`],[94031,94031,`NSM`],[94095,94098,`NSM`],[94178,94178,`ON`],[94180,94180,`NSM`],[113821,113822,`NSM`],[113824,113827,`BN`],[117760,117973,`ON`],[118e3,118009,`EN`],[118010,118012,`ON`],[118016,118451,`ON`],[118458,118480,`ON`],[118496,118512,`ON`],[118528,118573,`NSM`],[118576,118598,`NSM`],[119143,119145,`NSM`],[119155,119162,`BN`],[119163,119170,`NSM`],[119173,119179,`NSM`],[119210,119213,`NSM`],[119273,119274,`ON`],[119296,119361,`ON`],[119362,119364,`NSM`],[119365,119365,`ON`],[119552,119638,`ON`],[120513,120513,`ON`],[120539,120539,`ON`],[120571,120571,`ON`],[120597,120597,`ON`],[120629,120629,`ON`],[120655,120655,`ON`],[120687,120687,`ON`],[120713,120713,`ON`],[120745,120745,`ON`],[120771,120771,`ON`],[120782,120831,`EN`],[121344,121398,`NSM`],[121403,121452,`NSM`],[121461,121461,`NSM`],[121476,121476,`NSM`],[121499,121503,`NSM`],[121505,121519,`NSM`],[122880,122886,`NSM`],[122888,122904,`NSM`],[122907,122913,`NSM`],[122915,122916,`NSM`],[122918,122922,`NSM`],[123023,123023,`NSM`],[123184,123190,`NSM`],[123566,123566,`NSM`],[123628,123631,`NSM`],[123647,123647,`ET`],[124140,124143,`NSM`],[124398,124399,`NSM`],[124643,124643,`NSM`],[124646,124646,`NSM`],[124654,124655,`NSM`],[124661,124661,`NSM`],[124928,125135,`R`],[125136,125142,`NSM`],[125143,125251,`R`],[125252,125258,`NSM`],[125259,126063,`R`],[126064,126143,`AL`],[126144,126207,`R`],[126208,126287,`AL`],[126288,126463,`R`],[126464,126703,`AL`],[126704,126705,`ON`],[126706,126719,`AL`],[126720,126975,`R`],[126976,127019,`ON`],[127024,127123,`ON`],[127136,127150,`ON`],[127153,127167,`ON`],[127169,127183,`ON`],[127185,127221,`ON`],[127232,127242,`EN`],[127243,127247,`ON`],[127279,127279,`ON`],[127338,127343,`ON`],[127405,127405,`ON`],[127584,127589,`ON`],[127744,128728,`ON`],[128732,128748,`ON`],[128752,128764,`ON`],[128768,128985,`ON`],[128992,129003,`ON`],[129008,129008,`ON`],[129024,129035,`ON`],[129040,129095,`ON`],[129104,129113,`ON`],[129120,129159,`ON`],[129168,129197,`ON`],[129200,129211,`ON`],[129216,129217,`ON`],[129232,129240,`ON`],[129280,129623,`ON`],[129632,129645,`ON`],[129648,129660,`ON`],[129664,129674,`ON`],[129678,129734,`ON`],[129736,129736,`ON`],[129741,129756,`ON`],[129759,129770,`ON`],[129775,129784,`ON`],[129792,129938,`ON`],[129940,130031,`ON`],[130032,130041,`EN`],[130042,130042,`ON`],[131070,131071,`BN`],[196606,196607,`BN`],[262142,262143,`BN`],[327678,327679,`BN`],[393214,393215,`BN`],[458750,458751,`BN`],[524286,524287,`BN`],[589822,589823,`BN`],[655358,655359,`BN`],[720894,720895,`BN`],[786430,786431,`BN`],[851966,851967,`BN`],[917502,917759,`BN`],[917760,917999,`NSM`],[918e3,921599,`BN`],[983038,983039,`BN`],[1048574,1048575,`BN`],[1114110,1114111,`BN`]];function gQ(e){if(e<=255)return mQ[e];let t=0,n=hQ.length-1;for(;t<=n;){let r=t+n>>1,i=hQ[r];if(ei[1]))return i[2];t=r+1}}return`L`}var _Q=/[ \t\n\r\f]+/g,vQ=/[\t\n\r\f]| {2,}|^ | $/,yQ=null,bQ=RegExp(`\\p{Script=Arabic}`,`u`),xQ=RegExp(`\\p{M}`,`u`),SQ=RegExp(`\\p{Nd}`,`u`);function CQ(e){return bQ.test(e)}function wQ(e){return e>=19968&&e<=40959||e>=13312&&e<=19903||e>=131072&&e<=173791||e>=173824&&e<=177983||e>=177984&&e<=178207||e>=178208&&e<=183983||e>=183984&&e<=191471||e>=191472&&e<=192093||e>=194560&&e<=195103||e>=196608&&e<=201551||e>=201552&&e<=205743||e>=205744&&e<=210041||e>=63744&&e<=64255||e>=12288&&e<=12351||e>=12352&&e<=12447||e>=12448&&e<=12543||e>=12592&&e<=12687||e>=44032&&e<=55215||e>=65280&&e<=65519}function TQ(e){for(let t=0;t=55296&&n<=56319&&t+1=56320&&r<=57343){if(wQ(r-56320+(n-55296<<10)+65536))return!0;t++;continue}}if(wQ(n))return!0}}return!1}var EQ=new Set([`\xA0`,` `,`⁠`,``]),DQ=new Set([`-`,`‐`,`–`,`—`]);function OQ(e,t){return!(function(e){let t=VQ(e);return t!==null&&EQ.has(t)}(e)||t&&(function(e){let t=VQ(e);return t!==null&&(kQ.has(t)||MQ.has(t))}(e)||function(e){let t=VQ(e);return t!==null&&DQ.has(t)}(e)))}var kQ=new Set(`,...!.:.;.?.、.。.・.).〕.〉.》.」.』.】.〗.〙.〛.ー.々.〻.ゝ.ゞ.ヽ.ヾ`.split(`.`)),AQ=new Set([`"`,`(`,`[`,`{`,`¡`,`¿`,`“`,`‘`,`‚`,`„`,`«`,`‹`,`⸘`,`(`,`〔`,`〈`,`《`,`「`,`『`,`【`,`〖`,`〘`,`〚`]),jQ=new Set([`'`,`’`]),MQ=new Set(`.(,(!(?(:(;(،(؛(؟(।(॥(၊(။(၌(၍(၏()(](}(%("(”(’(»(›(…`.split(`(`)),NQ=new Set([`:`,`.`,`،`,`؛`]),PQ=new Set([`၏`]),FQ=new Set([`”`,`’`,`»`,`›`,`」`,`』`,`】`,`》`,`〉`,`〕`,`)`]);function IQ(e){if(zQ(e))return!0;let t=!1;for(let n of e)if(MQ.has(n)||UQ(n))t=!0;else if(!t||!xQ.test(n))return!1;return t}function LQ(e){for(let t of e)if(!kQ.has(t)&&!MQ.has(t))return!1;return e.length>0}function RQ(e){if(zQ(e))return!0;for(let t of e)if(!(AQ.has(t)||jQ.has(t)||xQ.test(t)||UQ(t)))return!1;return e.length>0}function zQ(e){let t=!1;for(let n of e)if(n!==`\\`&&!xQ.test(n)){if(!(AQ.has(n)||MQ.has(n)||jQ.has(n)))return!1;t=!0}return t}function BQ(e,t){let n=t-1;if(n<=0)return Math.max(n,0);let r=e.charCodeAt(n);if(r<56320||r>57343)return n;let i=n-1;if(i<0)return n;let a=e.charCodeAt(i);return a>=55296&&a<=56319?i:n}function VQ(e){if(e.length===0)return null;let t=BQ(e,e.length);return e.slice(t)}var HQ=[36,37,43,43,92,92,162,165,176,177,1423,1423,1545,1547,1642,1642,2046,2047,2546,2547,2553,2555,2801,2801,3065,3065,3449,3449,3647,3647,6107,6107,8240,8247,8279,8279,8352,8399,8451,8451,8457,8457,8470,8470,8722,8723,43064,43064,65020,65020,65129,65130,65284,65285,65504,65505,65509,65510,73693,73696,123647,123647,126124,126124,126128,126128];function UQ(e){let t=e.codePointAt(0);return t!==void 0&&function(e,t){for(let n=0;n=t[n]&&e<=t[n+1])return!0;return!1}(t,HQ)}function WQ(e){let t=function(e){for(let t of e)if(!xQ.test(t))return t;return null}(e);return t!==null&&SQ.test(t)}function GQ(e){let t=Array.from(e),n=t.length;for(;n>0;){let e=t[n-1];if(xQ.test(e))n--;else{if(!AQ.has(e)&&!jQ.has(e))break;n--}}return n<=0||n===t.length?null:{head:t.slice(0,n).join(``),tail:t.slice(n).join(``)}}function KQ(e,t,n){return n!==`text`||t||e.length!==1||e===`-`||e===`—`?null:e}function qQ(e,t,n,r){let i=t[r],a=e[r];if(i==null)return a;let o=n[r];if(a.length===o)return a;let s=i.repeat(o);return e[r]=s,s}function JQ(e,t){return e&&t!==null&&NQ.has(t)}function YQ(e){let t=VQ(e);return t!==null&&PQ.has(t)}function XQ(e){if(e.length<2||e[0]!==` `)return null;let t=e.slice(1);return RegExp(`^\\p{M}+$`,`u`).test(t)?{space:` `,marks:t}:null}function ZQ(e){let t=e.length;for(;t>0;){let n=BQ(e,t),r=e.slice(n,t);if(FQ.has(r))return!0;if(!MQ.has(r))return!1;t=n}return!1}function QQ(e,t){if(t.preserveOrdinarySpaces||t.preserveHardBreaks){if(e===` `)return`preserved-space`;if(e===` `)return`tab`;if(t.preserveHardBreaks&&e===` +`:``}${t}`;return m=e,h}),_=R(()=>!0===t.showLineNumbers&&!0===t.node?.diff),v=R(()=>_.value&&!0===t.diffInline),b=R(()=>{let e=Number(t.reservedHeightPx);if(!Number.isFinite(e)||e<=0)return;let n=`${Math.ceil(e)}px`;return o.value?{maxHeight:n,overflow:`auto`}:{height:n,minHeight:n,maxHeight:n,overflow:`auto`}}),x=[`diff `,`index `,`--- `,`+++ `,`@@ `];function S(e){return String(e??``).trim().length===0}function C(e,t=`context`,n={}){let r=S(e);return{code:e,kind:r&&t!==`hunk`&&t!==`spacer`&&!n.preserveBlankKind?`context`:t,empty:r}}function w(e){let t=n(e,o.value);return t?t.split(/\r\n|\n|\r/):[]}function T(e,t){return!S(e[t])||tx.some(t=>e.startsWith(t)))}function A(e,t){return t||!e.startsWith(` `)||e.startsWith(` `)?e:` ${e}`}function j(e,t){let n=e.length,r=t.length,i=[],a=0;for(;a=a&&l>=a&&e[c]===t[l];)s.unshift({originalIndex:c,modifiedIndex:l}),c--,l--;let u=c-a+1,d=l-a+1;if(u<=0||d<=0||o.value||(u+1)*(d+1)>15e5)return i.concat(s);let f=d+1,p=new Uint32Array((u+1)*(d+1));for(let n=u-1;n>=0;n--)for(let r=d-1;r>=0;r--){let i=n*f+r;if(e[a+n]===t[a+r])p[i]=p[(n+1)*f+r+1]+1;else{let e=p[(n+1)*f+r],t=p[n*f+r+1];p[i]=e>=t?e:t}}let m=[],h=0,g=0;for(;h=p[h*f+g+1]?h++:g++;return i.concat(m,s)}function M(e){let n=function(){let e=t.diffHideUnchangedRegions;if(e==null||!1===e)return null;let n=!0===e?{}:e;return!1===n.enabled?null:{contextLineCount:Math.max(0,Math.floor(n.contextLineCount??2)),minimumLineCount:Math.max(1,Math.floor(n.minimumLineCount??4))}}();if(!n||e.length<1||e.length>2||e.length===2&&e[0].lines.length!==e[1].lines.length)return e;let r=e[0].lines,i=e[1]?.lines,a=e=>r[e].kind===`context`&&(i===void 0||i[e].kind===`context`&&r[e].code===i[e].code),o=[],s=0;for(;s=n.minimumLineCount){let i=e+(e===0?0:n.contextLineCount),a=t-(t===r.length?0:n.contextLineCount);a-i>=n.minimumLineCount&&o.push({start:i,end:a})}s===e&&s++}return o.length?e.map((e,t)=>{let n=[],r=0;for(let i of o)n.push(...e.lines.slice(r,i.start)),n.push({code:t===0?`Unmodified lines`:``,kind:`collapsed`,empty:!1,key:`${e.key}-collapsed-${i.start}-${i.end}`,number:``}),r=i.end;return n.push(...e.lines.slice(r)),rY(Q({},e),{lines:n})}):e}let N=R(()=>{if(!_.value)return[];let e=function(e){let n=e.some(e=>E(e)),i=e.some(e=>D(e));return n&&i||function(){if(r.value===`diff`)return!0;let e=String(t.node?.raw??``).split(/\r?\n/,1)[0]?.trim()??``;return/^`{3,}\s*diff(?:\s|$)|^~{3,}\s*diff(?:\s|$)/.test(e)}()&&(n||i)}(p.value),n=function(){return t.node?.originalCode!=null||t.node?.updatedCode!=null}();if(v.value)return M([{key:`inline`,className:`markstream-pre__diff-pane--inline`,lines:n?function(e,t){let n=w(e),r=w(t),i=j(n,r);if(i.length>0){let e=[],t=0,a=0;for(let o of i){for(;t=o&&c>=o&&n[s]===r[c];)l.unshift(rY(Q({},C(r[c])),{key:`inline-suffix-${c}`,number:c+1})),s--,c--;for(let e=o;e<=s;e++)a.push(rY(Q({},C(n[e],`removed`,{preserveBlankKind:T(n,e)})),{key:`inline-removed-source-${e}`,number:e+1}));for(let e=o;e<=c;e++)a.push(rY(Q({},C(r[e],`added`,{preserveBlankKind:T(r,e)})),{key:`inline-added-source-${e}`,number:e+1}));return a.concat(l)}(t.node?.originalCode,t.node?.updatedCode):function(e){let t=[],n=1,r=1,i=k(e);for(let[a,o]of e.entries())if(o.startsWith(`@@`)){let e=o.match(/^@@\s+-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@/);e&&(n=Number(e[1]),r=Number(e[2])),t.push(rY(Q({},C(o,`hunk`)),{key:`inline-hunk-${a}`,number:``}))}else if(E(o))t.push(rY(Q({},C(A(o.slice(1),i),`removed`,{preserveBlankKind:!0})),{key:`inline-removed-${a}`,number:n++}));else if(D(o))t.push(rY(Q({},C(A(o.slice(1),i),`added`,{preserveBlankKind:!0})),{key:`inline-added-${a}`,number:r++}));else{let e=i&&o.startsWith(` `)?o.slice(1):o;t.push(rY(Q({},C(e)),{key:`inline-context-${a}`,number:r})),n++,r++}return t}(p.value)}]);if(!e&&n)return function(e,t){let n=w(e),r=w(t),i=j(n,r),a=[],o=[],s=0,c=0,l=0,u=(e,t)=>{let i=Math.max(e-s,t-c);for(let u=0;urY(Q({},e),{key:`original-${t}`,number:t+1}))},{key:`modified`,className:`markstream-pre__diff-pane--modified`,lines:a.map((e,t)=>rY(Q({},e),{key:`modified-${t}`,number:t+1}))}])}),F=R(()=>N.value.some(e=>e.lines.some(e=>e.kind===`collapsed`))),ee=R(()=>{let e=r.value;return e?`Code block: ${e}`:`Code block`}),I=z(null),te=z([]),ne=null,ie=!1,ae=null;function se(e){let t=Number.parseFloat(String(e??``));return Number.isFinite(t)&&t>0?t:0}function ce(e,t){if(!e)return t;if(e.classList.contains(`markstream-pre__diff-line--collapsed`))return 32;let n=e.querySelector(`.markstream-pre__diff-content`)?.getBoundingClientRect()?.height??0;return Math.max(t,Math.ceil(n))}function B(){ie||typeof window>`u`||(ne!=null&&window.cancelAnimationFrame(ne),ne=window.requestAnimationFrame(()=>{ne=null,ie||function(){ne=null;let e=I.value;if(!e||!_.value||v.value||!e.classList.contains(`is-wrap`))return void(te.value.length&&(te.value=[]));let t=function(e){let t=window.getComputedStyle(e),n=se(t.getPropertyValue(`--markstream-pre-diff-line-height`));if(n>0)return n;let r=se(t.lineHeight);return r>0?r:18}(e),n=Array.from(e.querySelectorAll(`.markstream-pre__diff-pane--original .markstream-pre__diff-line`)),r=Array.from(e.querySelectorAll(`.markstream-pre__diff-pane--modified .markstream-pre__diff-line`)),i=Math.max(n.length,r.length),a=[];for(let e=0;e{let n=s[t];return n&&Math.abs(e.rowHeight-n.rowHeight)<=.5&&Math.abs(e.originalHeight-n.originalHeight)<=.5&&Math.abs(e.modifiedHeight-n.modifiedHeight)<=.5})||(te.value=a)}()}))}function le(e){ae?.disconnect(),ae=null,e&&_.value&&!v.value&&typeof ResizeObserver<`u`&&(ae=new ResizeObserver(()=>{B()}),ae.observe(e))}function V(e,t){let n=te.value[e];if(!n)return;let r=t===`original`?n.originalHeight:n.modifiedHeight;return{"--markstream-pre-diff-synced-row-height":`${Math.ceil(n.rowHeight)}px`,"--markstream-pre-diff-content-height":`${Math.ceil(r)}px`}}return l(I,e=>{le(e),i(()=>B())},{flush:`post`}),l([_,v,N],()=>{le(I.value),i(()=>B())},{flush:`post`,immediate:!0}),re(()=>{ie=!0,ne!=null&&(window.cancelAnimationFrame(ne),ne=null),ae?.disconnect(),ae=null}),(e,n)=>(u(),G(`pre`,{ref_key:`preRef`,ref:I,style:oe(b.value),class:H([a.value,{"markstream-pre--line-numbers":t.showLineNumbers,"markstream-pre--diff-preview":_.value,"markstream-pre--diff-inline":v.value,"markstream-pre--diff-collapsed":F.value}]),"aria-busy":o.value,"aria-label":ee.value,"data-language":r.value,"data-markstream-line-numbers":t.showLineNumbers?`1`:void 0,"data-markstream-pre":`1`,tabindex:`0`},[_.value?(u(),G(`code`,RX,[(u(!0),G(P,null,y(N.value,e=>(u(),G(`span`,{key:e.key,class:H([`markstream-pre__diff-pane`,e.className])},[L(`span`,zX,[(u(!0),G(P,null,y(e.lines,(t,r)=>(u(),G(`span`,{key:t.key,class:H([`markstream-pre__diff-line`,[`markstream-pre__diff-line--${t.kind}`,{"markstream-pre__diff-line--empty":t.empty}]]),style:oe(V(r,e.key))},[n[0]||=L(`span`,{class:`markstream-pre__diff-rail`,"aria-hidden":`true`},null,-1),L(`span`,BX,W(t.number),1),L(`span`,VX,[L(`span`,HX,W(t.code),1)])],6))),128))])],2))),128))])):(u(),G(P,{key:1},[t.showLineNumbers?(u(),G(`span`,UX,[L(`span`,{class:`markstream-pre__line-numbers-text`,textContent:W(g.value)},null,8,WX)])):O(``,!0),L(`code`,{translate:`no`,class:`markstream-pre__code`,textContent:W(s.value)},null,8,GX)],64))],14,LX))}});KX.install=e=>{e.component(KX.__name,KX)};var qX={key:0},JX=vY(K({__name:`TextNode`,props:{node:{}},emits:[`copy`],setup(e){let t=e,n=S(),i=g(`markstreamFade`,void 0),a=g(`markstreamTextStreamState`,void 0),o=g(`markstreamStreamVersion`,void 0),s=R(()=>{let e=n.fade;return e===``||!0===e||e===`true`||!1!==e&&e!==`false`&&void 0}),c=R(()=>typeof s.value==`boolean`?s.value:typeof i?.value!=`boolean`||i.value),d=R(()=>{let e=n[`index-key`]??n.indexKey;return e==null||e===``?``:String(e)}),f=z(t.node.content),p=z(``),m=z(0),h;function _(){h?.(),h=void 0}function v(){_(),p.value&&=(f.value+=p.value,``)}l([()=>t.node.content,d,c],([e])=>{let t=String(e??``),n=d.value,r=YK({nextContent:t,persistedContent:n?a?.get(n):void 0,currentState:{settledContent:f.value,streamedDelta:p.value},typewriterEnabled:c.value});f.value=r.settledContent,p.value=r.streamedDelta,r.appended?(m.value+=1,function(){if(!p.value||h||!o)return;let e=o.value;h=l(()=>o.value,t=>{t!==e&&v()},{flush:`sync`})}()):p.value||_(),n&&a?.set(n,t)},{immediate:!0}),r(_);let y=R(()=>m.value%2==0?`text-node-stream-delta--a`:`text-node-stream-delta--b`);return(t,n)=>(u(),G(`span`,{class:H([[e.node.center?`text-node-center`:``],`text-node`])},[f.value?(u(),G(`span`,qX,W(f.value),1)):O(``,!0),p.value?(u(),G(`span`,{key:1,class:H([`text-node-stream-delta`,[y.value]]),onAnimationend:v},W(p.value),35)):O(``,!0)],2))}}),[[`__scopeId`,`data-v-a7e90764`]]);function YX(e,t,n){return K({name:e,inheritAttrs:!1,setup(e,{attrs:r,slots:i}){let a=vX(),o=hX(),c=gX(),u=typeof window<`u`&&x()?.vnode.el?.nodeType===1,d=z(typeof window>`u`||u||!c.value),f=de(null),p=null;function m(e){let t=e&&`$el`in e?e.$el:e;f.value=t instanceof HTMLElement?t:null}return typeof window<`u`&&l([f,c],([e,t],n,r)=>{if(p?.destroy(),p=null,!t||d.value)return void(d.value=!0);if(!e)return;let i=!0,s=a(e,{rootMargin:o?.value.heavyBlockMargin,allowIdle:!1});p=s,d.value=s.isVisible.value,s.whenVisible.then(()=>{i&&p===s&&(d.value=!0)}),r(()=>{i=!1,s.destroy(),p===s&&(p=null)})},{immediate:!0}),re(()=>{p?.destroy(),p=null}),()=>s(d.value?t:n,rY(Q({},r),{ref:m}),i)}})}JX.install=e=>{e.component(JX.__name,JX)};var XX=K({name:`CodeBlockNodeLoading`,inheritAttrs:!1,props:`node.isDark.loading.stream.theme.darkTheme.lightTheme.isShowPreview.monacoOptions.enableFontSizeControl.minWidth.maxWidth.themes.showHeader.showCopyButton.showExpandButton.showPreviewButton.showCollapseButton.showFontSizeButtons.showTooltips.htmlPreviewAllowScripts.htmlPreviewSandbox.customId.estimatedHeightPx.estimatedContentHeightPx.estimatedDiffInline`.split(`.`),emits:[`previewCode`,`copy`],setup(e,{attrs:t}){let n=e;return()=>{let e=Oq(String(n.node?.language??``)),r=jq[e]||(e?e.charAt(0).toUpperCase()+e.slice(1):jq[``]),i=FX(n.node),a=IX(String(n.node?.raw??``),r,i),o=n.monacoOptions,c=i&&(n.estimatedDiffInline??MX(o??{},typeof window>`u`?0:window.innerWidth)),l=o?.diffAppearance,u=l===`dark`||l!==`light`&&!0===n.isDark,d=typeof o?.fontSize==`number`&&Number.isFinite(o.fontSize)&&o.fontSize>0?o.fontSize:12,f=typeof o?.lineHeight==`number`&&Number.isFinite(o.lineHeight)&&o.lineHeight>0?o.lineHeight:d===12?18:Math.max(12,Math.round(1.5*d)),p=typeof o?.tabSize==`number`&&Number.isFinite(o.tabSize)&&o.tabSize>0?o.tabSize:4,m=i?0:8,h=typeof o?.padding?.top==`number`&&Number.isFinite(o.padding.top)&&o.padding.top>=0?o.padding.top:m,g=typeof o?.padding?.bottom==`number`&&Number.isFinite(o.padding.bottom)&&o.padding.bottom>=0?o.padding.bottom:m,_=typeof o?.fontFamily==`string`?o.fontFamily.trim():``,v=Q(Q({fontSize:`${d}px`,lineHeight:`${f}px`,tabSize:p,paddingTop:`${h}px`,paddingBottom:`${g}px`,"--markstream-pre-line-number-top":`${h}px`},i?{"--markstream-pre-diff-line-height":`${f}px`}:{}),_?{"--markstream-code-font-family":_}:{}),y=()=>s(`button`,{class:`code-action-btn inline-flex items-center justify-center p-[var(--ms-action-btn-padding)] rounded leading-none shrink-0`,"aria-hidden":`true`,disabled:!0,tabindex:-1,type:`button`},[s(`svg`,{class:`action-icon`})]),b=!1!==n.isShowPreview&&(e===`html`||e===`svg`),x=!1!==n.showFontSizeButtons&&!1!==n.enableFontSizeControl||!1!==n.showExpandButton||b&&!1!==n.showPreviewButton,S=e=>{if(e!=null)return typeof e==`number`?`${e}px`:String(e)},C=Q(Q(Q({"--markstream-code-layout-character-width":`1ch`},S(n.minWidth)?{minWidth:S(n.minWidth)}:{}),S(n.maxWidth)?{maxWidth:S(n.maxWidth)}:{}),i?{}:{color:`var(--vscode-editor-foreground, var(--markstream-code-fallback-fg, var(--code-fg)))`,backgroundColor:`var(--vscode-editor-background, var(--markstream-code-fallback-bg, var(--code-bg)))`,borderColor:`var(--markstream-code-border-color, var(--code-border))`});return s(`div`,rY(Q({},t),{class:[`code-block-container`,`rounded-lg`,`border`,{dark:!0===n.isDark,"is-rendering":!1!==n.loading,"is-dark":u,"is-diff":i,"is-plain-text":e===``||e===`plaintext`||e===`text`},t.class],style:[C,t.style],"data-markstream-code-block":`1`,"data-markstream-enhanced":`false`,"data-markstream-code-block-state":n.loading?`streaming`:`settled`,"data-markstream-code-loading":`1`}),[!1===n.showHeader?null:s(`div`,{class:`code-block-header flex justify-between items-center border-b px-[var(--ms-inset-panel-x)] py-[var(--ms-inset-panel-y)] border-[var(--code-border)] bg-[var(--code-header-bg)] text-[var(--code-fg)]`},[s(`div`,{class:`code-header-main`},[s(`span`,{class:`icon-slot h-4 w-4 flex-shrink-0`}),s(`div`,{class:`code-header-copy`},[s(`div`,{class:`code-header-title`},a.title),a.caption?s(`div`,{class:`code-header-caption`},a.caption):null])]),s(`div`,{class:`flex items-center gap-0.5`,style:{visibility:`hidden`}},[i?s(`div`,{class:`code-diff-stats`,"aria-hidden":`true`},[s(`span`,{class:`code-diff-stat removed`},`-0`),s(`span`,{class:`code-diff-stat added`},`+0`)]):null,!1===n.showCopyButton?null:y(),!1===n.showCollapseButton?null:y(),x?s(`div`,{class:`relative`},[y()]):null])]),s(`div`,{class:`code-block-shell-content`,style:!1!==n.stream||!1===n.loading?void 0:{display:`none`}},[s(KX,{node:n.node,loading:n.loading,showLineNumbers:!0,reservedHeightPx:i?void 0:n.estimatedContentHeightPx,diffInline:c,diffHideUnchangedRegions:i?jX(o?.diffHideUnchangedRegions):void 0,class:`code-pre-fallback`,style:v,"data-markstream-code-loading":`1`})]),s(`div`,{class:`code-loading-placeholder`,style:!1===n.stream&&!1!==n.loading?void 0:{display:`none`}},[s(`div`,{class:`loading-skeleton`},[s(`div`,{class:`skeleton-line`}),s(`div`,{class:`skeleton-line`}),s(`div`,{class:`skeleton-line short`})])]),s(`span`,{class:`sr-only`,"aria-live":`polite`,role:`status`})])}}}),ZX=YX(`ViewportDeferredCodeBlockNode`,o({loader:()=>iY(null,null,function*(){try{return(yield ge(()=>import(`./CodeBlockNode-dfP7URyJ.js`),__vite__mapDeps([31,1,2,7,32]))).default}catch(e){return console.warn(`[markstream-vue] Optional peer dependency stream-diffs is missing. Falling back to preformatted code rendering. To enable enhanced code block features, please install "stream-diffs".`,e),KX}}),loadingComponent:XX,delay:0,suspensible:!1}),XX),QX=o(()=>iY(null,null,function*(){if(function(){return Reflect.get(globalThis,`process`)?.env}()?.NODE_ENV===`test`&&typeof window<`u`)return e=>s(JX,rY(Q({},e),{node:{type:`text`,content:e.node.raw??`$${e.node.content??``}$`,raw:e.node.raw??`$${e.node.content??``}$`}}));try{return yield Gq(),(yield ge(()=>import(`./index7-D3XnABVb.js`),__vite__mapDeps([33,1,2]))).default}catch(e){console.warn(`[markstream-vue] Optional peer dependencies for MathInlineNode are missing. Falling back to text rendering. To enable full math rendering features, please install "katex".`,e)}return e=>s(JX,rY(Q({},e),{node:{type:`text`,content:e.node.raw??`$${e.node.content??``}$`,raw:e.node.raw??`$${e.node.content??``}$`}}))})),$X=o(()=>iY(null,null,function*(){try{return yield Gq(),(yield ge(()=>import(`./index6-DOjSPjd-.js`),__vite__mapDeps([34,1,2]))).default}catch(e){console.warn(`[markstream-vue] Optional peer dependencies for MathBlockNode are missing. Falling back to text rendering. To enable full math rendering features, please install "katex".`,e)}return e=>s(JX,rY(Q({},e),{node:{type:`text`,content:e.node.raw??`$$${e.node.content??``}$$`,raw:e.node.raw??`$$${e.node.content??``}$$`}}))})),eZ=vY(K({__name:`ReferenceNode`,props:{node:{},messageId:{},threadId:{}},emits:[`click`,`mouseEnter`,`mouseLeave`],setup:e=>(t,n)=>(u(),G(`span`,{class:`reference-node cursor-pointer text-xs rounded-md px-1.5 mx-0.5`,role:`button`,tabindex:`0`,onClick:n[0]||=n=>t.$emit(`click`,n,e.node.id,e.messageId,e.threadId),onMouseenter:n[1]||=n=>t.$emit(`mouseEnter`,n,e.node.id,e.messageId,e.threadId),onMouseleave:n[2]||=n=>t.$emit(`mouseLeave`,n,e.node.id,e.messageId,e.threadId)},W(e.node.id),33))}),[[`__scopeId`,`data-v-775c65e4`]]);eZ.install=e=>{e.component(eZ.__name,eZ)};var tZ={class:`superscript-node`},nZ=vY(K({__name:`SuperscriptNode`,props:{node:{},customId:{},indexKey:{}},setup(e){let t=e,n=mY(()=>t.customId),r=R(()=>Q({text:JX,inline_code:BY,link:pZ,html_inline:LY,strong:oZ,emphasis:yZ,footnote_reference:wY,strikethrough:cZ,highlight:_Z,insert:hZ,subscript:iZ,emoji:xY,math_inline:QX,reference:eZ},n.value));return(n,i)=>(u(),G(`sup`,tZ,[(u(!0),G(P,null,y(e.node.children,(n,i)=>(u(),I(B(kX),{key:`${e.indexKey||`superscript`}-${i}`,components:r.value,node:n,"custom-id":t.customId,"index-key":`${e.indexKey||`superscript`}-${i}`,"fallback-to-text":``},null,8,[`components`,`node`,`custom-id`,`index-key`]))),128))]))}}),[[`__scopeId`,`data-v-24160b22`]]);nZ.install=e=>{e.component(nZ.__name,nZ)};var rZ={class:`subscript-node`},iZ=vY(K({__name:`SubscriptNode`,props:{node:{},customId:{},indexKey:{}},setup(e){let t=e,n=mY(()=>t.customId),r=R(()=>Q({text:JX,inline_code:BY,link:pZ,html_inline:LY,strong:oZ,emphasis:yZ,footnote_reference:wY,strikethrough:cZ,highlight:_Z,insert:hZ,superscript:nZ,emoji:xY,math_inline:QX,reference:eZ},n.value));return(n,i)=>(u(),G(`sub`,rZ,[(u(!0),G(P,null,y(e.node.children,(n,i)=>(u(),I(B(kX),{key:`${e.indexKey||`subscript`}-${i}`,components:r.value,node:n,"custom-id":t.customId,"index-key":`${e.indexKey||`subscript`}-${i}`,"fallback-to-text":``},null,8,[`components`,`node`,`custom-id`,`index-key`]))),128))]))}}),[[`__scopeId`,`data-v-197fa13b`]]);iZ.install=e=>{e.component(iZ.__name,iZ)};var aZ={class:`strong-node`},oZ=vY(K({__name:`StrongNode`,props:{node:{},customId:{},indexKey:{}},setup(e){let t=e,n=mY(()=>t.customId),r=R(()=>Q({text:JX,inline_code:BY,link:pZ,html_inline:LY,emphasis:yZ,strikethrough:cZ,highlight:_Z,insert:hZ,subscript:iZ,superscript:nZ,emoji:xY,footnote_reference:wY,math_inline:QX,reference:eZ},n.value));return(n,i)=>(u(),G(`strong`,aZ,[(u(!0),G(P,null,y(e.node.children,(n,i)=>(u(),I(B(kX),{key:`${e.indexKey||`strong`}-${i}`,components:r.value,node:n,"index-key":`${e.indexKey||`strong`}-${i}`,"custom-id":t.customId},null,8,[`components`,`node`,`index-key`,`custom-id`]))),128))]))}}),[[`__scopeId`,`data-v-a8647104`]]);oZ.install=e=>{e.component(oZ.__name,oZ)};var sZ={class:`strikethrough-node`},cZ=vY(K({__name:`StrikethroughNode`,props:{node:{},customId:{},indexKey:{}},setup(e){let t=e,n=mY(()=>t.customId),r=R(()=>Q({text:JX,inline_code:BY,link:pZ,html_inline:LY,strong:oZ,emphasis:yZ,highlight:_Z,insert:hZ,subscript:iZ,superscript:nZ,emoji:xY,footnote_reference:wY,math_inline:QX,reference:eZ},n.value));return(n,i)=>(u(),G(`del`,sZ,[(u(!0),G(P,null,y(e.node.children,(n,i)=>(u(),I(B(kX),{key:`${e.indexKey||`strikethrough`}-${i}`,components:r.value,node:n,"custom-id":t.customId,"index-key":`${e.indexKey||`strikethrough`}-${i}`},null,8,[`components`,`node`,`custom-id`,`index-key`]))),128))]))}}),[[`__scopeId`,`data-v-b7a531fa`]]);cZ.install=e=>{e.component(cZ.__name,cZ)};var lZ=[`href`,`title`,`aria-label`,`aria-hidden`,`target`,`rel`],uZ=[`aria-hidden`],dZ={class:`link-text-wrapper relative inline-flex`},fZ={class:`leading-[normal] link-text`},pZ=vY(K({__name:`LinkNode`,props:{node:{},indexKey:{},customId:{},showTooltip:{type:Boolean,default:!0},color:{},underlineHeight:{},underlineBottom:{},animationDuration:{},animationOpacity:{},animationTiming:{},animationIteration:{}},setup(e){let t=e,n=g(`markstreamShowTooltips`,void 0),r=R(()=>{let e=n?.value;return typeof e==`boolean`?e:t.showTooltip}),i=R(()=>{let e=t.underlineBottom===void 0?`-3px`:typeof t.underlineBottom==`number`?`${t.underlineBottom}px`:String(t.underlineBottom),n=t.animationOpacity??.35,r=Math.max(.12,Math.min(.5*n,n)),i={"--underline-height":`${t.underlineHeight??2}px`,"--underline-bottom":e,"--underline-opacity":String(n),"--underline-rest-opacity":String(r),"--underline-duration":`${t.animationDuration??1.6}s`,"--underline-timing":t.animationTiming??`ease-in-out`,"--underline-iteration":typeof t.animationIteration==`number`?String(t.animationIteration):t.animationIteration??`infinite`};return t.color&&(i[`--link-color`]=t.color),i}),a=mY(()=>t.customId),o=R(()=>Q({text:JX,strong:oZ,strikethrough:cZ,emphasis:yZ,image:DX,html_inline:LY,inline_code:BY},a.value)),s=S(),c=R(()=>{let e=t.node?.attrs;if(!e||typeof e!=`object`)return{};let n={};if(Array.isArray(e))for(let t of e)Array.isArray(t)&&t[0]&&(n[String(t[0])]=String(t[1]??``));else for(let[t,r]of Object.entries(e))t&&r!=null&&!1!==r&&(n[t]=!0===r?``:String(r));return DY(n,`safe`,`a`)}),l=R(()=>Q(Q({},s),c.value)),d=R(()=>DY({href:String(t.node?.href??``)},`safe`,`a`).href),f=R(()=>{if(!d.value)return;let e=l.value.target;return(typeof e==`string`?e.trim():String(e??``).trim())||(cL(d.value)?`_blank`:void 0)}),p=R(()=>String(f.value??``).trim().toLowerCase()===`_blank`),m=R(()=>{if(!d.value)return;let e=l.value.rel,t=new Set((typeof e==`string`?e:String(e??``)).split(/\s+/).filter(Boolean)),n=new Set(Array.from(t).filter(e=>e.toLowerCase()!==`opener`));return p.value&&(n.add(`noopener`),n.add(`noreferrer`)),n.size>0?Array.from(n).join(` `):void 0}),h=R(()=>{let e=Q({},l.value);return delete e.title,delete e.href,delete e.target,delete e.rel,e});function _(){r.value&&rX()}let v=R(()=>{let e=t.node?.title;return typeof e==`string`&&e.trim().length>0?e:String(d.value??``)});return(n,a)=>e.node.loading?(u(),G(`span`,ie({key:1,class:`link-loading inline-flex items-baseline gap-1.5`,"aria-hidden":e.node.loading?`false`:`true`},B(s),{style:i.value}),[L(`span`,dZ,[L(`span`,fZ,[b(B(JX),{class:`leading-[normal] link-text`,node:{type:`text`,content:String(e.node.text??``),raw:String(e.node.text??``)},"index-key":`${e.indexKey||`link-text`}-loading`},null,8,[`node`,`index-key`])]),a[1]||=L(`span`,{class:`link-loading-indicator`,"aria-hidden":`true`},null,-1)])],16,uZ)):(u(),G(`a`,ie({key:0,class:`link-node`,href:d.value,title:r.value?``:v.value,"aria-label":`Link: ${v.value}`,"aria-hidden":e.node.loading?`true`:`false`,target:f.value,rel:m.value},h.value,{style:i.value,onMouseenter:a[0]||=e=>function(e){if(!r.value)return;let n=e,i=n?.clientX!=null&&n?.clientY!=null?{x:n.clientX,y:n.clientY}:void 0,a=t.node?.title||(d.value?.includes(`xn--`)&&(t.node?.text)?.includes(`://`)?t.node.text:d.value)||``;nX(e.currentTarget,a,`top`,!1,i)}(e),onMouseleave:_}),[(u(!0),G(P,null,y(e.node.children,(n,r)=>(u(),I(B(kX),{key:`${e.indexKey||`emphasis`}-${r}`,components:o.value,node:n,"custom-id":t.customId,"index-key":`${e.indexKey||`link-text`}-${r}`},null,8,[`components`,`node`,`custom-id`,`index-key`]))),128))],16,lZ))}}),[[`__scopeId`,`data-v-367e6ca4`]]);pZ.install=e=>{e.component(pZ.__name,pZ)};var mZ={class:`insert-node`},hZ=vY(K({__name:`InsertNode`,props:{node:{},customId:{},indexKey:{}},setup(e){let t=e,n=mY(()=>t.customId),r=R(()=>Q({text:JX,inline_code:BY,link:pZ,html_inline:LY,strong:oZ,emphasis:yZ,strikethrough:cZ,highlight:_Z,subscript:iZ,superscript:nZ,emoji:xY,footnote_reference:wY,math_inline:QX,reference:eZ},n.value));return(n,i)=>(u(),G(`ins`,mZ,[(u(!0),G(P,null,y(e.node.children,(n,i)=>(u(),I(B(kX),{key:`${e.indexKey||`insert`}-${i}`,components:r.value,node:n,"custom-id":t.customId,"index-key":`${e.indexKey||`insert`}-${i}`},null,8,[`components`,`node`,`custom-id`,`index-key`]))),128))]))}}),[[`__scopeId`,`data-v-1e2c29d4`]]);hZ.install=e=>{e.component(hZ.__name,hZ)};var gZ={class:`highlight-node`},_Z=vY(K({__name:`HighlightNode`,props:{node:{},customId:{},indexKey:{}},setup(e){let t=e,n=mY(()=>t.customId),r=R(()=>Q({text:JX,inline_code:BY,link:pZ,html_inline:LY,strong:oZ,emphasis:yZ,strikethrough:cZ,insert:hZ,subscript:iZ,superscript:nZ,emoji:xY,footnote_reference:wY,math_inline:QX,reference:eZ},n.value));return(n,i)=>(u(),G(`mark`,gZ,[(u(!0),G(P,null,y(e.node.children,(n,i)=>(u(),I(B(kX),{key:`${e.indexKey||`highlight`}-${i}`,components:r.value,node:n,"custom-id":t.customId,"index-key":`${e.indexKey||`highlight`}-${i}`},null,8,[`components`,`node`,`custom-id`,`index-key`]))),128))]))}}),[[`__scopeId`,`data-v-7a62982a`]]);_Z.install=e=>{e.component(_Z.__name,_Z)};var vZ={class:`emphasis-node`},yZ=vY(K({__name:`EmphasisNode`,props:{node:{},customId:{},indexKey:{}},setup(e){let t=e,n=mY(()=>t.customId),r=R(()=>Q({text:JX,inline_code:BY,link:pZ,html_inline:LY,strong:oZ,strikethrough:cZ,highlight:_Z,insert:hZ,subscript:iZ,superscript:nZ,emoji:xY,footnote_reference:wY,math_inline:QX,reference:eZ},n.value));return(n,i)=>(u(),G(`em`,vZ,[(u(!0),G(P,null,y(e.node.children,(n,i)=>(u(),I(B(kX),{key:`${e.indexKey||`emphasis`}-${i}`,components:r.value,node:n,"custom-id":t.customId,"index-key":`${e.indexKey||`emphasis`}-${i}`},null,8,[`components`,`node`,`custom-id`,`index-key`]))),128))]))}}),[[`__scopeId`,`data-v-2a5aafbf`]]);yZ.install=e=>{e.component(yZ.__name,yZ)};var bZ={class:`hard-break`},xZ=vY(K({__name:`HardBreakNode`,props:{node:{}},setup:e=>(e,t)=>(u(),G(`br`,bZ))}),[[`__scopeId`,`data-v-50c58f70`]]);xZ.install=e=>{e.component(xZ.__name,xZ)};var SZ=K({__name:`SimpleInlineRenderer`,props:{nodes:{},customId:{},indexKey:{}},setup(e){let t=e,n=v({checkbox:yY,checkbox_input:yY,emoji:xY,emphasis:yZ,hardbreak:xZ,highlight:_Z,inline_code:BY,insert:hZ,link:pZ,reference:eZ,strikethrough:cZ,strong:oZ,subscript:iZ,superscript:nZ,text:JX}),r=mY(()=>t.customId),i=R(()=>{let e=r.value;return Object.keys(e).length>0?Q(Q({},n),e):n});return(n,r)=>(u(!0),G(P,null,y(e.nodes,(n,r)=>(u(),I(B(kX),{key:r,components:i.value,node:n,"custom-id":t.customId,"index-key":`${e.indexKey||`inline`}-${r}`},null,8,[`components`,`node`,`custom-id`,`index-key`]))),128))}});function CZ(e){if(!e||typeof e!=`object`)return!1;let t=`|${e.type}|`;if(!`|checkbox|checkbox_input|emoji|emphasis|hardbreak|highlight|inline_code|insert|link|reference|strikethrough|strong|subscript|superscript|text|`.includes(t))return!1;if(!`|emphasis|highlight|insert|link|strikethrough|strong|subscript|superscript|`.includes(t))return!0;let n=e.children;return Array.isArray(n)&&n.every(CZ)}function wZ(e,t=!0,n=!1){if(!e||!n&&e.length===0)return null;if(e.every(CZ))return e;if(!t||e.length!==1)return null;let r=e[0];if(r?.type!==`paragraph`||!Array.isArray(r.children))return null;let i=r.children;return(n||i.length>0)&&i.every(CZ)?i:null}function TZ(e){if(!e?.length)return null;let t=``;for(let n of e){if(n?.type!==`text`||!0===n.center)return null;t+=String(n.content??n.raw??``)}return t}var EZ=[`cite`],DZ={key:0,dir:`auto`,class:`paragraph-node`},OZ=[`custom-id`],kZ=vY(K({__name:`BlockquoteNode`,props:{node:{},indexKey:{},typewriter:{type:Boolean},fade:{type:Boolean},customId:{},showTooltips:{type:Boolean}},emits:[`copy`],setup(e){let t=e,n=mY(()=>t.customId),r=R(()=>!!n.value.paragraph),i=R(()=>!!n.value.text),a=R(()=>wZ(t.node.children,!r.value)),o=R(()=>!1!==t.fade||i.value?null:TZ(a.value));return p(`markstreamShowTooltips`,R(()=>t.showTooltips)),p(`markstreamFade`,R(()=>t.fade)),(n,r)=>(u(),G(`blockquote`,{class:`blockquote blockquote-node`,dir:`auto`,cite:e.node.cite},[a.value?(u(),G(`p`,DZ,[o.value===null?(u(),I(B(SZ),{key:1,nodes:a.value,"custom-id":t.customId,"index-key":`blockquote-${t.indexKey}-paragraph`},null,8,[`nodes`,`custom-id`,`index-key`])):(u(),G(`span`,{key:0,class:`text-node`,"custom-id":t.customId},W(o.value),9,OZ))])):(u(),I(B(O0),{key:1,"show-tooltips":t.showTooltips,"index-key":`blockquote-${t.indexKey}`,nodes:t.node.children||[],"custom-id":t.customId,typewriter:t.typewriter,fade:t.fade,onCopy:r[0]||=e=>n.$emit(`copy`,e)},null,8,[`show-tooltips`,`index-key`,`nodes`,`custom-id`,`typewriter`,`fade`]))],8,EZ))}}),[[`__scopeId`,`data-v-abfecebc`]]);kZ.install=e=>{e.component(kZ.__name,kZ)};var AZ={class:`definition-list`},jZ={class:`definition-term`},MZ={class:`definition-desc`},NZ=vY(K({__name:`DefinitionListNode`,props:{node:{},indexKey:{},typewriter:{type:Boolean},fade:{type:Boolean},customId:{}},emits:[`copy`],setup(e){let t=e;return(e,n)=>(u(),G(`dl`,AZ,[(u(!0),G(P,null,y(t.node.items,(r,i)=>(u(),G(P,{key:i},[L(`dt`,jZ,[b(B(O0),{"index-key":`definition-term-${t.indexKey}-${i}`,nodes:r.term,"custom-id":t.customId,typewriter:t.typewriter,fade:t.fade,onCopy:n[0]||=t=>e.$emit(`copy`,t)},null,8,[`index-key`,`nodes`,`custom-id`,`typewriter`,`fade`])]),L(`dd`,MZ,[b(B(O0),{"index-key":`definition-desc-${t.indexKey}-${i}`,nodes:r.definition,"custom-id":t.customId,typewriter:t.typewriter,fade:t.fade,onCopy:n[1]||=t=>e.$emit(`copy`,t)},null,8,[`index-key`,`nodes`,`custom-id`,`typewriter`,`fade`])])],64))),128))]))}}),[[`__scopeId`,`data-v-4e103b30`]]);NZ.install=e=>{e.component(NZ.__name,NZ)};var PZ=[`href`,`title`],FZ=vY(K({__name:`FootnoteAnchorNode`,props:{node:{}},setup(e){let t=e;function n(e){if(e.preventDefault(),typeof document>`u`)return;let n=`fnref-${String(t.node.id??``)}`,r=document.getElementById(n);r&&r.scrollIntoView({behavior:`smooth`,block:`center`})}return(t,r)=>(u(),G(`a`,{class:`footnote-anchor text-sm hover:underline cursor-pointer`,href:`#fnref-${e.node.id}`,title:`返回引用 ${e.node.id}`,onClick:n},` ↩︎ `,8,PZ))}}),[[`__scopeId`,`data-v-e1eb37b6`]]);FZ.install=e=>{e.component(FZ.__name,FZ)};var IZ=[`id`],LZ={class:`flex-1`},RZ=K({__name:`FootnoteNode`,props:{node:{},indexKey:{},typewriter:{type:Boolean},fade:{type:Boolean},customId:{}},emits:[`copy`],setup(e){let t=e;return(n,r)=>(u(),G(`div`,{id:`fnref--${e.node.id}`,class:`footnote-node flex text-sm leading-relaxed border-t border-[var(--footnote-border)] pt-2`},[L(`div`,LZ,[b(B(O0),{"index-key":`footnote-${t.indexKey}`,nodes:t.node.children,"custom-id":t.customId,typewriter:t.typewriter,fade:t.fade,onCopy:r[0]||=e=>n.$emit(`copy`,e)},null,8,[`index-key`,`nodes`,`custom-id`,`typewriter`,`fade`])])],8,IZ))}});RZ.install=e=>{e.component(RZ.__name,RZ)};var zZ=[`custom-id`],BZ=vY(K({__name:`HeadingNode`,props:{node:{},customId:{},indexKey:{}},setup(e){let t=e,n=mY(()=>t.customId),r=g(`markstreamFade`,void 0),i=R(()=>!1!==r?.value||n.value.text?null:TZ(t.node.children)),a=R(()=>Q({text:JX,inline_code:BY,link:pZ,image:DX,strong:oZ,emphasis:yZ,strikethrough:cZ,highlight:_Z,insert:hZ,subscript:iZ,superscript:nZ,emoji:xY,checkbox:yY,checkbox_input:yY,footnote_reference:wY,hardbreak:xZ,math_inline:QX,reference:eZ},n.value));return(n,r)=>(u(),I(C(`h${e.node.level}`),ie({class:[`heading-node`,[`heading-${e.node.level}`]],dir:`auto`},e.node.attrs),{default:V(()=>[i.value===null?(u(!0),G(P,{key:1},y(e.node.children,(n,r)=>(u(),I(B(kX),{key:r,components:a.value,"custom-id":t.customId,node:n,"index-key":`${e.indexKey||`heading`}-${r}`},null,8,[`components`,`custom-id`,`node`,`index-key`]))),128)):(u(),G(`span`,{key:0,class:`text-node`,"custom-id":t.customId},W(i.value),9,zZ))]),_:1},16,[`class`]))}}),[[`__scopeId`,`data-v-7122dbe1`]]),VZ=BZ;VZ.install=e=>{e.component(BZ.__name,BZ)};var HZ={key:0,dir:`auto`,class:`paragraph-node`},UZ=[`custom-id`],WZ={dir:`auto`,class:`paragraph-node`},GZ=[`custom-id`],KZ=vY(K({__name:`ListItemNode`,props:{node:{},item:{},indexKey:{},customId:{},typewriter:{type:Boolean},fade:{type:Boolean},showTooltips:{type:Boolean},value:{},isDark:{type:Boolean}},emits:[`copy`],setup(e){let t=e,n=R(()=>t.node??t.item),r=mY(()=>t.customId),i=R(()=>!!r.value.paragraph),a=R(()=>!!r.value.text),o=R(()=>wZ(n.value?.children,!i.value)),s=R(()=>{if(i.value)return null;let e=n.value?.children;if(!Array.isArray(e)||e.length<2)return null;let t=e[0];if(t?.type!==`paragraph`||!Array.isArray(t.children))return null;let r=e.slice(1);if(!r.every(e=>e?.type===`list`))return null;let a=wZ([t]);return a?{paragraphChildren:a,nestedLists:r}:null});function c(){return!1===t.fade&&!a.value}let l=R(()=>c()?TZ(o.value):null),d=R(()=>c()?TZ(s.value?.paragraphChildren):null),f=Object.freeze({}),m=R(()=>{let{value:e}=t;return typeof e==`number`&&Number.isFinite(e)?{value:e}:f});return p(`markstreamShowTooltips`,R(()=>t.showTooltips)),p(`markstreamFade`,R(()=>t.fade)),(e,r)=>(u(),G(`li`,ie({class:`list-item`,dir:`auto`},m.value),[o.value?(u(),G(`p`,HZ,[l.value===null?(u(),I(B(SZ),{key:1,nodes:o.value,"custom-id":t.customId,"index-key":`list-item-${t.indexKey}-paragraph`},null,8,[`nodes`,`custom-id`,`index-key`])):(u(),G(`span`,{key:0,class:`text-node`,"custom-id":t.customId},W(l.value),9,UZ))])):s.value?(u(),G(P,{key:1},[L(`p`,WZ,[d.value===null?(u(),I(B(SZ),{key:1,nodes:s.value.paragraphChildren,"custom-id":t.customId,"index-key":`list-item-${t.indexKey}-paragraph`},null,8,[`nodes`,`custom-id`,`index-key`])):(u(),G(`span`,{key:0,class:`text-node`,"custom-id":t.customId},W(d.value),9,GZ))]),(u(!0),G(P,null,y(s.value.nestedLists,(n,i)=>(u(),I(B(O0),{key:i,nodes:[n],"custom-id":t.customId,"index-key":`list-item-${t.indexKey}-nested-${i}`,"show-tooltips":t.showTooltips,typewriter:t.typewriter,fade:t.fade,"is-dark":t.isDark,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0,onCopy:r[0]||=t=>e.$emit(`copy`,t)},null,8,[`nodes`,`custom-id`,`index-key`,`show-tooltips`,`typewriter`,`fade`,`is-dark`]))),128))],64)):(u(),I(B(O0),{key:2,"show-tooltips":t.showTooltips,"index-key":`list-item-${t.indexKey}`,nodes:n.value?.children??[],"custom-id":t.customId,typewriter:t.typewriter,fade:t.fade,"is-dark":t.isDark,"batch-rendering":!1,onCopy:r[1]||=t=>e.$emit(`copy`,t)},null,8,[`show-tooltips`,`index-key`,`nodes`,`custom-id`,`typewriter`,`fade`,`is-dark`]))],16))}}),[[`__scopeId`,`data-v-617214f9`]]);KZ.install=e=>{e.component(KZ.__name,KZ)};var qZ=vY(K({__name:`ListNode`,props:{node:{},customId:{},indexKey:{},typewriter:{type:Boolean},fade:{type:Boolean},showTooltips:{type:Boolean},isDark:{type:Boolean}},emits:[`copy`],setup(e){let t=mY(()=>e.customId),n=R(()=>t.value.list_item||KZ);return(t,r)=>(u(),I(C(e.node.ordered?`ol`:`ul`),{class:H([`list-node`,{"list-decimal":e.node.ordered,"list-disc":!e.node.ordered}])},{default:V(()=>[(u(!0),G(P,null,y(e.node.items,(i,a)=>(u(),I(C(n.value),ie({key:`${e.indexKey||`list`}-${a}`},{ref_for:!0},{showTooltips:e.showTooltips},{node:i,"custom-id":e.customId,"index-key":`${e.indexKey||`list`}-${a}`,typewriter:e.typewriter,fade:e.fade,"is-dark":e.isDark,value:e.node.ordered?(e.node.start??1)+a:void 0,onCopy:r[0]||=e=>t.$emit(`copy`,e)}),null,16,[`node`,`custom-id`,`index-key`,`typewriter`,`fade`,`is-dark`,`value`]))),128))]),_:1},8,[`class`]))}}),[[`__scopeId`,`data-v-99cb95e0`]]);qZ.install=e=>{e.component(qZ.__name,qZ)};var JZ={key:2,class:`html-block-node__raw`},YZ=[`innerHTML`],XZ={key:1,class:`html-block-node__placeholder`},ZZ=vY(K({__name:`HtmlBlockNode`,props:{node:{},customId:{},htmlPolicy:{}},setup(e){let t=e,n=g(`markstreamHtmlPolicy`,void 0),r=g(`markstreamNestedRendererProps`,void 0),i=R(()=>t.htmlPolicy??n?.value??`safe`),a=R(()=>{let e=r?.value??{};return rY(Q({},e),{customId:t.customId??e.customId,htmlPolicy:i.value})}),s=o({loader:()=>Promise.resolve().then(()=>k0),suspensible:!1}),d=R(()=>{let e=dK(t.node.attrs,i.value);if(!e)return;let n=uK(e);return Object.keys(n).length>0?n:void 0}),f=R(()=>{let e=String(t.node.tag||``).trim(),n=dK(t.node.attrs,i.value,e);if(!n)return;let r=uK(n);return Object.keys(r).length>0?r:void 0}),p=mY(()=>t.customId),m=K({name:`DynamicRenderer`,props:{nodes:{type:Array,required:!0}},render(){return this.nodes}}),h=z(null),_=z(typeof window>`u`),v=z(t.node.content),y=R(()=>Array.isArray(t.node.children)?t.node.children:[]),b=R(()=>String(t.node.tag||`div`)),x=R(()=>{if(b.value.trim().toLowerCase()!==`details`||t.node.attrs?.some(([e])=>String(e).toLowerCase()===`open`))return null;let e=y.value[0];return e?.type===`html_block`&&String(e.tag||``).toLowerCase()===`summary`?e:null}),S=R(()=>TZ(x.value?.children)),w=R(()=>{let e=x.value;if(!e)return;let t=dK(e.attrs,i.value,`summary`);if(!t)return;let n=uK(t);return Object.keys(n).length>0?n:void 0}),T=R(()=>S.value==null?y.value:y.value.slice(1)),E=R(()=>{let e=b.value.trim().toLowerCase();return JI.has(e)||$G(e,i.value)}),D=R(()=>y.value.length>0&&!!t.node.tag&&!E.value),k=R(()=>{if(D.value)return{mode:`structured`};if(!_.value)return{mode:`html`,content:v.value??``};let e=v.value??t.node.content;if(!e)return{mode:`html`,content:``};if(i.value===`escape`)return{mode:`html`,content:yK(e,i.value)};if(t.node.loading){let n=FY(e,p.value,i.value);return n===null?{mode:`text`,content:t.node.raw??e}:{mode:`dynamic`,nodes:n}}if(!PY(e,p.value))return{mode:`html`,content:yK(e,i.value)};let n=FY(e,p.value,i.value);return n===null?{mode:`html`,content:yK(e,i.value)}:{mode:`dynamic`,nodes:n}}),A=vX(),j=hX(),M=gX(),F=de(null),ee=!!t.node.loading;return typeof window<`u`?(l([()=>h.value,()=>j?.value.heavyBlockMargin,()=>j?.value.rootMargin],([e],n,r)=>{var i,a;if((a=(i=F.value)?.destroy)==null||a.call(i),F.value=null,!ee)return _.value=!0,void(v.value=t.node.content);if(!e)return void(_.value=!1);let o=!0,s=j?.value.heavyBlockMargin??j?.value.rootMargin??mX,c=A(e,{rootMargin:s,allowIdle:!M.value});F.value=c,_.value=_.value||c.isVisible.value,c.whenVisible.then(()=>{o&&F.value===c&&(_.value=!0)}),r(()=>{o=!1,c.destroy(),F.value===c&&(F.value=null)})},{immediate:!0}),l(()=>t.node.content,e=>{ee&&!_.value||(v.value=e)})):_.value=!0,re(()=>{var e,t;(t=(e=F.value)?.destroy)==null||t.call(e),F.value=null}),(t,n)=>(u(),I(C(D.value?b.value:`div`),ie({ref_key:`htmlRef`,ref:h,class:`html-block-node`,"data-markstream-viewport-pending":B(M)&&!_.value?`true`:void 0},D.value?f.value:void 0),{default:V(()=>[_.value?(u(),G(P,{key:0},[k.value.mode===`structured`?(u(),G(P,{key:0},[S.value===null?(u(),I(B(s),ie({key:1},a.value,{nodes:y.value,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`nodes`])):(u(),G(P,{key:0},[L(`summary`,N(c(w.value)),W(S.value),17),T.value.length?(u(),I(B(s),ie({key:0},a.value,{nodes:T.value,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`nodes`])):O(``,!0)],64))],64)):k.value.mode===`dynamic`?(u(),I(B(m),{key:1,nodes:k.value.nodes},null,8,[`nodes`])):k.value.mode===`text`?(u(),G(`pre`,JZ,W(k.value.content),1)):(u(),G(`div`,ie({key:3},d.value,{innerHTML:k.value.content}),null,16,YZ))],64)):(u(),G(`div`,XZ,[he(t.$slots,`placeholder`,{node:e.node},()=>[n[0]||=L(`span`,{class:`html-block-node__placeholder-bar`},null,-1),n[1]||=L(`span`,{class:`html-block-node__placeholder-bar w-4/5`},null,-1),n[2]||=L(`span`,{class:`html-block-node__placeholder-bar w-2/3`},null,-1)],!0)]))]),_:3},16,[`data-markstream-viewport-pending`]))}}),[[`__scopeId`,`data-v-e140a874`]]);ZZ.install=e=>{e.component(ZZ.__name,ZZ)};var QZ={dir:`auto`,class:`paragraph-node`},$Z=[`custom-id`],eQ=vY(K({__name:`ParagraphNode`,props:{node:{},customId:{},indexKey:{},customHtmlTags:{},parseOptions:{},customMarkdownIt:{type:Function}},setup(e){let t=e,n=mY(()=>t.customId),r=g(`markstreamHtmlPolicy`,void 0),i=g(`markstreamFade`,void 0),a=g(`markstreamParseOptions`,void 0),s=g(`markstreamCustomMarkdownIt`,void 0),c=g(`markstreamNestedRendererProps`,void 0),l=R(()=>r?.value??`safe`),d=R(()=>t.parseOptions??a?.value),f=R(()=>t.customMarkdownIt??s?.value),p=R(()=>t.customHtmlTags??c?.value?.customHtmlTags),m=R(()=>{let e=c?.value??{};return rY(Q({},e),{customId:t.customId??e.customId,customHtmlTags:p.value,parseOptions:d.value,customMarkdownIt:f.value,htmlPolicy:l.value})}),h=o({loader:()=>Promise.resolve().then(()=>k0),suspensible:!1});function _(e){return e.type===`text`&&String(e.content??``).trim()===``}let v=R(()=>t.node.children.filter(e=>!_(e))),b=R(()=>v.value.length>0&&v.value.every(e=>e.type===`image`||function(e){let t=function(e){return e.type===`link`&&Array.isArray(e.children)?e.children.filter(e=>!_(e)):[]}(e);return t.length===1&&t[0]?.type===`image`}(e))),x=R(()=>new Set(xL(p.value))),S=R(()=>{if(!b.value||v.value.length<=1)return t.node.children;let e=[];for(let n=0;n0,a=t.node.children.slice(n+1).some(e=>!_(e));i&&a&&e.push(rY(Q({},r),{content:` `,raw:` `}))}return e}),w=R(()=>!1===i?.value&&!n.value.text),T=R(()=>w.value?TZ(S.value):null);function E(e,n){return{node:e,"index-key":`${t.indexKey}-${n}`,"custom-id":t.customId,"custom-html-tags":p.value}}let D=R(()=>Q({inline_code:BY,image:DX,link:pZ,hardbreak:xZ,emphasis:yZ,strong:oZ,strikethrough:cZ,highlight:_Z,insert:hZ,subscript:iZ,superscript:nZ,html_inline:LY,html_block:ZZ,emoji:xY,checkbox:yY,math_inline:QX,checkbox_input:yY,reference:eZ,footnote_anchor:FZ,footnote_reference:wY,text:JX},n.value)),k=R(()=>S.value.map((e,r)=>{let i=function(e){if(e.type===`html_block`||e.type===`html_inline`){let t=String(e.tag??``).trim().toLowerCase()||wL(e.content);if(t&&!x.value.has(t)&&EL(e.content??e.raw,t)){let t=String(e.content??e.raw??``);return{child:{type:`text`,content:t,raw:t},component:JX,isCustomComponent:!1}}}return{child:e,component:D.value[e.type],isCustomComponent:!!(n.value[e.type]&&!dY(String(e.type)))}}(e);return rY(Q({},i),{index:r,key:`${t.indexKey||`paragraph`}-${r}`,customAttrs:i.isCustomComponent?AY(i.child,l.value):void 0,hasSlotChildren:Array.isArray(i.child.children)&&i.child.children.length>0,slotContent:String(i.child.content??``),originalChild:e})}));return(e,n)=>(u(),G(`p`,QZ,[T.value===null?(u(!0),G(P,{key:1},y(k.value,e=>{return u(),G(P,{key:e.key},[b.value&&_(e.originalChild)?(u(),G(P,{key:0},[q(W((n=e.originalChild,String((r=n.content)??``))),1)],64)):e.isCustomComponent?(u(),I(C(e.component),ie({key:1,ref_for:!0},e.customAttrs,{node:e.child,loading:e.child.loading,"index-key":e.key,"custom-id":t.customId,"custom-html-tags":p.value,"is-dark":m.value.isDark}),{default:V(()=>[e.hasSlotChildren?(u(),I(B(h),ie({key:0,ref_for:!0},m.value,{nodes:e.child.children,"index-key":e.key,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`nodes`,`index-key`])):e.slotContent?(u(),I(B(h),ie({key:1,ref_for:!0},m.value,{content:e.slotContent,final:!e.child.loading,"index-key":`${e.key}-content`,"smooth-streaming":!1,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`content`,`final`,`index-key`])):O(``,!0)]),_:2},1040,[`node`,`loading`,`index-key`,`custom-id`,`custom-html-tags`,`is-dark`])):(u(),I(C(e.component),ie({key:2,ref_for:!0},E(e.child,e.index)),null,16))],64);var n,r}),128)):(u(),G(`span`,{key:0,class:`text-node`,"custom-id":t.customId},W(T.value),9,$Z))]))}}),[[`__scopeId`,`data-v-c59ff506`]]);eQ.install=e=>{e.component(eQ.__name,eQ)};var tQ={class:`table-node-wrapper`},nQ=[`aria-busy`],rQ={key:0},iQ=[`custom-id`],aQ=[`aria-label`,`onPointerdown`],oQ=[`custom-id`],sQ={key:0,class:`table-node__loading`,role:`status`,"aria-live":`polite`},cQ=vY(K({__name:`TableNode`,props:{node:{},indexKey:{},isDark:{type:Boolean},typewriter:{type:Boolean},fade:{type:Boolean},customId:{},showTooltips:{type:Boolean}},emits:[`copy`],setup(e){let t=e,n=R(()=>{var e;return(e=t.node.loading)!=null&&e}),r=R(()=>t.node.rows??[]),i=z(null),a=z([]),o=null,s=R(()=>t.node.header.cells.length),c=R(()=>a.value.some(e=>Number.isFinite(e)&&e>0)),d=R(()=>c.value?a.value.map(e=>e>0?{width:`${e}px`}:void 0):[]);p(`markstreamShowTooltips`,R(()=>t.showTooltips)),p(`markstreamFade`,R(()=>t.fade));let f=mY(()=>t.customId),m=R(()=>!!f.value.text),h=R(()=>!!f.value.paragraph),g=new WeakMap;function _(e){let n=!1===t.fade&&!m.value,r=!h.value,i=g.get(e);if(i?.children===e.children&&i.textFastPath===n&&i.paragraphFastPath===r)return i.info;let a=wZ(e.children,r,!0),o={simpleChildren:a,plainText:a&&n?TZ(a):null};return g.set(e,{children:e.children,textFastPath:n,paragraphFastPath:r,info:o}),o}function v(e){if(!o)return;e.preventDefault();let t=o.startWidth+o.nextStartWidth,n=Math.min(48,Math.floor(t/2)),r=Math.max(n,Math.min(t-n,Math.round(o.startWidth+e.clientX-o.startX))),i=[...o.widths];i[o.index]=r,i[o.index+1]=t-r,a.value=i}function x(){o&&=(window.removeEventListener(`pointermove`,v),window.removeEventListener(`pointerup`,x),window.removeEventListener(`pointercancel`,x),null)}return l(s,()=>{x(),a.value=[]}),re(x),(s,l)=>(u(),G(`div`,tQ,[L(`table`,{ref_key:`tableRef`,ref:i,class:H([`table-node`,{"table-node--loading":n.value}]),"aria-busy":n.value},[c.value?(u(),G(`colgroup`,rQ,[(u(!0),G(P,null,y(e.node.header.cells,(e,t)=>(u(),G(`col`,{key:t,style:oe(d.value[t])},null,4))),128))])):O(``,!0),L(`thead`,null,[L(`tr`,null,[(u(!0),G(P,null,y(e.node.header.cells,(n,r)=>(u(),G(`th`,{key:r,dir:`auto`,class:H([n.align===`right`?`text-right`:n.align===`center`?`text-center`:`text-left`])},[_(n).plainText===null?_(n).simpleChildren?(u(),I(B(SZ),{key:1,nodes:_(n).simpleChildren,"custom-id":t.customId,"index-key":`table-th-${t.indexKey}-${r}`},null,8,[`nodes`,`custom-id`,`index-key`])):(u(),I(B(O0),{key:2,nodes:n.children,"index-key":`table-th-${t.indexKey}`,"custom-id":t.customId,typewriter:t.typewriter,fade:t.fade,"show-tooltips":t.showTooltips,onCopy:l[0]||=e=>s.$emit(`copy`,e)},null,8,[`nodes`,`index-key`,`custom-id`,`typewriter`,`fade`,`show-tooltips`])):(u(),G(`span`,{key:0,class:`text-node`,"custom-id":t.customId},W(_(n).plainText),9,iQ)),rfunction(e,t){if(t.button!==0)return;let n=function(){let e=i.value?.querySelectorAll(`thead th`);return Array.from(e??[],e=>Math.round(e.getBoundingClientRect().width))}(),r=n[e],s=n[e+1];r&&s&&(t.preventDefault(),o={index:e,startX:t.clientX,startWidth:r,nextStartWidth:s,widths:n},a.value=n,window.addEventListener(`pointermove`,v),window.addEventListener(`pointerup`,x),window.addEventListener(`pointercancel`,x))}(r,e)},null,40,aQ)):O(``,!0)],2))),128))])]),L(`tbody`,null,[(u(!0),G(P,null,y(r.value,(e,n)=>(u(),G(`tr`,{key:n},[(u(!0),G(P,null,y(e.cells,(e,r)=>(u(),G(`td`,{key:r,class:H([e.align===`right`?`text-right`:e.align===`center`?`text-center`:`text-left`]),dir:`auto`},[_(e).plainText===null?_(e).simpleChildren?(u(),I(B(SZ),{key:1,nodes:_(e).simpleChildren,"custom-id":t.customId,"index-key":`table-td-${t.indexKey}-${n}-${r}`},null,8,[`nodes`,`custom-id`,`index-key`])):(u(),I(B(O0),{key:2,nodes:e.children,"index-key":`table-td-${t.indexKey}`,"custom-id":t.customId,typewriter:t.typewriter,fade:t.fade,"show-tooltips":t.showTooltips,onCopy:l[1]||=e=>s.$emit(`copy`,e)},null,8,[`nodes`,`index-key`,`custom-id`,`typewriter`,`fade`,`show-tooltips`])):(u(),G(`span`,{key:0,class:`text-node`,"custom-id":t.customId},W(_(e).plainText),9,oQ))],2))),128))]))),128))])],10,nQ),b(se,{name:`table-node-fade`},{default:V(()=>[n.value?(u(),G(`div`,sQ,[he(s.$slots,`loading`,{isLoading:n.value},()=>[l[2]||=L(`span`,{class:`table-node__spinner animate-spin`,"aria-hidden":`true`},null,-1),l[3]||=L(`span`,{class:`sr-only`},`Loading`,-1)],!0)])):O(``,!0)]),_:3})]))}}),[[`__scopeId`,`data-v-39f87b5d`]]);cQ.install=e=>{e.component(cQ.__name,cQ)};var lQ={class:`hr-node`},uQ=vY({},[[`render`,function(e,t){return u(),G(`hr`,lQ)}],[`__scopeId`,`data-v-39b2349c`]]);uQ.install=e=>{e.component(uQ.__name,uQ)};var dQ={class:`unknown-node`},fQ=K({__name:`FallbackComponent`,props:{node:{}},setup:e=>(t,n)=>(u(),G(`div`,dQ,W(e.node.raw),1))}),pQ=vY(K({__name:`VmrContainerNode`,props:{node:{},indexKey:{},isDark:{type:Boolean},typewriter:{type:Boolean},fade:{type:Boolean},customId:{}},setup(e){let t=e,n=R(()=>`vmr-container vmr-container-${t.node.name}`),r=mY(()=>t.customId),i=R(()=>Q({text:JX,paragraph:eQ,heading:VZ,inline_code:BY,link:pZ,image:DX,strong:oZ,emphasis:yZ,strikethrough:cZ,insert:hZ,subscript:iZ,superscript:nZ,checkbox:yY,checkbox_input:yY,hardbreak:xZ,math_inline:QX,reference:eZ,list:qZ,math_block:$X,table:cQ},r.value));return(r,a)=>(u(),G(`div`,ie({class:n.value},e.node.attrs),[(u(!0),G(P,null,y(e.node.children,(n,r)=>{return u(),I(C((a=n.type,i.value[a]||fQ)),{key:`${e.indexKey||`vmr-container`}-${r}`,"custom-id":t.customId,node:n,"index-key":`${e.indexKey||`vmr-container`}-${r}`,typewriter:t.typewriter,fade:t.fade},null,8,[`custom-id`,`node`,`index-key`,`typewriter`,`fade`]);var a}),128))],16))}}),[[`__scopeId`,`data-v-911e41c4`]]);pQ.install=e=>{e.component(pQ.__name,pQ)};var mQ=`BN.BN.BN.BN.BN.BN.BN.BN.BN.S.B.S.WS.B.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.B.B.B.S.WS.ON.ON.ET.ET.ET.ON.ON.ON.ON.ON.ES.CS.ES.CS.CS.EN.EN.EN.EN.EN.EN.EN.EN.EN.EN.CS.ON.ON.ON.ON.ON.ON.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.ON.ON.ON.ON.ON.ON.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.ON.ON.ON.ON.BN.BN.BN.BN.BN.BN.B.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.BN.CS.ON.ET.ET.ET.ET.ON.ON.ON.ON.L.ON.ON.BN.ON.ON.ET.ET.EN.EN.ON.L.ON.ON.ON.EN.L.ON.ON.ON.ON.ON.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.ON.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.ON.L.L.L.L.L.L.L.L`.split(`.`),hQ=[[697,698,`ON`],[706,719,`ON`],[722,735,`ON`],[741,749,`ON`],[751,767,`ON`],[768,879,`NSM`],[884,885,`ON`],[894,894,`ON`],[900,901,`ON`],[903,903,`ON`],[1014,1014,`ON`],[1155,1161,`NSM`],[1418,1418,`ON`],[1421,1422,`ON`],[1423,1423,`ET`],[1424,1424,`R`],[1425,1469,`NSM`],[1470,1470,`R`],[1471,1471,`NSM`],[1472,1472,`R`],[1473,1474,`NSM`],[1475,1475,`R`],[1476,1477,`NSM`],[1478,1478,`R`],[1479,1479,`NSM`],[1480,1535,`R`],[1536,1541,`AN`],[1542,1543,`ON`],[1544,1544,`AL`],[1545,1546,`ET`],[1547,1547,`AL`],[1548,1548,`CS`],[1549,1549,`AL`],[1550,1551,`ON`],[1552,1562,`NSM`],[1563,1610,`AL`],[1611,1631,`NSM`],[1632,1641,`AN`],[1642,1642,`ET`],[1643,1644,`AN`],[1645,1647,`AL`],[1648,1648,`NSM`],[1649,1749,`AL`],[1750,1756,`NSM`],[1757,1757,`AN`],[1758,1758,`ON`],[1759,1764,`NSM`],[1765,1766,`AL`],[1767,1768,`NSM`],[1769,1769,`ON`],[1770,1773,`NSM`],[1774,1775,`AL`],[1776,1785,`EN`],[1786,1808,`AL`],[1809,1809,`NSM`],[1810,1839,`AL`],[1840,1866,`NSM`],[1867,1957,`AL`],[1958,1968,`NSM`],[1969,1983,`AL`],[1984,2026,`R`],[2027,2035,`NSM`],[2036,2037,`R`],[2038,2041,`ON`],[2042,2044,`R`],[2045,2045,`NSM`],[2046,2069,`R`],[2070,2073,`NSM`],[2074,2074,`R`],[2075,2083,`NSM`],[2084,2084,`R`],[2085,2087,`NSM`],[2088,2088,`R`],[2089,2093,`NSM`],[2094,2136,`R`],[2137,2139,`NSM`],[2140,2143,`R`],[2144,2191,`AL`],[2192,2193,`AN`],[2194,2198,`AL`],[2199,2207,`NSM`],[2208,2249,`AL`],[2250,2273,`NSM`],[2274,2274,`AN`],[2275,2306,`NSM`],[2362,2362,`NSM`],[2364,2364,`NSM`],[2369,2376,`NSM`],[2381,2381,`NSM`],[2385,2391,`NSM`],[2402,2403,`NSM`],[2433,2433,`NSM`],[2492,2492,`NSM`],[2497,2500,`NSM`],[2509,2509,`NSM`],[2530,2531,`NSM`],[2546,2547,`ET`],[2555,2555,`ET`],[2558,2558,`NSM`],[2561,2562,`NSM`],[2620,2620,`NSM`],[2625,2626,`NSM`],[2631,2632,`NSM`],[2635,2637,`NSM`],[2641,2641,`NSM`],[2672,2673,`NSM`],[2677,2677,`NSM`],[2689,2690,`NSM`],[2748,2748,`NSM`],[2753,2757,`NSM`],[2759,2760,`NSM`],[2765,2765,`NSM`],[2786,2787,`NSM`],[2801,2801,`ET`],[2810,2815,`NSM`],[2817,2817,`NSM`],[2876,2876,`NSM`],[2879,2879,`NSM`],[2881,2884,`NSM`],[2893,2893,`NSM`],[2901,2902,`NSM`],[2914,2915,`NSM`],[2946,2946,`NSM`],[3008,3008,`NSM`],[3021,3021,`NSM`],[3059,3064,`ON`],[3065,3065,`ET`],[3066,3066,`ON`],[3072,3072,`NSM`],[3076,3076,`NSM`],[3132,3132,`NSM`],[3134,3136,`NSM`],[3142,3144,`NSM`],[3146,3149,`NSM`],[3157,3158,`NSM`],[3170,3171,`NSM`],[3192,3198,`ON`],[3201,3201,`NSM`],[3260,3260,`NSM`],[3276,3277,`NSM`],[3298,3299,`NSM`],[3328,3329,`NSM`],[3387,3388,`NSM`],[3393,3396,`NSM`],[3405,3405,`NSM`],[3426,3427,`NSM`],[3457,3457,`NSM`],[3530,3530,`NSM`],[3538,3540,`NSM`],[3542,3542,`NSM`],[3633,3633,`NSM`],[3636,3642,`NSM`],[3647,3647,`ET`],[3655,3662,`NSM`],[3761,3761,`NSM`],[3764,3772,`NSM`],[3784,3790,`NSM`],[3864,3865,`NSM`],[3893,3893,`NSM`],[3895,3895,`NSM`],[3897,3897,`NSM`],[3898,3901,`ON`],[3953,3966,`NSM`],[3968,3972,`NSM`],[3974,3975,`NSM`],[3981,3991,`NSM`],[3993,4028,`NSM`],[4038,4038,`NSM`],[4141,4144,`NSM`],[4146,4151,`NSM`],[4153,4154,`NSM`],[4157,4158,`NSM`],[4184,4185,`NSM`],[4190,4192,`NSM`],[4209,4212,`NSM`],[4226,4226,`NSM`],[4229,4230,`NSM`],[4237,4237,`NSM`],[4253,4253,`NSM`],[4957,4959,`NSM`],[5008,5017,`ON`],[5120,5120,`ON`],[5760,5760,`WS`],[5787,5788,`ON`],[5906,5908,`NSM`],[5938,5939,`NSM`],[5970,5971,`NSM`],[6002,6003,`NSM`],[6068,6069,`NSM`],[6071,6077,`NSM`],[6086,6086,`NSM`],[6089,6099,`NSM`],[6107,6107,`ET`],[6109,6109,`NSM`],[6128,6137,`ON`],[6144,6154,`ON`],[6155,6157,`NSM`],[6158,6158,`BN`],[6159,6159,`NSM`],[6277,6278,`NSM`],[6313,6313,`NSM`],[6432,6434,`NSM`],[6439,6440,`NSM`],[6450,6450,`NSM`],[6457,6459,`NSM`],[6464,6464,`ON`],[6468,6469,`ON`],[6622,6655,`ON`],[6679,6680,`NSM`],[6683,6683,`NSM`],[6742,6742,`NSM`],[6744,6750,`NSM`],[6752,6752,`NSM`],[6754,6754,`NSM`],[6757,6764,`NSM`],[6771,6780,`NSM`],[6783,6783,`NSM`],[6832,6877,`NSM`],[6880,6891,`NSM`],[6912,6915,`NSM`],[6964,6964,`NSM`],[6966,6970,`NSM`],[6972,6972,`NSM`],[6978,6978,`NSM`],[7019,7027,`NSM`],[7040,7041,`NSM`],[7074,7077,`NSM`],[7080,7081,`NSM`],[7083,7085,`NSM`],[7142,7142,`NSM`],[7144,7145,`NSM`],[7149,7149,`NSM`],[7151,7153,`NSM`],[7212,7219,`NSM`],[7222,7223,`NSM`],[7376,7378,`NSM`],[7380,7392,`NSM`],[7394,7400,`NSM`],[7405,7405,`NSM`],[7412,7412,`NSM`],[7416,7417,`NSM`],[7616,7679,`NSM`],[8125,8125,`ON`],[8127,8129,`ON`],[8141,8143,`ON`],[8157,8159,`ON`],[8173,8175,`ON`],[8189,8190,`ON`],[8192,8202,`WS`],[8203,8205,`BN`],[8207,8207,`R`],[8208,8231,`ON`],[8232,8232,`WS`],[8233,8233,`B`],[8234,8238,`BN`],[8239,8239,`CS`],[8240,8244,`ET`],[8245,8259,`ON`],[8260,8260,`CS`],[8261,8286,`ON`],[8287,8287,`WS`],[8288,8303,`BN`],[8304,8304,`EN`],[8308,8313,`EN`],[8314,8315,`ES`],[8316,8318,`ON`],[8320,8329,`EN`],[8330,8331,`ES`],[8332,8334,`ON`],[8352,8399,`ET`],[8400,8432,`NSM`],[8448,8449,`ON`],[8451,8454,`ON`],[8456,8457,`ON`],[8468,8468,`ON`],[8470,8472,`ON`],[8478,8483,`ON`],[8485,8485,`ON`],[8487,8487,`ON`],[8489,8489,`ON`],[8494,8494,`ET`],[8506,8507,`ON`],[8512,8516,`ON`],[8522,8525,`ON`],[8528,8543,`ON`],[8585,8587,`ON`],[8592,8721,`ON`],[8722,8722,`ES`],[8723,8723,`ET`],[8724,9013,`ON`],[9083,9108,`ON`],[9110,9257,`ON`],[9280,9290,`ON`],[9312,9351,`ON`],[9352,9371,`EN`],[9450,9899,`ON`],[9901,10239,`ON`],[10496,11123,`ON`],[11126,11263,`ON`],[11493,11498,`ON`],[11503,11505,`NSM`],[11513,11519,`ON`],[11647,11647,`NSM`],[11744,11775,`NSM`],[11776,11869,`ON`],[11904,11929,`ON`],[11931,12019,`ON`],[12032,12245,`ON`],[12272,12287,`ON`],[12288,12288,`WS`],[12289,12292,`ON`],[12296,12320,`ON`],[12330,12333,`NSM`],[12336,12336,`ON`],[12342,12343,`ON`],[12349,12351,`ON`],[12441,12442,`NSM`],[12443,12444,`ON`],[12448,12448,`ON`],[12539,12539,`ON`],[12736,12773,`ON`],[12783,12783,`ON`],[12829,12830,`ON`],[12880,12895,`ON`],[12924,12926,`ON`],[12977,12991,`ON`],[13004,13007,`ON`],[13175,13178,`ON`],[13278,13279,`ON`],[13311,13311,`ON`],[19904,19967,`ON`],[42128,42182,`ON`],[42509,42511,`ON`],[42607,42610,`NSM`],[42611,42611,`ON`],[42612,42621,`NSM`],[42622,42623,`ON`],[42654,42655,`NSM`],[42736,42737,`NSM`],[42752,42785,`ON`],[42888,42888,`ON`],[43010,43010,`NSM`],[43014,43014,`NSM`],[43019,43019,`NSM`],[43045,43046,`NSM`],[43048,43051,`ON`],[43052,43052,`NSM`],[43064,43065,`ET`],[43124,43127,`ON`],[43204,43205,`NSM`],[43232,43249,`NSM`],[43263,43263,`NSM`],[43302,43309,`NSM`],[43335,43345,`NSM`],[43392,43394,`NSM`],[43443,43443,`NSM`],[43446,43449,`NSM`],[43452,43453,`NSM`],[43493,43493,`NSM`],[43561,43566,`NSM`],[43569,43570,`NSM`],[43573,43574,`NSM`],[43587,43587,`NSM`],[43596,43596,`NSM`],[43644,43644,`NSM`],[43696,43696,`NSM`],[43698,43700,`NSM`],[43703,43704,`NSM`],[43710,43711,`NSM`],[43713,43713,`NSM`],[43756,43757,`NSM`],[43766,43766,`NSM`],[43882,43883,`ON`],[44005,44005,`NSM`],[44008,44008,`NSM`],[44013,44013,`NSM`],[64285,64285,`R`],[64286,64286,`NSM`],[64287,64296,`R`],[64297,64297,`ES`],[64298,64335,`R`],[64336,64450,`AL`],[64451,64466,`ON`],[64467,64829,`AL`],[64830,64847,`ON`],[64848,64911,`AL`],[64912,64913,`ON`],[64914,64967,`AL`],[64968,64975,`ON`],[64976,65007,`BN`],[65008,65020,`AL`],[65021,65023,`ON`],[65024,65039,`NSM`],[65040,65049,`ON`],[65056,65071,`NSM`],[65072,65103,`ON`],[65104,65104,`CS`],[65105,65105,`ON`],[65106,65106,`CS`],[65108,65108,`ON`],[65109,65109,`CS`],[65110,65118,`ON`],[65119,65119,`ET`],[65120,65121,`ON`],[65122,65123,`ES`],[65124,65126,`ON`],[65128,65128,`ON`],[65129,65130,`ET`],[65131,65131,`ON`],[65136,65278,`AL`],[65279,65279,`BN`],[65281,65282,`ON`],[65283,65285,`ET`],[65286,65290,`ON`],[65291,65291,`ES`],[65292,65292,`CS`],[65293,65293,`ES`],[65294,65295,`CS`],[65296,65305,`EN`],[65306,65306,`CS`],[65307,65312,`ON`],[65339,65344,`ON`],[65371,65381,`ON`],[65504,65505,`ET`],[65506,65508,`ON`],[65509,65510,`ET`],[65512,65518,`ON`],[65520,65528,`BN`],[65529,65533,`ON`],[65534,65535,`BN`],[65793,65793,`ON`],[65856,65932,`ON`],[65936,65948,`ON`],[65952,65952,`ON`],[66045,66045,`NSM`],[66272,66272,`NSM`],[66273,66299,`EN`],[66422,66426,`NSM`],[67584,67870,`R`],[67871,67871,`ON`],[67872,68096,`R`],[68097,68099,`NSM`],[68100,68100,`R`],[68101,68102,`NSM`],[68103,68107,`R`],[68108,68111,`NSM`],[68112,68151,`R`],[68152,68154,`NSM`],[68155,68158,`R`],[68159,68159,`NSM`],[68160,68324,`R`],[68325,68326,`NSM`],[68327,68408,`R`],[68409,68415,`ON`],[68416,68863,`R`],[68864,68899,`AL`],[68900,68903,`NSM`],[68904,68911,`AL`],[68912,68921,`AN`],[68922,68927,`AL`],[68928,68937,`AN`],[68938,68968,`R`],[68969,68973,`NSM`],[68974,68974,`ON`],[68975,69215,`R`],[69216,69246,`AN`],[69247,69290,`R`],[69291,69292,`NSM`],[69293,69311,`R`],[69312,69327,`AL`],[69328,69336,`ON`],[69337,69369,`AL`],[69370,69375,`NSM`],[69376,69423,`R`],[69424,69445,`AL`],[69446,69456,`NSM`],[69457,69487,`AL`],[69488,69505,`R`],[69506,69509,`NSM`],[69510,69631,`R`],[69633,69633,`NSM`],[69688,69702,`NSM`],[69714,69733,`ON`],[69744,69744,`NSM`],[69747,69748,`NSM`],[69759,69761,`NSM`],[69811,69814,`NSM`],[69817,69818,`NSM`],[69826,69826,`NSM`],[69888,69890,`NSM`],[69927,69931,`NSM`],[69933,69940,`NSM`],[70003,70003,`NSM`],[70016,70017,`NSM`],[70070,70078,`NSM`],[70089,70092,`NSM`],[70095,70095,`NSM`],[70191,70193,`NSM`],[70196,70196,`NSM`],[70198,70199,`NSM`],[70206,70206,`NSM`],[70209,70209,`NSM`],[70367,70367,`NSM`],[70371,70378,`NSM`],[70400,70401,`NSM`],[70459,70460,`NSM`],[70464,70464,`NSM`],[70502,70508,`NSM`],[70512,70516,`NSM`],[70587,70592,`NSM`],[70606,70606,`NSM`],[70608,70608,`NSM`],[70610,70610,`NSM`],[70625,70626,`NSM`],[70712,70719,`NSM`],[70722,70724,`NSM`],[70726,70726,`NSM`],[70750,70750,`NSM`],[70835,70840,`NSM`],[70842,70842,`NSM`],[70847,70848,`NSM`],[70850,70851,`NSM`],[71090,71093,`NSM`],[71100,71101,`NSM`],[71103,71104,`NSM`],[71132,71133,`NSM`],[71219,71226,`NSM`],[71229,71229,`NSM`],[71231,71232,`NSM`],[71264,71276,`ON`],[71339,71339,`NSM`],[71341,71341,`NSM`],[71344,71349,`NSM`],[71351,71351,`NSM`],[71453,71453,`NSM`],[71455,71455,`NSM`],[71458,71461,`NSM`],[71463,71467,`NSM`],[71727,71735,`NSM`],[71737,71738,`NSM`],[71995,71996,`NSM`],[71998,71998,`NSM`],[72003,72003,`NSM`],[72148,72151,`NSM`],[72154,72155,`NSM`],[72160,72160,`NSM`],[72193,72198,`NSM`],[72201,72202,`NSM`],[72243,72248,`NSM`],[72251,72254,`NSM`],[72263,72263,`NSM`],[72273,72278,`NSM`],[72281,72283,`NSM`],[72330,72342,`NSM`],[72344,72345,`NSM`],[72544,72544,`NSM`],[72546,72548,`NSM`],[72550,72550,`NSM`],[72752,72758,`NSM`],[72760,72765,`NSM`],[72850,72871,`NSM`],[72874,72880,`NSM`],[72882,72883,`NSM`],[72885,72886,`NSM`],[73009,73014,`NSM`],[73018,73018,`NSM`],[73020,73021,`NSM`],[73023,73029,`NSM`],[73031,73031,`NSM`],[73104,73105,`NSM`],[73109,73109,`NSM`],[73111,73111,`NSM`],[73459,73460,`NSM`],[73472,73473,`NSM`],[73526,73530,`NSM`],[73536,73536,`NSM`],[73538,73538,`NSM`],[73562,73562,`NSM`],[73685,73692,`ON`],[73693,73696,`ET`],[73697,73713,`ON`],[78912,78912,`NSM`],[78919,78933,`NSM`],[90398,90409,`NSM`],[90413,90415,`NSM`],[92912,92916,`NSM`],[92976,92982,`NSM`],[94031,94031,`NSM`],[94095,94098,`NSM`],[94178,94178,`ON`],[94180,94180,`NSM`],[113821,113822,`NSM`],[113824,113827,`BN`],[117760,117973,`ON`],[118e3,118009,`EN`],[118010,118012,`ON`],[118016,118451,`ON`],[118458,118480,`ON`],[118496,118512,`ON`],[118528,118573,`NSM`],[118576,118598,`NSM`],[119143,119145,`NSM`],[119155,119162,`BN`],[119163,119170,`NSM`],[119173,119179,`NSM`],[119210,119213,`NSM`],[119273,119274,`ON`],[119296,119361,`ON`],[119362,119364,`NSM`],[119365,119365,`ON`],[119552,119638,`ON`],[120513,120513,`ON`],[120539,120539,`ON`],[120571,120571,`ON`],[120597,120597,`ON`],[120629,120629,`ON`],[120655,120655,`ON`],[120687,120687,`ON`],[120713,120713,`ON`],[120745,120745,`ON`],[120771,120771,`ON`],[120782,120831,`EN`],[121344,121398,`NSM`],[121403,121452,`NSM`],[121461,121461,`NSM`],[121476,121476,`NSM`],[121499,121503,`NSM`],[121505,121519,`NSM`],[122880,122886,`NSM`],[122888,122904,`NSM`],[122907,122913,`NSM`],[122915,122916,`NSM`],[122918,122922,`NSM`],[123023,123023,`NSM`],[123184,123190,`NSM`],[123566,123566,`NSM`],[123628,123631,`NSM`],[123647,123647,`ET`],[124140,124143,`NSM`],[124398,124399,`NSM`],[124643,124643,`NSM`],[124646,124646,`NSM`],[124654,124655,`NSM`],[124661,124661,`NSM`],[124928,125135,`R`],[125136,125142,`NSM`],[125143,125251,`R`],[125252,125258,`NSM`],[125259,126063,`R`],[126064,126143,`AL`],[126144,126207,`R`],[126208,126287,`AL`],[126288,126463,`R`],[126464,126703,`AL`],[126704,126705,`ON`],[126706,126719,`AL`],[126720,126975,`R`],[126976,127019,`ON`],[127024,127123,`ON`],[127136,127150,`ON`],[127153,127167,`ON`],[127169,127183,`ON`],[127185,127221,`ON`],[127232,127242,`EN`],[127243,127247,`ON`],[127279,127279,`ON`],[127338,127343,`ON`],[127405,127405,`ON`],[127584,127589,`ON`],[127744,128728,`ON`],[128732,128748,`ON`],[128752,128764,`ON`],[128768,128985,`ON`],[128992,129003,`ON`],[129008,129008,`ON`],[129024,129035,`ON`],[129040,129095,`ON`],[129104,129113,`ON`],[129120,129159,`ON`],[129168,129197,`ON`],[129200,129211,`ON`],[129216,129217,`ON`],[129232,129240,`ON`],[129280,129623,`ON`],[129632,129645,`ON`],[129648,129660,`ON`],[129664,129674,`ON`],[129678,129734,`ON`],[129736,129736,`ON`],[129741,129756,`ON`],[129759,129770,`ON`],[129775,129784,`ON`],[129792,129938,`ON`],[129940,130031,`ON`],[130032,130041,`EN`],[130042,130042,`ON`],[131070,131071,`BN`],[196606,196607,`BN`],[262142,262143,`BN`],[327678,327679,`BN`],[393214,393215,`BN`],[458750,458751,`BN`],[524286,524287,`BN`],[589822,589823,`BN`],[655358,655359,`BN`],[720894,720895,`BN`],[786430,786431,`BN`],[851966,851967,`BN`],[917502,917759,`BN`],[917760,917999,`NSM`],[918e3,921599,`BN`],[983038,983039,`BN`],[1048574,1048575,`BN`],[1114110,1114111,`BN`]];function gQ(e){if(e<=255)return mQ[e];let t=0,n=hQ.length-1;for(;t<=n;){let r=t+n>>1,i=hQ[r];if(ei[1]))return i[2];t=r+1}}return`L`}var _Q=/[ \t\n\r\f]+/g,vQ=/[\t\n\r\f]| {2,}|^ | $/,yQ=null,bQ=RegExp(`\\p{Script=Arabic}`,`u`),xQ=RegExp(`\\p{M}`,`u`),SQ=RegExp(`\\p{Nd}`,`u`);function CQ(e){return bQ.test(e)}function wQ(e){return e>=19968&&e<=40959||e>=13312&&e<=19903||e>=131072&&e<=173791||e>=173824&&e<=177983||e>=177984&&e<=178207||e>=178208&&e<=183983||e>=183984&&e<=191471||e>=191472&&e<=192093||e>=194560&&e<=195103||e>=196608&&e<=201551||e>=201552&&e<=205743||e>=205744&&e<=210041||e>=63744&&e<=64255||e>=12288&&e<=12351||e>=12352&&e<=12447||e>=12448&&e<=12543||e>=12592&&e<=12687||e>=44032&&e<=55215||e>=65280&&e<=65519}function TQ(e){for(let t=0;t=55296&&n<=56319&&t+1=56320&&r<=57343){if(wQ(r-56320+(n-55296<<10)+65536))return!0;t++;continue}}if(wQ(n))return!0}}return!1}var EQ=new Set([`\xA0`,` `,`⁠`,``]),DQ=new Set([`-`,`‐`,`–`,`—`]);function OQ(e,t){return!(function(e){let t=VQ(e);return t!==null&&EQ.has(t)}(e)||t&&(function(e){let t=VQ(e);return t!==null&&(kQ.has(t)||MQ.has(t))}(e)||function(e){let t=VQ(e);return t!==null&&DQ.has(t)}(e)))}var kQ=new Set(`,...!.:.;.?.、.。.・.).〕.〉.》.」.』.】.〗.〙.〛.ー.々.〻.ゝ.ゞ.ヽ.ヾ`.split(`.`)),AQ=new Set([`"`,`(`,`[`,`{`,`¡`,`¿`,`“`,`‘`,`‚`,`„`,`«`,`‹`,`⸘`,`(`,`〔`,`〈`,`《`,`「`,`『`,`【`,`〖`,`〘`,`〚`]),jQ=new Set([`'`,`’`]),MQ=new Set(`.(,(!(?(:(;(،(؛(؟(।(॥(၊(။(၌(၍(၏()(](}(%("(”(’(»(›(…`.split(`(`)),NQ=new Set([`:`,`.`,`،`,`؛`]),PQ=new Set([`၏`]),FQ=new Set([`”`,`’`,`»`,`›`,`」`,`』`,`】`,`》`,`〉`,`〕`,`)`]);function IQ(e){if(zQ(e))return!0;let t=!1;for(let n of e)if(MQ.has(n)||UQ(n))t=!0;else if(!t||!xQ.test(n))return!1;return t}function LQ(e){for(let t of e)if(!kQ.has(t)&&!MQ.has(t))return!1;return e.length>0}function RQ(e){if(zQ(e))return!0;for(let t of e)if(!(AQ.has(t)||jQ.has(t)||xQ.test(t)||UQ(t)))return!1;return e.length>0}function zQ(e){let t=!1;for(let n of e)if(n!==`\\`&&!xQ.test(n)){if(!(AQ.has(n)||MQ.has(n)||jQ.has(n)))return!1;t=!0}return t}function BQ(e,t){let n=t-1;if(n<=0)return Math.max(n,0);let r=e.charCodeAt(n);if(r<56320||r>57343)return n;let i=n-1;if(i<0)return n;let a=e.charCodeAt(i);return a>=55296&&a<=56319?i:n}function VQ(e){if(e.length===0)return null;let t=BQ(e,e.length);return e.slice(t)}var HQ=[36,37,43,43,92,92,162,165,176,177,1423,1423,1545,1547,1642,1642,2046,2047,2546,2547,2553,2555,2801,2801,3065,3065,3449,3449,3647,3647,6107,6107,8240,8247,8279,8279,8352,8399,8451,8451,8457,8457,8470,8470,8722,8723,43064,43064,65020,65020,65129,65130,65284,65285,65504,65505,65509,65510,73693,73696,123647,123647,126124,126124,126128,126128];function UQ(e){let t=e.codePointAt(0);return t!==void 0&&function(e,t){for(let n=0;n=t[n]&&e<=t[n+1])return!0;return!1}(t,HQ)}function WQ(e){let t=function(e){for(let t of e)if(!xQ.test(t))return t;return null}(e);return t!==null&&SQ.test(t)}function GQ(e){let t=Array.from(e),n=t.length;for(;n>0;){let e=t[n-1];if(xQ.test(e))n--;else{if(!AQ.has(e)&&!jQ.has(e))break;n--}}return n<=0||n===t.length?null:{head:t.slice(0,n).join(``),tail:t.slice(n).join(``)}}function KQ(e,t,n){return n!==`text`||t||e.length!==1||e===`-`||e===`—`?null:e}function qQ(e,t,n,r){let i=t[r],a=e[r];if(i==null)return a;let o=n[r];if(a.length===o)return a;let s=i.repeat(o);return e[r]=s,s}function JQ(e,t){return e&&t!==null&&NQ.has(t)}function YQ(e){let t=VQ(e);return t!==null&&PQ.has(t)}function XQ(e){if(e.length<2||e[0]!==` `)return null;let t=e.slice(1);return RegExp(`^\\p{M}+$`,`u`).test(t)?{space:` `,marks:t}:null}function ZQ(e){let t=e.length;for(;t>0;){let n=BQ(e,t),r=e.slice(n,t);if(FQ.has(r))return!0;if(!MQ.has(r))return!1;t=n}return!1}function QQ(e,t){if(t.preserveOrdinarySpaces||t.preserveHardBreaks){if(e===` `)return`preserved-space`;if(e===` `)return`tab`;if(t.preserveHardBreaks&&e===` `)return`hard-break`}return e===` `?`space`:e===`\xA0`||e===` `||e===`⁠`||e===``?`glue`:e===`​`?`zero-width-break`:e===`­`?`soft-hyphen`:`text`}var $Q=/[\x20\t\n\xA0\xAD\u200B\u202F\u2060\uFEFF]/;function e$(e){return e.length===1?e[0]:e.join(``)}function t$(e,t){let n=[];for(let t=e.length-1;t>=0;t--)n.push(e[t]);return n.push(t),e$(n)}function n$(e,t,n,r){if(!$Q.test(e))return[{text:e,isWordLike:t,kind:`text`,start:n}];let i=[],a=null,o=[],s=n,c=!1,l=0;for(let u of e){let e=QQ(u,r),d=e===`text`&&t;a===null||e!==a||d!==c?(a!==null&&i.push({text:e$(o),isWordLike:c,kind:a,start:s}),a=e,o=[u],s=n+l,c=d,l+=u.length):(o.push(u),l+=u.length)}return a!==null&&i.push({text:e$(o),isWordLike:c,kind:a,start:s}),i}function r$(e){return e===`space`||e===`preserved-space`||e===`zero-width-break`||e===`hard-break`}var i$=/^[A-Za-z][A-Za-z0-9+.-]*:$/;function a$(e,t){let n=e.texts[t];return!!n.startsWith(`www.`)||i$.test(n)&&t+1=33&&e<=47&&e!==45||e>=58&&e<=64&&e!==63||e>=91&&e<=96||e>=123&&e<=126}(t):!u$.has(e)&&!l$.test(e)&&c$.test(e)}function f$(e){let t=!1;for(let n of e)if(!xQ.test(n)){if(!d$(n))return!1;t=!0}return t}function p$(e,t,n,r){let i=!t&&f$(e),a=!r&&f$(n),o=function(e){let t=function(e){for(let t=e.length;t>0;){let n=BQ(e,t),r=e.slice(n,t);if(!xQ.test(r))return r;t=n}return null}(e);return t!==null&&UQ(t)}(e),s=(t||o)&&function(e){for(let t=e.length;t>0;){let n=BQ(e,t),r=e.slice(n,t);if(!xQ.test(r))return d$(r)||UQ(r);t=n}return!1}(e);return!!(i||a||s)&&!TQ(e)&&!TQ(n)&&(t||i||o)&&(r||a)}function m$(e){for(let t of e)if(SQ.test(t))return!0;return!1}function h$(e){if(e.length===0)return!1;for(let t of e)if(!SQ.test(t)&&!s$.has(t))return!1;return!0}function g$(e,t){if(e.len===0)return[];if(!t.preserveHardBreaks)return[{startSegmentIndex:0,endSegmentIndex:e.len,consumedEndSegmentIndex:e.len}];let n=[],r=0;for(let t=0;t0&&t.charCodeAt(t.length-1)===32&&(t=t.slice(0,-1)),t}(e);if(a.length===0)return{normalized:a,chunks:[],len:0,texts:[],isWordLike:[],kinds:[],starts:[]};let o=function(e,t,n){var r;let i=(yQ===null&&(yQ=new Intl.Segmenter(void 0,{granularity:`word`})),yQ),a=0,o=[],s=[],c=[],l=[],u=[],d=[],f=[],p=[],m=[],h=[],g=[],_=[];for(let v of i.segment(e))for(let e of n$(v.segment,(r=v.isWordLike)!=null&&r,v.index,n)){let n=function(){d[C]!==null&&(s[C]=[qQ(o,d,f,C)],d[C]=null),s[C].push(e.text),c[C]=c[C]||e.isWordLike,p[C]=p[C]||v,m[C]=m[C]||y,h[C]=x,g[C]=S,_[C]=JQ(m[C],b)},r=e.kind===`text`,i=KQ(e.text,e.isWordLike,e.kind),v=TQ(e.text),y=CQ(e.text),b=VQ(e.text),x=ZQ(e.text),S=YQ(e.text),C=a-1;t.carryCJKAfterClosingQuote&&r&&a>0&&l[C]===`text`&&v&&p[C]&&h[C]||r&&a>0&&l[C]===`text`&&LQ(e.text)&&p[C]||r&&a>0&&l[C]===`text`&&g[C]?n():r&&a>0&&l[C]===`text`&&e.isWordLike&&y&&_[C]?(n(),c[C]=!0):i!==null&&a>0&&l[C]===`text`&&d[C]===i?f[C]=(f[C]??1)+1:r&&!e.isWordLike&&a>0&&l[C]===`text`&&!p[C]&&(IQ(e.text)||e.text===`-`&&c[C])?n():(o[a]=e.text,s[a]=[e.text],c[a]=e.isWordLike,l[a]=e.kind,u[a]=e.start,d[a]=i,f[a]=i===null?0:1,p[a]=v,m[a]=y,h[a]=x,g[a]=S,_[a]=JQ(y,b),a++)}for(let e=0;enull),y=-1;for(let e=a-1;e>=0;e--){let t=o[e];if(t.length!==0){if(l[e]===`text`&&!c[e]&&y>=0&&l[y]===`text`&&(RQ(t)||t===`-`&&WQ(o[y]))){let n=v[y]??[];n.push(t),v[y]=n,u[y]=u[e],o[e]=``;continue}y=e}}for(let e=0;ea+1){t.push(e$(s)),n.push(u),r.push(`text`),i.push(e.starts[a]),a=l;continue}}t.push(o),n.push(c),r.push(s),i.push(e.starts[a]),a++}return{len:t.length,texts:t,isWordLike:n,kinds:r,starts:i}}(function(e){let t=[],n=[],r=[],i=[];for(let a=0;a1;for(let e=0;e=e.len||r$(e.kinds[s]))continue;let c=[],l=e.starts[s],u=s;for(;u0&&(t.push(e$(c)),n.push(!0),r.push(`text`),i.push(l),a=u-1)}return{len:t.length,texts:t,isWordLike:n,kinds:r,starts:i}}(function(e){let t=e.texts.slice(),n=e.isWordLike.slice(),r=e.kinds.slice(),i=e.starts.slice();for(let i=0;i=0&&!OQ(t.texts[e-1],n)&&u(e),s<0&&(s=e),c||=TQ(l)):(u(e),r.push(l),i.push(t.isWordLike[e]),a.push(d),o.push(t.starts[e]))}return u(t.len),{len:r.length,texts:r,isWordLike:i,kinds:a,starts:o}}(a,o,t.breakKeepAllAfterPunctuation):o;return Q({normalized:a,chunks:g$(s,i)},s)}var v$=null,y$=new Map,b$=null,x$=RegExp(`\\p{Emoji_Presentation}`,`u`),S$=/[\p{Emoji_Presentation}\p{Extended_Pictographic}\p{Regional_Indicator}\uFE0F\u20E3]/u,C$=null,w$=new Map;function T$(){if(v$!==null)return v$;if(typeof OffscreenCanvas<`u`)return v$=new OffscreenCanvas(1,1).getContext(`2d`),v$;if(typeof document<`u`)return v$=document.createElement(`canvas`).getContext(`2d`),v$;throw Error(`Text measurement requires OffscreenCanvas or a DOM canvas context.`)}function E$(e,t){let n=t.get(e);return n===void 0&&(n={width:T$().measureText(e).width,containsCJK:TQ(e)},t.set(e,n)),n}function D$(){if(b$!==null)return b$;if(typeof navigator>`u`)return b$={lineFitEpsilon:.005,carryCJKAfterClosingQuote:!1,breakKeepAllAfterPunctuation:!0,preferPrefixWidthsForBreakableRuns:!1,preferEarlySoftHyphenBreak:!1},b$;let e=navigator.userAgent,t=navigator.vendor===`Apple Computer, Inc.`&&e.includes(`Safari/`)&&!e.includes(`Chrome/`)&&!e.includes(`Chromium/`)&&!e.includes(`CriOS/`)&&!e.includes(`FxiOS/`)&&!e.includes(`EdgiOS/`),n=e.includes(`Chrome/`)||e.includes(`Chromium/`)||e.includes(`CriOS/`)||e.includes(`Edg/`);return b$={lineFitEpsilon:t?1/64:.005,carryCJKAfterClosingQuote:n,breakKeepAllAfterPunctuation:!t,preferPrefixWidthsForBreakableRuns:t,preferEarlySoftHyphenBreak:t},b$}function O$(){return C$===null&&(C$=new Intl.Segmenter(void 0,{granularity:`grapheme`})),C$}function k$(e){return x$.test(e)||e.includes(`️`)}function A$(e,t,n){return n===0?t.width:t.width-function(e,t){return t.emojiCount===void 0&&(t.emojiCount=function(e){let t=0,n=O$();for(let r of n.segment(e))k$(r.segment)&&t++;return t}(e)),t.emojiCount}(e,t)*n}function j$(e){return e===`space`||e===`zero-width-break`||e===`soft-hyphen`}function M$(e){return e===`space`||e===`preserved-space`||e===`tab`||e===`zero-width-break`||e===`soft-hyphen`}function N$(e,t,n=e.widths.length){for(;t0?e.letterSpacing:0}function I$(e,t){return t===0?0:e+t}function L$(e,t,n,r,i){return I$(r,t===`tab`?i+function(e,t){return e.letterSpacing!==0&&e.spacingGraphemeCounts[t]>0?e.letterSpacing:0}(e,n):e.lineEndFitAdvances[n])}function R$(e,t,n,r){return I$(r,t===`tab`?0:e.lineEndFitAdvances[n])}function z$(e,t,n,r,i){return I$(r,t===`tab`?i:e.lineEndPaintAdvances[n])}function B$(e,t,n){return e.letterSpacing!==0&&t?n+e.letterSpacing:n}function V$(e,t){return e.letterSpacing===0?t:t+e.letterSpacing}function H$(e,t,n){let r=t;for(;ro){if(r!==null&&f>t){m(e,f,p),h=f,s=H$(r,s,h+1),f=-1,p=0;continue}m(),g(e,h,i)}else c+=i,u=e,d=h+1;else g(e,h,i);let a=h+1;r!==null&&r[s]===a&&(f=a,p=c,s++),h++}l&&u===e&&d===n.length&&(u=e+1,d=0)}let y=0;for(;y=n.length)));){let e=n[y],t=M$(r[y]);if(l)if(c+e>o){if(t){_(y,e),m(y+1,0,c-e),y++;continue}if(f>=0){if(u>f||u===f&&d>0){m();continue}m(f,0,p);continue}if(e>o&&i[y]!==null){m(),v(y,0),y++;continue}m()}else _(y,e),t&&(f=y+1,p=c-e),y++;else e>o&&i[y]!==null?v(y,0):h(y,e),t&&(f=y+1,p=c-e),y++}return l&&m(),s}(e,t);let{widths:n,kinds:r,breakableFitAdvances:i,breakablePreferredBreaks:a,discretionaryHyphenWidth:o,chunks:s}=e;if(n.length===0||s.length===0)return 0;let c=D$(),l=t+c.lineFitEpsilon,u=0,d=0,f=!1,p=0,m=0,h=-1,g=0,_=null;function v(){h=-1,g=0,_=null}function y(e=p,t=m,n){u++,d=0,f=!1,v()}function b(e,t){f=!0,p=e+1,m=0,d=t}function x(e,t,n){f=!0,p=e,m=t+1,d=n}function S(e,t){f?(d+=t,p=e+1,m=0):b(e,t)}function C(t,n,r,i,a,o){if(!n)return;let s=R$(e,t,r,a),c=z$(e,t,r,a,i);h=r+1,g=d-o+s,d-o+c,_=t}function w(t,n){let r=i[t],o=a[t]??null,s=o===null?-1:H$(o,0,n+1),c=-1,u=n;for(;ul){if(o!==null&&c>n){y(t,c),u=c,s=H$(o,s,u+1),c=-1;continue}y(),x(t,u,i)}else d=a,p=t,m=u+1}else x(t,u,i);let a=u+1;o!==null&&o[s]===a&&(c=a,s++),u++}f&&p===t&&m===r.length&&(p=t+1,m=0)}function T(e){u++,v()}for(let t=0;t=a.endSegmentIndex)));){let t=r[u],a=M$(t),s=F$(e,f,u),v=t===`tab`?P$(d+s,e.tabStopAdvance):n[u],x=s+v,T=L$(e,t,u,s,v);if(t!==`soft-hyphen`)if(f){if(d+T>l){let n=d+R$(e,t,u,s);if(z$(e,t,u,s,v),_===`soft-hyphen`&&c.preferEarlySoftHyphenBreak&&g<=l){y(h,0);continue}if(a&&n<=l){S(u,x),y(u+1,0),u++;continue}if(h>=0&&g<=l){if(p>h||p===h&&m>0){y();continue}let e=h;y(e,0),u=e;continue}if(T>l&&i[u]!==null){y(),w(u,0),u++;continue}y();continue}S(u,x),C(t,a,u,v,s,x),u++}else T>l&&i[u]!==null?w(u,0):b(u,v),C(t,a,u,v,s,x),u++;else f&&(p=u+1,m=0,h=u+1,g=d+o,d+o,_=t),u++}f&&(a.consumedEndSegmentIndex,y(a.consumedEndSegmentIndex,0))}return u}(e,t)}var W$=null;function G$(){return W$===null&&(W$=new Intl.Segmenter(void 0,{granularity:`grapheme`})),W$}function K$(e,t){let n=[],r=[],i=0,a=!1,o=!1,s=!1;function c(){r.length!==0&&(n.push({text:r.length===1?r[0]:r.join(``),start:i}),r=[],a=!1,o=!1,s=!1)}function l(e,t,n){r=[e],i=t,a=n,o=ZQ(e),s=AQ.has(e)}function u(e,t){r.push(e),a||=t;let n=ZQ(e);o=e.length===1&&MQ.has(e)&&o||n,s=!1}for(let n of G$().segment(e)){let e=n.segment,i=TQ(e);r.length===0?l(e,n.index,i):s||kQ.has(e)||MQ.has(e)||t.carryCJKAfterClosingQuote&&i&&o?u(e,i):a||i?(c(),l(e,n.index,i)):u(e,i)}return c(),n}function q$(e,t,n){if(t.length<=1)return t;let r=[],i=-1,a=!1;function o(n){if(!(i<0)){if(a)i+1===n?r.push(t[i]):function(n,i){let a=t[n].start,o=i=0&&!OQ(t[e-1].text,n)&&o(e),i<0&&(i=e),a||=TQ(r.text)}return o(t.length),r}function J$(e,t){if(t===`zero-width-break`||t===`soft-hyphen`||t===`hard-break`)return 0;if(t===`tab`)return 1;let n=0,r=G$();for(let t of r.segment(e))n++;return n}function Y$(e){return e===`-`||e===`֊`||e===`‐`||e===`‒`||e===`–`||e===`—`}function X$(e,t,n,r,i){let a=D$(),{cache:o,emojiCorrection:s}=function(e,t){T$().font=e;let n=function(e){let t=y$.get(e);return t||(t=new Map,y$.set(e,t)),t}(e),r=function(e){let t=e.match(/(\d+(?:\.\d+)?)\s*px/);return t?parseFloat(t[1]):16}(e);return{cache:n,fontSize:r,emojiCorrection:t?function(e,t){let n=w$.get(e);if(n!==void 0)return n;let r=T$();r.font=e;let i=r.measureText(`😀`).width;if(n=0,i>t+.5&&typeof document<`u`&&document.body!==null){let t=document.createElement(`span`);t.style.font=e,t.style.display=`inline-block`,t.style.visibility=`hidden`,t.style.position=`absolute`,t.textContent=`😀`,document.body.appendChild(t);let r=t.getBoundingClientRect().width;document.body.removeChild(t),i-r>.5&&(n=i-r)}return w$.set(e,n),n}(e,r):0}}(t,(c=e.normalized,S$.test(c)));var c;let l=A$(`-`,E$(`-`,o),s)+(i===0?0:2*i),u=8*A$(` `,E$(` `,o),s),d=i!==0;if(e.len===0)return{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],breakablePreferredBreaks:[],letterSpacing:0,spacingGraphemeCounts:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[]};let f=[],p=[],m=[],h=[],g=e.chunks.length<=1&&!d,_=n?[]:null,v=[],y=[],b=[],x=n?[]:null,S=Array.from({length:e.len});function C(e,t,n,r,i,a,o,s,c){i!==`text`&&i!==`space`&&i!==`zero-width-break`&&(g=!1),f.push(t),p.push(n),m.push(r),h.push(i),_?.push(a),v.push(o),y.push(s),d&&b.push(c),x!==null&&x.push(e)}function w(e,t,n,c,l){let u=E$(e,o),f=d?J$(e,t):0,p=function(e,t,n){return t>1?e+(t-1)*n:e}(A$(e,u,s),f,i),m=t===`space`||t===`preserved-space`||t===`zero-width-break`?0:p,h=m===0?0:m+(f>0?i:0),g=t===`space`||t===`zero-width-break`?0:p;if(l&&c&&e.length>1){let c=`sum-graphemes`;i===0?h$(e)?c=`pair-context`:a.preferPrefixWidthsForBreakableRuns&&(c=`segment-prefixes`):c=`segment-prefixes`;let l=function(e,t,n,r,i){if(t.breakableFitAdvances!==void 0&&t.breakableFitMode===i)return t.breakableFitAdvances;t.breakableFitMode=i;let a=O$(),o=[];for(let t of a.segment(e))o.push(t.segment);if(o.length<=1)return t.breakableFitAdvances=null,t.breakableFitAdvances;if(i===`sum-graphemes`){let e=[];for(let t of o){let i=E$(t,n);e.push(A$(t,i,r))}return t.breakableFitAdvances=e,t.breakableFitAdvances}if(i===`pair-context`||o.length>96){let e=[],i=null,a=0;for(let t of o){let o=A$(t,E$(t,n),r);if(i===null)e.push(o);else{let o=i+t,s=E$(o,n);e.push(A$(o,s,r)-a)}i=t,a=o}return t.breakableFitAdvances=e,t.breakableFitAdvances}let s=[],c=``,l=0;for(let e of o){c+=e;let t=A$(c,E$(c,n),r);s.push(t-l),l=t}return t.breakableFitAdvances=s,t.breakableFitAdvances}(e,u,o,s,c);C(e,p,h,g,t,n,l,l===null||r===`keep-all`?null:function(e){if(!/[-\u058A\u2010\u2012\u2013\u2014]/u.test(e))return null;let t=[],n=0;for(let r of G$().segment(e))n++,Y$(r.segment)&&t.push(n);return t.length===0?null:t}(e),f);return}C(e,p,h,g,t,n,null,null,f)}for(let t=0;t=55296&&a<=56319&&i+1=56320&&t<=57343&&(o=t-56320+(a-55296<<10)+65536,s=2)}let c=gQ(o);c!==`R`&&c!==`AL`&&c!==`AN`||(r=!0);for(let e=0;e=0&&n[r]===`ET`;r--)n[r]=`EN`;for(r=e+1;r0?n[e-1]:s)===`L`?`L`:`R`;if(i===((r{let e=globalThis;if(e[Z$])return e[Z$];let t={configs:{},controllers:{},revision:de(0),preparedCache:new Map,blockEstimateCache:new Map};return e[Z$]=t,t})(),e1=null,t1=$$.revision;function n1(e){var t;return e&&(t=$$.configs[e])!=null?t:null}function r1(e,t){let n=Number.parseFloat(String(e??``));return Number.isFinite(n)&&n>0?n:t}function i1(e){return e?.type===`text`||e?.type===`emoji`||e?.type===`hardbreak`}function a1(e){if(!Array.isArray(e)||e.length===0)return null;let t=``;for(let n of e){if(!i1(n))return null;n.type===`text`?t+=String(n.content??``):n.type===`emoji`?t+=String(n.name??n.raw??``):n.type===`hardbreak`&&(t+=` @@ -885,7 +885,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs. `,t-1)+1;return e.slice(n,t).trim()}function H1(e){let t=U1(e);return t.length>=2&&t.every(e=>{let t=e.trim();return t.length>=1&&t.replace(/^:/,``).replace(/:$/,``).split(``).every(e=>e===`-`)})}function U1(e){return e.includes(`|`)?e.replace(/^\|/,``).replace(/\|$/,``).split(`|`):[]}function W1(e){let t=2166136261;for(let n=0;n>>0).toString(36)}function G1(e){let t=String(e??``);return`${t.length}:${W1(t)}`}function K1(e,t=new WeakMap,n=0){if(e==null||typeof e==`number`||typeof e==`boolean`)return String(e);if(typeof e==`string`)return`s:${function(e){return e.length<=8192?G1(e):`${e.length}:${W1(e.slice(0,8192))}:truncated`}(e)}`;if(typeof e==`function`)return`fn:${z1(e)}`;if(typeof e!=`object`)return typeof e;let r=e,i=t.get(r);if(i)return`cycle:${i}`;if(n>=6)return`object:${z1(r)}`;let a=z1(r);if(t.set(r,a),Array.isArray(e)){let r=e.slice(0,200);return`a:${e.length}:${r.map(e=>K1(e,t,n+1)).join(`,`)}`}if(typeof e==`object`){let r=e,i=Object.keys(r).sort(),a=i.slice(0,80);return`o:${i.length}:${a.sort().map(e=>`${e}:${K1(r[e],t,n+1)}`).join(`;`)}`}return typeof e}function q1(e){return typeof e==`object`&&!!e&&typeof e.type==`string`&&typeof e.raw==`string`}function J1(e,t=new WeakMap,n=0){return Array.isArray(e)?`a:${e.length}:${e.slice(0,200).map(e=>q1(e)?Z1(e,t,n+1):J1(e,t,n+1)).join(`,`)}`:q1(e)?Z1(e,t,n):K1(e,t,n)}function Y1(e,t,n){return Object.keys(e).sort().filter(e=>e!==`children`&&!N1.includes(e)).map(r=>{let i=e[r];return typeof i==`string`?`${r}=s:${G1(i)}`:typeof i==`number`||typeof i==`boolean`||i==null?`${r}=${String(i)}`:typeof i==`function`?`${r}=fn:${z1(i)}`:M1.has(r)&&(Array.isArray(i)||typeof i==`object`)?`${r}=${J1(i,t,n+1)}`:i&&typeof i==`object`?`${r}=object:${z1(i)}`:``}).filter(Boolean).join(`;`)}function X1(e){return N1.map(t=>{let n=e[t];return typeof n==`string`?`${t}=s:${G1(n)}`:``}).filter(Boolean).join(`;`)}function Z1(e,t=new WeakMap,n=0){let r=F1.get(e);if(r)return r;let i=e,a=t.get(i);if(a)return`node-cycle:${a}`;if(n>=6)return`node:${e.type}:${z1(i)}`;let o=z1(i);t.set(i,o);let s=function(e,t,n){let r=e,i=Array.isArray(r.children)?r.children:[],a=i.length?i.slice(0,200).map(e=>Z1(e,t,n+1)).join(`|`):``;return[e.type,X1(r),Y1(r,t,n),i.length,a].join(`:`)}(e,t,n);return F1.set(i,s),s}function Q1(e,t){return Z1(e)===Z1(t)}function $1(e,t,n){let r=L1(),i=t===`stabilizeSignatureMs`?`stabilizeSignatureCallCount`:`primeSignatureCallCount`;try{return n()}finally{e[t]+=L1()-r,e[i]+=1,e.signatureMs=e.stabilizeSignatureMs+e.primeSignatureMs,e.signatureCallCount=e.stabilizeSignatureCallCount+e.primeSignatureCallCount}}function e0(e,t,n){return $1(t,n,()=>Z1(e))}function t0(e,t,n){return e0(e,n,`stabilizeSignatureMs`)===e0(t,n,`stabilizeSignatureMs`)}function n0(e){return{reusedNodeCount:0,dirtyStartIndex:e>0?0:-1,stablePrefixNodeCount:0,dirtyTailNodeCount:e}}function r0(e,t,n){return e<0?0:Math.max(t.length,n.length)-e}function i0(e){return!0===e.__markstreamHasCustomParserExtensions||function(e){return Number(e.__markstreamRegisteredPluginCount??0)>0}(e)}function a0(e,t){return e.length===t.length&&e===t}function o0(e,t,n=0){if(n>=4)return null;if(e.type!==t.type)return!1;let r=e,i=t,a=Object.keys(r).filter(e=>e!==`type`&&e!==`children`).sort(),o=Object.keys(i).filter(e=>e!==`type`&&e!==`children`).sort();if(a.length!==o.length)return!1;for(let e=0;e{r=o0(e,t)}),r??t0(e,t,n)}function l0(e,t){let n={};for(let r of A1){let i=e[r],a=t?.[r];typeof i==`number`&&(n[r]=i-(typeof a==`number`?a:0))}return n}function u0(e,t){let n=qK(t.instanceMsgId),i=new Map,a=t.smoothStreamingEnabled??R(()=>!1),o=z(t.renderContent.value),s=[],c=``,u=``,d=``,f=!1,p=function(){let e=``,t=0,n=!1,r=!1,i=!1,a=!1;function o(){e=``,t=0,n=!1,r=!1,i=!1,a=!1}function s(e){let o=!1;for(let s=0;s{if(!t||!n.startsWith(t)||n.length<=t.length)return o(),[!0,0];let r=0;e!==t&&(o(),s(t),r=t.length);let i=n.slice(t.length),a=s(i);return e=n,[a,r+i.length]}}(),m,h=0,g=0,_=L1(),y=-1,b=0;function x(e){y=Number.isInteger(e)?e:0,b+=1}function S(){m&&=(clearTimeout(m),void 0)}function C(){S();let e=t.renderContent.value;o.value!==e&&(o.value=e),_=L1()}l([t.renderContent,t.effectiveFinal,a],([t,n,r])=>{o.value!==t&&(!r||n||function(e,t){if(!e&&t||t.length<=80||t.length\s*|`{3,}|~{3,})/.test(n))||n.endsWith(` -`)&&!function(e){let t=V1(e);if(H1(t))return!1;let n=U1(t);return n.length>=2&&n.some(e=>e.trim())}(t))}(o.value,t)?C():function(){if(g+=1,m)return;let t=Math.max(0,function(e){let t=e.parseCoalesceMs;return typeof t==`number`&&Number.isFinite(t)&&t>=0?t:80}(e)-(L1()-_));t<=0?C():m=setTimeout(C,t)}())},{flush:`sync`,immediate:!0}),r(S);let w=R(()=>{var n;return SL(e.customHtmlTags,e.parseOptions?.customHtmlTags,(n=t.customComponentsMap?.value??{},Object.entries(n).map(([e,t])=>{let n=bL(e);return t==null||!n||dY(n)||WI.has(n)||qI.has(n)?``:n}).filter(Boolean)))}),T=R(()=>{let{key:e,tags:r}=CL(w.value);if(!e)return n;let a=i.get(e);if(a)return a;let o=qK(t.instanceMsgId,{customHtmlTags:r});return i.set(e,o),o}),E=R(()=>{let t=T.value;if(!e.customMarkdownIt)return t;let n=e.customMarkdownIt(t);return t.__markstreamHasCustomParserExtensions=!0,n.__markstreamHasCustomParserExtensions=!0,n}),D=R(()=>{var n;let r=e.parseOptions??{},i=t.effectiveFinal.value,a=w.value,o=i!=null,s=a.length>0;return o||s||r.streamParse==null?Q(Q(rY(Q({},r),{streamParse:(n=r.streamParse)==null||n}),o?{final:i}:{}),s?{customHtmlTags:a}:{}):r}),O=R(()=>new Set((D.value.customHtmlTags??[]).map(e=>String(e).trim().toLowerCase()).filter(Boolean))),k=R(()=>B1(D.value,E.value,e.customMarkdownIt,{includeFinal:!0})),A=R(()=>B1(D.value,E.value,e.customMarkdownIt,{includeFinal:!1}));return l([k,A],([e,t],[n,r])=>{n&&(e===n&&t===r||(C(),t!==r&&(s=[],d=``)))},{flush:`sync`}),{effectiveCustomHtmlTags:w,effectiveCustomHtmlTagsSet:O,mdBase:T,mdInstance:E,mergedParseOptions:D,getParsedNodesDirtyStartIndex:()=>y,getParsedNodesRevision:()=>b,parsedNodes:R(()=>{if(e.nodes?.length)return s=[],d=``,x(0),v(e.nodes.slice());let n=o.value;if(!n)return s=[],d=``,x(-1),[];let r=t.debugPerformanceEnabled.value,i=r?L1():0,a=E.value,l=k.value,m=A.value;c&&l!==c&&function(e){var t,n;(n=(t=e.stream)?.reset)==null||n.call(t)}(a),u&&m!==u&&(s=[],d=``);let _=Object.keys(t.customComponentsMap?.value??{}).length>0||typeof D.value.postTransformNodes==`function`;_!==f&&(s=[],d=``);let b=!_&&s.length>0&&n.startsWith(d)&&m===u,S=r?R1(a):null,C=r?{}:void 0,w=i0(a),T=!w&&!_,O=HG(n,a,Q(Q(rY(Q({},D.value),{__reuseStableTopLevelNodes:T}),w?{__disableStreamParse:!0}:{}),C?{__timing:C}:{})),j=r?L1():0,M=r?{signatureMs:0,stabilizeSignatureMs:0,primeSignatureMs:0,signatureCallCount:0,stabilizeSignatureCallCount:0,primeSignatureCallCount:0}:void 0,N,P=r?n0(O.length):void 0,F=0,ee=0,I=0;if(b){let t=r?L1():0,[i,o]=function(e){let[t,n]=e.scanGlobalReferenceAppend(e.previousContent,e.content),r=e.parseOptions;return[e.previousDirtyStartIndex>0&&!0!==r.final&&!e.customMarkdownIt&&!i0(e.md)&&!t&&typeof r.preTransformTokens!=`function`&&typeof r.postTransformTokens!=`function`&&typeof r.postTransformNodes!=`function`&&(r.customHtmlTags?.length??0)===0?e.previousDirtyStartIndex:0,n]}({content:n,previousContent:d,previousDirtyStartIndex:y,parseOptions:D.value,customMarkdownIt:e.customMarkdownIt,md:a,scanGlobalReferenceAppend:p});I=o;let c=i<=0;if(M){let e=function(e,t,n,r={}){if(!t.length)return{nodes:e,metrics:n0(e.length)};let i=r.scanStartIndex??0,a=!1!==r.reuseDirtyTail,o=function(e,t,n,r=0){let i=Math.min(e.length,t.length);for(let a=Math.min(i,Math.max(0,r));aZ1(e[r]))}(N,M,ee):function(e,t=0){for(let n=Math.max(0,t);n(S?.total??0);t.logPerf(r?`parse(stream)`:`parse(sync)`,Q(Q(Q({rendererId:t.instanceMsgId,ms:Math.round(L1()-i),nodes:N.length,contentLength:n.length,parseCommitCount:h,parseCoalescedCount:g,nodeReuseMs:L,referenceDefinitionScanChars:I,signatureMs:M?.signatureMs??0,stabilizeSignatureMs:M?.stabilizeSignatureMs??0,primeSignatureMs:M?.primeSignatureMs??0,signatureCallCount:M?.signatureCallCount??0,stabilizeSignatureCallCount:M?.stabilizeSignatureCallCount??0,primeSignatureCallCount:M?.primeSignatureCallCount??0,stabilizeMs:F},P??{}),C?Object.fromEntries(j1.map(e=>[e,C[e]??0])):{}),e?{streamMode:e.lastMode,streamDelta:l0(e,S),streamStats:e}:{}))}return v(N)})}}function d0(e){let{isClient:t}=e,n=z(new Set),r=new Map,i=new Map,a=new Map;function o(e){if(!t)return;let n=a.get(e);n!=null&&(window.clearTimeout(n),a.delete(e))}function s(){if(t)for(let e of a.values())window.clearTimeout(e);a.clear()}function c(){n.value=new Set}return{visibleNodeIndices:n,nodeVisibilityHandles:r,nodeVisibilityWatchStops:i,nodeVisibilityFallbackTimers:a,clearVisibilityFallback:o,clearAllVisibilityFallbacks:s,markNodeVisible:function(t,r=!0){var i;r&&o(t),function(t,r){if((a=(i=e.shouldTrackVisibleNodeIndices)?.call(e))!=null&&!a)return;var i,a;let o=n.value,s=o.has(t);if(r){if(s)return;let e=new Set(o);e.add(t),n.value=e;return}if(!s)return;let c=new Set(o);c.delete(t),n.value=c}(t,r),r&&((i=e.onNodeMarkedVisible)==null||i.call(e,t))},resetNodeVisibleState:c,cleanupNodeVisibility:function(t){var s;if(e.shouldCleanupNodeVisibility&&!e.shouldCleanupNodeVisibility())return;for(let[e,n]of i.entries())e{let e=a.getSnapshot();t.value=e.source,n.value=e.visible,i.value=e.done},s=a.subscribe(o);o();let c=R(()=>Math.max(0,t.value.length-n.value.length)),l=R(()=>c.value===0),u=R(()=>i.value&&l.value);return T()&&r(()=>{s(),a.destroy()}),{source:t,visible:n,done:i,final:u,caughtUp:l,pendingChars:c,enqueue:e=>a.enqueue(e),finish:e=>a.finish(e),flush:()=>a.flush(),reset:e=>a.reset(e),pause:()=>a.pause(),resume:()=>a.resume()}}var p0={maxCharsPerSecond:3e3,maxCommitFps:20,maxCharsPerCommit:160,catchUpLatencyMs:220,catchUpThreshold:400},m0=/auto|scroll|overlay/i;function h0(e){if(!e)return!1;let t=(e.overflowY||``).toLowerCase(),n=(e.overflow||``).toLowerCase();return m0.test(t)||m0.test(n)}function g0(e){let t=Math.ceil(e.scrollHeight)>Math.ceil(e.clientHeight)+1,n=Math.ceil(e.scrollWidth)>Math.ceil(e.clientWidth)+1;return t||n}var _0={class:`m-0 p-0`},v0=[`data-probe`],y0=vY(K(rY(Q({},{name:`HeightEstimationProbes`}),{__name:`HeightEstimationProbes`,props:{width:{},flowRoot:{type:Boolean},paragraphNode:{},listItemNode:{},listNode:{},headingNodes:{},setParagraphWrapper:{type:Function},setListItemWrapper:{type:Function},setListWrapper:{type:Function},setHeadingWrapper:{type:Function}},setup(e){let t=e;function n(e){return t.headingNodes?.[e]??null}return(t,r)=>(u(),G(`div`,{class:`height-estimation-probes`,style:oe({width:`${e.width}px`}),"aria-hidden":`true`},[L(`div`,{ref:t=>e.setParagraphWrapper(t),class:H([`node-content`,{"node-content-flow-root":e.flowRoot}]),"data-probe":`paragraph`},[b(B(eQ),{node:e.paragraphNode,"index-key":`probe-paragraph`},null,8,[`node`])],2),L(`div`,{ref:t=>e.setListItemWrapper(t),class:H([`node-content`,{"node-content-flow-root":e.flowRoot}]),"data-probe":`list-item`},[L(`ul`,_0,[b(B(KZ),{node:e.listItemNode,"index-key":`probe-list-item`},null,8,[`node`])])],2),L(`div`,{ref:t=>e.setListWrapper(t),class:H([`node-content`,{"node-content-flow-root":e.flowRoot}]),"data-probe":`list`},[b(B(qZ),{node:e.listNode,"index-key":`probe-list`},null,8,[`node`])],2),(u(),G(P,null,y(6,t=>L(`div`,{key:`probe-heading-${t}`,ref_for:!0,ref:n=>e.setHeadingWrapper(t,n),class:H([`node-content`,{"node-content-flow-root":e.flowRoot}]),"data-probe":`heading-${t}`},[b(B(VZ),{node:n(t),"index-key":`probe-heading-${t}`},null,8,[`node`,`index-key`])],10,v0)),64))],4))}})),[[`__scopeId`,`data-v-3e0766e2`]]),b0=K({name:`InfographicBlockNodeLoading`,props:{node:{type:Object,required:!0},showHeader:{type:Boolean,default:!0},estimatedPreviewHeightPx:{type:Number,default:void 0}},setup(e){let t=R(()=>hJ(lJ(e.estimatedPreviewHeightPx)??fJ(String(e.node.code??``))));return()=>s(`div`,{class:`infographic-block-container rounded-lg border overflow-hidden`,style:{margin:`var(--ms-flow-diagram-y) 0`,background:`var(--diagram-bg)`,borderColor:`var(--diagram-border)`,color:`hsl(var(--ms-foreground))`},"data-markstream-infographic":`1`,"data-markstream-mode":`pending`},[e.showHeader?s(`div`,{class:`infographic-block-header flex justify-between items-center border-b`,style:{padding:`var(--ms-inset-panel-y) var(--ms-inset-panel-x)`,background:`var(--diagram-header-bg)`,borderColor:`var(--diagram-border)`,minHeight:`calc(var(--ms-action-btn-icon) + var(--ms-action-btn-padding) + var(--ms-action-btn-padding) + var(--ms-inset-panel-y) + var(--ms-inset-panel-y) + 1px)`}},[s(`div`,{class:`flex items-center gap-x-2 overflow-hidden`},[s(`span`,{class:`icon-slot action-icon shrink-0`,style:{display:`inline-flex`,width:`var(--ms-action-btn-icon)`,height:`var(--ms-action-btn-icon)`}}),s(`span`,{class:`infographic-label font-medium font-mono truncate`,style:{fontSize:`var(--ms-text-label)`,color:`hsl(var(--ms-muted-foreground))`}},`Infographic`)]),s(`div`,{class:`infographic-header-actions flex items-center opacity-0 pointer-events-none`,style:{gap:`var(--ms-gap-header-actions)`},"aria-hidden":`true`},Array.from({length:4},()=>s(`span`,{class:`infographic-action-btn inline-flex items-center justify-center p-[var(--ms-action-btn-padding)] rounded`,style:{width:`calc(var(--ms-action-btn-icon) + var(--ms-action-btn-padding) + var(--ms-action-btn-padding))`,height:`calc(var(--ms-action-btn-icon) + var(--ms-action-btn-padding) + var(--ms-action-btn-padding))`}})))]):null,s(`div`,{class:`infographic-preview relative overflow-hidden block`,style:{height:`${t.value}px`,minHeight:`var(--ms-size-diagram-min-height)`,background:`var(--diagram-bg)`}},[s(`pre`,{class:`infographic-pending-source text-sm font-mono whitespace-pre-wrap`,style:{position:`absolute`,inset:`0`,zIndex:`1`,margin:`0`,padding:`var(--ms-inset-panel-body)`,overflow:`auto`,textAlign:`left`}},String(e.node.code??``)),s(`div`,{class:`absolute inset-0`},[s(`div`,{class:`w-full text-center flex items-center justify-center min-h-full`})])])])}}),x0=K({name:`MermaidBlockNodeLoading`,props:{node:{type:Object,required:!0},showHeader:{type:Boolean,default:!0},estimatedPreviewHeightPx:{type:Number,default:void 0}},setup(e){let t=R(()=>mJ(lJ(e.estimatedPreviewHeightPx)??dJ(String(e.node.code??``))));return()=>s(`div`,{class:`mermaid-block-container rounded-lg border overflow-hidden`,style:{margin:`var(--ms-flow-diagram-y) 0`,borderColor:`var(--diagram-border)`},"data-markstream-mermaid":`1`,"data-markstream-mode":`pending`},[e.showHeader?s(`div`,{class:`mermaid-block-header flex justify-between items-center border-b px-[var(--ms-inset-panel-x)] py-[var(--ms-inset-panel-y)]`,style:{background:`var(--diagram-header-bg)`,borderColor:`var(--diagram-border)`}},[s(`div`,{class:`flex items-center gap-x-2 overflow-hidden`},[s(`span`,{class:`mermaid-label-text text-[length:var(--ms-text-label)] font-medium font-mono truncate`,style:{color:`var(--code-action-fg)`}},`Mermaid`)]),s(`div`,{class:`mermaid-header-actions flex items-center gap-[var(--ms-gap-header-actions)] opacity-0 pointer-events-none`,"aria-hidden":`true`},Array.from({length:4},()=>s(`span`,{class:`mermaid-action-btn inline-flex items-center justify-center p-[var(--ms-action-btn-padding)] rounded`},[s(`span`,{class:`action-icon block`})])))]):null,s(`div`,{class:`mermaid-preview-area relative overflow-hidden block`,style:{height:`${t.value}px`,minHeight:`var(--ms-size-diagram-min-height)`,background:`var(--diagram-bg)`}},[s(`pre`,{class:`mermaid-source-code text-sm font-mono whitespace-pre-wrap`,style:{position:`absolute`,inset:`0`,margin:`0`,padding:`var(--ms-inset-panel-body)`,overflow:`auto`,textAlign:`left`}},String(e.node.code??``)),s(`div`,{class:`_mermaid w-full text-center flex items-center justify-center min-h-full`,style:{fontFamily:`inherit`,contentVisibility:`auto`,contain:`content`,containIntrinsicSize:`var(--ms-size-diagram-min-height) 240px`}})])])}}),S0={docs:{showTooltips:!0,fade:!0,batchRendering:!0,initialRenderBatchSize:40,renderBatchSize:80,renderBatchDelay:16,renderBatchBudgetMs:6,renderBatchIdleTimeoutMs:120,deferNodesUntilVisible:!0,maxLiveNodes:220,liveNodeBuffer:60,nodeVirtual:`auto`},chat:{showTooltips:!1,fade:!1,batchRendering:!0,initialRenderBatchSize:32,renderBatchSize:48,renderBatchDelay:6,renderBatchBudgetMs:8,renderBatchIdleTimeoutMs:60,deferNodesUntilVisible:!0,maxLiveNodes:0,liveNodeBuffer:0,nodeVirtual:`auto`},minimal:{showTooltips:!1,fade:!1,batchRendering:!0,initialRenderBatchSize:32,renderBatchSize:48,renderBatchDelay:6,renderBatchBudgetMs:8,renderBatchIdleTimeoutMs:60,deferNodesUntilVisible:!0,maxLiveNodes:0,liveNodeBuffer:0,nodeVirtual:`auto`}};function C0(e){if(e==null)return``;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e)}catch{return String(e)}}var w0=[`data-custom-id`],T0=[`data-node-index`,`data-node-type`],E0=`typewriter-simple-cursor-target`,D0=vY(K(rY(Q({},{name:`NodeRenderer`}),{__name:`NodeRenderer`,props:{content:{},nodes:{},final:{type:Boolean},parseOptions:{},customMarkdownIt:{},debugPerformance:{type:Boolean,default:!1},customHtmlTags:{},mode:{},domMode:{},htmlPolicy:{},viewportPriority:{type:Boolean,default:void 0},viewportPriorityOptions:{},codeBlockStream:{type:Boolean,default:!0},codeBlockDarkTheme:{},codeBlockLightTheme:{},codeBlockMonacoOptions:{},codeRenderer:{},renderCodeBlocksAsPre:{type:Boolean,default:void 0},codeBlockMinWidth:{},codeBlockMaxWidth:{},codeBlockProps:{},mermaidProps:{},d2Props:{},infographicProps:{},showTooltips:{type:Boolean,default:void 0},themes:{},langs:{},isDark:{type:Boolean},customId:{},indexKey:{},typewriter:{type:[Boolean,String],default:!1},smoothStreaming:{type:[Boolean,String],default:`auto`},smoothStreamingOptions:{},parseCoalesceMs:{},fade:{type:Boolean,default:void 0},batchRendering:{type:Boolean,default:void 0},initialRenderBatchSize:{},renderBatchSize:{},renderBatchDelay:{},renderBatchBudgetMs:{},renderBatchIdleTimeoutMs:{},deferNodesUntilVisible:{type:Boolean,default:void 0},maxLiveNodes:{},liveNodeBuffer:{},nodeVirtual:{type:[Boolean,String],default:void 0},virtualScroll:{},renderAsFragment:{type:Boolean}},emits:[`copy`,`copy-code`,`handleArtifactClick`,`click`,`mouseover`,`mouseout`,`virtual-state-change`,`height-change`,`render-settled`,`render-final`,`anchor-change`],setup(e,{expose:t,emit:n}){let r=e,s=n;function c(e){if(!(typeof Event<`u`&&e instanceof Event))return typeof e==`string`&&s(`copy-code`,e),void s(`copy`,e)}let d=x(),m=g(`markstreamNestedRendererProps`,void 0);function _(e){let t=d?.vnode.props;return!!t&&(Object.prototype.hasOwnProperty.call(t,e)||Object.prototype.hasOwnProperty.call(t,String(e).replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)))}function b(e){let t=r[e];return _(e)?t:m?.value?.[e]??t}let w=R(()=>{return(e=b(`mode`))===`chat`||e===`minimal`||e===`docs`?e:`docs`;var e}),T=R(()=>_1(b(`typewriter`))),E=R(()=>T.value!==`off`),D=R(()=>b(`domMode`)===`minimal`?`minimal`:`full`),k=R(()=>{return!0===(e={mode:w.value,codeRenderer:b(`codeRenderer`),renderCodeBlocksAsPre:b(`renderCodeBlocksAsPre`)}).renderCodeBlocksAsPre?`pre`:e.codeRenderer===`pre`||e.codeRenderer===`shiki`||e.codeRenderer===`monaco`?e.codeRenderer:!1===e.renderCodeBlocksAsPre||e.mode===`docs`?`monaco`:`pre`;var e}),j=R(()=>S0[w.value]),M=R(()=>b(`showTooltips`)??j.value.showTooltips),N=R(()=>b(`fade`)??j.value.fade),ee=R(()=>b(`batchRendering`)??j.value.batchRendering),L=R(()=>b(`initialRenderBatchSize`)??j.value.initialRenderBatchSize),te=R(()=>b(`renderBatchSize`)??j.value.renderBatchSize),ne=R(()=>b(`renderBatchDelay`)??j.value.renderBatchDelay),ae=R(()=>b(`renderBatchBudgetMs`)??j.value.renderBatchBudgetMs),ce=R(()=>b(`renderBatchIdleTimeoutMs`)??j.value.renderBatchIdleTimeoutMs),le=R(()=>b(`deferNodesUntilVisible`)??j.value.deferNodesUntilVisible),ue=R(()=>b(`maxLiveNodes`)??j.value.maxLiveNodes),fe=R(()=>b(`liveNodeBuffer`)??j.value.liveNodeBuffer),pe=R(()=>b(`nodeVirtual`)??j.value.nodeVirtual),U={get content(){return r.content},get nodes(){return r.nodes},get final(){return r.final},get parseOptions(){return b(`parseOptions`)},get customMarkdownIt(){return b(`customMarkdownIt`)},get debugPerformance(){return r.debugPerformance},get customHtmlTags(){return b(`customHtmlTags`)},get mode(){return b(`mode`)},get domMode(){return D.value},get htmlPolicy(){return b(`htmlPolicy`)},get viewportPriority(){return b(`viewportPriority`)},get viewportPriorityOptions(){return b(`viewportPriorityOptions`)},get codeBlockStream(){return b(`codeBlockStream`)},get codeBlockDarkTheme(){return b(`codeBlockDarkTheme`)},get codeBlockLightTheme(){return b(`codeBlockLightTheme`)},get codeBlockMonacoOptions(){return b(`codeBlockMonacoOptions`)},get codeRenderer(){return b(`codeRenderer`)},get renderCodeBlocksAsPre(){return b(`renderCodeBlocksAsPre`)},get codeBlockMinWidth(){return b(`codeBlockMinWidth`)},get codeBlockMaxWidth(){return b(`codeBlockMaxWidth`)},get codeBlockProps(){return b(`codeBlockProps`)},get mermaidProps(){return b(`mermaidProps`)},get d2Props(){return b(`d2Props`)},get infographicProps(){return b(`infographicProps`)},get showTooltips(){return M.value},get themes(){return b(`themes`)},get langs(){return b(`langs`)},get isDark(){return b(`isDark`)},get customId(){return b(`customId`)},get indexKey(){return r.indexKey},get typewriter(){return b(`typewriter`)},get smoothStreaming(){return r.smoothStreaming},get smoothStreamingOptions(){return b(`smoothStreamingOptions`)},get parseCoalesceMs(){return b(`parseCoalesceMs`)},get fade(){return N.value},get batchRendering(){return ee.value},get initialRenderBatchSize(){return L.value},get renderBatchSize(){return te.value},get renderBatchDelay(){return ne.value},get renderBatchBudgetMs(){return ae.value},get renderBatchIdleTimeoutMs(){return ce.value},get deferNodesUntilVisible(){return le.value},get maxLiveNodes(){return ue.value},get liveNodeBuffer(){return fe.value},get nodeVirtual(){return pe.value},get virtualScroll(){return r.virtualScroll},get renderAsFragment(){return r.renderAsFragment}};function W(e){s(`height-change`,e)}function K(e){s(`virtual-state-change`,e)}function q(e){s(`anchor-change`,e)}let me=z(),he=z(null),_e=z(null),ve=z(null),ye=F({1:null,2:null,3:null,4:null,5:null,6:null}),be=z(!1),xe=new Map,Se=z(0),Ce=z(0),we=z({paragraph:null,listItem:null,listWrapperOverhead:0,headings:{1:null,2:null,3:null,4:null,5:null,6:null}});function Te(e,t){return typeof e==`string`&&e.trim()||t}function Ee(e){let t=Number(e);return Number.isFinite(t)&&t>0?Math.max(1,Math.trunc(t)):640}let De=R(()=>{let e=U.viewportPriorityOptions??{},t=Te(e.rootMargin,mX);return{rootMargin:t,heavyBlockMargin:Te(e.heavyBlockMargin,t),maxTargets:Ee(e.maxTargets)}}),Oe=R(()=>De.value.rootMargin??mX),ke=R(()=>De.value.maxTargets??640);function Ae(){if(!0!==r.virtualScroll?.enabled)return null;let e=r.virtualScroll?.scrollRoot;return je(typeof e==`function`?e():e)}function je(e){return e?typeof HTMLElement<`u`&&e instanceof HTMLElement?e:typeof e==`object`&&`value`in e?je(e.value):typeof e==`object`&&`$el`in e?je(e.$el):null:null}p(dX,De);let{isClient:Me,renderAsFragment:Ne,debugPerformanceEnabled:Pe,resolvedShowTooltips:Fe,resolvedHtmlPolicy:Ie,inheritedSmoothStreaming:Le,ownsTypewriterCursor:Re}=function(e){let t=typeof window<`u`,n=S(),r=g(`markstreamHtmlPolicy`,void 0),i=g(`markstreamTypewriterCursor`,void 0),a=g(`markstreamSmoothStreaming`,void 0);return{isClient:t,renderAsFragment:R(()=>!0===e.renderAsFragment),debugPerformanceEnabled:R(()=>!!(e.debugPerformance&&t&&typeof console<`u`)),resolvedShowTooltips:R(()=>{if(typeof e.showTooltips==`boolean`)return e.showTooltips;let t=n.showTooltips??n[`show-tooltips`];return t===``||!0===t||t===`true`||!1!==t&&t!==`false`&&void 0}),resolvedHtmlPolicy:R(()=>e.htmlPolicy??r?.value??`safe`),inheritedSmoothStreaming:a,inheritedTypewriterCursor:i,ownsTypewriterCursor:R(()=>!0!==i?.value)}}(U),{resolveViewportRoot:ze,resolveScrollContainer:Be,isReverseFlexScrollRoot:Ve,getNormalizedScrollTop:He,getOffsetTopWithinRoot:Ue}=function(e,t){function n(){return t.scrollRoot?.call(t)??null}function r(t){if(typeof window>`u`)return null;let r=n();if(r)return r;let i=t??e.value;if(!i)return null;let a=i.ownerDocument||document,o=a.scrollingElement||a.documentElement,s=i;for(;s&&s!==a.body&&s!==o;){if(h0(window.getComputedStyle(s))&&g0(s))return s;s=s.parentElement}return null}function i(e){if(!t.isClient)return!1;try{let t=window.getComputedStyle(e);return!!(t.display||``).toLowerCase().includes(`flex`)&&(t.flexDirection||``).toLowerCase().endsWith(`reverse`)}catch{return!1}}function a(e,t,n){if(n)return o(t);let r=e.scrollTop;if(!i(e))return r;let a=r<0?-r:r;return Math.max(0,(e.scrollHeight??0)-(e.clientHeight??0))-a}function o(e){let t=Number(e.scrollingElement?.scrollTop),n=Number(e.documentElement?.scrollTop??0),r=Number(e.body?.scrollTop??0);return Math.max(0,Number.isFinite(t)?t:0,Number.isFinite(n)?n:0,Number.isFinite(r)?r:0)}return{resolveViewportRoot:r,resolveScrollContainer:function(t){let i=n();if(i)return i;let a=r(t??e.value??null);if(a)return a;let o=t?.ownerDocument??e.value?.ownerDocument??(typeof document<`u`?document:null);return o?.scrollingElement||o?.documentElement||null},isReverseFlexScrollRoot:i,getNormalizedScrollTop:a,getOffsetTopWithinRoot:function(e,t){let n=t.ownerDocument||e.ownerDocument||document;if(function(e,t){return e===t.documentElement||e===t.body||e===t.scrollingElement}(t,n))return e.getBoundingClientRect().top+o(n);let r=t.getBoundingClientRect(),i=e.getBoundingClientRect(),s=a(t,n,!1);return i.top-r.top+s}}}(me,{isClient:Me,scrollRoot:Ae});p(`markstreamShowTooltips`,Fe),p(`markstreamHtmlPolicy`,Ie),p(`markstreamTypewriter`,E),p(`markstreamFade`,R(()=>!1!==U.fade)),p(`markstreamTypewriterCursor`,R(()=>!0)),p(`markstreamTextStreamState`,xe),p(`markstreamStreamVersion`,Se),p(`markstreamParseOptions`,R(()=>U.parseOptions)),p(`markstreamCustomMarkdownIt`,R(()=>U.customMarkdownIt));let{smoothStreamingEnabled:We,renderContent:Ge,requestedFinal:Ke,effectiveFinal:qe}=function(e,t){let n=f0(Q(Q({},p0),e.smoothStreamingOptions)),r=R(()=>!1!==e.smoothStreaming&&!e.nodes?.length&&(!0===e.smoothStreaming||!t.inheritedSmoothStreaming?.value)&&(!0===e.smoothStreaming||_1(e.typewriter)!==`off`||(e.maxLiveNodes??0)<=0)),i=z(!t.isClient||!0===e.smoothStreaming);h(()=>{i.value=!0});let a=R(()=>i.value&&r.value),o=R(()=>a.value?n.visible.value:e.content??``),s=R(()=>{let t=e.parseOptions??{};return e.final??t.final}),c=R(()=>{let e=s.value;return a.value&&e!=null?!!e&&n.caughtUp.value:e}),u=0,d=!1;function f(){u=0,d=!1}return l([()=>e.content,()=>e.nodes,a,s],([e,t,r,i])=>{if(t?.length)return f(),void n.reset(``);let a=e??``;if(!r)return f(),n.reset(a),void(i&&n.finish({flush:!0}));let o=n.source.value;if(a){if(a!==o)if(a.startsWith(o)){let e=a.slice(o.length),t=n.pendingChars.value;e.length<=8?(u++,d||u>=2&&t<=8?(d=!0,n.reset(a)):n.enqueue(e)):(f(),n.enqueue(e))}else f(),n.reset(a)}else f(),n.reset(``);i&&n.finish()},{immediate:!0}),{smoothStream:n,smoothStreamingEligible:r,smoothStreamingEnabled:a,renderContent:o,requestedFinal:s,effectiveFinal:c}}(U,{isClient:Me,inheritedSmoothStreaming:Le}),Je=!0===Ke.value;p(`markstreamSmoothStreaming`,We);let Ye=z(!1),Xe=z(!1),Ze=z(!1),Qe=``,$e=!1,et=null;function tt(){Me&&et!=null&&(window.clearTimeout(et),et=null)}function nt(){Ye.value=!1,tt()}function rt(e,t){if(!Pe.value)return;let n=function(){if(!Pe.value)return null;let e=ct(it),t=ct(at),n=Math.max(st,t);if(e<=0&&n<=0)return null;let r={total:e,maxPerFrame:n,byLabel:(i=it,Object.fromEntries(Array.from(i.entries()).sort((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0]))))};var i;return it.clear(),at.clear(),st=0,r}();console.info(`[markstream-vue][perf] ${e}`,n?rY(Q({},t),{layoutReads:n}):t)}l([()=>U.indexKey,()=>U.customId],()=>{nt(),Xe.value=!1,Ze.value=!r.nodes?.length&&!0!==Ke.value&&!!r.content,Qe=Ge.value??``,$e=Qe.length>0},{flush:`sync`}),l([()=>r.content,()=>r.nodes,Ke],([e,t,n])=>{!t?.length&&!0!==n&&e&&(Ze.value=!0)},{flush:`sync`,immediate:!0}),l([Ge,()=>r.nodes,Ke],([e,t,n])=>{let i=e??``;t?.length||!0===n?(nt(),Xe.value=!1,Qe=i,$e=!0):(i.length>0&&(Ze.value=!0),$e?(Qe&&i.length>Qe.length&&i.startsWith(Qe)?(Ye.value=!0,Xe.value=!0,Me&&(tt(),et=window.setTimeout(()=>{var e;et=null,!0===qe.value||(e=r.nodes)!=null&&e.length||(mo(),Ye.value=!1,go())},1200))):(i.length`u`)return null;let e=window;if(e.__markstreamLayoutReadPerformance)return e.__markstreamLayoutReadPerformance;let t={total:0,maxPerFrame:0,byLabel:{}};return e.__markstreamLayoutReadPerformance=t,t}();t&&(t.total=Number(t.total||0)+1,t.byLabel[e]=Number(t.byLabel[e]||0)+1,t.currentFrameTotal=Number(t.currentFrameTotal||0)+1,t.frameScheduled||(t.frameScheduled=!0,typeof window.requestAnimationFrame==`function`?window.requestAnimationFrame(()=>ut(t)):typeof queueMicrotask==`function`?queueMicrotask(()=>ut(t)):setTimeout(()=>ut(t),0)))}(e),ot||(ot=!0,Me&&typeof window<`u`&&typeof window.requestAnimationFrame==`function`?window.requestAnimationFrame(lt):typeof queueMicrotask==`function`?queueMicrotask(lt):setTimeout(lt,0)))}function ft(e,t){return dt(e),t()}let pt=U.customId?`renderer-${U.customId}`:`renderer-${Date.now()}-${Math.random().toString(36).slice(2)}`,mt=function(e){let t=new Map;return{scope:e,cache:t,clear:()=>t.clear()}}(pt),ht=pt;p(v1,mt);let gt=mY(()=>U.customId),{effectiveCustomHtmlTagsSet:_t,mergedParseOptions:vt,parsedNodes:yt,getParsedNodesDirtyStartIndex:bt,getParsedNodesRevision:xt}=u0(U,{instanceMsgId:pt,renderContent:Ge,effectiveFinal:qe,smoothStreamingEnabled:We,debugPerformanceEnabled:Pe,customComponentsMap:gt,logPerf:rt});l(yt,()=>{Ye.value||mt.clear(),Se.value+=1},{immediate:!0});let St=R(()=>({customId:U.customId,customHtmlTags:vt.value.customHtmlTags,parseOptions:U.parseOptions,customMarkdownIt:U.customMarkdownIt,htmlPolicy:Ie.value,viewportPriority:U.viewportPriority,viewportPriorityOptions:De.value,mode:w.value,domMode:U.domMode,codeRenderer:k.value,codeBlockStream:U.codeBlockStream,codeBlockDarkTheme:U.codeBlockDarkTheme,codeBlockLightTheme:U.codeBlockLightTheme,codeBlockMonacoOptions:U.codeBlockMonacoOptions,renderCodeBlocksAsPre:U.renderCodeBlocksAsPre,codeBlockMinWidth:U.codeBlockMinWidth,codeBlockMaxWidth:U.codeBlockMaxWidth,codeBlockProps:U.codeBlockProps,mermaidProps:U.mermaidProps,d2Props:U.d2Props,infographicProps:U.infographicProps,showTooltips:Fe.value,themes:U.themes,langs:U.langs,isDark:U.isDark,typewriter:E.value,smoothStreamingOptions:U.smoothStreamingOptions,parseCoalesceMs:U.parseCoalesceMs,fade:U.fade}));p(`markstreamNestedRendererProps`,St);let Ct=R(()=>yt.value),wt=R(()=>yt.value.length),Tt=z(null),Et=z(null),Dt=z(null),Ot=z(null),kt=r.indexKey!=null&&String(r.indexKey).startsWith(`list-item-`),At=!kt&&U.customId?n1(U.customId):null,jt=R(()=>At?(t1.value,n1(U.customId)):null),Mt=R(()=>!!(!Ne.value&&U.customId&&!kt&&jt.value?.enabled)),Nt=R(()=>!!(Me&&Mt.value)),Pt=R(()=>!!(!Ne.value&&r.virtualScroll?.enabled)),Ft=R(()=>Pt.value),It=z(!1);h(()=>{It.value=!0});let Lt=R(()=>!!(Me&&Pt.value));p(`markstreamHostScrollManaged`,Lt);let Rt=R(()=>!!(It.value&&Lt.value)),zt=R(()=>Nt.value||Lt.value),Bt=R(()=>Nt.value||Rt.value),Vt=R(()=>zt.value&&!1!==jt.value?.textEstimation);function Ht(){let e=Ce.value||ft(`getMeasuredContainerWidth.clientWidth`,()=>me.value?.clientWidth||0);return Number.isFinite(e)&&e>0?e:0}let Ut=R(()=>{let e=Ht();return e>0?Math.max(1,Math.round(e)):640}),Wt=R(()=>!(!0!==qe.value||Pt.value||w.value!==`chat`&&w.value!==`minimal`||_(`maxLiveNodes`)||_(`liveNodeBuffer`)||r.nodes?.length||Ze.value||!((U.maxLiveNodes??0)<=0))),Gt=R(()=>Wt.value?50:Math.max(1,U.maxLiveNodes??320)),Kt=R(()=>Wt.value?16:Math.max(0,U.liveNodeBuffer??60)),qt=R(()=>!Ne.value&&!1!==U.nodeVirtual&&!((U.maxLiveNodes??0)<=0&&!Wt.value)&&(!0===U.nodeVirtual?yt.value.length>0:yt.value.length>Gt.value)),Jt=R(()=>qt.value||Nt.value||Lt.value),Yt=R(()=>!1!==U.viewportPriority),Xt=R(()=>!!Yt.value&&!be.value);p(fX,R(()=>Yt.value));let Zt=R(()=>!(Ne.value||!1===U.deferNodesUntilVisible||(U.maxLiveNodes??0)<=0||qt.value||yt.value.length>900||!1===U.viewportPriority)),Qt=_X(e=>ze(e??me.value??null),Yt),{requestFrame:$t,cancelFrame:en,hasIdleCallback:tn,isTestEnv:nn}=function(e){return{requestFrame:e.isClient&&typeof window.requestAnimationFrame==`function`?window.requestAnimationFrame.bind(window):null,cancelFrame:e.isClient&&typeof window.cancelAnimationFrame==`function`?window.cancelAnimationFrame.bind(window):null,hasIdleCallback:e.isClient&&typeof window.requestIdleCallback==`function`,isTestEnv:function(){return typeof globalThis>`u`||!(`process`in globalThis)?void 0:Object.getOwnPropertyDescriptor(globalThis,`process`)?.value?.env}()?.NODE_ENV===`test`}}({isClient:Me}),rn=R(()=>!0===qe.value&&!Pt.value),{resolvedBatchSize:an,resolvedInitialBatch:on,batchingEnabled:sn,incrementalRenderingActive:cn,renderedCount:ln,previousRenderContext:un,adaptiveBatchSize:dn,previousBatchConfig:fn}=function(e,t){let n=R(()=>{let t=Math.trunc(e.renderBatchSize??80);return Number.isFinite(t)?Math.max(0,t):0}),r=R(()=>{let t=Math.trunc(e.initialRenderBatchSize??n.value);return Number.isFinite(t)?Math.max(0,t):n.value}),i=R(()=>!t.renderAsFragment.value&&!1!==e.batchRendering&&n.value>0&&t.isClient&&!t.isTestEnv),a=z(0),o=z({key:e.indexKey,total:0}),s=z(Math.max(1,n.value||1)),c=R(()=>i.value&&!t.continuousStreaming?.value&&!t.forceFullRenderFinalContent?.value&&(e.maxLiveNodes??0)<=0);return{resolvedBatchSize:n,resolvedInitialBatch:r,batchingEnabled:i,incrementalRenderingActive:c,renderedCount:a,previousRenderContext:o,adaptiveBatchSize:s,previousBatchConfig:z({batchSize:n.value,initial:r.value,delay:e.renderBatchDelay??16,enabled:c.value})}}(U,{isClient:Me,isTestEnv:nn,renderAsFragment:Ne,forceFullRenderFinalContent:rn,continuousStreaming:R(()=>Xe.value&&!0!==qe.value)}),pn=R(()=>!Ne.value&&!1!==U.batchRendering&&an.value>0&&!nn&&(U.maxLiveNodes??0)<=0&&!rn.value),mn=R(()=>pn.value),hn=R(()=>zt.value||mn.value),gn=R(()=>hn.value&&!1!==jt.value?.codeBlockEstimation),_n=new Map,vn=new Map,yn=new WeakMap,bn=null,xn=new WeakMap,Sn=new Map,Cn=[],wn=[],Tn=[],En=-1,Dn=de(Cn),On=new Set,kn=z(0),An=0,jn=z(0),Mn=R(()=>(jn.value,Array.from(_n.entries()).sort((e,t)=>e[0]-t[0]))),Nn=z(null),Pn=z(null),Fn,In=null,Ln=0,Rn=null;function zn(){Fn.markFallbackHeightPrefixDirty()}function Bn(e){return Fn.getFallbackNodeHeight(e)}function Vn(e,t){return Fn.estimateHeightRange(e,t)}function Hn(e){return Fn.estimateIndexForOffset(e)}let{activeRestoreAnchor:Un,getRelativeScrollTopWithinContainer:Wn,setRelativeScrollTopWithinContainer:Gn,resolveAnchorOffset:Kn,clearRestoreReconcile:qn,scheduleRestoreReconcile:Jn,captureRestoreAnchor:Yn,restoreAnchor:Xn,getAnchorDrift:Zn}=function(e){let{isClient:t,containerRef:n,parsedNodeCount:r,requestFrame:i,cancelFrame:a,resolveScrollContainer:o,getNormalizedScrollTop:s,getOffsetTopWithinRoot:c,isReverseFlexScrollRoot:l,estimateIndexForOffset:u,estimateHeightRange:d,getFallbackNodeHeight:f,clamp:p}=e,m=z(null),h=null,g=[];function _(){let e=o(),t=n.value;if(!e||!t)return null;let r=e.ownerDocument||t.ownerDocument||document;if(e===r.documentElement||e===r.body||e===r.scrollingElement){let e=t.getBoundingClientRect();return Math.max(0,-e.top)}return Math.max(0,s(e,r,!1)-c(t,e))}function v(e){var t;let r=o(),i=n.value;if(!r||!i)return;let a=Math.max(0,e),u=r.ownerDocument||i.ownerDocument||document,d=u.defaultView||(typeof window<`u`?window:null);if(r===u.documentElement||r===u.body||r===u.scrollingElement){let e=s(r,u,!0)+i.getBoundingClientRect().top;(t=d?.scrollTo)==null||t.call(d,0,Math.max(0,e+a));return}h1(r,u,c(i,r)+a,{isReverseFlexScrollRoot:e=>{var t;return(t=l?.(e))!=null&&t},getNormalizedScrollTop:s})}function y(e){let t=r.value,n=p(e.nodeIndex,0,Math.max(0,t-1));return d(0,n)+Math.max(0,e.offsetWithinNodePx)}function b(){if(h!=null&&(a?.(h),h=null),t)for(let e of g)window.clearTimeout(e);g=[]}function x(e){let t=y(e),n=_();n!=null&&Math.abs(n-t)<=.5||v(t)}return{activeRestoreAnchor:m,getRelativeScrollTopWithinContainer:_,setRelativeScrollTopWithinContainer:v,resolveAnchorOffset:y,clearRestoreReconcile:b,applyRestoreAnchor:x,scheduleRestoreReconcile:function(){m.value&&t&&h==null&&(h=i?i(()=>{h=null,m.value&&x(m.value)}):null,h==null&&m.value&&x(m.value))},captureRestoreAnchor:function(){let e=_(),t=r.value;if(e==null||t<=0)return null;let n=p(u(e+1),0,t-1),i=d(0,n),a=f(n);return{nodeIndex:n,offsetWithinNodePx:p(e-i,0,Math.max(0,a-1))}},restoreAnchor:function(e){let n=r.value;if(m.value={nodeIndex:p(e.nodeIndex,0,Math.max(0,n-1)),offsetWithinNodePx:Math.max(0,e.offsetWithinNodePx)},b(),x(m.value),t)for(let e of[0,120,280,480])g.push(window.setTimeout(()=>{m.value&&x(m.value)},e))},getAnchorDrift:function(e){let t=_();return t==null?null:t-y(e)}}}({isClient:Me,containerRef:me,parsedNodeCount:wt,requestFrame:$t,cancelFrame:en,resolveScrollContainer:()=>Nn.value||Be(),getNormalizedScrollTop:He,getOffsetTopWithinRoot:Ue,isReverseFlexScrollRoot:Ve,estimateIndexForOffset:Hn,estimateHeightRange:Vn,getFallbackNodeHeight:Bn,clamp:ui}),{nodeHeights:Qn,heightStats:$n,heightTreeSize:er,heightSumTree:tr,heightKnownTree:nr,averageNodeHeight:rr,resetHeightMeasurements:ir,pruneHeightMeasurements:ar,rebuildHeightTrees:or,recordNodeHeight:sr,removeNodeHeights:cr,exportHeightCache:lr,importHeightCache:ur,fenwickRangeSum:dr}=function(e={}){let t=F({}),n=F({total:0,count:0}),r=z(0),i=z([]),a=z([]);function o(){for(let e of Object.keys(t))delete t[Number(e)];n.total=0,n.count=0,r.value=0,i.value=[],a.value=[]}function s(e,t,n){for(let r=t+1;r0;r-=r&-r)n+=e[r];return n}function l(e){r.value=e;let n=Array(e+1).fill(0),o=Array(e+1).fill(0);for(let[r,i]of Object.entries(t)){let t=Number(r),a=Number(i);!Number.isFinite(t)||t<0||t>=e||!Number.isFinite(a)||a<=0||(s(n,t,a),s(o,t,1))}i.value=n,a.value=o}function u(e){if(!Number.isInteger(e)||e<0)return!1;let o=t[e];if(!Number.isFinite(o)||o<=0)return!1;if(delete t[e],n.total=Math.max(0,n.total-o),n.count=Math.max(0,n.count-1),r.value>e){let t=i.value,n=a.value;t.length&&n.length&&(s(t,e,-o),s(n,e,-1))}return!0}return{nodeHeights:t,heightStats:n,heightTreeSize:r,heightSumTree:i,heightKnownTree:a,averageNodeHeight:R(()=>n.count>0?Math.max(12,n.total/n.count):32),resetHeightMeasurements:o,pruneHeightMeasurements:function(e){if(e<=0)return void o();let r=0,i=0;for(let[n,a]of Object.entries(t)){let o=Number(n),s=Number(a);!Number.isFinite(o)||o<0||o>=e||!Number.isFinite(s)||s<=0?delete t[o]:(r+=s,i++)}n.total=r,n.count=i},rebuildHeightTrees:l,recordNodeHeight:function(o,c,l={}){(function(o,c,l={}){var u;if(!Number.isFinite(c)||c<=0)return!1;let d=t[o];if(d&&(!1===l.allowShrink&&co){let e=i.value,t=a.value;if(e.length&&t.length)if(d){let t=c-d;t!==0&&s(e,o,t)}else s(e,o,c),s(t,o,1)}!1!==l.notify&&((u=e.onHeightRecorded)==null||u.call(e))})(o,c,rY(Q({},l),{notify:!0}))},removeNodeHeight:function(t,n={}){var r;let i=u(t);return i&&!1!==n.notify&&((r=e.onHeightRecorded)==null||r.call(e)),i},removeNodeHeights:function(t,n={}){var r;let i=0;for(let e of t)u(Number(e))&&i++;return i>0&&!1!==n.notify&&((r=e.onHeightRecorded)==null||r.call(e)),i},exportHeightCache:function(){return Object.entries(t).map(([e,t])=>({index:Number(e),height:Number(t)})).filter(e=>Number.isFinite(e.index)&&e.index>=0&&Number.isFinite(e.height)&&e.height>0).sort((e,t)=>e.index-t.index)},importHeightCache:function(i,a={}){var o;if(!Array.isArray(i))return;let s=r.value,c=!1;if(a.mode!==`merge`){let e=Object.keys(t);if(e.length>0){for(let n of e)delete t[Number(n)];c=!0}}for(let e of i){let n=Number(e.index),r=Number(e.height);if(!Number.isInteger(n)||n<0||s>0&&n>=s||!Number.isFinite(r)||r<=0)continue;let i=t[n];i&&Math.abs(i-r)<=1||(t[n]=r,c=!0)}c&&(function(){let e=0,i=0,a=r.value;for(let[n,r]of Object.entries(t)){let o=Number(n),s=Number(r);!Number.isFinite(o)||o<0||a>0&&o>=a||!Number.isFinite(s)||s<=0?delete t[o]:(e+=s,i++)}n.total=e,n.count=i}(),s>0&&l(s),(o=e.onHeightRecorded)==null||o.call(e))},fenwickRangeSum:function(e,t,n){if(n<=t)return 0;let r=c(e,n-1);return t<=0?r:r-c(e,t-1)}}}({onHeightRecorded:()=>{zn(),Lt.value&&To(),Un.value&&Jn(),Pn.value&&Sa(),so(`node-resize`)}});function fr(e){Number.isInteger(e)&&e>=0&&On.add(e)}function pr(e){for(let t of e)fr(Number(t))}function mr(e){An++;let t=!0;try{let n=e();return t=!1!==n,n}finally{An--,An===0&&t&&kn.value++}}function hr(){wn=[],Tn=[],En=-1,On.clear(),Dn.value=Cn}function gr(){hr(),mr(()=>ir()),Sn.clear()}function _r(e){!Number.isInteger(e)||e<0||e>=yt.value.length||Sn.set(e,ma(e))}function vr(e,t,n={}){let r=Qn[e];fr(e),sr(e,t,n);let i=Qn[e];return Object.is(r,i)?(On.delete(e),!1):(i&&i>0?_r(e):r&&Sn.delete(e),!0)}function yr(e,t){let n=ft(`getNodeLayoutHeight.slot.offsetHeight`,()=>_n.get(e)?.offsetHeight??0);return n>0?n:ft(`getNodeLayoutHeight.content.offsetHeight`,()=>t.offsetHeight)}function br(e,t={}){t.mode===`merge`?pr(e.map(e=>e.index)):hr(),mr(()=>ur(e,t)),za()}let xr=R(()=>Zt.value&&Xt.value),Sr=R(()=>!Ne.value&&!1!==U.batchRendering&&an.value>0&&(U.maxLiveNodes??0)<=0),Cr=R(()=>!Ne.value&&Je&&!0===qe.value&&!qt.value&&!Pt.value&&!Mt.value&&!xr.value&&!Sr.value),wr=R(()=>!!Qt&&xr.value),Tr=R(()=>qt.value||Lt.value),{focusIndex:Er,liveRange:Dr,updateLiveRange:Or}=function(e,t){let{parsedNodeCount:n,virtualizationEnabled:r,maxLiveNodesResolved:i,liveNodeBufferResolved:a,clamp:o}=t,s=a??R(()=>Math.max(0,e.liveNodeBuffer??60)),c=z(0),l=F({start:0,end:0});return{liveNodeBufferResolved:s,focusIndex:c,liveRange:l,updateLiveRange:function(){let e=n.value;if(!r.value||e===0)return l.start=0,void(l.end=e);let t=Math.min(i.value,e),a=s.value,u=o(c.value-a,0,Math.max(0,e-t));l.start=u,l.end=Math.min(e,u+t)}}}(U,{parsedNodeCount:wt,virtualizationEnabled:qt,maxLiveNodesResolved:Gt,liveNodeBufferResolved:Kt,clamp:ui}),kr=new Map,Ar=new Map,jr=new Map,Mr=[],Nr=new Map,Pr=new Set,Fr=z(0),Ir=!1,Lr=R(()=>(Fr.value,Pr.size)),Rr=new Map,zr=new Map,Br=z(0),Vr=R(()=>{Br.value;let e=0;for(let t of Rr.values())e+=Math.max(0,t);return e}),Hr=null,Ur=R(()=>{if(!qt.value)return yt.value.length;let e=Kt.value,t=Math.max(Dr.end+e,on.value),n=Math.min(yt.value.length,t);return Math.max(ln.value,n)});function Wr(){Ir||(Ir=!0,queueMicrotask(()=>{Ir=!1,Fr.value+=1}))}function Gr(e,t,n=`node-resize`){if(!Me||typeof window>`u`)return null;let r=window.setTimeout(()=>{Pr.delete(r)&&Wr();try{t()}finally{so(n)}},Math.max(0,e));return Pr.add(r),Wr(),r}function Kr(e){Me&&e!=null&&(Pr.delete(e)&&Wr(),window.clearTimeout(e))}function qr(){if(Me&&typeof window<`u`)for(let e of Pr)window.clearTimeout(e);Pr.size&&(Pr.clear(),Wr()),Mr.length=0,jr.clear()}function Jr(e){he.value=e}function Yr(e){_e.value=e}function Xr(e){ve.value=e}let{cancelScheduledFocusSync:Zr,scheduleFocusSync:Qr}=function(e){let{isClient:t,containerRef:n,virtualizationEnabled:r,requestFrame:i,cancelFrame:a,syncFocusToScroll:o}=e,s=null;function c(){return n.value?.ownerDocument?.defaultView??(typeof window<`u`?window:null)}function l(){if(!s)return;let e=c();s.viaTimeout?e?e.clearTimeout(s.id):clearTimeout(s.id):a?.(s.id),s=null}return{cancelScheduledFocusSync:l,scheduleFocusSync:function(e={}){if(!r.value)return;if(!t)return void o(!0);if(e.immediate)return l(),void o(!0);if(s)return;let n=()=>{s=null,o()};if(i)return void(s={id:i(n),viaTimeout:!1});let a=c();s={id:a?a.setTimeout(n,16):setTimeout(n,16),viaTimeout:!0}}}}({isClient:Me,containerRef:me,virtualizationEnabled:qt,requestFrame:$t,cancelFrame:en,syncFocusToScroll:function(e=!1){if(!qt.value)return;let t=Nn.value||Be();if(!t)return;let n=t.ownerDocument||me.value?.ownerDocument||document,r=n?.defaultView||(typeof window<`u`?window:null),i=t===n?.documentElement||t===n?.body,a=yt.value.length;if(a<=0)return;if(!i&&a>0&&Ve(t)){let n=ft(`syncFocusToScroll.clientHeight`,()=>t.clientHeight||0),r=ft(`syncFocusToScroll.scrollTop`,()=>t.scrollTop),i=r<0?-r:r;li(ui((o=Math.max(0,i)+.5*Math.max(0,n),Fn.estimateIndexForOffsetFromEnd(o)),0,Math.max(0,a-1)),e);return}var o;let s=function(e,t,n,r){let i=me.value;if(!i)return null;let a=r?0:ft(`syncFocusToScroll.model.root.getBoundingClientRect`,()=>e.getBoundingClientRect().top),o=ft(`syncFocusToScroll.model.container.getBoundingClientRect`,()=>i.getBoundingClientRect().top),s=Math.max(0,a-o),c=r?ft(`syncFocusToScroll.model.viewport.clientHeight`,()=>n?.innerHeight??t.documentElement?.clientHeight??e.clientHeight??0):ft(`syncFocusToScroll.model.root.clientHeight`,()=>e.clientHeight);return ui(Hn(s+.5*Math.max(0,c)),0,Math.max(0,yt.value.length-1))}(t,n,r,i);if(s!=null)return void li(s,e);let c=i?null:ft(`syncFocusToScroll.root.getBoundingClientRect`,()=>t.getBoundingClientRect()),l=i?0:c.top,u=i?ft(`syncFocusToScroll.viewport.clientHeight`,()=>r?.innerHeight??t.clientHeight??0):c.bottom,d=Mn.value,f=null,p=null;for(let[e,t]of d){if(!t)continue;let n=ft(`syncFocusToScroll.slot.getBoundingClientRect`,()=>t.getBoundingClientRect());n.bottom<=l||n.top>=u||(f??=e,p=e)}if(f==null||p==null){let e=me.value;if(!e)return;let a=i?{top:0}:ft(`syncFocusToScroll.fallback.root.getBoundingClientRect`,()=>t.getBoundingClientRect()),o=ft(`syncFocusToScroll.fallback.scrollTop`,()=>He(t,n,i)),s=i?(()=>{let t=ft(`syncFocusToScroll.fallback.container.getBoundingClientRect`,()=>e.getBoundingClientRect()),n=(i?0:a.top)-t.top;return Math.max(0,n)})():(()=>{let n=Ue(e,t);return Math.max(0,o-n)})(),c=i?ft(`syncFocusToScroll.fallback.viewport.clientHeight`,()=>r?.innerHeight??n?.documentElement?.clientHeight??t.clientHeight??0):ft(`syncFocusToScroll.fallback.root.clientHeight`,()=>t.clientHeight);li(ui(Hn(s+.5*Math.max(0,c)),0,Math.max(0,yt.value.length-1)),!0);return}li(Math.round((f+p)/2),e)}}),{visibleNodeIndices:$r,nodeVisibilityHandles:ei,nodeVisibilityWatchStops:ti,nodeVisibilityFallbackTimers:ni,clearVisibilityFallback:ri,markNodeVisible:ii,cleanupNodeVisibility:ai,destroyNodeVisibilityState:oi}=d0({isClient:Me,shouldTrackVisibleNodeIndices:()=>xr.value,shouldCleanupNodeVisibility:()=>qt.value,onNodeMarkedVisible:e=>{qt.value?Qr():Er.value=ui(e,0,Math.max(0,yt.value.length-1))},onNodeVisibilityCleaned:e=>{_n.delete(e)&&co()}}),{cleanupScrollListener:si,setupScrollListener:ci}=function(e){let{isClient:t,virtualizationEnabled:n,listenerEnabled:r,scrollRootElement:i,resolveScrollContainer:a,scheduleFocusSync:o,onScroll:s}=e,c=null,l=null;function u(){c&&=(c(),null),l=null,i.value=null}function d(t){let n=e.getScrollTop?e.getScrollTop(t):t.scrollTop;return Math.max(0,Number.isFinite(n)?Math.abs(n):0)}return{cleanupScrollListener:u,setupScrollListener:function(){if(!t)return;if(!((e=r?.value)??n.value))return void u();var e;let f=a();if(!f)return void u();if(i.value===f&&c)return;u(),l=d(f);let p=()=>{if(s?.(),n.value){let e=function(e){let t=d(e),n=l;l=t;let r=Math.max(480,.75*(e.clientHeight||0));return n==null?t>r?{immediate:!0}:void 0:Math.abs(t-n)>r?{immediate:!0}:void 0}(f);e?o(e):o()}};f.addEventListener(`scroll`,p,{passive:!0}),i.value=f,c=()=>{f.removeEventListener(`scroll`,p)}}}}({isClient:Me,virtualizationEnabled:qt,listenerEnabled:Tr,scrollRootElement:Nn,resolveScrollContainer:Be,scheduleFocusSync:Qr,onScroll:function(){let e=Pn.value;if(!e)return;let t=ra();if(!t||function(e){if(Za()>=Ln)return Rn=null,!1;let t=Rn;if(t==null)return!0;let n=Math.abs(e.scrollTop-t)<=2;return n||(Rn=null),n}(t))return;let n=aa(t);(n==null||n<-32||Math.abs(Math.max(0,n)-Math.max(0,e.distanceFromBottomPx))>32)&&xa(`restore`)},getScrollTop:e=>{let t=e.ownerDocument||me.value?.ownerDocument||document,n=e===t.documentElement||e===t.body||e===t.scrollingElement;return ft(`scrollListener.getScrollTop`,()=>He(e,t,n))}});function li(e,t=!1){let n=ui(e,0,Math.max(0,yt.value.length-1));!t&&Math.abs(n-Er.value)<=1||(Er.value=n,Or())}function ui(e,t,n){return Math.min(Math.max(e,t),n)}function di(e=yt.value.length){let t=bt();return!Number.isInteger(t)||t<0?e:ui(t,0,e)}function fi(e){return e?.firstElementChild}function pi(e,t){return e?e.matches?.call(e,t)?e:e.querySelector(t):null}function mi(e,t){e<1||e>6||(ye[e]=t)}function hi(){if(!zt.value)return void(Ce.value=0);let e=ft(`updateExperimentContainerWidth.clientWidth`,()=>me.value?.clientWidth??0);Ce.value=e>0?e:0}let gi=null;function _i(){gi?.disconnect(),gi=null}let vi=YX(`ViewportDeferredMarkdownCodeBlockNode`,o({loader:()=>iY(null,null,function*(){return(yield ge(()=>import(`./index5-zhInUTZK.js`),__vite__mapDeps([35,1,2,31,7,32]))).default}),loadingComponent:XX,delay:0,suspensible:!1}),XX);function yi(e){return e===vi}let bi=R(()=>k.value===`pre`?KX:k.value===`shiki`?vi:ZX);function xi(){return!1!==U.codeBlockProps?.showHeader}function Si(e,t,n){let r=Qn[t],i=typeof r==`number`&&r>0;if(Vt.value&&!i&&!function(e){return!!gt.value.paragraph&&(e.type===`paragraph`||e.type===`list_item`||e.type===`list`)}(e)){let t=s1(e,n,we.value);if(t)return t}if(gn.value&&e.type===`code_block`){let t=function(e){if(e.type!==`code_block`)return null;let t=rs(e,Qo(e));return yi(t)?`markdown`:t===KX?`pre`:t===bi.value||t===ZX?`monaco`:null}(e);if(t===`monaco`||t===`markdown`||t===`pre`)return function(e,t){if(!e||e.type!==`code_block`)return null;let n=t.rendererKind,r=n!==`pre`&&!1!==t.showHeader,i=!!e.diff,a=0,o=500;if(n===`monaco`){let n=t.monacoOptions??{},r=u1(e,n,t.width),s=function(e){let t=typeof e?.fontSize==`number`&&e.fontSize>0?e.fontSize:12;return typeof e?.lineHeight==`number`&&e.lineHeight>0?e.lineHeight:Math.round(1.5*t)}(n),c=function(e,t){let n=typeof e?.padding?.top==`number`?e.padding.top:t?0:8,r=typeof e?.padding?.bottom==`number`?e.padding.bottom:t?0:8;return Math.max(0,n)+Math.max(0,r)}(n,i);o=typeof n.MAX_HEIGHT==`number`&&n.MAX_HEIGHT>0?n.MAX_HEIGHT:500,a=Math.round(r*s+c)}else if(n===`markdown`){let t=u1(e);a=Math.round(21*t+32)}else{let t=u1(e);a=Math.round(28*t),o=1/0}let s=Math.max(1,Math.min(a,o));return Q({kind:`code-block`,height:Math.round(s+(r?40:0)),contentHeight:s,rendererKind:n},i&&n===`monaco`?{diffInline:MX(t.monacoOptions??{},t.width??0)}:{})}(e,{rendererKind:t,monacoOptions:U.codeBlockMonacoOptions,showHeader:xi(),width:n})}return null}f(()=>{if(kn.value,An>0)return;let e=yt.value,t=xt();if(!e.length||!hn.value)return wn=[],Tn=[],En=-1,On.clear(),void(Dn.value=Cn);let n=Ce.value||ft(`estimatedNodeHeights.clientWidth`,()=>me.value?.clientWidth||0);if(!Number.isFinite(n)||n<=0)return wn=[],Tn=[],En=-1,On.clear(),void(Dn.value=Cn);let r=function(e){return[Math.round(e),Vt.value,gn.value,we.value,U.codeBlockMonacoOptions,xi(),k.value,gt.value,t1.value]}(n),i=wn.length<=e.length&&(o=r,(a=Tn).length===o.length&&a.every((e,t)=>Object.is(e,o[t])));var a,o;let s=i&&En===t?e.length:i?di(e.length):0,c=i?Array.from(On):[];wn.length=e.length;for(let t=s;t=0&&tDn.value);Fn=function(e){let t=!0,n=[0],r=``;function i(t){let n=e.nodeHeights[t];if(Number.isFinite(n)&&n>0)return n;let r=e.parsedNodes.value[t],i=r?.type,a=!!e.hasCustomParagraphComponent?.call(e),o=e.estimatedNodeHeights.value[t],s=o?.height;if(!function(e,t,n){return!!(n&&t?.kind===`simple-text`&&(e===`paragraph`||e===`list_item`||e===`list`))}(i,o,a)&&Number.isFinite(s)&&s>0)return s;let c=O1(r,e.getContainerWidth()||640);return i===`heading`||i===`paragraph`&&c<=28&&function(e,t){if(t)return!1;let n=e.children;return!Array.isArray(n)||!n.length||n.every(w1)}(r,a)?c:Math.max(e.averageNodeHeight.value,c)}function a(){let a=e.parsedNodes.value.length,o=e.getPrefixCacheKeyParts().join(`:`);if(!t&&r===o)return n;let s=Array(a+1);s[0]=0;for(let t=0;t=(r[n]??0))return n-1;let i=0,o=n-1,s=n-1;for(;i<=o;){let e=i+o>>1;(r[e+1]??0)>=t?(s=e,o=e-1):i=e+1}return s}function s(t,n){if(t>=n)return 0;if(e.heightEstimationActive.value)return function(t,n){let r=e.parsedNodes.value.length,i=k1(Math.trunc(t),0,r),o=k1(Math.trunc(n),i,r);if(i>=o)return 0;let s=a();return(s[o]??0)-(s[i]??0)}(t,n);if(e.heightTreeSize.value!==e.parsedNodes.value.length){let r=0;for(let i=t;it<=0?0:e.fenwickRangeSum(i,0,t)+(t-e.fenwickRangeSum(a,0,t))*r,s=0,c=n.length-1,l=n.length-1;for(;s<=c;){let e=s+c>>1;o(e+1)>=t?(l=e,c=e-1):s=e+1}return l}let r=t;for(let t=0;t0||t++}return t}return{markFallbackHeightPrefixDirty:function(){t=!0},getFallbackNodeHeight:i,estimateHeightRange:s,estimateIndexForOffset:c,estimateIndexForOffsetFromEnd:function(t){let n=e.parsedNodes.value;if(!n.length)return 0;if(t<=0)return Math.max(0,n.length-1);if(e.heightEstimationActive.value){let e=a()[n.length]??0;return o(Math.max(0,e-t))}if(e.heightTreeSize.value===n.length){let e=s(0,n.length);return c(Math.max(0,e-t))}let r=t;for(let t=n.length-1;t>=0;t--){let n=e.nodeHeights[t]??e.averageNodeHeight.value;if(r<=n)return t;r-=n}return 0},getEstimatedNodeHeightCount:l,buildVirtualHeightSummary:function(t){let n=e.parsedNodes.value.length;return{totalNodes:n,measuredCount:e.heightStats.count,estimatedCount:l(),averageNodeHeight:e.averageNodeHeight.value,topSpacerHeight:t.topSpacerHeight,bottomSpacerHeight:t.bottomSpacerHeight,estimatedTotalHeight:s(0,n),width:t.width??e.getContainerWidth()}}}}({parsedNodes:yt,nodeHeights:Qn,heightStats:$n,heightTreeSize:er,heightSumTree:tr,heightKnownTree:nr,averageNodeHeight:rr,heightEstimationActive:zt,estimatedNodeHeights:Ci,getContainerWidth:Ht,hasCustomParagraphComponent:()=>!!gt.value.paragraph,getPrefixCacheKeyParts:()=>{let e=S1(Ce.value||ft(`getFallbackHeightPrefix.clientWidth`,()=>me.value?.clientWidth||0)),t=r.virtualScroll?.measurementKey==null?``:String(r.virtualScroll.measurementKey);return[yt.value.length,$n.count,Math.round($n.total),Math.round(100*rr.value),t,e,+!!zt.value,t1.value,Se.value,+!!gt.value.paragraph]},fenwickRangeSum:dr}),l(()=>yt.value.length,e=>{var t;zn(),e<=0?gr():(ear(t))),e!==er.value&&or(e))},{immediate:!0});let wi=R(()=>{if(!qt.value)return yt.value.map((e,t)=>({node:e,index:t}));let e=yt.value.length,t=ui(Dr.start,0,e),n=ui(Dr.end,t,e);return yt.value.slice(t,n).map((e,n)=>({node:e,index:t+n}))}),Ti=R(()=>qt.value?Vn(0,Math.min(Dr.start,yt.value.length)):0),Ei=R(()=>{if(!qt.value)return 0;let e=yt.value.length;return Vn(Math.min(Dr.end,e),e)});function Di(){return Fn.buildVirtualHeightSummary({topSpacerHeight:Ti.value,bottomSpacerHeight:Ei.value,width:Ii()})}function Oi(){let e=yt.value;return rY(Q({},Di()),{probe:{paragraphReady:!!we.value.paragraph,listItemReady:!!we.value.listItem,listWrapperOverhead:we.value.listWrapperOverhead,headingReadyLevels:Object.entries(we.value.headings).filter(([,e])=>!!e).map(([e])=>Number(e))},nodes:e.map((e,t)=>({index:t,type:e.type,estimateKind:Ci.value[t]?.kind??null,rendererKind:Ci.value[t]?.rendererKind??null,estimatedHeight:Ci.value[t]?.height??null,estimatedContentHeight:Ci.value[t]?.contentHeight??null,measuredHeight:Qn[t]??null}))})}function ki(){return r.indexKey==null?Pt.value?`virtual-${ji()}`:`markdown-renderer`:String(r.indexKey)}function Ai(e){let t=String(e),n=`${ki()}-`;if(!t.startsWith(n))return null;let r=t.slice(n.length).match(/^(\d+)(?:$|-)/);if(!r)return null;let i=Number(r[1]);return!Number.isInteger(i)||i<0||i>=yt.value.length?null:i}function ji(){let e=r.virtualScroll?.sessionKey;return String(e!=null&&e!==``?e:r.indexKey??U.customId??pt)}function Mi(){let e=r.virtualScroll?.threadKey;return e==null||e===``?void 0:String(e)}let Ni=R(()=>Mi()??String(r.indexKey??U.customId??pt));function Pi(e){return(e??``)===(Mi()??``)}function Fi(){var e,t;return e=r.virtualScroll?.measurementKey,t=function(){let e=k.value;return function(e){let t=e.renderer,n=t===`monaco`?e.codeBlockMonacoOptions:void 0,r=e.codeBlockProps,i=t===`shiki`;return[e.isDark?`dark`:`light`,t===`monaco`?`code-rich`:t===`pre`?`code-pre`:`code-shiki`,!1===e.codeBlockStream?`code-static`:`code-stream`,C0(e.codeBlockMinWidth),C0(e.codeBlockMaxWidth),...i?[nq(r?.themes??e.themes,r?.langs??e.langs)]:[],C0(n?.fontSize),C0(n?.lineHeight),C0(n?.fontFamily),C0(n?.tabSize),C0(n?.MAX_HEIGHT),C0(n?.wordWrap),C0(n?.wrappingIndent),C0(n?.padding),C0(r?.showHeader),C0(r?.showCopyButton),C0(r?.showExpandButton),C0(r?.showPreviewButton),C0(r?.showCollapseButton),C0(r?.showFontSizeButtons)].join(`\0`)}({renderer:e,isDark:U.isDark,codeBlockStream:U.codeBlockStream,codeBlockMinWidth:U.codeBlockMinWidth,codeBlockMaxWidth:U.codeBlockMaxWidth,codeBlockMonacoOptions:e===`monaco`?U.codeBlockMonacoOptions:void 0,codeBlockProps:U.codeBlockProps,themes:e===`shiki`?U.themes:void 0,langs:e===`shiki`?U.langs:void 0})}(),[e==null?``:String(e),t].join(`\0`)}function Ii(){return Ht()}let Li=R(()=>S1(Ii())),Ri=R(()=>[Fi(),Li.value].join(`\0`)),zi=R(()=>Pt.value?[`virtual`,Mi()??``,ji(),Ri.value].join(`\0`):r.indexKey);function Bi(){Br.value+=1}function Vi(e){return!(!e||!Number.isInteger(e.index)||e.index<0||e.index>=yt.value.length||e.sessionKey!==ji()||e.threadKey!==Mi()||e.layoutEpochKey!==Ri.value)}function Hi(e){let t=String(e),n=zr.get(t);return n?Vi(n)?n.index:null:Ai(t)}function Ui(e=`async-node`){(Rr.size||zr.size)&&(Rr.clear(),zr.clear(),Bi(),so(e))}let Wi=g(fq,null),Gi={reportHeight(e,t){if(!Lt.value)return;let n=Hi(e);if(n==null)return;let r=kr.get(n);if(!r)return;let i=Number(t),a=yr(n,r);(function(e,t,n={}){mr(()=>vr(e,t,n))})(n,Number.isFinite(i)&&i>0?Math.max(i,a||0):a)},markPending(e){if(!Lt.value)return;let t=Ai(e);t!=null&&function(e,t){let n=zr.get(e);if(n&&Vi(n))return Rr.set(e,Math.max(0,Rr.get(e)??0)+1),Bi(),void so(`async-node`);Rr.set(e,1),zr.set(e,function(e){return{index:e,sessionKey:ji(),threadKey:Mi(),layoutEpochKey:Ri.value}}(t)),Bi(),so(`async-node`)}(String(e),t)},markSettled(e){if(!Lt.value)return;let t=String(e),n=Hi(e);(n!=null||function(e){return Rr.has(String(e))}(t))&&function(e){let t=Rr.get(e)??0;return!(t<=0||(t<=1?(Rr.delete(e),zr.delete(e)):Rr.set(e,t-1),Bi(),t===1&&so(`async-node`),0))}(t)&&n!=null&&go()}};function Ki(){let e=0;for(let t of kr.values())e+=ft(`getVisibleDomHeight.offsetHeight`,()=>t?.offsetHeight??0);return Math.ceil(Math.max(0,e))}p(fq,{reportHeight(e,t){Gi.reportHeight(e,t),Wi?.reportHeight(e,t)},markPending(e){Gi.markPending(e),Wi?.markPending(e)},markSettled(e){Gi.markSettled(e),Wi?.markSettled(e)}});let qi,Ji=null,Yi=null;function Xi(e){return!1!==e&&e!=null&&e!==``}function Zi(){return qt.value?function(){if(!qt.value)return!0;let e=yt.value.length,t=ui(Dr.start,0,e),n=ui(Dr.end,t,e);if(t>=n)return!0;for(let e=t;e=Ur.value}function Qi(){return!0===qe.value&&!Ye.value&&Vr.value===0&&Pr.size===0&&Nr.size===0&&Hr==null&&Zi()}function $i(){if(r.virtualScroll?.settleMode!==`manual`||Ji===ji()&&qi===Mi())return!0;let e=r.virtualScroll?.settledToken;return!!Xi(e)&&Yi===Oo(e)}function ea(){return Qi()&&$i()}function ta(e,t){return t.totalNodes<=0?e===`final`?`final`:`estimate`:t.measuredCount>=t.totalNodes?e===`final`?`final`:`measured`:t.measuredCount>0||t.estimatedCount>0?`mixed`:`estimate`}function na(e=`manual`,t){let n=Di(),r=function(e){return e||(!0===qe.value?!Zi()||Nr.size>0||Hr!=null?`measuring`:ea()?`settled`:`settling`:yt.value.length>0?`streaming`:`estimating`)}(t);return{sessionKey:ji(),threadKey:Mi(),phase:r,nodeCount:n.totalNodes,liveRange:{start:Dr.start,end:Dr.end},renderedCount:ln.value,measuredCount:n.measuredCount,estimatedCount:n.estimatedCount,averageNodeHeight:n.averageNodeHeight,topSpacerHeight:n.topSpacerHeight,bottomSpacerHeight:n.bottomSpacerHeight,visibleDomHeight:Ki(),totalHeight:ia(),width:n.width,final:!0===qe.value,stable:ea(),confidence:ta(r,n),reason:e}}function ra(){let e=Nn.value||Be(),t=me.value;if(!e||!t)return null;let n=e.ownerDocument||t.ownerDocument||document,r=e===n.documentElement||e===n.body||e===n.scrollingElement;return{root:e,doc:n,isViewportRoot:r,scrollTop:ft(`getScrollBox.scrollTop`,()=>He(e,n,r)),scrollHeight:ft(`getScrollBox.scrollHeight`,()=>r?Math.max(n.documentElement?.scrollHeight??0,n.body?.scrollHeight??0,e.scrollHeight??0):e.scrollHeight),clientHeight:ft(`getScrollBox.clientHeight`,()=>r?n.documentElement?.clientHeight||e.clientHeight||0:e.clientHeight)}}function ia(){let e=yt.value.length,t=Math.max(0,Vn(0,e)),n=ft(`getRendererLogicalHeight.offsetHeight`,()=>me.value?.offsetHeight??0),r=Math.max(0,n>0?n:ft(`getRendererLogicalHeight.scrollHeight`,()=>me.value?.scrollHeight??0));return e<=0?Math.ceil(n):qt.value?t>0?Math.max(1,Math.ceil(t),function(){let e=Ti.value+Ei.value;for(let t of _n.values())t&&(e+=Math.max(0,ft(`getVirtualizedDomLogicalHeight.offsetHeight`,()=>t.offsetHeight||0)));return Math.ceil(Math.max(0,e))}(),function(e,t){return e<=0||t<=0?0:t<=e+Math.max(512,.05*e)?Math.ceil(t):0}(t,r)):Math.max(1,Math.ceil(r)):Lt.value?t>0||$n.count>0||Fn.getEstimatedNodeHeightCount()>0?(cn.value&&ln.value,Math.max(1,Math.ceil(r),Math.ceil(t))):Math.ceil(r):Math.max(1,Math.ceil(r),Math.ceil(t))}function aa(e){let t=me.value;if(!t)return null;let n=ft(`getRendererBottomDistanceFromViewport.getBoundingClientRect`,()=>t.getBoundingClientRect());return function(e){return e.isViewportRoot?e.clientHeight:ft(`getViewportBottomInRoot.getBoundingClientRect`,()=>e.root.getBoundingClientRect().bottom)}(e)-n.bottom}function oa(e={}){let t=!1!==e.requireViewport,n=function(e=64){let t=ra(),n=me.value;if(!t||!n)return!1;let r=function(e){if(e.isViewportRoot)return{top:0,bottom:e.clientHeight};let t=ft(`getVirtualViewportRect.getBoundingClientRect`,()=>e.root.getBoundingClientRect());return{top:t.top,bottom:t.bottom}}(t),i=ft(`isRendererNearVirtualViewport.getBoundingClientRect`,()=>n.getBoundingClientRect());return i.bottom>=r.top-e&&i.top<=r.bottom+e}();if(t&&!n)return null;let r=function(){let e=ra(),t=me.value;if(!e||!t||Math.max(0,e.scrollHeight-e.scrollTop-e.clientHeight)>64)return null;let n=aa(e);return n==null?null:n>=-8&&n<=160?{type:`bottom`,distanceFromBottomPx:Math.max(0,n)}:null}();if(r)return{anchor:r,captured:!0};let i=Yn();if(i)return{anchor:{type:`node`,nodeIndex:i.nodeIndex,offsetWithinNodePx:i.offsetWithinNodePx},captured:n};if(!0===e.allowFallback){let e=function(){let e=yt.value.length;return e<=0?null:{type:`node`,nodeIndex:ui(Er.value,0,Math.max(0,e-1)),offsetWithinNodePx:0}}();return e?{anchor:e,captured:!1}:null}return null}function sa(e){let t=2166136261;for(let n=0;n>>0).toString(36)}function ca(e,t){let n=e;for(let e=0;e8192?`${e.slice(0,8192)}...${e.length}`:e;return`${e.length}:${sa(t)}`}(e)}`;if(typeof e==`function`)return`fn`;if(typeof e!=`object`)return typeof e;if(t.has(e))return`cycle`;if(n>=6)return`max-depth`;t.add(e);try{if(Array.isArray(e)){if(e.length<=160){let r=[];for(let i=0;i=a&&i.push(c)}return[`a:${e.length}`,`h=${r.join(`,`)}`,`t=${i.join(`,`)}`,`all=${(o>>>0).toString(36)}`].join(`:`)}let r=e,i=Object.keys(r).filter(e=>{let t=r[e];return e!==`parent`&&e!==`el`&&e!==`component`&&(t==null||typeof t==`string`||typeof t==`number`||typeof t==`boolean`||la.has(e))}).sort();return`o:${i.length}:${i.map(e=>`${e}=${ua(r[e],t,n+1)}`).join(`;`)}`}finally{t.delete(e)}}let da=-1,fa=``,pa=[2166136261];function ma(e){let t=yt.value[e];return t?sa(ua(t)):``}function ha(e,t){let n=e;for(let e=0;e>>0}function ga(){let e=Se.value;if(da===e)return fa;let t=yt.value.length,n=di(t);(da!==e-1||n>t||pa.length>>0).toString(36),da=e,fa}function _a(e,t={}){let n=!0===t.includeHeightCache,i=t.includeContentHash??n,a=n?function(e){let t=function(){let e=Number(r.virtualScroll?.heightCacheLimit??5e3);return!Number.isFinite(e)||e<=0?1/0:Math.max(1,Math.trunc(e))}();if(!Number.isFinite(t)||e.length<=t)return e;let n=new Map,i=e=>{!e||n.size>=t||n.set(e.index,e)},a=yt.value.length,o=ui(Dr.start-2*Kt.value,0,a),s=ui(Dr.end+2*Kt.value,o,a);for(let t of e)t.index>=o&&t.index=0&&n.sizee.index-t.index).slice(0,t)}(lr().map(e=>{let t=yt.value[e.index];return t?rY(Q({},e),{nodeType:String(t.type??``),signature:ma(e.index)}):null}).filter(e=>!!e)):[],o=oa({allowFallback:!0===t.allowAnchorFallback,requireViewport:t.requireViewport});return o||a.length||!0===t.includeEmptyState?rY(Q({sessionKey:e.sessionKey,threadKey:e.threadKey},o?{anchor:o.anchor,anchorCaptured:o.captured}:{anchorCaptured:!1}),{metrics:e,width:e.width,contentHash:i?ga():void 0,measurementKey:Fi()||void 0,heightCache:a.length?a:void 0}):null}function va(e){var t,n;let r=ra();if(!r)return;let i=function(e){let t=me.value;if(!t)return null;let n=Ue(t,e.root),r=yt.value.length,i=ft(`getRendererBottomOffsetWithinRoot.offsetHeight`,()=>t.offsetHeight||0),a=Math.max(0,i>0?i:r>0?ft(`getRendererBottomOffsetWithinRoot.scrollHeight`,()=>t.scrollHeight||0):0),o=ia();return n+Math.max(a,o)}(r);if(i==null)return;let a=Math.max(0,e.distanceFromBottomPx),o=Math.max(0,i-r.clientHeight-a);(function(e){Ln=Za()+120,Rn=e})(o),r.isViewportRoot?(n=(t=r.doc.defaultView)?.scrollTo)==null||n.call(t,0,o):h1(r.root,r.doc,o,{isReverseFlexScrollRoot:Ve,getNormalizedScrollTop:He})}let ya=[];function ba(){if(Me)for(In!=null&&(en?.(In),In=null);ya.length;){let e=ya.pop();e!=null&&window.clearTimeout(e)}}function xa(e){let t=!!Pn.value;Pn.value=null,Ln=0,Rn=null,ba(),t&&e&&so(e)}function Sa(){if(!Pn.value||!Me||In!=null)return;let e=()=>{In=null;let e=Pn.value;e&&va(e)};In=$t?$t(e):null,In??e()}function Ca(e,t={}){let n=yt.value.length;return n<=0?[]:e.filter(e=>!(!Number.isInteger(e.index)||e.index<0||e.index>=n)&&!(!Number.isFinite(e.height)||e.height<=0)&&!(t.requireSignature&&!e.signature)&&!(t.requireCompatibilityMetadata&&!e.nodeType&&!e.signature)&&function(e){let t=yt.value[e.index];return!(!t||e.nodeType&&e.nodeType!==String(t.type??``)||e.signature&&e.signature!==ma(e.index))}(e))}function wa(e){let t=S1(Ii()),n=S1(e);return t!==-1&&n!==-1&&t===n}function Ta(e){let t=Number(e?.width);if(Number.isFinite(t)&&t>0)return t;let n=Number(e?.metrics?.width);return Number.isFinite(n)&&n>0?n:null}function Ea(e){return e.sessionKey===ji()&&!!Pi(e.threadKey)&&(e.measurementKey??``)===Fi()&&!!wa(Ta(e))&&!!function(e){let t=e.heightCache;return!!t?.length&&(Da(e)?t.some(e=>!!(e.nodeType||e.signature)):t.some(e=>!!e.signature))}(e)}function Da(e){return!!(e.contentHash&&e.contentHash===ga())}function Oa(e){return!Da(e)}let ka=null,Aa=null,ja=null,Ma=null,Na=null;function Pa(e){let t=e.map(e=>[e.index,Math.round(10*e.height),e.nodeType??``,e.signature??``].join(``)).join(``),n=S1(Ii());return[Mi()??``,ji(),Fi(),yt.value.length,n,e.length,sa(t)].join(`:`)}function Fa(e=(e=>(e=r.virtualScroll)?.heightCache)()){if(!Lt.value||!e?.length||yt.value.length<=0||!wa((t=r.virtualScroll)?.heightCacheWidth))return!1;var t;let n=Ca(e,{requireSignature:!0});if(!n.length)return!1;let i=Pa(n);return i===ka?(Aa=`standalone`,!0):(br(n,{mode:`merge`}),zn(),ka=i,Aa=`standalone`,to(),so(`restore`),!0)}function Ia(e,t={}){if(!Lt.value||!e||e.sessionKey!==ji()||!Pi(e.threadKey)||yt.value.length<=0)return!1;let n=!!e.heightCache?.length&&!La(),r=!e.anchor||!1===e.anchorCaptured&&!0!==t.allowUncapturedAnchor?null:e.anchor,a=!0===t.restoreAnchor&&!!r&&!La()&&Number(Ta(e))>0,o=!1;if(e.heightCache?.length&&Ea(e)){let t=Ca(e.heightCache,{requireCompatibilityMetadata:!e.contentHash,requireSignature:Oa(e)});t.length&&(br(t,{mode:`merge`}),zn(),ka=Pa(t),Aa=`restore`,to(),o=!0)}if(n||a)return!1;if(!t.restoreAnchor||!r)return o&&so(`restore`),!0;let s=function(e,t){let n=e.anchor,r=n?n.type===`bottom`?`bottom:${Math.round(n.distanceFromBottomPx)}`:`node:${n.nodeIndex}:${Math.round(n.offsetWithinNodePx)}`:`none`;return[Mi()??``,ji(),Fi(),Li.value,t,r].join(`:`)}(e,t.restoreToken??`imperative`);return ja===s?(o&&so(`restore`),!0):(ja=s,function(e){let t=()=>{if(e.type===`node`)return xa(),void Xn({nodeIndex:e.nodeIndex,offsetWithinNodePx:e.offsetWithinNodePx});if(qn(),Un.value=null,Pn.value=e,ba(),va(e),Me)for(let e of[0,120,280,480])ya.push(window.setTimeout(()=>{let e=Pn.value;e&&va(e)},e))};(function(e){if(!qt.value)return!1;let t=yt.value.length;return!(t<=0||(Er.value=e.type===`node`?ui(e.nodeIndex,0,t-1):t-1,Or(),0))})(e)?i(t):t()}(r),so(`restore`),!0)}function La(){let e=Ii();return Number.isFinite(e)&&e>0}function Ra(e){return e.sessionKey===ji()&&!!Pi(e.threadKey)&&(yt.value.length<=0||!(!e.heightCache?.length||La())||!(!(e.anchor&&Number(Ta(e))>0)||La()))}function za(){Sn.clear();for(let e of Object.keys(Qn)){let t=Number(e);Number.isInteger(t)&&t>=0&&t{let t=!1,n=null,r=()=>{t||(t=!0,n!=null&&window.clearTimeout(n),e())};if($t)return $t(r),void(n=window.setTimeout(r,50));n=window.setTimeout(r,0)})}function Va(e,t=Mi(),n=Ri.value){return ji()===e&&Mi()===t&&Ri.value===n}function Ha(){return iY(this,arguments,function*(e={}){let t=ji(),n=Mi(),a=Ri.value,o=e.frames??2,s=e.timeoutMs??120,c=e.reason??`manual`,l=e.expectedSettledTokenKey,u=!0===e.flushPendingTimers,d=na(c),f=()=>rY(Q({},d),{phase:d.final?`settling`:d.phase,stable:!1,confidence:d.confidence===`final`?`mixed`:d.confidence,reason:c}),p=()=>Va(t,n,a)&&(l==null||$a()===l);for(let e=0;ewindow.setTimeout(t,e))}(s),!p()||(u&&qr(),go(),J(),!p()))return f();let m=Qi();m&&(Ji=t,qi=n,r.virtualScroll?.settleMode===`manual`&&l!=null&&Xi(r.virtualScroll?.settledToken)&&$a()===l&&(Yi=Oo(r.virtualScroll.settledToken)));let h=na(c,p()&&m&&$i()?`final`:void 0);return io(h,!0),h})}let Ua=`content`,Wa=null,Ga=null,Ka=0,qa=null,Ja=null,Ya=null,Xa=null;function Za(){return typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now()}function Qa(e){let t=qa;if(!t)return!0;let n=r.virtualScroll?.heightDiffThresholdPx??1;return Math.abs(e.totalHeight-t.totalHeight)>n||e.sessionKey!==t.sessionKey||e.phase!==t.phase||e.stable!==t.stable||e.final!==t.final||e.threadKey!==t.threadKey||e.nodeCount!==t.nodeCount||e.measuredCount!==t.measuredCount||e.width!==t.width}function $a(e=(e=>(e=r.virtualScroll)?.settledToken)()){return C0(e)}function eo(e,t){return[e,t.sessionKey,t.threadKey??``,Fi(),ga(),C0(r.virtualScroll?.settledToken),Math.round(t.totalHeight),Math.round(t.width)].join(`\0`)}function to(){Ya=null,Xa=null,Ja=null}function no(e){let t=e.heightCache;return t?.length?Pa(t):``}function ro(e){let t=e.metrics,n=e.anchor?(r=e.anchor).type===`bottom`?`bottom:${Math.round(r.distanceFromBottomPx)}`:`node:${r.nodeIndex}:${Math.round(r.offsetWithinNodePx)}`:`none`;var r;return[e.sessionKey,e.threadKey??``,e.measurementKey??Fi(),e.contentHash??``,no(e),n,+!!e.anchorCaptured,t.liveRange.start,t.liveRange.end,t.renderedCount,t.nodeCount,Math.round(t.totalHeight),Math.round(t.width),t.phase,+!!t.stable].join(`\0`)}function io(e,t=!1){if(!Lt.value||function(e=!1){return!e&&Pt.value&&!Rt.value}(t))return;let n=t||Qa(e),r=function(e,t=!1){return t||e.stable||e.phase===`final`?{state:_a(e,{includeHeightCache:!0})}:{state:_a(e)}}(e,t).state,i=!!(r&&(n||function(e,t=!1){return!!t||ro(e)!==Ja}(r,t)));if(n&&(W(e),qa=e,Ka=Za()),r&&i&&(K(r),r.anchor&&q(r.anchor),Ja=ro(r)),e.stable){let t=eo(`settled`,e);if(t!==Ya){Ya=t;let n=_a(e,{includeHeightCache:!0});n&&(K(n),Ja=ro(n)),function(e){s(`render-settled`,e)}(e)}}if(e.phase===`final`){let t=eo(`final`,e);if(t!==Xa){Xa=t;let n=_a(e,{includeHeightCache:!0});n&&(K(n),Ja=ro(n)),function(e){s(`render-final`,e)}(e)}}}function ao(){Wa!=null&&(en?.(Wa),Wa=null),Ga!=null&&Me&&(window.clearTimeout(Ga),Ga=null)}function oo(){Wa=null,Ga=null,function(e){if(Nr.size>0||Hr!=null)return!0;switch(e){case`node-resize`:case`async-node`:case`resize`:case`restore`:case`final`:case`manual`:return!0;default:return!1}}(Ua)&&(go(),J()),io(na(Ua))}function so(e){if(!Lt.value||(Ua=e,Wa!=null||Ga!=null))return;let t=Math.max(0,r.virtualScroll?.emitIntervalMs??32),n=Math.max(0,t-(Za()-Ka)),i=()=>{Ga=null,Wa=$t?$t(oo):null,Wa??oo()};Me&&n>0?Ga=window.setTimeout(i,n):i()}function co(){jn.value+=1}function lo(e){if(cn.value&&e>=ln.value){let t=yt.value[e],n=!0===Ke.value&&!0!==qe.value&&e>=yt.value.length-2,r=t?.type===`code_block`||t?.type===`image`||t?.type===`mermaid`||t?.type===`infographic`;if(!n||r)return!1}return!xr.value||e=ke.value&&(be.value||(be.value=!0,oi()),!wr.value||!Qt))return uo(e),void(t&&ii(e,!0));if(e{if(ni.delete(e),!xr.value||$r.value.has(e))return;let t=_n.get(e);if(!t)return;let n=Be(t),r=t.ownerDocument||document,i=r.defaultView||window,a=!n||n===r.documentElement||n===r.body,o=!a&&n?ft(`nodeVisibilityFallback.root.getBoundingClientRect`,()=>n.getBoundingClientRect()):null,s=a?0:o.top,c=a?ft(`nodeVisibilityFallback.clientHeight`,()=>i.innerHeight??n?.clientHeight??0):o.bottom,l=ft(`nodeVisibilityFallback.node.getBoundingClientRect`,()=>t.getBoundingClientRect());l.bottom>=s-500&&l.top<=c+500&&ii(e,!0)},1800+t);ni.set(e,n)}(e);let i=null;i=l(()=>r.isVisible.value,t=>{if(t){ri(e),ii(e,!0),i?.(),ti.delete(e),ei.get(e)===r&&ei.delete(e);try{r.destroy()}catch{}}},{immediate:!0}),ti.set(e,i),qt.value&&Qr()}function po(){Hr=null,mr(()=>{let e=!1;for(let[t,n]of Nr)Nr.delete(t),kr.get(t)===n.el&&Ar.get(t)===n.version&&(e=vr(t,n.height,{allowShrink:n.allowShrink})||e);return e})}function mo(){Hr!=null&&(en?.(Hr),Hr=null),Nr.clear()}function ho(e,t){(function(e,t,n){if(!Number.isFinite(n)||n<=0||kr.get(e)!==t)return;let i=Ar.get(e);if(i==null)return;let a=yt.value[e],o=Ye.value&&!0!==qe.value&&!r.nodes?.length&&e>=yt.value.length-2,s=!(!0===a?.loading||o),c=Nr.get(e),l=c?c.allowShrink&&s:s,u=c&&!l?Math.max(c.height,n):n;Nr.set(e,{height:u,allowShrink:l,version:i,el:t}),Hr??(Hr=$t?$t(po):null,Hr??po())})(e,t,yr(e,t))}function go(){for(let[e,t]of kr)t&&ho(e,t)}function _o(){bn?.disconnect(),bn=null,vn.clear()}function vo(){for(;Mr.length;)Kr(Mr.pop())}l(Rt,e=>{e&&so(`content`)},{flush:`post`}),t({getVirtualMetrics:na,captureVirtualState:function(e={}){var t;return _a(na(`manual`),{includeHeightCache:!0,includeContentHash:!0,allowAnchorFallback:!0===e.allowFallbackAnchor,requireViewport:!0===e.requireViewport,includeEmptyState:(t=e.includeEmptyState)==null||t})},restoreVirtualState:function(e,t={}){let n=!0===t.restoreAnchor,r=t.restoreToken==null?`imperative`:String(t.restoreToken);Ma=e,Na={restoreAnchor:n,restoreToken:r,allowUncapturedAnchor:!0===t.allowUncapturedAnchor},!Ia(e,{restoreAnchor:n,restoreToken:r,allowUncapturedAnchor:!0===t.allowUncapturedAnchor})&&Ra(e)||(Ma=null,Na=null)},forceMeasure:function(e=`manual`){return iY(this,null,function*(){yield i(),yield Ba(),go(),J(),yield i();let t=na(e);return io(t,!0),t})},settle:Ha,scrollToNode:function(e,t=`start`){xa(),qn();let n=yt.value.length;if(n<=0)return;let r=ui(e,0,n-1),a=()=>{let e=Kn({nodeIndex:r,offsetWithinNodePx:0}),n=Bn(r),i=ra()?.clientHeight??0,a=Wn(),o=e;if(t===`center`)o=e-i/2+n/2;else if(t===`end`)o=e-i+n;else if(t===`nearest`&&a!=null){if(e>=a&&e+n<=a+i)return;o=eJt.value,e=>{if(!e){_o();for(let e of jr.values())for(let t of e)Kr(t);jr.clear(),Ar.clear(),vo(),mo()}},{immediate:!0}),l(qe,e=>{e&&function(){if(Me&&qe.value&&kr.size){vo();for(let e of[80,240,640]){let t=Gr(e,()=>{for(let[e,t]of kr)t&&ho(e,t)},`final`);t!=null&&Mr.push(t)}}}(),so(e?`final`:`content`)});let yo=g1(()=>so(`content`),16),bo=g1(()=>so(`batch`),16);l([()=>yt.value.length,()=>ln.value],()=>{Pn.value&&Sa(),yo()},{flush:`post`,immediate:!0}),l([()=>Dr.start,()=>Dr.end],()=>{bo()},{flush:`post`});let{cleanupBatchScheduler:xo}=function(e){let{props:t,isClient:n,isTestEnv:r,parsedNodesIdentity:a,parsedNodeCount:o,desiredRenderedCount:s,datasetKey:c,batchingEnabled:u,incrementalRenderingActive:d,resolvedBatchSize:f,resolvedInitialBatch:p,renderedCount:m,adaptiveBatchSize:h,previousRenderContext:g,previousBatchConfig:_,requestFrame:v,cancelFrame:y,hasIdleCallback:b,cleanupNodeVisibility:x,onDatasetKeyChanged:S,onDatasetChanged:C}=e,w=null,T=`raf`,E=null,D=0,O=!1,k=!1,A=new Set,j=new Set;function M(){if(n){w!=null&&(T===`raf`&&y?y(w):T===`idle`&&typeof window.cancelIdleCallback==`function`?window.cancelIdleCallback(w):T===`timeout`&&window.clearTimeout(w),w=null),D+=1;for(let e of A)y&&y(e);for(let e of j)window.clearTimeout(e);A.clear(),j.clear(),E=null,O=!1,k=!1}}function N(){return typeof performance<`u`?performance.now():Date.now()}function P(e){(function(e){if(!d.value)return;let n=Math.max(2,t.renderBatchBudgetMs??6),r=Math.max(1,f.value||1),i=Math.max(1,Math.floor(r/4));e>1.5*n?h.value=Math.max(i,Math.floor(.8*h.value)):e<.6*n&&h.value=o)return;let c=Math.max(1,e),l=()=>{let e=N();w=null;let r=E??c;E=null;let a=N();m.value=Math.min(o,m.value+r),x(m.value),function(e,r){if(!n)return void P(r);O=!0;let a=++D;i().then(()=>{if(a!==D)return;let n=N(),i=Math.max(r,n-e),o=()=>{a===D&&P(i)};if(v){let e=null,n=null,r=!1,i=()=>{r||(r=!0,e!==null&&(A.delete(e),e=null),n!==null&&(j.delete(n),window.clearTimeout(n),n=null),o())};e=v(()=>{i()}),A.add(e),n=window.setTimeout(()=>{e!==null&&y&&y(e),i()},Math.max(32,t.renderBatchIdleTimeoutMs??120)),j.add(n);return}let s=window.setTimeout(()=>{j.delete(s),o()},0);j.add(s)})}(e,N()-a)};if(!n||a.immediate)return void l();let u=Math.max(0,t.renderBatchDelay??16);if(E=E==null?c:Math.max(E,c),w==null){if(!r&&b&&window.requestIdleCallback){let e=Math.max(0,t.renderBatchIdleTimeoutMs??120);T=`idle`,w=window.requestIdleCallback(()=>l(),{timeout:e});return}if(v&&!r)return T=`raf`,void(w=v(()=>{u===0?l():(T=`timeout`,w=window.setTimeout(()=>l(),u))}));T=`timeout`,w=window.setTimeout(()=>l(),u)}}function ee(e,t={}){O?k=!0:e==null?I():F(e,t)}function I(){d.value&&F(u.value?Math.max(1,Math.round(h.value)):Math.max(1,f.value))}return l([a,o,c,d,f,p,()=>t.renderBatchDelay],()=>{let e=o.value,r=g.value,i=c.value,a=!Object.is(i,r.key),l=e!==r.total,u=a||l;g.value={key:i,total:e};let v=_.value,y=t.renderBatchDelay??16,b=v.batchSize!==f.value||v.initial!==p.value||v.delay!==y||v.enabled!==d.value;_.value={batchSize:f.value,initial:p.value,delay:y,enabled:d.value},a&&S(e),(u||b||!d.value)&&M(),(u||b)&&(h.value=Math.max(1,f.value||1)),u&&C();let w=s.value;if(!e)return m.value=0,void x(0);if(!d.value)return m.value=w,void x(m.value);let T=a||r.total===0;m.value=T||b?Math.min(w,p.value):Math.min(m.value,w);let E=Math.max(1,p.value||f.value||e);m.value{d.value&&(typeof t==`number`&&e<=t||e>m.value&&ee())}),{cleanupBatchScheduler:M}}({props:U,isClient:Me,isTestEnv:nn,parsedNodesIdentity:Ct,parsedNodeCount:wt,desiredRenderedCount:Ur,datasetKey:zi,batchingEnabled:sn,incrementalRenderingActive:cn,resolvedBatchSize:an,resolvedInitialBatch:on,renderedCount:ln,adaptiveBatchSize:dn,previousRenderContext:un,previousBatchConfig:fn,requestFrame:$t,cancelFrame:en,hasIdleCallback:tn,cleanupNodeVisibility:ai,onDatasetKeyChanged:e=>{mo(),gr(),zn(),to(),e>0&&or(e)},onDatasetChanged:()=>{qt.value&&Qr({immediate:!0})}});l([Tr,qt,()=>me.value,()=>Ae()],([e,t])=>{if(!e)return si(),void Zr();ci(),t?Qr({immediate:!0}):Zr()},{flush:`post`,immediate:!0}),l([()=>yt.value.length,()=>qt.value],e=>iY(null,[e],function*([e,t]){t&&e&&Me&&(yield i(),Qr({immediate:!0}))}),{flush:`post`}),l(zt,e=>{e&&function(){if(Tt.value&&Et.value&&Dt.value&&Ot.value?.[1])return;let e=v({type:`paragraph`,children:[{type:`text`,content:`Probe paragraph text`,raw:`Probe paragraph text`}],raw:`Probe paragraph text`}),t=v({type:`list_item`,children:[e],raw:`- Probe paragraph text`}),n=v({type:`list`,ordered:!1,items:[t],raw:`- Probe paragraph text`});Tt.value=e,Et.value=t,Dt.value=n;let r={1:null,2:null,3:null,4:null,5:null,6:null};for(let e=1;e<=6;e++)r[e]=v({type:`heading`,level:e,text:`Probe heading`,children:[{type:`text`,content:`Probe heading`,raw:`Probe heading`}],raw:`${`#`.repeat(e)} Probe heading`});Ot.value=r}()},{immediate:!0}),l([()=>me.value,zt],()=>{if(!zt.value)return _i(),void(Ce.value=0);hi(),_i(),zt.value&&me.value&&typeof ResizeObserver<`u`&&(gi=new ResizeObserver(()=>{hi(),Un.value&&Jn(),Pn.value&&Sa(),so(`resize`)}),gi.observe(me.value))},{immediate:!0}),l([zt,Ut,Ri],()=>iY(null,null,function*(){if(!zt.value)return we.value={paragraph:null,listItem:null,listWrapperOverhead:0,headings:{1:null,2:null,3:null,4:null,5:null,6:null}},void zn();yield i(),function(){if(!zt.value||typeof window>`u`)return we.value={paragraph:null,listItem:null,listWrapperOverhead:0,headings:{1:null,2:null,3:null,4:null,5:null,6:null}},void zn();let e={paragraph:null,listItem:null,listWrapperOverhead:0,headings:{1:null,2:null,3:null,4:null,5:null,6:null}},t=pi(fi(he.value),`.paragraph-node`);e.paragraph=f1(he.value,t,`pre-wrap`);let n=fi(_e.value)?.querySelector(`.paragraph-node`);e.listItem=f1(_e.value,n,`pre-wrap`);let r=ft(`readSimpleTextProbeProfile.list.offsetHeight`,()=>ve.value?.offsetHeight??0),i=ft(`readSimpleTextProbeProfile.listItem.offsetHeight`,()=>_e.value?.offsetHeight??0);e.listWrapperOverhead=Math.max(0,r-i);for(let t=1;t<=6;t++){let n=pi(fi(ye[t]),`h${t}`);e.headings[t]=f1(ye[t],n,`pre-wrap`)}we.value=e,zn()}()}),{flush:`post`,immediate:!0}),l(()=>yt.value.length,()=>{qt.value&&Qr({immediate:!0})}),l([zt,Ce],()=>{zn(),qt.value&&Qr({immediate:!0}),Un.value&&Jn(),Pn.value&&Sa(),so(`resize`)},{immediate:!1}),l(()=>xr.value,e=>{if(e)for(let[e,t]of _n)fo(e,t);else if(oi(),qt.value)Qr({immediate:!0});else for(let[e,t]of _n)t&&ii(e,!0)},{immediate:!1}),l([Oe,ke,()=>Ae()],()=>{var e;(e=Qt.refresh)==null||e.call(Qt);for(let[e,t]of _n)fo(e,t)},{immediate:!1}),l([()=>U.viewportPriority,()=>yt.value.length,ke],([e,t,n])=>{if(!1!==e){if(be.value&&(t<=200||t<=n)){be.value=!1;for(let[e,t]of _n)fo(e,t)}}else be.value=!1}),l(()=>ln.value,()=>{qt.value&&Qr({immediate:!0})}),l([Er,Gt,Kt,()=>yt.value.length,qt],()=>{Or()},{immediate:!0});let So=null,Co=!1,wo=null;function To(){So=null,Ji=null,qi=void 0,Yi=null,to()}function Eo(){mo(),gr(),zn(),Sn.clear();let e=yt.value.length;e>0&&or(e),za()}function Do(){ao(),qr(),qa=null,ka=null,Aa=null,ja=null,Ma=null,Na=null,Co=!1,To(),Ui(`restore`),qn(),xa()}function Oo(e){return[Mi()??``,ji(),Fi(),Li.value,$a(e),yt.value.length,Math.round(Vn(0,yt.value.length)),Math.round(Ii()),$n.count,Math.round($n.total)].join(`:`)}function ko(){return iY(this,null,function*(){let e=r.virtualScroll?.settledToken,t=$a(e),n=ji(),a=Mi(),o=Ri.value;if(Lt.value&&r.virtualScroll?.settleMode===`manual`&&Xi(e))if(Qi()){if(Oo(e)!==Yi&&!Co){Co=!0;try{let e=yield Ha({reason:`manual`,expectedSettledTokenKey:t}),i=$a()===t;Va(n,a,o)&&e.sessionKey===n&&e.threadKey===a&&i&&e.stable&&e.phase===`final`&&(Yi=Oo(r.virtualScroll?.settledToken))}finally{Co=!1,yield i();let e=r.virtualScroll?.settledToken,t=Xi(e)?Oo(e):``;Va(n,a,o)&&t&&Yi!==t&&ko()}}}else so(`manual`)})}l(Lt,(e,t)=>{if(e!==t){if(!e)return Do(),void ao();Do(),Eo(),wo=Ri.value,so(`content`)}},{flush:`post`}),l([Lt,Ri],([e,t])=>{e?wo==null?wo=t:wo!==t&&(wo=t,function(e=`resize`){mo(),gr(),zn(),Sn.clear();let t=yt.value.length;t>0&&or(t),za(),ka=null,Aa=null,ja=null,qa=null,Co=!1,To(),Fa(),i(()=>{go(),Un.value&&Jn(),Pn.value&&Sa(),so(e)})}(`resize`)):wo=null},{flush:`post`,immediate:!0}),l([Lt,()=>ji(),()=>Mi()],([e])=>{e&&(Do(),Eo(),Ui(`content`),so(`content`))}),l([Lt,()=>ji(),()=>Mi(),Ri,()=>yt.value.length],([e])=>{e&&function(e=`async-node`){let t=!1;for(let[e,n]of Array.from(zr.entries()))Vi(n)||(zr.delete(e),Rr.delete(e),t=!0);t&&(Bi(),so(e))}(`async-node`)},{flush:`post`}),l([Lt,()=>r.virtualScroll?.sessionKey,()=>r.virtualScroll?.measurementKey,()=>r.indexKey,()=>Se.value],([e])=>{e&&(to(),function(e=`content`){if(!Lt.value)return;let t=[],n=yt.value.length,r=di(n);for(let e of Array.from(Sn.keys())){if(e>=n){t.push(e);continue}if(e=n&&Sn.delete(e);t.length&&(function(e,t={}){let n=Array.from(e,Number);pr(n);let r=0;if(mr(()=>(r=cr(n,t),r>0)),r>0)(function(e){for(let t of e)Sn.delete(t)})(n);else for(let e of n)On.delete(e)}(t,{notify:!1}),zn(),To(),Un.value&&Jn(),Pn.value&&Sa(),so(e))}(`content`))},{flush:`post`,immediate:!0}),l([Lt,()=>yt.value.length,()=>ji(),()=>Mi()],([e,t,n,r],[i,a,o,s])=>{e&&i&&n===o&&r===s&&t!==a&&To()},{flush:`post`}),l([Lt,()=>r.virtualScroll?.heightCache,()=>r.virtualScroll?.heightCacheWidth,()=>r.virtualScroll?.restoreState,()=>r.virtualScroll?.measurementKey,()=>yt.value.length,()=>ji(),Ce],()=>{Fa()},{flush:`post`,immediate:!0}),l([Lt,()=>r.virtualScroll?.restoreState,()=>r.virtualScroll?.restoreAnchor,()=>r.virtualScroll?.measurementKey,()=>yt.value.length,()=>ji(),Ce],e=>iY(null,[e],function*([e,t]){if(!e||!t)return;yield i();let n=function(){let e=r.virtualScroll?.restoreAnchor;return e==null||!1===e?null:!0===e?`true`:String(e)}();Ia(t,{restoreAnchor:n!=null,restoreToken:n??void 0})}),{flush:`post`,immediate:!0}),l([Lt,Ce,()=>r.virtualScroll?.restoreState,()=>r.virtualScroll?.measurementKey],([e])=>{if(!e)return;let t=r.virtualScroll?.restoreState;t&&ka&&Aa===`restore`&&(Ea(t)||(Eo(),ka=null,Aa=null,so(`resize`)))},{flush:`post`}),l([Lt,()=>yt.value.length,()=>ji(),Ce],e=>iY(null,[e],function*([e]){let t=Ma,n=Na;e&&t&&(yield i(),!Ia(t,{restoreAnchor:!0===n?.restoreAnchor,restoreToken:n?.restoreToken??`imperative`,allowUncapturedAnchor:!0===n?.allowUncapturedAnchor})&&Ra(t)||(Ma=null,Na=null))}),{flush:`post`,immediate:!0}),l([Lt,qe,()=>r.virtualScroll?.settleMode,()=>ji(),()=>Mi(),Ri,Vr,Lr,()=>ln.value,Ur,()=>$n.count,()=>$n.total],([e,t,n])=>{if(!e||!0!==t||n===`manual`||!ea())return;let r=function(){let e=yt.value.length;return[Mi()??``,ji(),Fi(),Li.value,e,Math.round(Vn(0,e)),Math.round(Ii()),$n.count,Math.round($n.total)].join(`:`)}();So!==r&&(So=r,Ha({reason:`final`}).then(e=>{e.stable||So!==r||(So=null)}))},{flush:`post`,immediate:!0}),l([Lt,qe,()=>r.virtualScroll?.settleMode,()=>r.virtualScroll?.settledToken,()=>ji(),()=>Mi(),Ri,Vr,Lr,()=>ln.value,Ur,()=>yt.value.length,()=>$n.count,()=>$n.total],()=>{ko()},{flush:`post`,immediate:!0}),l([()=>yt.value.length,qt,Gt,Kt,()=>Dr.start,()=>Dr.end],([e,t,n,r,i,a])=>{Pe.value&&rt(`virtualization`,{nodes:e,virtualization:t,maxLiveNodes:n,buffer:r,focusIndex:Er.value,scroll:t?(()=>{let e=Nn.value||Be();return e?{reverse:Ve(e),scrollTop:Math.round(e.scrollTop),scrollTopAbs:Math.round(Math.abs(e.scrollTop)),scrollHeight:Math.round(e.scrollHeight),clientHeight:Math.round(e.clientHeight)}:null})():null,liveRange:{start:i,end:a},rendered:ln.value})}),l([()=>U.customId],([e],t,n)=>{if(!e||kt)return;let r=function(e,t){return e?($$.controllers[e]=t,()=>{$$.controllers[e]===t&&delete $$.controllers[e]}):()=>{}}(e,{captureRestoreAnchor:Yn,restoreAnchor:Xn,getAnchorDrift:Zn,getReport:Oi});n(()=>{r()})},{immediate:!0}),re(()=>{(function(){if(Lt.value)try{go(),J();let e=na(`manual`);Qa(e)&&(W(e),qa=e,Ka=Za());let t=_a(e,{includeHeightCache:!0,includeContentHash:!0,allowAnchorFallback:!1,requireViewport:!0,includeEmptyState:!0});t&&(K(t),t.anchor&&q(t.anchor),Ja=ro(t))}catch{}})(),xo(),oi(),tt(),_o();for(let e of jr.values())for(let t of e)Kr(t);jr.clear(),Ar.clear(),Sn.clear(),vo(),mo(),_i(),qn(),xa(),ao(),si(),Zr()});let Ao=YX(`ViewportDeferredMermaidBlockNode`,o({loader:()=>iY(null,null,function*(){try{return(yield ge(()=>import(`./index11-Cc6dLv_C.js`),__vite__mapDeps([36,1,2,32]))).default}catch(e){return console.warn(`[markstream-vue] Optional peer dependencies for MermaidBlockNode are missing. Falling back to preformatted code rendering. To enable Mermaid rendering, please install "mermaid".`,e),KX}}),loadingComponent:x0,delay:0}),x0),jo=YX(`ViewportDeferredInfographicBlockNode`,o({loader:()=>iY(null,null,function*(){try{return(yield ge(()=>import(`./index10-CgiEr33-.js`),__vite__mapDeps([37,1,2]))).default}catch(e){return console.warn(`[markstream-vue] Failed to load InfographicBlockNode. Falling back to preformatted code rendering. To enable Infographic rendering, install "@antv/infographic" and configure setInfographicLoader with a dynamic loader.`,e),KX}}),loadingComponent:b0,delay:0}),b0),Mo=YX(`ViewportDeferredD2BlockNode`,o(()=>iY(null,null,function*(){try{return(yield ge(()=>import(`./index8-BogL88_S.js`),__vite__mapDeps([38,1,2]))).default}catch(e){return console.warn(`[markstream-vue] Optional peer dependencies for D2BlockNode are missing. Falling back to preformatted code rendering. To enable D2 rendering, please install "@terrastruct/d2".`,e),KX}})),KX),No={text:JX,paragraph:eQ,heading:VZ,code_block:ZX,list:qZ,list_item:KZ,blockquote:kZ,table:cQ,definition_list:NZ,footnote:RZ,footnote_reference:wY,footnote_anchor:FZ,admonition:L0,vmr_container:pQ,hardbreak:xZ,link:pZ,image:DX,thematic_break:uQ,math_inline:QX,math_block:$X,strong:oZ,emphasis:yZ,strikethrough:cZ,highlight:_Z,insert:hZ,subscript:iZ,superscript:nZ,emoji:xY,checkbox:yY,checkbox_input:yY,inline_code:BY,html_inline:LY,reference:eZ,html_block:ZZ},Po=R(()=>ki()),Fo=R(()=>m1(U.codeBlockProps)),Io=R(()=>m1(U.codeBlockProps,{omit:[`langs`]})),Lo=R(()=>Q(Q({stream:U.codeBlockStream,darkTheme:U.codeBlockDarkTheme,lightTheme:U.codeBlockLightTheme,monacoOptions:U.codeBlockMonacoOptions,themes:U.themes,langs:k.value===`shiki`?U.langs:void 0,minWidth:U.codeBlockMinWidth,maxWidth:U.codeBlockMaxWidth},typeof Fe.value==`boolean`?{showTooltips:Fe.value}:{}),Io.value)),Ro=R(()=>Q(rY(Q({},Lo.value),{langs:U.langs}),Fo.value));function zo(e){return typeof e==`boolean`?e:void 0}let Bo=R(()=>{let e=U.codeBlockProps||{},t={},n=zo(e.showLineNumbers);n!==void 0&&(t.showLineNumbers=n);let r=zo(e.diffInline);r!==void 0&&(t.diffInline=r);let i=function(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}(e.reservedHeightPx);return i!==void 0&&(t.reservedHeightPx=i),t}),Vo=R(()=>Q(Q({stream:U.codeBlockStream,darkTheme:U.codeBlockDarkTheme,lightTheme:U.codeBlockLightTheme,themes:U.themes,langs:U.langs,minWidth:U.codeBlockMinWidth,maxWidth:U.codeBlockMaxWidth},typeof Fe.value==`boolean`?{showTooltips:Fe.value}:{}),Fo.value)),Ho=R(()=>Q({},U.mermaidProps||{})),Uo=R(()=>Q({},U.d2Props||{})),Wo=R(()=>Q({},U.infographicProps||{})),Go=R(()=>({typewriter:E.value,fade:U.fade,customHtmlTags:vt.value.customHtmlTags})),Ko=R(()=>Q(Q({},Go.value),typeof Fe.value==`boolean`?{showTooltip:Fe.value}:{})),qo=R(()=>Q(Q({},Go.value),typeof Fe.value==`boolean`?{showTooltips:Fe.value}:{})),Jo=R(()=>Q(Q({},Go.value),typeof Fe.value==`boolean`?{showTooltips:Fe.value}:{})),Yo=R(()=>Q(Q({},Go.value),typeof Fe.value==`boolean`?{showTooltips:Fe.value}:{}));function Xo(e){return Array.isArray(e.children)&&e.children.length>0}let Zo=R(()=>wi.value.map(e=>{let t=function(e){if(e.type!==`code_block`)return e;let t=e,n=[String(t.language??``),String(t.loading??``),String(t.diff??``),String(t.code??``),String(t.originalCode??``),String(t.updatedCode??``),String(t.raw??``)].join(`\0`),r=xn.get(t);if(r&&r.signature===n)return r.node;let i=Q({},t);return xn.set(t,{signature:n,node:i}),i}(e.node),n=Qo(t),r=rs(t,n);if((t.type===`html_block`||t.type===`html_inline`)&&r===No[t.type]){let e=t,n=String(e.tag??``).trim().toLowerCase()||wL(e.content);if(n){let i=gt.value[n];if(_t.value.has(n)&&i)r=i,t=rY(Q({},e),{type:n,tag:n,content:DL(e.content,n)});else if(EL(e.content??e.raw,n)){let n=String(e.content??e.raw??``);t.type===`html_inline`?(r=JX,t={type:`text`,content:n,raw:n}):(r=eQ,t={type:`paragraph`,children:[{type:`text`,content:n,raw:n}],raw:n})}}}let i=t.type===`code_block`&&k.value===`pre`&&r===KX&&!$o(gt.value,n),a=Q({},function(e,t,n){let r=t??Qo(e);if(e.type===`code_block`){let t=r?$o(gt.value,r):void 0;if(n&&k.value===`pre`&&!t&&n===KX)return Bo.value;if(n&&r&&n===t)return r===`mermaid`?ts(e):r===`infographic`?ns(e):r===`d2`||r===`d2lang`?Uo.value:Ro.value;if(n&&n===gt.value.code_block)return Ro.value;if(yi(n))return Vo.value}return r===`mermaid`?ts(e):r===`infographic`?ns(e):r===`d2`||r===`d2lang`?Uo.value:e.type===`link`?Ko.value:e.type===`list`?qo.value:e.type===`blockquote`?Jo.value:e.type===`table`?Yo.value:e.type===`code_block`?Lo.value:Go.value}(t,n,r)),o=zt.value?Ci.value[e.index]:null;t.type===`code_block`&&o?.kind===`code-block`&&(a=rY(Q({},a),i?{reservedHeightPx:o.height??o.contentHeight}:{estimatedHeightPx:o.height,estimatedContentHeightPx:o.contentHeight,estimatedDiffInline:o.diffInline})),i||t.type!==`code_block`||n!==`mermaid`||lJ(a.estimatedPreviewHeightPx)!=null||(a=rY(Q({},a),{estimatedPreviewHeightPx:mJ(dJ(String(t.code??``)))})),i||t.type!==`code_block`||n!==`infographic`||lJ(a.estimatedPreviewHeightPx)!=null||(a=rY(Q({},a),{estimatedPreviewHeightPx:hJ(fJ(String(t.code??``)))})),t.type===`math_block`&&(a=rY(Q({},a),{cacheScope:ht}));let s=function(e,t){let n=String(e.type);return!dY(n)&>.value[n]===t}(t,r),c=s?AY(t,Ie.value):void 0;return rY(Q({},e),{node:t,component:r,bindings:a,customBindings:Q(Q({},c??{}),a),rendersCustomNode:s,hasSlotChildren:Xo(t),slotContent:String(t.content??``),isCodeBlock:t.type===`code_block`,indexKey:`${Po.value}-${e.index}`,vnodeKey:`${Ni.value}\0${e.index}\0${t.type}`})}));function Qo(e){return e?.type===`code_block`?String(e.language??``).trim().toLowerCase():``}function $o(e,t){let n=t.trim().toLowerCase();if(n)for(let t of[n,Oq(n),QK(n)]){let n=t&&e[t];if(n)return n}}function es(e,t,n,r){let i=Q({},e.value);return lJ(i.estimatedPreviewHeightPx)??(i.estimatedPreviewHeightPx=r(n(String(t?.code??``)),void 0,i.maxHeight===`none`?null:lJ(i.maxHeight)??void 0)),i}function ts(e){return es(Ho,e,dJ,mJ)}function ns(e){return es(Wo,e,fJ,hJ)}function rs(e,t){if(!e)return fQ;let n=gt.value,r=n[String(e.type)];if(e.type===`code_block`){let i=t??Qo(e);return(i?$o(n,i):void 0)||(k.value===`pre`?n.code_block||KX:i===`mermaid`?n.mermaid||Ao:i===`infographic`?n.infographic||jo:i===`d2`||i===`d2lang`?n.d2||Mo:r||n.code_block||bi.value)}return r||No[String(e.type)]||fQ}function is(e){s(`click`,e)}function as(e){var t;(t=e.target)!=null&&t.closest(`[data-node-index]`)&&s(`mouseover`,e)}function os(e){var t;(t=e.target)!=null&&t.closest(`[data-node-index]`)&&s(`mouseout`,e)}function ss(e){s(`mouseover`,e)}function cs(e){s(`mouseout`,e)}let ls=z(null),us=z(!1),ds=z(null),fs=R(()=>!(U.domMode!==`minimal`||Ne.value||!1!==U.fade||E.value||us.value||pn.value||qt.value||Ft.value||Mt.value||Zt.value||Object.keys(gt.value).length!==0)),ps,ms=null,hs=0,gs=0,_s=0,vs=[`code_block`,`admonition`,`table`,`math_block`,`html_block`,`image`,`thematic_break`],ys=new Set(vs),bs=[`.typewriter-cursor`,`.height-estimation-probes`,...vs.map(e=>`[data-node-type="${e}"]`),`script`,`style`].join(`,`);function xs(e){if(!e||typeof e!=`object`)return!1;let t=e.type;return typeof t==`string`&&ys.has(t)}function Ss(e){if(!e||typeof e!=`object`)return 0;let t=e,n=t.raw??t.content??t.code;if(typeof n==`string`)return n.length;let r=t.children;if(Array.isArray(r))return r.reduce((e,t)=>e+Ss(t),0);let i=t.items;return Array.isArray(i)?i.reduce((e,t)=>e+Ss(t),0):0}function Cs(){ps&&=(clearTimeout(ps),void 0)}function ws(){hs+=1,ms!=null&&(en?.(ms),ms=null)}function Ts(){ws(),ks(),ls.value&&(ls.value.style.visibility=`hidden`)}function Es(e){if(e.nodeType!==Node.TEXT_NODE||!(e.textContent??``).trim())return!1;let t=e.parentElement;return!!t&&!t.closest(bs)}function Ds(e){let t=e.lastChild;for(;t;){if(Es(t))return t;if(t.nodeType===Node.ELEMENT_NODE){let e=t;if(!e.matches(bs)&&e.lastChild){t=e.lastChild;continue}}for(;t&&t!==e&&!t.previousSibling;)t=t.parentNode;if(!t||t===e)break;t=t.previousSibling}return null}function Os(){let e=Zo.value;for(let t=e.length-1;t>=0;t--){let n=e[t];if(!n||xs(n.node)||!lo(n.index))continue;let r=_n.get(n.index);if(!r)continue;let i=Ds(r);if(i)return i}return null}function ks(){ds.value&&=(ds.value.classList.remove(E0),null)}function As(){if(T.value!==`simple`||!Me||!us.value||!me.value)return void ks();let e=Os(),t=e?function(e){let t=e.parentElement?.closest(`.text-node`);return t instanceof HTMLElement?t:e.parentElement}(e):null;t!==ds.value&&(ks(),t&&(t.classList.add(E0),ds.value=t))}function js(){if(T.value!==`precise`||!Me||!us.value||ms!=null)return;let e=hs,t=()=>{ms=null,e===hs&&function(){if(T.value!==`precise`||!(Me&&us.value&&me.value&&ls.value))return;let e=me.value,t=ls.value;t.style.visibility=`hidden`;let n=Os();if(!n)return;let r=0,i=0,a=20,o=!1;if(n?.textContent){let t=n.textContent.length,s=document.createRange();s.setStart(n,Math.max(0,t-1)),s.setEnd(n,t);let c=typeof s.getClientRects==`function`?s.getClientRects():void 0,l=c?.[c.length-1]??n.parentElement?.getBoundingClientRect();if(l){let t=ft(`typewriterCursor.root.getBoundingClientRect`,()=>e.getBoundingClientRect());r=l.right-t.left+e.scrollLeft,i=l.top-t.top+e.scrollTop,a=l.height||a,o=!0}s.detach()}o&&(t.style.transform=`translate(${Math.max(0,r)}px, ${Math.max(0,i)}px)`,t.style.height=`${a}px`,t.style.visibility=`visible`)}()};$t?ms=$t(t):t()}return l([Ge,()=>r.content,()=>r.nodes,()=>U.typewriter,qe],()=>iY(null,null,function*(){if(!Me||Ne.value||!Re.value)return;if(qe.value)return us.value=!1,Cs(),void Ts();if(r.nodes?.length)return us.value=!1,Cs(),Ts(),gs=(r.content??``).length,void(_s=Ge.value.length);let e=function(){return r.nodes?.length?r.nodes.reduce((e,t)=>e+Ss(t),0):(r.content??``).length}(),t=function(){return r.nodes?.length?r.nodes.reduce((e,t)=>e+Ss(t),0):Ge.value.length}(),n=!xs(yt.value[yt.value.length-1]),a=e>gs,o=t>_s;if(!E.value||!n||!a&&!o)return E.value&&n||(us.value=!1,Ts()),gs=e,void(_s=t);gs=e,_s=t,us.value=!0,T.value===`precise`&&ls.value&&(ls.value.style.visibility=`hidden`),Cs(),yield i(),T.value===`simple`?As():(ks(),js()),ps=setTimeout(()=>{ps=void 0,us.value=!1},3e3)}),{flush:`post`,immediate:!0}),l(us,e=>iY(null,null,function*(){e?(yield i(),T.value===`simple`?As():(ks(),T.value===`precise`&&js())):Ts()}),{flush:`post`}),l(T,()=>iY(null,null,function*(){if(Me&&!Ne.value&&Re.value&&us.value){if(yield i(),T.value===`simple`)return ws(),void As();ks(),T.value===`precise`?js():Ts()}}),{flush:`post`}),l([()=>ln.value,()=>Dr.start,()=>Dr.end],()=>iY(null,null,function*(){Me&&!Ne.value&&Re.value&&us.value&&(yield i(),T.value===`simple`?As():(ks(),T.value===`precise`&&js()))}),{flush:`post`}),re(()=>{Cs(),ws(),ks(),mt.clear()}),(e,t)=>{let n=a(`NodeRenderer`,!0);return B(Ne)?(u(!0),G(P,{key:0},y(Zo.value,e=>(u(),G(P,{key:e.vnodeKey},[e.rendersCustomNode?(u(),I(C(e.component),ie({key:0,ref_for:!0},e.customBindings,{node:e.node,loading:e.node.loading,"index-key":e.indexKey,"custom-id":U.customId,"is-dark":U.isDark,onClick:is,onMouseover:ss,onMouseout:cs,onCopy:t[0]||=e=>c(e),onHandleArtifactClick:t[1]||=e=>s(`handleArtifactClick`,e)}),{default:V(()=>[e.hasSlotChildren?(u(),I(n,ie({key:0,ref_for:!0},St.value,{nodes:e.node.children,"index-key":e.indexKey,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`nodes`,`index-key`])):e.slotContent?(u(),I(n,ie({key:1,ref_for:!0},St.value,{content:e.slotContent,final:!e.node.loading,"index-key":`${e.indexKey}-content`,"smooth-streaming":!1,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`content`,`final`,`index-key`])):O(``,!0)]),_:2},1040,[`node`,`loading`,`index-key`,`custom-id`,`is-dark`])):(u(),I(C(e.component),ie({key:1,node:e.node,loading:e.node.loading,"index-key":e.indexKey},{ref_for:!0},e.bindings,{"custom-id":U.customId,"is-dark":U.isDark,onClick:is,onMouseover:ss,onMouseout:cs,onCopy:t[2]||=e=>c(e),onHandleArtifactClick:t[3]||=e=>s(`handleArtifactClick`,e)}),null,16,[`node`,`loading`,`index-key`,`custom-id`,`is-dark`]))],64))),128)):(u(),G(`div`,{key:1,ref_key:`containerRef`,ref:me,class:H([`markstream-vue markdown-renderer`,[{dark:U.isDark},{virtualized:qt.value},{"virtual-scroll-coordinated":Rt.value},{"stable-layout":Cr.value},{"typewriter-simple-cursor":us.value&&T.value===`simple`}]]),"data-custom-id":U.customId,onClick:is,onMouseover:as,onMouseout:os},[Bt.value||qt.value?(u(),G(P,{key:0},[Bt.value?(u(),I(y0,{key:0,width:Ut.value,"flow-root":qt.value||Rt.value,"paragraph-node":Tt.value,"list-item-node":Et.value,"list-node":Dt.value,"heading-nodes":Ot.value,"set-paragraph-wrapper":Jr,"set-list-item-wrapper":Yr,"set-list-wrapper":Xr,"set-heading-wrapper":mi},null,8,[`width`,`flow-root`,`paragraph-node`,`list-item-node`,`list-node`,`heading-nodes`])):O(``,!0),qt.value?(u(),G(`div`,{key:1,class:`node-spacer`,style:oe({height:`${Ti.value}px`}),"aria-hidden":`true`},null,4)):O(``,!0)],64)):O(``,!0),fs.value?(u(!0),G(P,{key:1},y(Zo.value,e=>(u(),G(P,{key:e.vnodeKey},[lo(e.index)?(u(),I(C(e.component),ie({key:0,node:e.node,loading:e.node.loading,"index-key":e.indexKey},{ref_for:!0},e.bindings,{"custom-id":U.customId,"is-dark":U.isDark,onMouseover:t[4]||=e=>s(`mouseover`,e),onMouseout:t[5]||=e=>s(`mouseout`,e),onCopy:t[6]||=e=>c(e),onHandleArtifactClick:t[7]||=e=>s(`handleArtifactClick`,e)}),null,16,[`node`,`loading`,`index-key`,`custom-id`,`is-dark`])):O(``,!0)],64))),128)):(u(!0),G(P,{key:2},y(Zo.value,e=>(u(),G(`div`,{key:e.vnodeKey,ref_for:!0,ref:t=>fo(e.index,t),class:`node-slot`,"data-node-index":e.index,"data-node-type":e.node.type},[lo(e.index)?(u(),G(`div`,{key:0,ref_for:!0,ref:t=>function(e,t){t||function(e){let t=`${ki()}-${e}`,n=!1;for(let r of Array.from(Rr.keys()))(zr.get(r)?.index===e||r===t||r.startsWith(`${t}-`))&&(Rr.delete(r),zr.delete(r),n=!0);n&&(Bi(),so(`async-node`))}(e),Nr.delete(e),function(e){let t=(Ar.get(e)??0)+1;Ar.set(e,t)}(e);let n=jr.get(e);if(n){for(let e of n)Kr(e);jr.delete(e)}if(function(e){let t=vn.get(e);t&&(bn?.unobserve(t),yn.delete(t),vn.delete(e))}(e),!t||!Jt.value)return kr.delete(e),void Ar.delete(e);kr.set(e,t);let r=()=>{ho(e,t)};queueMicrotask(r);let i=(bn||typeof ResizeObserver>`u`||(bn=new ResizeObserver(e=>{if(e.length)for(let t of e){let e=yn.get(t.target),n=vn.get(e??-1);e!=null&&n&&ho(e,n)}else go()})),bn);if(i&&(vn.set(e,t),yn.set(t,e),i.observe(t)),typeof window<`u`){let t=yt.value[e]?.type===`code_block`?[16,80,240,800]:qe.value?[80]:[];if(t.length){let n=t.map(e=>Gr(e,r,`node-resize`)).filter(e=>e!=null);n.length&&jr.set(e,n)}}}(e.index,t),class:`node-content`},[e.isCodeBlock?e.rendersCustomNode?(u(),I(C(e.component),ie({key:1,ref_for:!0},e.customBindings,{node:e.node,loading:e.node.loading,"index-key":e.indexKey,"custom-id":U.customId,"is-dark":U.isDark,onCopy:t[12]||=e=>c(e),onHandleArtifactClick:t[13]||=e=>s(`handleArtifactClick`,e)}),{default:V(()=>[e.hasSlotChildren?(u(),I(n,ie({key:0,ref_for:!0},St.value,{nodes:e.node.children,"index-key":e.indexKey,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`nodes`,`index-key`])):e.slotContent?(u(),I(n,ie({key:1,ref_for:!0},St.value,{content:e.slotContent,final:!e.node.loading,"index-key":`${e.indexKey}-content`,"smooth-streaming":!1,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`content`,`final`,`index-key`])):O(``,!0)]),_:2},1040,[`node`,`loading`,`index-key`,`custom-id`,`is-dark`])):(u(),I(C(e.component),ie({key:2,node:e.node,loading:e.node.loading,"index-key":e.indexKey},{ref_for:!0},e.bindings,{"custom-id":U.customId,"is-dark":U.isDark,onCopy:t[14]||=e=>c(e),onHandleArtifactClick:t[15]||=e=>s(`handleArtifactClick`,e)}),null,16,[`node`,`loading`,`index-key`,`custom-id`,`is-dark`])):(u(),I(se,{key:0,name:`fade`,css:!1!==U.fade,appear:!1!==U.fade},{default:V(()=>[e.rendersCustomNode?(u(),I(C(e.component),ie({key:0,ref_for:!0},e.customBindings,{node:e.node,loading:e.node.loading,"index-key":e.indexKey,"custom-id":U.customId,"is-dark":U.isDark,onCopy:t[8]||=e=>c(e),onHandleArtifactClick:t[9]||=e=>s(`handleArtifactClick`,e)}),{default:V(()=>[e.hasSlotChildren?(u(),I(n,ie({key:0,ref_for:!0},St.value,{nodes:e.node.children,"index-key":e.indexKey,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`nodes`,`index-key`])):e.slotContent?(u(),I(n,ie({key:1,ref_for:!0},St.value,{content:e.slotContent,final:!e.node.loading,"index-key":`${e.indexKey}-content`,"smooth-streaming":!1,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`content`,`final`,`index-key`])):O(``,!0)]),_:2},1040,[`node`,`loading`,`index-key`,`custom-id`,`is-dark`])):(u(),I(C(e.component),ie({key:1,node:e.node,loading:e.node.loading,"index-key":e.indexKey},{ref_for:!0},e.bindings,{"custom-id":U.customId,"is-dark":U.isDark,onCopy:t[10]||=e=>c(e),onHandleArtifactClick:t[11]||=e=>s(`handleArtifactClick`,e)}),null,16,[`node`,`loading`,`index-key`,`custom-id`,`is-dark`]))]),_:2},1032,[`css`,`appear`]))],512)):(u(),G(`div`,{key:1,class:`node-placeholder`,style:oe({height:`${Bn(e.index)}px`})},null,4))],8,T0))),128)),us.value&&T.value===`precise`?(u(),G(`span`,{key:3,ref_key:`typewriterCursorRef`,ref:ls,class:`typewriter-cursor`,"aria-hidden":`true`},null,512)):O(``,!0),qt.value?(u(),G(`div`,{key:4,class:`node-spacer`,style:oe({height:`${Ei.value}px`}),"aria-hidden":`true`},null,4)):O(``,!0)],42,w0))}}})),[[`__scopeId`,`data-v-a9489508`]]),O0=D0;O0.install=e=>{let t=new Set([`MarkdownRender`,`NodeRenderer`,O0.__name,O0.name].filter(e=>!!e));for(let n of t)e.component(n,D0)};var k0=Object.freeze(Object.defineProperty({__proto__:null,default:O0},Symbol.toStringTag,{value:`Module`})),A0={key:0,xmlns:`http://www.w3.org/2000/svg`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,class:`admonition-icon`},j0={key:1,xmlns:`http://www.w3.org/2000/svg`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,class:`admonition-icon`},M0={key:2,xmlns:`http://www.w3.org/2000/svg`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,class:`admonition-icon`},N0={key:3,xmlns:`http://www.w3.org/2000/svg`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,class:`admonition-icon`},P0={class:`admonition-title`},F0=[`aria-expanded`,`aria-controls`],I0=[`id`],L0=vY(K({__name:`AdmonitionNode`,props:{node:{},indexKey:{},isDark:{type:Boolean},typewriter:{type:Boolean},fade:{type:Boolean},customId:{}},emits:[`copy`],setup(e,{emit:t}){var n;let r=e,i=t,a=R(()=>{if(r.node.title&&r.node.title.trim().length)return r.node.title;let e=r.node.kind||`note`;return e.charAt(0).toUpperCase()+e.slice(1)}),o=z(!!r.node.collapsible&&!((n=r.node.open)==null||n));function s(){r.node.collapsible&&(o.value=!o.value)}let c=`admonition-${Math.random().toString(36).slice(2,9)}`;return(t,n)=>(u(),G(`div`,{class:H([`admonition`,[`admonition-${r.node.kind}`]])},[L(`div`,{id:c,class:`admonition-legend`},[r.node.kind===`note`||r.node.kind===`info`?(u(),G(`svg`,A0,[...n[1]||=[L(`circle`,{cx:`12`,cy:`12`,r:`10`},null,-1),L(`path`,{d:`M12 16v-4`},null,-1),L(`path`,{d:`M12 8h.01`},null,-1)]])):r.node.kind===`tip`?(u(),G(`svg`,j0,[...n[2]||=[L(`path`,{d:`M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5`},null,-1),L(`path`,{d:`M9 18h6`},null,-1),L(`path`,{d:`M10 22h4`},null,-1)]])):r.node.kind===`warning`||r.node.kind===`caution`?(u(),G(`svg`,M0,[...n[3]||=[L(`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`},null,-1),L(`path`,{d:`M12 9v4`},null,-1),L(`path`,{d:`M12 17h.01`},null,-1)]])):r.node.kind===`danger`||r.node.kind===`error`?(u(),G(`svg`,N0,[...n[4]||=[L(`polygon`,{points:`7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2`},null,-1),L(`path`,{d:`M12 8v4`},null,-1),L(`path`,{d:`M12 16h.01`},null,-1)]])):O(``,!0),L(`span`,P0,W(a.value),1),r.node.collapsible?(u(),G(`button`,{key:4,class:`admonition-toggle`,"aria-expanded":!o.value,"aria-controls":`${c}-content`,onClick:s},[(u(),G(`svg`,{style:oe({rotate:o.value?`0deg`:`90deg`}),xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...n[5]||=[L(`path`,{d:`m9 18 6-6-6-6`},null,-1)]],4))],8,F0)):O(``,!0)]),d(L(`div`,{id:`${c}-content`,class:`admonition-content`,"aria-labelledby":c},[b(B(O0),{"index-key":`admonition-${e.indexKey}`,nodes:r.node.children,"custom-id":r.customId,typewriter:r.typewriter,fade:r.fade,onCopy:n[0]||=e=>i(`copy`,e)},null,8,[`index-key`,`nodes`,`custom-id`,`typewriter`,`fade`])],8,I0),[[M,!o.value]])],2))}}),[[`__scopeId`,`data-v-a83480e1`]]);L0.install=e=>{e.component(L0.__name,L0)};var R0=()=>ge(()=>import(`./d2_markstream-vue-xMoF3M5G.js`),[]),z0=null,B0=R0,V0=null,H0=!1,U0=!1,W0=0;function G0(){return iY(this,null,function*(){if(z0)return z0;let e=B0,t=W0;return e?e===R0&&H0?null:V0||(V0=iY(null,null,function*(){let n;try{n=yield e()}catch(n){if(e===R0)return t===W0&&e===B0&&(H0=!0,function(e){U0||(U0=!0,console.warn(`[markstream-vue] Optional dependency "@terrastruct/d2" is not installed. D2 blocks will render as source.`,e))}(n)),null;throw n}finally{t===W0&&e===B0&&(V0=null)}return t!==W0||e!==B0?null:n?(z0=function(e){if(!e)return e;if(e.D2&&typeof e.D2==`function`)return e.D2;if(e.default&&e.default.D2&&typeof e.default.D2==`function`)return e.default.D2;let t=e.default??e;return typeof t==`function`?t:t?.D2&&typeof t.D2==`function`?t.D2:t}(n),z0):null}),V0):null})}var K0=null,q0=null,J0=null,Y0=0;function X0(){return typeof q0==`function`}function Z0(){return iY(this,null,function*(){if(K0)return K0;let e=q0,t=Y0;return e?J0||(J0=iY(null,null,function*(){let n=yield e();if(t!==Y0||e!==q0)return null;let r=function(e){if(!e)return null;let t=e.default??e,n=typeof t==`function`&&typeof t.prototype?.render==`function`?t:e.Infographic??t?.Infographic;return typeof n==`function`?n:null}(n);return t!==Y0||e!==q0?null:r?(K0=r,K0):null}).finally(()=>{t===Y0&&e===q0&&(J0=null)}),J0):null})}function Q0(e){let t=Number.parseFloat(String(e??``));return Number.isFinite(t)?t:0}function $0(e,t){e?.(t)}function e2(e,t){return e?($0(t,`readElementBoxHeight.offsetHeight`),Math.ceil(Math.max(0,e.offsetHeight||0))):0}function t2(e,t){let n=e2(e,t);if(!e||typeof window>`u`||typeof window.getComputedStyle!=`function`)return n;$0(t,`readElementOuterHeight.getComputedStyle`);let r=window.getComputedStyle(e),i=Q0(r.marginTop),a=Q0(r.marginBottom);return Math.ceil(Math.max(0,n+i+a))}function n2(e,t,n){if(!e)return 0;let r=function(e){return e?e.matches?.call(e,`.markstream-vue.markdown-renderer`)?e:e.querySelector(`.markstream-vue.markdown-renderer`):null}(e);if(!r)return 0;let i=Number.isFinite(n)?Number(n):t2(e,t),a=e2(r,t);return Math.max(0,i-a)}function r2(e,t,n){let r=n.getKey?.call(n,e,t)??e.id??t;return String(r)}function i2(e,t,n){return n.getKind?.call(n,e,t)??String(e.kind??``)}function a2(e,t,n){let r=n.getContent?.call(n,e,t)??e.content;return typeof r==`string`?r:``}function o2(e,t,n){let r=n.getFinal?.call(n,e,t);if(typeof r==`boolean`)return r;let i=e.final;return typeof i!=`boolean`||i}function s2(e,t,n){return n.getRevision?.call(n,e,t)??e.revision}function c2(e,t,n){let r=i2(e,t,n);return r===`assistant-markdown`||r===`markdown`||!r&&a2(e,t,n).length>0}function l2(e,t,n){let r=n.estimateItemHeight?.call(n,e,t);if(Number.isFinite(r)&&r>0)return r;let i=i2(e,t,n);return i===`assistant-markdown`||i===`markdown`?360:i===`system-divider`?44:i===`tool-call`?72:i===`thinking`?92:i===`error`?76:i===`user-message`?88:a2(e,t,n).length>0?360:96}var u2=Symbol(`markstreamLanguageIconResolver`);function d2(e){return o(e)}d2(()=>ge(()=>import(`./index3-CB2yWI7V.js`),__vite__mapDeps([39,31,1,2,7,32]))),d2(()=>ge(()=>import(`./index6-DWSH8E97.js`),__vite__mapDeps([34,1,2]))),d2(()=>ge(()=>import(`./index7-DVxpAUAg.js`),__vite__mapDeps([33,1,2]))),d2(()=>ge(()=>import(`./index11-Cc6dLv_C.js`),__vite__mapDeps([36,1,2,32]))),d2(()=>ge(()=>import(`./index10-CgiEr33-.js`),__vite__mapDeps([37,1,2]))),d2(()=>ge(()=>import(`./index8-BogL88_S.js`),__vite__mapDeps([38,1,2]))),d2(()=>ge(()=>import(`./index4-a1ugmBbs.js`),__vite__mapDeps([40,30,1,2,7]))),d2(()=>ge(()=>import(`./index5-zhInUTZK.js`),__vite__mapDeps([35,1,2,31,7,32]))),d2(()=>ge(()=>import(`./index9-DrhwA7rQ.js`),__vite__mapDeps([41,1,2])));var f2=`cjs.css.csv.gif.htm.html.jpeg.jpg.js.json.jsx.log.md.mjs.pdf.png.scss.svg.ts.tsx.txt.vue.webp.xml.yaml.yml`.split(`.`),p2=new Set([`AGENTS.md`,`CHANGELOG.md`,`Dockerfile`,`LICENSE`,`Makefile`,`README.md`,`package.json`,`pnpm-lock.yaml`,`pnpm-workspace.yaml`,`tsconfig.json`,`vite.config.ts`]),m2=[...f2].toSorted((e,t)=>t.length-e.length).join(`|`),h2=new RegExp([String.raw`(?:^|[\s([{"'`+"`"+String.raw`])`,String.raw`(`,String.raw`(?:~|\.{1,2}|/)?(?:[A-Za-z0-9_.@+()[\]-]+/)+[A-Za-z0-9_.@+()[\]-]+(?:\.(?:${m2}))?`,String.raw`|`,String.raw`[A-Za-z0-9_.@+()[\]-]+\.(?:${m2})`,String.raw`)`,String.raw`(?:#L?(\d+)|:(\d+))?`,String.raw`(?=$|[\s)"'\]}>.,;!?])`].join(``),`gi`),g2=/[),.;!?]+$/;function _2(e){let t=e.toLowerCase();return f2.some(e=>t.endsWith(`.${e}`))}function v2(e){let t=new Map,n=new RegExp(String.raw`\b(?:path|src)=["'](\/[^"']+\.(?:${m2}))["']`,`gi`),r;for(;(r=n.exec(e))!==null;){let e=r[1];if(!e)continue;let n=e.split(`/`).pop();n&&t.set(n,e)}return t}function y2(e,t={}){let n=e.trim();if(!n||/^[a-z][a-z0-9+.-]*:\/\//i.test(n))return null;let r=n.match(/^(.*?)(?:#L?(\d+)|:(\d+))?$/i);if(!r)return null;let i=(r[1]??``).replace(g2,``);if(!i)return null;let a=i.split(`/`).pop()??i,o=i.includes(`/`),s=p2.has(a),c=_2(a);if(o&&!s&&!c)return null;if(!o&&!s){let e=t.aliases?.get(a);if(!e)return null;i=e}let l=r[2]??r[3],u=l?Number(l):void 0;return{path:i,line:u!==void 0&&Number.isFinite(u)&&u>0?u:void 0}}function b2(e,t={}){let n=[];h2.lastIndex=0;let r;for(;(r=h2.exec(e))!==null;){let e=r[0]??``,i=r[1]??``,a=e.indexOf(i);if(a<0)continue;let o=i+(r[2]??r[3]?e.slice(a+i.length):``),s=o.replace(g2,``),c=o.length-s.length;o=s;let l=y2(o,t);if(!l)continue;let u=r.index+a,d=u+o.length;n.push({...l,start:u,end:d,text:o}),c>0&&(h2.lastIndex-=c)}return n}var x2=12e4,S2=6e4,C2=32,w2=3e4,T2=/(^|\n)(`{3,}|~{3,})[^\n]*\n([\s\S]*?)(?:\n)?\2(?=\n|$)/g;function E2(e){let t=0,n=0,r=0;T2.lastIndex=0;let i;for(;(i=T2.exec(e))!==null;){let e=i[3]??``;t+=1,n+=e.length,r=Math.max(r,e.length)}return{codeRenderer:e.length>=x2||n>=S2||t>=C2||r>=w2?`pre`:`shiki`,codeFenceCount:t,codeChars:n}}function D2(e,t){let n=0;for(let r=t-1;r>=0&&e[r]===`\\`;r--)n++;return n%2==1}var O2=/\s/,k2=/\p{Nd}/u;function A2(e,t){let n=e.codePointAt(t);return n===void 0?void 0:String.fromCodePoint(n)}function j2(e,t){if(t<=0)return;let n=e.codePointAt(t-1),r=n!==void 0&&n>=55296&&n<=56319&&t>1?t-2:t-1,i=e.codePointAt(r);return i===void 0?void 0:String.fromCodePoint(i)}function M2(e){return e!==void 0&&O2.test(e)}function N2(e){return e!==void 0&&k2.test(e)}function P2(e){return e!==void 0&&e>=`A`&&e<=`Z`}var F2=new RegExp(String.raw`^(?:AED|AFN|ALL|AMD|ANG|AOA|ARS|AUD|AWG|AZN|BAM|BBD|BDT|BGN|BHD|BIF|BMD|BND|BOB|BRL|BSD|BTN|BWP|BYN|BZD|CAD|CDF|CHF|CLF|CLP|CNY|COP|CRC|CUC|CUP|CVE|CZK|DJF|DKK|DOP|DZD|EGP|ERN|ETB|EUR|FJD|FKP|GBP|GEL|GHS|GIP|GMD|GNF|GTQ|GYD|HKD|HNL|HRK|HTG|HUF|IDR|ILS|INR|IQD|IRR|ISK|JMD|JOD|JPY|KES|KGS|KHR|KMF|KPW|KRW|KWD|KYD|KZT|LAK|LBP|LKR|LRD|LSL|LYD|MAD|MDL|MGA|MKD|MMK|MNT|MOP|MRU|MUR|MVR|MWK|MXN|MYR|MZN|NAD|NGN|NIO|NOK|NPR|NZD|OMR|PAB|PEN|PGK|PHP|PKR|PLN|PYG|QAR|RON|RSD|RUB|RWF|SAR|SBD|SCR|SDG|SEK|SGD|SHP|SLE|SLL|SOS|SRD|SSP|STN|SVC|SYP|SZL|THB|TJS|TMT|TND|TOP|TRY|TTD|TWD|TZS|UAH|UGX|USD|UYU|UZS|VED|VES|VND|VUV|WST|XAF|XCD|XOF|XPF|YER|ZAR|ZMW|ZWL|HK|US|SG|AU|CA|NZ|NT|TW|RMB|MEX|TT|BZ|EU|UK)$`);function I2(e,t){if(!P2(e[t-1]))return!1;let n=t-1;for(;n>0&&P2(e[n-1]);)n--;return F2.test(e.slice(n,t))||N2(A2(e,t+1))?!0:t-n<=2&&!/[\p{L}\p{Nd}]/u.test(e[n-1]??``)&&!/\p{L}/u.test(A2(e,t+1)??``)}function L2(e,t){if(!P2(e[t-1]))return!1;let n=t-1;for(;n>0&&P2(e[n-1]);)n--;return F2.test(e.slice(n,t))?!0:t-n<=2&&!/[\p{L}\p{Nd}]/u.test(e[n-1]??``)}function R2(e,t){let n=e[t+1];return N2(A2(e,t+1))?!0:(n===`-`||n===`+`||n===`.`||n===`−`)&&N2(A2(e,t+2))}var z2=/^[-–—,;:~([/]$/;function B2(e,t){let n=e[t+1];if(n!==`-`&&n!==`+`&&n!==`.`||!N2(A2(e,t+2)))return!1;let r=e[t-1];return r!==void 0&&z2.test(r)}var V2=String.raw`[,;:~\-–—/\s()=*×]|and|or`;function hse(e){let t=e.replace(new RegExp(String.raw`^(?:${V2})+`,`u`),``);for(;;){let e=t.replace(new RegExp(String.raw`^\p{L}+(?:${V2})+`,`u`),``).replace(/^[\p{L}][\p{L} ]*(?=\p{Nd})/u,``);if(e===t)break;t=e}if(!/\p{Nd}/u.test(t))return!1;let n=String.raw`[-+]?[\p{Nd}][\p{Nd},.'’]*`;return new RegExp(String.raw`^${n}(?:\p{L}+)?(?:(?:${V2})+${n}(?:\p{L}+)?)*$`,`u`).test(t)}var H2=1,U2=2,W2=3,G2=-1;function gse(e){let t=e.length,n=new Uint8Array(t),r=new Int32Array(t+1).fill(G2),i=new Int32Array(t+1),a=new Int32Array(t+1),o=[],s=[];{let n=[];for(let r=0;r=2&&n.some(e=>e.trim())}(t))}(o.value,t)?C():function(){if(g+=1,m)return;let t=Math.max(0,function(e){let t=e.parseCoalesceMs;return typeof t==`number`&&Number.isFinite(t)&&t>=0?t:80}(e)-(L1()-_));t<=0?C():m=setTimeout(C,t)}())},{flush:`sync`,immediate:!0}),r(S);let w=R(()=>{var n;return SL(e.customHtmlTags,e.parseOptions?.customHtmlTags,(n=t.customComponentsMap?.value??{},Object.entries(n).map(([e,t])=>{let n=bL(e);return t==null||!n||dY(n)||WI.has(n)||qI.has(n)?``:n}).filter(Boolean)))}),T=R(()=>{let{key:e,tags:r}=CL(w.value);if(!e)return n;let a=i.get(e);if(a)return a;let o=qK(t.instanceMsgId,{customHtmlTags:r});return i.set(e,o),o}),E=R(()=>{let t=T.value;if(!e.customMarkdownIt)return t;let n=e.customMarkdownIt(t);return t.__markstreamHasCustomParserExtensions=!0,n.__markstreamHasCustomParserExtensions=!0,n}),D=R(()=>{var n;let r=e.parseOptions??{},i=t.effectiveFinal.value,a=w.value,o=i!=null,s=a.length>0;return o||s||r.streamParse==null?Q(Q(rY(Q({},r),{streamParse:(n=r.streamParse)==null||n}),o?{final:i}:{}),s?{customHtmlTags:a}:{}):r}),O=R(()=>new Set((D.value.customHtmlTags??[]).map(e=>String(e).trim().toLowerCase()).filter(Boolean))),k=R(()=>B1(D.value,E.value,e.customMarkdownIt,{includeFinal:!0})),A=R(()=>B1(D.value,E.value,e.customMarkdownIt,{includeFinal:!1}));return l([k,A],([e,t],[n,r])=>{n&&(e===n&&t===r||(C(),t!==r&&(s=[],d=``)))},{flush:`sync`}),{effectiveCustomHtmlTags:w,effectiveCustomHtmlTagsSet:O,mdBase:T,mdInstance:E,mergedParseOptions:D,getParsedNodesDirtyStartIndex:()=>y,getParsedNodesRevision:()=>b,parsedNodes:R(()=>{if(e.nodes?.length)return s=[],d=``,x(0),v(e.nodes.slice());let n=o.value;if(!n)return s=[],d=``,x(-1),[];let r=t.debugPerformanceEnabled.value,i=r?L1():0,a=E.value,l=k.value,m=A.value;c&&l!==c&&function(e){var t,n;(n=(t=e.stream)?.reset)==null||n.call(t)}(a),u&&m!==u&&(s=[],d=``);let _=Object.keys(t.customComponentsMap?.value??{}).length>0||typeof D.value.postTransformNodes==`function`;_!==f&&(s=[],d=``);let b=!_&&s.length>0&&n.startsWith(d)&&m===u,S=r?R1(a):null,C=r?{}:void 0,w=i0(a),T=!w&&!_,O=HG(n,a,Q(Q(rY(Q({},D.value),{__reuseStableTopLevelNodes:T}),w?{__disableStreamParse:!0}:{}),C?{__timing:C}:{})),j=r?L1():0,M=r?{signatureMs:0,stabilizeSignatureMs:0,primeSignatureMs:0,signatureCallCount:0,stabilizeSignatureCallCount:0,primeSignatureCallCount:0}:void 0,N,P=r?n0(O.length):void 0,F=0,ee=0,I=0;if(b){let t=r?L1():0,[i,o]=function(e){let[t,n]=e.scanGlobalReferenceAppend(e.previousContent,e.content),r=e.parseOptions;return[e.previousDirtyStartIndex>0&&!0!==r.final&&!e.customMarkdownIt&&!i0(e.md)&&!t&&typeof r.preTransformTokens!=`function`&&typeof r.postTransformTokens!=`function`&&typeof r.postTransformNodes!=`function`&&(r.customHtmlTags?.length??0)===0?e.previousDirtyStartIndex:0,n]}({content:n,previousContent:d,previousDirtyStartIndex:y,parseOptions:D.value,customMarkdownIt:e.customMarkdownIt,md:a,scanGlobalReferenceAppend:p});I=o;let c=i<=0;if(M){let e=function(e,t,n,r={}){if(!t.length)return{nodes:e,metrics:n0(e.length)};let i=r.scanStartIndex??0,a=!1!==r.reuseDirtyTail,o=function(e,t,n,r=0){let i=Math.min(e.length,t.length);for(let a=Math.min(i,Math.max(0,r));aZ1(e[r]))}(N,M,ee):function(e,t=0){for(let n=Math.max(0,t);n(S?.total??0);t.logPerf(r?`parse(stream)`:`parse(sync)`,Q(Q(Q({rendererId:t.instanceMsgId,ms:Math.round(L1()-i),nodes:N.length,contentLength:n.length,parseCommitCount:h,parseCoalescedCount:g,nodeReuseMs:L,referenceDefinitionScanChars:I,signatureMs:M?.signatureMs??0,stabilizeSignatureMs:M?.stabilizeSignatureMs??0,primeSignatureMs:M?.primeSignatureMs??0,signatureCallCount:M?.signatureCallCount??0,stabilizeSignatureCallCount:M?.stabilizeSignatureCallCount??0,primeSignatureCallCount:M?.primeSignatureCallCount??0,stabilizeMs:F},P??{}),C?Object.fromEntries(j1.map(e=>[e,C[e]??0])):{}),e?{streamMode:e.lastMode,streamDelta:l0(e,S),streamStats:e}:{}))}return v(N)})}}function d0(e){let{isClient:t}=e,n=z(new Set),r=new Map,i=new Map,a=new Map;function o(e){if(!t)return;let n=a.get(e);n!=null&&(window.clearTimeout(n),a.delete(e))}function s(){if(t)for(let e of a.values())window.clearTimeout(e);a.clear()}function c(){n.value=new Set}return{visibleNodeIndices:n,nodeVisibilityHandles:r,nodeVisibilityWatchStops:i,nodeVisibilityFallbackTimers:a,clearVisibilityFallback:o,clearAllVisibilityFallbacks:s,markNodeVisible:function(t,r=!0){var i;r&&o(t),function(t,r){if((a=(i=e.shouldTrackVisibleNodeIndices)?.call(e))!=null&&!a)return;var i,a;let o=n.value,s=o.has(t);if(r){if(s)return;let e=new Set(o);e.add(t),n.value=e;return}if(!s)return;let c=new Set(o);c.delete(t),n.value=c}(t,r),r&&((i=e.onNodeMarkedVisible)==null||i.call(e,t))},resetNodeVisibleState:c,cleanupNodeVisibility:function(t){var s;if(e.shouldCleanupNodeVisibility&&!e.shouldCleanupNodeVisibility())return;for(let[e,n]of i.entries())e{let e=a.getSnapshot();t.value=e.source,n.value=e.visible,i.value=e.done},s=a.subscribe(o);o();let c=R(()=>Math.max(0,t.value.length-n.value.length)),l=R(()=>c.value===0),u=R(()=>i.value&&l.value);return T()&&r(()=>{s(),a.destroy()}),{source:t,visible:n,done:i,final:u,caughtUp:l,pendingChars:c,enqueue:e=>a.enqueue(e),finish:e=>a.finish(e),flush:()=>a.flush(),reset:e=>a.reset(e),pause:()=>a.pause(),resume:()=>a.resume()}}var p0={maxCharsPerSecond:3e3,maxCommitFps:20,maxCharsPerCommit:160,catchUpLatencyMs:220,catchUpThreshold:400},m0=/auto|scroll|overlay/i;function h0(e){if(!e)return!1;let t=(e.overflowY||``).toLowerCase(),n=(e.overflow||``).toLowerCase();return m0.test(t)||m0.test(n)}function g0(e){let t=Math.ceil(e.scrollHeight)>Math.ceil(e.clientHeight)+1,n=Math.ceil(e.scrollWidth)>Math.ceil(e.clientWidth)+1;return t||n}var _0={class:`m-0 p-0`},v0=[`data-probe`],y0=vY(K(rY(Q({},{name:`HeightEstimationProbes`}),{__name:`HeightEstimationProbes`,props:{width:{},flowRoot:{type:Boolean},paragraphNode:{},listItemNode:{},listNode:{},headingNodes:{},setParagraphWrapper:{type:Function},setListItemWrapper:{type:Function},setListWrapper:{type:Function},setHeadingWrapper:{type:Function}},setup(e){let t=e;function n(e){return t.headingNodes?.[e]??null}return(t,r)=>(u(),G(`div`,{class:`height-estimation-probes`,style:oe({width:`${e.width}px`}),"aria-hidden":`true`},[L(`div`,{ref:t=>e.setParagraphWrapper(t),class:H([`node-content`,{"node-content-flow-root":e.flowRoot}]),"data-probe":`paragraph`},[b(B(eQ),{node:e.paragraphNode,"index-key":`probe-paragraph`},null,8,[`node`])],2),L(`div`,{ref:t=>e.setListItemWrapper(t),class:H([`node-content`,{"node-content-flow-root":e.flowRoot}]),"data-probe":`list-item`},[L(`ul`,_0,[b(B(KZ),{node:e.listItemNode,"index-key":`probe-list-item`},null,8,[`node`])])],2),L(`div`,{ref:t=>e.setListWrapper(t),class:H([`node-content`,{"node-content-flow-root":e.flowRoot}]),"data-probe":`list`},[b(B(qZ),{node:e.listNode,"index-key":`probe-list`},null,8,[`node`])],2),(u(),G(P,null,y(6,t=>L(`div`,{key:`probe-heading-${t}`,ref_for:!0,ref:n=>e.setHeadingWrapper(t,n),class:H([`node-content`,{"node-content-flow-root":e.flowRoot}]),"data-probe":`heading-${t}`},[b(B(VZ),{node:n(t),"index-key":`probe-heading-${t}`},null,8,[`node`,`index-key`])],10,v0)),64))],4))}})),[[`__scopeId`,`data-v-3e0766e2`]]),b0=K({name:`InfographicBlockNodeLoading`,props:{node:{type:Object,required:!0},showHeader:{type:Boolean,default:!0},estimatedPreviewHeightPx:{type:Number,default:void 0}},setup(e){let t=R(()=>hJ(lJ(e.estimatedPreviewHeightPx)??fJ(String(e.node.code??``))));return()=>s(`div`,{class:`infographic-block-container rounded-lg border overflow-hidden`,style:{margin:`var(--ms-flow-diagram-y) 0`,background:`var(--diagram-bg)`,borderColor:`var(--diagram-border)`,color:`hsl(var(--ms-foreground))`},"data-markstream-infographic":`1`,"data-markstream-mode":`pending`},[e.showHeader?s(`div`,{class:`infographic-block-header flex justify-between items-center border-b`,style:{padding:`var(--ms-inset-panel-y) var(--ms-inset-panel-x)`,background:`var(--diagram-header-bg)`,borderColor:`var(--diagram-border)`,minHeight:`calc(var(--ms-action-btn-icon) + var(--ms-action-btn-padding) + var(--ms-action-btn-padding) + var(--ms-inset-panel-y) + var(--ms-inset-panel-y) + 1px)`}},[s(`div`,{class:`flex items-center gap-x-2 overflow-hidden`},[s(`span`,{class:`icon-slot action-icon shrink-0`,style:{display:`inline-flex`,width:`var(--ms-action-btn-icon)`,height:`var(--ms-action-btn-icon)`}}),s(`span`,{class:`infographic-label font-medium font-mono truncate`,style:{fontSize:`var(--ms-text-label)`,color:`hsl(var(--ms-muted-foreground))`}},`Infographic`)]),s(`div`,{class:`infographic-header-actions flex items-center opacity-0 pointer-events-none`,style:{gap:`var(--ms-gap-header-actions)`},"aria-hidden":`true`},Array.from({length:4},()=>s(`span`,{class:`infographic-action-btn inline-flex items-center justify-center p-[var(--ms-action-btn-padding)] rounded`,style:{width:`calc(var(--ms-action-btn-icon) + var(--ms-action-btn-padding) + var(--ms-action-btn-padding))`,height:`calc(var(--ms-action-btn-icon) + var(--ms-action-btn-padding) + var(--ms-action-btn-padding))`}})))]):null,s(`div`,{class:`infographic-preview relative overflow-hidden block`,style:{height:`${t.value}px`,minHeight:`var(--ms-size-diagram-min-height)`,background:`var(--diagram-bg)`}},[s(`pre`,{class:`infographic-pending-source text-sm font-mono whitespace-pre-wrap`,style:{position:`absolute`,inset:`0`,zIndex:`1`,margin:`0`,padding:`var(--ms-inset-panel-body)`,overflow:`auto`,textAlign:`left`}},String(e.node.code??``)),s(`div`,{class:`absolute inset-0`},[s(`div`,{class:`w-full text-center flex items-center justify-center min-h-full`})])])])}}),x0=K({name:`MermaidBlockNodeLoading`,props:{node:{type:Object,required:!0},showHeader:{type:Boolean,default:!0},estimatedPreviewHeightPx:{type:Number,default:void 0}},setup(e){let t=R(()=>mJ(lJ(e.estimatedPreviewHeightPx)??dJ(String(e.node.code??``))));return()=>s(`div`,{class:`mermaid-block-container rounded-lg border overflow-hidden`,style:{margin:`var(--ms-flow-diagram-y) 0`,borderColor:`var(--diagram-border)`},"data-markstream-mermaid":`1`,"data-markstream-mode":`pending`},[e.showHeader?s(`div`,{class:`mermaid-block-header flex justify-between items-center border-b px-[var(--ms-inset-panel-x)] py-[var(--ms-inset-panel-y)]`,style:{background:`var(--diagram-header-bg)`,borderColor:`var(--diagram-border)`}},[s(`div`,{class:`flex items-center gap-x-2 overflow-hidden`},[s(`span`,{class:`mermaid-label-text text-[length:var(--ms-text-label)] font-medium font-mono truncate`,style:{color:`var(--code-action-fg)`}},`Mermaid`)]),s(`div`,{class:`mermaid-header-actions flex items-center gap-[var(--ms-gap-header-actions)] opacity-0 pointer-events-none`,"aria-hidden":`true`},Array.from({length:4},()=>s(`span`,{class:`mermaid-action-btn inline-flex items-center justify-center p-[var(--ms-action-btn-padding)] rounded`},[s(`span`,{class:`action-icon block`})])))]):null,s(`div`,{class:`mermaid-preview-area relative overflow-hidden block`,style:{height:`${t.value}px`,minHeight:`var(--ms-size-diagram-min-height)`,background:`var(--diagram-bg)`}},[s(`pre`,{class:`mermaid-source-code text-sm font-mono whitespace-pre-wrap`,style:{position:`absolute`,inset:`0`,margin:`0`,padding:`var(--ms-inset-panel-body)`,overflow:`auto`,textAlign:`left`}},String(e.node.code??``)),s(`div`,{class:`_mermaid w-full text-center flex items-center justify-center min-h-full`,style:{fontFamily:`inherit`,contentVisibility:`auto`,contain:`content`,containIntrinsicSize:`var(--ms-size-diagram-min-height) 240px`}})])])}}),S0={docs:{showTooltips:!0,fade:!0,batchRendering:!0,initialRenderBatchSize:40,renderBatchSize:80,renderBatchDelay:16,renderBatchBudgetMs:6,renderBatchIdleTimeoutMs:120,deferNodesUntilVisible:!0,maxLiveNodes:220,liveNodeBuffer:60,nodeVirtual:`auto`},chat:{showTooltips:!1,fade:!1,batchRendering:!0,initialRenderBatchSize:32,renderBatchSize:48,renderBatchDelay:6,renderBatchBudgetMs:8,renderBatchIdleTimeoutMs:60,deferNodesUntilVisible:!0,maxLiveNodes:0,liveNodeBuffer:0,nodeVirtual:`auto`},minimal:{showTooltips:!1,fade:!1,batchRendering:!0,initialRenderBatchSize:32,renderBatchSize:48,renderBatchDelay:6,renderBatchBudgetMs:8,renderBatchIdleTimeoutMs:60,deferNodesUntilVisible:!0,maxLiveNodes:0,liveNodeBuffer:0,nodeVirtual:`auto`}};function C0(e){if(e==null)return``;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e)}catch{return String(e)}}var w0=[`data-custom-id`],T0=[`data-node-index`,`data-node-type`],E0=`typewriter-simple-cursor-target`,D0=vY(K(rY(Q({},{name:`NodeRenderer`}),{__name:`NodeRenderer`,props:{content:{},nodes:{},final:{type:Boolean},parseOptions:{},customMarkdownIt:{},debugPerformance:{type:Boolean,default:!1},customHtmlTags:{},mode:{},domMode:{},htmlPolicy:{},viewportPriority:{type:Boolean,default:void 0},viewportPriorityOptions:{},codeBlockStream:{type:Boolean,default:!0},codeBlockDarkTheme:{},codeBlockLightTheme:{},codeBlockMonacoOptions:{},codeRenderer:{},renderCodeBlocksAsPre:{type:Boolean,default:void 0},codeBlockMinWidth:{},codeBlockMaxWidth:{},codeBlockProps:{},mermaidProps:{},d2Props:{},infographicProps:{},showTooltips:{type:Boolean,default:void 0},themes:{},langs:{},isDark:{type:Boolean},customId:{},indexKey:{},typewriter:{type:[Boolean,String],default:!1},smoothStreaming:{type:[Boolean,String],default:`auto`},smoothStreamingOptions:{},parseCoalesceMs:{},fade:{type:Boolean,default:void 0},batchRendering:{type:Boolean,default:void 0},initialRenderBatchSize:{},renderBatchSize:{},renderBatchDelay:{},renderBatchBudgetMs:{},renderBatchIdleTimeoutMs:{},deferNodesUntilVisible:{type:Boolean,default:void 0},maxLiveNodes:{},liveNodeBuffer:{},nodeVirtual:{type:[Boolean,String],default:void 0},virtualScroll:{},renderAsFragment:{type:Boolean}},emits:[`copy`,`copy-code`,`handleArtifactClick`,`click`,`mouseover`,`mouseout`,`virtual-state-change`,`height-change`,`render-settled`,`render-final`,`anchor-change`],setup(e,{expose:t,emit:n}){let r=e,s=n;function c(e){if(!(typeof Event<`u`&&e instanceof Event))return typeof e==`string`&&s(`copy-code`,e),void s(`copy`,e)}let d=x(),m=g(`markstreamNestedRendererProps`,void 0);function _(e){let t=d?.vnode.props;return!!t&&(Object.prototype.hasOwnProperty.call(t,e)||Object.prototype.hasOwnProperty.call(t,String(e).replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)))}function b(e){let t=r[e];return _(e)?t:m?.value?.[e]??t}let w=R(()=>{return(e=b(`mode`))===`chat`||e===`minimal`||e===`docs`?e:`docs`;var e}),T=R(()=>_1(b(`typewriter`))),E=R(()=>T.value!==`off`),D=R(()=>b(`domMode`)===`minimal`?`minimal`:`full`),k=R(()=>{return!0===(e={mode:w.value,codeRenderer:b(`codeRenderer`),renderCodeBlocksAsPre:b(`renderCodeBlocksAsPre`)}).renderCodeBlocksAsPre?`pre`:e.codeRenderer===`pre`||e.codeRenderer===`shiki`||e.codeRenderer===`monaco`?e.codeRenderer:!1===e.renderCodeBlocksAsPre||e.mode===`docs`?`monaco`:`pre`;var e}),j=R(()=>S0[w.value]),M=R(()=>b(`showTooltips`)??j.value.showTooltips),N=R(()=>b(`fade`)??j.value.fade),ee=R(()=>b(`batchRendering`)??j.value.batchRendering),L=R(()=>b(`initialRenderBatchSize`)??j.value.initialRenderBatchSize),te=R(()=>b(`renderBatchSize`)??j.value.renderBatchSize),ne=R(()=>b(`renderBatchDelay`)??j.value.renderBatchDelay),ae=R(()=>b(`renderBatchBudgetMs`)??j.value.renderBatchBudgetMs),ce=R(()=>b(`renderBatchIdleTimeoutMs`)??j.value.renderBatchIdleTimeoutMs),le=R(()=>b(`deferNodesUntilVisible`)??j.value.deferNodesUntilVisible),ue=R(()=>b(`maxLiveNodes`)??j.value.maxLiveNodes),fe=R(()=>b(`liveNodeBuffer`)??j.value.liveNodeBuffer),pe=R(()=>b(`nodeVirtual`)??j.value.nodeVirtual),U={get content(){return r.content},get nodes(){return r.nodes},get final(){return r.final},get parseOptions(){return b(`parseOptions`)},get customMarkdownIt(){return b(`customMarkdownIt`)},get debugPerformance(){return r.debugPerformance},get customHtmlTags(){return b(`customHtmlTags`)},get mode(){return b(`mode`)},get domMode(){return D.value},get htmlPolicy(){return b(`htmlPolicy`)},get viewportPriority(){return b(`viewportPriority`)},get viewportPriorityOptions(){return b(`viewportPriorityOptions`)},get codeBlockStream(){return b(`codeBlockStream`)},get codeBlockDarkTheme(){return b(`codeBlockDarkTheme`)},get codeBlockLightTheme(){return b(`codeBlockLightTheme`)},get codeBlockMonacoOptions(){return b(`codeBlockMonacoOptions`)},get codeRenderer(){return b(`codeRenderer`)},get renderCodeBlocksAsPre(){return b(`renderCodeBlocksAsPre`)},get codeBlockMinWidth(){return b(`codeBlockMinWidth`)},get codeBlockMaxWidth(){return b(`codeBlockMaxWidth`)},get codeBlockProps(){return b(`codeBlockProps`)},get mermaidProps(){return b(`mermaidProps`)},get d2Props(){return b(`d2Props`)},get infographicProps(){return b(`infographicProps`)},get showTooltips(){return M.value},get themes(){return b(`themes`)},get langs(){return b(`langs`)},get isDark(){return b(`isDark`)},get customId(){return b(`customId`)},get indexKey(){return r.indexKey},get typewriter(){return b(`typewriter`)},get smoothStreaming(){return r.smoothStreaming},get smoothStreamingOptions(){return b(`smoothStreamingOptions`)},get parseCoalesceMs(){return b(`parseCoalesceMs`)},get fade(){return N.value},get batchRendering(){return ee.value},get initialRenderBatchSize(){return L.value},get renderBatchSize(){return te.value},get renderBatchDelay(){return ne.value},get renderBatchBudgetMs(){return ae.value},get renderBatchIdleTimeoutMs(){return ce.value},get deferNodesUntilVisible(){return le.value},get maxLiveNodes(){return ue.value},get liveNodeBuffer(){return fe.value},get nodeVirtual(){return pe.value},get virtualScroll(){return r.virtualScroll},get renderAsFragment(){return r.renderAsFragment}};function W(e){s(`height-change`,e)}function K(e){s(`virtual-state-change`,e)}function q(e){s(`anchor-change`,e)}let me=z(),he=z(null),_e=z(null),ve=z(null),ye=F({1:null,2:null,3:null,4:null,5:null,6:null}),be=z(!1),xe=new Map,Se=z(0),Ce=z(0),we=z({paragraph:null,listItem:null,listWrapperOverhead:0,headings:{1:null,2:null,3:null,4:null,5:null,6:null}});function Te(e,t){return typeof e==`string`&&e.trim()||t}function Ee(e){let t=Number(e);return Number.isFinite(t)&&t>0?Math.max(1,Math.trunc(t)):640}let De=R(()=>{let e=U.viewportPriorityOptions??{},t=Te(e.rootMargin,mX);return{rootMargin:t,heavyBlockMargin:Te(e.heavyBlockMargin,t),maxTargets:Ee(e.maxTargets)}}),Oe=R(()=>De.value.rootMargin??mX),ke=R(()=>De.value.maxTargets??640);function Ae(){if(!0!==r.virtualScroll?.enabled)return null;let e=r.virtualScroll?.scrollRoot;return je(typeof e==`function`?e():e)}function je(e){return e?typeof HTMLElement<`u`&&e instanceof HTMLElement?e:typeof e==`object`&&`value`in e?je(e.value):typeof e==`object`&&`$el`in e?je(e.$el):null:null}p(dX,De);let{isClient:Me,renderAsFragment:Ne,debugPerformanceEnabled:Pe,resolvedShowTooltips:Fe,resolvedHtmlPolicy:Ie,inheritedSmoothStreaming:Le,ownsTypewriterCursor:Re}=function(e){let t=typeof window<`u`,n=S(),r=g(`markstreamHtmlPolicy`,void 0),i=g(`markstreamTypewriterCursor`,void 0),a=g(`markstreamSmoothStreaming`,void 0);return{isClient:t,renderAsFragment:R(()=>!0===e.renderAsFragment),debugPerformanceEnabled:R(()=>!!(e.debugPerformance&&t&&typeof console<`u`)),resolvedShowTooltips:R(()=>{if(typeof e.showTooltips==`boolean`)return e.showTooltips;let t=n.showTooltips??n[`show-tooltips`];return t===``||!0===t||t===`true`||!1!==t&&t!==`false`&&void 0}),resolvedHtmlPolicy:R(()=>e.htmlPolicy??r?.value??`safe`),inheritedSmoothStreaming:a,inheritedTypewriterCursor:i,ownsTypewriterCursor:R(()=>!0!==i?.value)}}(U),{resolveViewportRoot:ze,resolveScrollContainer:Be,isReverseFlexScrollRoot:Ve,getNormalizedScrollTop:He,getOffsetTopWithinRoot:Ue}=function(e,t){function n(){return t.scrollRoot?.call(t)??null}function r(t){if(typeof window>`u`)return null;let r=n();if(r)return r;let i=t??e.value;if(!i)return null;let a=i.ownerDocument||document,o=a.scrollingElement||a.documentElement,s=i;for(;s&&s!==a.body&&s!==o;){if(h0(window.getComputedStyle(s))&&g0(s))return s;s=s.parentElement}return null}function i(e){if(!t.isClient)return!1;try{let t=window.getComputedStyle(e);return!!(t.display||``).toLowerCase().includes(`flex`)&&(t.flexDirection||``).toLowerCase().endsWith(`reverse`)}catch{return!1}}function a(e,t,n){if(n)return o(t);let r=e.scrollTop;if(!i(e))return r;let a=r<0?-r:r;return Math.max(0,(e.scrollHeight??0)-(e.clientHeight??0))-a}function o(e){let t=Number(e.scrollingElement?.scrollTop),n=Number(e.documentElement?.scrollTop??0),r=Number(e.body?.scrollTop??0);return Math.max(0,Number.isFinite(t)?t:0,Number.isFinite(n)?n:0,Number.isFinite(r)?r:0)}return{resolveViewportRoot:r,resolveScrollContainer:function(t){let i=n();if(i)return i;let a=r(t??e.value??null);if(a)return a;let o=t?.ownerDocument??e.value?.ownerDocument??(typeof document<`u`?document:null);return o?.scrollingElement||o?.documentElement||null},isReverseFlexScrollRoot:i,getNormalizedScrollTop:a,getOffsetTopWithinRoot:function(e,t){let n=t.ownerDocument||e.ownerDocument||document;if(function(e,t){return e===t.documentElement||e===t.body||e===t.scrollingElement}(t,n))return e.getBoundingClientRect().top+o(n);let r=t.getBoundingClientRect(),i=e.getBoundingClientRect(),s=a(t,n,!1);return i.top-r.top+s}}}(me,{isClient:Me,scrollRoot:Ae});p(`markstreamShowTooltips`,Fe),p(`markstreamHtmlPolicy`,Ie),p(`markstreamTypewriter`,E),p(`markstreamFade`,R(()=>!1!==U.fade)),p(`markstreamTypewriterCursor`,R(()=>!0)),p(`markstreamTextStreamState`,xe),p(`markstreamStreamVersion`,Se),p(`markstreamParseOptions`,R(()=>U.parseOptions)),p(`markstreamCustomMarkdownIt`,R(()=>U.customMarkdownIt));let{smoothStreamingEnabled:We,renderContent:Ge,requestedFinal:Ke,effectiveFinal:qe}=function(e,t){let n=f0(Q(Q({},p0),e.smoothStreamingOptions)),r=R(()=>!1!==e.smoothStreaming&&!e.nodes?.length&&(!0===e.smoothStreaming||!t.inheritedSmoothStreaming?.value)&&(!0===e.smoothStreaming||_1(e.typewriter)!==`off`||(e.maxLiveNodes??0)<=0)),i=z(!t.isClient||!0===e.smoothStreaming);h(()=>{i.value=!0});let a=R(()=>i.value&&r.value),o=R(()=>a.value?n.visible.value:e.content??``),s=R(()=>{let t=e.parseOptions??{};return e.final??t.final}),c=R(()=>{let e=s.value;return a.value&&e!=null?!!e&&n.caughtUp.value:e}),u=0,d=!1;function f(){u=0,d=!1}return l([()=>e.content,()=>e.nodes,a,s],([e,t,r,i])=>{if(t?.length)return f(),void n.reset(``);let a=e??``;if(!r)return f(),n.reset(a),void(i&&n.finish({flush:!0}));let o=n.source.value;if(a){if(a!==o)if(a.startsWith(o)){let e=a.slice(o.length),t=n.pendingChars.value;e.length<=8?(u++,d||u>=2&&t<=8?(d=!0,n.reset(a)):n.enqueue(e)):(f(),n.enqueue(e))}else f(),n.reset(a)}else f(),n.reset(``);i&&n.finish()},{immediate:!0}),{smoothStream:n,smoothStreamingEligible:r,smoothStreamingEnabled:a,renderContent:o,requestedFinal:s,effectiveFinal:c}}(U,{isClient:Me,inheritedSmoothStreaming:Le}),Je=!0===Ke.value;p(`markstreamSmoothStreaming`,We);let Ye=z(!1),Xe=z(!1),Ze=z(!1),Qe=``,$e=!1,et=null;function tt(){Me&&et!=null&&(window.clearTimeout(et),et=null)}function nt(){Ye.value=!1,tt()}function rt(e,t){if(!Pe.value)return;let n=function(){if(!Pe.value)return null;let e=ct(it),t=ct(at),n=Math.max(st,t);if(e<=0&&n<=0)return null;let r={total:e,maxPerFrame:n,byLabel:(i=it,Object.fromEntries(Array.from(i.entries()).sort((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0]))))};var i;return it.clear(),at.clear(),st=0,r}();console.info(`[markstream-vue][perf] ${e}`,n?rY(Q({},t),{layoutReads:n}):t)}l([()=>U.indexKey,()=>U.customId],()=>{nt(),Xe.value=!1,Ze.value=!r.nodes?.length&&!0!==Ke.value&&!!r.content,Qe=Ge.value??``,$e=Qe.length>0},{flush:`sync`}),l([()=>r.content,()=>r.nodes,Ke],([e,t,n])=>{!t?.length&&!0!==n&&e&&(Ze.value=!0)},{flush:`sync`,immediate:!0}),l([Ge,()=>r.nodes,Ke],([e,t,n])=>{let i=e??``;t?.length||!0===n?(nt(),Xe.value=!1,Qe=i,$e=!0):(i.length>0&&(Ze.value=!0),$e?(Qe&&i.length>Qe.length&&i.startsWith(Qe)?(Ye.value=!0,Xe.value=!0,Me&&(tt(),et=window.setTimeout(()=>{var e;et=null,!0===qe.value||(e=r.nodes)!=null&&e.length||(mo(),Ye.value=!1,go())},1200))):(i.length`u`)return null;let e=window;if(e.__markstreamLayoutReadPerformance)return e.__markstreamLayoutReadPerformance;let t={total:0,maxPerFrame:0,byLabel:{}};return e.__markstreamLayoutReadPerformance=t,t}();t&&(t.total=Number(t.total||0)+1,t.byLabel[e]=Number(t.byLabel[e]||0)+1,t.currentFrameTotal=Number(t.currentFrameTotal||0)+1,t.frameScheduled||(t.frameScheduled=!0,typeof window.requestAnimationFrame==`function`?window.requestAnimationFrame(()=>ut(t)):typeof queueMicrotask==`function`?queueMicrotask(()=>ut(t)):setTimeout(()=>ut(t),0)))}(e),ot||(ot=!0,Me&&typeof window<`u`&&typeof window.requestAnimationFrame==`function`?window.requestAnimationFrame(lt):typeof queueMicrotask==`function`?queueMicrotask(lt):setTimeout(lt,0)))}function ft(e,t){return dt(e),t()}let pt=U.customId?`renderer-${U.customId}`:`renderer-${Date.now()}-${Math.random().toString(36).slice(2)}`,mt=function(e){let t=new Map;return{scope:e,cache:t,clear:()=>t.clear()}}(pt),ht=pt;p(v1,mt);let gt=mY(()=>U.customId),{effectiveCustomHtmlTagsSet:_t,mergedParseOptions:vt,parsedNodes:yt,getParsedNodesDirtyStartIndex:bt,getParsedNodesRevision:xt}=u0(U,{instanceMsgId:pt,renderContent:Ge,effectiveFinal:qe,smoothStreamingEnabled:We,debugPerformanceEnabled:Pe,customComponentsMap:gt,logPerf:rt});l(yt,()=>{Ye.value||mt.clear(),Se.value+=1},{immediate:!0});let St=R(()=>({customId:U.customId,customHtmlTags:vt.value.customHtmlTags,parseOptions:U.parseOptions,customMarkdownIt:U.customMarkdownIt,htmlPolicy:Ie.value,viewportPriority:U.viewportPriority,viewportPriorityOptions:De.value,mode:w.value,domMode:U.domMode,codeRenderer:k.value,codeBlockStream:U.codeBlockStream,codeBlockDarkTheme:U.codeBlockDarkTheme,codeBlockLightTheme:U.codeBlockLightTheme,codeBlockMonacoOptions:U.codeBlockMonacoOptions,renderCodeBlocksAsPre:U.renderCodeBlocksAsPre,codeBlockMinWidth:U.codeBlockMinWidth,codeBlockMaxWidth:U.codeBlockMaxWidth,codeBlockProps:U.codeBlockProps,mermaidProps:U.mermaidProps,d2Props:U.d2Props,infographicProps:U.infographicProps,showTooltips:Fe.value,themes:U.themes,langs:U.langs,isDark:U.isDark,typewriter:E.value,smoothStreamingOptions:U.smoothStreamingOptions,parseCoalesceMs:U.parseCoalesceMs,fade:U.fade}));p(`markstreamNestedRendererProps`,St);let Ct=R(()=>yt.value),wt=R(()=>yt.value.length),Tt=z(null),Et=z(null),Dt=z(null),Ot=z(null),kt=r.indexKey!=null&&String(r.indexKey).startsWith(`list-item-`),At=!kt&&U.customId?n1(U.customId):null,jt=R(()=>At?(t1.value,n1(U.customId)):null),Mt=R(()=>!!(!Ne.value&&U.customId&&!kt&&jt.value?.enabled)),Nt=R(()=>!!(Me&&Mt.value)),Pt=R(()=>!!(!Ne.value&&r.virtualScroll?.enabled)),Ft=R(()=>Pt.value),It=z(!1);h(()=>{It.value=!0});let Lt=R(()=>!!(Me&&Pt.value));p(`markstreamHostScrollManaged`,Lt);let Rt=R(()=>!!(It.value&&Lt.value)),zt=R(()=>Nt.value||Lt.value),Bt=R(()=>Nt.value||Rt.value),Vt=R(()=>zt.value&&!1!==jt.value?.textEstimation);function Ht(){let e=Ce.value||ft(`getMeasuredContainerWidth.clientWidth`,()=>me.value?.clientWidth||0);return Number.isFinite(e)&&e>0?e:0}let Ut=R(()=>{let e=Ht();return e>0?Math.max(1,Math.round(e)):640}),Wt=R(()=>!(!0!==qe.value||Pt.value||w.value!==`chat`&&w.value!==`minimal`||_(`maxLiveNodes`)||_(`liveNodeBuffer`)||r.nodes?.length||Ze.value||!((U.maxLiveNodes??0)<=0))),Gt=R(()=>Wt.value?50:Math.max(1,U.maxLiveNodes??320)),Kt=R(()=>Wt.value?16:Math.max(0,U.liveNodeBuffer??60)),qt=R(()=>!Ne.value&&!1!==U.nodeVirtual&&!((U.maxLiveNodes??0)<=0&&!Wt.value)&&(!0===U.nodeVirtual?yt.value.length>0:yt.value.length>Gt.value)),Jt=R(()=>qt.value||Nt.value||Lt.value),Yt=R(()=>!1!==U.viewportPriority),Xt=R(()=>!!Yt.value&&!be.value);p(fX,R(()=>Yt.value));let Zt=R(()=>!(Ne.value||!1===U.deferNodesUntilVisible||(U.maxLiveNodes??0)<=0||qt.value||yt.value.length>900||!1===U.viewportPriority)),Qt=_X(e=>ze(e??me.value??null),Yt),{requestFrame:$t,cancelFrame:en,hasIdleCallback:tn,isTestEnv:nn}=function(e){return{requestFrame:e.isClient&&typeof window.requestAnimationFrame==`function`?window.requestAnimationFrame.bind(window):null,cancelFrame:e.isClient&&typeof window.cancelAnimationFrame==`function`?window.cancelAnimationFrame.bind(window):null,hasIdleCallback:e.isClient&&typeof window.requestIdleCallback==`function`,isTestEnv:function(){return typeof globalThis>`u`||!(`process`in globalThis)?void 0:Object.getOwnPropertyDescriptor(globalThis,`process`)?.value?.env}()?.NODE_ENV===`test`}}({isClient:Me}),rn=R(()=>!0===qe.value&&!Pt.value),{resolvedBatchSize:an,resolvedInitialBatch:on,batchingEnabled:sn,incrementalRenderingActive:cn,renderedCount:ln,previousRenderContext:un,adaptiveBatchSize:dn,previousBatchConfig:fn}=function(e,t){let n=R(()=>{let t=Math.trunc(e.renderBatchSize??80);return Number.isFinite(t)?Math.max(0,t):0}),r=R(()=>{let t=Math.trunc(e.initialRenderBatchSize??n.value);return Number.isFinite(t)?Math.max(0,t):n.value}),i=R(()=>!t.renderAsFragment.value&&!1!==e.batchRendering&&n.value>0&&t.isClient&&!t.isTestEnv),a=z(0),o=z({key:e.indexKey,total:0}),s=z(Math.max(1,n.value||1)),c=R(()=>i.value&&!t.continuousStreaming?.value&&!t.forceFullRenderFinalContent?.value&&(e.maxLiveNodes??0)<=0);return{resolvedBatchSize:n,resolvedInitialBatch:r,batchingEnabled:i,incrementalRenderingActive:c,renderedCount:a,previousRenderContext:o,adaptiveBatchSize:s,previousBatchConfig:z({batchSize:n.value,initial:r.value,delay:e.renderBatchDelay??16,enabled:c.value})}}(U,{isClient:Me,isTestEnv:nn,renderAsFragment:Ne,forceFullRenderFinalContent:rn,continuousStreaming:R(()=>Xe.value&&!0!==qe.value)}),pn=R(()=>!Ne.value&&!1!==U.batchRendering&&an.value>0&&!nn&&(U.maxLiveNodes??0)<=0&&!rn.value),mn=R(()=>pn.value),hn=R(()=>zt.value||mn.value),gn=R(()=>hn.value&&!1!==jt.value?.codeBlockEstimation),_n=new Map,vn=new Map,yn=new WeakMap,bn=null,xn=new WeakMap,Sn=new Map,Cn=[],wn=[],Tn=[],En=-1,Dn=de(Cn),On=new Set,kn=z(0),An=0,jn=z(0),Mn=R(()=>(jn.value,Array.from(_n.entries()).sort((e,t)=>e[0]-t[0]))),Nn=z(null),Pn=z(null),Fn,In=null,Ln=0,Rn=null;function zn(){Fn.markFallbackHeightPrefixDirty()}function Bn(e){return Fn.getFallbackNodeHeight(e)}function Vn(e,t){return Fn.estimateHeightRange(e,t)}function Hn(e){return Fn.estimateIndexForOffset(e)}let{activeRestoreAnchor:Un,getRelativeScrollTopWithinContainer:Wn,setRelativeScrollTopWithinContainer:Gn,resolveAnchorOffset:Kn,clearRestoreReconcile:qn,scheduleRestoreReconcile:Jn,captureRestoreAnchor:Yn,restoreAnchor:Xn,getAnchorDrift:Zn}=function(e){let{isClient:t,containerRef:n,parsedNodeCount:r,requestFrame:i,cancelFrame:a,resolveScrollContainer:o,getNormalizedScrollTop:s,getOffsetTopWithinRoot:c,isReverseFlexScrollRoot:l,estimateIndexForOffset:u,estimateHeightRange:d,getFallbackNodeHeight:f,clamp:p}=e,m=z(null),h=null,g=[];function _(){let e=o(),t=n.value;if(!e||!t)return null;let r=e.ownerDocument||t.ownerDocument||document;if(e===r.documentElement||e===r.body||e===r.scrollingElement){let e=t.getBoundingClientRect();return Math.max(0,-e.top)}return Math.max(0,s(e,r,!1)-c(t,e))}function v(e){var t;let r=o(),i=n.value;if(!r||!i)return;let a=Math.max(0,e),u=r.ownerDocument||i.ownerDocument||document,d=u.defaultView||(typeof window<`u`?window:null);if(r===u.documentElement||r===u.body||r===u.scrollingElement){let e=s(r,u,!0)+i.getBoundingClientRect().top;(t=d?.scrollTo)==null||t.call(d,0,Math.max(0,e+a));return}h1(r,u,c(i,r)+a,{isReverseFlexScrollRoot:e=>{var t;return(t=l?.(e))!=null&&t},getNormalizedScrollTop:s})}function y(e){let t=r.value,n=p(e.nodeIndex,0,Math.max(0,t-1));return d(0,n)+Math.max(0,e.offsetWithinNodePx)}function b(){if(h!=null&&(a?.(h),h=null),t)for(let e of g)window.clearTimeout(e);g=[]}function x(e){let t=y(e),n=_();n!=null&&Math.abs(n-t)<=.5||v(t)}return{activeRestoreAnchor:m,getRelativeScrollTopWithinContainer:_,setRelativeScrollTopWithinContainer:v,resolveAnchorOffset:y,clearRestoreReconcile:b,applyRestoreAnchor:x,scheduleRestoreReconcile:function(){m.value&&t&&h==null&&(h=i?i(()=>{h=null,m.value&&x(m.value)}):null,h==null&&m.value&&x(m.value))},captureRestoreAnchor:function(){let e=_(),t=r.value;if(e==null||t<=0)return null;let n=p(u(e+1),0,t-1),i=d(0,n),a=f(n);return{nodeIndex:n,offsetWithinNodePx:p(e-i,0,Math.max(0,a-1))}},restoreAnchor:function(e){let n=r.value;if(m.value={nodeIndex:p(e.nodeIndex,0,Math.max(0,n-1)),offsetWithinNodePx:Math.max(0,e.offsetWithinNodePx)},b(),x(m.value),t)for(let e of[0,120,280,480])g.push(window.setTimeout(()=>{m.value&&x(m.value)},e))},getAnchorDrift:function(e){let t=_();return t==null?null:t-y(e)}}}({isClient:Me,containerRef:me,parsedNodeCount:wt,requestFrame:$t,cancelFrame:en,resolveScrollContainer:()=>Nn.value||Be(),getNormalizedScrollTop:He,getOffsetTopWithinRoot:Ue,isReverseFlexScrollRoot:Ve,estimateIndexForOffset:Hn,estimateHeightRange:Vn,getFallbackNodeHeight:Bn,clamp:ui}),{nodeHeights:Qn,heightStats:$n,heightTreeSize:er,heightSumTree:tr,heightKnownTree:nr,averageNodeHeight:rr,resetHeightMeasurements:ir,pruneHeightMeasurements:ar,rebuildHeightTrees:or,recordNodeHeight:sr,removeNodeHeights:cr,exportHeightCache:lr,importHeightCache:ur,fenwickRangeSum:dr}=function(e={}){let t=F({}),n=F({total:0,count:0}),r=z(0),i=z([]),a=z([]);function o(){for(let e of Object.keys(t))delete t[Number(e)];n.total=0,n.count=0,r.value=0,i.value=[],a.value=[]}function s(e,t,n){for(let r=t+1;r0;r-=r&-r)n+=e[r];return n}function l(e){r.value=e;let n=Array(e+1).fill(0),o=Array(e+1).fill(0);for(let[r,i]of Object.entries(t)){let t=Number(r),a=Number(i);!Number.isFinite(t)||t<0||t>=e||!Number.isFinite(a)||a<=0||(s(n,t,a),s(o,t,1))}i.value=n,a.value=o}function u(e){if(!Number.isInteger(e)||e<0)return!1;let o=t[e];if(!Number.isFinite(o)||o<=0)return!1;if(delete t[e],n.total=Math.max(0,n.total-o),n.count=Math.max(0,n.count-1),r.value>e){let t=i.value,n=a.value;t.length&&n.length&&(s(t,e,-o),s(n,e,-1))}return!0}return{nodeHeights:t,heightStats:n,heightTreeSize:r,heightSumTree:i,heightKnownTree:a,averageNodeHeight:R(()=>n.count>0?Math.max(12,n.total/n.count):32),resetHeightMeasurements:o,pruneHeightMeasurements:function(e){if(e<=0)return void o();let r=0,i=0;for(let[n,a]of Object.entries(t)){let o=Number(n),s=Number(a);!Number.isFinite(o)||o<0||o>=e||!Number.isFinite(s)||s<=0?delete t[o]:(r+=s,i++)}n.total=r,n.count=i},rebuildHeightTrees:l,recordNodeHeight:function(o,c,l={}){(function(o,c,l={}){var u;if(!Number.isFinite(c)||c<=0)return!1;let d=t[o];if(d&&(!1===l.allowShrink&&co){let e=i.value,t=a.value;if(e.length&&t.length)if(d){let t=c-d;t!==0&&s(e,o,t)}else s(e,o,c),s(t,o,1)}!1!==l.notify&&((u=e.onHeightRecorded)==null||u.call(e))})(o,c,rY(Q({},l),{notify:!0}))},removeNodeHeight:function(t,n={}){var r;let i=u(t);return i&&!1!==n.notify&&((r=e.onHeightRecorded)==null||r.call(e)),i},removeNodeHeights:function(t,n={}){var r;let i=0;for(let e of t)u(Number(e))&&i++;return i>0&&!1!==n.notify&&((r=e.onHeightRecorded)==null||r.call(e)),i},exportHeightCache:function(){return Object.entries(t).map(([e,t])=>({index:Number(e),height:Number(t)})).filter(e=>Number.isFinite(e.index)&&e.index>=0&&Number.isFinite(e.height)&&e.height>0).sort((e,t)=>e.index-t.index)},importHeightCache:function(i,a={}){var o;if(!Array.isArray(i))return;let s=r.value,c=!1;if(a.mode!==`merge`){let e=Object.keys(t);if(e.length>0){for(let n of e)delete t[Number(n)];c=!0}}for(let e of i){let n=Number(e.index),r=Number(e.height);if(!Number.isInteger(n)||n<0||s>0&&n>=s||!Number.isFinite(r)||r<=0)continue;let i=t[n];i&&Math.abs(i-r)<=1||(t[n]=r,c=!0)}c&&(function(){let e=0,i=0,a=r.value;for(let[n,r]of Object.entries(t)){let o=Number(n),s=Number(r);!Number.isFinite(o)||o<0||a>0&&o>=a||!Number.isFinite(s)||s<=0?delete t[o]:(e+=s,i++)}n.total=e,n.count=i}(),s>0&&l(s),(o=e.onHeightRecorded)==null||o.call(e))},fenwickRangeSum:function(e,t,n){if(n<=t)return 0;let r=c(e,n-1);return t<=0?r:r-c(e,t-1)}}}({onHeightRecorded:()=>{zn(),Lt.value&&To(),Un.value&&Jn(),Pn.value&&Sa(),so(`node-resize`)}});function fr(e){Number.isInteger(e)&&e>=0&&On.add(e)}function pr(e){for(let t of e)fr(Number(t))}function mr(e){An++;let t=!0;try{let n=e();return t=!1!==n,n}finally{An--,An===0&&t&&kn.value++}}function hr(){wn=[],Tn=[],En=-1,On.clear(),Dn.value=Cn}function gr(){hr(),mr(()=>ir()),Sn.clear()}function _r(e){!Number.isInteger(e)||e<0||e>=yt.value.length||Sn.set(e,ma(e))}function vr(e,t,n={}){let r=Qn[e];fr(e),sr(e,t,n);let i=Qn[e];return Object.is(r,i)?(On.delete(e),!1):(i&&i>0?_r(e):r&&Sn.delete(e),!0)}function yr(e,t){let n=ft(`getNodeLayoutHeight.slot.offsetHeight`,()=>_n.get(e)?.offsetHeight??0);return n>0?n:ft(`getNodeLayoutHeight.content.offsetHeight`,()=>t.offsetHeight)}function br(e,t={}){t.mode===`merge`?pr(e.map(e=>e.index)):hr(),mr(()=>ur(e,t)),za()}let xr=R(()=>Zt.value&&Xt.value),Sr=R(()=>!Ne.value&&!1!==U.batchRendering&&an.value>0&&(U.maxLiveNodes??0)<=0),Cr=R(()=>!Ne.value&&Je&&!0===qe.value&&!qt.value&&!Pt.value&&!Mt.value&&!xr.value&&!Sr.value),wr=R(()=>!!Qt&&xr.value),Tr=R(()=>qt.value||Lt.value),{focusIndex:Er,liveRange:Dr,updateLiveRange:Or}=function(e,t){let{parsedNodeCount:n,virtualizationEnabled:r,maxLiveNodesResolved:i,liveNodeBufferResolved:a,clamp:o}=t,s=a??R(()=>Math.max(0,e.liveNodeBuffer??60)),c=z(0),l=F({start:0,end:0});return{liveNodeBufferResolved:s,focusIndex:c,liveRange:l,updateLiveRange:function(){let e=n.value;if(!r.value||e===0)return l.start=0,void(l.end=e);let t=Math.min(i.value,e),a=s.value,u=o(c.value-a,0,Math.max(0,e-t));l.start=u,l.end=Math.min(e,u+t)}}}(U,{parsedNodeCount:wt,virtualizationEnabled:qt,maxLiveNodesResolved:Gt,liveNodeBufferResolved:Kt,clamp:ui}),kr=new Map,Ar=new Map,jr=new Map,Mr=[],Nr=new Map,Pr=new Set,Fr=z(0),Ir=!1,Lr=R(()=>(Fr.value,Pr.size)),Rr=new Map,zr=new Map,Br=z(0),Vr=R(()=>{Br.value;let e=0;for(let t of Rr.values())e+=Math.max(0,t);return e}),Hr=null,Ur=R(()=>{if(!qt.value)return yt.value.length;let e=Kt.value,t=Math.max(Dr.end+e,on.value),n=Math.min(yt.value.length,t);return Math.max(ln.value,n)});function Wr(){Ir||(Ir=!0,queueMicrotask(()=>{Ir=!1,Fr.value+=1}))}function Gr(e,t,n=`node-resize`){if(!Me||typeof window>`u`)return null;let r=window.setTimeout(()=>{Pr.delete(r)&&Wr();try{t()}finally{so(n)}},Math.max(0,e));return Pr.add(r),Wr(),r}function Kr(e){Me&&e!=null&&(Pr.delete(e)&&Wr(),window.clearTimeout(e))}function qr(){if(Me&&typeof window<`u`)for(let e of Pr)window.clearTimeout(e);Pr.size&&(Pr.clear(),Wr()),Mr.length=0,jr.clear()}function Jr(e){he.value=e}function Yr(e){_e.value=e}function Xr(e){ve.value=e}let{cancelScheduledFocusSync:Zr,scheduleFocusSync:Qr}=function(e){let{isClient:t,containerRef:n,virtualizationEnabled:r,requestFrame:i,cancelFrame:a,syncFocusToScroll:o}=e,s=null;function c(){return n.value?.ownerDocument?.defaultView??(typeof window<`u`?window:null)}function l(){if(!s)return;let e=c();s.viaTimeout?e?e.clearTimeout(s.id):clearTimeout(s.id):a?.(s.id),s=null}return{cancelScheduledFocusSync:l,scheduleFocusSync:function(e={}){if(!r.value)return;if(!t)return void o(!0);if(e.immediate)return l(),void o(!0);if(s)return;let n=()=>{s=null,o()};if(i)return void(s={id:i(n),viaTimeout:!1});let a=c();s={id:a?a.setTimeout(n,16):setTimeout(n,16),viaTimeout:!0}}}}({isClient:Me,containerRef:me,virtualizationEnabled:qt,requestFrame:$t,cancelFrame:en,syncFocusToScroll:function(e=!1){if(!qt.value)return;let t=Nn.value||Be();if(!t)return;let n=t.ownerDocument||me.value?.ownerDocument||document,r=n?.defaultView||(typeof window<`u`?window:null),i=t===n?.documentElement||t===n?.body,a=yt.value.length;if(a<=0)return;if(!i&&a>0&&Ve(t)){let n=ft(`syncFocusToScroll.clientHeight`,()=>t.clientHeight||0),r=ft(`syncFocusToScroll.scrollTop`,()=>t.scrollTop),i=r<0?-r:r;li(ui((o=Math.max(0,i)+.5*Math.max(0,n),Fn.estimateIndexForOffsetFromEnd(o)),0,Math.max(0,a-1)),e);return}var o;let s=function(e,t,n,r){let i=me.value;if(!i)return null;let a=r?0:ft(`syncFocusToScroll.model.root.getBoundingClientRect`,()=>e.getBoundingClientRect().top),o=ft(`syncFocusToScroll.model.container.getBoundingClientRect`,()=>i.getBoundingClientRect().top),s=Math.max(0,a-o),c=r?ft(`syncFocusToScroll.model.viewport.clientHeight`,()=>n?.innerHeight??t.documentElement?.clientHeight??e.clientHeight??0):ft(`syncFocusToScroll.model.root.clientHeight`,()=>e.clientHeight);return ui(Hn(s+.5*Math.max(0,c)),0,Math.max(0,yt.value.length-1))}(t,n,r,i);if(s!=null)return void li(s,e);let c=i?null:ft(`syncFocusToScroll.root.getBoundingClientRect`,()=>t.getBoundingClientRect()),l=i?0:c.top,u=i?ft(`syncFocusToScroll.viewport.clientHeight`,()=>r?.innerHeight??t.clientHeight??0):c.bottom,d=Mn.value,f=null,p=null;for(let[e,t]of d){if(!t)continue;let n=ft(`syncFocusToScroll.slot.getBoundingClientRect`,()=>t.getBoundingClientRect());n.bottom<=l||n.top>=u||(f??=e,p=e)}if(f==null||p==null){let e=me.value;if(!e)return;let a=i?{top:0}:ft(`syncFocusToScroll.fallback.root.getBoundingClientRect`,()=>t.getBoundingClientRect()),o=ft(`syncFocusToScroll.fallback.scrollTop`,()=>He(t,n,i)),s=i?(()=>{let t=ft(`syncFocusToScroll.fallback.container.getBoundingClientRect`,()=>e.getBoundingClientRect()),n=(i?0:a.top)-t.top;return Math.max(0,n)})():(()=>{let n=Ue(e,t);return Math.max(0,o-n)})(),c=i?ft(`syncFocusToScroll.fallback.viewport.clientHeight`,()=>r?.innerHeight??n?.documentElement?.clientHeight??t.clientHeight??0):ft(`syncFocusToScroll.fallback.root.clientHeight`,()=>t.clientHeight);li(ui(Hn(s+.5*Math.max(0,c)),0,Math.max(0,yt.value.length-1)),!0);return}li(Math.round((f+p)/2),e)}}),{visibleNodeIndices:$r,nodeVisibilityHandles:ei,nodeVisibilityWatchStops:ti,nodeVisibilityFallbackTimers:ni,clearVisibilityFallback:ri,markNodeVisible:ii,cleanupNodeVisibility:ai,destroyNodeVisibilityState:oi}=d0({isClient:Me,shouldTrackVisibleNodeIndices:()=>xr.value,shouldCleanupNodeVisibility:()=>qt.value,onNodeMarkedVisible:e=>{qt.value?Qr():Er.value=ui(e,0,Math.max(0,yt.value.length-1))},onNodeVisibilityCleaned:e=>{_n.delete(e)&&co()}}),{cleanupScrollListener:si,setupScrollListener:ci}=function(e){let{isClient:t,virtualizationEnabled:n,listenerEnabled:r,scrollRootElement:i,resolveScrollContainer:a,scheduleFocusSync:o,onScroll:s}=e,c=null,l=null;function u(){c&&=(c(),null),l=null,i.value=null}function d(t){let n=e.getScrollTop?e.getScrollTop(t):t.scrollTop;return Math.max(0,Number.isFinite(n)?Math.abs(n):0)}return{cleanupScrollListener:u,setupScrollListener:function(){if(!t)return;if(!((e=r?.value)??n.value))return void u();var e;let f=a();if(!f)return void u();if(i.value===f&&c)return;u(),l=d(f);let p=()=>{if(s?.(),n.value){let e=function(e){let t=d(e),n=l;l=t;let r=Math.max(480,.75*(e.clientHeight||0));return n==null?t>r?{immediate:!0}:void 0:Math.abs(t-n)>r?{immediate:!0}:void 0}(f);e?o(e):o()}};f.addEventListener(`scroll`,p,{passive:!0}),i.value=f,c=()=>{f.removeEventListener(`scroll`,p)}}}}({isClient:Me,virtualizationEnabled:qt,listenerEnabled:Tr,scrollRootElement:Nn,resolveScrollContainer:Be,scheduleFocusSync:Qr,onScroll:function(){let e=Pn.value;if(!e)return;let t=ra();if(!t||function(e){if(Za()>=Ln)return Rn=null,!1;let t=Rn;if(t==null)return!0;let n=Math.abs(e.scrollTop-t)<=2;return n||(Rn=null),n}(t))return;let n=aa(t);(n==null||n<-32||Math.abs(Math.max(0,n)-Math.max(0,e.distanceFromBottomPx))>32)&&xa(`restore`)},getScrollTop:e=>{let t=e.ownerDocument||me.value?.ownerDocument||document,n=e===t.documentElement||e===t.body||e===t.scrollingElement;return ft(`scrollListener.getScrollTop`,()=>He(e,t,n))}});function li(e,t=!1){let n=ui(e,0,Math.max(0,yt.value.length-1));!t&&Math.abs(n-Er.value)<=1||(Er.value=n,Or())}function ui(e,t,n){return Math.min(Math.max(e,t),n)}function di(e=yt.value.length){let t=bt();return!Number.isInteger(t)||t<0?e:ui(t,0,e)}function fi(e){return e?.firstElementChild}function pi(e,t){return e?e.matches?.call(e,t)?e:e.querySelector(t):null}function mi(e,t){e<1||e>6||(ye[e]=t)}function hi(){if(!zt.value)return void(Ce.value=0);let e=ft(`updateExperimentContainerWidth.clientWidth`,()=>me.value?.clientWidth??0);Ce.value=e>0?e:0}let gi=null;function _i(){gi?.disconnect(),gi=null}let vi=YX(`ViewportDeferredMarkdownCodeBlockNode`,o({loader:()=>iY(null,null,function*(){return(yield ge(()=>import(`./index5-Cr4upCog.js`),__vite__mapDeps([35,1,2,31,7,32]))).default}),loadingComponent:XX,delay:0,suspensible:!1}),XX);function yi(e){return e===vi}let bi=R(()=>k.value===`pre`?KX:k.value===`shiki`?vi:ZX);function xi(){return!1!==U.codeBlockProps?.showHeader}function Si(e,t,n){let r=Qn[t],i=typeof r==`number`&&r>0;if(Vt.value&&!i&&!function(e){return!!gt.value.paragraph&&(e.type===`paragraph`||e.type===`list_item`||e.type===`list`)}(e)){let t=s1(e,n,we.value);if(t)return t}if(gn.value&&e.type===`code_block`){let t=function(e){if(e.type!==`code_block`)return null;let t=rs(e,Qo(e));return yi(t)?`markdown`:t===KX?`pre`:t===bi.value||t===ZX?`monaco`:null}(e);if(t===`monaco`||t===`markdown`||t===`pre`)return function(e,t){if(!e||e.type!==`code_block`)return null;let n=t.rendererKind,r=n!==`pre`&&!1!==t.showHeader,i=!!e.diff,a=0,o=500;if(n===`monaco`){let n=t.monacoOptions??{},r=u1(e,n,t.width),s=function(e){let t=typeof e?.fontSize==`number`&&e.fontSize>0?e.fontSize:12;return typeof e?.lineHeight==`number`&&e.lineHeight>0?e.lineHeight:Math.round(1.5*t)}(n),c=function(e,t){let n=typeof e?.padding?.top==`number`?e.padding.top:t?0:8,r=typeof e?.padding?.bottom==`number`?e.padding.bottom:t?0:8;return Math.max(0,n)+Math.max(0,r)}(n,i);o=typeof n.MAX_HEIGHT==`number`&&n.MAX_HEIGHT>0?n.MAX_HEIGHT:500,a=Math.round(r*s+c)}else if(n===`markdown`){let t=u1(e);a=Math.round(21*t+32)}else{let t=u1(e);a=Math.round(28*t),o=1/0}let s=Math.max(1,Math.min(a,o));return Q({kind:`code-block`,height:Math.round(s+(r?40:0)),contentHeight:s,rendererKind:n},i&&n===`monaco`?{diffInline:MX(t.monacoOptions??{},t.width??0)}:{})}(e,{rendererKind:t,monacoOptions:U.codeBlockMonacoOptions,showHeader:xi(),width:n})}return null}f(()=>{if(kn.value,An>0)return;let e=yt.value,t=xt();if(!e.length||!hn.value)return wn=[],Tn=[],En=-1,On.clear(),void(Dn.value=Cn);let n=Ce.value||ft(`estimatedNodeHeights.clientWidth`,()=>me.value?.clientWidth||0);if(!Number.isFinite(n)||n<=0)return wn=[],Tn=[],En=-1,On.clear(),void(Dn.value=Cn);let r=function(e){return[Math.round(e),Vt.value,gn.value,we.value,U.codeBlockMonacoOptions,xi(),k.value,gt.value,t1.value]}(n),i=wn.length<=e.length&&(o=r,(a=Tn).length===o.length&&a.every((e,t)=>Object.is(e,o[t])));var a,o;let s=i&&En===t?e.length:i?di(e.length):0,c=i?Array.from(On):[];wn.length=e.length;for(let t=s;t=0&&tDn.value);Fn=function(e){let t=!0,n=[0],r=``;function i(t){let n=e.nodeHeights[t];if(Number.isFinite(n)&&n>0)return n;let r=e.parsedNodes.value[t],i=r?.type,a=!!e.hasCustomParagraphComponent?.call(e),o=e.estimatedNodeHeights.value[t],s=o?.height;if(!function(e,t,n){return!!(n&&t?.kind===`simple-text`&&(e===`paragraph`||e===`list_item`||e===`list`))}(i,o,a)&&Number.isFinite(s)&&s>0)return s;let c=O1(r,e.getContainerWidth()||640);return i===`heading`||i===`paragraph`&&c<=28&&function(e,t){if(t)return!1;let n=e.children;return!Array.isArray(n)||!n.length||n.every(w1)}(r,a)?c:Math.max(e.averageNodeHeight.value,c)}function a(){let a=e.parsedNodes.value.length,o=e.getPrefixCacheKeyParts().join(`:`);if(!t&&r===o)return n;let s=Array(a+1);s[0]=0;for(let t=0;t=(r[n]??0))return n-1;let i=0,o=n-1,s=n-1;for(;i<=o;){let e=i+o>>1;(r[e+1]??0)>=t?(s=e,o=e-1):i=e+1}return s}function s(t,n){if(t>=n)return 0;if(e.heightEstimationActive.value)return function(t,n){let r=e.parsedNodes.value.length,i=k1(Math.trunc(t),0,r),o=k1(Math.trunc(n),i,r);if(i>=o)return 0;let s=a();return(s[o]??0)-(s[i]??0)}(t,n);if(e.heightTreeSize.value!==e.parsedNodes.value.length){let r=0;for(let i=t;it<=0?0:e.fenwickRangeSum(i,0,t)+(t-e.fenwickRangeSum(a,0,t))*r,s=0,c=n.length-1,l=n.length-1;for(;s<=c;){let e=s+c>>1;o(e+1)>=t?(l=e,c=e-1):s=e+1}return l}let r=t;for(let t=0;t0||t++}return t}return{markFallbackHeightPrefixDirty:function(){t=!0},getFallbackNodeHeight:i,estimateHeightRange:s,estimateIndexForOffset:c,estimateIndexForOffsetFromEnd:function(t){let n=e.parsedNodes.value;if(!n.length)return 0;if(t<=0)return Math.max(0,n.length-1);if(e.heightEstimationActive.value){let e=a()[n.length]??0;return o(Math.max(0,e-t))}if(e.heightTreeSize.value===n.length){let e=s(0,n.length);return c(Math.max(0,e-t))}let r=t;for(let t=n.length-1;t>=0;t--){let n=e.nodeHeights[t]??e.averageNodeHeight.value;if(r<=n)return t;r-=n}return 0},getEstimatedNodeHeightCount:l,buildVirtualHeightSummary:function(t){let n=e.parsedNodes.value.length;return{totalNodes:n,measuredCount:e.heightStats.count,estimatedCount:l(),averageNodeHeight:e.averageNodeHeight.value,topSpacerHeight:t.topSpacerHeight,bottomSpacerHeight:t.bottomSpacerHeight,estimatedTotalHeight:s(0,n),width:t.width??e.getContainerWidth()}}}}({parsedNodes:yt,nodeHeights:Qn,heightStats:$n,heightTreeSize:er,heightSumTree:tr,heightKnownTree:nr,averageNodeHeight:rr,heightEstimationActive:zt,estimatedNodeHeights:Ci,getContainerWidth:Ht,hasCustomParagraphComponent:()=>!!gt.value.paragraph,getPrefixCacheKeyParts:()=>{let e=S1(Ce.value||ft(`getFallbackHeightPrefix.clientWidth`,()=>me.value?.clientWidth||0)),t=r.virtualScroll?.measurementKey==null?``:String(r.virtualScroll.measurementKey);return[yt.value.length,$n.count,Math.round($n.total),Math.round(100*rr.value),t,e,+!!zt.value,t1.value,Se.value,+!!gt.value.paragraph]},fenwickRangeSum:dr}),l(()=>yt.value.length,e=>{var t;zn(),e<=0?gr():(ear(t))),e!==er.value&&or(e))},{immediate:!0});let wi=R(()=>{if(!qt.value)return yt.value.map((e,t)=>({node:e,index:t}));let e=yt.value.length,t=ui(Dr.start,0,e),n=ui(Dr.end,t,e);return yt.value.slice(t,n).map((e,n)=>({node:e,index:t+n}))}),Ti=R(()=>qt.value?Vn(0,Math.min(Dr.start,yt.value.length)):0),Ei=R(()=>{if(!qt.value)return 0;let e=yt.value.length;return Vn(Math.min(Dr.end,e),e)});function Di(){return Fn.buildVirtualHeightSummary({topSpacerHeight:Ti.value,bottomSpacerHeight:Ei.value,width:Ii()})}function Oi(){let e=yt.value;return rY(Q({},Di()),{probe:{paragraphReady:!!we.value.paragraph,listItemReady:!!we.value.listItem,listWrapperOverhead:we.value.listWrapperOverhead,headingReadyLevels:Object.entries(we.value.headings).filter(([,e])=>!!e).map(([e])=>Number(e))},nodes:e.map((e,t)=>({index:t,type:e.type,estimateKind:Ci.value[t]?.kind??null,rendererKind:Ci.value[t]?.rendererKind??null,estimatedHeight:Ci.value[t]?.height??null,estimatedContentHeight:Ci.value[t]?.contentHeight??null,measuredHeight:Qn[t]??null}))})}function ki(){return r.indexKey==null?Pt.value?`virtual-${ji()}`:`markdown-renderer`:String(r.indexKey)}function Ai(e){let t=String(e),n=`${ki()}-`;if(!t.startsWith(n))return null;let r=t.slice(n.length).match(/^(\d+)(?:$|-)/);if(!r)return null;let i=Number(r[1]);return!Number.isInteger(i)||i<0||i>=yt.value.length?null:i}function ji(){let e=r.virtualScroll?.sessionKey;return String(e!=null&&e!==``?e:r.indexKey??U.customId??pt)}function Mi(){let e=r.virtualScroll?.threadKey;return e==null||e===``?void 0:String(e)}let Ni=R(()=>Mi()??String(r.indexKey??U.customId??pt));function Pi(e){return(e??``)===(Mi()??``)}function Fi(){var e,t;return e=r.virtualScroll?.measurementKey,t=function(){let e=k.value;return function(e){let t=e.renderer,n=t===`monaco`?e.codeBlockMonacoOptions:void 0,r=e.codeBlockProps,i=t===`shiki`;return[e.isDark?`dark`:`light`,t===`monaco`?`code-rich`:t===`pre`?`code-pre`:`code-shiki`,!1===e.codeBlockStream?`code-static`:`code-stream`,C0(e.codeBlockMinWidth),C0(e.codeBlockMaxWidth),...i?[nq(r?.themes??e.themes,r?.langs??e.langs)]:[],C0(n?.fontSize),C0(n?.lineHeight),C0(n?.fontFamily),C0(n?.tabSize),C0(n?.MAX_HEIGHT),C0(n?.wordWrap),C0(n?.wrappingIndent),C0(n?.padding),C0(r?.showHeader),C0(r?.showCopyButton),C0(r?.showExpandButton),C0(r?.showPreviewButton),C0(r?.showCollapseButton),C0(r?.showFontSizeButtons)].join(`\0`)}({renderer:e,isDark:U.isDark,codeBlockStream:U.codeBlockStream,codeBlockMinWidth:U.codeBlockMinWidth,codeBlockMaxWidth:U.codeBlockMaxWidth,codeBlockMonacoOptions:e===`monaco`?U.codeBlockMonacoOptions:void 0,codeBlockProps:U.codeBlockProps,themes:e===`shiki`?U.themes:void 0,langs:e===`shiki`?U.langs:void 0})}(),[e==null?``:String(e),t].join(`\0`)}function Ii(){return Ht()}let Li=R(()=>S1(Ii())),Ri=R(()=>[Fi(),Li.value].join(`\0`)),zi=R(()=>Pt.value?[`virtual`,Mi()??``,ji(),Ri.value].join(`\0`):r.indexKey);function Bi(){Br.value+=1}function Vi(e){return!(!e||!Number.isInteger(e.index)||e.index<0||e.index>=yt.value.length||e.sessionKey!==ji()||e.threadKey!==Mi()||e.layoutEpochKey!==Ri.value)}function Hi(e){let t=String(e),n=zr.get(t);return n?Vi(n)?n.index:null:Ai(t)}function Ui(e=`async-node`){(Rr.size||zr.size)&&(Rr.clear(),zr.clear(),Bi(),so(e))}let Wi=g(fq,null),Gi={reportHeight(e,t){if(!Lt.value)return;let n=Hi(e);if(n==null)return;let r=kr.get(n);if(!r)return;let i=Number(t),a=yr(n,r);(function(e,t,n={}){mr(()=>vr(e,t,n))})(n,Number.isFinite(i)&&i>0?Math.max(i,a||0):a)},markPending(e){if(!Lt.value)return;let t=Ai(e);t!=null&&function(e,t){let n=zr.get(e);if(n&&Vi(n))return Rr.set(e,Math.max(0,Rr.get(e)??0)+1),Bi(),void so(`async-node`);Rr.set(e,1),zr.set(e,function(e){return{index:e,sessionKey:ji(),threadKey:Mi(),layoutEpochKey:Ri.value}}(t)),Bi(),so(`async-node`)}(String(e),t)},markSettled(e){if(!Lt.value)return;let t=String(e),n=Hi(e);(n!=null||function(e){return Rr.has(String(e))}(t))&&function(e){let t=Rr.get(e)??0;return!(t<=0||(t<=1?(Rr.delete(e),zr.delete(e)):Rr.set(e,t-1),Bi(),t===1&&so(`async-node`),0))}(t)&&n!=null&&go()}};function Ki(){let e=0;for(let t of kr.values())e+=ft(`getVisibleDomHeight.offsetHeight`,()=>t?.offsetHeight??0);return Math.ceil(Math.max(0,e))}p(fq,{reportHeight(e,t){Gi.reportHeight(e,t),Wi?.reportHeight(e,t)},markPending(e){Gi.markPending(e),Wi?.markPending(e)},markSettled(e){Gi.markSettled(e),Wi?.markSettled(e)}});let qi,Ji=null,Yi=null;function Xi(e){return!1!==e&&e!=null&&e!==``}function Zi(){return qt.value?function(){if(!qt.value)return!0;let e=yt.value.length,t=ui(Dr.start,0,e),n=ui(Dr.end,t,e);if(t>=n)return!0;for(let e=t;e=Ur.value}function Qi(){return!0===qe.value&&!Ye.value&&Vr.value===0&&Pr.size===0&&Nr.size===0&&Hr==null&&Zi()}function $i(){if(r.virtualScroll?.settleMode!==`manual`||Ji===ji()&&qi===Mi())return!0;let e=r.virtualScroll?.settledToken;return!!Xi(e)&&Yi===Oo(e)}function ea(){return Qi()&&$i()}function ta(e,t){return t.totalNodes<=0?e===`final`?`final`:`estimate`:t.measuredCount>=t.totalNodes?e===`final`?`final`:`measured`:t.measuredCount>0||t.estimatedCount>0?`mixed`:`estimate`}function na(e=`manual`,t){let n=Di(),r=function(e){return e||(!0===qe.value?!Zi()||Nr.size>0||Hr!=null?`measuring`:ea()?`settled`:`settling`:yt.value.length>0?`streaming`:`estimating`)}(t);return{sessionKey:ji(),threadKey:Mi(),phase:r,nodeCount:n.totalNodes,liveRange:{start:Dr.start,end:Dr.end},renderedCount:ln.value,measuredCount:n.measuredCount,estimatedCount:n.estimatedCount,averageNodeHeight:n.averageNodeHeight,topSpacerHeight:n.topSpacerHeight,bottomSpacerHeight:n.bottomSpacerHeight,visibleDomHeight:Ki(),totalHeight:ia(),width:n.width,final:!0===qe.value,stable:ea(),confidence:ta(r,n),reason:e}}function ra(){let e=Nn.value||Be(),t=me.value;if(!e||!t)return null;let n=e.ownerDocument||t.ownerDocument||document,r=e===n.documentElement||e===n.body||e===n.scrollingElement;return{root:e,doc:n,isViewportRoot:r,scrollTop:ft(`getScrollBox.scrollTop`,()=>He(e,n,r)),scrollHeight:ft(`getScrollBox.scrollHeight`,()=>r?Math.max(n.documentElement?.scrollHeight??0,n.body?.scrollHeight??0,e.scrollHeight??0):e.scrollHeight),clientHeight:ft(`getScrollBox.clientHeight`,()=>r?n.documentElement?.clientHeight||e.clientHeight||0:e.clientHeight)}}function ia(){let e=yt.value.length,t=Math.max(0,Vn(0,e)),n=ft(`getRendererLogicalHeight.offsetHeight`,()=>me.value?.offsetHeight??0),r=Math.max(0,n>0?n:ft(`getRendererLogicalHeight.scrollHeight`,()=>me.value?.scrollHeight??0));return e<=0?Math.ceil(n):qt.value?t>0?Math.max(1,Math.ceil(t),function(){let e=Ti.value+Ei.value;for(let t of _n.values())t&&(e+=Math.max(0,ft(`getVirtualizedDomLogicalHeight.offsetHeight`,()=>t.offsetHeight||0)));return Math.ceil(Math.max(0,e))}(),function(e,t){return e<=0||t<=0?0:t<=e+Math.max(512,.05*e)?Math.ceil(t):0}(t,r)):Math.max(1,Math.ceil(r)):Lt.value?t>0||$n.count>0||Fn.getEstimatedNodeHeightCount()>0?(cn.value&&ln.value,Math.max(1,Math.ceil(r),Math.ceil(t))):Math.ceil(r):Math.max(1,Math.ceil(r),Math.ceil(t))}function aa(e){let t=me.value;if(!t)return null;let n=ft(`getRendererBottomDistanceFromViewport.getBoundingClientRect`,()=>t.getBoundingClientRect());return function(e){return e.isViewportRoot?e.clientHeight:ft(`getViewportBottomInRoot.getBoundingClientRect`,()=>e.root.getBoundingClientRect().bottom)}(e)-n.bottom}function oa(e={}){let t=!1!==e.requireViewport,n=function(e=64){let t=ra(),n=me.value;if(!t||!n)return!1;let r=function(e){if(e.isViewportRoot)return{top:0,bottom:e.clientHeight};let t=ft(`getVirtualViewportRect.getBoundingClientRect`,()=>e.root.getBoundingClientRect());return{top:t.top,bottom:t.bottom}}(t),i=ft(`isRendererNearVirtualViewport.getBoundingClientRect`,()=>n.getBoundingClientRect());return i.bottom>=r.top-e&&i.top<=r.bottom+e}();if(t&&!n)return null;let r=function(){let e=ra(),t=me.value;if(!e||!t||Math.max(0,e.scrollHeight-e.scrollTop-e.clientHeight)>64)return null;let n=aa(e);return n==null?null:n>=-8&&n<=160?{type:`bottom`,distanceFromBottomPx:Math.max(0,n)}:null}();if(r)return{anchor:r,captured:!0};let i=Yn();if(i)return{anchor:{type:`node`,nodeIndex:i.nodeIndex,offsetWithinNodePx:i.offsetWithinNodePx},captured:n};if(!0===e.allowFallback){let e=function(){let e=yt.value.length;return e<=0?null:{type:`node`,nodeIndex:ui(Er.value,0,Math.max(0,e-1)),offsetWithinNodePx:0}}();return e?{anchor:e,captured:!1}:null}return null}function sa(e){let t=2166136261;for(let n=0;n>>0).toString(36)}function ca(e,t){let n=e;for(let e=0;e8192?`${e.slice(0,8192)}...${e.length}`:e;return`${e.length}:${sa(t)}`}(e)}`;if(typeof e==`function`)return`fn`;if(typeof e!=`object`)return typeof e;if(t.has(e))return`cycle`;if(n>=6)return`max-depth`;t.add(e);try{if(Array.isArray(e)){if(e.length<=160){let r=[];for(let i=0;i=a&&i.push(c)}return[`a:${e.length}`,`h=${r.join(`,`)}`,`t=${i.join(`,`)}`,`all=${(o>>>0).toString(36)}`].join(`:`)}let r=e,i=Object.keys(r).filter(e=>{let t=r[e];return e!==`parent`&&e!==`el`&&e!==`component`&&(t==null||typeof t==`string`||typeof t==`number`||typeof t==`boolean`||la.has(e))}).sort();return`o:${i.length}:${i.map(e=>`${e}=${ua(r[e],t,n+1)}`).join(`;`)}`}finally{t.delete(e)}}let da=-1,fa=``,pa=[2166136261];function ma(e){let t=yt.value[e];return t?sa(ua(t)):``}function ha(e,t){let n=e;for(let e=0;e>>0}function ga(){let e=Se.value;if(da===e)return fa;let t=yt.value.length,n=di(t);(da!==e-1||n>t||pa.length>>0).toString(36),da=e,fa}function _a(e,t={}){let n=!0===t.includeHeightCache,i=t.includeContentHash??n,a=n?function(e){let t=function(){let e=Number(r.virtualScroll?.heightCacheLimit??5e3);return!Number.isFinite(e)||e<=0?1/0:Math.max(1,Math.trunc(e))}();if(!Number.isFinite(t)||e.length<=t)return e;let n=new Map,i=e=>{!e||n.size>=t||n.set(e.index,e)},a=yt.value.length,o=ui(Dr.start-2*Kt.value,0,a),s=ui(Dr.end+2*Kt.value,o,a);for(let t of e)t.index>=o&&t.index=0&&n.sizee.index-t.index).slice(0,t)}(lr().map(e=>{let t=yt.value[e.index];return t?rY(Q({},e),{nodeType:String(t.type??``),signature:ma(e.index)}):null}).filter(e=>!!e)):[],o=oa({allowFallback:!0===t.allowAnchorFallback,requireViewport:t.requireViewport});return o||a.length||!0===t.includeEmptyState?rY(Q({sessionKey:e.sessionKey,threadKey:e.threadKey},o?{anchor:o.anchor,anchorCaptured:o.captured}:{anchorCaptured:!1}),{metrics:e,width:e.width,contentHash:i?ga():void 0,measurementKey:Fi()||void 0,heightCache:a.length?a:void 0}):null}function va(e){var t,n;let r=ra();if(!r)return;let i=function(e){let t=me.value;if(!t)return null;let n=Ue(t,e.root),r=yt.value.length,i=ft(`getRendererBottomOffsetWithinRoot.offsetHeight`,()=>t.offsetHeight||0),a=Math.max(0,i>0?i:r>0?ft(`getRendererBottomOffsetWithinRoot.scrollHeight`,()=>t.scrollHeight||0):0),o=ia();return n+Math.max(a,o)}(r);if(i==null)return;let a=Math.max(0,e.distanceFromBottomPx),o=Math.max(0,i-r.clientHeight-a);(function(e){Ln=Za()+120,Rn=e})(o),r.isViewportRoot?(n=(t=r.doc.defaultView)?.scrollTo)==null||n.call(t,0,o):h1(r.root,r.doc,o,{isReverseFlexScrollRoot:Ve,getNormalizedScrollTop:He})}let ya=[];function ba(){if(Me)for(In!=null&&(en?.(In),In=null);ya.length;){let e=ya.pop();e!=null&&window.clearTimeout(e)}}function xa(e){let t=!!Pn.value;Pn.value=null,Ln=0,Rn=null,ba(),t&&e&&so(e)}function Sa(){if(!Pn.value||!Me||In!=null)return;let e=()=>{In=null;let e=Pn.value;e&&va(e)};In=$t?$t(e):null,In??e()}function Ca(e,t={}){let n=yt.value.length;return n<=0?[]:e.filter(e=>!(!Number.isInteger(e.index)||e.index<0||e.index>=n)&&!(!Number.isFinite(e.height)||e.height<=0)&&!(t.requireSignature&&!e.signature)&&!(t.requireCompatibilityMetadata&&!e.nodeType&&!e.signature)&&function(e){let t=yt.value[e.index];return!(!t||e.nodeType&&e.nodeType!==String(t.type??``)||e.signature&&e.signature!==ma(e.index))}(e))}function wa(e){let t=S1(Ii()),n=S1(e);return t!==-1&&n!==-1&&t===n}function Ta(e){let t=Number(e?.width);if(Number.isFinite(t)&&t>0)return t;let n=Number(e?.metrics?.width);return Number.isFinite(n)&&n>0?n:null}function Ea(e){return e.sessionKey===ji()&&!!Pi(e.threadKey)&&(e.measurementKey??``)===Fi()&&!!wa(Ta(e))&&!!function(e){let t=e.heightCache;return!!t?.length&&(Da(e)?t.some(e=>!!(e.nodeType||e.signature)):t.some(e=>!!e.signature))}(e)}function Da(e){return!!(e.contentHash&&e.contentHash===ga())}function Oa(e){return!Da(e)}let ka=null,Aa=null,ja=null,Ma=null,Na=null;function Pa(e){let t=e.map(e=>[e.index,Math.round(10*e.height),e.nodeType??``,e.signature??``].join(``)).join(``),n=S1(Ii());return[Mi()??``,ji(),Fi(),yt.value.length,n,e.length,sa(t)].join(`:`)}function Fa(e=(e=>(e=r.virtualScroll)?.heightCache)()){if(!Lt.value||!e?.length||yt.value.length<=0||!wa((t=r.virtualScroll)?.heightCacheWidth))return!1;var t;let n=Ca(e,{requireSignature:!0});if(!n.length)return!1;let i=Pa(n);return i===ka?(Aa=`standalone`,!0):(br(n,{mode:`merge`}),zn(),ka=i,Aa=`standalone`,to(),so(`restore`),!0)}function Ia(e,t={}){if(!Lt.value||!e||e.sessionKey!==ji()||!Pi(e.threadKey)||yt.value.length<=0)return!1;let n=!!e.heightCache?.length&&!La(),r=!e.anchor||!1===e.anchorCaptured&&!0!==t.allowUncapturedAnchor?null:e.anchor,a=!0===t.restoreAnchor&&!!r&&!La()&&Number(Ta(e))>0,o=!1;if(e.heightCache?.length&&Ea(e)){let t=Ca(e.heightCache,{requireCompatibilityMetadata:!e.contentHash,requireSignature:Oa(e)});t.length&&(br(t,{mode:`merge`}),zn(),ka=Pa(t),Aa=`restore`,to(),o=!0)}if(n||a)return!1;if(!t.restoreAnchor||!r)return o&&so(`restore`),!0;let s=function(e,t){let n=e.anchor,r=n?n.type===`bottom`?`bottom:${Math.round(n.distanceFromBottomPx)}`:`node:${n.nodeIndex}:${Math.round(n.offsetWithinNodePx)}`:`none`;return[Mi()??``,ji(),Fi(),Li.value,t,r].join(`:`)}(e,t.restoreToken??`imperative`);return ja===s?(o&&so(`restore`),!0):(ja=s,function(e){let t=()=>{if(e.type===`node`)return xa(),void Xn({nodeIndex:e.nodeIndex,offsetWithinNodePx:e.offsetWithinNodePx});if(qn(),Un.value=null,Pn.value=e,ba(),va(e),Me)for(let e of[0,120,280,480])ya.push(window.setTimeout(()=>{let e=Pn.value;e&&va(e)},e))};(function(e){if(!qt.value)return!1;let t=yt.value.length;return!(t<=0||(Er.value=e.type===`node`?ui(e.nodeIndex,0,t-1):t-1,Or(),0))})(e)?i(t):t()}(r),so(`restore`),!0)}function La(){let e=Ii();return Number.isFinite(e)&&e>0}function Ra(e){return e.sessionKey===ji()&&!!Pi(e.threadKey)&&(yt.value.length<=0||!(!e.heightCache?.length||La())||!(!(e.anchor&&Number(Ta(e))>0)||La()))}function za(){Sn.clear();for(let e of Object.keys(Qn)){let t=Number(e);Number.isInteger(t)&&t>=0&&t{let t=!1,n=null,r=()=>{t||(t=!0,n!=null&&window.clearTimeout(n),e())};if($t)return $t(r),void(n=window.setTimeout(r,50));n=window.setTimeout(r,0)})}function Va(e,t=Mi(),n=Ri.value){return ji()===e&&Mi()===t&&Ri.value===n}function Ha(){return iY(this,arguments,function*(e={}){let t=ji(),n=Mi(),a=Ri.value,o=e.frames??2,s=e.timeoutMs??120,c=e.reason??`manual`,l=e.expectedSettledTokenKey,u=!0===e.flushPendingTimers,d=na(c),f=()=>rY(Q({},d),{phase:d.final?`settling`:d.phase,stable:!1,confidence:d.confidence===`final`?`mixed`:d.confidence,reason:c}),p=()=>Va(t,n,a)&&(l==null||$a()===l);for(let e=0;ewindow.setTimeout(t,e))}(s),!p()||(u&&qr(),go(),J(),!p()))return f();let m=Qi();m&&(Ji=t,qi=n,r.virtualScroll?.settleMode===`manual`&&l!=null&&Xi(r.virtualScroll?.settledToken)&&$a()===l&&(Yi=Oo(r.virtualScroll.settledToken)));let h=na(c,p()&&m&&$i()?`final`:void 0);return io(h,!0),h})}let Ua=`content`,Wa=null,Ga=null,Ka=0,qa=null,Ja=null,Ya=null,Xa=null;function Za(){return typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now()}function Qa(e){let t=qa;if(!t)return!0;let n=r.virtualScroll?.heightDiffThresholdPx??1;return Math.abs(e.totalHeight-t.totalHeight)>n||e.sessionKey!==t.sessionKey||e.phase!==t.phase||e.stable!==t.stable||e.final!==t.final||e.threadKey!==t.threadKey||e.nodeCount!==t.nodeCount||e.measuredCount!==t.measuredCount||e.width!==t.width}function $a(e=(e=>(e=r.virtualScroll)?.settledToken)()){return C0(e)}function eo(e,t){return[e,t.sessionKey,t.threadKey??``,Fi(),ga(),C0(r.virtualScroll?.settledToken),Math.round(t.totalHeight),Math.round(t.width)].join(`\0`)}function to(){Ya=null,Xa=null,Ja=null}function no(e){let t=e.heightCache;return t?.length?Pa(t):``}function ro(e){let t=e.metrics,n=e.anchor?(r=e.anchor).type===`bottom`?`bottom:${Math.round(r.distanceFromBottomPx)}`:`node:${r.nodeIndex}:${Math.round(r.offsetWithinNodePx)}`:`none`;var r;return[e.sessionKey,e.threadKey??``,e.measurementKey??Fi(),e.contentHash??``,no(e),n,+!!e.anchorCaptured,t.liveRange.start,t.liveRange.end,t.renderedCount,t.nodeCount,Math.round(t.totalHeight),Math.round(t.width),t.phase,+!!t.stable].join(`\0`)}function io(e,t=!1){if(!Lt.value||function(e=!1){return!e&&Pt.value&&!Rt.value}(t))return;let n=t||Qa(e),r=function(e,t=!1){return t||e.stable||e.phase===`final`?{state:_a(e,{includeHeightCache:!0})}:{state:_a(e)}}(e,t).state,i=!!(r&&(n||function(e,t=!1){return!!t||ro(e)!==Ja}(r,t)));if(n&&(W(e),qa=e,Ka=Za()),r&&i&&(K(r),r.anchor&&q(r.anchor),Ja=ro(r)),e.stable){let t=eo(`settled`,e);if(t!==Ya){Ya=t;let n=_a(e,{includeHeightCache:!0});n&&(K(n),Ja=ro(n)),function(e){s(`render-settled`,e)}(e)}}if(e.phase===`final`){let t=eo(`final`,e);if(t!==Xa){Xa=t;let n=_a(e,{includeHeightCache:!0});n&&(K(n),Ja=ro(n)),function(e){s(`render-final`,e)}(e)}}}function ao(){Wa!=null&&(en?.(Wa),Wa=null),Ga!=null&&Me&&(window.clearTimeout(Ga),Ga=null)}function oo(){Wa=null,Ga=null,function(e){if(Nr.size>0||Hr!=null)return!0;switch(e){case`node-resize`:case`async-node`:case`resize`:case`restore`:case`final`:case`manual`:return!0;default:return!1}}(Ua)&&(go(),J()),io(na(Ua))}function so(e){if(!Lt.value||(Ua=e,Wa!=null||Ga!=null))return;let t=Math.max(0,r.virtualScroll?.emitIntervalMs??32),n=Math.max(0,t-(Za()-Ka)),i=()=>{Ga=null,Wa=$t?$t(oo):null,Wa??oo()};Me&&n>0?Ga=window.setTimeout(i,n):i()}function co(){jn.value+=1}function lo(e){if(cn.value&&e>=ln.value){let t=yt.value[e],n=!0===Ke.value&&!0!==qe.value&&e>=yt.value.length-2,r=t?.type===`code_block`||t?.type===`image`||t?.type===`mermaid`||t?.type===`infographic`;if(!n||r)return!1}return!xr.value||e=ke.value&&(be.value||(be.value=!0,oi()),!wr.value||!Qt))return uo(e),void(t&&ii(e,!0));if(e{if(ni.delete(e),!xr.value||$r.value.has(e))return;let t=_n.get(e);if(!t)return;let n=Be(t),r=t.ownerDocument||document,i=r.defaultView||window,a=!n||n===r.documentElement||n===r.body,o=!a&&n?ft(`nodeVisibilityFallback.root.getBoundingClientRect`,()=>n.getBoundingClientRect()):null,s=a?0:o.top,c=a?ft(`nodeVisibilityFallback.clientHeight`,()=>i.innerHeight??n?.clientHeight??0):o.bottom,l=ft(`nodeVisibilityFallback.node.getBoundingClientRect`,()=>t.getBoundingClientRect());l.bottom>=s-500&&l.top<=c+500&&ii(e,!0)},1800+t);ni.set(e,n)}(e);let i=null;i=l(()=>r.isVisible.value,t=>{if(t){ri(e),ii(e,!0),i?.(),ti.delete(e),ei.get(e)===r&&ei.delete(e);try{r.destroy()}catch{}}},{immediate:!0}),ti.set(e,i),qt.value&&Qr()}function po(){Hr=null,mr(()=>{let e=!1;for(let[t,n]of Nr)Nr.delete(t),kr.get(t)===n.el&&Ar.get(t)===n.version&&(e=vr(t,n.height,{allowShrink:n.allowShrink})||e);return e})}function mo(){Hr!=null&&(en?.(Hr),Hr=null),Nr.clear()}function ho(e,t){(function(e,t,n){if(!Number.isFinite(n)||n<=0||kr.get(e)!==t)return;let i=Ar.get(e);if(i==null)return;let a=yt.value[e],o=Ye.value&&!0!==qe.value&&!r.nodes?.length&&e>=yt.value.length-2,s=!(!0===a?.loading||o),c=Nr.get(e),l=c?c.allowShrink&&s:s,u=c&&!l?Math.max(c.height,n):n;Nr.set(e,{height:u,allowShrink:l,version:i,el:t}),Hr??(Hr=$t?$t(po):null,Hr??po())})(e,t,yr(e,t))}function go(){for(let[e,t]of kr)t&&ho(e,t)}function _o(){bn?.disconnect(),bn=null,vn.clear()}function vo(){for(;Mr.length;)Kr(Mr.pop())}l(Rt,e=>{e&&so(`content`)},{flush:`post`}),t({getVirtualMetrics:na,captureVirtualState:function(e={}){var t;return _a(na(`manual`),{includeHeightCache:!0,includeContentHash:!0,allowAnchorFallback:!0===e.allowFallbackAnchor,requireViewport:!0===e.requireViewport,includeEmptyState:(t=e.includeEmptyState)==null||t})},restoreVirtualState:function(e,t={}){let n=!0===t.restoreAnchor,r=t.restoreToken==null?`imperative`:String(t.restoreToken);Ma=e,Na={restoreAnchor:n,restoreToken:r,allowUncapturedAnchor:!0===t.allowUncapturedAnchor},!Ia(e,{restoreAnchor:n,restoreToken:r,allowUncapturedAnchor:!0===t.allowUncapturedAnchor})&&Ra(e)||(Ma=null,Na=null)},forceMeasure:function(e=`manual`){return iY(this,null,function*(){yield i(),yield Ba(),go(),J(),yield i();let t=na(e);return io(t,!0),t})},settle:Ha,scrollToNode:function(e,t=`start`){xa(),qn();let n=yt.value.length;if(n<=0)return;let r=ui(e,0,n-1),a=()=>{let e=Kn({nodeIndex:r,offsetWithinNodePx:0}),n=Bn(r),i=ra()?.clientHeight??0,a=Wn(),o=e;if(t===`center`)o=e-i/2+n/2;else if(t===`end`)o=e-i+n;else if(t===`nearest`&&a!=null){if(e>=a&&e+n<=a+i)return;o=eJt.value,e=>{if(!e){_o();for(let e of jr.values())for(let t of e)Kr(t);jr.clear(),Ar.clear(),vo(),mo()}},{immediate:!0}),l(qe,e=>{e&&function(){if(Me&&qe.value&&kr.size){vo();for(let e of[80,240,640]){let t=Gr(e,()=>{for(let[e,t]of kr)t&&ho(e,t)},`final`);t!=null&&Mr.push(t)}}}(),so(e?`final`:`content`)});let yo=g1(()=>so(`content`),16),bo=g1(()=>so(`batch`),16);l([()=>yt.value.length,()=>ln.value],()=>{Pn.value&&Sa(),yo()},{flush:`post`,immediate:!0}),l([()=>Dr.start,()=>Dr.end],()=>{bo()},{flush:`post`});let{cleanupBatchScheduler:xo}=function(e){let{props:t,isClient:n,isTestEnv:r,parsedNodesIdentity:a,parsedNodeCount:o,desiredRenderedCount:s,datasetKey:c,batchingEnabled:u,incrementalRenderingActive:d,resolvedBatchSize:f,resolvedInitialBatch:p,renderedCount:m,adaptiveBatchSize:h,previousRenderContext:g,previousBatchConfig:_,requestFrame:v,cancelFrame:y,hasIdleCallback:b,cleanupNodeVisibility:x,onDatasetKeyChanged:S,onDatasetChanged:C}=e,w=null,T=`raf`,E=null,D=0,O=!1,k=!1,A=new Set,j=new Set;function M(){if(n){w!=null&&(T===`raf`&&y?y(w):T===`idle`&&typeof window.cancelIdleCallback==`function`?window.cancelIdleCallback(w):T===`timeout`&&window.clearTimeout(w),w=null),D+=1;for(let e of A)y&&y(e);for(let e of j)window.clearTimeout(e);A.clear(),j.clear(),E=null,O=!1,k=!1}}function N(){return typeof performance<`u`?performance.now():Date.now()}function P(e){(function(e){if(!d.value)return;let n=Math.max(2,t.renderBatchBudgetMs??6),r=Math.max(1,f.value||1),i=Math.max(1,Math.floor(r/4));e>1.5*n?h.value=Math.max(i,Math.floor(.8*h.value)):e<.6*n&&h.value=o)return;let c=Math.max(1,e),l=()=>{let e=N();w=null;let r=E??c;E=null;let a=N();m.value=Math.min(o,m.value+r),x(m.value),function(e,r){if(!n)return void P(r);O=!0;let a=++D;i().then(()=>{if(a!==D)return;let n=N(),i=Math.max(r,n-e),o=()=>{a===D&&P(i)};if(v){let e=null,n=null,r=!1,i=()=>{r||(r=!0,e!==null&&(A.delete(e),e=null),n!==null&&(j.delete(n),window.clearTimeout(n),n=null),o())};e=v(()=>{i()}),A.add(e),n=window.setTimeout(()=>{e!==null&&y&&y(e),i()},Math.max(32,t.renderBatchIdleTimeoutMs??120)),j.add(n);return}let s=window.setTimeout(()=>{j.delete(s),o()},0);j.add(s)})}(e,N()-a)};if(!n||a.immediate)return void l();let u=Math.max(0,t.renderBatchDelay??16);if(E=E==null?c:Math.max(E,c),w==null){if(!r&&b&&window.requestIdleCallback){let e=Math.max(0,t.renderBatchIdleTimeoutMs??120);T=`idle`,w=window.requestIdleCallback(()=>l(),{timeout:e});return}if(v&&!r)return T=`raf`,void(w=v(()=>{u===0?l():(T=`timeout`,w=window.setTimeout(()=>l(),u))}));T=`timeout`,w=window.setTimeout(()=>l(),u)}}function ee(e,t={}){O?k=!0:e==null?I():F(e,t)}function I(){d.value&&F(u.value?Math.max(1,Math.round(h.value)):Math.max(1,f.value))}return l([a,o,c,d,f,p,()=>t.renderBatchDelay],()=>{let e=o.value,r=g.value,i=c.value,a=!Object.is(i,r.key),l=e!==r.total,u=a||l;g.value={key:i,total:e};let v=_.value,y=t.renderBatchDelay??16,b=v.batchSize!==f.value||v.initial!==p.value||v.delay!==y||v.enabled!==d.value;_.value={batchSize:f.value,initial:p.value,delay:y,enabled:d.value},a&&S(e),(u||b||!d.value)&&M(),(u||b)&&(h.value=Math.max(1,f.value||1)),u&&C();let w=s.value;if(!e)return m.value=0,void x(0);if(!d.value)return m.value=w,void x(m.value);let T=a||r.total===0;m.value=T||b?Math.min(w,p.value):Math.min(m.value,w);let E=Math.max(1,p.value||f.value||e);m.value{d.value&&(typeof t==`number`&&e<=t||e>m.value&&ee())}),{cleanupBatchScheduler:M}}({props:U,isClient:Me,isTestEnv:nn,parsedNodesIdentity:Ct,parsedNodeCount:wt,desiredRenderedCount:Ur,datasetKey:zi,batchingEnabled:sn,incrementalRenderingActive:cn,resolvedBatchSize:an,resolvedInitialBatch:on,renderedCount:ln,adaptiveBatchSize:dn,previousRenderContext:un,previousBatchConfig:fn,requestFrame:$t,cancelFrame:en,hasIdleCallback:tn,cleanupNodeVisibility:ai,onDatasetKeyChanged:e=>{mo(),gr(),zn(),to(),e>0&&or(e)},onDatasetChanged:()=>{qt.value&&Qr({immediate:!0})}});l([Tr,qt,()=>me.value,()=>Ae()],([e,t])=>{if(!e)return si(),void Zr();ci(),t?Qr({immediate:!0}):Zr()},{flush:`post`,immediate:!0}),l([()=>yt.value.length,()=>qt.value],e=>iY(null,[e],function*([e,t]){t&&e&&Me&&(yield i(),Qr({immediate:!0}))}),{flush:`post`}),l(zt,e=>{e&&function(){if(Tt.value&&Et.value&&Dt.value&&Ot.value?.[1])return;let e=v({type:`paragraph`,children:[{type:`text`,content:`Probe paragraph text`,raw:`Probe paragraph text`}],raw:`Probe paragraph text`}),t=v({type:`list_item`,children:[e],raw:`- Probe paragraph text`}),n=v({type:`list`,ordered:!1,items:[t],raw:`- Probe paragraph text`});Tt.value=e,Et.value=t,Dt.value=n;let r={1:null,2:null,3:null,4:null,5:null,6:null};for(let e=1;e<=6;e++)r[e]=v({type:`heading`,level:e,text:`Probe heading`,children:[{type:`text`,content:`Probe heading`,raw:`Probe heading`}],raw:`${`#`.repeat(e)} Probe heading`});Ot.value=r}()},{immediate:!0}),l([()=>me.value,zt],()=>{if(!zt.value)return _i(),void(Ce.value=0);hi(),_i(),zt.value&&me.value&&typeof ResizeObserver<`u`&&(gi=new ResizeObserver(()=>{hi(),Un.value&&Jn(),Pn.value&&Sa(),so(`resize`)}),gi.observe(me.value))},{immediate:!0}),l([zt,Ut,Ri],()=>iY(null,null,function*(){if(!zt.value)return we.value={paragraph:null,listItem:null,listWrapperOverhead:0,headings:{1:null,2:null,3:null,4:null,5:null,6:null}},void zn();yield i(),function(){if(!zt.value||typeof window>`u`)return we.value={paragraph:null,listItem:null,listWrapperOverhead:0,headings:{1:null,2:null,3:null,4:null,5:null,6:null}},void zn();let e={paragraph:null,listItem:null,listWrapperOverhead:0,headings:{1:null,2:null,3:null,4:null,5:null,6:null}},t=pi(fi(he.value),`.paragraph-node`);e.paragraph=f1(he.value,t,`pre-wrap`);let n=fi(_e.value)?.querySelector(`.paragraph-node`);e.listItem=f1(_e.value,n,`pre-wrap`);let r=ft(`readSimpleTextProbeProfile.list.offsetHeight`,()=>ve.value?.offsetHeight??0),i=ft(`readSimpleTextProbeProfile.listItem.offsetHeight`,()=>_e.value?.offsetHeight??0);e.listWrapperOverhead=Math.max(0,r-i);for(let t=1;t<=6;t++){let n=pi(fi(ye[t]),`h${t}`);e.headings[t]=f1(ye[t],n,`pre-wrap`)}we.value=e,zn()}()}),{flush:`post`,immediate:!0}),l(()=>yt.value.length,()=>{qt.value&&Qr({immediate:!0})}),l([zt,Ce],()=>{zn(),qt.value&&Qr({immediate:!0}),Un.value&&Jn(),Pn.value&&Sa(),so(`resize`)},{immediate:!1}),l(()=>xr.value,e=>{if(e)for(let[e,t]of _n)fo(e,t);else if(oi(),qt.value)Qr({immediate:!0});else for(let[e,t]of _n)t&&ii(e,!0)},{immediate:!1}),l([Oe,ke,()=>Ae()],()=>{var e;(e=Qt.refresh)==null||e.call(Qt);for(let[e,t]of _n)fo(e,t)},{immediate:!1}),l([()=>U.viewportPriority,()=>yt.value.length,ke],([e,t,n])=>{if(!1!==e){if(be.value&&(t<=200||t<=n)){be.value=!1;for(let[e,t]of _n)fo(e,t)}}else be.value=!1}),l(()=>ln.value,()=>{qt.value&&Qr({immediate:!0})}),l([Er,Gt,Kt,()=>yt.value.length,qt],()=>{Or()},{immediate:!0});let So=null,Co=!1,wo=null;function To(){So=null,Ji=null,qi=void 0,Yi=null,to()}function Eo(){mo(),gr(),zn(),Sn.clear();let e=yt.value.length;e>0&&or(e),za()}function Do(){ao(),qr(),qa=null,ka=null,Aa=null,ja=null,Ma=null,Na=null,Co=!1,To(),Ui(`restore`),qn(),xa()}function Oo(e){return[Mi()??``,ji(),Fi(),Li.value,$a(e),yt.value.length,Math.round(Vn(0,yt.value.length)),Math.round(Ii()),$n.count,Math.round($n.total)].join(`:`)}function ko(){return iY(this,null,function*(){let e=r.virtualScroll?.settledToken,t=$a(e),n=ji(),a=Mi(),o=Ri.value;if(Lt.value&&r.virtualScroll?.settleMode===`manual`&&Xi(e))if(Qi()){if(Oo(e)!==Yi&&!Co){Co=!0;try{let e=yield Ha({reason:`manual`,expectedSettledTokenKey:t}),i=$a()===t;Va(n,a,o)&&e.sessionKey===n&&e.threadKey===a&&i&&e.stable&&e.phase===`final`&&(Yi=Oo(r.virtualScroll?.settledToken))}finally{Co=!1,yield i();let e=r.virtualScroll?.settledToken,t=Xi(e)?Oo(e):``;Va(n,a,o)&&t&&Yi!==t&&ko()}}}else so(`manual`)})}l(Lt,(e,t)=>{if(e!==t){if(!e)return Do(),void ao();Do(),Eo(),wo=Ri.value,so(`content`)}},{flush:`post`}),l([Lt,Ri],([e,t])=>{e?wo==null?wo=t:wo!==t&&(wo=t,function(e=`resize`){mo(),gr(),zn(),Sn.clear();let t=yt.value.length;t>0&&or(t),za(),ka=null,Aa=null,ja=null,qa=null,Co=!1,To(),Fa(),i(()=>{go(),Un.value&&Jn(),Pn.value&&Sa(),so(e)})}(`resize`)):wo=null},{flush:`post`,immediate:!0}),l([Lt,()=>ji(),()=>Mi()],([e])=>{e&&(Do(),Eo(),Ui(`content`),so(`content`))}),l([Lt,()=>ji(),()=>Mi(),Ri,()=>yt.value.length],([e])=>{e&&function(e=`async-node`){let t=!1;for(let[e,n]of Array.from(zr.entries()))Vi(n)||(zr.delete(e),Rr.delete(e),t=!0);t&&(Bi(),so(e))}(`async-node`)},{flush:`post`}),l([Lt,()=>r.virtualScroll?.sessionKey,()=>r.virtualScroll?.measurementKey,()=>r.indexKey,()=>Se.value],([e])=>{e&&(to(),function(e=`content`){if(!Lt.value)return;let t=[],n=yt.value.length,r=di(n);for(let e of Array.from(Sn.keys())){if(e>=n){t.push(e);continue}if(e=n&&Sn.delete(e);t.length&&(function(e,t={}){let n=Array.from(e,Number);pr(n);let r=0;if(mr(()=>(r=cr(n,t),r>0)),r>0)(function(e){for(let t of e)Sn.delete(t)})(n);else for(let e of n)On.delete(e)}(t,{notify:!1}),zn(),To(),Un.value&&Jn(),Pn.value&&Sa(),so(e))}(`content`))},{flush:`post`,immediate:!0}),l([Lt,()=>yt.value.length,()=>ji(),()=>Mi()],([e,t,n,r],[i,a,o,s])=>{e&&i&&n===o&&r===s&&t!==a&&To()},{flush:`post`}),l([Lt,()=>r.virtualScroll?.heightCache,()=>r.virtualScroll?.heightCacheWidth,()=>r.virtualScroll?.restoreState,()=>r.virtualScroll?.measurementKey,()=>yt.value.length,()=>ji(),Ce],()=>{Fa()},{flush:`post`,immediate:!0}),l([Lt,()=>r.virtualScroll?.restoreState,()=>r.virtualScroll?.restoreAnchor,()=>r.virtualScroll?.measurementKey,()=>yt.value.length,()=>ji(),Ce],e=>iY(null,[e],function*([e,t]){if(!e||!t)return;yield i();let n=function(){let e=r.virtualScroll?.restoreAnchor;return e==null||!1===e?null:!0===e?`true`:String(e)}();Ia(t,{restoreAnchor:n!=null,restoreToken:n??void 0})}),{flush:`post`,immediate:!0}),l([Lt,Ce,()=>r.virtualScroll?.restoreState,()=>r.virtualScroll?.measurementKey],([e])=>{if(!e)return;let t=r.virtualScroll?.restoreState;t&&ka&&Aa===`restore`&&(Ea(t)||(Eo(),ka=null,Aa=null,so(`resize`)))},{flush:`post`}),l([Lt,()=>yt.value.length,()=>ji(),Ce],e=>iY(null,[e],function*([e]){let t=Ma,n=Na;e&&t&&(yield i(),!Ia(t,{restoreAnchor:!0===n?.restoreAnchor,restoreToken:n?.restoreToken??`imperative`,allowUncapturedAnchor:!0===n?.allowUncapturedAnchor})&&Ra(t)||(Ma=null,Na=null))}),{flush:`post`,immediate:!0}),l([Lt,qe,()=>r.virtualScroll?.settleMode,()=>ji(),()=>Mi(),Ri,Vr,Lr,()=>ln.value,Ur,()=>$n.count,()=>$n.total],([e,t,n])=>{if(!e||!0!==t||n===`manual`||!ea())return;let r=function(){let e=yt.value.length;return[Mi()??``,ji(),Fi(),Li.value,e,Math.round(Vn(0,e)),Math.round(Ii()),$n.count,Math.round($n.total)].join(`:`)}();So!==r&&(So=r,Ha({reason:`final`}).then(e=>{e.stable||So!==r||(So=null)}))},{flush:`post`,immediate:!0}),l([Lt,qe,()=>r.virtualScroll?.settleMode,()=>r.virtualScroll?.settledToken,()=>ji(),()=>Mi(),Ri,Vr,Lr,()=>ln.value,Ur,()=>yt.value.length,()=>$n.count,()=>$n.total],()=>{ko()},{flush:`post`,immediate:!0}),l([()=>yt.value.length,qt,Gt,Kt,()=>Dr.start,()=>Dr.end],([e,t,n,r,i,a])=>{Pe.value&&rt(`virtualization`,{nodes:e,virtualization:t,maxLiveNodes:n,buffer:r,focusIndex:Er.value,scroll:t?(()=>{let e=Nn.value||Be();return e?{reverse:Ve(e),scrollTop:Math.round(e.scrollTop),scrollTopAbs:Math.round(Math.abs(e.scrollTop)),scrollHeight:Math.round(e.scrollHeight),clientHeight:Math.round(e.clientHeight)}:null})():null,liveRange:{start:i,end:a},rendered:ln.value})}),l([()=>U.customId],([e],t,n)=>{if(!e||kt)return;let r=function(e,t){return e?($$.controllers[e]=t,()=>{$$.controllers[e]===t&&delete $$.controllers[e]}):()=>{}}(e,{captureRestoreAnchor:Yn,restoreAnchor:Xn,getAnchorDrift:Zn,getReport:Oi});n(()=>{r()})},{immediate:!0}),re(()=>{(function(){if(Lt.value)try{go(),J();let e=na(`manual`);Qa(e)&&(W(e),qa=e,Ka=Za());let t=_a(e,{includeHeightCache:!0,includeContentHash:!0,allowAnchorFallback:!1,requireViewport:!0,includeEmptyState:!0});t&&(K(t),t.anchor&&q(t.anchor),Ja=ro(t))}catch{}})(),xo(),oi(),tt(),_o();for(let e of jr.values())for(let t of e)Kr(t);jr.clear(),Ar.clear(),Sn.clear(),vo(),mo(),_i(),qn(),xa(),ao(),si(),Zr()});let Ao=YX(`ViewportDeferredMermaidBlockNode`,o({loader:()=>iY(null,null,function*(){try{return(yield ge(()=>import(`./index11-D1N3NjXP.js`),__vite__mapDeps([36,1,2,32]))).default}catch(e){return console.warn(`[markstream-vue] Optional peer dependencies for MermaidBlockNode are missing. Falling back to preformatted code rendering. To enable Mermaid rendering, please install "mermaid".`,e),KX}}),loadingComponent:x0,delay:0}),x0),jo=YX(`ViewportDeferredInfographicBlockNode`,o({loader:()=>iY(null,null,function*(){try{return(yield ge(()=>import(`./index10-E02w5TzI.js`),__vite__mapDeps([37,1,2]))).default}catch(e){return console.warn(`[markstream-vue] Failed to load InfographicBlockNode. Falling back to preformatted code rendering. To enable Infographic rendering, install "@antv/infographic" and configure setInfographicLoader with a dynamic loader.`,e),KX}}),loadingComponent:b0,delay:0}),b0),Mo=YX(`ViewportDeferredD2BlockNode`,o(()=>iY(null,null,function*(){try{return(yield ge(()=>import(`./index8-CstP1mIT.js`),__vite__mapDeps([38,1,2]))).default}catch(e){return console.warn(`[markstream-vue] Optional peer dependencies for D2BlockNode are missing. Falling back to preformatted code rendering. To enable D2 rendering, please install "@terrastruct/d2".`,e),KX}})),KX),No={text:JX,paragraph:eQ,heading:VZ,code_block:ZX,list:qZ,list_item:KZ,blockquote:kZ,table:cQ,definition_list:NZ,footnote:RZ,footnote_reference:wY,footnote_anchor:FZ,admonition:L0,vmr_container:pQ,hardbreak:xZ,link:pZ,image:DX,thematic_break:uQ,math_inline:QX,math_block:$X,strong:oZ,emphasis:yZ,strikethrough:cZ,highlight:_Z,insert:hZ,subscript:iZ,superscript:nZ,emoji:xY,checkbox:yY,checkbox_input:yY,inline_code:BY,html_inline:LY,reference:eZ,html_block:ZZ},Po=R(()=>ki()),Fo=R(()=>m1(U.codeBlockProps)),Io=R(()=>m1(U.codeBlockProps,{omit:[`langs`]})),Lo=R(()=>Q(Q({stream:U.codeBlockStream,darkTheme:U.codeBlockDarkTheme,lightTheme:U.codeBlockLightTheme,monacoOptions:U.codeBlockMonacoOptions,themes:U.themes,langs:k.value===`shiki`?U.langs:void 0,minWidth:U.codeBlockMinWidth,maxWidth:U.codeBlockMaxWidth},typeof Fe.value==`boolean`?{showTooltips:Fe.value}:{}),Io.value)),Ro=R(()=>Q(rY(Q({},Lo.value),{langs:U.langs}),Fo.value));function zo(e){return typeof e==`boolean`?e:void 0}let Bo=R(()=>{let e=U.codeBlockProps||{},t={},n=zo(e.showLineNumbers);n!==void 0&&(t.showLineNumbers=n);let r=zo(e.diffInline);r!==void 0&&(t.diffInline=r);let i=function(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}(e.reservedHeightPx);return i!==void 0&&(t.reservedHeightPx=i),t}),Vo=R(()=>Q(Q({stream:U.codeBlockStream,darkTheme:U.codeBlockDarkTheme,lightTheme:U.codeBlockLightTheme,themes:U.themes,langs:U.langs,minWidth:U.codeBlockMinWidth,maxWidth:U.codeBlockMaxWidth},typeof Fe.value==`boolean`?{showTooltips:Fe.value}:{}),Fo.value)),Ho=R(()=>Q({},U.mermaidProps||{})),Uo=R(()=>Q({},U.d2Props||{})),Wo=R(()=>Q({},U.infographicProps||{})),Go=R(()=>({typewriter:E.value,fade:U.fade,customHtmlTags:vt.value.customHtmlTags})),Ko=R(()=>Q(Q({},Go.value),typeof Fe.value==`boolean`?{showTooltip:Fe.value}:{})),qo=R(()=>Q(Q({},Go.value),typeof Fe.value==`boolean`?{showTooltips:Fe.value}:{})),Jo=R(()=>Q(Q({},Go.value),typeof Fe.value==`boolean`?{showTooltips:Fe.value}:{})),Yo=R(()=>Q(Q({},Go.value),typeof Fe.value==`boolean`?{showTooltips:Fe.value}:{}));function Xo(e){return Array.isArray(e.children)&&e.children.length>0}let Zo=R(()=>wi.value.map(e=>{let t=function(e){if(e.type!==`code_block`)return e;let t=e,n=[String(t.language??``),String(t.loading??``),String(t.diff??``),String(t.code??``),String(t.originalCode??``),String(t.updatedCode??``),String(t.raw??``)].join(`\0`),r=xn.get(t);if(r&&r.signature===n)return r.node;let i=Q({},t);return xn.set(t,{signature:n,node:i}),i}(e.node),n=Qo(t),r=rs(t,n);if((t.type===`html_block`||t.type===`html_inline`)&&r===No[t.type]){let e=t,n=String(e.tag??``).trim().toLowerCase()||wL(e.content);if(n){let i=gt.value[n];if(_t.value.has(n)&&i)r=i,t=rY(Q({},e),{type:n,tag:n,content:DL(e.content,n)});else if(EL(e.content??e.raw,n)){let n=String(e.content??e.raw??``);t.type===`html_inline`?(r=JX,t={type:`text`,content:n,raw:n}):(r=eQ,t={type:`paragraph`,children:[{type:`text`,content:n,raw:n}],raw:n})}}}let i=t.type===`code_block`&&k.value===`pre`&&r===KX&&!$o(gt.value,n),a=Q({},function(e,t,n){let r=t??Qo(e);if(e.type===`code_block`){let t=r?$o(gt.value,r):void 0;if(n&&k.value===`pre`&&!t&&n===KX)return Bo.value;if(n&&r&&n===t)return r===`mermaid`?ts(e):r===`infographic`?ns(e):r===`d2`||r===`d2lang`?Uo.value:Ro.value;if(n&&n===gt.value.code_block)return Ro.value;if(yi(n))return Vo.value}return r===`mermaid`?ts(e):r===`infographic`?ns(e):r===`d2`||r===`d2lang`?Uo.value:e.type===`link`?Ko.value:e.type===`list`?qo.value:e.type===`blockquote`?Jo.value:e.type===`table`?Yo.value:e.type===`code_block`?Lo.value:Go.value}(t,n,r)),o=zt.value?Ci.value[e.index]:null;t.type===`code_block`&&o?.kind===`code-block`&&(a=rY(Q({},a),i?{reservedHeightPx:o.height??o.contentHeight}:{estimatedHeightPx:o.height,estimatedContentHeightPx:o.contentHeight,estimatedDiffInline:o.diffInline})),i||t.type!==`code_block`||n!==`mermaid`||lJ(a.estimatedPreviewHeightPx)!=null||(a=rY(Q({},a),{estimatedPreviewHeightPx:mJ(dJ(String(t.code??``)))})),i||t.type!==`code_block`||n!==`infographic`||lJ(a.estimatedPreviewHeightPx)!=null||(a=rY(Q({},a),{estimatedPreviewHeightPx:hJ(fJ(String(t.code??``)))})),t.type===`math_block`&&(a=rY(Q({},a),{cacheScope:ht}));let s=function(e,t){let n=String(e.type);return!dY(n)&>.value[n]===t}(t,r),c=s?AY(t,Ie.value):void 0;return rY(Q({},e),{node:t,component:r,bindings:a,customBindings:Q(Q({},c??{}),a),rendersCustomNode:s,hasSlotChildren:Xo(t),slotContent:String(t.content??``),isCodeBlock:t.type===`code_block`,indexKey:`${Po.value}-${e.index}`,vnodeKey:`${Ni.value}\0${e.index}\0${t.type}`})}));function Qo(e){return e?.type===`code_block`?String(e.language??``).trim().toLowerCase():``}function $o(e,t){let n=t.trim().toLowerCase();if(n)for(let t of[n,Oq(n),QK(n)]){let n=t&&e[t];if(n)return n}}function es(e,t,n,r){let i=Q({},e.value);return lJ(i.estimatedPreviewHeightPx)??(i.estimatedPreviewHeightPx=r(n(String(t?.code??``)),void 0,i.maxHeight===`none`?null:lJ(i.maxHeight)??void 0)),i}function ts(e){return es(Ho,e,dJ,mJ)}function ns(e){return es(Wo,e,fJ,hJ)}function rs(e,t){if(!e)return fQ;let n=gt.value,r=n[String(e.type)];if(e.type===`code_block`){let i=t??Qo(e);return(i?$o(n,i):void 0)||(k.value===`pre`?n.code_block||KX:i===`mermaid`?n.mermaid||Ao:i===`infographic`?n.infographic||jo:i===`d2`||i===`d2lang`?n.d2||Mo:r||n.code_block||bi.value)}return r||No[String(e.type)]||fQ}function is(e){s(`click`,e)}function as(e){var t;(t=e.target)!=null&&t.closest(`[data-node-index]`)&&s(`mouseover`,e)}function os(e){var t;(t=e.target)!=null&&t.closest(`[data-node-index]`)&&s(`mouseout`,e)}function ss(e){s(`mouseover`,e)}function cs(e){s(`mouseout`,e)}let ls=z(null),us=z(!1),ds=z(null),fs=R(()=>!(U.domMode!==`minimal`||Ne.value||!1!==U.fade||E.value||us.value||pn.value||qt.value||Ft.value||Mt.value||Zt.value||Object.keys(gt.value).length!==0)),ps,ms=null,hs=0,gs=0,_s=0,vs=[`code_block`,`admonition`,`table`,`math_block`,`html_block`,`image`,`thematic_break`],ys=new Set(vs),bs=[`.typewriter-cursor`,`.height-estimation-probes`,...vs.map(e=>`[data-node-type="${e}"]`),`script`,`style`].join(`,`);function xs(e){if(!e||typeof e!=`object`)return!1;let t=e.type;return typeof t==`string`&&ys.has(t)}function Ss(e){if(!e||typeof e!=`object`)return 0;let t=e,n=t.raw??t.content??t.code;if(typeof n==`string`)return n.length;let r=t.children;if(Array.isArray(r))return r.reduce((e,t)=>e+Ss(t),0);let i=t.items;return Array.isArray(i)?i.reduce((e,t)=>e+Ss(t),0):0}function Cs(){ps&&=(clearTimeout(ps),void 0)}function ws(){hs+=1,ms!=null&&(en?.(ms),ms=null)}function Ts(){ws(),ks(),ls.value&&(ls.value.style.visibility=`hidden`)}function Es(e){if(e.nodeType!==Node.TEXT_NODE||!(e.textContent??``).trim())return!1;let t=e.parentElement;return!!t&&!t.closest(bs)}function Ds(e){let t=e.lastChild;for(;t;){if(Es(t))return t;if(t.nodeType===Node.ELEMENT_NODE){let e=t;if(!e.matches(bs)&&e.lastChild){t=e.lastChild;continue}}for(;t&&t!==e&&!t.previousSibling;)t=t.parentNode;if(!t||t===e)break;t=t.previousSibling}return null}function Os(){let e=Zo.value;for(let t=e.length-1;t>=0;t--){let n=e[t];if(!n||xs(n.node)||!lo(n.index))continue;let r=_n.get(n.index);if(!r)continue;let i=Ds(r);if(i)return i}return null}function ks(){ds.value&&=(ds.value.classList.remove(E0),null)}function As(){if(T.value!==`simple`||!Me||!us.value||!me.value)return void ks();let e=Os(),t=e?function(e){let t=e.parentElement?.closest(`.text-node`);return t instanceof HTMLElement?t:e.parentElement}(e):null;t!==ds.value&&(ks(),t&&(t.classList.add(E0),ds.value=t))}function js(){if(T.value!==`precise`||!Me||!us.value||ms!=null)return;let e=hs,t=()=>{ms=null,e===hs&&function(){if(T.value!==`precise`||!(Me&&us.value&&me.value&&ls.value))return;let e=me.value,t=ls.value;t.style.visibility=`hidden`;let n=Os();if(!n)return;let r=0,i=0,a=20,o=!1;if(n?.textContent){let t=n.textContent.length,s=document.createRange();s.setStart(n,Math.max(0,t-1)),s.setEnd(n,t);let c=typeof s.getClientRects==`function`?s.getClientRects():void 0,l=c?.[c.length-1]??n.parentElement?.getBoundingClientRect();if(l){let t=ft(`typewriterCursor.root.getBoundingClientRect`,()=>e.getBoundingClientRect());r=l.right-t.left+e.scrollLeft,i=l.top-t.top+e.scrollTop,a=l.height||a,o=!0}s.detach()}o&&(t.style.transform=`translate(${Math.max(0,r)}px, ${Math.max(0,i)}px)`,t.style.height=`${a}px`,t.style.visibility=`visible`)}()};$t?ms=$t(t):t()}return l([Ge,()=>r.content,()=>r.nodes,()=>U.typewriter,qe],()=>iY(null,null,function*(){if(!Me||Ne.value||!Re.value)return;if(qe.value)return us.value=!1,Cs(),void Ts();if(r.nodes?.length)return us.value=!1,Cs(),Ts(),gs=(r.content??``).length,void(_s=Ge.value.length);let e=function(){return r.nodes?.length?r.nodes.reduce((e,t)=>e+Ss(t),0):(r.content??``).length}(),t=function(){return r.nodes?.length?r.nodes.reduce((e,t)=>e+Ss(t),0):Ge.value.length}(),n=!xs(yt.value[yt.value.length-1]),a=e>gs,o=t>_s;if(!E.value||!n||!a&&!o)return E.value&&n||(us.value=!1,Ts()),gs=e,void(_s=t);gs=e,_s=t,us.value=!0,T.value===`precise`&&ls.value&&(ls.value.style.visibility=`hidden`),Cs(),yield i(),T.value===`simple`?As():(ks(),js()),ps=setTimeout(()=>{ps=void 0,us.value=!1},3e3)}),{flush:`post`,immediate:!0}),l(us,e=>iY(null,null,function*(){e?(yield i(),T.value===`simple`?As():(ks(),T.value===`precise`&&js())):Ts()}),{flush:`post`}),l(T,()=>iY(null,null,function*(){if(Me&&!Ne.value&&Re.value&&us.value){if(yield i(),T.value===`simple`)return ws(),void As();ks(),T.value===`precise`?js():Ts()}}),{flush:`post`}),l([()=>ln.value,()=>Dr.start,()=>Dr.end],()=>iY(null,null,function*(){Me&&!Ne.value&&Re.value&&us.value&&(yield i(),T.value===`simple`?As():(ks(),T.value===`precise`&&js()))}),{flush:`post`}),re(()=>{Cs(),ws(),ks(),mt.clear()}),(e,t)=>{let n=a(`NodeRenderer`,!0);return B(Ne)?(u(!0),G(P,{key:0},y(Zo.value,e=>(u(),G(P,{key:e.vnodeKey},[e.rendersCustomNode?(u(),I(C(e.component),ie({key:0,ref_for:!0},e.customBindings,{node:e.node,loading:e.node.loading,"index-key":e.indexKey,"custom-id":U.customId,"is-dark":U.isDark,onClick:is,onMouseover:ss,onMouseout:cs,onCopy:t[0]||=e=>c(e),onHandleArtifactClick:t[1]||=e=>s(`handleArtifactClick`,e)}),{default:V(()=>[e.hasSlotChildren?(u(),I(n,ie({key:0,ref_for:!0},St.value,{nodes:e.node.children,"index-key":e.indexKey,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`nodes`,`index-key`])):e.slotContent?(u(),I(n,ie({key:1,ref_for:!0},St.value,{content:e.slotContent,final:!e.node.loading,"index-key":`${e.indexKey}-content`,"smooth-streaming":!1,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`content`,`final`,`index-key`])):O(``,!0)]),_:2},1040,[`node`,`loading`,`index-key`,`custom-id`,`is-dark`])):(u(),I(C(e.component),ie({key:1,node:e.node,loading:e.node.loading,"index-key":e.indexKey},{ref_for:!0},e.bindings,{"custom-id":U.customId,"is-dark":U.isDark,onClick:is,onMouseover:ss,onMouseout:cs,onCopy:t[2]||=e=>c(e),onHandleArtifactClick:t[3]||=e=>s(`handleArtifactClick`,e)}),null,16,[`node`,`loading`,`index-key`,`custom-id`,`is-dark`]))],64))),128)):(u(),G(`div`,{key:1,ref_key:`containerRef`,ref:me,class:H([`markstream-vue markdown-renderer`,[{dark:U.isDark},{virtualized:qt.value},{"virtual-scroll-coordinated":Rt.value},{"stable-layout":Cr.value},{"typewriter-simple-cursor":us.value&&T.value===`simple`}]]),"data-custom-id":U.customId,onClick:is,onMouseover:as,onMouseout:os},[Bt.value||qt.value?(u(),G(P,{key:0},[Bt.value?(u(),I(y0,{key:0,width:Ut.value,"flow-root":qt.value||Rt.value,"paragraph-node":Tt.value,"list-item-node":Et.value,"list-node":Dt.value,"heading-nodes":Ot.value,"set-paragraph-wrapper":Jr,"set-list-item-wrapper":Yr,"set-list-wrapper":Xr,"set-heading-wrapper":mi},null,8,[`width`,`flow-root`,`paragraph-node`,`list-item-node`,`list-node`,`heading-nodes`])):O(``,!0),qt.value?(u(),G(`div`,{key:1,class:`node-spacer`,style:oe({height:`${Ti.value}px`}),"aria-hidden":`true`},null,4)):O(``,!0)],64)):O(``,!0),fs.value?(u(!0),G(P,{key:1},y(Zo.value,e=>(u(),G(P,{key:e.vnodeKey},[lo(e.index)?(u(),I(C(e.component),ie({key:0,node:e.node,loading:e.node.loading,"index-key":e.indexKey},{ref_for:!0},e.bindings,{"custom-id":U.customId,"is-dark":U.isDark,onMouseover:t[4]||=e=>s(`mouseover`,e),onMouseout:t[5]||=e=>s(`mouseout`,e),onCopy:t[6]||=e=>c(e),onHandleArtifactClick:t[7]||=e=>s(`handleArtifactClick`,e)}),null,16,[`node`,`loading`,`index-key`,`custom-id`,`is-dark`])):O(``,!0)],64))),128)):(u(!0),G(P,{key:2},y(Zo.value,e=>(u(),G(`div`,{key:e.vnodeKey,ref_for:!0,ref:t=>fo(e.index,t),class:`node-slot`,"data-node-index":e.index,"data-node-type":e.node.type},[lo(e.index)?(u(),G(`div`,{key:0,ref_for:!0,ref:t=>function(e,t){t||function(e){let t=`${ki()}-${e}`,n=!1;for(let r of Array.from(Rr.keys()))(zr.get(r)?.index===e||r===t||r.startsWith(`${t}-`))&&(Rr.delete(r),zr.delete(r),n=!0);n&&(Bi(),so(`async-node`))}(e),Nr.delete(e),function(e){let t=(Ar.get(e)??0)+1;Ar.set(e,t)}(e);let n=jr.get(e);if(n){for(let e of n)Kr(e);jr.delete(e)}if(function(e){let t=vn.get(e);t&&(bn?.unobserve(t),yn.delete(t),vn.delete(e))}(e),!t||!Jt.value)return kr.delete(e),void Ar.delete(e);kr.set(e,t);let r=()=>{ho(e,t)};queueMicrotask(r);let i=(bn||typeof ResizeObserver>`u`||(bn=new ResizeObserver(e=>{if(e.length)for(let t of e){let e=yn.get(t.target),n=vn.get(e??-1);e!=null&&n&&ho(e,n)}else go()})),bn);if(i&&(vn.set(e,t),yn.set(t,e),i.observe(t)),typeof window<`u`){let t=yt.value[e]?.type===`code_block`?[16,80,240,800]:qe.value?[80]:[];if(t.length){let n=t.map(e=>Gr(e,r,`node-resize`)).filter(e=>e!=null);n.length&&jr.set(e,n)}}}(e.index,t),class:`node-content`},[e.isCodeBlock?e.rendersCustomNode?(u(),I(C(e.component),ie({key:1,ref_for:!0},e.customBindings,{node:e.node,loading:e.node.loading,"index-key":e.indexKey,"custom-id":U.customId,"is-dark":U.isDark,onCopy:t[12]||=e=>c(e),onHandleArtifactClick:t[13]||=e=>s(`handleArtifactClick`,e)}),{default:V(()=>[e.hasSlotChildren?(u(),I(n,ie({key:0,ref_for:!0},St.value,{nodes:e.node.children,"index-key":e.indexKey,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`nodes`,`index-key`])):e.slotContent?(u(),I(n,ie({key:1,ref_for:!0},St.value,{content:e.slotContent,final:!e.node.loading,"index-key":`${e.indexKey}-content`,"smooth-streaming":!1,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`content`,`final`,`index-key`])):O(``,!0)]),_:2},1040,[`node`,`loading`,`index-key`,`custom-id`,`is-dark`])):(u(),I(C(e.component),ie({key:2,node:e.node,loading:e.node.loading,"index-key":e.indexKey},{ref_for:!0},e.bindings,{"custom-id":U.customId,"is-dark":U.isDark,onCopy:t[14]||=e=>c(e),onHandleArtifactClick:t[15]||=e=>s(`handleArtifactClick`,e)}),null,16,[`node`,`loading`,`index-key`,`custom-id`,`is-dark`])):(u(),I(se,{key:0,name:`fade`,css:!1!==U.fade,appear:!1!==U.fade},{default:V(()=>[e.rendersCustomNode?(u(),I(C(e.component),ie({key:0,ref_for:!0},e.customBindings,{node:e.node,loading:e.node.loading,"index-key":e.indexKey,"custom-id":U.customId,"is-dark":U.isDark,onCopy:t[8]||=e=>c(e),onHandleArtifactClick:t[9]||=e=>s(`handleArtifactClick`,e)}),{default:V(()=>[e.hasSlotChildren?(u(),I(n,ie({key:0,ref_for:!0},St.value,{nodes:e.node.children,"index-key":e.indexKey,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`nodes`,`index-key`])):e.slotContent?(u(),I(n,ie({key:1,ref_for:!0},St.value,{content:e.slotContent,final:!e.node.loading,"index-key":`${e.indexKey}-content`,"smooth-streaming":!1,"batch-rendering":!1,"defer-nodes-until-visible":!1,"render-as-fragment":!0}),null,16,[`content`,`final`,`index-key`])):O(``,!0)]),_:2},1040,[`node`,`loading`,`index-key`,`custom-id`,`is-dark`])):(u(),I(C(e.component),ie({key:1,node:e.node,loading:e.node.loading,"index-key":e.indexKey},{ref_for:!0},e.bindings,{"custom-id":U.customId,"is-dark":U.isDark,onCopy:t[10]||=e=>c(e),onHandleArtifactClick:t[11]||=e=>s(`handleArtifactClick`,e)}),null,16,[`node`,`loading`,`index-key`,`custom-id`,`is-dark`]))]),_:2},1032,[`css`,`appear`]))],512)):(u(),G(`div`,{key:1,class:`node-placeholder`,style:oe({height:`${Bn(e.index)}px`})},null,4))],8,T0))),128)),us.value&&T.value===`precise`?(u(),G(`span`,{key:3,ref_key:`typewriterCursorRef`,ref:ls,class:`typewriter-cursor`,"aria-hidden":`true`},null,512)):O(``,!0),qt.value?(u(),G(`div`,{key:4,class:`node-spacer`,style:oe({height:`${Ei.value}px`}),"aria-hidden":`true`},null,4)):O(``,!0)],42,w0))}}})),[[`__scopeId`,`data-v-a9489508`]]),O0=D0;O0.install=e=>{let t=new Set([`MarkdownRender`,`NodeRenderer`,O0.__name,O0.name].filter(e=>!!e));for(let n of t)e.component(n,D0)};var k0=Object.freeze(Object.defineProperty({__proto__:null,default:O0},Symbol.toStringTag,{value:`Module`})),A0={key:0,xmlns:`http://www.w3.org/2000/svg`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,class:`admonition-icon`},j0={key:1,xmlns:`http://www.w3.org/2000/svg`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,class:`admonition-icon`},M0={key:2,xmlns:`http://www.w3.org/2000/svg`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,class:`admonition-icon`},N0={key:3,xmlns:`http://www.w3.org/2000/svg`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,class:`admonition-icon`},P0={class:`admonition-title`},F0=[`aria-expanded`,`aria-controls`],I0=[`id`],L0=vY(K({__name:`AdmonitionNode`,props:{node:{},indexKey:{},isDark:{type:Boolean},typewriter:{type:Boolean},fade:{type:Boolean},customId:{}},emits:[`copy`],setup(e,{emit:t}){var n;let r=e,i=t,a=R(()=>{if(r.node.title&&r.node.title.trim().length)return r.node.title;let e=r.node.kind||`note`;return e.charAt(0).toUpperCase()+e.slice(1)}),o=z(!!r.node.collapsible&&!((n=r.node.open)==null||n));function s(){r.node.collapsible&&(o.value=!o.value)}let c=`admonition-${Math.random().toString(36).slice(2,9)}`;return(t,n)=>(u(),G(`div`,{class:H([`admonition`,[`admonition-${r.node.kind}`]])},[L(`div`,{id:c,class:`admonition-legend`},[r.node.kind===`note`||r.node.kind===`info`?(u(),G(`svg`,A0,[...n[1]||=[L(`circle`,{cx:`12`,cy:`12`,r:`10`},null,-1),L(`path`,{d:`M12 16v-4`},null,-1),L(`path`,{d:`M12 8h.01`},null,-1)]])):r.node.kind===`tip`?(u(),G(`svg`,j0,[...n[2]||=[L(`path`,{d:`M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5`},null,-1),L(`path`,{d:`M9 18h6`},null,-1),L(`path`,{d:`M10 22h4`},null,-1)]])):r.node.kind===`warning`||r.node.kind===`caution`?(u(),G(`svg`,M0,[...n[3]||=[L(`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`},null,-1),L(`path`,{d:`M12 9v4`},null,-1),L(`path`,{d:`M12 17h.01`},null,-1)]])):r.node.kind===`danger`||r.node.kind===`error`?(u(),G(`svg`,N0,[...n[4]||=[L(`polygon`,{points:`7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2`},null,-1),L(`path`,{d:`M12 8v4`},null,-1),L(`path`,{d:`M12 16h.01`},null,-1)]])):O(``,!0),L(`span`,P0,W(a.value),1),r.node.collapsible?(u(),G(`button`,{key:4,class:`admonition-toggle`,"aria-expanded":!o.value,"aria-controls":`${c}-content`,onClick:s},[(u(),G(`svg`,{style:oe({rotate:o.value?`0deg`:`90deg`}),xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[...n[5]||=[L(`path`,{d:`m9 18 6-6-6-6`},null,-1)]],4))],8,F0)):O(``,!0)]),d(L(`div`,{id:`${c}-content`,class:`admonition-content`,"aria-labelledby":c},[b(B(O0),{"index-key":`admonition-${e.indexKey}`,nodes:r.node.children,"custom-id":r.customId,typewriter:r.typewriter,fade:r.fade,onCopy:n[0]||=e=>i(`copy`,e)},null,8,[`index-key`,`nodes`,`custom-id`,`typewriter`,`fade`])],8,I0),[[M,!o.value]])],2))}}),[[`__scopeId`,`data-v-a83480e1`]]);L0.install=e=>{e.component(L0.__name,L0)};var R0=()=>ge(()=>import(`./d2_markstream-vue-xMoF3M5G.js`),[]),z0=null,B0=R0,V0=null,H0=!1,U0=!1,W0=0;function G0(){return iY(this,null,function*(){if(z0)return z0;let e=B0,t=W0;return e?e===R0&&H0?null:V0||(V0=iY(null,null,function*(){let n;try{n=yield e()}catch(n){if(e===R0)return t===W0&&e===B0&&(H0=!0,function(e){U0||(U0=!0,console.warn(`[markstream-vue] Optional dependency "@terrastruct/d2" is not installed. D2 blocks will render as source.`,e))}(n)),null;throw n}finally{t===W0&&e===B0&&(V0=null)}return t!==W0||e!==B0?null:n?(z0=function(e){if(!e)return e;if(e.D2&&typeof e.D2==`function`)return e.D2;if(e.default&&e.default.D2&&typeof e.default.D2==`function`)return e.default.D2;let t=e.default??e;return typeof t==`function`?t:t?.D2&&typeof t.D2==`function`?t.D2:t}(n),z0):null}),V0):null})}var K0=null,q0=null,J0=null,Y0=0;function X0(){return typeof q0==`function`}function Z0(){return iY(this,null,function*(){if(K0)return K0;let e=q0,t=Y0;return e?J0||(J0=iY(null,null,function*(){let n=yield e();if(t!==Y0||e!==q0)return null;let r=function(e){if(!e)return null;let t=e.default??e,n=typeof t==`function`&&typeof t.prototype?.render==`function`?t:e.Infographic??t?.Infographic;return typeof n==`function`?n:null}(n);return t!==Y0||e!==q0?null:r?(K0=r,K0):null}).finally(()=>{t===Y0&&e===q0&&(J0=null)}),J0):null})}function Q0(e){let t=Number.parseFloat(String(e??``));return Number.isFinite(t)?t:0}function $0(e,t){e?.(t)}function e2(e,t){return e?($0(t,`readElementBoxHeight.offsetHeight`),Math.ceil(Math.max(0,e.offsetHeight||0))):0}function t2(e,t){let n=e2(e,t);if(!e||typeof window>`u`||typeof window.getComputedStyle!=`function`)return n;$0(t,`readElementOuterHeight.getComputedStyle`);let r=window.getComputedStyle(e),i=Q0(r.marginTop),a=Q0(r.marginBottom);return Math.ceil(Math.max(0,n+i+a))}function n2(e,t,n){if(!e)return 0;let r=function(e){return e?e.matches?.call(e,`.markstream-vue.markdown-renderer`)?e:e.querySelector(`.markstream-vue.markdown-renderer`):null}(e);if(!r)return 0;let i=Number.isFinite(n)?Number(n):t2(e,t),a=e2(r,t);return Math.max(0,i-a)}function r2(e,t,n){let r=n.getKey?.call(n,e,t)??e.id??t;return String(r)}function i2(e,t,n){return n.getKind?.call(n,e,t)??String(e.kind??``)}function a2(e,t,n){let r=n.getContent?.call(n,e,t)??e.content;return typeof r==`string`?r:``}function o2(e,t,n){let r=n.getFinal?.call(n,e,t);if(typeof r==`boolean`)return r;let i=e.final;return typeof i!=`boolean`||i}function s2(e,t,n){return n.getRevision?.call(n,e,t)??e.revision}function c2(e,t,n){let r=i2(e,t,n);return r===`assistant-markdown`||r===`markdown`||!r&&a2(e,t,n).length>0}function l2(e,t,n){let r=n.estimateItemHeight?.call(n,e,t);if(Number.isFinite(r)&&r>0)return r;let i=i2(e,t,n);return i===`assistant-markdown`||i===`markdown`?360:i===`system-divider`?44:i===`tool-call`?72:i===`thinking`?92:i===`error`?76:i===`user-message`?88:a2(e,t,n).length>0?360:96}var u2=Symbol(`markstreamLanguageIconResolver`);function d2(e){return o(e)}d2(()=>ge(()=>import(`./index3-BpVQpQH2.js`),__vite__mapDeps([39,31,1,2,7,32]))),d2(()=>ge(()=>import(`./index6-DOjSPjd-.js`),__vite__mapDeps([34,1,2]))),d2(()=>ge(()=>import(`./index7-D3XnABVb.js`),__vite__mapDeps([33,1,2]))),d2(()=>ge(()=>import(`./index11-D1N3NjXP.js`),__vite__mapDeps([36,1,2,32]))),d2(()=>ge(()=>import(`./index10-E02w5TzI.js`),__vite__mapDeps([37,1,2]))),d2(()=>ge(()=>import(`./index8-CstP1mIT.js`),__vite__mapDeps([38,1,2]))),d2(()=>ge(()=>import(`./index4-DMAnvl7P.js`),__vite__mapDeps([40,30,1,2,7]))),d2(()=>ge(()=>import(`./index5-Cr4upCog.js`),__vite__mapDeps([35,1,2,31,7,32]))),d2(()=>ge(()=>import(`./index9-BMNg-UH3.js`),__vite__mapDeps([41,1,2])));var f2=`cjs.css.csv.gif.htm.html.jpeg.jpg.js.json.jsx.log.md.mjs.pdf.png.scss.svg.ts.tsx.txt.vue.webp.xml.yaml.yml`.split(`.`),p2=new Set([`AGENTS.md`,`CHANGELOG.md`,`Dockerfile`,`LICENSE`,`Makefile`,`README.md`,`package.json`,`pnpm-lock.yaml`,`pnpm-workspace.yaml`,`tsconfig.json`,`vite.config.ts`]),m2=[...f2].toSorted((e,t)=>t.length-e.length).join(`|`),h2=new RegExp([String.raw`(?:^|[\s([{"'`+"`"+String.raw`])`,String.raw`(`,String.raw`(?:~|\.{1,2}|/)?(?:[A-Za-z0-9_.@+()[\]-]+/)+[A-Za-z0-9_.@+()[\]-]+(?:\.(?:${m2}))?`,String.raw`|`,String.raw`[A-Za-z0-9_.@+()[\]-]+\.(?:${m2})`,String.raw`)`,String.raw`(?:#L?(\d+)|:(\d+))?`,String.raw`(?=$|[\s)"'\]}>.,;!?])`].join(``),`gi`),g2=/[),.;!?]+$/;function _2(e){let t=e.toLowerCase();return f2.some(e=>t.endsWith(`.${e}`))}function v2(e){let t=new Map,n=new RegExp(String.raw`\b(?:path|src)=["'](\/[^"']+\.(?:${m2}))["']`,`gi`),r;for(;(r=n.exec(e))!==null;){let e=r[1];if(!e)continue;let n=e.split(`/`).pop();n&&t.set(n,e)}return t}function y2(e,t={}){let n=e.trim();if(!n||/^[a-z][a-z0-9+.-]*:\/\//i.test(n))return null;let r=n.match(/^(.*?)(?:#L?(\d+)|:(\d+))?$/i);if(!r)return null;let i=(r[1]??``).replace(g2,``);if(!i)return null;let a=i.split(`/`).pop()??i,o=i.includes(`/`),s=p2.has(a),c=_2(a);if(o&&!s&&!c)return null;if(!o&&!s){let e=t.aliases?.get(a);if(!e)return null;i=e}let l=r[2]??r[3],u=l?Number(l):void 0;return{path:i,line:u!==void 0&&Number.isFinite(u)&&u>0?u:void 0}}function b2(e,t={}){let n=[];h2.lastIndex=0;let r;for(;(r=h2.exec(e))!==null;){let e=r[0]??``,i=r[1]??``,a=e.indexOf(i);if(a<0)continue;let o=i+(r[2]??r[3]?e.slice(a+i.length):``),s=o.replace(g2,``),c=o.length-s.length;o=s;let l=y2(o,t);if(!l)continue;let u=r.index+a,d=u+o.length;n.push({...l,start:u,end:d,text:o}),c>0&&(h2.lastIndex-=c)}return n}var x2=12e4,S2=6e4,C2=32,w2=3e4,T2=/(^|\n)(`{3,}|~{3,})[^\n]*\n([\s\S]*?)(?:\n)?\2(?=\n|$)/g;function E2(e){let t=0,n=0,r=0;T2.lastIndex=0;let i;for(;(i=T2.exec(e))!==null;){let e=i[3]??``;t+=1,n+=e.length,r=Math.max(r,e.length)}return{codeRenderer:e.length>=x2||n>=S2||t>=C2||r>=w2?`pre`:`shiki`,codeFenceCount:t,codeChars:n}}function D2(e,t){let n=0;for(let r=t-1;r>=0&&e[r]===`\\`;r--)n++;return n%2==1}var O2=/\s/,k2=/\p{Nd}/u;function A2(e,t){let n=e.codePointAt(t);return n===void 0?void 0:String.fromCodePoint(n)}function j2(e,t){if(t<=0)return;let n=e.codePointAt(t-1),r=n!==void 0&&n>=55296&&n<=56319&&t>1?t-2:t-1,i=e.codePointAt(r);return i===void 0?void 0:String.fromCodePoint(i)}function M2(e){return e!==void 0&&O2.test(e)}function N2(e){return e!==void 0&&k2.test(e)}function P2(e){return e!==void 0&&e>=`A`&&e<=`Z`}var F2=new RegExp(String.raw`^(?:AED|AFN|ALL|AMD|ANG|AOA|ARS|AUD|AWG|AZN|BAM|BBD|BDT|BGN|BHD|BIF|BMD|BND|BOB|BRL|BSD|BTN|BWP|BYN|BZD|CAD|CDF|CHF|CLF|CLP|CNY|COP|CRC|CUC|CUP|CVE|CZK|DJF|DKK|DOP|DZD|EGP|ERN|ETB|EUR|FJD|FKP|GBP|GEL|GHS|GIP|GMD|GNF|GTQ|GYD|HKD|HNL|HRK|HTG|HUF|IDR|ILS|INR|IQD|IRR|ISK|JMD|JOD|JPY|KES|KGS|KHR|KMF|KPW|KRW|KWD|KYD|KZT|LAK|LBP|LKR|LRD|LSL|LYD|MAD|MDL|MGA|MKD|MMK|MNT|MOP|MRU|MUR|MVR|MWK|MXN|MYR|MZN|NAD|NGN|NIO|NOK|NPR|NZD|OMR|PAB|PEN|PGK|PHP|PKR|PLN|PYG|QAR|RON|RSD|RUB|RWF|SAR|SBD|SCR|SDG|SEK|SGD|SHP|SLE|SLL|SOS|SRD|SSP|STN|SVC|SYP|SZL|THB|TJS|TMT|TND|TOP|TRY|TTD|TWD|TZS|UAH|UGX|USD|UYU|UZS|VED|VES|VND|VUV|WST|XAF|XCD|XOF|XPF|YER|ZAR|ZMW|ZWL|HK|US|SG|AU|CA|NZ|NT|TW|RMB|MEX|TT|BZ|EU|UK)$`);function I2(e,t){if(!P2(e[t-1]))return!1;let n=t-1;for(;n>0&&P2(e[n-1]);)n--;return F2.test(e.slice(n,t))||N2(A2(e,t+1))?!0:t-n<=2&&!/[\p{L}\p{Nd}]/u.test(e[n-1]??``)&&!/\p{L}/u.test(A2(e,t+1)??``)}function L2(e,t){if(!P2(e[t-1]))return!1;let n=t-1;for(;n>0&&P2(e[n-1]);)n--;return F2.test(e.slice(n,t))?!0:t-n<=2&&!/[\p{L}\p{Nd}]/u.test(e[n-1]??``)}function R2(e,t){let n=e[t+1];return N2(A2(e,t+1))?!0:(n===`-`||n===`+`||n===`.`||n===`−`)&&N2(A2(e,t+2))}var z2=/^[-–—,;:~([/]$/;function B2(e,t){let n=e[t+1];if(n!==`-`&&n!==`+`&&n!==`.`||!N2(A2(e,t+2)))return!1;let r=e[t-1];return r!==void 0&&z2.test(r)}var V2=String.raw`[,;:~\-–—/\s()=*×]|and|or`;function hse(e){let t=e.replace(new RegExp(String.raw`^(?:${V2})+`,`u`),``);for(;;){let e=t.replace(new RegExp(String.raw`^\p{L}+(?:${V2})+`,`u`),``).replace(/^[\p{L}][\p{L} ]*(?=\p{Nd})/u,``);if(e===t)break;t=e}if(!/\p{Nd}/u.test(t))return!1;let n=String.raw`[-+]?[\p{Nd}][\p{Nd},.'’]*`;return new RegExp(String.raw`^${n}(?:\p{L}+)?(?:(?:${V2})+${n}(?:\p{L}+)?)*$`,`u`).test(t)}var H2=1,U2=2,W2=3,G2=-1;function gse(e){let t=e.length,n=new Uint8Array(t),r=new Int32Array(t+1).fill(G2),i=new Int32Array(t+1),a=new Int32Array(t+1),o=[],s=[];{let n=[];for(let r=0;r\`*—–“”‘’`),l=[];for(let t of e.matchAll(/\b(?:https?:\/\/|ftp:\/\/|mailto:|www\.)/gi))l.push(t.index);for(let t of e.matchAll(/\b(?:localhost|(?:\d{1,3}\.){3}\d{1,3}|[\w-]+(?:\.[\w-]+)*\.[a-zA-Z]{2,})(?=(?:\/|\?|:\d))/gi))l.push(t.index);for(let t of e.matchAll(/(?:\.{1,2})?\/[\p{L}\p{Nd}._-]+(?:\/[\p{L}\p{Nd}._-]*)*\?/gu))(t.index===0||!/[\w~/.-]/.test(e[t.index-1]??``))&&l.push(t.index);l.sort((e,t)=>e-t);let u=-1;for(let n of l){if(nn+7&&!/[\w/?#@~.+&=%-]/.test(e[r+1]??``))break}o.push([n,r]),u=r}let d=[];for(let n=0;n]/.test(s))continue;let c=G2,l=G2;for(;i`){l=i;break}if(!a&&n===`/`&&e[i+1]===`>`){l=i+1;break}if(!/\s/.test(n)){c=i;break}for(;i`){l=i;break}if(a){c=i;break}if(r===`/`&&e[i+1]===`>`){l=i+1;break}let o=/^[a-zA-Z_:][\w:.-]*/.exec(e.slice(i));if(!o){c=i;break}i+=o[0].length;let s=i;for(;s`]+/.exec(e.slice(s));if(!t){c=s;break}i=s+t[0].length}}}if(l!==G2)d.push([n,l+1]),n=l;else if(c!==G2){let t=e.indexOf(`<`,n+1);n=(t!==-1&&t`,n+2);t===-1?f=!1:(d.push([n,t+2]),n=t+1,i=!0)}else if(r===`!`){if(e[n+2]===`-`&&e[n+3]===`-`){if(p){let t=e.indexOf(`-->`,n+4);t===-1?p=!1:(d.push([n,t+3]),n=t+2,i=!0)}}else if(e.startsWith(`[CDATA[`,n+2)){if(m){let t=e.indexOf(`]]>`,n+9);t===-1?m=!1:(d.push([n,t+3]),n=t+2,i=!0)}}else if(h&&/[A-Z]/.test(e[n+2]??``)){let t=e.indexOf(`>`,n+3);t===-1?h=!1:(d.push([n,t+1]),n=t,i=!0)}}if(i)continue;if(r!==void 0&&/[a-zA-Z]/.test(r)){let r=/^[a-zA-Z][a-zA-Z0-9+.-]{1,31}:/.exec(e.slice(n+1));if(r){let i=n+1+r[0].length;for(;i`&&e[i]!==`<`&&!/\s/.test(e[i]);)i++;if(e[i]===`>`){d.push([n,i+1]),n=i;continue}}}if(r===void 0||!/[\w.!#$%&'*+/=?^`{|}~-]/.test(r))continue;let a=n+1;for(;a`&&(d.push([n,a+1]),n=a)}}d.sort((e,t)=>e[0]-t[0]);let g=[];for(let e of d){let t=g.at(-1);t&&e[0]<=t[1]?t[1]=Math.max(t[1],e[1]):g.push([e[0],e[1]])}o.push(...g);let _=e=>{let t=0;for(;t=(s[t]?.[1]??0);)t++;let n=s[t];return n!==void 0&&e>=n[0]},v=e=>{let t=0;for(;t=(g[t]?.[1]??0);)t++;let n=g[t];return n!==void 0&&e>=n[0]},y=[],b=null,x=0,S=!1;for(let n=0;n`&&(S=!1);continue}if(!(_(n)||v(n))){if(b!==null){e[n]===b&&(b=null);continue}if(y.length>0&&(e[n]===`"`||e[n]===`'`)&&n>0&&/\s/.test(e[n-1]??``))b=e[n];else if(e[n]===`[`)x++;else if(e[n]===`]`)x>0&&e[n+1]===`(`&&(y.push(n),S=e[n+2]===`<`,n++),x=Math.max(0,x-1);else if(e[n]===`(`&&y.length>0)y.push(-1);else if(e[n]===`)`&&y.length>0){let t=y.pop();if(t!==void 0&&t>=0){let r=e.slice(t+2,n);(/\s/.exec(r)===null||r.startsWith(`<`)&&/^<(?:\\[<>]|[^<>])*>$/.test(r)||/^[^\s]*\s+("([^"\\]|\\.)*"|'([^'\\]|\\.)*'|\(([^()\\]|\\.)*\))$/.test(r))&&o.push([t,n+1])}}}}o.sort((e,t)=>e[0]-t[0]);let C=[];for(let e of o){let t=C.at(-1);t&&e[0]<=t[1]?t[1]=Math.max(t[1],e[1]):C.push([e[0],e[1]])}let w=e=>{let t=0,n=C.length-1;for(;t<=n;){let r=t+n>>1,i=C[r];if(i===void 0)return!1;if(e=i[1])t=r+1;else return!0}return!1},T=new Uint8Array(t);{let n=-1,r=!1,i=!1,a=0;for(let o=0;o<=t;o++){let s=o0&&(c===`{`?a++:c===`}`&&a--)}}for(let r=0;r=0;e--)n[e]===W2&&(E=e),r[e]=E;let D=/^[\p{L}\p{Nd}\\|{([+.¬°-±×÷′-″←-⇿∀-⋿^_<>=-]$/u,O=/[^\p{L}\p{Nd}\s]$/u,k=/[^\s\u0020-\u007E\u0370-\u03FF\u{1D400}-\u{1D7FF}\p{Nd}¬°-±×÷′-″←-⇿∀-⋿]/u,A=/(?:^|\s)[a-z]{2,}/,j=(t,n)=>{let o=A2(e,t+1);if(o===void 0||!D.test(o))return!1;let s=r[t+1]??G2;if(s!==G2){let n=e.slice(t+1,s);return s-(t+1)!==((e.codePointAt(t+1)??0)>65535?2:1)&&k.test(n)||/[,;:!?]$/.test(n)||/^[a-z]{2,}$/.test(n)?!1:(i[s]??0)-(i[t+1]??0)===0&&(a[s]??0)-(a[t+1]??0)===0}return O.test(n)||k.test(n)||A.test(n)};return(o,s=-1)=>{if(e[o]!==`$`||n[o]===H2||e[o+1]===`$`||e[o-1]===`$`&&s!==o||I2(e,o)||o+1>=t||M2(A2(e,o+1)))return null;let c=r[o+1]??G2;if(c===G2||(i[c]??0)-(i[o+1]??0)>0||(a[c]??0)-(a[o+1]??0)>0)return null;let l=e.slice(o+1,c);return/^\{[A-Z_][A-Z0-9_]*(?:\}$|[:-])/.test(l)||e[c+1]===`{`&&/^\{[A-Za-z_][A-Za-z0-9_]*(?:[:-][^{}]*)?\}$/.test(l)||N2(j2(e,o))&&hse(l)||R2(e,o)&&(j(c,l)||L2(e,c)||/\s/.test(l)&&/\p{Nd}$/u.test(l)&&!/[+\-*/^=_<>|\\¬°-±×÷′-″←-⇿∀-⋿]/.test(l))||e[c+1]===`$`&&!/\p{L}/u.test(l)&&O.test(l)?null:{content:l,end:c+1}}}var _se=/^---[ \t]*(?:\r\n|\n)/,vse=/^---[ \t]*$/;function yse(e){let t=_se.exec(e);if(t===null)return{frontmatter:null,body:e};let n=t[0].length,r=n;for(;n<=e.length;){let t=e.indexOf(` `,n);t===-1&&(t=e.length);let i=e.slice(n,t);if(i.endsWith(`\r`)&&(i=i.slice(0,-1)),vse.test(i)){let i=e.slice(r,n);return i===``?{frontmatter:null,body:e}:{frontmatter:i,body:t\n]*>|[^()\s]+)\)/g,bse=/^[a-zA-Z][a-zA-Z0-9+.-]*:/,xse=/^[a-zA-Z]:(?:[\\/]|%5c)/i,Sse=/^[A-Za-z0-9._~-]$/,Cse=`pythinker-code://skill/`,q2;function J2(e){return e.replaceAll(`%`,`%25`).replaceAll(`&`,`%26`).replaceAll(`<`,`%3C`).replaceAll(`>`,`%3E`).replaceAll(/[[\]\\]/g,`\\$&`).replaceAll(` `,`%0A`).replaceAll(`\r`,`%0D`)}function wse(e){return e.replaceAll(/\\([\\[\]])/g,`$1`).replaceAll(`%26`,`&`).replaceAll(`%3C`,`<`).replaceAll(`%3E`,`>`).replaceAll(`%0A`,` diff --git a/apps/pythinker-code/dist-web/assets/index10-CgiEr33-.js b/apps/pythinker-code/dist-web/assets/index10-E02w5TzI.js similarity index 99% rename from apps/pythinker-code/dist-web/assets/index10-CgiEr33-.js rename to apps/pythinker-code/dist-web/assets/index10-E02w5TzI.js index b75604b81..4309bba4a 100644 --- a/apps/pythinker-code/dist-web/assets/index10-CgiEr33-.js +++ b/apps/pythinker-code/dist-web/assets/index10-E02w5TzI.js @@ -1,2 +1,2 @@ -import{A as e,G as t,I as n,J as r,N as i,O as a,S as o,U as s,_ as c,c as ee,f as te,g as ne,h as l,j as re,lt as ie,m as u,n as ae,nt as d,ot as f,q as oe,st as p,u as se,ut as m,v as h,w as ce,z as le}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{P as ue,Q as de,R as fe,_ as pe,a as me,d as he,h as ge,i as _e,l as ve,n as ye,p as be,v as xe,x as Se,z as g}from"./index-Ud6NtwuQ.js";var _=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),Ce=[`data-markstream-mode`],we={key:0,class:`infographic-block-header flex justify-between items-center border-b`},Te={key:0},Ee={key:1,class:`flex items-center gap-x-2 overflow-hidden`},De=[`innerHTML`],Oe={key:2},ke={key:3,class:`infographic-mode-toggle flex items-center gap-0.5`},Ae=[`disabled`],je={class:`flex items-center gap-x-1`},Me={class:`flex items-center gap-x-1`},Ne={key:4},Pe={key:5,class:`infographic-header-actions flex items-center`},Fe=[`aria-pressed`],Ie={key:0,xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},Le={key:1,xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},Re=[`disabled`],ze=[`disabled`],Be={key:0,xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},Ve={key:1,xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},He={key:0,class:`infographic-source`},Ue={class:`infographic-source-code text-sm font-mono whitespace-pre-wrap`},We={key:1,class:`relative`},Ge={key:0,class:`absolute top-2 right-2 z-10 rounded-lg`},Ke={class:`flex items-center gap-2 backdrop-blur rounded-lg`},qe={key:0,class:`infographic-pending-source text-sm font-mono whitespace-pre-wrap`},Je={class:`dialog-panel infographic-modal-panel relative w-full h-full max-w-full max-h-full rounded overflow-hidden`},Ye={class:`absolute top-6 right-6 z-50 flex items-center gap-2`},v=`infographic-action-btn p-[var(--ms-action-btn-padding)] rounded`,y=pe(ce({__name:`InfographicBlockNode`,props:{node:{},maxHeight:{default:void 0},estimatedPreviewHeightPx:{},loading:{type:Boolean,default:!0},isDark:{type:Boolean},showHeader:{type:Boolean,default:!0},showModeToggle:{type:Boolean,default:!0},showCopyButton:{type:Boolean,default:!0},showCollapseButton:{type:Boolean,default:!0},showExportButton:{type:Boolean,default:!0},showFullscreenButton:{type:Boolean,default:!0},showZoomControls:{type:Boolean,default:!0}},emits:[`copy`,`export`,`openModal`],setup(ce,{emit:pe}){let y=ce,{t:b}=me(),Xe=be(),Ze=Se(),Qe=xe(),x=d(!1),S=d(!1),C=d(),w=d(),T=d(!0),$e=d(!1),E=d(!1),D=d(),O=d(null),k=d(!1),A=d(!1),j=d(null),M=d(typeof window>`u`||!Qe.value),et=s(),N=a(de,null),P=``,tt=u(()=>he(y,et));typeof window<`u`&&t([()=>C.value,Qe],([e,t])=>{var n;if((n=j.value)==null||n.destroy(),j.value=null,!t||M.value)return void(M.value=!0);if(!e)return void(M.value=!1);let r=Ze?.value.heavyBlockMargin??Ze?.value.rootMargin??`160px`,i=Xe(e,{rootMargin:r,allowIdle:!1});j.value=i,M.value=i.isVisible.value,i.whenVisible.then(()=>{M.value=!0})},{immediate:!0});let F=u(()=>y.node.code),nt=u(()=>function(e){return y.maxHeight===`none`?fe(e,void 0,null):fe(e,void 0,g(y.maxHeight))}(g(y.estimatedPreviewHeightPx)??ue(F.value))),rt=d(`${nt.value}px`),it=u(()=>g(y.estimatedPreviewHeightPx)!=null);function at(){if(!w.value||it.value)return;let e=w.value.scrollHeight;if(e>0){let t=g(function(e){if(y.maxHeight===`none`)return`${e}px`;if(y.maxHeight!=null){let t=Number.parseFloat(String(y.maxHeight));if(Number.isFinite(t))return`${Math.min(e,t)}px`}let t=w.value;if(t){let n=getComputedStyle(t).getPropertyValue(`--ms-size-code-max-height`).trim(),r=Number.parseFloat(n);if(Number.isFinite(r))return`${Math.min(e,r)}px`}return`${Math.min(e,500)}px`}(e))??e;rt.value=`${Math.max(t,nt.value)}px`}}let I=d(1),L=d(0),R=d(0),z=d(!1),B=d({x:0,y:0}),ot=u(()=>F.value);function st(e){return!e||e.disabled}function V(e,t,n=`top`){if(st(e.currentTarget))return;let r=e,i=r?.clientX!=null&&r?.clientY!=null?{x:r.clientX,y:r.clientY}:void 0;ge(e.currentTarget,t,n,!1,i,y.isDark)}function H(){ye()}function ct(e){if(st(e.currentTarget))return;let t=x.value?b(`common.copied`)||`Copied`:b(`common.copy`)||`Copy`,n=e,r=n?.clientX!=null&&n?.clientY!=null?{x:n.clientX,y:n.clientY}:void 0;ge(e.currentTarget,t,`top`,!1,r,y.isDark)}function lt(){return _(this,null,function*(){try{let e=F.value;typeof navigator<`u`&&navigator.clipboard&&typeof navigator.clipboard.writeText==`function`&&(yield navigator.clipboard.writeText(e)),x.value=!0,setTimeout(()=>{x.value=!1},1e3)}catch(e){console.error(`Failed to copy:`,e)}})}function ut(e){(e!==`preview`||ve())&&($e.value=!0,T.value=e===`source`)}function dt(){let e=w.value?.querySelector(`svg`);e?function(e){_(this,null,function*(){try{let t=new XMLSerializer().serializeToString(e),n=new Blob([t],{type:`image/svg+xml;charset=utf-8`}),r=URL.createObjectURL(n);if(typeof document<`u`){let e=document.createElement(`a`);e.href=r,e.download=`infographic-${Date.now()}.svg`;try{document.body.appendChild(e),e.click(),document.body.removeChild(e)}catch{}URL.revokeObjectURL(r)}}catch(e){console.error(`Failed to export SVG:`,e)}})}(e):console.error(`SVG element not found`)}function ft(e){e.key===`Escape`&&E.value&&pt()}function pt(){if(E.value=!1,D.value&&(D.value.innerHTML=``),O.value=null,typeof document<`u`)try{document.body.style.overflow=``}catch{}if(typeof window<`u`)try{window.removeEventListener(`keydown`,ft)}catch{}}function mt(){(function(){if(E.value=!0,typeof document<`u`)try{document.body.style.overflow=`hidden`}catch{}if(typeof window<`u`)try{window.addEventListener(`keydown`,ft)}catch{}e(()=>{if(w.value&&D.value){D.value.innerHTML=``;let e=document.createElement(`div`);e.style.transition=`transform 0.1s ease`,e.style.transformOrigin=`center center`,e.style.width=`100%`,e.style.height=`100%`,e.style.display=`flex`,e.style.alignItems=`center`,e.style.justifyContent=`center`;let t=w.value.cloneNode(!0);t.classList.add(`fullscreen`),t.style.height=`auto`,e.appendChild(t),D.value.appendChild(e),O.value=e,e.style.transform=`translate(${L.value}px, ${R.value}px) scale(${I.value})`}})})()}function ht(){I.value<3&&(I.value+=.1)}function gt(){I.value>.5&&(I.value-=.1)}function _t(){I.value=1,L.value=0,R.value=0}function U(e){z.value=!0,e instanceof MouseEvent?B.value={x:e.clientX-L.value,y:e.clientY-R.value}:B.value={x:e.touches[0].clientX-L.value,y:e.touches[0].clientY-R.value}}function W(e){if(!z.value)return;let t,n;e instanceof MouseEvent?(t=e.clientX,n=e.clientY):(t=e.touches[0].clientX,n=e.touches[0].clientY),L.value=t-B.value.x,R.value=n-B.value.y}function G(){z.value=!1}let K=null,vt=!1,q=!1,J=!1,Y=``,X=!1,yt=0;function Z(e){return!X&&e===yt}function bt(t=!1){return _(this,null,function*(){var n,r;if(X||!M.value||!w.value)return;if(vt)return q=!0,void(J||=t);let i=ot.value;if(!t&&i===Y&&k.value)return;let a=!1===y.loading,o=++yt;vt=!0,function(){let e=tt.value;e&&P!==e&&(P&&N?.markSettled(P),P=e,N?.markPending(e))}();let s=w.value.innerHTML,c=k.value,ee=A.value;A.value=!1;try{let t=yield _e();if(!Z(o))return;if(!t)return void console.warn(`Infographic library failed to load.`);let a=w.value;if(!a)return;K&&=((n=K.destroy)==null||n.call(K),null),a.innerHTML=``,K=new t({container:a,width:`100%`,height:`100%`});let s=``;if((r=K.on)==null||r.call(K,`error`,e=>{s=(Array.isArray(e)?e:[e]).map(e=>e instanceof Error?e.message:typeof e==`string`?e:String(e&&typeof e==`object`&&`message`in e?e.message??``:e??``)).filter(Boolean).join(`; `)}),K.render(F.value),s)throw Error(s);if(!a.childNodes.length)throw Error(`Infographic render returned empty output.`);k.value=!0,A.value=!1,Y=i,e(()=>{Z(o)&&at()})}catch(e){if(!Z(o))return;a&&!1===y.loading&&i===ot.value?(console.error(`Failed to render infographic:`,e),k.value=!1,A.value=!0,Y=``,w.value&&(w.value.innerHTML=`
Failed to render infographic: ${e instanceof Error?e.message:`Unknown error`}
`)):(k.value=c,A.value=ee,c&&w.value&&(w.value.innerHTML=s))}finally{if(vt=!1,Z(o))if(q){let t=J;q=!1,J=!1,e(()=>{bt(t)})}else(function(){_(this,null,function*(){let t=P;t&&(P=``,yield e(),function(e=tt.value){e&&C.value&&N?.reportHeight(e,C.value.offsetHeight)}(t),N?.markSettled(t))})})()}})}function Q(t=!1){X||!M.value||T.value||S.value||e(()=>{X||bt(t)})}t(()=>F.value,()=>{Q(!0)}),t(()=>y.loading,(e,t)=>{t&&!e&&Q(!0)}),t(()=>T.value,e=>{e||Q(!0)}),t(()=>S.value,e=>{e||Q()}),t(()=>y.maxHeight,()=>{e(()=>{at()})}),t([()=>y.estimatedPreviewHeightPx,()=>F.value],()=>{k.value||T.value||(rt.value=`${nt.value}px`)}),t(()=>M.value,e=>{!e||T.value||S.value||Q()}),i(()=>{!$e.value&&ve()&&(T.value=!1),Q()}),re(()=>{var e,t;if(X=!0,yt+=1,q=!1,J=!1,(e=j.value)==null||e.destroy(),j.value=null,function(){let e=P;e&&(P=``,N?.markSettled(e))}(),K&&=((t=K.destroy)==null||t.call(K),null),Y=``,typeof window<`u`)try{window.removeEventListener(`keydown`,ft)}catch{}});let xt=u(()=>!ve()),$=u(()=>T.value||S.value),St=u(()=>T.value?`fallback`:A.value?`error`:k.value?`preview`:`pending`),Ct=u(()=>({transform:`translate(${L.value}px, ${R.value}px) scale(${I.value})`}));return t(Ct,e=>{E.value&&O.value&&(O.value.style.transform=e.transform)}),(e,t)=>(n(),h(`div`,{ref_key:`viewportTarget`,ref:C,class:p([`infographic-block-container rounded-lg border overflow-hidden`,[{"is-rendering":y.loading,dark:y.isDark}]]),"data-markstream-infographic":`1`,"data-markstream-mode":St.value},[y.showHeader?(n(),h(`div`,we,[e.$slots[`header-left`]?(n(),h(`div`,Te,[le(e.$slots,`header-left`,{},void 0,!0)])):(n(),h(`div`,Ee,[l(`span`,{class:`icon-slot action-icon shrink-0`,innerHTML:f(` +import{A as e,G as t,I as n,J as r,N as i,O as a,S as o,U as s,_ as c,c as ee,f as te,g as ne,h as l,j as re,lt as ie,m as u,n as ae,nt as d,ot as f,q as oe,st as p,u as se,ut as m,v as h,w as ce,z as le}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{P as ue,Q as de,R as fe,_ as pe,a as me,d as he,h as ge,i as _e,l as ve,n as ye,p as be,v as xe,x as Se,z as g}from"./index-BWCY3EFX.js";var _=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),Ce=[`data-markstream-mode`],we={key:0,class:`infographic-block-header flex justify-between items-center border-b`},Te={key:0},Ee={key:1,class:`flex items-center gap-x-2 overflow-hidden`},De=[`innerHTML`],Oe={key:2},ke={key:3,class:`infographic-mode-toggle flex items-center gap-0.5`},Ae=[`disabled`],je={class:`flex items-center gap-x-1`},Me={class:`flex items-center gap-x-1`},Ne={key:4},Pe={key:5,class:`infographic-header-actions flex items-center`},Fe=[`aria-pressed`],Ie={key:0,xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},Le={key:1,xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},Re=[`disabled`],ze=[`disabled`],Be={key:0,xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},Ve={key:1,xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},He={key:0,class:`infographic-source`},Ue={class:`infographic-source-code text-sm font-mono whitespace-pre-wrap`},We={key:1,class:`relative`},Ge={key:0,class:`absolute top-2 right-2 z-10 rounded-lg`},Ke={class:`flex items-center gap-2 backdrop-blur rounded-lg`},qe={key:0,class:`infographic-pending-source text-sm font-mono whitespace-pre-wrap`},Je={class:`dialog-panel infographic-modal-panel relative w-full h-full max-w-full max-h-full rounded overflow-hidden`},Ye={class:`absolute top-6 right-6 z-50 flex items-center gap-2`},v=`infographic-action-btn p-[var(--ms-action-btn-padding)] rounded`,y=pe(ce({__name:`InfographicBlockNode`,props:{node:{},maxHeight:{default:void 0},estimatedPreviewHeightPx:{},loading:{type:Boolean,default:!0},isDark:{type:Boolean},showHeader:{type:Boolean,default:!0},showModeToggle:{type:Boolean,default:!0},showCopyButton:{type:Boolean,default:!0},showCollapseButton:{type:Boolean,default:!0},showExportButton:{type:Boolean,default:!0},showFullscreenButton:{type:Boolean,default:!0},showZoomControls:{type:Boolean,default:!0}},emits:[`copy`,`export`,`openModal`],setup(ce,{emit:pe}){let y=ce,{t:b}=me(),Xe=be(),Ze=Se(),Qe=xe(),x=d(!1),S=d(!1),C=d(),w=d(),T=d(!0),$e=d(!1),E=d(!1),D=d(),O=d(null),k=d(!1),A=d(!1),j=d(null),M=d(typeof window>`u`||!Qe.value),et=s(),N=a(de,null),P=``,tt=u(()=>he(y,et));typeof window<`u`&&t([()=>C.value,Qe],([e,t])=>{var n;if((n=j.value)==null||n.destroy(),j.value=null,!t||M.value)return void(M.value=!0);if(!e)return void(M.value=!1);let r=Ze?.value.heavyBlockMargin??Ze?.value.rootMargin??`160px`,i=Xe(e,{rootMargin:r,allowIdle:!1});j.value=i,M.value=i.isVisible.value,i.whenVisible.then(()=>{M.value=!0})},{immediate:!0});let F=u(()=>y.node.code),nt=u(()=>function(e){return y.maxHeight===`none`?fe(e,void 0,null):fe(e,void 0,g(y.maxHeight))}(g(y.estimatedPreviewHeightPx)??ue(F.value))),rt=d(`${nt.value}px`),it=u(()=>g(y.estimatedPreviewHeightPx)!=null);function at(){if(!w.value||it.value)return;let e=w.value.scrollHeight;if(e>0){let t=g(function(e){if(y.maxHeight===`none`)return`${e}px`;if(y.maxHeight!=null){let t=Number.parseFloat(String(y.maxHeight));if(Number.isFinite(t))return`${Math.min(e,t)}px`}let t=w.value;if(t){let n=getComputedStyle(t).getPropertyValue(`--ms-size-code-max-height`).trim(),r=Number.parseFloat(n);if(Number.isFinite(r))return`${Math.min(e,r)}px`}return`${Math.min(e,500)}px`}(e))??e;rt.value=`${Math.max(t,nt.value)}px`}}let I=d(1),L=d(0),R=d(0),z=d(!1),B=d({x:0,y:0}),ot=u(()=>F.value);function st(e){return!e||e.disabled}function V(e,t,n=`top`){if(st(e.currentTarget))return;let r=e,i=r?.clientX!=null&&r?.clientY!=null?{x:r.clientX,y:r.clientY}:void 0;ge(e.currentTarget,t,n,!1,i,y.isDark)}function H(){ye()}function ct(e){if(st(e.currentTarget))return;let t=x.value?b(`common.copied`)||`Copied`:b(`common.copy`)||`Copy`,n=e,r=n?.clientX!=null&&n?.clientY!=null?{x:n.clientX,y:n.clientY}:void 0;ge(e.currentTarget,t,`top`,!1,r,y.isDark)}function lt(){return _(this,null,function*(){try{let e=F.value;typeof navigator<`u`&&navigator.clipboard&&typeof navigator.clipboard.writeText==`function`&&(yield navigator.clipboard.writeText(e)),x.value=!0,setTimeout(()=>{x.value=!1},1e3)}catch(e){console.error(`Failed to copy:`,e)}})}function ut(e){(e!==`preview`||ve())&&($e.value=!0,T.value=e===`source`)}function dt(){let e=w.value?.querySelector(`svg`);e?function(e){_(this,null,function*(){try{let t=new XMLSerializer().serializeToString(e),n=new Blob([t],{type:`image/svg+xml;charset=utf-8`}),r=URL.createObjectURL(n);if(typeof document<`u`){let e=document.createElement(`a`);e.href=r,e.download=`infographic-${Date.now()}.svg`;try{document.body.appendChild(e),e.click(),document.body.removeChild(e)}catch{}URL.revokeObjectURL(r)}}catch(e){console.error(`Failed to export SVG:`,e)}})}(e):console.error(`SVG element not found`)}function ft(e){e.key===`Escape`&&E.value&&pt()}function pt(){if(E.value=!1,D.value&&(D.value.innerHTML=``),O.value=null,typeof document<`u`)try{document.body.style.overflow=``}catch{}if(typeof window<`u`)try{window.removeEventListener(`keydown`,ft)}catch{}}function mt(){(function(){if(E.value=!0,typeof document<`u`)try{document.body.style.overflow=`hidden`}catch{}if(typeof window<`u`)try{window.addEventListener(`keydown`,ft)}catch{}e(()=>{if(w.value&&D.value){D.value.innerHTML=``;let e=document.createElement(`div`);e.style.transition=`transform 0.1s ease`,e.style.transformOrigin=`center center`,e.style.width=`100%`,e.style.height=`100%`,e.style.display=`flex`,e.style.alignItems=`center`,e.style.justifyContent=`center`;let t=w.value.cloneNode(!0);t.classList.add(`fullscreen`),t.style.height=`auto`,e.appendChild(t),D.value.appendChild(e),O.value=e,e.style.transform=`translate(${L.value}px, ${R.value}px) scale(${I.value})`}})})()}function ht(){I.value<3&&(I.value+=.1)}function gt(){I.value>.5&&(I.value-=.1)}function _t(){I.value=1,L.value=0,R.value=0}function U(e){z.value=!0,e instanceof MouseEvent?B.value={x:e.clientX-L.value,y:e.clientY-R.value}:B.value={x:e.touches[0].clientX-L.value,y:e.touches[0].clientY-R.value}}function W(e){if(!z.value)return;let t,n;e instanceof MouseEvent?(t=e.clientX,n=e.clientY):(t=e.touches[0].clientX,n=e.touches[0].clientY),L.value=t-B.value.x,R.value=n-B.value.y}function G(){z.value=!1}let K=null,vt=!1,q=!1,J=!1,Y=``,X=!1,yt=0;function Z(e){return!X&&e===yt}function bt(t=!1){return _(this,null,function*(){var n,r;if(X||!M.value||!w.value)return;if(vt)return q=!0,void(J||=t);let i=ot.value;if(!t&&i===Y&&k.value)return;let a=!1===y.loading,o=++yt;vt=!0,function(){let e=tt.value;e&&P!==e&&(P&&N?.markSettled(P),P=e,N?.markPending(e))}();let s=w.value.innerHTML,c=k.value,ee=A.value;A.value=!1;try{let t=yield _e();if(!Z(o))return;if(!t)return void console.warn(`Infographic library failed to load.`);let a=w.value;if(!a)return;K&&=((n=K.destroy)==null||n.call(K),null),a.innerHTML=``,K=new t({container:a,width:`100%`,height:`100%`});let s=``;if((r=K.on)==null||r.call(K,`error`,e=>{s=(Array.isArray(e)?e:[e]).map(e=>e instanceof Error?e.message:typeof e==`string`?e:String(e&&typeof e==`object`&&`message`in e?e.message??``:e??``)).filter(Boolean).join(`; `)}),K.render(F.value),s)throw Error(s);if(!a.childNodes.length)throw Error(`Infographic render returned empty output.`);k.value=!0,A.value=!1,Y=i,e(()=>{Z(o)&&at()})}catch(e){if(!Z(o))return;a&&!1===y.loading&&i===ot.value?(console.error(`Failed to render infographic:`,e),k.value=!1,A.value=!0,Y=``,w.value&&(w.value.innerHTML=`
Failed to render infographic: ${e instanceof Error?e.message:`Unknown error`}
`)):(k.value=c,A.value=ee,c&&w.value&&(w.value.innerHTML=s))}finally{if(vt=!1,Z(o))if(q){let t=J;q=!1,J=!1,e(()=>{bt(t)})}else(function(){_(this,null,function*(){let t=P;t&&(P=``,yield e(),function(e=tt.value){e&&C.value&&N?.reportHeight(e,C.value.offsetHeight)}(t),N?.markSettled(t))})})()}})}function Q(t=!1){X||!M.value||T.value||S.value||e(()=>{X||bt(t)})}t(()=>F.value,()=>{Q(!0)}),t(()=>y.loading,(e,t)=>{t&&!e&&Q(!0)}),t(()=>T.value,e=>{e||Q(!0)}),t(()=>S.value,e=>{e||Q()}),t(()=>y.maxHeight,()=>{e(()=>{at()})}),t([()=>y.estimatedPreviewHeightPx,()=>F.value],()=>{k.value||T.value||(rt.value=`${nt.value}px`)}),t(()=>M.value,e=>{!e||T.value||S.value||Q()}),i(()=>{!$e.value&&ve()&&(T.value=!1),Q()}),re(()=>{var e,t;if(X=!0,yt+=1,q=!1,J=!1,(e=j.value)==null||e.destroy(),j.value=null,function(){let e=P;e&&(P=``,N?.markSettled(e))}(),K&&=((t=K.destroy)==null||t.call(K),null),Y=``,typeof window<`u`)try{window.removeEventListener(`keydown`,ft)}catch{}});let xt=u(()=>!ve()),$=u(()=>T.value||S.value),St=u(()=>T.value?`fallback`:A.value?`error`:k.value?`preview`:`pending`),Ct=u(()=>({transform:`translate(${L.value}px, ${R.value}px) scale(${I.value})`}));return t(Ct,e=>{E.value&&O.value&&(O.value.style.transform=e.transform)}),(e,t)=>(n(),h(`div`,{ref_key:`viewportTarget`,ref:C,class:p([`infographic-block-container rounded-lg border overflow-hidden`,[{"is-rendering":y.loading,dark:y.isDark}]]),"data-markstream-infographic":`1`,"data-markstream-mode":St.value},[y.showHeader?(n(),h(`div`,we,[e.$slots[`header-left`]?(n(),h(`div`,Te,[le(e.$slots,`header-left`,{},void 0,!0)])):(n(),h(`div`,Ee,[l(`span`,{class:`icon-slot action-icon shrink-0`,innerHTML:f(` `)},null,8,De),t[21]||=l(`span`,{class:`infographic-label font-medium font-mono truncate`},`Infographic`,-1)])),e.$slots[`header-center`]?(n(),h(`div`,Oe,[le(e.$slots,`header-center`,{},void 0,!0)])):y.showModeToggle?(n(),h(`div`,ke,[l(`button`,{class:p([`infographic-mode-btn px-2 py-0.5 rounded transition-colors`,[T.value?``:`is-active`,xt.value?`opacity-50 cursor-not-allowed`:``]]),disabled:xt.value,onClick:t[0]||=()=>ut(`preview`),onMouseenter:t[1]||=e=>V(e,f(b)(`common.preview`)||`Preview`),onFocus:t[2]||=e=>V(e,f(b)(`common.preview`)||`Preview`),onMouseleave:H,onBlur:H},[l(`div`,je,[t[22]||=l(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[l(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[l(`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 19.876 0a1 1 0 0 1 0 .696a10.75 10.75 0 0 1-19.876 0`}),l(`circle`,{cx:`12`,cy:`12`,r:`3`})])],-1),l(`span`,null,m(f(b)(`common.preview`)||`Preview`),1)])],42,Ae),l(`button`,{class:p([`infographic-mode-btn px-2 py-0.5 rounded transition-colors`,[T.value?`is-active`:``]]),onClick:t[3]||=()=>ut(`source`),onMouseenter:t[4]||=e=>V(e,f(b)(`common.source`)||`Source`),onFocus:t[5]||=e=>V(e,f(b)(`common.source`)||`Source`),onMouseleave:H,onBlur:H},[l(`div`,Me,[t[23]||=l(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[l(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m16 18l6-6l-6-6M8 6l-6 6l6 6`})],-1),l(`span`,null,m(f(b)(`common.source`)||`Source`),1)])],34)])):c(``,!0),e.$slots[`header-right`]?(n(),h(`div`,Ne,[le(e.$slots,`header-right`,{},void 0,!0)])):(n(),h(`div`,Pe,[y.showCollapseButton?(n(),h(`button`,{key:0,class:p(v),"aria-pressed":S.value,onClick:t[6]||=e=>S.value=!S.value,onMouseenter:t[7]||=e=>V(e,S.value?f(b)(`common.expand`)||`Expand`:f(b)(`common.collapse`)||`Collapse`),onFocus:t[8]||=e=>V(e,S.value?f(b)(`common.expand`)||`Expand`:f(b)(`common.collapse`)||`Collapse`),onMouseleave:H,onBlur:H},[(n(),h(`svg`,{style:ie({rotate:S.value?`0deg`:`90deg`}),xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[...t[24]||=[l(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m9 18l6-6l-6-6`},null,-1)]],4))],40,Fe)):c(``,!0),y.showCopyButton?(n(),h(`button`,{key:1,class:p(v),onClick:lt,onMouseenter:t[9]||=e=>ct(e),onFocus:t[10]||=e=>ct(e),onMouseleave:H,onBlur:H},[x.value?(n(),h(`svg`,Le,[...t[26]||=[l(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M20 6L9 17l-5-5`},null,-1)]])):(n(),h(`svg`,Ie,[...t[25]||=[l(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[l(`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}),l(`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`})],-1)]]))],32)):c(``,!0),y.showExportButton?(n(),h(`button`,{key:2,class:p(`${v} ${$.value?`opacity-50 cursor-not-allowed`:``}`),disabled:$.value,onClick:dt,onMouseenter:t[11]||=e=>V(e,f(b)(`common.export`)||`Export`),onFocus:t[12]||=e=>V(e,f(b)(`common.export`)||`Export`),onMouseleave:H,onBlur:H},[...t[27]||=[l(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[l(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[l(`path`,{d:`M12 15V3m9 12v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}),l(`path`,{d:`m7 10l5 5l5-5`})])],-1)]],42,Re)):c(``,!0),y.showFullscreenButton?(n(),h(`button`,{key:3,class:p(`${v} ${$.value?`opacity-50 cursor-not-allowed`:``}`),disabled:$.value,onClick:mt,onMouseenter:t[13]||=e=>V(e,E.value?f(b)(`common.minimize`)||`Minimize`:f(b)(`common.open`)||`Open`),onFocus:t[14]||=e=>V(e,E.value?f(b)(`common.minimize`)||`Minimize`:f(b)(`common.open`)||`Open`),onMouseleave:H,onBlur:H},[E.value?(n(),h(`svg`,Ve,[...t[29]||=[l(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m14 10l7-7m-1 7h-6V4M3 21l7-7m-6 0h6v6`},null,-1)]])):(n(),h(`svg`,Be,[...t[28]||=[l(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M15 3h6v6m0-6l-7 7M3 21l7-7m-1 7H3v-6`},null,-1)]]))],42,ze)):c(``,!0)]))])):c(``,!0),r(l(`div`,null,[T.value?(n(),h(`div`,He,[l(`pre`,Ue,m(F.value),1)])):(n(),h(`div`,We,[y.showZoomControls?(n(),h(`div`,Ge,[l(`div`,Ke,[l(`button`,{class:`infographic-action-btn p-[var(--ms-action-btn-padding)] rounded`,onClick:ht,onMouseenter:t[15]||=e=>V(e,f(b)(`common.zoomIn`)||`Zoom in`),onFocus:t[16]||=e=>V(e,f(b)(`common.zoomIn`)||`Zoom in`),onMouseleave:H,onBlur:H},[...t[30]||=[l(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[l(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[l(`circle`,{cx:`11`,cy:`11`,r:`8`}),l(`path`,{d:`m21 21l-4.35-4.35M11 8v6m-3-3h6`})])],-1)]],32),l(`button`,{class:`infographic-action-btn p-[var(--ms-action-btn-padding)] rounded`,onClick:gt,onMouseenter:t[17]||=e=>V(e,f(b)(`common.zoomOut`)||`Zoom out`),onFocus:t[18]||=e=>V(e,f(b)(`common.zoomOut`)||`Zoom out`),onMouseleave:H,onBlur:H},[...t[31]||=[l(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[l(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[l(`circle`,{cx:`11`,cy:`11`,r:`8`}),l(`path`,{d:`m21 21l-4.35-4.35M8 11h6`})])],-1)]],32),l(`button`,{class:`infographic-action-btn p-[var(--ms-action-btn-padding)] rounded`,onClick:_t,onMouseenter:t[19]||=e=>V(e,f(b)(`common.resetZoom`)||`Reset zoom`),onFocus:t[20]||=e=>V(e,f(b)(`common.resetZoom`)||`Reset zoom`),onMouseleave:H,onBlur:H},m(Math.round(100*I.value))+`% `,33)])])):c(``,!0),l(`div`,{class:`infographic-preview relative transition-all overflow-hidden block`,style:ie({height:rt.value}),onMousedown:U,onMousemove:W,onMouseup:G,onMouseleave:G,onTouchstartPassive:U,onTouchmovePassive:W,onTouchendPassive:G},[k.value||A.value?c(``,!0):(n(),h(`pre`,qe,m(F.value),1)),l(`div`,{class:p([`absolute inset-0 cursor-grab`,{"cursor-grabbing":z.value}]),style:ie(Ct.value)},[l(`div`,{ref_key:`infographicContainer`,ref:w,class:`w-full text-center flex items-center justify-center min-h-full`},null,512)],6)],36)]))],512),[[ee,!S.value]]),(n(),ne(te,{to:`body`},[l(`div`,{class:p([`markstream-vue`,{dark:y.isDark}])},[o(ae,{name:`infographic-dialog`,appear:``},{default:oe(()=>[E.value?(n(),h(`div`,{key:0,class:`infographic-modal-overlay fixed inset-0 z-50 flex items-center justify-center p-4`,onClick:se(pt,[`self`])},[l(`div`,Je,[l(`div`,Ye,[l(`button`,{class:`infographic-action-btn p-[var(--ms-action-btn-padding)] rounded`,onClick:ht},[...t[32]||=[l(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[l(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[l(`circle`,{cx:`11`,cy:`11`,r:`8`}),l(`path`,{d:`m21 21l-4.35-4.35M11 8v6m-3-3h6`})])],-1)]]),l(`button`,{class:`infographic-action-btn p-[var(--ms-action-btn-padding)] rounded`,onClick:gt},[...t[33]||=[l(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[l(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[l(`circle`,{cx:`11`,cy:`11`,r:`8`}),l(`path`,{d:`m21 21l-4.35-4.35M8 11h6`})])],-1)]]),l(`button`,{class:`infographic-action-btn p-[var(--ms-action-btn-padding)] rounded`,onClick:_t},m(Math.round(100*I.value))+`% `,1),l(`button`,{class:`infographic-action-btn inline-flex items-center justify-center p-[var(--ms-action-btn-padding)] rounded`,onClick:pt},[...t[34]||=[l(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[l(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M18 6L6 18M6 6l12 12`})],-1)]])]),l(`div`,{ref_key:`modalContent`,ref:D,class:p([`w-full h-full flex items-center justify-center p-4 overflow-hidden`,{"cursor-grab":!z.value,"cursor-grabbing":z.value}]),onMousedown:U,onMousemove:W,onMouseup:G,onMouseleave:G,onTouchstartPassive:U,onTouchmovePassive:W,onTouchendPassive:G},null,34)])])):c(``,!0)]),_:1})],2)]))],10,Ce))}}),[[`__scopeId`,`data-v-de34ec4b`]]);y.install=e=>{e.component(y.__name,y)};export{y as default}; \ No newline at end of file diff --git a/apps/pythinker-code/dist-web/assets/index11-Cc6dLv_C.js b/apps/pythinker-code/dist-web/assets/index11-D1N3NjXP.js similarity index 99% rename from apps/pythinker-code/dist-web/assets/index11-Cc6dLv_C.js rename to apps/pythinker-code/dist-web/assets/index11-D1N3NjXP.js index 5924f392a..a6edf4899 100644 --- a/apps/pythinker-code/dist-web/assets/index11-Cc6dLv_C.js +++ b/apps/pythinker-code/dist-web/assets/index11-D1N3NjXP.js @@ -1,4 +1,4 @@ -import{A as e,G as t,H as n,I as r,J as i,N as a,O as o,P as s,S as c,U as l,_ as u,c as ee,f as te,g as ne,h as d,j as re,k as ie,lt as ae,m as f,n as oe,nt as p,ot as m,q as se,st as h,u as ce,ut as le,v as g,w as ue,z as de}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{t as fe}from"./safeRaf-BDp3SJMs.js";import{F as pe,I as me,L as he,M as ge,N as _e,Q as ve,_ as ye,a as be,d as xe,h as Se,j as Ce,n as we,p as Te,tt as Ee,v as De,x as Oe,z as ke}from"./index-Ud6NtwuQ.js";function _(e,t){return/(?:&#\d+|#\d+|&[a-z]+)$/i.test(e.slice(Math.max(0,t-12),t))}function Ae(e){return e.includes(`->`)||e.includes(`-->`)||e.includes(`->>`)||e.includes(`-->>`)||e.includes(`-x`)||e.includes(`--x`)||e.includes(`-)`)||e.includes(`--)`)||e.includes(`-+`)||e.includes(`--+`)}function je(e){let t=e.trimStart();return/^(?:accDescr|accTitle|activate|actor|and|alt|autonumber|box|break|critical|create\s+(?:actor|participant)|deactivate|destroy|else|end|link|links|loop|Note|opt|option|par|participant|properties|rect)\b/i.test(t)||function(e){let t=e.split(`;`,1)[0],n=t.indexOf(`:`);return n>0&&Ae(t.slice(0,n))}(t)}function v(e){if(!e.includes(`;`))return e;let t=e.indexOf(`:`);if(t===-1||!function(e,t){let n=e.slice(0,t);return/^\s*Note\b/i.test(n)||Ae(n)}(e,t))return e;let n=e.slice(0,t+1),r=e.slice(t+1),i=function(e){let t=``,n=!1;for(let r=0;rt in e?Ne(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ve=(e,t)=>{for(var n in t||={})Le.call(t,n)&&Be(e,n,t[n]);if(Ie)for(var n of Ie(t))Re.call(t,n)&&Be(e,n,t[n]);return e},y=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),He=[`data-markstream-mode`,`data-markstream-pending`],Ue={key:0,class:`mermaid-block-header flex items-center justify-between border-b px-[var(--ms-inset-panel-x)] py-[var(--ms-inset-panel-y)]`},We={key:0},Ge={key:1,class:`flex items-center gap-x-2 overflow-hidden`},Ke=[`innerHTML`],qe={key:2},Je={key:3,class:`mermaid-mode-toggle-group flex items-center gap-0.5`},Ye={class:`flex items-center gap-x-1`},Xe={class:`flex items-center gap-x-1`},Ze={key:4},Qe={key:5,class:`mermaid-header-actions flex items-center`},$e=[`aria-pressed`],et={key:0,xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},tt={key:1,xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},nt=[`aria-label`,`disabled`],rt=[`aria-label`,`disabled`],it={key:0,xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},at={key:1,xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},ot={key:0,class:`mermaid-source-panel`},st={class:`mermaid-source-code text-sm font-mono whitespace-pre-wrap`},ct={key:1,class:`relative`},lt={key:0,class:`absolute top-2 right-2 z-10 rounded-lg`},ut={class:`flex items-center gap-2 backdrop-blur rounded-lg`},dt={class:`dialog-panel mermaid-modal-panel relative w-full h-full max-w-full max-h-full rounded overflow-hidden`},ft={class:`absolute top-6 right-6 z-50 flex items-center gap-2`},pt=`mermaid-action-btn p-[var(--ms-action-btn-padding)] rounded`,b=ye(ue({__name:`MermaidBlockNode`,props:{node:{},maxHeight:{default:void 0},estimatedPreviewHeightPx:{},loading:{type:Boolean,default:!0},isDark:{type:Boolean},workerTimeoutMs:{default:1400},parseTimeoutMs:{default:1800},renderTimeoutMs:{default:2500},fullRenderTimeoutMs:{default:4e3},renderDebounceMs:{default:300},contentStableDelayMs:{default:500},previewPollDelayMs:{default:800},previewPollMaxDelayMs:{default:4e3},previewPollMaxAttempts:{default:12},showHeader:{type:Boolean,default:!0},showModeToggle:{type:Boolean,default:!0},showCopyButton:{type:Boolean,default:!0},showExportButton:{type:Boolean,default:!0},showFullscreenButton:{type:Boolean,default:!0},showCollapseButton:{type:Boolean,default:!0},showZoomControls:{type:Boolean,default:!0},enableWheelZoom:{type:Boolean,default:!1},isStrict:{type:Boolean,default:!0},enableMermaidInteractions:{type:Boolean,default:!1},showTooltips:{type:Boolean,default:!0},onRenderError:{}},emits:[`copy`,`export`,`openModal`,`toggleMode`],setup(ue,{emit:ye}){let _=ue,Ae=ye,je={USE_PROFILES:{svg:!0},FORBID_TAGS:[`script`],FORBID_ATTR:[/^on/i],ADD_TAGS:[`style`],ADD_ATTR:[`style`],SAFE_FOR_TEMPLATES:!0},v=p(!1),Ne=p(typeof window>`u`),Ie=De(),Le=Oe(),Re=f(()=>_.isStrict?`strict`:`loose`),Be=f(()=>({startOnLoad:!1,securityLevel:Re.value,dompurifyConfig:Re.value===`strict`?je:void 0,flowchart:Re.value===`strict`?{htmlLabels:!1}:void 0}));function b(e){if(e)try{e.replaceChildren()}catch{e.innerHTML=``}}function mt(e,t,n={}){if(!e)return null;let r=function(e,t){if(!e)return null;let n=Ee(t);if(!n)return null;let r=function(e,t){let n=Array.from(e.childNodes),r=document.createElement(`div`);return r.dataset.mermaidSvgLayer=`1`,r.style.zIndex=`1`,r.appendChild(t),e.insertBefore(r,e.firstChild),n.length>0&&function(e){let t=()=>{var t;for(let n of e)(t=n.parentNode)==null||t.removeChild(n)};typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>{requestAnimationFrame(t)}):setTimeout(t,32)}(n),r}(e,n);return{svg:n.outerHTML,bindTarget:r}}(e,t);return r||n.keepPreviousOnFailure||b(e),r}let x=null;function ht(e){if(_.enableMermaidInteractions&&e?.querySelector(`svg`))try{x?.(e)}catch{}}let{t:S}=be(),C=!1,gt=0;function _t(){return y(this,null,function*(){try{let e=yield _e();return C?null:(v.value=!!e,e)}catch(e){throw C||(v.value=!1),e}finally{C||(Ne.value=!0)}})}let vt=p(!1),w=p(!1),yt=p(),T=p(),E=p(),D=p(),bt=p(null),xt=Te(),St=p(null),Ct=p(typeof window>`u`||!Ie.value),wt=l(),Tt=o(ve,null),O=``,k=0,Et=0,Dt=f(()=>xe(_,wt));function Ot(){let e=Dt.value;e&&(O&&O!==e&&(Tt?.markSettled(O),k=0),O=e,k+=1,Et+=1,k===1&&Tt?.markPending(e))}function kt(){return y(this,null,function*(){let t=O;if(!t||(k=Math.max(0,k-1),k>0))return;O=``;let n=++Et;yield e(),n===Et&&(function(e=Dt.value){e&&yt.value&&Tt?.reportHeight(e,yt.value.offsetHeight)}(t),Tt?.markSettled(t))})}function At(){let e=O;e&&(O=``,k=0,Et+=1,Tt?.markSettled(e))}let jt=p(),A=f(()=>_.node.code.replace(/\]::([^:])/g,`]:::$1`).replace(/:::subgraphNode$/gm,`::subgraphNode`));function Mt(e,t=A.value){let n=t,r={theme:e===`dark`?`dark`:`default`};Re.value===`strict`&&(r.flowchart={htmlLabels:!1});let i=`%%{init: ${JSON.stringify(r)}}%%\n`;return n.trim().startsWith(`%%{`)?n:i+n}function Nt(){return function(e){return pe(e,function(){return ke(T.value?getComputedStyle(T.value).getPropertyValue(`--ms-size-diagram-min-height`).trim():``)??360}(),Rn())}(ke(_.estimatedPreviewHeightPx)??he(A.value))}function Pt(){return`${Nt()}px`}let Ft=p(null);function It(){return!!E.value?.querySelector(`svg`)}function Lt(){return!1!==_.loading&&(It()||!!Ft.value)}let j=p(1),M=p(0),N=p(0),Rt=p(!1),zt=p({x:0,y:0}),P=p(!0),Bt=p(!1),F=p(!1),I=p(null),Vt=``,Ht=!1,L=``,Ut=p(0),Wt=p(!1),Gt=f(()=>Math.max(0,_.renderDebounceMs??300)),Kt=f(()=>Math.max(0,_.contentStableDelayMs??500)),qt=f(()=>Math.max(120,_.previewPollDelayMs??800)),Jt=f(()=>Math.max(qt.value,_.previewPollMaxDelayMs??4e3)),Yt=f(()=>Math.max(1,Math.trunc(_.previewPollMaxAttempts??12))),R=f(()=>!1!==_.loading),Xt=null,Zt=null,Qt=null,$t=null,en=0,tn=globalThis.requestIdleCallback??((e,t)=>setTimeout(()=>e({didTimeout:!0}),16)),nn=globalThis.cancelIdleCallback??(e=>clearTimeout(e));function z(e=gt){return!C&&e===gt}function B(){return z()&&Ct.value&&!w.value}function rn(){Qt!=null&&(globalThis.clearTimeout(Qt),Qt=null),$t!=null&&(nn($t),$t=null)}function an(){C||Qt==null&&$t==null&&(Qt=globalThis.setTimeout(()=>{Qt=null,B()&&($t=tn(()=>{$t=null,B()&&or()},{timeout:500}))},Gt.value))}function on(){Zt!=null&&(globalThis.clearTimeout(Zt),Zt=null)}function sn(e=600){if(typeof globalThis>`u`||C)return;let t=Math.max(0,e);on(),Zt=globalThis.setTimeout(()=>{if(Zt=null,!C){if(_.loading||F.value||!B())return void sn(Math.min(1200,Math.max(300,1.2*t)));an()}},t)}let V=p(Pt()),cn=p(V.value),ln=null,H=p(!1),un=p(!1),U=p({}),W=p(0),G=null,dn=null,K=p(!1),fn=f(()=>!(w.value||P.value||Ne.value&&!F.value&&!I.value&&(H.value||K.value&&(E.value?.textContent)?.trim()))),pn=p({zoom:1,translateX:0,translateY:0,containerHeight:V.value}),mn=f(()=>_.enableWheelZoom?{wheel:Xn}:{}),q=f(()=>({worker:_.workerTimeoutMs??1400,parse:_.parseTimeoutMs??1800,render:_.renderTimeoutMs??2500,fullRender:_.fullRenderTimeoutMs??4e3})),hn=null,gn=null,_n=!1,vn=qt.value,J=null,yn=0,bn=!0,xn=0;function Sn(e,t){let n=t?.timeoutMs,r=t?.signal;if(r?.aborted)return Promise.reject(new DOMException(`Aborted`,`AbortError`));let i=null,a=!1,o=null;return new Promise((t,s)=>{let c=()=>{i!=null&&clearTimeout(i),o&&r&&r.removeEventListener(`abort`,o)};n&&n>0&&(i=globalThis.setTimeout(()=>{a||(a=!0,c(),s(Error(`Operation timed out`)))},n)),r&&(o=()=>{a||(a=!0,c(),s(new DOMException(`Aborted`,`AbortError`)))},r.addEventListener(`abort`,o)),e().then(e=>{a||(a=!0,c(),t(e))}).catch(e=>{a||(a=!0,c(),s(e))})})}function Cn(e){if(typeof document>`u`||!E.value)return;if(typeof _.onRenderError==`function`&&!0===_.onRenderError(e,A.value,E.value))return K.value=!0,void $();let t=document.createElement(`div`);t.style.padding=`var(--ms-inset-panel-body)`,t.style.color=`hsl(var(--ms-destructive))`,t.textContent=`Failed to render diagram: `;let n=document.createElement(`span`);n.textContent=e instanceof Error?e.message:`Unknown error`,t.appendChild(n),b(E.value),E.value.appendChild(t);let r=E.value?getComputedStyle(E.value).getPropertyValue(`--ms-size-diagram-min-height`).trim():``;V.value=r||`360px`,cn.value=V.value,K.value=!0,$()}function wn(e){let t=typeof e==`string`?e:typeof e?.message==`string`?e.message:``;return typeof t==`string`&&/timed out/i.test(t)}function Tn(e){return e?.name===`AbortError`}function En(e){return!wn(e)&&!Tn(e)}typeof window<`u`&&t([()=>yt.value,Ie],([e,t])=>{var n;if((n=St.value)==null||n.destroy(),St.value=null,!t||Ct.value)return void(Ct.value=!0);if(!e)return void(Ct.value=!1);let r=xt(e,{rootMargin:Le?.value.heavyBlockMargin,allowIdle:!1});St.value=r,Ct.value=r.isVisible.value,r.whenVisible.then(()=>{Ct.value=!0})},{immediate:!0}),re(()=>{var e;C=!0,gt+=1,W.value+=1,(e=St.value)==null||e.destroy(),St.value=null,At(),rn()});let Dn=f(()=>!1!==_.showTooltips);function On(e){return!e||e.disabled}function Y(e,t,n=`top`){if(!Dn.value||On(e.currentTarget))return;let r=e,i=r?.clientX!=null&&r?.clientY!=null?{x:r.clientX,y:r.clientY}:void 0;Se(e.currentTarget,t,n,!1,i,_.isDark)}function X(){Dn.value&&we()}function kn(e){if(!Dn.value||On(e.currentTarget))return;let t=vt.value?S(`common.copied`)||`Copied`:S(`common.copy`)||`Copy`,n=e,r=n?.clientX!=null&&n?.clientY!=null?{x:n.clientX,y:n.clientY}:void 0;Se(e.currentTarget,t,`top`,!1,r,_.isDark)}function An(e,t){let n={theme:t===`dark`?`dark`:`default`};Re.value===`strict`&&(n.flowchart={htmlLabels:!1});let r=`%%{init: ${JSON.stringify(n)}}%%\n`;return e.trimStart().startsWith(`%%{`)?e:r+e}function jn(){return bn&&!P.value&&!H.value&&!K.value}function Mn(e){let t=e.trim();return!(!t||t.startsWith(`%%`))&&!/^(?:gantt|title|dateformat|axisformat|tickinterval|excludes|section|todaymarker|topaxis|weekday|weekend|acctitle|accdescr|accdescrmultiline)\b/i.test(t)&&t.includes(`:`)}function Nn(e){if(me(e)===`gantt`)return function(e){let t=e.split(/\r?\n/);for(!/\r?\n$/.test(e)&&t.length>0&&t.pop();t.length>0;){let e=t[t.length-1]?.trim();if(e&&!e.startsWith(`%%`)){if(Mn(e))break;t.pop()}else t.pop()}return t.some(Mn)?t.join(` +import{A as e,G as t,H as n,I as r,J as i,N as a,O as o,P as s,S as c,U as l,_ as u,c as ee,f as te,g as ne,h as d,j as re,k as ie,lt as ae,m as f,n as oe,nt as p,ot as m,q as se,st as h,u as ce,ut as le,v as g,w as ue,z as de}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{t as fe}from"./safeRaf-BDp3SJMs.js";import{F as pe,I as me,L as he,M as ge,N as _e,Q as ve,_ as ye,a as be,d as xe,h as Se,j as Ce,n as we,p as Te,tt as Ee,v as De,x as Oe,z as ke}from"./index-BWCY3EFX.js";function _(e,t){return/(?:&#\d+|#\d+|&[a-z]+)$/i.test(e.slice(Math.max(0,t-12),t))}function Ae(e){return e.includes(`->`)||e.includes(`-->`)||e.includes(`->>`)||e.includes(`-->>`)||e.includes(`-x`)||e.includes(`--x`)||e.includes(`-)`)||e.includes(`--)`)||e.includes(`-+`)||e.includes(`--+`)}function je(e){let t=e.trimStart();return/^(?:accDescr|accTitle|activate|actor|and|alt|autonumber|box|break|critical|create\s+(?:actor|participant)|deactivate|destroy|else|end|link|links|loop|Note|opt|option|par|participant|properties|rect)\b/i.test(t)||function(e){let t=e.split(`;`,1)[0],n=t.indexOf(`:`);return n>0&&Ae(t.slice(0,n))}(t)}function v(e){if(!e.includes(`;`))return e;let t=e.indexOf(`:`);if(t===-1||!function(e,t){let n=e.slice(0,t);return/^\s*Note\b/i.test(n)||Ae(n)}(e,t))return e;let n=e.slice(0,t+1),r=e.slice(t+1),i=function(e){let t=``,n=!1;for(let r=0;rt in e?Ne(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ve=(e,t)=>{for(var n in t||={})Le.call(t,n)&&Be(e,n,t[n]);if(Ie)for(var n of Ie(t))Re.call(t,n)&&Be(e,n,t[n]);return e},y=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),He=[`data-markstream-mode`,`data-markstream-pending`],Ue={key:0,class:`mermaid-block-header flex items-center justify-between border-b px-[var(--ms-inset-panel-x)] py-[var(--ms-inset-panel-y)]`},We={key:0},Ge={key:1,class:`flex items-center gap-x-2 overflow-hidden`},Ke=[`innerHTML`],qe={key:2},Je={key:3,class:`mermaid-mode-toggle-group flex items-center gap-0.5`},Ye={class:`flex items-center gap-x-1`},Xe={class:`flex items-center gap-x-1`},Ze={key:4},Qe={key:5,class:`mermaid-header-actions flex items-center`},$e=[`aria-pressed`],et={key:0,xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},tt={key:1,xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},nt=[`aria-label`,`disabled`],rt=[`aria-label`,`disabled`],it={key:0,xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},at={key:1,xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},ot={key:0,class:`mermaid-source-panel`},st={class:`mermaid-source-code text-sm font-mono whitespace-pre-wrap`},ct={key:1,class:`relative`},lt={key:0,class:`absolute top-2 right-2 z-10 rounded-lg`},ut={class:`flex items-center gap-2 backdrop-blur rounded-lg`},dt={class:`dialog-panel mermaid-modal-panel relative w-full h-full max-w-full max-h-full rounded overflow-hidden`},ft={class:`absolute top-6 right-6 z-50 flex items-center gap-2`},pt=`mermaid-action-btn p-[var(--ms-action-btn-padding)] rounded`,b=ye(ue({__name:`MermaidBlockNode`,props:{node:{},maxHeight:{default:void 0},estimatedPreviewHeightPx:{},loading:{type:Boolean,default:!0},isDark:{type:Boolean},workerTimeoutMs:{default:1400},parseTimeoutMs:{default:1800},renderTimeoutMs:{default:2500},fullRenderTimeoutMs:{default:4e3},renderDebounceMs:{default:300},contentStableDelayMs:{default:500},previewPollDelayMs:{default:800},previewPollMaxDelayMs:{default:4e3},previewPollMaxAttempts:{default:12},showHeader:{type:Boolean,default:!0},showModeToggle:{type:Boolean,default:!0},showCopyButton:{type:Boolean,default:!0},showExportButton:{type:Boolean,default:!0},showFullscreenButton:{type:Boolean,default:!0},showCollapseButton:{type:Boolean,default:!0},showZoomControls:{type:Boolean,default:!0},enableWheelZoom:{type:Boolean,default:!1},isStrict:{type:Boolean,default:!0},enableMermaidInteractions:{type:Boolean,default:!1},showTooltips:{type:Boolean,default:!0},onRenderError:{}},emits:[`copy`,`export`,`openModal`,`toggleMode`],setup(ue,{emit:ye}){let _=ue,Ae=ye,je={USE_PROFILES:{svg:!0},FORBID_TAGS:[`script`],FORBID_ATTR:[/^on/i],ADD_TAGS:[`style`],ADD_ATTR:[`style`],SAFE_FOR_TEMPLATES:!0},v=p(!1),Ne=p(typeof window>`u`),Ie=De(),Le=Oe(),Re=f(()=>_.isStrict?`strict`:`loose`),Be=f(()=>({startOnLoad:!1,securityLevel:Re.value,dompurifyConfig:Re.value===`strict`?je:void 0,flowchart:Re.value===`strict`?{htmlLabels:!1}:void 0}));function b(e){if(e)try{e.replaceChildren()}catch{e.innerHTML=``}}function mt(e,t,n={}){if(!e)return null;let r=function(e,t){if(!e)return null;let n=Ee(t);if(!n)return null;let r=function(e,t){let n=Array.from(e.childNodes),r=document.createElement(`div`);return r.dataset.mermaidSvgLayer=`1`,r.style.zIndex=`1`,r.appendChild(t),e.insertBefore(r,e.firstChild),n.length>0&&function(e){let t=()=>{var t;for(let n of e)(t=n.parentNode)==null||t.removeChild(n)};typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>{requestAnimationFrame(t)}):setTimeout(t,32)}(n),r}(e,n);return{svg:n.outerHTML,bindTarget:r}}(e,t);return r||n.keepPreviousOnFailure||b(e),r}let x=null;function ht(e){if(_.enableMermaidInteractions&&e?.querySelector(`svg`))try{x?.(e)}catch{}}let{t:S}=be(),C=!1,gt=0;function _t(){return y(this,null,function*(){try{let e=yield _e();return C?null:(v.value=!!e,e)}catch(e){throw C||(v.value=!1),e}finally{C||(Ne.value=!0)}})}let vt=p(!1),w=p(!1),yt=p(),T=p(),E=p(),D=p(),bt=p(null),xt=Te(),St=p(null),Ct=p(typeof window>`u`||!Ie.value),wt=l(),Tt=o(ve,null),O=``,k=0,Et=0,Dt=f(()=>xe(_,wt));function Ot(){let e=Dt.value;e&&(O&&O!==e&&(Tt?.markSettled(O),k=0),O=e,k+=1,Et+=1,k===1&&Tt?.markPending(e))}function kt(){return y(this,null,function*(){let t=O;if(!t||(k=Math.max(0,k-1),k>0))return;O=``;let n=++Et;yield e(),n===Et&&(function(e=Dt.value){e&&yt.value&&Tt?.reportHeight(e,yt.value.offsetHeight)}(t),Tt?.markSettled(t))})}function At(){let e=O;e&&(O=``,k=0,Et+=1,Tt?.markSettled(e))}let jt=p(),A=f(()=>_.node.code.replace(/\]::([^:])/g,`]:::$1`).replace(/:::subgraphNode$/gm,`::subgraphNode`));function Mt(e,t=A.value){let n=t,r={theme:e===`dark`?`dark`:`default`};Re.value===`strict`&&(r.flowchart={htmlLabels:!1});let i=`%%{init: ${JSON.stringify(r)}}%%\n`;return n.trim().startsWith(`%%{`)?n:i+n}function Nt(){return function(e){return pe(e,function(){return ke(T.value?getComputedStyle(T.value).getPropertyValue(`--ms-size-diagram-min-height`).trim():``)??360}(),Rn())}(ke(_.estimatedPreviewHeightPx)??he(A.value))}function Pt(){return`${Nt()}px`}let Ft=p(null);function It(){return!!E.value?.querySelector(`svg`)}function Lt(){return!1!==_.loading&&(It()||!!Ft.value)}let j=p(1),M=p(0),N=p(0),Rt=p(!1),zt=p({x:0,y:0}),P=p(!0),Bt=p(!1),F=p(!1),I=p(null),Vt=``,Ht=!1,L=``,Ut=p(0),Wt=p(!1),Gt=f(()=>Math.max(0,_.renderDebounceMs??300)),Kt=f(()=>Math.max(0,_.contentStableDelayMs??500)),qt=f(()=>Math.max(120,_.previewPollDelayMs??800)),Jt=f(()=>Math.max(qt.value,_.previewPollMaxDelayMs??4e3)),Yt=f(()=>Math.max(1,Math.trunc(_.previewPollMaxAttempts??12))),R=f(()=>!1!==_.loading),Xt=null,Zt=null,Qt=null,$t=null,en=0,tn=globalThis.requestIdleCallback??((e,t)=>setTimeout(()=>e({didTimeout:!0}),16)),nn=globalThis.cancelIdleCallback??(e=>clearTimeout(e));function z(e=gt){return!C&&e===gt}function B(){return z()&&Ct.value&&!w.value}function rn(){Qt!=null&&(globalThis.clearTimeout(Qt),Qt=null),$t!=null&&(nn($t),$t=null)}function an(){C||Qt==null&&$t==null&&(Qt=globalThis.setTimeout(()=>{Qt=null,B()&&($t=tn(()=>{$t=null,B()&&or()},{timeout:500}))},Gt.value))}function on(){Zt!=null&&(globalThis.clearTimeout(Zt),Zt=null)}function sn(e=600){if(typeof globalThis>`u`||C)return;let t=Math.max(0,e);on(),Zt=globalThis.setTimeout(()=>{if(Zt=null,!C){if(_.loading||F.value||!B())return void sn(Math.min(1200,Math.max(300,1.2*t)));an()}},t)}let V=p(Pt()),cn=p(V.value),ln=null,H=p(!1),un=p(!1),U=p({}),W=p(0),G=null,dn=null,K=p(!1),fn=f(()=>!(w.value||P.value||Ne.value&&!F.value&&!I.value&&(H.value||K.value&&(E.value?.textContent)?.trim()))),pn=p({zoom:1,translateX:0,translateY:0,containerHeight:V.value}),mn=f(()=>_.enableWheelZoom?{wheel:Xn}:{}),q=f(()=>({worker:_.workerTimeoutMs??1400,parse:_.parseTimeoutMs??1800,render:_.renderTimeoutMs??2500,fullRender:_.fullRenderTimeoutMs??4e3})),hn=null,gn=null,_n=!1,vn=qt.value,J=null,yn=0,bn=!0,xn=0;function Sn(e,t){let n=t?.timeoutMs,r=t?.signal;if(r?.aborted)return Promise.reject(new DOMException(`Aborted`,`AbortError`));let i=null,a=!1,o=null;return new Promise((t,s)=>{let c=()=>{i!=null&&clearTimeout(i),o&&r&&r.removeEventListener(`abort`,o)};n&&n>0&&(i=globalThis.setTimeout(()=>{a||(a=!0,c(),s(Error(`Operation timed out`)))},n)),r&&(o=()=>{a||(a=!0,c(),s(new DOMException(`Aborted`,`AbortError`)))},r.addEventListener(`abort`,o)),e().then(e=>{a||(a=!0,c(),t(e))}).catch(e=>{a||(a=!0,c(),s(e))})})}function Cn(e){if(typeof document>`u`||!E.value)return;if(typeof _.onRenderError==`function`&&!0===_.onRenderError(e,A.value,E.value))return K.value=!0,void $();let t=document.createElement(`div`);t.style.padding=`var(--ms-inset-panel-body)`,t.style.color=`hsl(var(--ms-destructive))`,t.textContent=`Failed to render diagram: `;let n=document.createElement(`span`);n.textContent=e instanceof Error?e.message:`Unknown error`,t.appendChild(n),b(E.value),E.value.appendChild(t);let r=E.value?getComputedStyle(E.value).getPropertyValue(`--ms-size-diagram-min-height`).trim():``;V.value=r||`360px`,cn.value=V.value,K.value=!0,$()}function wn(e){let t=typeof e==`string`?e:typeof e?.message==`string`?e.message:``;return typeof t==`string`&&/timed out/i.test(t)}function Tn(e){return e?.name===`AbortError`}function En(e){return!wn(e)&&!Tn(e)}typeof window<`u`&&t([()=>yt.value,Ie],([e,t])=>{var n;if((n=St.value)==null||n.destroy(),St.value=null,!t||Ct.value)return void(Ct.value=!0);if(!e)return void(Ct.value=!1);let r=xt(e,{rootMargin:Le?.value.heavyBlockMargin,allowIdle:!1});St.value=r,Ct.value=r.isVisible.value,r.whenVisible.then(()=>{Ct.value=!0})},{immediate:!0}),re(()=>{var e;C=!0,gt+=1,W.value+=1,(e=St.value)==null||e.destroy(),St.value=null,At(),rn()});let Dn=f(()=>!1!==_.showTooltips);function On(e){return!e||e.disabled}function Y(e,t,n=`top`){if(!Dn.value||On(e.currentTarget))return;let r=e,i=r?.clientX!=null&&r?.clientY!=null?{x:r.clientX,y:r.clientY}:void 0;Se(e.currentTarget,t,n,!1,i,_.isDark)}function X(){Dn.value&&we()}function kn(e){if(!Dn.value||On(e.currentTarget))return;let t=vt.value?S(`common.copied`)||`Copied`:S(`common.copy`)||`Copy`,n=e,r=n?.clientX!=null&&n?.clientY!=null?{x:n.clientX,y:n.clientY}:void 0;Se(e.currentTarget,t,`top`,!1,r,_.isDark)}function An(e,t){let n={theme:t===`dark`?`dark`:`default`};Re.value===`strict`&&(n.flowchart={htmlLabels:!1});let r=`%%{init: ${JSON.stringify(n)}}%%\n`;return e.trimStart().startsWith(`%%{`)?e:r+e}function jn(){return bn&&!P.value&&!H.value&&!K.value}function Mn(e){let t=e.trim();return!(!t||t.startsWith(`%%`))&&!/^(?:gantt|title|dateformat|axisformat|tickinterval|excludes|section|todaymarker|topaxis|weekday|weekend|acctitle|accdescr|accdescrmultiline)\b/i.test(t)&&t.includes(`:`)}function Nn(e){if(me(e)===`gantt`)return function(e){let t=e.split(/\r?\n/);for(!/\r?\n$/.test(e)&&t.length>0&&t.pop();t.length>0;){let e=t[t.length-1]?.trim();if(e&&!e.startsWith(`%%`)){if(Mn(e))break;t.pop()}else t.pop()}return t.some(Mn)?t.join(` `):``}(e);let t=e.split(/\r?\n/);for(;t.length>0;){let e=t[t.length-1].trimEnd();if(e!==``){if(!(/^[-=~>|<\s]+$/.test(e.trim())||/(?:--|==|~~|->|<-|-\||-\)|-x|o-|\|-|\.-)\s*$/.test(e)||/[-|><]$/.test(e)||/(?:graph|flowchart|sequenceDiagram|classDiagram|stateDiagram|erDiagram|gantt)\s*$/i.test(e)))break;t.pop()}else t.pop()}return t.join(` `)}function Pn(e,t,n,r){return y(this,null,function*(){try{return yield Sn(()=>e.render(t,n),{timeoutMs:r})}catch(i){if(!En(i))throw i;let a=Me(n);if(a===n)throw i;try{return yield Sn(()=>e.render(`${t}-retry`,a),{timeoutMs:r})}catch{throw i}}})}function Fn(e,t,n){return y(this,null,function*(){try{return yield Ce(e,t,n?.timeoutMs??q.value.worker,n?.signal)}catch(r){if(r?.name===`AbortError`)throw r;let i=r?.code||r?.name;if(i!==`WORKER_BUSY`&&i!==`WORKER_TIMEOUT`&&i!==`WORKER_INIT_ERROR`&&i!==`MERMAID_DISABLED`&&i!==`WORKER_REPLACED`||r?.fallbackToRenderer)return yield function(e,t,n){return y(this,null,function*(){let r=yield _t();if(!r)return;let i=r,a=An(e,t);if(typeof i.parse==`function`){try{yield Sn(()=>i.parse(a),{timeoutMs:n?.timeoutMs??q.value.parse,signal:n?.signal})}catch(e){if(!En(e))throw e;let t=Me(a);if(t===a)throw e;try{yield Sn(()=>i.parse(t),{timeoutMs:n?.timeoutMs??q.value.parse,signal:n?.signal})}catch{throw e}}return!0}let o=`mermaid-parse-${Math.random().toString(36).slice(2,9)}`;try{yield Sn(()=>r.render(o,a),{timeoutMs:n?.timeoutMs??q.value.render,signal:n?.signal})}catch(e){if(!En(e))throw e;let t=Me(a);if(t===a)throw e;try{yield Sn(()=>r.render(`${o}-retry`,t),{timeoutMs:n?.timeoutMs??q.value.render,signal:n?.signal})}catch{throw e}}return!0})}(e,t,n);throw r}})}function In(e,t,n){return y(this,null,function*(){if(me(e)===`gantt`){let r=Nn(e);if(!r.trim())return{fullOk:!1,prefixOk:!1};try{if(yield Fn(r,t,n))return r===e?{fullOk:!0,prefixOk:!1}:{fullOk:!1,prefixOk:!0,prefix:r}}catch(e){if(e?.name===`AbortError`)throw e}return{fullOk:!1,prefixOk:!1}}try{if(yield Fn(e,t,n))return{fullOk:!0,prefixOk:!1}}catch(e){if(e?.name===`AbortError`)throw e}let r=Nn(e);if(r&&r.trim()&&r!==e)try{try{let i=yield ge(e,t,n?.timeoutMs??q.value.worker,n?.signal);i&&i.trim()&&(r=i)}catch{}if(yield Fn(r,t,n))return{fullOk:!1,prefixOk:!0,prefix:r}}catch(e){if(e?.name===`AbortError`)throw e}return{fullOk:!1,prefixOk:!1}})}let Ln=f(()=>P.value||F.value||w.value);function Rn(){if(_.maxHeight===`none`)return null;if(_.maxHeight!=null){let e=Number.parseFloat(String(_.maxHeight));if(Number.isFinite(e))return e}let e=T.value;if(e){let t=getComputedStyle(e).getPropertyValue(`--ms-size-code-max-height`).trim(),n=Number.parseFloat(t);if(Number.isFinite(n))return n}return 500}function zn(e,t){if(!T.value||!E.value)return;let n=!t?.force&&!1!==_.loading&&It(),r=E.value.querySelector(`svg`);if(!r)return;let i=0,a=0,o=r.getAttribute(`viewBox`),s=r.getAttribute(`width`),c=r.getAttribute(`height`);if(o){let e=o.split(` `);e.length===4&&(i=Number.parseFloat(e[2]),a=Number.parseFloat(e[3]))}if(i&&a||s&&c&&(i=Number.parseFloat(s),a=Number.parseFloat(c)),Number.isNaN(i)||Number.isNaN(a)||i<=0||a<=0)try{let e=r.getBBox();e&&e.width>0&&e.height>0&&(i=e.width,a=e.height)}catch(e){console.error(`Failed to get SVG BBox:`,e);return}if(i>0&&a>0){let t=a/i,o=e??T.value.clientWidth,s=r.getBoundingClientRect().width,c=s>0?s:o,l=Rn(),u=c*t,ee=Math.max(l==null?u:Math.min(u,l),Nt());cn.value=`${Math.max(u,ee)}px`,n||ke(_.estimatedPreviewHeightPx)!=null||(V.value=`${ee}px`)}}let Z=p(!1),Bn=f(()=>({transform:`translate(${M.value}px, ${N.value}px) scale(${j.value})`}));function Vn(e){e.key===`Escape`&&Z.value&&Un()}function Hn(){if(!T.value||!D.value)return!1;if(D.value.firstElementChild?.getAttribute(`data-mermaid-modal-clone`)===`1`)return!0;let e=T.value.cloneNode(!0);e.dataset.mermaidModalClone=`1`,e.classList.add(`fullscreen`),e.style.height=`100%`,e.style.maxHeight=`100%`;let t=e.querySelector(`._mermaid`);t&&(t.style.contain=`none`,t.style.contentVisibility=`visible`);let n=e.querySelector(`[data-mermaid-wrapper]`);return n&&(bt.value=n,n.style.transform=Bn.value.transform),b(D.value),D.value.appendChild(e),ht(e),!0}function Un(){if(Z.value=!1,D.value&&b(D.value),bt.value=null,typeof document<`u`)try{document.body.style.overflow=``}catch{}if(typeof window<`u`)try{window.removeEventListener(`keydown`,Vn)}catch{}}function Wn(){j.value<3&&(j.value+=.1)}function Gn(){j.value>.5&&(j.value-=.1)}function Kn(){j.value=1,M.value=0,N.value=0}function qn(e){Rt.value=!0,e instanceof MouseEvent?zt.value={x:e.clientX-M.value,y:e.clientY-N.value}:zt.value={x:e.touches[0].clientX-M.value,y:e.touches[0].clientY-N.value}}function Jn(e){if(!Rt.value)return;let t,n;e instanceof MouseEvent?(t=e.clientX,n=e.clientY):(t=e.touches[0].clientX,n=e.touches[0].clientY),M.value=t-zt.value.x,N.value=n-zt.value.y}function Yn(){Rt.value=!1}function Xn(e){if(_.enableWheelZoom&&(e.ctrlKey||e.metaKey)){if(e.preventDefault(),!T.value)return;let t=T.value.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top,i=n-t.width/2,a=r-t.height/2,o=(i-M.value)/j.value,s=(a-N.value)/j.value,c=-e.deltaY*.01,l=Math.min(Math.max(j.value+c,.5),3);l!==j.value&&(M.value=i-o*l,N.value=a-s*l,j.value=l)}}function Zn(){return y(this,null,function*(){try{let e=A.value,t={payload:{type:`copy`,text:e},defaultPrevented:!1,preventDefault(){this.defaultPrevented=!0}};if(Ae(`copy`,t),t.defaultPrevented)return;typeof navigator<`u`&&navigator.clipboard&&typeof navigator.clipboard.writeText==`function`&&(yield navigator.clipboard.writeText(e)),vt.value=!0,setTimeout(()=>{vt.value=!1},1e3)}catch(e){console.error(`Failed to copy:`,e)}})}function Qn(){let e=E.value?.querySelector(`svg`);if(!e)return void console.error(`SVG element not found`);let t=new XMLSerializer().serializeToString(e),n={payload:{type:`export`},defaultPrevented:!1,preventDefault(){this.defaultPrevented=!0},svgElement:e,svgString:t};Ae(`export`,n),n.defaultPrevented||function(e,t=null){y(this,null,function*(){try{let n=t??new XMLSerializer().serializeToString(e),r=new Blob([n],{type:`image/svg+xml;charset=utf-8`}),i=URL.createObjectURL(r);if(typeof document<`u`){let e=document.createElement(`a`);e.href=i,e.download=`mermaid-diagram-${Date.now()}.svg`;try{document.body.appendChild(e),e.click(),document.body.removeChild(e)}catch{}URL.revokeObjectURL(i)}}catch(e){console.error(`Failed to export SVG:`,e)}})}(e,t)}function $n(){let t=E.value?.querySelector(`svg`)??null,n={payload:{type:`open-modal`},defaultPrevented:!1,preventDefault(){this.defaultPrevented=!0},svgElement:t,svgString:t?new XMLSerializer().serializeToString(t):null};Ae(`openModal`,n),n.defaultPrevented||function(){if(Z.value=!0,typeof document<`u`)try{document.body.style.overflow=`hidden`}catch{}if(typeof window<`u`)try{window.addEventListener(`keydown`,Vn)}catch{}e(()=>{Hn()||e(Hn)})}()}function er(e){let t={payload:{type:`toggle-mode`,target:e},defaultPrevented:!1,preventDefault(){this.defaultPrevented=!0}};Ae(`toggleMode`,e,t),t.defaultPrevented||tr(e)}function tr(t){return y(this,null,function*(){let n=jt.value;if(!n)return Bt.value=!0,void(P.value=t===`source`);let r=n.getBoundingClientRect().height;n.style.height=`${r}px`,n.style.overflow=`hidden`,Bt.value=!0,P.value=t===`source`,yield e();let i=n.scrollHeight;n.style.transition=`height var(--ms-duration-standard) var(--ms-ease-standard)`,n.offsetHeight,n.style.height=`${i}px`;let a=()=>{n.style.transition=``,n.style.height=``,n.style.overflow=``,n.removeEventListener(`transitionend`,o)};function o(){a()}n.addEventListener(`transitionend`,o),setTimeout(()=>a(),220)})}function Q(e=A.value,t=_.isDark?`dark`:`light`,n=!1===_.loading){return{code:e,codeWithTheme:Mt(t,e),final:n,signature:`${t}\0${e}`,theme:t}}function nr(e){return e.signature===Q().signature}function rr(){return y(this,arguments,function*(t=Q()){let n=gt;if(!z(n)||!nr(t))return!1;if(F.value){let e=I.value,r=Ht,i=Vt;if(!e)return!1;let a=yield e;return!(!z(n)||!nr(t))&&(i===t.signature?!(!a||L!==t.signature)||!(!t.final||!1!==_.loading||r)&&rr(t):rr(t))}if(!E.value){if(yield e(),!z(n))return!1;if(!E.value)return console.warn(`Mermaid container not ready`),!1}return!(!z(n)||!nr(t))&&(F.value=!0,Ht=t.final,Vt=t.signature,Ot(),I.value=y(null,null,function*(){var e,r,i;try{let a=yield _t();if(!z(n)||!a)return!1;let o=`mermaid-${Date.now()}-${Math.random().toString(36).substring(2,11)}`;H.value||un.value||(e=a.initialize)==null||e.call(a,(r=Ve({},Be.value),i={dompurifyConfig:Ve({},je)},Pe(r,Fe(i))));let s=yield Pn(a,o,t.codeWithTheme,q.value.fullRender);if(!z(n)||!function(e){return nr(e)||!e.final&&!1!==_.loading&&A.value.startsWith(e.code)}(t))return un.value&&=!1,!1;if(!E.value)return!1;let c=mt(E.value,s?.svg,{keepPreviousOnFailure:!t.final||!1!==_.loading});if(!c)return un.value&&=!1,!1;let l=s?.bindFunctions??null;return x=l,ht(c.bindTarget),H.value||un.value||(fe(()=>zn()),H.value=!0,pn.value={zoom:j.value,translateX:M.value,translateY:N.value,containerHeight:V.value}),U.value[t.theme]={svg:c.svg,bindFunctions:l},un.value&&=!1,L=t.signature,Ft.value=E.value.innerHTML,K.value=!1,en=0,on(),!0}catch(e){if(!z(n)||!nr(t))return un.value&&=!1,!1;let r=wn(e),i=en+1;return r&&i<=3?(en=i,sn(Math.min(1200,600*i))):(en=0,on(),t.final&&!1===_.loading&&console.error(`Failed to render mermaid diagram:`,e),t.final&&!1===_.loading&&Cn(e)),!1}finally{Ht=!1,Vt=``,F.value=!1,I.value=null,z(n)&&kt()}}),I.value)})}function ir(){return y(this,null,function*(){var e;let t=A.value;if(!t.trim()){if(Lt())return;E.value&&b(E.value),Ft.value=null,L=``,K.value=!1;return}if(!v.value||!B())return;let n=Q(t);H.value&&n.signature===L&&(e=E.value)!=null&&e.querySelector(`svg`)||(yield rr(n))&&(K.value=!1)})}function ar(t,n,r,i){return y(this,null,function*(){let a=gt;if(!z(a)||!jn()||!E.value&&(yield e(),!z(a)||!E.value)||F.value)return;F.value=!0,Ot();let o=Q(n,r),s=y(null,null,function*(){try{let e=yield _t();if(!z(a)||!e)return!1;let n=`mermaid-partial-${Date.now()}-${Math.random().toString(36).slice(2,9)}`,s=Nn(t),c=yield Pn(e,n,An(s&&s.trim()?s:t,r),q.value.render);if(!z(a)||W.value!==i||!1===_.loading||!jn()||!nr(o))return!1;let l=c?.svg;if(!E.value||!l)return!1;let u=mt(E.value,l,{keepPreviousOnFailure:!0});return!!u&&(x=c?.bindFunctions??null,ht(u.bindTarget),fe(()=>zn()),!1)}catch{return!1}finally{I.value===s&&(F.value=!1,I.value=null),z(a)&&kt()}});return I.value=s,s})}function or(){return y(this,null,function*(){if(!B())return;let e=gt,t=Date.now(),n=++W.value;Ot();try{G&&G.abort(),G=new AbortController;let r=G.signal,i=_.isDark?`dark`:`light`,a=A.value;if(!a.trim()){if(Lt())return;E.value&&b(E.value),Ft.value=null,L=``,K.value=!1;return}if(Q(a,i).signature===L)return;try{let o=yield In(a,i,{signal:r,timeoutMs:q.value.worker});if(!z(e))return;if(o.fullOk){if(r.aborted||W.value!==n||!(yield rr(Q(a,i))))return;z(e)&&W.value===n&&(K.value=!1);return}let s=yn&&t<=yn;if(o.prefixOk&&o.prefix&&!r.aborted&&W.value===n&&jn()&&!s)return void(yield ar(o.prefix,a,i,n))}catch(e){if(e?.name===`AbortError`)return}if(!z(e)||W.value!==n||K.value)return;let o=U.value[i];if(o&&E.value){let e=mt(E.value,o.svg);e&&(x=o.bindFunctions??null,ht(e.bindTarget))}}finally{z(e)&&kt()}})}function $(){_n&&(_n=!1,vn=qt.value,bn=!1,J&&=(J.abort(),null),hn&&=(globalThis.clearTimeout(hn),null),gn&&=(nn(gn),null),yn=Date.now())}function sr(){if($(),rn(),G){try{G.abort()}catch{}G=null}if(J){try{J.abort()}catch{}J=null}on(),en=0}function cr(){dn?.abort(),dn=null}function lr(e=qt.value){_n&&(xn>=Yt.value?$():(hn&&globalThis.clearTimeout(hn),hn=globalThis.setTimeout(()=>{gn=tn(()=>y(null,null,function*(){if(!_n)return;if(!B()||P.value||H.value)return void $();let e=_.isDark?`dark`:`light`,t=A.value;if(!t.trim())return!1===_.loading?void $():void lr(vn);if(xn++,xn>Yt.value)$();else{J&&J.abort(),J=new AbortController;try{let n=yield In(t,e,{signal:J.signal,timeoutMs:q.value.worker});if(n.fullOk){if((yield rr(Q(t,e)))&&H.value)return void $()}else n.prefixOk&&n.prefix&&jn()&&(yield ar(n.prefix,t,e,W.value))}catch{}vn=Math.min(Math.floor(1.5*vn),Jt.value),lr(vn)}}),{timeout:500})},e)))}function ur(){_n||R.value&&v.value&&B()&&(P.value||H.value||(_n=!0,yn=0,bn=!0,xn=0,vn=qt.value,lr(vn)))}function dr(){return y(this,null,function*(){let t=gt;z(t)&&(yield _t().catch(e=>{z(t)&&(v.value=!1,console.warn(`[markstream-vue] Failed to initialize mermaid renderer. Call enableMermaid() to configure a loader.`,e))}),z(t)&&(yield e(),z(t)&&(Bt.value||(P.value=!v.value),B()&&(R.value?(an(),Ut.value=A.value.length):P.value||ir()))))})}return t(D,e=>{Z.value&&e&&Hn()}),t(Bn,e=>{Z.value&&bt.value&&(bt.value.style.transform=e.transform)},{immediate:!0}),t(Dn,e=>{e||we()}),t(()=>A.value,e=>{if((e.trim()||!1===_.loading)&&(H.value=!1,U.value={}),!R.value)return $(),void(B()&&!P.value&&ir());B()&&an(),!P.value&&v.value&&B()?ur():$(),function(){if(!R.value||!P.value||!v.value)return;let e=A.value.length;e!==Ut.value&&(Wt.value=!0,Ut.value=e,Xt&&clearTimeout(Xt),Xt=setTimeout(()=>{Wt.value&&P.value&&A.value.trim()&&(Wt.value=!1,tr(`preview`))},Kt.value))}()}),t(()=>_.isDark,()=>y(null,null,function*(){if(K.value)return;let t=_.isDark?`dark`:`light`,n=U.value[t];if(n){if(E.value){let e=mt(E.value,n.svg);e&&(x=n.bindFunctions??null,ht(e.bindTarget))}return}let r={zoom:j.value,translateX:M.value,translateY:N.value,containerHeight:V.value},i=j.value!==1||M.value!==0||N.value!==0;un.value=!0,i&&(j.value=1,M.value=0,N.value=0,yield e()),yield rr(),i&&(yield e(),j.value=r.zoom,M.value=r.translateX,N.value=r.translateY,V.value=r.containerHeight,pn.value=r)})),t(()=>P.value,t=>y(null,null,function*(){if(t)$(),H.value&&(pn.value={zoom:j.value,translateX:M.value,translateY:N.value,containerHeight:V.value});else{if(K.value)return;let t=_.isDark?`dark`:`light`;if(H.value&&U.value[t]){if(yield e(),E.value){let e=U.value[t],n=mt(E.value,e.svg);n&&(x=e.bindFunctions??null,ht(n.bindTarget))}j.value=pn.value.zoom,M.value=pn.value.translateX,N.value=pn.value.translateY,V.value=pn.value.containerHeight;return}if(yield e(),!v.value||!B())return;if(!R.value)return $(),void(yield ir());ur(),yield or()}})),t(()=>_.loading,(t,n)=>y(null,null,function*(){if(t)cr();else if(!0===n){cr();let t=A.value,n=t.trim();if(!n)return E.value&&b(E.value),Ft.value=null,L=``,K.value=!1,sr();if(!B())return void sr();let r=_.isDark?`dark`:`light`,i=Q(t,r);if(H.value&&i.signature===L){if(yield e(),E.value&&!E.value.querySelector(`svg`)&&U.value[r]){let e=U.value[r],t=mt(E.value,e.svg);t&&(x=e.bindFunctions??null,ht(t.bindTarget))}zn(void 0,{force:!0}),sr();return}let a=new AbortController;dn=a;try{let e=0;for(;;)try{yield Fn(n,r,{signal:a.signal,timeoutMs:q.value.worker});break}catch(t){let n=t?.code===`WORKER_BUSY`||t?.code===`WORKER_TIMEOUT`,r=t?.code===`WORKER_TIMEOUT`?2:8;if(!n||e>=r)throw t;let i=Math.min(50*ze(2,e),400);e++,yield Sn(()=>new Promise(e=>setTimeout(e,i)),{signal:a.signal})}if(!(yield rr(i)))return;K.value=!1,sr()}catch(e){if(Tn(e))return;sr(),Cn(e)}finally{dn===a&&(dn=null)}}})),t(T,e=>{ln&&ln.disconnect(),e&&(ln=new ResizeObserver(e=>{e&&e.length>0&&!P.value&&!w.value&&fe(()=>{zn(e[0].contentRect.width)})}),ln.observe(e))},{immediate:!0}),a(()=>{Ie.value&&!B()||dr()}),t(()=>v.value,e=>{Bt.value||(P.value=!e)}),t(()=>_.maxHeight,()=>{e(()=>{zn()})}),t([()=>_.estimatedPreviewHeightPx,()=>A.value],()=>{H.value||It()||P.value||(V.value=Pt(),cn.value=V.value)}),t(()=>Ct.value,e=>y(null,null,function*(){e&&(Ne.value?(H.value||(R.value?(an(),Ut.value=A.value.length):ir()),_.loading||H.value||ir(),!P.value&&v.value&&R.value&&ur()):yield dr())}),{immediate:!1}),s(()=>{Xt&&clearTimeout(Xt),rn(),ln&&ln.disconnect(),G&&=(G.abort(),null),cr(),$(),on(),At()}),t(()=>w.value,t=>y(null,null,function*(){t?($(),G&&G.abort()):B()&&!H.value&&(yield e(),R.value?(an(),ur()):P.value||ir())}),{immediate:!1}),(e,t)=>(r(),g(`div`,{ref_key:`blockContainer`,ref:yt,class:h([`mermaid-block-container rounded-lg border overflow-hidden`,[{"is-rendering":_.loading,dark:_.isDark}]]),"data-markstream-mermaid":`1`,"data-markstream-mode":P.value?`fallback`:H.value?`preview`:`pending`,"data-markstream-pending":fn.value?`true`:void 0},[_.showHeader?(r(),g(`div`,Ue,[e.$slots[`header-left`]?(r(),g(`div`,We,[de(e.$slots,`header-left`,{},void 0,!0)])):(r(),g(`div`,Ge,[d(`span`,{class:`icon-slot action-icon shrink-0`,innerHTML:m(` diff --git a/apps/pythinker-code/dist-web/assets/index3-BpVQpQH2.js b/apps/pythinker-code/dist-web/assets/index3-BpVQpQH2.js new file mode 100644 index 000000000..8ab7eac69 --- /dev/null +++ b/apps/pythinker-code/dist-web/assets/index3-BpVQpQH2.js @@ -0,0 +1 @@ +import e from"./CodeBlockNode-dfP7URyJ.js";export{e as default}; \ No newline at end of file diff --git a/apps/pythinker-code/dist-web/assets/index3-CB2yWI7V.js b/apps/pythinker-code/dist-web/assets/index3-CB2yWI7V.js deleted file mode 100644 index 88af1681a..000000000 --- a/apps/pythinker-code/dist-web/assets/index3-CB2yWI7V.js +++ /dev/null @@ -1 +0,0 @@ -import e from"./CodeBlockNode-D0W6r4O4.js";export{e as default}; \ No newline at end of file diff --git a/apps/pythinker-code/dist-web/assets/index4-DMAnvl7P.js b/apps/pythinker-code/dist-web/assets/index4-DMAnvl7P.js new file mode 100644 index 000000000..28405b9de --- /dev/null +++ b/apps/pythinker-code/dist-web/assets/index4-DMAnvl7P.js @@ -0,0 +1 @@ +import e from"./Tooltip-Dg3XeiZZ.js";export{e as default}; \ No newline at end of file diff --git a/apps/pythinker-code/dist-web/assets/index4-a1ugmBbs.js b/apps/pythinker-code/dist-web/assets/index4-a1ugmBbs.js deleted file mode 100644 index 1b30c9079..000000000 --- a/apps/pythinker-code/dist-web/assets/index4-a1ugmBbs.js +++ /dev/null @@ -1 +0,0 @@ -import e from"./Tooltip-Bj1LyJqp.js";export{e as default}; \ No newline at end of file diff --git a/apps/pythinker-code/dist-web/assets/index5-zhInUTZK.js b/apps/pythinker-code/dist-web/assets/index5-Cr4upCog.js similarity index 97% rename from apps/pythinker-code/dist-web/assets/index5-zhInUTZK.js rename to apps/pythinker-code/dist-web/assets/index5-Cr4upCog.js index 30445af5c..5a5405f0f 100644 --- a/apps/pythinker-code/dist-web/assets/index5-zhInUTZK.js +++ b/apps/pythinker-code/dist-web/assets/index5-Cr4upCog.js @@ -1 +1 @@ -import{E as e,I as t,U as n,ct as r,g as i,k as a,m as o,ot as s,q as c,w as l,y as u,z as d}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import f from"./CodeBlockNode-D0W6r4O4.js";var p=Object.defineProperty,m=Object.defineProperties,h=Object.getOwnPropertyDescriptors,g=Object.getOwnPropertySymbols,_=Object.prototype.hasOwnProperty,v=Object.prototype.propertyIsEnumerable,y=(e,t,n)=>t in e?p(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,b=l({__name:`MarkdownCodeBlockNode`,props:{node:{},loading:{type:Boolean,default:!0},stream:{type:Boolean,default:!0},darkTheme:{default:`vitesse-dark`},lightTheme:{default:`vitesse-light`},isDark:{type:Boolean,default:!1},isShowPreview:{type:Boolean,default:!0},enableFontSizeControl:{type:Boolean,default:!0},minWidth:{default:void 0},maxWidth:{default:void 0},showPreviewButton:{type:Boolean,default:!0},showCollapseButton:{type:Boolean,default:!0},showFontSizeButtons:{type:Boolean,default:!0},showTooltips:{type:Boolean},autoScrollOnUpdate:{type:Boolean},autoScrollInitial:{type:Boolean},estimatedHeightPx:{},estimatedContentHeightPx:{},themes:{},langs:{},showHeader:{type:Boolean,default:!0},showCopyButton:{type:Boolean,default:!0},showExpandButton:{type:Boolean,default:!0}},emits:[`previewCode`,`copy`],setup(l,{emit:p}){let b=l,x=p,S=f,C=n(),w=o(()=>{return e=((e,t)=>{for(var n in t||={})_.call(t,n)&&y(e,n,t[n]);if(g)for(var n of g(t))v.call(t,n)&&y(e,n,t[n]);return e})({},C),t={node:b.node,loading:b.loading,stream:b.stream,darkTheme:b.darkTheme,lightTheme:b.lightTheme,isDark:b.isDark,isShowPreview:b.isShowPreview,enableFontSizeControl:b.enableFontSizeControl,minWidth:b.minWidth,maxWidth:b.maxWidth,themes:b.themes,showHeader:b.showHeader,showCopyButton:b.showCopyButton,showExpandButton:b.showExpandButton,showPreviewButton:b.showPreviewButton,showCollapseButton:b.showCollapseButton,showFontSizeButtons:b.showFontSizeButtons,showTooltips:b.showTooltips,estimatedHeightPx:b.estimatedHeightPx,estimatedContentHeightPx:b.estimatedContentHeightPx},m(e,h(t));var e,t});function T(e){x(`previewCode`,{type:e.artifactType,content:b.node.code,title:e.artifactTitle})}return(n,o)=>(t(),i(s(S),a(w.value,{onPreviewCode:T,onCopy:o[0]||=e=>x(`copy`,e)}),u({_:2},[n.$slots[`header-left`]?{name:`header-left`,fn:c(()=>[d(n.$slots,`header-left`)]),key:`0`}:void 0,n.$slots[`header-right`]?{name:`header-right`,fn:c(()=>[d(n.$slots,`header-right`)]),key:`1`}:void 0,n.$slots.loading?{name:`loading`,fn:c(t=>[d(n.$slots,`loading`,r(e(t)))]),key:`2`}:void 0]),1040))}});b.install=e=>{e.component(b.__name,b)};export{b as default}; \ No newline at end of file +import{E as e,I as t,U as n,ct as r,g as i,k as a,m as o,ot as s,q as c,w as l,y as u,z as d}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import f from"./CodeBlockNode-dfP7URyJ.js";var p=Object.defineProperty,m=Object.defineProperties,h=Object.getOwnPropertyDescriptors,g=Object.getOwnPropertySymbols,_=Object.prototype.hasOwnProperty,v=Object.prototype.propertyIsEnumerable,y=(e,t,n)=>t in e?p(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,b=l({__name:`MarkdownCodeBlockNode`,props:{node:{},loading:{type:Boolean,default:!0},stream:{type:Boolean,default:!0},darkTheme:{default:`vitesse-dark`},lightTheme:{default:`vitesse-light`},isDark:{type:Boolean,default:!1},isShowPreview:{type:Boolean,default:!0},enableFontSizeControl:{type:Boolean,default:!0},minWidth:{default:void 0},maxWidth:{default:void 0},showPreviewButton:{type:Boolean,default:!0},showCollapseButton:{type:Boolean,default:!0},showFontSizeButtons:{type:Boolean,default:!0},showTooltips:{type:Boolean},autoScrollOnUpdate:{type:Boolean},autoScrollInitial:{type:Boolean},estimatedHeightPx:{},estimatedContentHeightPx:{},themes:{},langs:{},showHeader:{type:Boolean,default:!0},showCopyButton:{type:Boolean,default:!0},showExpandButton:{type:Boolean,default:!0}},emits:[`previewCode`,`copy`],setup(l,{emit:p}){let b=l,x=p,S=f,C=n(),w=o(()=>{return e=((e,t)=>{for(var n in t||={})_.call(t,n)&&y(e,n,t[n]);if(g)for(var n of g(t))v.call(t,n)&&y(e,n,t[n]);return e})({},C),t={node:b.node,loading:b.loading,stream:b.stream,darkTheme:b.darkTheme,lightTheme:b.lightTheme,isDark:b.isDark,isShowPreview:b.isShowPreview,enableFontSizeControl:b.enableFontSizeControl,minWidth:b.minWidth,maxWidth:b.maxWidth,themes:b.themes,showHeader:b.showHeader,showCopyButton:b.showCopyButton,showExpandButton:b.showExpandButton,showPreviewButton:b.showPreviewButton,showCollapseButton:b.showCollapseButton,showFontSizeButtons:b.showFontSizeButtons,showTooltips:b.showTooltips,estimatedHeightPx:b.estimatedHeightPx,estimatedContentHeightPx:b.estimatedContentHeightPx},m(e,h(t));var e,t});function T(e){x(`previewCode`,{type:e.artifactType,content:b.node.code,title:e.artifactTitle})}return(n,o)=>(t(),i(s(S),a(w.value,{onPreviewCode:T,onCopy:o[0]||=e=>x(`copy`,e)}),u({_:2},[n.$slots[`header-left`]?{name:`header-left`,fn:c(()=>[d(n.$slots,`header-left`)]),key:`0`}:void 0,n.$slots[`header-right`]?{name:`header-right`,fn:c(()=>[d(n.$slots,`header-right`)]),key:`1`}:void 0,n.$slots.loading?{name:`loading`,fn:c(t=>[d(n.$slots,`loading`,r(e(t)))]),key:`2`}:void 0]),1040))}});b.install=e=>{e.component(b.__name,b)};export{b as default}; \ No newline at end of file diff --git a/apps/pythinker-code/dist-web/assets/index6-DWSH8E97.js b/apps/pythinker-code/dist-web/assets/index6-DOjSPjd-.js similarity index 98% rename from apps/pythinker-code/dist-web/assets/index6-DWSH8E97.js rename to apps/pythinker-code/dist-web/assets/index6-DOjSPjd-.js index c6ef3aab3..5b70e656e 100644 --- a/apps/pythinker-code/dist-web/assets/index6-DWSH8E97.js +++ b/apps/pythinker-code/dist-web/assets/index6-DOjSPjd-.js @@ -1 +1 @@ -import{A as e,G as t,I as n,N as r,O as i,S as a,T as o,_ as s,h as c,j as ee,lt as l,m as u,n as d,nt as f,q as p,st as m,ut as h,v as g,w as _}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{G as v,H as y,Q as b,U as te,V as ne,W as re,_ as x,d as ie,w as ae}from"./index-Ud6NtwuQ.js";var S=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),C=[`data-markstream-mode`,`data-markstream-pending`],w={key:0,class:`math-loading-overlay`},T=[`innerHTML`],E={key:1,class:`math-block__fallback text-left`},D=x(_({__name:`MathBlockNode`,props:{node:{},indexKey:{},cacheScope:{}},setup(_){let x=_,D=f(null),O=i(b,null),k=u(()=>te(x.node.content)),A=o()?.vnode.el?.nodeType===1,j=u(()=>ie(x,{})),M=function(){if(!x.node.content)return{html:``,text:x.node.raw,loading:!1};if(x.node.loading)return{html:``,text:``,loading:!0};let e=re();if(!e){let e=typeof window>`u`||A;return{html:``,text:e?x.node.raw:``,loading:!e}}try{let t=e.renderToString(k.value,{throwOnError:!1,displayMode:!0});return v(k.value,!0,t),{html:t,text:``,loading:!1}}catch{return{html:``,text:x.node.loading?``:x.node.raw,loading:x.node.loading}}}(),N=f(M.html),P=f(M.text),F=!1,I=0,L=!1,R=null,z=ae(),B=null,V=``,H=f(M.loading),U=f(!1),W=f(q());function G(e){e!=null&&e!==I||(U.value=!1)}function K(){if(x.indexKey==null)return``;let e=x.cacheScope??z?.scope;return`${e!=null&&String(e).length>0?`${String(e)}:`:``}math-block:${String(x.indexKey)}`}function q(){var e;let t=K();return t&&(e=z?.cache.get(t))!=null?e:0}function J(){if(W.value===0)return;W.value=0;let e=K();e&&z?.cache.set(e,0)}function Y(e){if(N.value)return void J();if(!Number.isFinite(e)||e<=0)return;let t=Math.max(W.value,e);if(t===W.value)return;W.value=t;let n=K();n&&z?.cache.set(n,t)}function X(){e(()=>{Y(D.value?.offsetHeight??0)})}function Z(){let e=V;O&&e&&(V=``,O.markSettled(e))}function Q(){return S(this,null,function*(){if(L)return Z(),void G();R&&=(R.abort(),null);let t=++I;if(!x.node.content)return Z(),G(),H.value=!1,N.value=``,P.value=x.node.raw,F=!1,void X();let n=new AbortController;R=n,U.value=!0,L||t!==I||n.signal.aborted?L||G(t):(function(){let e=j.value;O&&e&&V!==e&&(V&&O.markSettled(V),V=e,O.markPending(e))}(),y(k.value,!0,{timeout:3e3,waitTimeout:2e3,maxRetries:8,signal:n.signal}).then(e=>{L||t!==I||(N.value=e,P.value=``,F=!0,H.value=!1,J(),X())}).catch(e=>S(null,null,function*(){if(L||t!==I)return;let n=e?.code||e?.name,r=n===`KATEX_DISABLED`;if(n===`WORKER_INIT_ERROR`||e?.fallbackToRenderer||(n===`WORKER_BUSY`||n===`WORKER_TIMEOUT`)&&!x.node.loading){let e=yield ne();if(L||t!==I)return;if(e){try{let t=e.renderToString(k.value,{throwOnError:x.node.loading,displayMode:!0});N.value=t,P.value=``,F=!0,H.value=!1,J(),X(),v(k.value,!0,t)}catch{}return}}if(r||!x.node.loading)return H.value=!1,N.value=``,P.value=x.node.raw,void X();F||(H.value=!0)})).finally(()=>{L||t!==I||(G(t),function(){let t=V;O&&t&&(V=``,e(()=>{if(!L){let e=D.value?.offsetHeight??0;e>0&&O.reportHeight(t,e)}O.markSettled(t)}))}())}))})}M.html&&(F=!0),M.html&&J();let oe=[{family:`$$`,open:`$$`,close:`$$`},{family:`\\[]`,open:`\\[`,close:`\\]`},{family:`\\[]`,open:`\\[`,close:`]`},{family:`[]`,open:`[`,close:`\\]`},{family:`[]`,open:`[`,close:`]`},{family:`\\()`,open:`\\(`,close:`\\)`},{family:`$`,open:`$`,close:`$`}];function $(e,t){return function(e){let t=String(e??``);for(let{family:e,open:n,close:r}of oe)if((n!==`$`||!t.startsWith(`$$`)&&!t.endsWith(`$$`))&&t.length>=n.length+r.length&&t.startsWith(n)&&t.endsWith(r))return{family:e,inner:t.slice(n.length,t.length-r.length),trusted:!0};return null}(e)||{family:`content`,inner:String(t??``),trusted:!1}}return t(()=>[x.node.content,x.node.loading,x.node.raw],([e,,t],[n,,r])=>{var i,a;(i=$(r,n),a=$(t,e),i.inner===``||i.family===a.family&&(i.trusted&&a.trusted?a.inner.startsWith(i.inner):a.inner===i.inner))||J(),Q()},{flush:`post`}),t([()=>x.indexKey,()=>x.cacheScope],()=>{W.value=q(),X()}),r(()=>{typeof ResizeObserver<`u`&&D.value&&(B=new ResizeObserver(()=>{Y(D.value?.offsetHeight??0)}),B.observe(D.value)),X(),N.value||Q()}),ee(()=>{L=!0,Z(),R&&=(R.abort(),null),B?.disconnect(),B=null}),(e,t)=>(n(),g(`div`,{ref_key:`containerEl`,ref:D,class:`math-block text-center overflow-x-auto relative`,"data-markstream-math":`block`,"data-markstream-mode":N.value?`katex`:P.value?`fallback`:`loading`,"data-markstream-pending":U.value?`true`:void 0,style:l(W.value?{minHeight:`${W.value}px`}:void 0)},[a(d,{name:`math-fade`},{default:p(()=>[!H.value||N.value||P.value?s(``,!0):(n(),g(`div`,w,[...t[0]||=[c(`div`,{class:`math-loading-spinner`},null,-1)]]))]),_:1}),N.value?(n(),g(`div`,{key:0,class:m([`math-block__content`,{"math-rendering":H.value}]),innerHTML:N.value},null,10,T)):P.value?(n(),g(`pre`,E,h(P.value),1)):(n(),g(`div`,{key:2,class:m([`math-block__content`,{"math-rendering":H.value}])},null,2))],12,C))}}),[[`__scopeId`,`data-v-939191ad`]]);D.install=e=>{e.component(D.__name,D)};export{D as default}; \ No newline at end of file +import{A as e,G as t,I as n,N as r,O as i,S as a,T as o,_ as s,h as c,j as ee,lt as l,m as u,n as d,nt as f,q as p,st as m,ut as h,v as g,w as _}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{G as v,H as y,Q as b,U as te,V as ne,W as re,_ as x,d as ie,w as ae}from"./index-BWCY3EFX.js";var S=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),C=[`data-markstream-mode`,`data-markstream-pending`],w={key:0,class:`math-loading-overlay`},T=[`innerHTML`],E={key:1,class:`math-block__fallback text-left`},D=x(_({__name:`MathBlockNode`,props:{node:{},indexKey:{},cacheScope:{}},setup(_){let x=_,D=f(null),O=i(b,null),k=u(()=>te(x.node.content)),A=o()?.vnode.el?.nodeType===1,j=u(()=>ie(x,{})),M=function(){if(!x.node.content)return{html:``,text:x.node.raw,loading:!1};if(x.node.loading)return{html:``,text:``,loading:!0};let e=re();if(!e){let e=typeof window>`u`||A;return{html:``,text:e?x.node.raw:``,loading:!e}}try{let t=e.renderToString(k.value,{throwOnError:!1,displayMode:!0});return v(k.value,!0,t),{html:t,text:``,loading:!1}}catch{return{html:``,text:x.node.loading?``:x.node.raw,loading:x.node.loading}}}(),N=f(M.html),P=f(M.text),F=!1,I=0,L=!1,R=null,z=ae(),B=null,V=``,H=f(M.loading),U=f(!1),W=f(q());function G(e){e!=null&&e!==I||(U.value=!1)}function K(){if(x.indexKey==null)return``;let e=x.cacheScope??z?.scope;return`${e!=null&&String(e).length>0?`${String(e)}:`:``}math-block:${String(x.indexKey)}`}function q(){var e;let t=K();return t&&(e=z?.cache.get(t))!=null?e:0}function J(){if(W.value===0)return;W.value=0;let e=K();e&&z?.cache.set(e,0)}function Y(e){if(N.value)return void J();if(!Number.isFinite(e)||e<=0)return;let t=Math.max(W.value,e);if(t===W.value)return;W.value=t;let n=K();n&&z?.cache.set(n,t)}function X(){e(()=>{Y(D.value?.offsetHeight??0)})}function Z(){let e=V;O&&e&&(V=``,O.markSettled(e))}function Q(){return S(this,null,function*(){if(L)return Z(),void G();R&&=(R.abort(),null);let t=++I;if(!x.node.content)return Z(),G(),H.value=!1,N.value=``,P.value=x.node.raw,F=!1,void X();let n=new AbortController;R=n,U.value=!0,L||t!==I||n.signal.aborted?L||G(t):(function(){let e=j.value;O&&e&&V!==e&&(V&&O.markSettled(V),V=e,O.markPending(e))}(),y(k.value,!0,{timeout:3e3,waitTimeout:2e3,maxRetries:8,signal:n.signal}).then(e=>{L||t!==I||(N.value=e,P.value=``,F=!0,H.value=!1,J(),X())}).catch(e=>S(null,null,function*(){if(L||t!==I)return;let n=e?.code||e?.name,r=n===`KATEX_DISABLED`;if(n===`WORKER_INIT_ERROR`||e?.fallbackToRenderer||(n===`WORKER_BUSY`||n===`WORKER_TIMEOUT`)&&!x.node.loading){let e=yield ne();if(L||t!==I)return;if(e){try{let t=e.renderToString(k.value,{throwOnError:x.node.loading,displayMode:!0});N.value=t,P.value=``,F=!0,H.value=!1,J(),X(),v(k.value,!0,t)}catch{}return}}if(r||!x.node.loading)return H.value=!1,N.value=``,P.value=x.node.raw,void X();F||(H.value=!0)})).finally(()=>{L||t!==I||(G(t),function(){let t=V;O&&t&&(V=``,e(()=>{if(!L){let e=D.value?.offsetHeight??0;e>0&&O.reportHeight(t,e)}O.markSettled(t)}))}())}))})}M.html&&(F=!0),M.html&&J();let oe=[{family:`$$`,open:`$$`,close:`$$`},{family:`\\[]`,open:`\\[`,close:`\\]`},{family:`\\[]`,open:`\\[`,close:`]`},{family:`[]`,open:`[`,close:`\\]`},{family:`[]`,open:`[`,close:`]`},{family:`\\()`,open:`\\(`,close:`\\)`},{family:`$`,open:`$`,close:`$`}];function $(e,t){return function(e){let t=String(e??``);for(let{family:e,open:n,close:r}of oe)if((n!==`$`||!t.startsWith(`$$`)&&!t.endsWith(`$$`))&&t.length>=n.length+r.length&&t.startsWith(n)&&t.endsWith(r))return{family:e,inner:t.slice(n.length,t.length-r.length),trusted:!0};return null}(e)||{family:`content`,inner:String(t??``),trusted:!1}}return t(()=>[x.node.content,x.node.loading,x.node.raw],([e,,t],[n,,r])=>{var i,a;(i=$(r,n),a=$(t,e),i.inner===``||i.family===a.family&&(i.trusted&&a.trusted?a.inner.startsWith(i.inner):a.inner===i.inner))||J(),Q()},{flush:`post`}),t([()=>x.indexKey,()=>x.cacheScope],()=>{W.value=q(),X()}),r(()=>{typeof ResizeObserver<`u`&&D.value&&(B=new ResizeObserver(()=>{Y(D.value?.offsetHeight??0)}),B.observe(D.value)),X(),N.value||Q()}),ee(()=>{L=!0,Z(),R&&=(R.abort(),null),B?.disconnect(),B=null}),(e,t)=>(n(),g(`div`,{ref_key:`containerEl`,ref:D,class:`math-block text-center overflow-x-auto relative`,"data-markstream-math":`block`,"data-markstream-mode":N.value?`katex`:P.value?`fallback`:`loading`,"data-markstream-pending":U.value?`true`:void 0,style:l(W.value?{minHeight:`${W.value}px`}:void 0)},[a(d,{name:`math-fade`},{default:p(()=>[!H.value||N.value||P.value?s(``,!0):(n(),g(`div`,w,[...t[0]||=[c(`div`,{class:`math-loading-spinner`},null,-1)]]))]),_:1}),N.value?(n(),g(`div`,{key:0,class:m([`math-block__content`,{"math-rendering":H.value}]),innerHTML:N.value},null,10,T)):P.value?(n(),g(`pre`,E,h(P.value),1)):(n(),g(`div`,{key:2,class:m([`math-block__content`,{"math-rendering":H.value}])},null,2))],12,C))}}),[[`__scopeId`,`data-v-939191ad`]]);D.install=e=>{e.component(D.__name,D)};export{D as default}; \ No newline at end of file diff --git a/apps/pythinker-code/dist-web/assets/index7-DVxpAUAg.js b/apps/pythinker-code/dist-web/assets/index7-D3XnABVb.js similarity index 97% rename from apps/pythinker-code/dist-web/assets/index7-DVxpAUAg.js rename to apps/pythinker-code/dist-web/assets/index7-D3XnABVb.js index d32daee45..70b72bf7f 100644 --- a/apps/pythinker-code/dist-web/assets/index7-DVxpAUAg.js +++ b/apps/pythinker-code/dist-web/assets/index7-D3XnABVb.js @@ -1 +1 @@ -import{G as e,I as t,N as n,T as r,_ as i,g as a,h as o,j as s,m as c,n as l,nt as u,q as d,ut as f,v as p,w as m,z as h}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{G as g,H as _,U as v,V as y,W as b,_ as x}from"./index-Ud6NtwuQ.js";var S=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),C=[`data-markstream-mode`,`data-markstream-pending`],w=[`innerHTML`],T={key:1,class:`math-inline math-inline--fallback`},E={class:`math-inline__loading`,role:`status`,"aria-live":`polite`},D=x(m({__name:`MathInlineNode`,props:{node:{}},setup(m){let x=m,D=u(null),O=c(()=>x.node.markup===`$$`),k=c(()=>v(x.node.content)),A=r()?.vnode.el?.nodeType===1,j=function(){if(!x.node.content)return{html:``,text:x.node.loading?``:x.node.raw,loading:x.node.loading};if(x.node.loading)return{html:``,text:``,loading:!0};let e=b();if(!e){let e=typeof window>`u`||A;return{html:``,text:e?x.node.raw:``,loading:!e}}try{let t=e.renderToString(k.value,{throwOnError:!1,displayMode:O.value});return g(k.value,O.value,t),{html:t,text:``,loading:!1}}catch{return{html:``,text:x.node.loading?``:x.node.raw,loading:x.node.loading}}}(),M=u(j.html),N=u(j.text),P=!1,F=0,I=!1,L=null,R=u(j.loading),z=u(!1);function B(e){e!=null&&e!==F||(z.value=!1)}function V(){return S(this,null,function*(){if(I)return;L&&=(L.abort(),null);let e=++F;if(!x.node.content)return B(),M.value=``,N.value=x.node.loading?``:x.node.raw,R.value=x.node.loading,void(P=!1);let t=new AbortController;L=t,z.value=!0,I||e!==F||t.signal.aborted?B(e):_(k.value,O.value,{timeout:1500,waitTimeout:1500,maxRetries:8,signal:t.signal}).then(t=>{I||e!==F||(M.value=t,N.value=``,R.value=!1,P=!0)}).catch(t=>S(null,null,function*(){if(I||e!==F)return;let n=t?.code||t?.name,r=n===`KATEX_DISABLED`;if(n===`WORKER_INIT_ERROR`||t?.fallbackToRenderer||(n===`WORKER_BUSY`||n===`WORKER_TIMEOUT`)&&!x.node.loading){let t=yield y();if(I||e!==F)return;if(t){try{let e=t.renderToString(k.value,{throwOnError:x.node.loading,displayMode:O.value});M.value=e,N.value=``,R.value=!1,P=!0,g(k.value,O.value,e)}catch{}return}}if(r||!x.node.loading)return R.value=!1,M.value=``,void(N.value=x.node.raw);P||(R.value=!0)})).finally(()=>{I||B(e)})})}return j.html&&(P=!0),e(()=>[x.node.content,x.node.loading,x.node.raw,x.node.markup],()=>{V()}),n(()=>{M.value||V()}),s(()=>{I=!0,L&&=(L.abort(),null)}),(e,n)=>(t(),p(`span`,{ref_key:`containerEl`,ref:D,class:`math-inline-wrapper`,"data-markstream-math":`inline`,"data-markstream-mode":M.value?`katex`:N.value?`fallback`:`loading`,"data-markstream-pending":z.value?`true`:void 0},[M.value?(t(),p(`span`,{key:0,class:`math-inline`,innerHTML:M.value},null,8,w)):N.value?(t(),p(`span`,T,f(N.value),1)):R.value?(t(),a(l,{key:2,name:`table-node-fade`},{default:d(()=>[o(`span`,E,[h(e.$slots,`loading`,{isLoading:R.value},()=>[n[0]||=o(`span`,{class:`math-inline__spinner animate-spin`,"aria-hidden":`true`},null,-1),n[1]||=o(`span`,{class:`sr-only`},`Loading`,-1)],!0)])]),_:3})):i(``,!0)],8,C))}}),[[`__scopeId`,`data-v-6c556261`]]);D.install=e=>{e.component(D.__name,D)};export{D as default}; \ No newline at end of file +import{G as e,I as t,N as n,T as r,_ as i,g as a,h as o,j as s,m as c,n as l,nt as u,q as d,ut as f,v as p,w as m,z as h}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{G as g,H as _,U as v,V as y,W as b,_ as x}from"./index-BWCY3EFX.js";var S=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),C=[`data-markstream-mode`,`data-markstream-pending`],w=[`innerHTML`],T={key:1,class:`math-inline math-inline--fallback`},E={class:`math-inline__loading`,role:`status`,"aria-live":`polite`},D=x(m({__name:`MathInlineNode`,props:{node:{}},setup(m){let x=m,D=u(null),O=c(()=>x.node.markup===`$$`),k=c(()=>v(x.node.content)),A=r()?.vnode.el?.nodeType===1,j=function(){if(!x.node.content)return{html:``,text:x.node.loading?``:x.node.raw,loading:x.node.loading};if(x.node.loading)return{html:``,text:``,loading:!0};let e=b();if(!e){let e=typeof window>`u`||A;return{html:``,text:e?x.node.raw:``,loading:!e}}try{let t=e.renderToString(k.value,{throwOnError:!1,displayMode:O.value});return g(k.value,O.value,t),{html:t,text:``,loading:!1}}catch{return{html:``,text:x.node.loading?``:x.node.raw,loading:x.node.loading}}}(),M=u(j.html),N=u(j.text),P=!1,F=0,I=!1,L=null,R=u(j.loading),z=u(!1);function B(e){e!=null&&e!==F||(z.value=!1)}function V(){return S(this,null,function*(){if(I)return;L&&=(L.abort(),null);let e=++F;if(!x.node.content)return B(),M.value=``,N.value=x.node.loading?``:x.node.raw,R.value=x.node.loading,void(P=!1);let t=new AbortController;L=t,z.value=!0,I||e!==F||t.signal.aborted?B(e):_(k.value,O.value,{timeout:1500,waitTimeout:1500,maxRetries:8,signal:t.signal}).then(t=>{I||e!==F||(M.value=t,N.value=``,R.value=!1,P=!0)}).catch(t=>S(null,null,function*(){if(I||e!==F)return;let n=t?.code||t?.name,r=n===`KATEX_DISABLED`;if(n===`WORKER_INIT_ERROR`||t?.fallbackToRenderer||(n===`WORKER_BUSY`||n===`WORKER_TIMEOUT`)&&!x.node.loading){let t=yield y();if(I||e!==F)return;if(t){try{let e=t.renderToString(k.value,{throwOnError:x.node.loading,displayMode:O.value});M.value=e,N.value=``,R.value=!1,P=!0,g(k.value,O.value,e)}catch{}return}}if(r||!x.node.loading)return R.value=!1,M.value=``,void(N.value=x.node.raw);P||(R.value=!0)})).finally(()=>{I||B(e)})})}return j.html&&(P=!0),e(()=>[x.node.content,x.node.loading,x.node.raw,x.node.markup],()=>{V()}),n(()=>{M.value||V()}),s(()=>{I=!0,L&&=(L.abort(),null)}),(e,n)=>(t(),p(`span`,{ref_key:`containerEl`,ref:D,class:`math-inline-wrapper`,"data-markstream-math":`inline`,"data-markstream-mode":M.value?`katex`:N.value?`fallback`:`loading`,"data-markstream-pending":z.value?`true`:void 0},[M.value?(t(),p(`span`,{key:0,class:`math-inline`,innerHTML:M.value},null,8,w)):N.value?(t(),p(`span`,T,f(N.value),1)):R.value?(t(),a(l,{key:2,name:`table-node-fade`},{default:d(()=>[o(`span`,E,[h(e.$slots,`loading`,{isLoading:R.value},()=>[n[0]||=o(`span`,{class:`math-inline__spinner animate-spin`,"aria-hidden":`true`},null,-1),n[1]||=o(`span`,{class:`sr-only`},`Loading`,-1)],!0)])]),_:3})):i(``,!0)],8,C))}}),[[`__scopeId`,`data-v-6c556261`]]);D.install=e=>{e.component(D.__name,D)};export{D as default}; \ No newline at end of file diff --git a/apps/pythinker-code/dist-web/assets/index8-BogL88_S.js b/apps/pythinker-code/dist-web/assets/index8-CstP1mIT.js similarity index 99% rename from apps/pythinker-code/dist-web/assets/index8-BogL88_S.js rename to apps/pythinker-code/dist-web/assets/index8-CstP1mIT.js index dec951340..c2550a273 100644 --- a/apps/pythinker-code/dist-web/assets/index8-BogL88_S.js +++ b/apps/pythinker-code/dist-web/assets/index8-CstP1mIT.js @@ -1 +1 @@ -import{A as e,G as t,I as n,J as r,N as i,O as a,U as o,_ as s,c,h as l,j as ee,lt as u,m as d,nt as f,ot as p,st as m,ut as h,v as g,w as te}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{Q as ne,_,a as re,d as ie,h as ae,n as oe,p as se,r as ce,v as le,x as ue}from"./index-Ud6NtwuQ.js";var de=Object.defineProperty,v=Object.getOwnPropertySymbols,y=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable,x=(e,t,n)=>t in e?de(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,S=(e,t)=>{for(var n in t||={})y.call(t,n)&&x(e,n,t[n]);if(v)for(var n of v(t))b.call(t,n)&&x(e,n,t[n]);return e},C=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),fe=[`data-markstream-mode`,`data-markstream-pending`],pe={key:0,class:`d2-block-header flex justify-between items-center border-b`},me={class:`d2-header-actions flex items-center`},he={key:0,class:`d2-mode-toggle flex items-center gap-0.5`},ge=[`aria-label`],_e={key:0,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},ve={key:1,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},ye=[`aria-label`],be=[`aria-pressed`],xe={key:0,class:`d2-source`},Se={class:`d2-code`},Ce={key:0,class:`d2-error mt-2 text-xs`},we={key:1},Te={key:0,class:`d2-source`},Ee={class:`d2-code`},De={key:0,class:`d2-error mt-2 text-xs`},Oe=[`innerHTML`],ke={key:0,class:`d2-error px-4 pb-3 text-xs`},w=_(te({__name:`D2BlockNode`,props:{node:{},maxHeight:{default:void 0},loading:{type:Boolean,default:!0},isDark:{type:Boolean},progressiveRender:{type:Boolean,default:!0},progressiveIntervalMs:{default:700},themeId:{},darkThemeId:{},showHeader:{type:Boolean,default:!0},showModeToggle:{type:Boolean,default:!0},showCopyButton:{type:Boolean,default:!0},showExportButton:{type:Boolean,default:!0},showCollapseButton:{type:Boolean,default:!0}},setup(te){let _=te,de=o(),v=a(ne,null),{t:y}=re(),b=f(!1),x=f(!1),w=f(!1),T=f(!1),E=f(null),D=f(!1),O=f(``),k=f(``),A=f(0),j=f(``),M=f(``),N=f(null),P=f(null),F=f(null),Ae=se(),je=ue(),Me=le(),I=f(null),Ne=typeof window<`u`,Pe=f(!1),L=f(typeof window>`u`||!Me.value),R=d(()=>_.node.code??``),Fe=d(()=>ie(_,de)),z=d(()=>[_.isDark?`dark`:`light`,_.themeId??`auto`,_.darkThemeId??`auto`,R.value].join(`:`)),B=d(()=>!!O.value&&k.value===z.value),Ie=d(()=>{if(!Pe.value||!R.value||w.value)return!1;let e=z.value;return!!D.value||j.value!==e&&(!E.value||M.value!==e)}),Le=d(()=>B.value||!!O.value&&Ie.value),V=d(()=>w.value||!T.value||!Le.value),Re=d(()=>{if(V.value&&P.value)return{minHeight:`${P.value}px`}}),ze=d(()=>_.maxHeight===`none`?{maxHeight:`none`}:_.maxHeight==null?void 0:{maxHeight:typeof _.maxHeight==`number`?`${_.maxHeight}px`:String(_.maxHeight)}),H=null,U=!1,W=!1,Be=0,G=null,K=!1,q=null,J=``;typeof window<`u`&&t([()=>F.value,Me],([e,t])=>{var n;if((n=I.value)==null||n.destroy(),I.value=null,!t||L.value)return void(L.value=!0);if(!e)return void(L.value=!1);let r=je?.value.heavyBlockMargin??je?.value.rootMargin??`160px`,i=Ae(e,{rootMargin:r,allowIdle:!1});I.value=i,L.value=i.isVisible.value,i.whenVisible.then(()=>{L.value=!0})},{immediate:!0});let Ve={N1:`#E5E7EB`,N2:`#CBD5E1`,N3:`#94A3B8`,N4:`#64748B`,N5:`#475569`,N6:`#334155`,N7:`#0B1220`,B1:`#60A5FA`,B2:`#3B82F6`,B3:`#2563EB`,B4:`#1D4ED8`,B5:`#1E40AF`,B6:`#111827`,AA2:`#22D3EE`,AA4:`#0EA5E9`,AA5:`#0284C7`,AB4:`#FBBF24`,AB5:`#F59E0B`};function He(e){return!e||e.disabled}function Y(e,t,n=`top`){if(He(e.currentTarget))return;let r=e,i=r?.clientX!=null&&r?.clientY!=null?{x:r.clientX,y:r.clientY}:void 0;ae(e.currentTarget,t,n,!1,i,_.isDark)}function X(){oe()}function Ue(e){if(He(e.currentTarget))return;let t=b.value?y(`common.copied`)||`Copied`:y(`common.copy`)||`Copy`,n=e,r=n?.clientX!=null&&n?.clientY!=null?{x:n.clientX,y:n.clientY}:void 0;ae(e.currentTarget,t,`top`,!1,r,_.isDark)}function We(){return C(this,null,function*(){try{let e=R.value;typeof navigator<`u`&&navigator.clipboard&&typeof navigator.clipboard.writeText==`function`&&(yield navigator.clipboard.writeText(e)),b.value=!0,setTimeout(()=>{b.value=!1},1e3)}catch(e){console.error(`Copy failed:`,e)}})}function Ge(){x.value=!x.value}function Ke(e){w.value=e===`source`}let qe=[/javascript:/i,/expression\s*\(/i,/url\s*\(\s*javascript:/i,/@import/i],Je=/^(?:https?:|mailto:|tel:|#|\/|data:image\/(?:png|gif|jpe?g|webp);)/i;function Ye(e){if(!e)return``;let t=e.trim();return Je.test(t)?t:``}function Xe(){O.value=``,k.value=``}function Z(e){return W||e!==A.value}function Ze(){return C(this,null,function*(){if(!Ne||W||!L.value||_.loading&&!_.progressiveRender)return;let t=z.value;if(t===j.value&&!E.value&&B.value)return T.value=!0,void(_.loading&&(w.value=!1));let n=R.value;if(!n)return Xe(),E.value=null,j.value=``,void(M.value=``);let r=++A.value;D.value=!0,E.value=null,M.value=``,function(){let e=Fe.value;v&&e&&J!==e&&(J&&v.markSettled(J),J=e,v.markPending(e))}();try{let e=yield function(){return C(this,null,function*(){if(H)return H;let e=yield ce();if(W||!e)return null;if(typeof e==`function`){let t=new e;return t&&typeof t.compile==`function`?H=t:typeof e.compile==`function`&&(H=e),H}return e?.D2&&typeof e.D2==`function`?(H=new e.D2,H):(typeof e.compile==`function`&&(H=e),H)})}();if(Z(r))return;if(!e)return T.value=!1,w.value=!0,Xe(),E.value=`D2 is not available.`,void(M.value=t);if(typeof e.compile!=`function`||typeof e.render!=`function`)throw TypeError(`D2 instance is missing compile/render methods.`);T.value=!0;let i=yield e.compile(n);if(Z(r))return;let a=i?.diagram??i,o=i?.renderOptions??i?.options??{},s=_.themeId??o.themeID,c=_.darkThemeId??o.darkThemeID,l=S({},o);if(l.themeID=_.isDark&&c!=null?c:s,l.darkThemeID=null,l.darkThemeOverrides=null,_.isDark){let e=o.themeOverrides&&typeof o.themeOverrides==`object`?o.themeOverrides:null;l.themeOverrides=S(S({},Ve),e||{})}let ee=yield e.render(a,l);if(Z(r))return;let u=function(e){return e?typeof e==`string`?e:typeof e.svg==`string`?e.svg:typeof e.data==`string`?e.data:``:``}(ee);if(!u)throw Error(`D2 render returned empty output.`);(function(e,t){let n=function(e){if(typeof window>`u`||typeof DOMParser>`u`||!e)return``;let t=e.replace(/["']\s*javascript:/gi,`#`).replace(/\bjavascript:/gi,`#`).replace(/["']\s*vbscript:/gi,`#`).replace(/\bvbscript:/gi,`#`).replace(/\bdata:text\/html/gi,`#`),n=new DOMParser().parseFromString(t,`image/svg+xml`).documentElement;if(!n||n.nodeName.toLowerCase()!==`svg`)return``;let r=n;return function(e){let t=new Set([`script`]),n=[e,...Array.from(e.querySelectorAll(`*`))];for(let e of n){if(t.has(e.tagName.toLowerCase())){e.remove();continue}let n=Array.from(e.attributes);for(let t of n){let n=t.name;if(/^on/i.test(n))e.removeAttribute(n);else{if(n===`style`&&t.value){let r=t.value;if(qe.some(e=>e.test(r))){e.removeAttribute(n);continue}}if((n===`href`||n===`xlink:href`)&&t.value){let r=Ye(t.value);if(!r){e.removeAttribute(n);continue}r!==t.value&&e.setAttribute(n,r)}}}}}(r),r.classList.add(`markstream-d2-root-svg`),r.outerHTML}(e);O.value=n||``,k.value=n?t:``})(u,t),j.value=t,M.value=``,_.loading&&(w.value=!1),E.value=null}catch(e){if(Z(r))return;let n=e?.message?String(e.message):`D2 render failed.`;_.loading||(E.value=n,M.value=t),j.value=``,n.includes(`@terrastruct/d2`)&&(T.value=!1,w.value=!0)}finally{Z(r)||(D.value=!1,K?(K=!1,Q()):function(){let t=J;v&&t&&(J=``,e(()=>{if(!W){let e=F.value?.offsetHeight??0;e>0&&v.reportHeight(t,e)}v.markSettled(t)}))}())}})}function Q(e=!1){if(U||!Ne||W)return;if(D.value)return void(K=!0);let t=Math.max(120,Number(_.progressiveIntervalMs)||0),n=Date.now()-Be;if(!e&&n{G=null,K&&(K=!1,Q(!0))},Math.max(0,t-n))));U=!0;let r=()=>{U=!1,Be=Date.now(),Ze()};typeof window<`u`&&typeof window.requestAnimationFrame==`function`?window.requestAnimationFrame(r):setTimeout(r,0)}function Qe(){if(B.value)try{let e=new Blob([O.value],{type:`image/svg+xml;charset=utf-8`}),t=URL.createObjectURL(e);if(typeof document<`u`){let e=document.createElement(`a`);e.href=t,e.download=`d2-diagram-${Date.now()}.svg`,document.body.appendChild(e),e.click(),document.body.removeChild(e)}URL.revokeObjectURL(t)}catch(e){console.error(`Failed to export SVG:`,e)}}function $(){let e=N.value;if(!e)return;let t=e.getBoundingClientRect().height;t>0&&(P.value=t)}return t(()=>[_.node.code,_.loading,_.isDark,_.themeId,_.darkThemeId],()=>{Q()},{immediate:!0}),t(()=>_.loading,(e,t)=>{t&&!e&&Q(!0)}),t(()=>L.value,e=>{e&&Q(!0)}),t(()=>[V.value,O.value,R.value],()=>{e(()=>{$()})}),i(()=>{Pe.value=!0,e(()=>{$()}),typeof ResizeObserver<`u`&&(q=new ResizeObserver(()=>{$()}),N.value&&q.observe(N.value))}),ee(()=>{var e;W=!0,A.value+=1,K=!1,function(){let e=J;v&&e&&(J=``,v.markSettled(e))}(),j.value=``,(e=I.value)==null||e.destroy(),I.value=null,G!=null&&(clearTimeout(G),G=null),q?.disconnect(),q=null}),(e,t)=>(n(),g(`div`,{ref_key:`viewportTarget`,ref:F,class:m([`d2-block-container rounded-lg border overflow-hidden`,{dark:_.isDark}]),"data-markstream-d2":`1`,"data-markstream-mode":V.value?`fallback`:`preview`,"data-markstream-pending":Ie.value?`true`:void 0},[_.showHeader?(n(),g(`div`,pe,[t[16]||=l(`div`,{class:`flex items-center gap-x-2`},[l(`span`,{class:`d2-label font-medium font-mono`},`D2`)],-1),l(`div`,me,[_.showModeToggle?(n(),g(`div`,he,[l(`button`,{type:`button`,class:m([`mode-btn px-2 py-0.5 rounded`,w.value?``:`is-active`]),onClick:t[0]||=e=>Ke(`preview`),onMouseenter:t[1]||=e=>Y(e,p(y)(`common.preview`)||`Preview`),onFocus:t[2]||=e=>Y(e,p(y)(`common.preview`)||`Preview`),onMouseleave:X,onBlur:X},h(p(y)(`common.preview`)||`Preview`),35),l(`button`,{type:`button`,class:m([`mode-btn px-2 py-0.5 rounded`,w.value?`is-active`:``]),onClick:t[3]||=e=>Ke(`source`),onMouseenter:t[4]||=e=>Y(e,p(y)(`common.source`)||`Source`),onFocus:t[5]||=e=>Y(e,p(y)(`common.source`)||`Source`),onMouseleave:X,onBlur:X},h(p(y)(`common.source`)||`Source`),35)])):s(``,!0),_.showCopyButton?(n(),g(`button`,{key:1,type:`button`,class:`d2-action-btn p-[var(--ms-action-btn-padding)] rounded-md`,"aria-label":b.value?p(y)(`common.copied`)||`Copied`:p(y)(`common.copy`)||`Copy`,onClick:We,onMouseenter:t[6]||=e=>Ue(e),onFocus:t[7]||=e=>Ue(e),onMouseleave:X,onBlur:X},[b.value?(n(),g(`svg`,ve,[...t[13]||=[l(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M20 6L9 17l-5-5`},null,-1)]])):(n(),g(`svg`,_e,[...t[12]||=[l(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[l(`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}),l(`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`})],-1)]]))],40,ge)):s(``,!0),_.showExportButton&&B.value?(n(),g(`button`,{key:2,type:`button`,class:`d2-action-btn p-[var(--ms-action-btn-padding)] rounded-md`,"aria-label":p(y)(`common.export`)||`Export`,onClick:Qe,onMouseenter:t[8]||=e=>Y(e,p(y)(`common.export`)||`Export`),onFocus:t[9]||=e=>Y(e,p(y)(`common.export`)||`Export`),onMouseleave:X,onBlur:X},[...t[14]||=[l(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[l(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 3v12m0-12l-4 4m4-4l4 4M4 14v4a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-4`})],-1)]],40,ye)):s(``,!0),_.showCollapseButton?(n(),g(`button`,{key:3,type:`button`,class:`d2-action-btn p-[var(--ms-action-btn-padding)] rounded-md`,"aria-pressed":x.value,onClick:Ge,onMouseenter:t[10]||=e=>Y(e,x.value?p(y)(`common.expand`)||`Expand`:p(y)(`common.collapse`)||`Collapse`),onFocus:t[11]||=e=>Y(e,x.value?p(y)(`common.expand`)||`Expand`:p(y)(`common.collapse`)||`Collapse`),onMouseleave:X,onBlur:X},[(n(),g(`svg`,{style:u({rotate:x.value?`0deg`:`90deg`}),xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[...t[15]||=[l(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m9 18l6-6l-6-6`},null,-1)]],4))],40,be)):s(``,!0)])])):s(``,!0),r(l(`div`,{ref_key:`bodyRef`,ref:N,class:`d2-block-body`,style:u(Re.value)},[_.loading&&!Le.value?(n(),g(`div`,xe,[l(`pre`,Se,[l(`code`,null,h(R.value),1)]),E.value?(n(),g(`p`,Ce,h(E.value),1)):s(``,!0)])):(n(),g(`div`,we,[V.value?(n(),g(`div`,Te,[l(`pre`,Ee,[l(`code`,null,h(R.value),1)]),E.value?(n(),g(`p`,De,h(E.value),1)):s(``,!0)])):(n(),g(`div`,{key:1,class:`d2-render`,style:u(ze.value)},[l(`div`,{class:`d2-svg`,innerHTML:O.value},null,8,Oe),E.value?(n(),g(`p`,ke,h(E.value),1)):s(``,!0)],4))]))],4),[[c,!x.value]])],10,fe))}}),[[`__scopeId`,`data-v-3b434cf5`]]);w.install=e=>{e.component(w.__name,w)};export{w as default}; \ No newline at end of file +import{A as e,G as t,I as n,J as r,N as i,O as a,U as o,_ as s,c,h as l,j as ee,lt as u,m as d,nt as f,ot as p,st as m,ut as h,v as g,w as te}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{Q as ne,_,a as re,d as ie,h as ae,n as oe,p as se,r as ce,v as le,x as ue}from"./index-BWCY3EFX.js";var de=Object.defineProperty,v=Object.getOwnPropertySymbols,y=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable,x=(e,t,n)=>t in e?de(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,S=(e,t)=>{for(var n in t||={})y.call(t,n)&&x(e,n,t[n]);if(v)for(var n of v(t))b.call(t,n)&&x(e,n,t[n]);return e},C=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),fe=[`data-markstream-mode`,`data-markstream-pending`],pe={key:0,class:`d2-block-header flex justify-between items-center border-b`},me={class:`d2-header-actions flex items-center`},he={key:0,class:`d2-mode-toggle flex items-center gap-0.5`},ge=[`aria-label`],_e={key:0,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},ve={key:1,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},ye=[`aria-label`],be=[`aria-pressed`],xe={key:0,class:`d2-source`},Se={class:`d2-code`},Ce={key:0,class:`d2-error mt-2 text-xs`},we={key:1},Te={key:0,class:`d2-source`},Ee={class:`d2-code`},De={key:0,class:`d2-error mt-2 text-xs`},Oe=[`innerHTML`],ke={key:0,class:`d2-error px-4 pb-3 text-xs`},w=_(te({__name:`D2BlockNode`,props:{node:{},maxHeight:{default:void 0},loading:{type:Boolean,default:!0},isDark:{type:Boolean},progressiveRender:{type:Boolean,default:!0},progressiveIntervalMs:{default:700},themeId:{},darkThemeId:{},showHeader:{type:Boolean,default:!0},showModeToggle:{type:Boolean,default:!0},showCopyButton:{type:Boolean,default:!0},showExportButton:{type:Boolean,default:!0},showCollapseButton:{type:Boolean,default:!0}},setup(te){let _=te,de=o(),v=a(ne,null),{t:y}=re(),b=f(!1),x=f(!1),w=f(!1),T=f(!1),E=f(null),D=f(!1),O=f(``),k=f(``),A=f(0),j=f(``),M=f(``),N=f(null),P=f(null),F=f(null),Ae=se(),je=ue(),Me=le(),I=f(null),Ne=typeof window<`u`,Pe=f(!1),L=f(typeof window>`u`||!Me.value),R=d(()=>_.node.code??``),Fe=d(()=>ie(_,de)),z=d(()=>[_.isDark?`dark`:`light`,_.themeId??`auto`,_.darkThemeId??`auto`,R.value].join(`:`)),B=d(()=>!!O.value&&k.value===z.value),Ie=d(()=>{if(!Pe.value||!R.value||w.value)return!1;let e=z.value;return!!D.value||j.value!==e&&(!E.value||M.value!==e)}),Le=d(()=>B.value||!!O.value&&Ie.value),V=d(()=>w.value||!T.value||!Le.value),Re=d(()=>{if(V.value&&P.value)return{minHeight:`${P.value}px`}}),ze=d(()=>_.maxHeight===`none`?{maxHeight:`none`}:_.maxHeight==null?void 0:{maxHeight:typeof _.maxHeight==`number`?`${_.maxHeight}px`:String(_.maxHeight)}),H=null,U=!1,W=!1,Be=0,G=null,K=!1,q=null,J=``;typeof window<`u`&&t([()=>F.value,Me],([e,t])=>{var n;if((n=I.value)==null||n.destroy(),I.value=null,!t||L.value)return void(L.value=!0);if(!e)return void(L.value=!1);let r=je?.value.heavyBlockMargin??je?.value.rootMargin??`160px`,i=Ae(e,{rootMargin:r,allowIdle:!1});I.value=i,L.value=i.isVisible.value,i.whenVisible.then(()=>{L.value=!0})},{immediate:!0});let Ve={N1:`#E5E7EB`,N2:`#CBD5E1`,N3:`#94A3B8`,N4:`#64748B`,N5:`#475569`,N6:`#334155`,N7:`#0B1220`,B1:`#60A5FA`,B2:`#3B82F6`,B3:`#2563EB`,B4:`#1D4ED8`,B5:`#1E40AF`,B6:`#111827`,AA2:`#22D3EE`,AA4:`#0EA5E9`,AA5:`#0284C7`,AB4:`#FBBF24`,AB5:`#F59E0B`};function He(e){return!e||e.disabled}function Y(e,t,n=`top`){if(He(e.currentTarget))return;let r=e,i=r?.clientX!=null&&r?.clientY!=null?{x:r.clientX,y:r.clientY}:void 0;ae(e.currentTarget,t,n,!1,i,_.isDark)}function X(){oe()}function Ue(e){if(He(e.currentTarget))return;let t=b.value?y(`common.copied`)||`Copied`:y(`common.copy`)||`Copy`,n=e,r=n?.clientX!=null&&n?.clientY!=null?{x:n.clientX,y:n.clientY}:void 0;ae(e.currentTarget,t,`top`,!1,r,_.isDark)}function We(){return C(this,null,function*(){try{let e=R.value;typeof navigator<`u`&&navigator.clipboard&&typeof navigator.clipboard.writeText==`function`&&(yield navigator.clipboard.writeText(e)),b.value=!0,setTimeout(()=>{b.value=!1},1e3)}catch(e){console.error(`Copy failed:`,e)}})}function Ge(){x.value=!x.value}function Ke(e){w.value=e===`source`}let qe=[/javascript:/i,/expression\s*\(/i,/url\s*\(\s*javascript:/i,/@import/i],Je=/^(?:https?:|mailto:|tel:|#|\/|data:image\/(?:png|gif|jpe?g|webp);)/i;function Ye(e){if(!e)return``;let t=e.trim();return Je.test(t)?t:``}function Xe(){O.value=``,k.value=``}function Z(e){return W||e!==A.value}function Ze(){return C(this,null,function*(){if(!Ne||W||!L.value||_.loading&&!_.progressiveRender)return;let t=z.value;if(t===j.value&&!E.value&&B.value)return T.value=!0,void(_.loading&&(w.value=!1));let n=R.value;if(!n)return Xe(),E.value=null,j.value=``,void(M.value=``);let r=++A.value;D.value=!0,E.value=null,M.value=``,function(){let e=Fe.value;v&&e&&J!==e&&(J&&v.markSettled(J),J=e,v.markPending(e))}();try{let e=yield function(){return C(this,null,function*(){if(H)return H;let e=yield ce();if(W||!e)return null;if(typeof e==`function`){let t=new e;return t&&typeof t.compile==`function`?H=t:typeof e.compile==`function`&&(H=e),H}return e?.D2&&typeof e.D2==`function`?(H=new e.D2,H):(typeof e.compile==`function`&&(H=e),H)})}();if(Z(r))return;if(!e)return T.value=!1,w.value=!0,Xe(),E.value=`D2 is not available.`,void(M.value=t);if(typeof e.compile!=`function`||typeof e.render!=`function`)throw TypeError(`D2 instance is missing compile/render methods.`);T.value=!0;let i=yield e.compile(n);if(Z(r))return;let a=i?.diagram??i,o=i?.renderOptions??i?.options??{},s=_.themeId??o.themeID,c=_.darkThemeId??o.darkThemeID,l=S({},o);if(l.themeID=_.isDark&&c!=null?c:s,l.darkThemeID=null,l.darkThemeOverrides=null,_.isDark){let e=o.themeOverrides&&typeof o.themeOverrides==`object`?o.themeOverrides:null;l.themeOverrides=S(S({},Ve),e||{})}let ee=yield e.render(a,l);if(Z(r))return;let u=function(e){return e?typeof e==`string`?e:typeof e.svg==`string`?e.svg:typeof e.data==`string`?e.data:``:``}(ee);if(!u)throw Error(`D2 render returned empty output.`);(function(e,t){let n=function(e){if(typeof window>`u`||typeof DOMParser>`u`||!e)return``;let t=e.replace(/["']\s*javascript:/gi,`#`).replace(/\bjavascript:/gi,`#`).replace(/["']\s*vbscript:/gi,`#`).replace(/\bvbscript:/gi,`#`).replace(/\bdata:text\/html/gi,`#`),n=new DOMParser().parseFromString(t,`image/svg+xml`).documentElement;if(!n||n.nodeName.toLowerCase()!==`svg`)return``;let r=n;return function(e){let t=new Set([`script`]),n=[e,...Array.from(e.querySelectorAll(`*`))];for(let e of n){if(t.has(e.tagName.toLowerCase())){e.remove();continue}let n=Array.from(e.attributes);for(let t of n){let n=t.name;if(/^on/i.test(n))e.removeAttribute(n);else{if(n===`style`&&t.value){let r=t.value;if(qe.some(e=>e.test(r))){e.removeAttribute(n);continue}}if((n===`href`||n===`xlink:href`)&&t.value){let r=Ye(t.value);if(!r){e.removeAttribute(n);continue}r!==t.value&&e.setAttribute(n,r)}}}}}(r),r.classList.add(`markstream-d2-root-svg`),r.outerHTML}(e);O.value=n||``,k.value=n?t:``})(u,t),j.value=t,M.value=``,_.loading&&(w.value=!1),E.value=null}catch(e){if(Z(r))return;let n=e?.message?String(e.message):`D2 render failed.`;_.loading||(E.value=n,M.value=t),j.value=``,n.includes(`@terrastruct/d2`)&&(T.value=!1,w.value=!0)}finally{Z(r)||(D.value=!1,K?(K=!1,Q()):function(){let t=J;v&&t&&(J=``,e(()=>{if(!W){let e=F.value?.offsetHeight??0;e>0&&v.reportHeight(t,e)}v.markSettled(t)}))}())}})}function Q(e=!1){if(U||!Ne||W)return;if(D.value)return void(K=!0);let t=Math.max(120,Number(_.progressiveIntervalMs)||0),n=Date.now()-Be;if(!e&&n{G=null,K&&(K=!1,Q(!0))},Math.max(0,t-n))));U=!0;let r=()=>{U=!1,Be=Date.now(),Ze()};typeof window<`u`&&typeof window.requestAnimationFrame==`function`?window.requestAnimationFrame(r):setTimeout(r,0)}function Qe(){if(B.value)try{let e=new Blob([O.value],{type:`image/svg+xml;charset=utf-8`}),t=URL.createObjectURL(e);if(typeof document<`u`){let e=document.createElement(`a`);e.href=t,e.download=`d2-diagram-${Date.now()}.svg`,document.body.appendChild(e),e.click(),document.body.removeChild(e)}URL.revokeObjectURL(t)}catch(e){console.error(`Failed to export SVG:`,e)}}function $(){let e=N.value;if(!e)return;let t=e.getBoundingClientRect().height;t>0&&(P.value=t)}return t(()=>[_.node.code,_.loading,_.isDark,_.themeId,_.darkThemeId],()=>{Q()},{immediate:!0}),t(()=>_.loading,(e,t)=>{t&&!e&&Q(!0)}),t(()=>L.value,e=>{e&&Q(!0)}),t(()=>[V.value,O.value,R.value],()=>{e(()=>{$()})}),i(()=>{Pe.value=!0,e(()=>{$()}),typeof ResizeObserver<`u`&&(q=new ResizeObserver(()=>{$()}),N.value&&q.observe(N.value))}),ee(()=>{var e;W=!0,A.value+=1,K=!1,function(){let e=J;v&&e&&(J=``,v.markSettled(e))}(),j.value=``,(e=I.value)==null||e.destroy(),I.value=null,G!=null&&(clearTimeout(G),G=null),q?.disconnect(),q=null}),(e,t)=>(n(),g(`div`,{ref_key:`viewportTarget`,ref:F,class:m([`d2-block-container rounded-lg border overflow-hidden`,{dark:_.isDark}]),"data-markstream-d2":`1`,"data-markstream-mode":V.value?`fallback`:`preview`,"data-markstream-pending":Ie.value?`true`:void 0},[_.showHeader?(n(),g(`div`,pe,[t[16]||=l(`div`,{class:`flex items-center gap-x-2`},[l(`span`,{class:`d2-label font-medium font-mono`},`D2`)],-1),l(`div`,me,[_.showModeToggle?(n(),g(`div`,he,[l(`button`,{type:`button`,class:m([`mode-btn px-2 py-0.5 rounded`,w.value?``:`is-active`]),onClick:t[0]||=e=>Ke(`preview`),onMouseenter:t[1]||=e=>Y(e,p(y)(`common.preview`)||`Preview`),onFocus:t[2]||=e=>Y(e,p(y)(`common.preview`)||`Preview`),onMouseleave:X,onBlur:X},h(p(y)(`common.preview`)||`Preview`),35),l(`button`,{type:`button`,class:m([`mode-btn px-2 py-0.5 rounded`,w.value?`is-active`:``]),onClick:t[3]||=e=>Ke(`source`),onMouseenter:t[4]||=e=>Y(e,p(y)(`common.source`)||`Source`),onFocus:t[5]||=e=>Y(e,p(y)(`common.source`)||`Source`),onMouseleave:X,onBlur:X},h(p(y)(`common.source`)||`Source`),35)])):s(``,!0),_.showCopyButton?(n(),g(`button`,{key:1,type:`button`,class:`d2-action-btn p-[var(--ms-action-btn-padding)] rounded-md`,"aria-label":b.value?p(y)(`common.copied`)||`Copied`:p(y)(`common.copy`)||`Copy`,onClick:We,onMouseenter:t[6]||=e=>Ue(e),onFocus:t[7]||=e=>Ue(e),onMouseleave:X,onBlur:X},[b.value?(n(),g(`svg`,ve,[...t[13]||=[l(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M20 6L9 17l-5-5`},null,-1)]])):(n(),g(`svg`,_e,[...t[12]||=[l(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[l(`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}),l(`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`})],-1)]]))],40,ge)):s(``,!0),_.showExportButton&&B.value?(n(),g(`button`,{key:2,type:`button`,class:`d2-action-btn p-[var(--ms-action-btn-padding)] rounded-md`,"aria-label":p(y)(`common.export`)||`Export`,onClick:Qe,onMouseenter:t[8]||=e=>Y(e,p(y)(`common.export`)||`Export`),onFocus:t[9]||=e=>Y(e,p(y)(`common.export`)||`Export`),onMouseleave:X,onBlur:X},[...t[14]||=[l(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[l(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 3v12m0-12l-4 4m4-4l4 4M4 14v4a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-4`})],-1)]],40,ye)):s(``,!0),_.showCollapseButton?(n(),g(`button`,{key:3,type:`button`,class:`d2-action-btn p-[var(--ms-action-btn-padding)] rounded-md`,"aria-pressed":x.value,onClick:Ge,onMouseenter:t[10]||=e=>Y(e,x.value?p(y)(`common.expand`)||`Expand`:p(y)(`common.collapse`)||`Collapse`),onFocus:t[11]||=e=>Y(e,x.value?p(y)(`common.expand`)||`Expand`:p(y)(`common.collapse`)||`Collapse`),onMouseleave:X,onBlur:X},[(n(),g(`svg`,{style:u({rotate:x.value?`0deg`:`90deg`}),xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,role:`img`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,class:`action-icon`},[...t[15]||=[l(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m9 18l6-6l-6-6`},null,-1)]],4))],40,be)):s(``,!0)])])):s(``,!0),r(l(`div`,{ref_key:`bodyRef`,ref:N,class:`d2-block-body`,style:u(Re.value)},[_.loading&&!Le.value?(n(),g(`div`,xe,[l(`pre`,Se,[l(`code`,null,h(R.value),1)]),E.value?(n(),g(`p`,Ce,h(E.value),1)):s(``,!0)])):(n(),g(`div`,we,[V.value?(n(),g(`div`,Te,[l(`pre`,Ee,[l(`code`,null,h(R.value),1)]),E.value?(n(),g(`p`,De,h(E.value),1)):s(``,!0)])):(n(),g(`div`,{key:1,class:`d2-render`,style:u(ze.value)},[l(`div`,{class:`d2-svg`,innerHTML:O.value},null,8,Oe),E.value?(n(),g(`p`,ke,h(E.value),1)):s(``,!0)],4))]))],4),[[c,!x.value]])],10,fe))}}),[[`__scopeId`,`data-v-3b434cf5`]]);w.install=e=>{e.component(w.__name,w)};export{w as default}; \ No newline at end of file diff --git a/apps/pythinker-code/dist-web/assets/index9-DrhwA7rQ.js b/apps/pythinker-code/dist-web/assets/index9-BMNg-UH3.js similarity index 99% rename from apps/pythinker-code/dist-web/assets/index9-DrhwA7rQ.js rename to apps/pythinker-code/dist-web/assets/index9-BMNg-UH3.js index 02666b017..55af5b2ba 100644 --- a/apps/pythinker-code/dist-web/assets/index9-DrhwA7rQ.js +++ b/apps/pythinker-code/dist-web/assets/index9-BMNg-UH3.js @@ -1,2 +1,2 @@ -import{A as e,F as t,G as n,I as r,L as i,N as a,R as o,V as s,_ as c,d as l,et as u,g as d,h as f,j as ee,k as te,lt as ne,m as p,nt as m,ot as re,rt as ie,st as ae,ut as oe,v as h,w as se,x as ce,z as le}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{C as ue,E as de,S as g,_ as fe,b as pe,c as me,f as he,k as ge,m as _e,u as ve,y as ye}from"./index-Ud6NtwuQ.js";var be=Object.defineProperty,_=Object.defineProperties,xe=Object.getOwnPropertyDescriptors,Se=Object.getOwnPropertySymbols,Ce=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable,v=(e,t,n)=>t in e?be(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Te=(e,t)=>{for(var n in t||={})Ce.call(t,n)&&v(e,n,t[n]);if(Se)for(var n of Se(t))we.call(t,n)&&v(e,n,t[n]);return e},Ee=(e,t)=>_(e,xe(t)),De=(e,t,n)=>v(e,typeof t==`symbol`?t:t+``,n),Oe=[`data-markstream-item-key`,`data-markstream-item-kind`],ke={key:0,class:`markstream-virtual-timeline__status`},y=.5,Ae=fe(se(Ee(Te({},{name:`MarkstreamVirtualTimeline`}),{__name:`MarkstreamVirtualTimeline`,props:{items:{},threadKey:{},layoutRevision:{},getKey:{},getKind:{},getContent:{},getFinal:{},getRevision:{},estimateItemHeight:{},overscan:{default:4},overscanPx:{default:1200},stickToBottom:{type:[Boolean,String],default:`auto`},measurementKey:{},markdownMode:{default:`docs`},markdownCodeRenderer:{},initialThreadState:{},markdownFade:{type:Boolean,default:!1},restoreMaxLoadingMs:{type:[Number,Boolean],default:!1},debug:{type:Boolean}},emits:[`height-change`,`virtual-state-change`,`range-change`,`thread-state-change`],setup(se,{expose:fe,emit:be}){let _=se,xe=be;function Se(e){xe(`thread-state-change`,e)}function Ce(e){return e===`measured`||e===`final`}function we(e){return!0===e?.stable&&function(e){if(!e)return!1;let t=Number(e.nodeCount),n=Number(e.measuredCount),r=Math.max(0,Number(e.liveRange?.start??0)),i=Math.min(t,Math.max(r,Number(e.liveRange?.end??0))),a=Math.max(0,i-r);return!0===e.final&&e.confidence===`mixed`&&t>0&&n>0&&n=a)}(e)}let v=new Map;function Ae(e){!0===_.debug&&v.set(e,(v.get(e)??0)+1)}let b=m(null),x=m(0),S=m(0),C=m(0),w=m(!0),T=m(!0),E=u(new Map),D=new Map,O=new Map,k=new Map,A=new Map,j=new Set,M=u(new Map),je=u(new Map),Me=new Map,N=new Map,Ne=new Map,Pe=new Map,P=m(!1),F=m(!0);i(`markstreamHostScrollManaged`,m(!0));let Fe=[0,80,180,360,640],Ie,I,Le=null,L=null,Re=0,R=null,ze=[],z=null,B=null,Be=-1,V=0,H=null,Ve=!1,He=!1,Ue=null,We=0,Ge=0,Ke={top:0,bottom:0},qe=!1,U=p(()=>_.threadKey==null?void 0:String(_.threadKey)),Je=U.value;function Ye(e){return e===`chat`||e===`minimal`||e===`docs`?e:`docs`}let Xe=p(()=>Ye(_.markdownMode)),Ze=p(()=>function(e,t=Ye(_.markdownMode)){return e===`pre`||e===`shiki`||e===`monaco`?e:t===`docs`?`monaco`:`pre`}(_.markdownCodeRenderer,Xe.value)),Qe=p(()=>[_.measurementKey==null?``:String(_.measurementKey),C.value].join(`:`)),$e=p(()=>`${Qe.value}${Xe.value}${Ze.value}`);class et{constructor(e){De(this,`tree`),De(this,`total`),this.tree=Array.from({length:e.length+1},()=>0),this.total=0,e.forEach((e,t)=>this.add(t,e))}add(e,t){if(Number.isFinite(t)&&t!==0){this.total+=t;for(let n=e+1;n0;)n+=this.tree[t],t-=t&-t;return n}lowerBound(e,t=`gte`){let n=this.tree.length-1;if(n<=0||e<=0)return 0;if(e>=this.total)return n-1;let r=0,i=1;for(;i<<10;i>>=1){let n=r+i;if(n(rt.value,{records:tt.value,totalHeight:nt.value.total}));function at(){let e=[],t=[],n=function(){return U.value??`timeline`}();W.clear();for(let r=0;r<_.items.length;r++){let i=_.items[r],a=ft(i,r),o={item:i,index:r,key:a,kind:de(i,r,_),markdown:_e(i,r,_)},s=wt(o);s??=it[r]??he(i,r,_);let c=Ee(Te({},o),{renderKey:`${n}:${a}`,offset:0,size:s,component:i?.component});e.push(c),t.push(s),W.has(a)||W.set(a,c)}tt.value=e,nt.value=new et(t),it=[],rt.value+=1}function ot(e){return rt.value,nt.value.prefixSum(e.index)}function st(e){return Ee(Te({},e),{offset:ot(e)})}function ct(e,t){let n=W.get(e);if(!n)return;let r=Math.ceil(t),i=r-n.size;i!==0&&(n.size=r,nt.value.add(n.index,i),rt.value+=1)}function lt(e,t=`gte`){return rt.value,nt.value.lowerBound(e,t)}let ut=p(()=>Math.max(0,_.overscan??4)),dt=p(()=>{let e=Math.max(0,_.overscanPx??1200);return F.value?e:Math.min(e,160)}),K=p(()=>{let e=G.value.records;if(e.length===0)return{start:0,end:0,records:[],topSpacerHeight:0,bottomSpacerHeight:0};let t=ut.value,n=dt.value,r=Rt(),i=r+Math.max(1,S.value),a=lt(Math.max(0,r-n),`gt`),o=lt(Math.min(G.value.totalHeight,i+n))+1;a=Math.max(0,a-t),o=Math.min(e.length,Math.max(o+t,a+1));let s=e.slice(a,o).map(st),c=s[0],l=s[s.length-1],u=c?.offset??0,d=l?.offset??0;return{start:a,end:o,records:s,topSpacerHeight:u,bottomSpacerHeight:Math.max(0,G.value.totalHeight-(d+(l?.size??0)))}});function ft(e,t){return pe(e,t,_)}let pt=new WeakMap,mt=1;function q(e){if(typeof e!=`object`&&typeof e!=`function`||e===null)return String(e??``);let t=e,n=pt.get(t);return n||(n=mt++,pt.set(t,n)),String(n)}function ht(e,t,n){if(n)return``;let r=typeof e?.text==`string`?e.text:typeof e?.message==`string`?e.message:typeof e?.label==`string`?e.label:String(g(e,t,_)??``);return r?`${r.length}:${function(e){let t=2166136261;for(let n=0;n>>0).toString(36)}(r)}`:``}function gt(e,t){if(typeof _.estimateItemHeight!=`function`)return``;let n=_.estimateItemHeight(e,t);if(!Number.isFinite(n)||n<=0)return``;let r=Math.ceil(n);return it[t]=r,String(r)}function J(e){return _.items[e.index]??e.item}function _t(e){return e.item}function vt(e){return J(e)?.component??e.component}function yt(e,t=U.value){let n=ue(_t(e),e.index,_);return[t??`timeline`,e.key,n==null?``:String(n)].join(`:`)}function bt(e,t=U.value){if(e.markdown)return yt(e,t);let n=ue(_t(e),e.index,_);return[t??`timeline`,e.key,n==null?``:String(n)].join(`:`)}function xt(e){return{sourceKey:bt(e),measurementKey:e.markdown?$e.value:Qe.value,widthBucket:C.value}}function St(e,t){return(e?.sourceKey??``)===(t?.sourceKey??``)&&(e?.measurementKey??``)===(t?.measurementKey??``)&&(e?.widthBucket??0)===(t?.widthBucket??0)}function Ct(e,t,n=U.value){return!(!e||!t)&&t.sourceKey===bt(e,n)&&t.measurementKey===(e.markdown?$e.value:Qe.value)&&(t.widthBucket??0)===C.value}function wt(e,t=U.value){let n=E.get(e.key);return Ct(e,D.get(e.key),t)&&Number.isFinite(n)&&n>0?n:null}function Tt(e){return G.value,W.get(e)}function Et(e,t){return!!(e&&e.markdown&&t)&&t.sessionKey===yt(e)&&(t.threadKey??``)===(U.value??``)&&!!function(e){let t=$e.value,n=e??``;return n===t||n.startsWith(`${t}\0`)}(t.measurementKey)}function Dt(e,t){return Et(e,t)}function Ot(e,t,n){!Number.isFinite(t)||t<=0||(je.set(e,Math.ceil(t)),Me.set(e,n))}function kt(e,t=M.get(e)){let n=function(e,t=M.get(e)){if(!Dt(Tt(e),t))return 0;let n=Number(t?.metrics?.totalHeight);return Number.isFinite(n)&&n>0?Math.ceil(n):0}(e,t);return n>0&&Ot(e,n,t),n}function At(e){return Et(Tt(e),Me.get(e))?je.get(e)??0:kt(e)}function jt(e){return e===Re&&V===e&&!F.value}function Mt(){if(R!=null&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(R),R=null,z!=null&&typeof window<`u`&&window.clearTimeout(z),z=null,typeof window<`u`)for(let e of ze)window.clearTimeout(e);ze=[]}function Nt(){return Math.max(0,S.value||b.value?.clientHeight||0)}function Pt(){let e=b.value;if(!e||typeof getComputedStyle!=`function`)return void(Ke={top:0,bottom:0});let t=getComputedStyle(e);Ke={top:Number.parseFloat(t.paddingTop)||0,bottom:Number.parseFloat(t.paddingBottom)||0}}function Ft(){return Ke.top}function It(){let e=Ke;return Math.max(0,G.value.totalHeight+e.top+e.bottom)}function Lt(){return Math.max(It(),b.value?.scrollHeight??0)}function Rt(){return Math.max(0,x.value-Ft())}function Y(){return Math.max(0,Lt()-Nt())}function zt(e){let t=Number(e);return Number.isFinite(t)?Math.max(0,Math.min(t,Y())):0}function Bt(){return Math.max(0,Y()-x.value)}function Vt(){let e=Bt();T.value=e<=2,!0===_.stickToBottom?w.value=!0:!1===_.stickToBottom?w.value=!1:w.value=e<=48}function Ht(){let e=b.value?.clientWidth??0;C.value=Number.isFinite(e)&&e>0?32*Math.round(e/32):0}function X(e={}){let t=b.value;t&&(x.value=Math.max(0,t.scrollTop||0),S.value=t.clientHeight||0),Ht(),Vt(),(!0===e.remember||!1!==e.remember&&!P.value)&&Q()}function Ut(e,t={}){let n=zt(e),r=b.value;if(x.value=n,r&&(S.value=r.clientHeight||S.value||0,!1!==t.writeDom&&Math.abs((r.scrollTop||0)-n)>y)){let e={target:n,preserveBottomPin:!1!==_.stickToBottom&&Math.abs(Y()-n)<=2};L=F.value?e:null,r.scrollTop=n,e.target=Math.max(0,r.scrollTop||0)}Ht(),!1!==t.updatePinned&&Vt(),(!0===t.remember||!1!==t.remember&&!P.value)&&Q()}function Wt(){if(!F.value){L=null;let e=b.value,t=H;e&&t!=null&&Math.abs((e.scrollTop||0)-t)>y&&(e.scrollTop=t),$(V,I);return}let e=b.value,t=L,n=Math.max(0,e?.scrollTop||0);e&&t&&Math.abs(n-t.target)<=y&&t.preserveBottomPin&&!1!==_.stickToBottom||e&&T.value&&_.stickToBottom===`auto`&&(Math.abs(Y()-n)<=2||n>=x.value-y)||!0===_.stickToBottom?(w.value=!0,T.value=!0,Ut(Y(),{writeDom:!0,remember:!1})):(L=null,X())}function Gt(e){Ut(e,{writeDom:!0,remember:!0})}function Kt(){Gt(Y())}function qt(e,t){let n=O.get(e);if(!Number.isFinite(n)||n==null||n<=0)return 0;let r=k.get(e);return t&&r&&!Jt(r,t)?0:Math.ceil(n)}function Jt(e,t){return e.sourceKey===t.sourceKey&&((t.widthBucket??0)===0||(e.widthBucket??0)===0||(t.widthBucket??0)===(e.widthBucket??0))&&(Yt(t.measurementKey)||Yt(e.measurementKey)||t.measurementKey===e.measurementKey)}function Yt(e){return e===`:0`||!0===e?.startsWith(`:0`)}function Xt(e){O.delete(e),k.delete(e),A.delete(e),j.delete(e)}function Zt(t,n,r,i={}){if(!Number.isFinite(n)||n<=0)return;let a=E.get(t),o=r&&!St(D.get(t),r),s=!0===i.releaseRestoredFloor;(function(e,t){if(!t)return;let n=k.get(e);n&&!Jt(n,t)&&(O.delete(e),k.delete(e),A.delete(e),j.delete(e))})(t,r),s&&Xt(t);let c=qt(t,r),l=c>0?c:Math.ceil(n);if(a!=null&&Math.abs(a-l)<=1&&!o)return void(s&&(rt.value+=1));if(!1===i.updateLayout)return r&&D.set(t,r),E.set(t,l),void gn(i.rememberThreadKey);if(P.value)return r&&D.set(t,r),E.set(t,l),ct(t,l),void function(t=V,n=I){n&&e(()=>{$(t,n),R==null&&typeof requestAnimationFrame==`function`&&(R=requestAnimationFrame(()=>{R=null,$(t,n)}))})}();let u=(d=pn(),f=Bt(),!0===_.stickToBottom?{type:`bottom`,distanceFromBottomPx:0}:_.stickToBottom===`auto`&&w.value?{type:`bottom`,distanceFromBottomPx:T.value?0:Math.max(0,f)}:d);var d,f;r&&D.set(t,r),E.set(t,l),ct(t,l),gn(i.rememberThreadKey),function(e){if(!Z.scheduled)return Z.anchor=e,Z.scheduled=!0,void(Z.raf=tn(rn));!Z.anchor&&e&&(Z.anchor=e)}(u)}n([()=>function(){let e=_.layoutRevision;return e==null?_.items.map((e,t)=>{let n=ft(e,t),r=_e(e,t,_);return[n,de(e,t,_),+!!r,ue(e,t,_)??``,gt(e,t),ht(e,t,r),(i=e?.component,i?typeof i==`string`?`s:${i}`:`o:${q(i)}`:``)].join(``);var i}).join(`\0`):[`explicit`,String(e),_.items.length].join(``)}(),Qe,$e,U,()=>q(_.estimateItemHeight),()=>q(_.getKey),()=>q(_.getKind),()=>q(_.getContent),()=>q(_.getFinal),()=>q(_.getRevision)],()=>at(),{immediate:!0,flush:`sync`});let Z={scheduled:!1,raf:null,anchor:void 0},Qt=new Map,$t=!1,en=null;function tn(t){return typeof requestAnimationFrame==`function`?requestAnimationFrame(t):(e(t),null)}function nn(e){e!=null&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(e)}function rn(){if(!Z.scheduled)return;Z.scheduled=!1,Z.raf=null;let e=Z.anchor;Z.anchor=void 0;let t=e?.type===`bottom`&&e.distanceFromBottomPx<=2&&T.value;e&&vn(e);let n=b.value,r=!n||Math.abs((n.scrollTop||0)-x.value)<=y;t&&!r||X({remember:!1})}function an(){if(!$t)return;$t=!1,en=null;let e=Array.from(Qt.entries());Qt.clear();for(let[t,n]of e){if(je.get(t)!==n.logicalHeight)continue;let e=W.get(t);if(!e)continue;let r=(n.threadKey??``)===(U.value??``);cn(e,{allowMarkdownShrink:n.allowMarkdownShrink,allowRestoredFloorShrink:n.allowRestoredFloorShrink,markdownLogicalHeight:n.logicalHeight,rememberThreadKey:n.threadKey,source:n.itemSizeSource,updateLayout:r})}rn()}function on(){an(),rn()}function sn(e){var t;(t=Ne.get(e))==null||t.disconnect(),Ne.delete(e),N.delete(e)}function cn(e,t={}){var n;let r=(i=e.key,ve(N.get(i),Ae));var i;let a=t.source??xt(e),o=!1,s=()=>{o||(o=!0,function(e,t){let n=function(){if(!0!==_.debug||v.size===0)return null;let e=0;for(let t of v.values())e+=t;let t={total:e,byLabel:Object.fromEntries(Array.from(v.entries()).sort((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0])))};return v.clear(),t}();n&&console.info(`[markstream-vue][timeline][perf] layout-reads`,{label:e,itemKey:t,layoutReads:n})}(`reconcileRecordSize`,e.key))};if(!e.markdown)return r>0&&Zt(e.key,r,a,t),void s();let c=St(D.get(e.key),a)&&(n=E.get(e.key))!=null?n:0,l=t.markdownLogicalHeight??At(e.key),u=function(e,t){return me(N.get(e),Ae,t)}(e.key,r);if(l>0){let n=Math.max(r,l+u);(!t.allowMarkdownShrink||P.value)&&c>0&&(n=Math.max(n,c));let i=qt(e.key,a),o=i>0&&n>i+1&&(!ye(J(e),e.index,_)||!0===t.allowRestoredFloorShrink);e.markdown&&i>0&&(!0===t.allowRestoredFloorShrink||o)?P.value?j.add(e.key):t=Ee(Te({},t),{releaseRestoredFloor:!0}):t.allowMarkdownShrink&&!P.value&&(i<=0||t.allowRestoredFloorShrink&&function(e,t,n){let r=A.get(e);return!Number.isFinite(r)||r==null||r<=0||t+Math.max(0,n-r)0&&Zt(e.key,n,a,t),s();return}String(g(J(e),e.index,_)).trim()?c>0?(r>c+1&&Zt(e.key,r,a,t),s()):(r>0&&Zt(e.key,r,a,t),s()):(r>0&&(Xt(e.key),Zt(e.key,r,a,t)),s())}function ln(e){return t=>{(function(e,t){let n=function(e){let t=e&&`$el`in e?e.$el:e;return t instanceof HTMLElement?t:null}(t),r=N.get(e.key);if(!n)return void sn(e.key);if(r===n)return void cn(e);if(sn(e.key),N.set(e.key,n),cn(e),typeof ResizeObserver>`u`)return;let i=new ResizeObserver(()=>{cn(e)});i.observe(n),Ne.set(e.key,i)})(e,t)}}function un(e){let t=J(e),n=ye(t,e.index,_),r=M.get(e.key),i=Xe.value,a=Ze.value,o={enabled:!0,sessionKey:yt(e),threadKey:U.value,scrollRoot:()=>b.value,restoreState:Dt(e,r)?r:null,restoreAnchor:!1,measurementKey:$e.value,settleMode:`manual`,settledToken:n,emitIntervalMs:96,heightDiffThresholdPx:4};return Ee(Te({content:g(t,e.index,_),final:n,mode:i,codeRenderer:a},n?{nodeVirtual:`auto`,maxLiveNodes:50,liveNodeBuffer:16}:{}),{fade:!0===_.markdownFade,indexKey:yt(e),virtualScroll:o,onHeightChange(t){if(t.sessionKey!==yt(e))return;Ot(e.key,t.totalHeight,{sessionKey:t.sessionKey,threadKey:U.value,measurementKey:$e.value});let n=function(e){return e.phase===`final`||!(!0!==e.final||!Ce(e.confidence))||!!e.stable&&(Ce(e.confidence)||we(e))}(t),r=function(e){return e.phase===`final`||!!e.stable&&(Ce(e.confidence)||we(e))}(t),i=Math.ceil(t.totalHeight);var a;(function(e,t){Qt.set(e.key,t),$t||($t=!0,en=tn(an))})(e,{allowMarkdownShrink:n,allowRestoredFloorShrink:r,itemSizeSource:xt(e),logicalHeight:i,threadKey:U.value}),a={itemKey:e.key,metrics:t},xe(`height-change`,a)},onVirtualStateChange(t){var n;t.sessionKey===yt(e)&&(M.set(e.key,t),kt(e.key,t),gn(),n={itemKey:e.key,state:t},xe(`virtual-state-change`,n))}})}function dn(e){return{item:J(e),index:e.index,itemKey:e.key,kind:e.kind,measureRef:ln(e),markdownProps:un(e)}}function fn(e){let t=J(e)??{};return typeof t.text==`string`?t.text:typeof t.message==`string`?t.message:typeof t.label==`string`?t.label:g(t,e.index,_)}function pn(){let e=Bt();if(e<=2)return{type:`bottom`,distanceFromBottomPx:Math.max(0,e)};let t=Rt(),n=lt(t,`gt`),r=G.value.records[n];if(r){let e=ot(r);if(t>=e&&t{B=null,hn()},80):hn()))}function _n(e){if(!e)return null;if(e.type===`bottom`)return(F.value?Lt():It())-Nt()-Math.max(0,e.distanceFromBottomPx);let t=Tt(e.itemKey);return t?Ft()+ot(t)+Math.max(0,e.offsetWithinItemPx):null}function vn(e,t={}){let n=_n(e);return n!=null&&(Ut(n,{writeDom:!0,remember:!0===t.remember}),!0)}function $(e,t){e===Re&&(t&&(H=vn(t,{remember:!1})?x.value:null),X({remember:!1}))}function yn(e,t){let n=e.getBoundingClientRect();return n.width>0&&n.height>0&&n.bottom>t.top&&n.topr.top&&n.top0&&n.height>0}function Sn(e){if(!e||e.classList.contains(`is-fading-out`))return!1;let t=window.getComputedStyle(e);if(t.display===`none`||Number.parseFloat(t.opacity||`1`)<=.01)return!1;let n=e.getBoundingClientRect();return n.width>0&&n.height>0}function Cn(e){return Array.from(e.querySelectorAll([`[data-markstream-pending="true"]`,`[data-markstream-mermaid][data-markstream-mode="pending"]`,`.mermaid-block-container[data-markstream-mode="pending"]`,`[data-markstream-code-loading="1"]`].join(`,`))).some(e=>!e.matches(`[data-markstream-code-block="1"]`)||!Sn(e.querySelector(`pre.code-pre-fallback`)))}function wn(e){if(e.querySelector(`:scope > .node-placeholder`))return!1;let t=e.querySelector(`:scope > .node-content`);return!!t&&!Cn(t)&&!!function(e){let t=Array.from(e.querySelectorAll(`[data-markstream-math]`));return!t.length||t.every(e=>{let t=e.dataset.markstreamMode;return!(e.dataset.markstreamPending===`true`||t===`loading`||t!==`katex`&&t!==`fallback`)})}(t)&&((e.dataset.nodeType??``)===`code_block`?function(e){if(e.querySelector(`[data-markstream-code-loading="1"]`))return!1;let t=e.querySelector(`[data-markstream-code-block="1"]`);if(t){let e=t.dataset.markstreamEnhanced===`true`,r=Sn(t.querySelector(`pre.code-pre-fallback`));return e||r||(n=t,Array.from(n.querySelectorAll(`.monaco-editor, .monaco-diff-editor`)).some(xn))}var n;return function(e){let t=e.querySelector(`[data-markstream-mermaid], .mermaid-block-container`);if(t){if(t.dataset.markstreamPending===`true`)return!1;let e=t.dataset.markstreamMode;return e===`preview`?!!(t.querySelector(`svg`)||t.querySelector(`[data-mermaid-svg-layer="1"] svg`)):e===`fallback`&&!!(t.querySelector(`.mermaid-source-code`)?.textContent)?.trim()}let n=e.querySelector(`[data-markstream-infographic], .infographic-block-container`);if(n)return n.dataset.markstreamPending!==`true`;let r=e.querySelector(`[data-markstream-d2], .d2-block-container`);return r?r.dataset.markstreamPending!==`true`:!!e.querySelector(`pre[data-markstream-pre="1"]`)}(e)}(t):function(e){return(e.textContent??``).trim().length>0||!!e.querySelector([`hr`,`br`,`table`,`blockquote`,`img`,`svg`,`canvas`,`input`,`button`,`select`,`textarea`,`[role]`,`[aria-label]`,`[data-markstream-math]`,`[data-markstream-mermaid]`,`[data-markstream-infographic]`,`[data-markstream-d2]`,`[data-markstream-pre="1"]`].join(`,`))}(t))}function Tn(e,t){if(!e.markdown)return!0;let n=g(J(e),e.index,_);if(!String(n??``).trim()||t.querySelector(`[data-node-index]`))return!0;let r=t.querySelector(`.markdown-renderer`)??t;return!Cn(r)&&(!!(r.textContent??``).trim()||!!r.querySelector([`hr`,`br`,`table`,`blockquote`,`img`,`svg`,`canvas`,`input`,`button`,`[role]`,`[aria-label]`,`[data-markstream-math]`,`[data-markstream-mermaid]`,`[data-markstream-infographic]`,`[data-markstream-d2]`,`[data-markstream-pre="1"]`,`[data-markstream-code-block="1"]`].join(`,`)))}function En(e,t,n){if(!e.markdown)return!0;let r=g(J(e),e.index,_);if(!String(r??``).trim())return!0;let i=n.getBoundingClientRect(),a=Array.from(t.querySelectorAll(`[data-node-index]`)).filter(e=>yn(e,i));if(a.length>0)return a.every(e=>wn(e));let o=t.querySelector(`.markdown-renderer`)??t;return o.querySelector(`[data-node-index], .node-placeholder`)?!!function(e,t,n,r){if(!Dn(e))return!1;let i=n.getBoundingClientRect(),a=t.getBoundingClientRect();return i.width>0&&i.height>0&&i.bottom<=r.top+1&&a.bottom>r.top}(e,t,o,i)&&Tn(e,t):Tn(e,t)}function Dn(e){let t=D.get(e.key);return qt(e.key,t)>0}function On(e,t){if(!e.markdown||!Ve&&!He||Dn(e))return!0;let n=g(J(e),e.index,_);if(!String(n??``).trim())return!0;if(!t.querySelector(`.markdown-renderer`))return!1;let r=M.get(e.key);if(!Dt(e,r))return!1;let i=r?.metrics,a=Number(i?.totalHeight??0);if(!Number.isFinite(a)||a<=0)return!1;let o=Number(i?.measuredCount??0),s=Number(i?.estimatedCount??0),c=Number(i?.nodeCount??0),l=c<=0||o>=c&&s<=0,u=Ce(i?.confidence),d=we(i),f=!0===i?.stable||u||d;return He?!0===i?.final&&(l&&u||d):f||!0===i?.final}function kn(){let e=b.value;if(!e)return!1;let t=_n(I);if(t!=null&&Math.abs((e.scrollTop||0)-zt(t))>y)return!1;let n=K.value.records;if(!n.length)return G.value.records.length===0;let r=new Map(Array.from(e.querySelectorAll(`[data-markstream-item-key]`)).map(e=>[e.dataset.markstreamItemKey??``,e])),i=[];for(let t of n){let n=r.get(t.key);n&&bn(n,e)&&i.push({record:t,el:n})}if(!i.length)return!1;for(let{record:t,el:n}of i)if(n.offsetHeight+1!(!yn(e,a)||e.matches(`[data-markstream-code-block="1"]`)&&Sn(e.querySelector(`pre.code-pre-fallback`)))))return!1;let o=Array.from(e.querySelectorAll(`[data-node-index]`)).filter(e=>yn(e,a));for(let e of o)if(!wn(e))return!1;return!0}function An(){let e=b.value;if(!e)return``;let t=e.getBoundingClientRect(),n=new Map(Array.from(e.querySelectorAll(`[data-markstream-item-key]`)).map(e=>[e.dataset.markstreamItemKey??``,e])),r=K.value.records.map(e=>{let t=n.get(e.key),r=t?.querySelector(`.markdown-renderer`),i=M.get(e.key)?.metrics;return[e.key,e.size,t?.offsetHeight??0,t?.scrollHeight??0,r?.offsetHeight??0,r?.scrollHeight??0,i?Math.round(Number(i.totalHeight||0)):``,i?.measuredCount??``,i?.estimatedCount??``,i?.nodeCount??``,+(!0===i?.final),+(!0===i?.stable),i?.confidence??``].join(`:`)}).join(`|`),i=Array.from(e.querySelectorAll(`[data-node-index]`)).filter(e=>yn(e,t)).map(e=>{let t=e.getBoundingClientRect(),n=e.querySelector(`:scope > .node-content`),r=n?.querySelector(`[data-markstream-code-block="1"]`),i=n?.querySelector(`pre.code-pre-fallback`),a=n?.querySelector(`.monaco-editor, .monaco-diff-editor`);return[e.dataset.nodeIndex??``,e.dataset.nodeType??``,Math.round(t.height),n?.offsetHeight??0,n?.scrollHeight??0,r?.dataset.markstreamEnhanced??``,r?Math.round(r.getBoundingClientRect().height):0,i?Math.round(i.getBoundingClientRect().height):0,a?Math.round(a.getBoundingClientRect().height):0].join(`:`)}).join(`|`);return[Math.round(e.scrollTop||0),Math.round(e.scrollHeight||0),Math.round(G.value.totalHeight||0),r,i].join(` +import{A as e,F as t,G as n,I as r,L as i,N as a,R as o,V as s,_ as c,d as l,et as u,g as d,h as f,j as ee,k as te,lt as ne,m as p,nt as m,ot as re,rt as ie,st as ae,ut as oe,v as h,w as se,x as ce,z as le}from"./vue.runtime.esm-bundler-CfVMpQsG.js";import{C as ue,E as de,S as g,_ as fe,b as pe,c as me,f as he,k as ge,m as _e,u as ve,y as ye}from"./index-BWCY3EFX.js";var be=Object.defineProperty,_=Object.defineProperties,xe=Object.getOwnPropertyDescriptors,Se=Object.getOwnPropertySymbols,Ce=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable,v=(e,t,n)=>t in e?be(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Te=(e,t)=>{for(var n in t||={})Ce.call(t,n)&&v(e,n,t[n]);if(Se)for(var n of Se(t))we.call(t,n)&&v(e,n,t[n]);return e},Ee=(e,t)=>_(e,xe(t)),De=(e,t,n)=>v(e,typeof t==`symbol`?t:t+``,n),Oe=[`data-markstream-item-key`,`data-markstream-item-kind`],ke={key:0,class:`markstream-virtual-timeline__status`},y=.5,Ae=fe(se(Ee(Te({},{name:`MarkstreamVirtualTimeline`}),{__name:`MarkstreamVirtualTimeline`,props:{items:{},threadKey:{},layoutRevision:{},getKey:{},getKind:{},getContent:{},getFinal:{},getRevision:{},estimateItemHeight:{},overscan:{default:4},overscanPx:{default:1200},stickToBottom:{type:[Boolean,String],default:`auto`},measurementKey:{},markdownMode:{default:`docs`},markdownCodeRenderer:{},initialThreadState:{},markdownFade:{type:Boolean,default:!1},restoreMaxLoadingMs:{type:[Number,Boolean],default:!1},debug:{type:Boolean}},emits:[`height-change`,`virtual-state-change`,`range-change`,`thread-state-change`],setup(se,{expose:fe,emit:be}){let _=se,xe=be;function Se(e){xe(`thread-state-change`,e)}function Ce(e){return e===`measured`||e===`final`}function we(e){return!0===e?.stable&&function(e){if(!e)return!1;let t=Number(e.nodeCount),n=Number(e.measuredCount),r=Math.max(0,Number(e.liveRange?.start??0)),i=Math.min(t,Math.max(r,Number(e.liveRange?.end??0))),a=Math.max(0,i-r);return!0===e.final&&e.confidence===`mixed`&&t>0&&n>0&&n=a)}(e)}let v=new Map;function Ae(e){!0===_.debug&&v.set(e,(v.get(e)??0)+1)}let b=m(null),x=m(0),S=m(0),C=m(0),w=m(!0),T=m(!0),E=u(new Map),D=new Map,O=new Map,k=new Map,A=new Map,j=new Set,M=u(new Map),je=u(new Map),Me=new Map,N=new Map,Ne=new Map,Pe=new Map,P=m(!1),F=m(!0);i(`markstreamHostScrollManaged`,m(!0));let Fe=[0,80,180,360,640],Ie,I,Le=null,L=null,Re=0,R=null,ze=[],z=null,B=null,Be=-1,V=0,H=null,Ve=!1,He=!1,Ue=null,We=0,Ge=0,Ke={top:0,bottom:0},qe=!1,U=p(()=>_.threadKey==null?void 0:String(_.threadKey)),Je=U.value;function Ye(e){return e===`chat`||e===`minimal`||e===`docs`?e:`docs`}let Xe=p(()=>Ye(_.markdownMode)),Ze=p(()=>function(e,t=Ye(_.markdownMode)){return e===`pre`||e===`shiki`||e===`monaco`?e:t===`docs`?`monaco`:`pre`}(_.markdownCodeRenderer,Xe.value)),Qe=p(()=>[_.measurementKey==null?``:String(_.measurementKey),C.value].join(`:`)),$e=p(()=>`${Qe.value}${Xe.value}${Ze.value}`);class et{constructor(e){De(this,`tree`),De(this,`total`),this.tree=Array.from({length:e.length+1},()=>0),this.total=0,e.forEach((e,t)=>this.add(t,e))}add(e,t){if(Number.isFinite(t)&&t!==0){this.total+=t;for(let n=e+1;n0;)n+=this.tree[t],t-=t&-t;return n}lowerBound(e,t=`gte`){let n=this.tree.length-1;if(n<=0||e<=0)return 0;if(e>=this.total)return n-1;let r=0,i=1;for(;i<<10;i>>=1){let n=r+i;if(n(rt.value,{records:tt.value,totalHeight:nt.value.total}));function at(){let e=[],t=[],n=function(){return U.value??`timeline`}();W.clear();for(let r=0;r<_.items.length;r++){let i=_.items[r],a=ft(i,r),o={item:i,index:r,key:a,kind:de(i,r,_),markdown:_e(i,r,_)},s=wt(o);s??=it[r]??he(i,r,_);let c=Ee(Te({},o),{renderKey:`${n}:${a}`,offset:0,size:s,component:i?.component});e.push(c),t.push(s),W.has(a)||W.set(a,c)}tt.value=e,nt.value=new et(t),it=[],rt.value+=1}function ot(e){return rt.value,nt.value.prefixSum(e.index)}function st(e){return Ee(Te({},e),{offset:ot(e)})}function ct(e,t){let n=W.get(e);if(!n)return;let r=Math.ceil(t),i=r-n.size;i!==0&&(n.size=r,nt.value.add(n.index,i),rt.value+=1)}function lt(e,t=`gte`){return rt.value,nt.value.lowerBound(e,t)}let ut=p(()=>Math.max(0,_.overscan??4)),dt=p(()=>{let e=Math.max(0,_.overscanPx??1200);return F.value?e:Math.min(e,160)}),K=p(()=>{let e=G.value.records;if(e.length===0)return{start:0,end:0,records:[],topSpacerHeight:0,bottomSpacerHeight:0};let t=ut.value,n=dt.value,r=Rt(),i=r+Math.max(1,S.value),a=lt(Math.max(0,r-n),`gt`),o=lt(Math.min(G.value.totalHeight,i+n))+1;a=Math.max(0,a-t),o=Math.min(e.length,Math.max(o+t,a+1));let s=e.slice(a,o).map(st),c=s[0],l=s[s.length-1],u=c?.offset??0,d=l?.offset??0;return{start:a,end:o,records:s,topSpacerHeight:u,bottomSpacerHeight:Math.max(0,G.value.totalHeight-(d+(l?.size??0)))}});function ft(e,t){return pe(e,t,_)}let pt=new WeakMap,mt=1;function q(e){if(typeof e!=`object`&&typeof e!=`function`||e===null)return String(e??``);let t=e,n=pt.get(t);return n||(n=mt++,pt.set(t,n)),String(n)}function ht(e,t,n){if(n)return``;let r=typeof e?.text==`string`?e.text:typeof e?.message==`string`?e.message:typeof e?.label==`string`?e.label:String(g(e,t,_)??``);return r?`${r.length}:${function(e){let t=2166136261;for(let n=0;n>>0).toString(36)}(r)}`:``}function gt(e,t){if(typeof _.estimateItemHeight!=`function`)return``;let n=_.estimateItemHeight(e,t);if(!Number.isFinite(n)||n<=0)return``;let r=Math.ceil(n);return it[t]=r,String(r)}function J(e){return _.items[e.index]??e.item}function _t(e){return e.item}function vt(e){return J(e)?.component??e.component}function yt(e,t=U.value){let n=ue(_t(e),e.index,_);return[t??`timeline`,e.key,n==null?``:String(n)].join(`:`)}function bt(e,t=U.value){if(e.markdown)return yt(e,t);let n=ue(_t(e),e.index,_);return[t??`timeline`,e.key,n==null?``:String(n)].join(`:`)}function xt(e){return{sourceKey:bt(e),measurementKey:e.markdown?$e.value:Qe.value,widthBucket:C.value}}function St(e,t){return(e?.sourceKey??``)===(t?.sourceKey??``)&&(e?.measurementKey??``)===(t?.measurementKey??``)&&(e?.widthBucket??0)===(t?.widthBucket??0)}function Ct(e,t,n=U.value){return!(!e||!t)&&t.sourceKey===bt(e,n)&&t.measurementKey===(e.markdown?$e.value:Qe.value)&&(t.widthBucket??0)===C.value}function wt(e,t=U.value){let n=E.get(e.key);return Ct(e,D.get(e.key),t)&&Number.isFinite(n)&&n>0?n:null}function Tt(e){return G.value,W.get(e)}function Et(e,t){return!!(e&&e.markdown&&t)&&t.sessionKey===yt(e)&&(t.threadKey??``)===(U.value??``)&&!!function(e){let t=$e.value,n=e??``;return n===t||n.startsWith(`${t}\0`)}(t.measurementKey)}function Dt(e,t){return Et(e,t)}function Ot(e,t,n){!Number.isFinite(t)||t<=0||(je.set(e,Math.ceil(t)),Me.set(e,n))}function kt(e,t=M.get(e)){let n=function(e,t=M.get(e)){if(!Dt(Tt(e),t))return 0;let n=Number(t?.metrics?.totalHeight);return Number.isFinite(n)&&n>0?Math.ceil(n):0}(e,t);return n>0&&Ot(e,n,t),n}function At(e){return Et(Tt(e),Me.get(e))?je.get(e)??0:kt(e)}function jt(e){return e===Re&&V===e&&!F.value}function Mt(){if(R!=null&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(R),R=null,z!=null&&typeof window<`u`&&window.clearTimeout(z),z=null,typeof window<`u`)for(let e of ze)window.clearTimeout(e);ze=[]}function Nt(){return Math.max(0,S.value||b.value?.clientHeight||0)}function Pt(){let e=b.value;if(!e||typeof getComputedStyle!=`function`)return void(Ke={top:0,bottom:0});let t=getComputedStyle(e);Ke={top:Number.parseFloat(t.paddingTop)||0,bottom:Number.parseFloat(t.paddingBottom)||0}}function Ft(){return Ke.top}function It(){let e=Ke;return Math.max(0,G.value.totalHeight+e.top+e.bottom)}function Lt(){return Math.max(It(),b.value?.scrollHeight??0)}function Rt(){return Math.max(0,x.value-Ft())}function Y(){return Math.max(0,Lt()-Nt())}function zt(e){let t=Number(e);return Number.isFinite(t)?Math.max(0,Math.min(t,Y())):0}function Bt(){return Math.max(0,Y()-x.value)}function Vt(){let e=Bt();T.value=e<=2,!0===_.stickToBottom?w.value=!0:!1===_.stickToBottom?w.value=!1:w.value=e<=48}function Ht(){let e=b.value?.clientWidth??0;C.value=Number.isFinite(e)&&e>0?32*Math.round(e/32):0}function X(e={}){let t=b.value;t&&(x.value=Math.max(0,t.scrollTop||0),S.value=t.clientHeight||0),Ht(),Vt(),(!0===e.remember||!1!==e.remember&&!P.value)&&Q()}function Ut(e,t={}){let n=zt(e),r=b.value;if(x.value=n,r&&(S.value=r.clientHeight||S.value||0,!1!==t.writeDom&&Math.abs((r.scrollTop||0)-n)>y)){let e={target:n,preserveBottomPin:!1!==_.stickToBottom&&Math.abs(Y()-n)<=2};L=F.value?e:null,r.scrollTop=n,e.target=Math.max(0,r.scrollTop||0)}Ht(),!1!==t.updatePinned&&Vt(),(!0===t.remember||!1!==t.remember&&!P.value)&&Q()}function Wt(){if(!F.value){L=null;let e=b.value,t=H;e&&t!=null&&Math.abs((e.scrollTop||0)-t)>y&&(e.scrollTop=t),$(V,I);return}let e=b.value,t=L,n=Math.max(0,e?.scrollTop||0);e&&t&&Math.abs(n-t.target)<=y&&t.preserveBottomPin&&!1!==_.stickToBottom||e&&T.value&&_.stickToBottom===`auto`&&(Math.abs(Y()-n)<=2||n>=x.value-y)||!0===_.stickToBottom?(w.value=!0,T.value=!0,Ut(Y(),{writeDom:!0,remember:!1})):(L=null,X())}function Gt(e){Ut(e,{writeDom:!0,remember:!0})}function Kt(){Gt(Y())}function qt(e,t){let n=O.get(e);if(!Number.isFinite(n)||n==null||n<=0)return 0;let r=k.get(e);return t&&r&&!Jt(r,t)?0:Math.ceil(n)}function Jt(e,t){return e.sourceKey===t.sourceKey&&((t.widthBucket??0)===0||(e.widthBucket??0)===0||(t.widthBucket??0)===(e.widthBucket??0))&&(Yt(t.measurementKey)||Yt(e.measurementKey)||t.measurementKey===e.measurementKey)}function Yt(e){return e===`:0`||!0===e?.startsWith(`:0`)}function Xt(e){O.delete(e),k.delete(e),A.delete(e),j.delete(e)}function Zt(t,n,r,i={}){if(!Number.isFinite(n)||n<=0)return;let a=E.get(t),o=r&&!St(D.get(t),r),s=!0===i.releaseRestoredFloor;(function(e,t){if(!t)return;let n=k.get(e);n&&!Jt(n,t)&&(O.delete(e),k.delete(e),A.delete(e),j.delete(e))})(t,r),s&&Xt(t);let c=qt(t,r),l=c>0?c:Math.ceil(n);if(a!=null&&Math.abs(a-l)<=1&&!o)return void(s&&(rt.value+=1));if(!1===i.updateLayout)return r&&D.set(t,r),E.set(t,l),void gn(i.rememberThreadKey);if(P.value)return r&&D.set(t,r),E.set(t,l),ct(t,l),void function(t=V,n=I){n&&e(()=>{$(t,n),R==null&&typeof requestAnimationFrame==`function`&&(R=requestAnimationFrame(()=>{R=null,$(t,n)}))})}();let u=(d=pn(),f=Bt(),!0===_.stickToBottom?{type:`bottom`,distanceFromBottomPx:0}:_.stickToBottom===`auto`&&w.value?{type:`bottom`,distanceFromBottomPx:T.value?0:Math.max(0,f)}:d);var d,f;r&&D.set(t,r),E.set(t,l),ct(t,l),gn(i.rememberThreadKey),function(e){if(!Z.scheduled)return Z.anchor=e,Z.scheduled=!0,void(Z.raf=tn(rn));!Z.anchor&&e&&(Z.anchor=e)}(u)}n([()=>function(){let e=_.layoutRevision;return e==null?_.items.map((e,t)=>{let n=ft(e,t),r=_e(e,t,_);return[n,de(e,t,_),+!!r,ue(e,t,_)??``,gt(e,t),ht(e,t,r),(i=e?.component,i?typeof i==`string`?`s:${i}`:`o:${q(i)}`:``)].join(``);var i}).join(`\0`):[`explicit`,String(e),_.items.length].join(``)}(),Qe,$e,U,()=>q(_.estimateItemHeight),()=>q(_.getKey),()=>q(_.getKind),()=>q(_.getContent),()=>q(_.getFinal),()=>q(_.getRevision)],()=>at(),{immediate:!0,flush:`sync`});let Z={scheduled:!1,raf:null,anchor:void 0},Qt=new Map,$t=!1,en=null;function tn(t){return typeof requestAnimationFrame==`function`?requestAnimationFrame(t):(e(t),null)}function nn(e){e!=null&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(e)}function rn(){if(!Z.scheduled)return;Z.scheduled=!1,Z.raf=null;let e=Z.anchor;Z.anchor=void 0;let t=e?.type===`bottom`&&e.distanceFromBottomPx<=2&&T.value;e&&vn(e);let n=b.value,r=!n||Math.abs((n.scrollTop||0)-x.value)<=y;t&&!r||X({remember:!1})}function an(){if(!$t)return;$t=!1,en=null;let e=Array.from(Qt.entries());Qt.clear();for(let[t,n]of e){if(je.get(t)!==n.logicalHeight)continue;let e=W.get(t);if(!e)continue;let r=(n.threadKey??``)===(U.value??``);cn(e,{allowMarkdownShrink:n.allowMarkdownShrink,allowRestoredFloorShrink:n.allowRestoredFloorShrink,markdownLogicalHeight:n.logicalHeight,rememberThreadKey:n.threadKey,source:n.itemSizeSource,updateLayout:r})}rn()}function on(){an(),rn()}function sn(e){var t;(t=Ne.get(e))==null||t.disconnect(),Ne.delete(e),N.delete(e)}function cn(e,t={}){var n;let r=(i=e.key,ve(N.get(i),Ae));var i;let a=t.source??xt(e),o=!1,s=()=>{o||(o=!0,function(e,t){let n=function(){if(!0!==_.debug||v.size===0)return null;let e=0;for(let t of v.values())e+=t;let t={total:e,byLabel:Object.fromEntries(Array.from(v.entries()).sort((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0])))};return v.clear(),t}();n&&console.info(`[markstream-vue][timeline][perf] layout-reads`,{label:e,itemKey:t,layoutReads:n})}(`reconcileRecordSize`,e.key))};if(!e.markdown)return r>0&&Zt(e.key,r,a,t),void s();let c=St(D.get(e.key),a)&&(n=E.get(e.key))!=null?n:0,l=t.markdownLogicalHeight??At(e.key),u=function(e,t){return me(N.get(e),Ae,t)}(e.key,r);if(l>0){let n=Math.max(r,l+u);(!t.allowMarkdownShrink||P.value)&&c>0&&(n=Math.max(n,c));let i=qt(e.key,a),o=i>0&&n>i+1&&(!ye(J(e),e.index,_)||!0===t.allowRestoredFloorShrink);e.markdown&&i>0&&(!0===t.allowRestoredFloorShrink||o)?P.value?j.add(e.key):t=Ee(Te({},t),{releaseRestoredFloor:!0}):t.allowMarkdownShrink&&!P.value&&(i<=0||t.allowRestoredFloorShrink&&function(e,t,n){let r=A.get(e);return!Number.isFinite(r)||r==null||r<=0||t+Math.max(0,n-r)0&&Zt(e.key,n,a,t),s();return}String(g(J(e),e.index,_)).trim()?c>0?(r>c+1&&Zt(e.key,r,a,t),s()):(r>0&&Zt(e.key,r,a,t),s()):(r>0&&(Xt(e.key),Zt(e.key,r,a,t)),s())}function ln(e){return t=>{(function(e,t){let n=function(e){let t=e&&`$el`in e?e.$el:e;return t instanceof HTMLElement?t:null}(t),r=N.get(e.key);if(!n)return void sn(e.key);if(r===n)return void cn(e);if(sn(e.key),N.set(e.key,n),cn(e),typeof ResizeObserver>`u`)return;let i=new ResizeObserver(()=>{cn(e)});i.observe(n),Ne.set(e.key,i)})(e,t)}}function un(e){let t=J(e),n=ye(t,e.index,_),r=M.get(e.key),i=Xe.value,a=Ze.value,o={enabled:!0,sessionKey:yt(e),threadKey:U.value,scrollRoot:()=>b.value,restoreState:Dt(e,r)?r:null,restoreAnchor:!1,measurementKey:$e.value,settleMode:`manual`,settledToken:n,emitIntervalMs:96,heightDiffThresholdPx:4};return Ee(Te({content:g(t,e.index,_),final:n,mode:i,codeRenderer:a},n?{nodeVirtual:`auto`,maxLiveNodes:50,liveNodeBuffer:16}:{}),{fade:!0===_.markdownFade,indexKey:yt(e),virtualScroll:o,onHeightChange(t){if(t.sessionKey!==yt(e))return;Ot(e.key,t.totalHeight,{sessionKey:t.sessionKey,threadKey:U.value,measurementKey:$e.value});let n=function(e){return e.phase===`final`||!(!0!==e.final||!Ce(e.confidence))||!!e.stable&&(Ce(e.confidence)||we(e))}(t),r=function(e){return e.phase===`final`||!!e.stable&&(Ce(e.confidence)||we(e))}(t),i=Math.ceil(t.totalHeight);var a;(function(e,t){Qt.set(e.key,t),$t||($t=!0,en=tn(an))})(e,{allowMarkdownShrink:n,allowRestoredFloorShrink:r,itemSizeSource:xt(e),logicalHeight:i,threadKey:U.value}),a={itemKey:e.key,metrics:t},xe(`height-change`,a)},onVirtualStateChange(t){var n;t.sessionKey===yt(e)&&(M.set(e.key,t),kt(e.key,t),gn(),n={itemKey:e.key,state:t},xe(`virtual-state-change`,n))}})}function dn(e){return{item:J(e),index:e.index,itemKey:e.key,kind:e.kind,measureRef:ln(e),markdownProps:un(e)}}function fn(e){let t=J(e)??{};return typeof t.text==`string`?t.text:typeof t.message==`string`?t.message:typeof t.label==`string`?t.label:g(t,e.index,_)}function pn(){let e=Bt();if(e<=2)return{type:`bottom`,distanceFromBottomPx:Math.max(0,e)};let t=Rt(),n=lt(t,`gt`),r=G.value.records[n];if(r){let e=ot(r);if(t>=e&&t{B=null,hn()},80):hn()))}function _n(e){if(!e)return null;if(e.type===`bottom`)return(F.value?Lt():It())-Nt()-Math.max(0,e.distanceFromBottomPx);let t=Tt(e.itemKey);return t?Ft()+ot(t)+Math.max(0,e.offsetWithinItemPx):null}function vn(e,t={}){let n=_n(e);return n!=null&&(Ut(n,{writeDom:!0,remember:!0===t.remember}),!0)}function $(e,t){e===Re&&(t&&(H=vn(t,{remember:!1})?x.value:null),X({remember:!1}))}function yn(e,t){let n=e.getBoundingClientRect();return n.width>0&&n.height>0&&n.bottom>t.top&&n.topr.top&&n.top0&&n.height>0}function Sn(e){if(!e||e.classList.contains(`is-fading-out`))return!1;let t=window.getComputedStyle(e);if(t.display===`none`||Number.parseFloat(t.opacity||`1`)<=.01)return!1;let n=e.getBoundingClientRect();return n.width>0&&n.height>0}function Cn(e){return Array.from(e.querySelectorAll([`[data-markstream-pending="true"]`,`[data-markstream-mermaid][data-markstream-mode="pending"]`,`.mermaid-block-container[data-markstream-mode="pending"]`,`[data-markstream-code-loading="1"]`].join(`,`))).some(e=>!e.matches(`[data-markstream-code-block="1"]`)||!Sn(e.querySelector(`pre.code-pre-fallback`)))}function wn(e){if(e.querySelector(`:scope > .node-placeholder`))return!1;let t=e.querySelector(`:scope > .node-content`);return!!t&&!Cn(t)&&!!function(e){let t=Array.from(e.querySelectorAll(`[data-markstream-math]`));return!t.length||t.every(e=>{let t=e.dataset.markstreamMode;return!(e.dataset.markstreamPending===`true`||t===`loading`||t!==`katex`&&t!==`fallback`)})}(t)&&((e.dataset.nodeType??``)===`code_block`?function(e){if(e.querySelector(`[data-markstream-code-loading="1"]`))return!1;let t=e.querySelector(`[data-markstream-code-block="1"]`);if(t){let e=t.dataset.markstreamEnhanced===`true`,r=Sn(t.querySelector(`pre.code-pre-fallback`));return e||r||(n=t,Array.from(n.querySelectorAll(`.monaco-editor, .monaco-diff-editor`)).some(xn))}var n;return function(e){let t=e.querySelector(`[data-markstream-mermaid], .mermaid-block-container`);if(t){if(t.dataset.markstreamPending===`true`)return!1;let e=t.dataset.markstreamMode;return e===`preview`?!!(t.querySelector(`svg`)||t.querySelector(`[data-mermaid-svg-layer="1"] svg`)):e===`fallback`&&!!(t.querySelector(`.mermaid-source-code`)?.textContent)?.trim()}let n=e.querySelector(`[data-markstream-infographic], .infographic-block-container`);if(n)return n.dataset.markstreamPending!==`true`;let r=e.querySelector(`[data-markstream-d2], .d2-block-container`);return r?r.dataset.markstreamPending!==`true`:!!e.querySelector(`pre[data-markstream-pre="1"]`)}(e)}(t):function(e){return(e.textContent??``).trim().length>0||!!e.querySelector([`hr`,`br`,`table`,`blockquote`,`img`,`svg`,`canvas`,`input`,`button`,`select`,`textarea`,`[role]`,`[aria-label]`,`[data-markstream-math]`,`[data-markstream-mermaid]`,`[data-markstream-infographic]`,`[data-markstream-d2]`,`[data-markstream-pre="1"]`].join(`,`))}(t))}function Tn(e,t){if(!e.markdown)return!0;let n=g(J(e),e.index,_);if(!String(n??``).trim()||t.querySelector(`[data-node-index]`))return!0;let r=t.querySelector(`.markdown-renderer`)??t;return!Cn(r)&&(!!(r.textContent??``).trim()||!!r.querySelector([`hr`,`br`,`table`,`blockquote`,`img`,`svg`,`canvas`,`input`,`button`,`[role]`,`[aria-label]`,`[data-markstream-math]`,`[data-markstream-mermaid]`,`[data-markstream-infographic]`,`[data-markstream-d2]`,`[data-markstream-pre="1"]`,`[data-markstream-code-block="1"]`].join(`,`)))}function En(e,t,n){if(!e.markdown)return!0;let r=g(J(e),e.index,_);if(!String(r??``).trim())return!0;let i=n.getBoundingClientRect(),a=Array.from(t.querySelectorAll(`[data-node-index]`)).filter(e=>yn(e,i));if(a.length>0)return a.every(e=>wn(e));let o=t.querySelector(`.markdown-renderer`)??t;return o.querySelector(`[data-node-index], .node-placeholder`)?!!function(e,t,n,r){if(!Dn(e))return!1;let i=n.getBoundingClientRect(),a=t.getBoundingClientRect();return i.width>0&&i.height>0&&i.bottom<=r.top+1&&a.bottom>r.top}(e,t,o,i)&&Tn(e,t):Tn(e,t)}function Dn(e){let t=D.get(e.key);return qt(e.key,t)>0}function On(e,t){if(!e.markdown||!Ve&&!He||Dn(e))return!0;let n=g(J(e),e.index,_);if(!String(n??``).trim())return!0;if(!t.querySelector(`.markdown-renderer`))return!1;let r=M.get(e.key);if(!Dt(e,r))return!1;let i=r?.metrics,a=Number(i?.totalHeight??0);if(!Number.isFinite(a)||a<=0)return!1;let o=Number(i?.measuredCount??0),s=Number(i?.estimatedCount??0),c=Number(i?.nodeCount??0),l=c<=0||o>=c&&s<=0,u=Ce(i?.confidence),d=we(i),f=!0===i?.stable||u||d;return He?!0===i?.final&&(l&&u||d):f||!0===i?.final}function kn(){let e=b.value;if(!e)return!1;let t=_n(I);if(t!=null&&Math.abs((e.scrollTop||0)-zt(t))>y)return!1;let n=K.value.records;if(!n.length)return G.value.records.length===0;let r=new Map(Array.from(e.querySelectorAll(`[data-markstream-item-key]`)).map(e=>[e.dataset.markstreamItemKey??``,e])),i=[];for(let t of n){let n=r.get(t.key);n&&bn(n,e)&&i.push({record:t,el:n})}if(!i.length)return!1;for(let{record:t,el:n}of i)if(n.offsetHeight+1!(!yn(e,a)||e.matches(`[data-markstream-code-block="1"]`)&&Sn(e.querySelector(`pre.code-pre-fallback`)))))return!1;let o=Array.from(e.querySelectorAll(`[data-node-index]`)).filter(e=>yn(e,a));for(let e of o)if(!wn(e))return!1;return!0}function An(){let e=b.value;if(!e)return``;let t=e.getBoundingClientRect(),n=new Map(Array.from(e.querySelectorAll(`[data-markstream-item-key]`)).map(e=>[e.dataset.markstreamItemKey??``,e])),r=K.value.records.map(e=>{let t=n.get(e.key),r=t?.querySelector(`.markdown-renderer`),i=M.get(e.key)?.metrics;return[e.key,e.size,t?.offsetHeight??0,t?.scrollHeight??0,r?.offsetHeight??0,r?.scrollHeight??0,i?Math.round(Number(i.totalHeight||0)):``,i?.measuredCount??``,i?.estimatedCount??``,i?.nodeCount??``,+(!0===i?.final),+(!0===i?.stable),i?.confidence??``].join(`:`)}).join(`|`),i=Array.from(e.querySelectorAll(`[data-node-index]`)).filter(e=>yn(e,t)).map(e=>{let t=e.getBoundingClientRect(),n=e.querySelector(`:scope > .node-content`),r=n?.querySelector(`[data-markstream-code-block="1"]`),i=n?.querySelector(`pre.code-pre-fallback`),a=n?.querySelector(`.monaco-editor, .monaco-diff-editor`);return[e.dataset.nodeIndex??``,e.dataset.nodeType??``,Math.round(t.height),n?.offsetHeight??0,n?.scrollHeight??0,r?.dataset.markstreamEnhanced??``,r?Math.round(r.getBoundingClientRect().height):0,i?Math.round(i.getBoundingClientRect().height):0,a?Math.round(a.getBoundingClientRect().height):0].join(`:`)}).join(`|`);return[Math.round(e.scrollTop||0),Math.round(e.scrollHeight||0),Math.round(G.value.totalHeight||0),r,i].join(` `)}function jn(){return typeof performance<`u`?performance.now():Date.now()}function Mn(){return He?24:2}function Nn(t){jt(t)&&We!==t&&(We=t,function(t){return n=this,r=function*(){let n=jn(),r=0,i=``;for(let a=0;a<40;a++){if(yield e(),yield new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>e()):e()}),!jt(t))return!1;$(t,I);let a=jn(),o=kn(),s=o?An():``;if(o&&s===i&&s){if(r+=1,r>=Mn()&&a-n>=96)return!0}else r=0,i=s}return!1},new Promise((e,t)=>{var i=e=>{try{o(r.next(e))}catch(e){t(e)}},a=e=>{try{o(r.throw(e))}catch(e){t(e)}},o=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,a);o((r=r.apply(n,null)).next())});var n,r}(t).then(e=>{if(We===t&&(We=0),jt(t))return e?void Rn(t):function(){if(Be<0)return!1;let e=function(){if(!1===_.restoreMaxLoadingMs)return 1/0;let e=Number(_.restoreMaxLoadingMs);return Number.isFinite(e)&&e>0?e:1/0}();return Number.isFinite(e)&&jn()-Be>=e}()?(_.debug,void Rn(t)):(function(e){Ge!==e&&(Ge=e,_.debug)}(t),void function(e){jt(e)&&typeof window<`u`&&(z!=null&&window.clearTimeout(z),z=window.setTimeout(()=>{z=null,jt(e)&&Nn(e)},120))}(t))}))}function Pn(){F.value=!0,Be=-1,We=0,Ge=0,Ve=!1,He=!1,z!=null&&typeof window<`u`&&window.clearTimeout(z),z=null}function Fn(){qe=!0}function In(e){let t=[];if(!function(e){return!!e&&(e.measurementKey??``)===Qe.value&&(e.widthBucket??0)===C.value}(e))return t;for(let[n,r]of Object.entries(e?.itemHeights??{})){if(!Number.isFinite(r)||r<=0)continue;let i=Tt(n),a=e?.itemSizeSources?.[n];Ct(i,a)&&t.push([n,Math.ceil(r),a])}return t}function Ln(e){for(let[t,n]of Object.entries(e?.markdownStates??{}))if(Dt(Tt(t),n))return!0;return!1}function Rn(e){if(e!==Re)return;an();let t=new Set(j);Mt(),$(e,I),P.value=!1,Be=-1,I=void 0,H=null,V=0;for(let e of G.value.records)e.markdown&&!t.has(e.key)||Xt(e.key);for(let e of t){let t=W.get(e);t?cn(t,{allowMarkdownShrink:!0,allowRestoredFloorShrink:!0,markdownLogicalHeight:At(t.key),source:xt(t),updateLayout:!0}):Xt(e)}j.clear(),rn(),X({remember:!1}),Pn(),Fn()}function zn(t,n={}){let r=++Re;L=null,t!=null&&t.widthBucket&&C.value===0&&(C.value=t.widthBucket);let i=t?.outerAnchor,a=function(e){return!!(e?.outerAnchor||In(e).length>0||Ln(e))}(t),o=Ln(t),s=!(!qe&&!0!==n.threadSwitch||a),c=a||s,l=i??(c?function(){if(!1!==_.stickToBottom)return{type:`bottom`,distanceFromBottomPx:0};let e=G.value.records[0];return e?{type:`item`,itemKey:e.key,offsetWithinItemPx:0}:void 0}():void 0);Mt(),We=0,Ge=0,F.value=!c,P.value=c&&!!l,V=r,I=l,Ve=c&&o,He=c&&s,Be=P.value?jn():-1,Bn(),E.clear(),D.clear(),O.clear(),k.clear(),A.clear(),j.clear(),M.clear(),je.clear(),Me.clear();for(let[e,n,r]of In(t)){let t=Math.ceil(n);D.set(e,r),E.set(e,t),O.set(e,t),k.set(e,r)}for(let[e,n]of Object.entries(t?.markdownStates??{})){M.set(e,n);let t=kt(e,n);t>0&&A.set(e,t)}at(),!0===_.stickToBottom?(w.value=!0,T.value=!0):!1===_.stickToBottom?(w.value=!1,T.value=!1):(w.value=l?.type===`bottom`,T.value=l?.type===`bottom`&&l.distanceFromBottomPx<=2);let u=_n(l);H=u==null?null:zt(u),u!=null&&Ut(u,{writeDom:!0,remember:!1,updatePinned:!1}),Ue=t?.threadKey===U.value?t:null,c?l?e(()=>{$(r,l),typeof window<`u`?(Fe.forEach(e=>{let t=window.setTimeout(()=>{$(r,l)},e);ze.push(t)}),Nn(r)):Rn(r)}):(P.value=!1,I=void 0,H=null,V=0,X({remember:!1}),Pn(),Fn()):(P.value=!1,I=void 0,H=null,V=0,X({remember:!1}),Pn(),Fn(),!1!==_.stickToBottom&&(w.value=!0,T.value=!0,e(()=>{P.value||Kt()})))}function Bn(){for(let e of Ne.values())e.disconnect();Ne.clear(),N.clear()}return n(U,(e,t)=>{let n=Je??t,r=!!(n&&n!==e);r&&function(e){on(),hn()?.threadKey!==e&&(Ue?.threadKey===e?(Pe.set(e,Ue),Se(Ue)):Pe.has(e)||Q(e))}(n),Je=e,zn(function(e){return(e?Pe.get(e):null)||function(e){let t=_.initialThreadState;return t&&(t.threadKey??``)===(e??``)?t:null}(e)}(e),{threadSwitch:r})},{immediate:!0,flush:`sync`}),n(()=>K.value.records.map(e=>e.key).join(`\0`),()=>{var e={start:K.value.start,end:K.value.end};xe(`range-change`,e)},{immediate:!0}),n(()=>[_.items.length,G.value.totalHeight],()=>{P.value||!1!==_.stickToBottom&&(_.stickToBottom!==`auto`||T.value)&&e(()=>{P.value||!1!==_.stickToBottom&&(_.stickToBottom!==`auto`||T.value)&&Kt()})},{flush:`post`}),a(()=>{Pt(),Ht(),I?($(V,I),X({remember:!1}),Q()):!1===_.stickToBottom?(X({remember:!1}),Q()):(w.value=!0,Ut(Y(),{writeDom:!0,remember:!1,updatePinned:!1}),X({remember:!1}),Q()),b.value&&typeof ResizeObserver<`u`&&(Le=new ResizeObserver(()=>{Pt(),X()}),Le.observe(b.value))}),t(()=>{F.value||Nn(V)}),ee(()=>{hn()||Q(),Mt(),L=null,B!=null&&typeof window<`u`&&window.clearTimeout(B),B=null,Ie=void 0,nn(Z.raf),Z.scheduled=!1,Z.raf=null,Z.anchor=void 0,nn(en),$t=!1,en=null,Qt.clear(),Bn(),D.clear(),O.clear(),k.clear(),A.clear(),j.clear(),je.clear(),Me.clear(),Le?.disconnect(),Le=null}),fe({captureThreadState:function(){return mn(U.value)},restoreThreadState:zn,scrollToBottom:Kt,scrollToIndex:function(e,t=`start`){let n=G.value.records[e];if(!n)return;let r=Ft()+ot(n);t===`center`?r-=(S.value-n.size)/2:t===`end`&&(r-=S.value-n.size),Gt(r)},scrollToOffset:Gt,getItemSize:e=>{var t;let n=Tt(e);return n&&(t=wt(n))!=null?t:void 0},getTotalHeight:()=>G.value.totalHeight,getVisibleRange:()=>({start:K.value.start,end:K.value.end})}),(e,t)=>(r(),h(`div`,{ref_key:`scrollRoot`,ref:b,class:ae([`markstream-virtual-timeline`,{"is-restoring-thread":!F.value}]),"data-markstream-virtual-timeline":`1`,"data-testid":`markstream-virtual-timeline`,onScroll:Wt},[f(`div`,{class:`markstream-virtual-timeline__spacer`,style:ne({height:`${K.value.topSpacerHeight}px`}),"aria-hidden":`true`},null,4),(r(!0),h(l,null,o(K.value.records,t=>(r(),h(`div`,{key:t.renderKey,class:ae([`markstream-virtual-timeline__item`,{"is-restored-height-floor":Dn(t)}]),"data-markstream-item-key":t.key,"data-markstream-item-kind":t.kind,style:ne({minHeight:`${t.size}px`,"--markstream-virtual-item-size":`${t.size}px`})},[le(e.$slots,`default`,te({ref_for:!0},dn(t)),()=>[t.markdown?(r(),d(re(ge),te({key:0,ref_for:!0},un(t)),null,16)):vt(t)?(r(),d(s(vt(t)),{key:1,ref_for:!0,ref:ln(t),item:J(t)},null,8,[`item`])):(r(),h(`div`,{key:2,ref_for:!0,ref:ln(t),class:ae([`markstream-virtual-timeline__default-item`,`markstream-virtual-timeline__default-item--${t.kind||`item`}`])},[t.kind===`tool-call`&&J(t)?.status?(r(),h(`span`,ke,oe(J(t)?.status),1)):c(``,!0),ce(` `+oe(fn(t)),1)],2))],!0)],14,Oe))),128)),f(`div`,{class:`markstream-virtual-timeline__spacer`,style:ne({height:`${K.value.bottomSpacerHeight}px`}),"aria-hidden":`true`},null,4),F.value?c(``,!0):(r(),h(`div`,{key:0,class:`markstream-virtual-timeline__restore-loading`,style:ne({height:`${Math.max(1,Nt())}px`,transform:`translateY(${x.value}px)`}),"aria-live":`polite`,"aria-busy":`true`},[le(e.$slots,`restore-loading`,{threadKey:U.value,visibleRecords:K.value.records},()=>[t[0]||=f(`div`,{class:`markstream-virtual-timeline__restore-loading-card`},[f(`span`,{class:`markstream-virtual-timeline__restore-spinner`,"aria-hidden":`true`}),f(`span`,null,`Loading thread…`)],-1)],!0)],4))],34))}})),[[`__scopeId`,`data-v-1303f06e`]]),b=Ae;b.install=e=>{let t=b.__name??b.name??`MarkstreamVirtualTimeline`;e.component(t,Ae)};export{b as default}; \ No newline at end of file diff --git a/apps/pythinker-code/dist-web/index.html b/apps/pythinker-code/dist-web/index.html index 829e47bb8..65e57ca59 100644 --- a/apps/pythinker-code/dist-web/index.html +++ b/apps/pythinker-code/dist-web/index.html @@ -17,7 +17,7 @@ the server's Content-Security-Policy forbids inline scripts. --> Pythinker Code Web - + diff --git a/apps/pythinker-code/src/constant/app.ts b/apps/pythinker-code/src/constant/app.ts index 57ec4449b..e948b0f75 100644 --- a/apps/pythinker-code/src/constant/app.ts +++ b/apps/pythinker-code/src/constant/app.ts @@ -67,7 +67,6 @@ export const PYTHINKER_CODE_UPDATE_REEXEC_ENV = 'PYTHINKER_CODE_UPDATE_REEXEC'; export const PYTHINKER_CODE_INPUT_HISTORY_DIR_NAME = 'user-history'; export const PYTHINKER_CODE_BANNER_DIR_NAME = 'banner'; export const PYTHINKER_CODE_BANNER_STATE_FILE_NAME = 'state.json'; -export const PYTHINKER_CODE_RECOMMENDED_EFFORT_STATE_FILE_NAME = 'recommended-effort-state.json'; export const PYTHINKER_CODE_MODEL_MIGRATION_STATE_FILE_NAME = 'model-migrations.json'; // Managed Pythinker auth provider key shared with OAuth/SDK config. diff --git a/apps/pythinker-code/src/tui/banner/banner-config.ts b/apps/pythinker-code/src/tui/banner/banner-config.ts deleted file mode 100644 index f8eddd773..000000000 --- a/apps/pythinker-code/src/tui/banner/banner-config.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { ClientConfigFetchOptions } from '@pymodel/pythinker-code-product/client-configs/node'; -import { z } from 'zod'; - -import { clientConfigs } from '#/utils/client-configs'; - -/** The tips/banner payload is one named config on the client-configs endpoint. */ -const CONFIG_NAME = 'client_banner'; - -/** The payload keeps the legacy tips.json shape, which banner-provider parses - defensively; the schema only guarantees an object. */ -const bannerConfigSchema = z.looseObject({}); - -export type BannerConfig = z.infer; -export type BannerConfigFetchOptions = ClientConfigFetchOptions; - -/** - * Fetches the banner config straight from the endpoint — banners are - * time-sensitive announcements, so no caching layer is used. Any failure - * resolves to `undefined` — callers treat that as "no banner". - */ -export async function getBannerConfig( - options: BannerConfigFetchOptions = {}, -): Promise { - return clientConfigs.fetch(CONFIG_NAME, bannerConfigSchema, options); -} diff --git a/apps/pythinker-code/src/tui/banner/banner-provider.ts b/apps/pythinker-code/src/tui/banner/banner-provider.ts deleted file mode 100644 index 57536346b..000000000 --- a/apps/pythinker-code/src/tui/banner/banner-provider.ts +++ /dev/null @@ -1,356 +0,0 @@ -import { createHash } from 'node:crypto'; - -import { eq, gte, lt, valid } from 'semver'; - -import type { BannerDisplay, BannerState } from '#/tui/types'; - -import { getBannerConfig } from './banner-config'; -import type { BannerDisplayState } from './state'; - -interface BannerVersionFields { - banner_min_version?: string | null; - banner_max_version?: string | null; - banner_version?: string | null; -} - -interface TipsBannerFallbackItem extends BannerVersionFields { - banner_id?: string | null; - enabled?: boolean; - banner_title?: string | null; - banner_maintext?: string; - banner_subtext?: string | null; - banner_start_time?: string | null; - banner_end_time?: string | null; - banner_display?: unknown; - banner_display_ttl_hours?: unknown; - banner_platform?: string | null; -} - -interface TipsBannerJson extends BannerVersionFields { - banner_id?: string | null; - banner_enabled?: boolean; - banner_title?: string | null; - banner_maintext?: string; - banner_subtext?: string | null; - banner_start_time?: string | null; - banner_end_time?: string | null; - banner_display?: unknown; - banner_display_ttl_hours?: unknown; - banner_fallback_enabled?: boolean; - banner_fallback_list?: unknown[]; - banner_platform?: string | null; -} - -interface BannerHashInput { - tag: string | null; - mainText: string; - subText: string | null; - startTime: string | null; - endTime: string | null; - display: BannerDisplay; - ttlHours?: number; -} - -interface BannerCandidateInput { - id: unknown; - tag: unknown; - mainText: string; - subText: unknown; - display: BannerDisplay; - ttlHours?: number; - startTime?: unknown; - endTime?: unknown; -} - -export interface SelectDisplayableBannerArgs { - json: unknown; - clientVersion: string; - now: Date; - random: () => number; - state: BannerDisplayState; -} - -interface BannerProviderLoadOptions { - state?: BannerDisplayState; - now?: Date; - random?: () => number; -} - -const HOUR_MS = 60 * 60 * 1000; -export const DEFAULT_COOLDOWN_TTL_HOURS = 24; - -function normalizeTag(value: unknown): string | null { - if (typeof value !== 'string') return null; - const trimmed = value.trim(); - return trimmed.length > 0 ? trimmed : null; -} - -function normalizeText(value: unknown): string | null { - if (typeof value !== 'string') return null; - const trimmed = value.trim(); - return trimmed.length > 0 ? trimmed : null; -} - -function normalizeUtcDate(value: string): string { - if (value.endsWith('Z')) return value; - if (/[+-]\d{2}:\d{2}$/.test(value)) return value; - return `${value}Z`; -} - -function parseDate(value: unknown): Date | null { - if (typeof value !== 'string' || value.length === 0) return null; - const normalized = normalizeUtcDate(value); - const date = new Date(normalized); - return Number.isNaN(date.getTime()) ? null : date; -} - -function isWithinWindow(start: Date | null, end: Date | null, now: Date): boolean { - if (start !== null && now < start) return false; - if (end !== null && now > end) return false; - return true; -} - -type VersionConstraintCompare = (current: string, target: string) => boolean; - -function meetsVersionConstraint( - constraint: unknown, - clientVersion: string, - compare: VersionConstraintCompare, -): boolean { - if (constraint === undefined || constraint === null) return true; - if (typeof constraint !== 'string' || constraint.length === 0) return true; - const target = valid(constraint); - const current = valid(clientVersion); - if (target === null || current === null) return false; - return compare(current, target); -} - -function meetsVersion(banner: BannerVersionFields, clientVersion: string): boolean { - return ( - meetsVersionConstraint(banner.banner_min_version, clientVersion, gte) && - meetsVersionConstraint(banner.banner_max_version, clientVersion, lt) && - meetsVersionConstraint(banner.banner_version, clientVersion, eq) - ); -} - -/** The CLI shows banners targeting every platform (missing / empty / 'all') - or the CLI itself; any other platform value ('desktop', 'web', …) hides - the banner here. */ -function meetsPlatform(value: unknown): boolean { - if (typeof value !== 'string') return true; - const platform = value.trim().toLowerCase(); - return platform === '' || platform === 'all' || platform === 'cli'; -} - -function parseBannerDisplay(value: unknown): BannerDisplay { - if (value === 'once') return 'once'; - if (value === 'cooldown') return 'cooldown'; - return 'always'; -} - -function parseBannerDisplayTtlHours(value: unknown): number { - return typeof value === 'number' && Number.isFinite(value) && value > 0 - ? value - : DEFAULT_COOLDOWN_TTL_HOURS; -} - -function normalizeBannerId(value: unknown): string | null { - if (typeof value !== 'string') return null; - const trimmed = value.trim(); - return trimmed.length > 0 ? trimmed : null; -} - -function hashBannerIdentity(input: BannerHashInput): string { - const raw = JSON.stringify([ - input.tag ?? '', - input.mainText, - input.subText ?? '', - input.startTime ?? '', - input.endTime ?? '', - input.display, - input.ttlHours ?? '', - ]); - return createHash('sha256').update(raw).digest('hex').slice(0, 32); -} - -function getBannerKey(rawBannerId: unknown, input: BannerHashInput): string { - return normalizeBannerId(rawBannerId) ?? hashBannerIdentity(input); -} - -function toBannerState(input: BannerCandidateInput): BannerState { - const tag = normalizeTag(input.tag); - const subText = normalizeText(input.subText); - const display = input.display; - const ttlHours = display === 'cooldown' ? parseBannerDisplayTtlHours(input.ttlHours) : undefined; - const startTime = normalizeText(input.startTime); - const endTime = normalizeText(input.endTime); - const key = getBannerKey(input.id, { - tag, - mainText: input.mainText, - subText, - startTime, - endTime, - display, - ttlHours, - }); - - return { - key, - tag, - mainText: input.mainText, - subText, - display, - ttlHours, - }; -} - -function pickActiveBanner( - json: TipsBannerJson, - clientVersion: string, - now: Date, -): BannerState | null { - if (json.banner_enabled !== true) return null; - if (!meetsVersion(json, clientVersion)) return null; - if (!meetsPlatform(json.banner_platform)) return null; - const start = parseDate(json.banner_start_time); - const end = parseDate(json.banner_end_time); - if (!isWithinWindow(start, end, now)) return null; - const mainText = normalizeText(json.banner_maintext); - if (mainText === null) return null; - const display = parseBannerDisplay(json.banner_display); - return toBannerState({ - id: json.banner_id, - tag: json.banner_title, - mainText, - subText: json.banner_subtext, - display, - ttlHours: display === 'cooldown' ? parseBannerDisplayTtlHours(json.banner_display_ttl_hours) : undefined, - startTime: json.banner_start_time, - endTime: json.banner_end_time, - }); -} - -function pickFallbackCandidates( - json: TipsBannerJson, - clientVersion: string, - now: Date, -): BannerState[] { - if (json.banner_fallback_enabled !== true) return []; - const list = Array.isArray(json.banner_fallback_list) ? json.banner_fallback_list : []; - const candidates: BannerState[] = []; - for (const raw of list) { - if (typeof raw !== 'object' || raw === null) continue; - const item = raw as TipsBannerFallbackItem; - if (item.enabled !== true) continue; - if (!meetsVersion(item, clientVersion)) continue; - if (!meetsPlatform(item.banner_platform)) continue; - const start = parseDate(item.banner_start_time); - const end = parseDate(item.banner_end_time); - if (!isWithinWindow(start, end, now)) continue; - const mainText = normalizeText(item.banner_maintext); - if (mainText === null) continue; - const display = parseBannerDisplay(item.banner_display); - candidates.push( - toBannerState({ - id: item.banner_id, - tag: item.banner_title, - mainText, - subText: item.banner_subtext, - display, - ttlHours: display === 'cooldown' ? parseBannerDisplayTtlHours(item.banner_display_ttl_hours) : undefined, - startTime: item.banner_start_time, - endTime: item.banner_end_time, - }), - ); - } - return candidates; -} - -function pickRandomCandidate(candidates: BannerState[], random: () => number): BannerState | null { - if (candidates.length === 0) return null; - const index = Math.floor(random() * candidates.length); - return candidates[index]!; -} - -function pickFallbackBanner( - json: TipsBannerJson, - clientVersion: string, - now: Date, - random: () => number, -): BannerState | null { - return pickRandomCandidate(pickFallbackCandidates(json, clientVersion, now), random); -} - -function parseShownAt(value: string | undefined): Date | null { - if (value === undefined) return null; - const date = new Date(value); - return Number.isNaN(date.getTime()) ? null : date; -} - -function getCooldownTtlHours(banner: BannerState): number { - return typeof banner.ttlHours === 'number' && Number.isFinite(banner.ttlHours) && banner.ttlHours > 0 - ? banner.ttlHours - : DEFAULT_COOLDOWN_TTL_HOURS; -} - -export function shouldDisplayBanner( - banner: BannerState, - state: BannerDisplayState, - now: Date, -): boolean { - if (banner.display === 'always') return true; - const lastShownAt = parseShownAt(state.shown[banner.key]?.lastShownAt); - if (lastShownAt === null) return true; - if (banner.display === 'once') return false; - return now.getTime() - lastShownAt.getTime() >= getCooldownTtlHours(banner) * HOUR_MS; -} - -export function selectBannerState( - json: unknown, - clientVersion: string, - now: Date, - random: () => number, -): BannerState | null { - const typed = typeof json === 'object' && json !== null ? (json as TipsBannerJson) : {}; - return ( - pickActiveBanner(typed, clientVersion, now) ?? - pickFallbackBanner(typed, clientVersion, now, random) - ); -} - -export function selectDisplayableBanner({ - json, - clientVersion, - now, - random, - state, -}: SelectDisplayableBannerArgs): BannerState | null { - const typed = typeof json === 'object' && json !== null ? (json as TipsBannerJson) : {}; - const active = pickActiveBanner(typed, clientVersion, now); - if (active !== null && shouldDisplayBanner(active, state, now)) return active; - const candidates = pickFallbackCandidates(typed, clientVersion, now).filter((candidate) => - shouldDisplayBanner(candidate, state, now), - ); - return pickRandomCandidate(candidates, random); -} - -export class BannerProvider { - constructor(private readonly clientVersion: string) {} - - async load(options: BannerProviderLoadOptions = {}): Promise { - // getBannerConfig never throws; undefined means "config unavailable". - const json = await getBannerConfig(); - if (json === undefined) return null; - const now = options.now ?? new Date(); - const random = options.random ?? Math.random; - return options.state === undefined - ? selectBannerState(json, this.clientVersion, now, random) - : selectDisplayableBanner({ - json, - clientVersion: this.clientVersion, - now, - random, - state: options.state, - }); - } -} diff --git a/apps/pythinker-code/src/tui/banner/state.ts b/apps/pythinker-code/src/tui/banner/state.ts deleted file mode 100644 index 77877d82a..000000000 --- a/apps/pythinker-code/src/tui/banner/state.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { z } from 'zod'; - -import { getBannerStateFile } from '#/utils/paths'; -import { readJsonFile, writeJsonFile } from '#/utils/persistence'; - -export type BannerDisplayRecord = { - lastShownAt: string; -}; - -export type BannerDisplayState = { - version: 1; - shown: Record; -}; - -const BannerDisplayRecordSchema = z - .object({ - lastShownAt: z.string().min(1), - }) - .strict(); - -const BannerDisplayStateSchema = z.preprocess( - (value) => { - if (typeof value !== 'object' || value === null) return value; - const shown = (value as { shown?: unknown }).shown; - if (typeof shown !== 'object' || shown === null) { - return { ...(value as Record), shown: {} }; - } - - const normalizedShown: Record = {}; - for (const [key, record] of Object.entries(shown)) { - if (key.length === 0 || typeof record !== 'object' || record === null) continue; - const lastShownAt = (record as { lastShownAt?: unknown }).lastShownAt; - if (typeof lastShownAt !== 'string' || Number.isNaN(Date.parse(lastShownAt))) continue; - normalizedShown[key] = { lastShownAt }; - } - - return { ...(value as Record), shown: normalizedShown }; - }, - z - .object({ - version: z.literal(1), - shown: z.record(z.string().min(1), BannerDisplayRecordSchema), - }) - .strict(), -); - -export function emptyBannerDisplayState(): BannerDisplayState { - return { - version: 1, - shown: {}, - }; -} - -export async function readBannerDisplayState( - filePath: string = getBannerStateFile(), -): Promise { - try { - return await readJsonFile(filePath, BannerDisplayStateSchema, emptyBannerDisplayState()); - } catch { - return emptyBannerDisplayState(); - } -} - -export async function writeBannerDisplayState( - value: BannerDisplayState, - filePath: string = getBannerStateFile(), -): Promise { - await writeJsonFile(filePath, BannerDisplayStateSchema, value); -} diff --git a/apps/pythinker-code/src/tui/commands/auth.ts b/apps/pythinker-code/src/tui/commands/auth.ts index 46c7835e0..c8f3b8968 100644 --- a/apps/pythinker-code/src/tui/commands/auth.ts +++ b/apps/pythinker-code/src/tui/commands/auth.ts @@ -1,19 +1,10 @@ -import { - OAuthAccessDeniedError, - OPENAI_CODEX_PROVIDER_ID, - type PythinkerRegion, -} from '@pymodel/pythinker-code-oauth'; -import { log, runLogin, type LoginUi } from '@pymodel/pythinker-code-sdk'; +import { OPENAI_CODEX_PROVIDER_ID } from '@pymodel/pythinker-code-oauth'; +import { runLogin, type LoginUi } from '@pymodel/pythinker-code-sdk'; import type { ChoiceOption } from '../components/dialogs/choice-picker'; import { PRODUCT_NAME } from '../constant/pythinker-tui'; -import { formatErrorMessage } from '../utils/event-payload'; -import { - PYTHINKER_CODE_GLOBAL_PLATFORM_VALUE, - refreshPythinkerRegion, -} from '#/utils/region'; -import type { LoginProgressSpinnerHandle } from '../types'; +import { refreshPythinkerRegion } from '#/utils/region'; import { promptApiKey, promptLogoutProviderSelection, @@ -85,89 +76,9 @@ function createLoginUi( export async function handleLoginCommand(host: SlashCommandHost): Promise { const selection = await promptPlatformSelection(host); if (selection === undefined || selection.platformId === '') return; - const { platformId } = selection; - - if (platformId === 'pythinker-code' || platformId === PYTHINKER_CODE_GLOBAL_PLATFORM_VALUE) { - const region: PythinkerRegion = platformId === PYTHINKER_CODE_GLOBAL_PLATFORM_VALUE ? 'global' : 'mainland-cn'; - await handlePythinkerCodeOAuthLogin(host, region); - return; - } - await runLogin(createLoginUi(host, selection)); } -async function handlePythinkerCodeOAuthLogin( - host: SlashCommandHost, - region: PythinkerRegion, -): Promise { - const status = await host.harness.auth.status(DEVICE_OAUTH_PROVIDER_NAME); - const alreadyLoggedIn = status.providers.some( - (provider) => provider.providerName === DEVICE_OAUTH_PROVIDER_NAME && provider.hasToken, - ); - - let spinner: LoginProgressSpinnerHandle | undefined; - const controller = new AbortController(); - const cancelLogin = (): void => { - controller.abort(); - }; - host.cancelInFlight = cancelLogin; - try { - // The facade maps region → profile hosts (env overrides keep priority); - // 'mainland-cn' is passed explicitly too so switching back overrides a - // persisted global login. - await host.harness.auth.login(DEVICE_OAUTH_PROVIDER_NAME, { - signal: controller.signal, - region, - onDeviceCode: (data: any) => { - spinner = host.showLoginAuthorizationPrompt(data); - }, - }); - refreshPythinkerRegion(); - spinner?.stop({ ok: true, label: 'Logged in.' }); - spinner = undefined; - try { - await host.authFlow.refreshConfigAfterLogin(); - } catch (refreshError) { - const message = formatErrorMessage(refreshError); - host.showError(`Authentication successful, but failed to refresh config: ${message}`); - return; - } - host.track('login', { - provider: DEVICE_OAUTH_PROVIDER_NAME, - method: 'oauth', - already_logged_in: alreadyLoggedIn, - }); - if (alreadyLoggedIn) { - host.showStatus('Already logged in. Model configuration refreshed.', 'success'); - } - } catch (error) { - const cancelled = controller.signal.aborted; - const denied = error instanceof OAuthAccessDeniedError; - spinner?.stop({ - ok: false, - label: cancelled || denied ? 'Login cancelled.' : 'Login failed.', - }); - spinner = undefined; - if (cancelled) return; - const message = formatErrorMessage(error); - if (denied) { - host.showError(`Login cancelled: ${message}`); - return; - } - log.warn('login failed', { - providerName: DEVICE_OAUTH_PROVIDER_NAME, - alreadyLoggedIn, - sessionId: host.session?.id, - error, - }); - host.showError(`Login failed: ${message}`); - } finally { - if (host.cancelInFlight === cancelLogin) { - host.cancelInFlight = undefined; - } - } -} - export async function handleLogoutCommand(host: SlashCommandHost): Promise { const oauthStatus = await host.harness.auth.status(DEVICE_OAUTH_PROVIDER_NAME); diff --git a/apps/pythinker-code/src/tui/commands/config.ts b/apps/pythinker-code/src/tui/commands/config.ts index c939339a2..eafe13600 100644 --- a/apps/pythinker-code/src/tui/commands/config.ts +++ b/apps/pythinker-code/src/tui/commands/config.ts @@ -186,7 +186,7 @@ export async function handleSecondaryModelCommand(host: SlashCommandHost, args: if (Object.keys(models).length === 0) { host.showNotice( 'No models configured', - 'Run /login to sign in to Pythinker, or /provider to add another provider from a model catalog.', + 'Run /login to sign in to a provider, or /provider to add one from a model catalog.', ); return; } @@ -362,7 +362,7 @@ export function showModelPicker(host: SlashCommandHost, selectedValue: string = if (entries.length === 0) { host.showNotice( 'No models configured', - 'Run /login to sign in to Pythinker, or /provider to add another provider from a model catalog.', + 'Run /login to sign in to a provider, or /provider to add one from a model catalog.', ); return; } diff --git a/apps/pythinker-code/src/tui/commands/dispatch.ts b/apps/pythinker-code/src/tui/commands/dispatch.ts index f63f9b3bb..8be03d681 100644 --- a/apps/pythinker-code/src/tui/commands/dispatch.ts +++ b/apps/pythinker-code/src/tui/commands/dispatch.ts @@ -167,9 +167,6 @@ export interface SlashCommandHost { failSessionRequest(message: string): void; sendQueuedMessage(session: Session, item: QueuedMessage): void; requestQueuedGoalPromotion?(): void; - /** Reset the client-side cache-break baseline after the context was cut - * (/undo): the next step's cache-read drop is expected, not a break. */ - noteContextCut?(): void; // UI showLoginProgressSpinner(label: string): LoginProgressSpinnerHandle; diff --git a/apps/pythinker-code/src/tui/commands/undo.ts b/apps/pythinker-code/src/tui/commands/undo.ts index 553606734..91e57d5f0 100644 --- a/apps/pythinker-code/src/tui/commands/undo.ts +++ b/apps/pythinker-code/src/tui/commands/undo.ts @@ -115,7 +115,6 @@ async function undoByCount(host: SlashCommandHost, count: number): Promise currentTheme.boldFg('textStrong', s); - const dim = (s: string): string => currentTheme.fg('textDim', s); - - // Render nothing but the trailing blank if the terminal cannot hold a - // single visible column. - if (width < 1) { - return ['']; - } - - const tagText = this.state.tag ?? ''; - // Do not add a colon/tag suffix here; the caller-provided tag includes its - // own punctuation/separator. - const tagLabel = tagText.length > 0 ? `${PREFIX_STAR} ${tagText}` : ''; - const tagStyled = tagLabel.length > 0 ? currentTheme.boldFg('primary', tagLabel) : ''; - const tagDisplay = tagStyled.length > 0 ? tagStyled + PADDING : ''; - const tagWidth = visibleWidth(tagDisplay); - const showTag = tagWidth > 0 && tagWidth < width; - // Hanging indent aligning with the tag text (right after "✦ "). - const hangingWidth = visibleWidth(PREFIX_STAR + PADDING); - // If the inline tag would squeeze the main text into too narrow a column, - // render the tag on its own line and give the main text the full width. - const tagOnOwnLine = showTag && width - tagWidth < MIN_INLINE_MAIN_TEXT_WIDTH; - const inlineTag = showTag && !tagOnOwnLine; - // Body lines (continuations of the main text) indent to match the first - // line's main-text column, which starts right after the tag display. When - // the tag is on its own line, the main text aligns with the tag text. - const bodyIndent = inlineTag ? ' '.repeat(tagWidth) : tagOnOwnLine ? ' '.repeat(hangingWidth) : ''; - // Descriptive subtext lines (the second line in the design) start at the - // column after the leading star + space, aligning with the tag text itself. - const descIndent = showTag ? ' '.repeat(hangingWidth) : ''; - const bodyContentWidth = - width - (inlineTag ? tagWidth : tagOnOwnLine ? hangingWidth : 0); - const descContentWidth = width - (showTag ? hangingWidth : 0); - - if (bodyContentWidth <= 0) { - return ['']; - } - - const mainSegments = this.state.mainText.split('\n'); - const subSegments = this.state.subText ? this.state.subText.split('\n') : []; - - const result: string[] = []; - if (tagOnOwnLine) { - result.push(tagStyled); - } - for (let i = 0; i < mainSegments.length; i++) { - const wrapped = wrapTextWithAnsi(mainSegments[i]!, bodyContentWidth); - for (let j = 0; j < wrapped.length; j++) { - const boldLine = main(wrapped[j]!); - if (i === 0 && j === 0 && inlineTag) { - result.push(tagDisplay + boldLine); - } else { - result.push(bodyIndent + boldLine); - } - } - } - - for (const sub of subSegments) { - const available = descContentWidth <= 0 ? bodyContentWidth : descContentWidth; - const wrapped = wrapTextWithAnsi(sub, available); - for (const line of wrapped) { - result.push(descIndent + dim(line)); - } - } - - // Add a blank line below the banner so the following transcript content - // (e.g. the input prompt / status messages) is visually separated. - result.push(''); - - return result; - } -} diff --git a/apps/pythinker-code/src/tui/components/dialogs/cache-hint-dialog.ts b/apps/pythinker-code/src/tui/components/dialogs/cache-hint-dialog.ts deleted file mode 100644 index 937e911cc..000000000 --- a/apps/pythinker-code/src/tui/components/dialogs/cache-hint-dialog.ts +++ /dev/null @@ -1,121 +0,0 @@ -/** - * CacheHintDialog — shown when a resumed (or long-idle) session's context - * cache has almost certainly expired, so the next turn re-sends the whole - * history uncached. Offers compact / new session / continue / never. - * - * Layout mirrors the list-dialog spec (DESIGN.md): top border, title, hint, - * body line, then options with right-column descriptions. - */ - -import { - Container, - matchesKey, - Key, - truncateToWidth, - visibleWidth, - type Focusable, -} from '@pymodel/pi-tui'; -import { SELECT_POINTER } from '#/tui/constant/symbols'; -import { currentTheme } from '#/tui/theme'; -import { formatIdleDuration } from '#/tui/utils/cache-hint'; -import { SearchableList } from '#/tui/utils/searchable-list'; -import { formatTokenCount } from '#/utils/usage/usage-format'; - -export type CacheHintAction = 'compact' | 'new' | 'continue' | 'never'; - -interface CacheHintOption { - readonly value: CacheHintAction; - readonly label: string; - readonly description?: string; -} - -const OPTIONS: readonly CacheHintOption[] = [ - { - value: 'compact', - label: 'Compact and continue', - description: 'one-time compact cost · cheapest way to keep this topic', - }, - { - value: 'new', - label: 'Start a new session', - description: 'zero context cost · best for a new task', - }, - { - value: 'continue', - label: 'Continue as-is', - description: 'full history kept · highest cost per turn', - }, - { value: 'never', label: "Don't ask me again" }, -]; - -export interface CacheHintDialogOptions { - readonly idleSeconds: number; - readonly totalTokens: number; - readonly onSelect: (action: CacheHintAction) => void; - readonly onCancel: () => void; -} - -export class CacheHintDialogComponent extends Container implements Focusable { - focused = false; - private readonly opts: CacheHintDialogOptions; - private readonly list: SearchableList; - - constructor(opts: CacheHintDialogOptions) { - super(); - this.opts = opts; - this.list = new SearchableList({ - items: OPTIONS, - toSearchText: (o) => o.label, - initialIndex: 0, - searchable: false, - }); - } - - handleInput(data: string): void { - if (matchesKey(data, Key.escape)) { - this.opts.onCancel(); - return; - } - if (matchesKey(data, Key.enter)) { - const chosen = this.list.selected(); - if (chosen !== undefined) this.opts.onSelect(chosen.value); - return; - } - this.list.handleKey(data); - } - - override render(width: number): string[] { - const view = this.list.view(); - const title = `This session has been idle for ${formatIdleDuration(this.opts.idleSeconds)} and is ~${formatTokenCount(this.opts.totalTokens)} tokens.`; - const lines: string[] = [ - currentTheme.fg('primary', '─'.repeat(width)), - currentTheme.boldFg('primary', ` ${title}`), - currentTheme.fg('textMuted', ' ↑↓ navigate · Enter select · Esc cancel'), - '', - currentTheme.fg( - 'text', - ' Cache expired — the next message re-sends the entire history at full price.', - ), - ]; - - const maxLabelWidth = Math.max(...OPTIONS.map((o) => visibleWidth(o.label))); - for (let i = view.page.start; i < view.page.end; i++) { - const opt = view.items[i]!; - const isSelected = i === view.selectedIndex; - const pointer = isSelected ? SELECT_POINTER : ' '; - let line = currentTheme.fg(isSelected ? 'primary' : 'textDim', ` ${pointer} `); - line += isSelected - ? currentTheme.boldFg('primary', opt.label) - : currentTheme.fg('text', opt.label); - if (opt.description !== undefined) { - const gap = maxLabelWidth - visibleWidth(opt.label) + 4; - line += ' '.repeat(gap) + currentTheme.fg('textMuted', opt.description); - } - lines.push(line); - } - - lines.push(''); - lines.push(currentTheme.fg('primary', '─'.repeat(width))); - return lines.map((line) => truncateToWidth(line, width)); - } -} diff --git a/apps/pythinker-code/src/tui/controllers/cache-hint-controller.ts b/apps/pythinker-code/src/tui/controllers/cache-hint-controller.ts deleted file mode 100644 index 6f88a3754..000000000 --- a/apps/pythinker-code/src/tui/controllers/cache-hint-controller.ts +++ /dev/null @@ -1,540 +0,0 @@ -/** - * CacheHintController — drives the "cache expired" dialog for the two trigger - * scenarios: resuming a long-idle session (fires right after the resume - * finishes loading) and submitting after an in-process idle stretch - * (intercepts the submit). Owns the frequency guards and the in-process - * activity baseline; the pure trigger rule lives in `../utils/cache-hint`. - */ - -import type { Component, Focusable } from '@pymodel/pi-tui'; -import { isManagedPythinkerCodeBaseUrl } from '@pymodel/pythinker-code-oauth'; -import type { PythinkerHarness, Session, TokenUsage } from '@pymodel/pythinker-code-sdk'; - -import { getCacheHintConfig, peekCacheHintConfig } from '#/utils/cache-hint-config'; -import { managedAccessToken } from '#/utils/managed-access-token'; -import { currentTuiConfig } from '../commands/config'; -import { - CacheHintDialogComponent, - type CacheHintAction, -} from '../components/dialogs/cache-hint-dialog'; -import { saveTuiConfig } from '../config'; -import { MAIN_AGENT_ID } from '../constant/pythinker-tui'; -import type { AppState, InlineSkillActivation } from '../types'; -import type { TUIState } from '../tui-state'; -import { evaluateCacheHint } from '../utils/cache-hint'; -import { formatErrorMessage } from '../utils/event-payload'; -import { - makeExtractionResendable, - originalsDirForSession, - type ExtractionResult, -} from '../utils/image-placeholder'; - -/** A swallowed submit: the raw text plus its media extraction (done before - * the dialog so pasted attachments survive a later store clear). */ -interface StashedSubmit { - readonly text: string; - readonly extraction?: ExtractionResult; - /** Session that owned any daemon refs inside {@link extraction}. */ - readonly sessionId: string; - readonly inlineSkillActivations?: readonly InlineSkillActivation[]; -} - -export interface CacheHintHost { - readonly harness: PythinkerHarness; - readonly session: Session | undefined; - readonly state: TUIState; - track(event: string, props?: Record): void; - setAppState(patch: Partial): void; - mountEditorReplacement(panel: Component & Focusable): void; - restoreEditor(): void; - restoreInputText(text: string): void; - /** - * A stashed submission going back to the editor releases its extraction's - * staged media with queue-recall semantics (consume retains, retire staged - * copies, rebase videos) — without this the retains/copies would leak. - */ - recallStashedMedia(extraction: ExtractionResult | undefined): void; - showError(message: string): void; - createNewSession(): Promise; - sendNormalUserInput(text: string, preExtracted?: ExtractionResult): Promise; - sendInlineSkillUserInput( - text: string, - activations: readonly InlineSkillActivation[], - preExtracted?: ExtractionResult, - ): Promise; -} - -type HintDecision = { readonly idleSeconds: number; readonly totalTokens: number }; - -/** Cache-break detection: a step's cache read dropping under 95% of the - * previous step's by more than this many tokens counts as a break. */ -const CACHE_BREAK_MIN_DROP_TOKENS = 2000; -const CACHE_BREAK_DROP_RATIO = 0.95; - -interface CacheBreakBaseline { - readonly model: string; - readonly effort: string; - readonly usage: TokenUsage; - readonly time: number; -} - -export class CacheHintController { - /** Latest in-process LLM round-trip time (turn begin / turn end). */ - private lastActivityAt: number | undefined; - /** One prompt per idle cycle; reset when a real send starts a turn. */ - private idlePrompted = false; - /** Cold-cache trigger fetches at most once per idle cycle (loop guard for - * the release-and-resend path). */ - private triggerFetchAttempted = false; - /** Swallowed submits waiting on the cold-cache interception chain. */ - private pendingInterceptions = 0; - /** FIFO chain serializing swallowed submits so they keep submit order. */ - private interceptionTail: Promise = Promise.resolve(); - /** Set while a stashed message is being released back into the send path. */ - private releasingStashed = false; - /** Whether the idle dialog's triggering message was restored, not sent. */ - private lastDialogRestored = false; - /** Inputs restored this cycle — chained restores append (newline-joined) - * instead of overwriting the editor. */ - private restoredTexts: string[] = []; - /** Resume scenario fires at most once per session per TUI instance. */ - private readonly resumedSessions = new Set(); - /** Last measured main-loop step usage for cache-break detection. */ - private breakBaseline: CacheBreakBaseline | undefined; - - constructor(private readonly host: CacheHintHost) {} - - /** - * Cache-break detection (client-side, main loop): feed each completed - * step's usage. A step whose cache read drops sharply below the previous - * one is reported as `cache_break_detected` with both usages, both - * model/effort values, the drop ratio, and the interval — a mid-session - * model/effort switch busts the cache key, and that cause is exactly what - * the report should carry. Unmeasured (missing/all-zero) usage is skipped - * without touching the baseline; compaction resets it (the drop there is - * expected). - * - * Also doubles as the cache-activity signal: a completed step is a real - * provider round trip, so the server-side cache was just refreshed — - * unlike a bare turn begin, whose prompt may still fail before any model - * request. - */ - noteStepUsage(usage: TokenUsage | undefined): void { - this.recordActivity(); - if (usage === undefined) return; - if ( - usage.inputOther === 0 && - usage.output === 0 && - usage.inputCacheRead === 0 && - usage.inputCacheCreation === 0 - ) { - return; - } - const model = this.host.state.appState.model; - const effort = this.host.state.appState.thinkingEffort; - const now = Date.now(); - const prev = this.breakBaseline; - this.breakBaseline = { model, effort, usage, time: now }; - if (prev === undefined) return; - const prevRead = prev.usage.inputCacheRead; - const currRead = usage.inputCacheRead; - if (currRead >= prevRead * CACHE_BREAK_DROP_RATIO) return; - if (prevRead - currRead <= CACHE_BREAK_MIN_DROP_TOKENS) return; - this.host.track('cache_break_detected', { - prev_model: prev.model, - curr_model: model, - prev_effort: prev.effort, - curr_effort: effort, - prev_input_cache_read: prevRead, - curr_input_cache_read: currRead, - prev_input_other: prev.usage.inputOther, - curr_input_other: usage.inputOther, - prev_output: prev.usage.output, - curr_output: usage.output, - prev_input_cache_creation: prev.usage.inputCacheCreation, - curr_input_cache_creation: usage.inputCacheCreation, - cache_read_drop_ratio: (prevRead - currRead) / prevRead, - interval_ms: now - prev.time, - }); - } - - /** Compaction legitimately shrinks the cached prefix — reset the baseline. - * Also used when the context is cut by other means (e.g. /undo). */ - resetCacheBreakBaseline(): void { - this.breakBaseline = undefined; - } - - recordActivity(): void { - this.lastActivityAt = Date.now(); - } - - /** - * A real send starts a turn — open a fresh idle cycle. Cache activity is - * deliberately NOT recorded here: the prompt may still fail before any - * model request (rejected call, hook-blocked turn), and only a completed - * provider round trip refreshes the server-side cache. - */ - onTurnBegin(): void { - this.idlePrompted = false; - this.triggerFetchAttempted = false; - this.lastDialogRestored = false; - this.restoredTexts = []; - } - - /** Session switch / create: the new session has no in-process baseline. */ - resetRuntime(): void { - this.lastActivityAt = undefined; - this.idlePrompted = false; - this.triggerFetchAttempted = false; - this.lastDialogRestored = false; - this.restoredTexts = []; - this.breakBaseline = undefined; - } - - /** Background warm-up on session creation; never blocks, never throws. */ - refreshConfigInBackground(): void { - void this.resolveConfig(); - } - - /** Scenario 1: call right after a resume finishes loading. */ - async maybeShowOnResume(): Promise { - const { host } = this; - const session = host.session; - if (session === undefined) return; - if (this.resumedSessions.has(session.id)) return; - const main = session.getResumeState()?.agents[MAIN_AGENT_ID]; - let lastActiveAt = 0; - for (const record of main?.replay ?? []) { - // Only message/compaction records correspond to LLM round-trips; state - // records (permission/plan/config updates, approval results) can be - // appended by slash commands without touching the cache. - if (record.type !== 'message' && record.type !== 'compaction') continue; - if (record.time > lastActiveAt) lastActiveAt = record.time; - } - // `summary.updatedAt` ≈ last user prompt — a coarser but valid fallback. - if (lastActiveAt === 0) lastActiveAt = session.summary?.updatedAt ?? 0; - if (lastActiveAt === 0) return; - const config = await this.resolveConfig(); - // The config fetch above can outlive the user's patience: if they switched - // sessions meanwhile, this dialog (and its actions) would target the wrong - // session — drop it. Likewise, if they already sent the first prompt and - // a turn is now running, don't mount over the active turn. - if (host.session !== session) return; - if (host.state.appState.streamingPhase !== 'idle' || host.state.appState.isCompacting) { - return; - } - // Fold in-process activity into the replay-derived baseline before - // judging: a turn may have completed during the fetch, and a completed - // turn refreshes the server-side cache — the stale replay timestamp would - // warn about an expiration the user just paid to fix. Seeding the - // baseline either way also lets a resume inside the cache window expire - // via the idle-submit path while the user idles in the TUI. - lastActiveAt = Math.max(lastActiveAt, this.lastActivityAt ?? 0); - this.lastActivityAt = lastActiveAt; - const decision = evaluateCacheHint({ - now: Date.now(), - lastActiveAt, - totalTokens: main?.context.tokenCount, - modelId: this.upstreamModelId(), - config, - dismissed: host.state.appState.cacheExpiryHint === false, - }); - if (decision.kind === 'skip') return; - // Another dialog (e.g. the model migration prompt) already owns the editor - // area: never replace it under the user's keystrokes. The seeded baseline - // leaves this cycle to the idle-submit path, which hints on the first prompt. - if (host.state.editorReplacementMounted) return; - this.resumedSessions.add(session.id); - // The resume dialog also covers this idle cycle: the first submit right - // after it must not be intercepted again. - this.idlePrompted = true; - await this.showDialog('resume', decision, undefined); - } - - /** - * Scenario 2: intercept an idle submit. Returns true when swallowed. - * Synchronous in every non-hint path — the send pipeline must stay - * await-free up to `sendMessage` (tests assert `prompt()` synchronously - * right after `handleUserInput`). When the config cache is cold the submit - * is swallowed while the config is fetched (spec: the trigger must reach - * the interface); the message is then either shown the dialog or released. - */ - maybeInterceptOnSubmit( - text: string, - extraction?: ExtractionResult, - inlineSkillActivations?: readonly InlineSkillActivation[], - ): boolean { - const { host } = this; - if (host.session === undefined) return false; - // A stashed message being released re-enters the send path here — never - // re-intercept it (that would start a second fetch loop). - if (this.releasingStashed) return false; - if (this.idlePrompted || this.lastActivityAt === undefined) return false; - if (host.state.appState.streamingPhase !== 'idle' || host.state.appState.isCompacting) { - return false; - } - if (host.state.appState.cacheExpiryHint === false) return false; - // Providers that can never match a cache rule (apiKey / self-hosted) must - // not pay the cold-fetch stall below — no hint can ever come of it. - if (this.upstreamModelId() === undefined) return false; - // Coarse floor: configured cache durations are 10min+, so anything - // fresher than a minute can never hint. - if (Date.now() - this.lastActivityAt < 60_000) return false; - const stash: StashedSubmit = { text, extraction, sessionId: host.session.id, inlineSkillActivations }; - const cached = peekCacheHintConfig(); - if (cached !== undefined) { - const decision = evaluateCacheHint({ - now: Date.now(), - lastActiveAt: this.lastActivityAt, - totalTokens: host.state.appState.contextTokens, - modelId: this.upstreamModelId(), - config: cached, - dismissed: false, - }); - if (decision.kind === 'skip') return false; - this.idlePrompted = true; - // Mounts synchronously inside; the action resolution runs async. - void this.showDialog('idle', decision, stash); - return true; - } - // Config cache cold: fetch at trigger time. Submits arriving while the - // interception is in flight are swallowed too and replayed through a FIFO - // chain, so a later prompt can never overtake the stashed one. A fetch - // that already failed this cycle falls through to the normal send path. - if (this.triggerFetchAttempted && this.pendingInterceptions === 0) return false; - this.triggerFetchAttempted = true; - const sessionId = host.session.id; - this.pendingInterceptions += 1; - this.interceptionTail = this.interceptionTail - .then(() => this.interceptAfterFetch(stash, sessionId)) - .finally(() => { - this.pendingInterceptions -= 1; - }); - return true; - } - - /** Cold-cache path: fetch the config, then show the dialog or release. */ - private async interceptAfterFetch(stash: StashedSubmit, sessionId: string): Promise { - const { host } = this; - // A dialog already ran for this idle cycle: chained submits follow the - // fate of the message that opened it. If that message was restored - // (dismissed or its action failed), restore these too — sending them now - // would reorder the conversation. - if (this.idlePrompted) { - if (this.lastDialogRestored) { - this.restoreStashedInput(stash); - } else { - await this.releaseStashed(stash); - } - return; - } - const config = await this.resolveConfig(); - // The fetch window is unbounded for the user: if they switched sessions - // meanwhile, never send the stashed text into the wrong session — hand it - // back to the editor instead. - if (host.session?.id !== sessionId) { - this.restoreStashedInput(stash); - return; - } - // If a foreground operation (turn, /compact, …) started meanwhile, don't - // mount over it — release through the normal path, which queues behind - // the running operation. - if (host.state.appState.streamingPhase !== 'idle' || host.state.appState.isCompacting) { - await this.releaseStashed(stash); - return; - } - if (config !== undefined) { - const decision = evaluateCacheHint({ - now: Date.now(), - lastActiveAt: this.lastActivityAt ?? 0, - totalTokens: host.state.appState.contextTokens, - modelId: this.upstreamModelId(), - config, - dismissed: false, - }); - if (decision.kind === 'hint') { - this.idlePrompted = true; - await this.showDialog('idle', decision, stash); - return; - } - } - // No hint (fetch failed or rules don't match): release the message. The - // re-entry skips the fetch (fresh cache or triggerFetchAttempted) and - // flows straight to send. - await this.releaseStashed(stash); - } - - /** Release a stashed message through the normal send path, bypassing the - * interception gate so the re-entry cannot start a second fetch. */ - private async releaseStashed(stash: StashedSubmit): Promise { - this.releasingStashed = true; - try { - await this.releaseToSendPath(stash); - } finally { - this.releasingStashed = false; - } - } - - private async releaseToSendPath(stash: StashedSubmit): Promise { - // A session reset cleared the image store: rebuild the extraction from - // its snapshots, persisting compressed pastes' originals into the NEW - // session's originals dir so the compression caption survives the move. - const extraction = - stash.extraction !== undefined && this.host.state.appState.sessionId !== stash.sessionId - ? makeExtractionResendable(stash.extraction, originalsDirForSession(this.host.session)) - : stash.extraction; - if (stash.inlineSkillActivations !== undefined && stash.inlineSkillActivations.length > 0) { - await this.host.sendInlineSkillUserInput(stash.text, stash.inlineSkillActivations, extraction); - return; - } - await this.host.sendNormalUserInput(stash.text, extraction); - } - - /** Restore a stashed input to the editor, appending to anything already - * restored this cycle so earlier text is not overwritten, and release the - * stash's staged media with recall semantics — the restored draft still - * references its attachments, so retains are consumed (the next submit - * re-retains) and staged copies retire instead of leaking. */ - private restoreStashedInput(stash: StashedSubmit | undefined): void { - if (stash === undefined) return; - this.restoredTexts.push(stash.text); - this.host.restoreInputText(this.restoredTexts.join('\n')); - this.host.recallStashedMedia(stash.extraction); - } - - private upstreamModelId(): string | undefined { - const { model, availableModels, availableProviders } = this.host.state.appState; - const alias = availableModels[model]; - if (alias === undefined) return undefined; - // The cache rules describe the managed service's server-side cache, so - // they only apply to OAuth providers on the managed base — apiKey, other - // OAuth, or self-hosted providers never hint. - const provider = availableProviders[alias.provider]; - if (provider?.oauth === undefined) return undefined; - if (!isManagedPythinkerCodeBaseUrl(alias.baseUrl ?? provider.baseUrl)) return undefined; - return alias.model; - } - - private async resolveConfig() { - const { model, availableModels, availableProviders } = this.host.state.appState; - let accessToken: string | undefined; - try { - accessToken = await managedAccessToken( - this.host.harness.auth, - model, - availableModels, - availableProviders, - ); - } catch { - // Facade unavailable (test doubles) — never fetch. - return undefined; - } - return getCacheHintConfig({ accessToken }); - } - - private async showDialog( - scene: 'resume' | 'idle', - decision: HintDecision, - stashed: StashedSubmit | undefined, - ): Promise { - const { host } = this; - host.track('cache_hint_shown', { - scene, - model: host.state.appState.model, - idle_seconds: decision.idleSeconds, - total_tokens: decision.totalTokens, - }); - const action = await new Promise((resolve) => { - host.state.activeDialog = 'cache-hint'; - host.mountEditorReplacement( - new CacheHintDialogComponent({ - idleSeconds: decision.idleSeconds, - totalTokens: decision.totalTokens, - onSelect: (a) => { - resolve(a); - }, - onCancel: () => { - resolve('dismiss'); - }, - }), - ); - }); - host.state.activeDialog = null; - host.restoreEditor(); - host.track('cache_hint_action', { action, scene }); - await this.runAction(action, stashed); - } - - private async runAction( - action: CacheHintAction | 'dismiss', - stashed: StashedSubmit | undefined, - ): Promise { - const { host } = this; - const restoreInput = () => { - this.lastDialogRestored = true; - this.restoreStashedInput(stashed); - }; - switch (action) { - case 'dismiss': - restoreInput(); - return; - case 'never': - host.setAppState({ cacheExpiryHint: false }); - try { - await saveTuiConfig({ ...currentTuiConfig(host), cacheExpiryHint: false }); - } catch { - host.showError('Failed to save the tui.toml preference.'); - } - break; - case 'compact': { - const session = host.session; - if (session !== undefined) { - try { - await session.compact({}); - } catch (error) { - host.showError(`Compact failed: ${formatErrorMessage(error)}`); - restoreInput(); - return; - } - if (stashed !== undefined) { - // compact() is trigger-only — the engine engages asynchronously. - // Wait for the engagement barrier so the resend lands in the - // queue and drains automatically when compaction finishes. - if (!(await this.waitForCompactionStart())) { - host.showError('Compact did not start; message not sent.'); - restoreInput(); - return; - } - } - } - break; - } - case 'new': { - const previousId = host.state.appState.sessionId; - await host.createNewSession(); - if (host.state.appState.sessionId === previousId) { - // Creation failed (error already surfaced); keep the input for retry. - restoreInput(); - return; - } - break; - } - case 'continue': - break; - } - this.lastDialogRestored = false; - if (stashed !== undefined) await this.releaseStashed(stashed); - } - - /** Bounded wait for the engine to flip `isCompacting` after a compact RPC. */ - private async waitForCompactionStart(timeoutMs = 3000): Promise { - const deadline = Date.now() + timeoutMs; - while (Date.now() < deadline) { - if (this.host.state.appState.isCompacting) return true; - await new Promise((resolve) => { - setTimeout(resolve, 25); - }); - } - return false; - } -} diff --git a/apps/pythinker-code/src/tui/controllers/session-event-handler.ts b/apps/pythinker-code/src/tui/controllers/session-event-handler.ts index c5db78e2b..a3d0fd764 100644 --- a/apps/pythinker-code/src/tui/controllers/session-event-handler.ts +++ b/apps/pythinker-code/src/tui/controllers/session-event-handler.ts @@ -29,7 +29,6 @@ import type { TurnStepInterruptedEvent, TurnStepRetryingEvent, TurnStepStartedEvent, - TokenUsage, WarningEvent, } from '@pymodel/pythinker-code-sdk'; @@ -109,9 +108,6 @@ export interface SessionEventHost { showNotice(title: string, detail?: string): void; updateActivityPane(): void; track(event: string, props?: Record): void; - recordSessionActivity(): void; - noteStepUsage(usage: TokenUsage | undefined): void; - noteCompactionFinished(): void; mountEditorReplacement(panel: Component & Focusable): void; restoreEditor(): void; restoreInputText(text: string): void; @@ -398,7 +394,6 @@ export class SessionEventHandler { } this.host.streamingUI.resetToolUi(); this.host.streamingUI.finalizeTurn(sendQueued); - this.host.recordSessionActivity(); this.renderPendingModelBlockedFallback(); this.currentTurnHasAssistantText = false; this.goalCompletionTurnEnded = true; @@ -440,7 +435,6 @@ export class SessionEventHandler { private handleStepCompleted(event: TurnStepCompletedEvent): void { this.host.streamingUI.flushNow(); this.clearStepRetry(); - this.host.noteStepUsage(event.usage); this.maybeShowDebugTiming(event); if (event.providerFinishReason === 'filtered') { @@ -1137,12 +1131,6 @@ export class SessionEventHandler { event.result.tokensAfter, event.result.summary, ); - // A completed compaction just refreshed and shrank the cached context — - // count it as activity so the next submit isn't judged against the - // pre-compaction timestamp, and reset the cache-break baseline (the drop - // is expected). Cancellations do neither: the context was not cut. - this.host.recordSessionActivity(); - this.host.noteCompactionFinished(); this.host.surveyController.notifyCompactionFinished(); this.finishCompaction(sendQueued); } diff --git a/apps/pythinker-code/src/tui/controllers/survey-controller.ts b/apps/pythinker-code/src/tui/controllers/survey-controller.ts index a4f151dbd..ff00ba221 100644 --- a/apps/pythinker-code/src/tui/controllers/survey-controller.ts +++ b/apps/pythinker-code/src/tui/controllers/survey-controller.ts @@ -1,6 +1,6 @@ import type { TurnStartedEvent } from '@pymodel/pythinker-code-sdk'; import { - cloudSurveyPopupConfigFeed, + localSurveyPopupConfigFeed, mountSessionRating, ratingCooldownFile, type RatingConfigFeed, @@ -14,7 +14,6 @@ import type { RatingOffer, RatingResponse } from '@pymodel/pythinker-code-produc import { isTelemetryDisabledByEnv } from '@pymodel/pythinker-telemetry'; import { Key, matchesKey, Spacer } from '@pymodel/pi-tui'; -import { clientConfigs } from '#/utils/client-configs'; import { getDataDir } from '#/utils/paths'; import { SurveyPanelComponent, type SurveyPanelView } from '../components/panes/survey-panel'; @@ -65,16 +64,6 @@ export interface SurveyControllerDeps { readonly telemetryDisabled?: () => boolean; readonly terminalHeight?: () => number; readonly terminalWidth?: () => number; - readonly accessToken?: () => Promise; -} - -function modelRoute(appState: TUIState['appState']): RatingEnvironment['model'] { - const entry = appState.availableModels[appState.model]; - if (entry === undefined) return { modelId: undefined, baseUrl: undefined }; - return { - modelId: entry.model, - baseUrl: entry.baseUrl ?? appState.availableProviders[entry.provider]?.baseUrl, - }; } export class SurveyController { @@ -101,7 +90,7 @@ export class SurveyController { private readonly deps: SurveyControllerDeps = {}, ) { this.configFeed = - deps.configFeed ?? cloudSurveyPopupConfigFeed(clientConfigs, deps.accessToken); + deps.configFeed ?? localSurveyPopupConfigFeed(); this.cooldown = deps.cooldown ?? ratingCooldownFile(getDataDir()); this.ledger = new SessionRatingLedger({ telemetryDisabled: () => (this.deps.telemetryDisabled ?? isTelemetryDisabledByEnv)(), @@ -334,7 +323,6 @@ export class SurveyController { return { sessionId: appState.sessionId ?? '', currentModel: appState.model, - model: modelRoute(appState), cumulativeTokens: appState.cumulativeTokens ?? 0, contextTokens: appState.contextTokens, permissionMode: appState.permissionMode, diff --git a/apps/pythinker-code/src/tui/pythinker-tui.ts b/apps/pythinker-code/src/tui/pythinker-tui.ts index eeedba1c3..20b9b8676 100644 --- a/apps/pythinker-code/src/tui/pythinker-tui.ts +++ b/apps/pythinker-code/src/tui/pythinker-tui.ts @@ -16,7 +16,6 @@ import type { PromptPart, Session, SkillSummary, - TokenUsage, TurnEndedEvent, TurnStartedEvent, Unsubscribe, @@ -44,16 +43,11 @@ import { copyTextToClipboard } from '#/utils/clipboard/clipboard-text'; import { appendInputHistory, loadInputHistory } from '#/utils/history/input-history'; import { openUrl } from '#/utils/open-url'; import { getInputHistoryFile } from '#/utils/paths'; -import { applyRecommendedEffort } from '#/utils/recommended-effort'; -import { getRecommendedEffortConfig } from '#/utils/recommended-effort-config'; -import { managedAccessToken } from '#/utils/managed-access-token'; import { migrateLegacySurveySetting } from '#/utils/survey-setting'; import { detectFdPath, ensureFdPath } from '#/utils/process/fd-detect'; import { quoteShellArg } from '#/utils/shell-quote'; import { restoreTerminalModes } from '#/utils/terminal-restore'; -import { BannerProvider } from './banner/banner-provider'; -import { readBannerDisplayState, writeBannerDisplayState } from './banner/state'; import { BUILTIN_SLASH_COMMANDS, buildPluginSlashCommands, @@ -67,8 +61,6 @@ import { } from './commands'; import * as slashCommands from './commands/dispatch'; import { cycleThinkingEffort } from './commands/config'; -import { CacheHintController } from './controllers/cache-hint-controller'; -import { BannerComponent } from './components/chrome/banner'; import { DeviceCodeBoxComponent } from './components/chrome/device-code-box'; import { GutterContainer } from './components/chrome/gutter-container'; import { ActivitySpinner } from './components/chrome/activity-spinner'; @@ -341,7 +333,6 @@ export class PythinkerTUI { private ensureSessionPromise: Promise | null = null; /** In-flight `/new` session replacement, shared by concurrent `/new` triggers. */ private newSessionPromise: Promise | null = null; - private readonly cacheHint = new CacheHintController(this); /** Staged prompt media lifecycle (daemon uploads + cache copies) — see StagingLeaseTracker. */ private readonly staging: StagingLeaseTracker; private readonly steeringQueuedMessages = new Set(); @@ -512,10 +503,6 @@ export class PythinkerTUI { this.sessionReplay = new SessionReplayRenderer(this); this.tasksBrowserController = new TasksBrowserController(this); this.surveyController = new SurveyController(this, { - accessToken: () => { - const { model, availableModels, availableProviders } = this.state.appState; - return managedAccessToken(this.harness.auth, model, availableModels, availableProviders); - }, telemetryDisabled: () => isTelemetryDisabledByEnv() || this.telemetryDisabled, }); this.modelMigration = new ModelMigrationController(this); @@ -707,52 +694,6 @@ export class PythinkerTUI { } } - private async loadBanner(): Promise { - const provider = new BannerProvider(this.state.appState.version); - const displayState = await readBannerDisplayState(); - const now = new Date(); - const banner = await provider.load({ - state: displayState, - now, - }); - this.state.appState.banner = banner; - if (banner === null) return; - - this.renderBanner(); - this.state.ui.requestRender(); - - if (banner.display === 'always') return; - try { - await writeBannerDisplayState({ - version: 1, - shown: { - ...displayState.shown, - [banner.key]: { lastShownAt: now.toISOString() }, - }, - }); - } catch { - // Best-effort: banner display state should never block startup. - } - } - - private renderBanner(): void { - if (this.state.appState.banner === null || this.state.appState.banner === undefined) { - return; - } - if (this.state.transcriptContainer.children.some((child) => child instanceof BannerComponent)) { - return; - } - const welcomeIndex = this.state.transcriptContainer.children.findIndex( - (child) => child instanceof WelcomeComponent, - ); - const banner = new BannerComponent(this.state.appState.banner); - if (welcomeIndex >= 0) { - this.state.transcriptContainer.children.splice(welcomeIndex + 1, 0, banner); - } else { - this.state.transcriptContainer.children.unshift(banner); - } - this.state.transcriptContainer.invalidate(); - } private async initMainTui(): Promise { const shouldReplayHistory = await this.init(); @@ -760,13 +701,11 @@ export class PythinkerTUI { // Mount only after init() succeeds; see mountFooter(). this.mountFooter(); this.renderWelcome(); - void this.loadBanner(); this.setupAutocomplete(); void this.loadPersistedInputHistory(); this.state.editorContainer.clear(); this.state.editorContainer.addChild(this.state.editor); this.state.ui.setFocus(this.state.editor); - this.applyRecommendedEffortInBackground(); return shouldReplayHistory; } @@ -813,28 +752,6 @@ export class PythinkerTUI { }); } - private applyRecommendedEffortInBackground(): void { - void this.backgroundRefreshPromise?.then(async () => { - await applyRecommendedEffort({ - fetchConfig: async () => { - const config = await this.harness.getConfig(); - return getRecommendedEffortConfig({ - accessToken: await managedAccessToken( - this.harness.auth, - config.defaultModel, - config.models, - config.providers, - ), - }); - }, - getConfig: () => this.harness.getConfig(), - setConfig: (patch) => this.harness.setConfig(patch), - track: (event, properties) => { - this.track(event, properties); - }, - }); - }); - } private async refreshProviderModelsInBackground(): Promise { try { @@ -907,9 +824,6 @@ export class PythinkerTUI { this.sessionEventHandler.startSubscription(); void this.showSessionWarnings(this.session); } - if (shouldReplayHistory) { - void this.cacheHint.maybeShowOnResume(); - } void this.fetchSessions(); if (this.session !== undefined) { this.updateTerminalTitle(); @@ -1525,16 +1439,6 @@ export class PythinkerTUI { this.staging.release(stagingLease); return; } - // Idle cache-hint interception sits before session creation; it is - // synchronous unless a hint actually fires. Aside from the bounded - // ingestion wait above, the send path stays await-free up to sendMessage. - if (this.cacheHint.maybeInterceptOnSubmit(text, extraction)) { - // The stash owns the extraction from here: its resend re-leases inside - // the re-entered send path, its restore goes through releaseRecalled - // (see CacheHintController). Detach so the stash is not double-owned. - this.staging.defer(stagingLease); - return; - } let session = this.session; if (session === undefined) { session = await this.ensureSession(); @@ -1604,7 +1508,6 @@ export class PythinkerTUI { ], []); return; } - if (this.cacheHint.maybeInterceptOnSubmit(text, extraction, activations)) return; let session = this.session; if (session === undefined) { session = await this.ensureSession(); @@ -1885,7 +1788,6 @@ export class PythinkerTUI { } beginSessionRequest(): void { - this.cacheHint.onTurnBegin(); this.streamingUI.setTurnId(undefined); this.streamingUI.resetLiveText(); this.streamingUI.resetToolUi(); @@ -2652,8 +2554,6 @@ export class PythinkerTUI { } private async createSessionFromCurrentState(bindStartupAgent = false): Promise { - // Background warm-up of the cache-hint config on every new session. - this.cacheHint.refreshConfigInBackground(); const model = this.state.appState.model.trim(); if (model.length === 0) { throw new Error(LLM_NOT_SET_MESSAGE); @@ -3005,7 +2905,6 @@ export class PythinkerTUI { resetSessionRuntime(options?: { readonly keepQueuedMessages?: boolean }): void { this.aborted = false; - this.cacheHint.resetRuntime(); this.surveyController.reset(); this.streamingUI.discardPending(); if (options?.keepQueuedMessages !== true) this.clearQueuedMessages(); @@ -3098,7 +2997,6 @@ export class PythinkerTUI { } this.showStatus(statusMessage); void this.showSessionWarnings(session); - void this.cacheHint.maybeShowOnResume(); } async reloadCurrentSessionView( @@ -3771,7 +3669,7 @@ export class PythinkerTUI { void openUrl(url); this.state.transcriptContainer.addChild( new DeviceCodeBoxComponent({ - title: 'Sign in to Pythinker Code', + title: 'Sign in to your provider', url, code: auth.userCode, hint: 'Press Ctrl-C to cancel', @@ -4294,26 +4192,6 @@ export class PythinkerTUI { this.state.ui.requestRender(); } - /** Latest in-process LLM round-trip; feeds the idle cache-hint scenario. */ - recordSessionActivity(): void { - this.cacheHint.recordActivity(); - } - - /** Per-step usage for the client-side cache-break detector. */ - noteStepUsage(usage: TokenUsage | undefined): void { - this.cacheHint.noteStepUsage(usage); - } - - /** Compaction shrinks the cached prefix — reset the cache-break baseline. */ - noteCompactionFinished(): void { - this.cacheHint.resetCacheBreakBaseline(); - } - - /** /undo cut the context — the next step's cache drop is expected. */ - noteContextCut(): void { - this.cacheHint.resetCacheBreakBaseline(); - } - private async runMigrationScreen(plan: MigrationPlan): Promise { const result = await new Promise((resolve) => { const screen = new MigrationScreenComponent({ diff --git a/apps/pythinker-code/src/tui/tui-state.ts b/apps/pythinker-code/src/tui/tui-state.ts index c35a0d4c4..ea9a34d44 100644 --- a/apps/pythinker-code/src/tui/tui-state.ts +++ b/apps/pythinker-code/src/tui/tui-state.ts @@ -70,7 +70,7 @@ export interface TUIState { /** A follow-up session page fetch is in flight. */ sessionsLoadingMore: boolean; sessionsScope: 'cwd' | 'all'; - activeDialog: 'session-picker' | 'help' | 'trust-prompt' | 'cache-hint' | null; + activeDialog: 'session-picker' | 'help' | 'trust-prompt' | null; /** * True while an editor-replacement panel (help, trust prompt, goal queue * manager, …) is mounted in place of the editor. Delayed input restores diff --git a/apps/pythinker-code/src/tui/utils/cache-hint.ts b/apps/pythinker-code/src/tui/utils/cache-hint.ts deleted file mode 100644 index 90a0d3e58..000000000 --- a/apps/pythinker-code/src/tui/utils/cache-hint.ts +++ /dev/null @@ -1,52 +0,0 @@ -import type { CacheHintConfig } from '#/utils/cache-hint-config'; - -export interface CacheHintInput { - /** Current time, epoch ms. */ - readonly now: number; - /** Last session activity, epoch ms. Missing → skip. */ - readonly lastActiveAt?: number; - /** Current context size in tokens. Missing → skip (no local estimation). */ - readonly totalTokens?: number; - /** Upstream model ID used to look up the rule. Missing/unconfigured → skip. */ - readonly modelId?: string; - /** Fetch failure → undefined → skip. */ - readonly config?: CacheHintConfig; - /** User chose "Don't ask me again" (tui.toml). */ - readonly dismissed: boolean; -} - -export type CacheHintDecision = - | { readonly kind: 'skip' } - | { readonly kind: 'hint'; readonly idleSeconds: number; readonly totalTokens: number }; - -/** - * Shared trigger rule for both the resume and the idle scenarios. Every - * missing-data branch skips — false negatives are acceptable, false positives - * are not. - */ -export function evaluateCacheHint(input: CacheHintInput): CacheHintDecision { - if (input.dismissed) return { kind: 'skip' }; - const { config, modelId, lastActiveAt, totalTokens } = input; - if (config === undefined || modelId === undefined) return { kind: 'skip' }; - if (lastActiveAt === undefined || totalTokens === undefined) return { kind: 'skip' }; - const rule = config.config[modelId]; - if (rule === undefined) return { kind: 'skip' }; - const idleMs = input.now - lastActiveAt; - if (idleMs <= rule.cache_duration * 1000) return { kind: 'skip' }; - if (totalTokens < rule.min_tokens_to_hint) return { kind: 'skip' }; - return { kind: 'hint', idleSeconds: Math.floor(idleMs / 1000), totalTokens }; -} - -/** `45m` / `3h 20m` / `26d 22h`. */ -export function formatIdleDuration(idleSeconds: number): string { - const minutes = Math.max(1, Math.floor(idleSeconds / 60)); - if (minutes < 60) return `${minutes}m`; - const hours = Math.floor(minutes / 60); - if (hours < 24) { - const restMinutes = minutes % 60; - return restMinutes === 0 ? `${hours}h` : `${hours}h ${restMinutes}m`; - } - const days = Math.floor(hours / 24); - const restHours = hours % 24; - return restHours === 0 ? `${days}d` : `${days}d ${restHours}h`; -} diff --git a/apps/pythinker-code/src/utils/cache-hint-config.ts b/apps/pythinker-code/src/utils/cache-hint-config.ts deleted file mode 100644 index 4c38bffa2..000000000 --- a/apps/pythinker-code/src/utils/cache-hint-config.ts +++ /dev/null @@ -1,48 +0,0 @@ -import type { ClientConfigFetchOptions } from '@pymodel/pythinker-code-product/client-configs/node'; -import { z } from 'zod'; - -import { clientConfigs } from '#/utils/client-configs'; - -/** The cache-hint rules are one named config on the client-configs endpoint. */ -const CONFIG_NAME = 'estimated_cache_duration'; - -const cacheHintModelRuleSchema = z.object({ - min_tokens_to_hint: z.number(), - cache_duration: z.number(), -}); - -const cacheHintConfigSchema = z.object({ - version: z.literal(1), - config: z.record(z.string(), cacheHintModelRuleSchema), -}); - -export type CacheHintConfig = z.infer; -export type CacheHintConfigFetchOptions = ClientConfigFetchOptions; - -/** - * Returns the cache-hint config, preferring the cache (1 day, persisted - * across restarts). Any failure resolves to `undefined` — callers treat - * that as "do not hint". - */ -export async function getCacheHintConfig( - options: CacheHintConfigFetchOptions = {}, -): Promise { - return clientConfigs.get(CONFIG_NAME, cacheHintConfigSchema, options); -} - -/** Fire-and-forget refresh, e.g. on new-session creation. Never throws. */ -export function refreshCacheHintConfigInBackground( - options: CacheHintConfigFetchOptions = {}, -): void { - void getCacheHintConfig(options).catch(() => undefined); -} - -/** Synchronous peek at the fresh cache; undefined when missing or stale. */ -export function peekCacheHintConfig(now?: number): CacheHintConfig | undefined { - return clientConfigs.peek(CONFIG_NAME, cacheHintConfigSchema, now); -} - -/** Test hook: drop the in-process cache. */ -export function resetCacheHintConfigCache(): void { - clientConfigs.reset(CONFIG_NAME); -} diff --git a/apps/pythinker-code/src/utils/client-configs.ts b/apps/pythinker-code/src/utils/client-configs.ts deleted file mode 100644 index 5340d3c41..000000000 --- a/apps/pythinker-code/src/utils/client-configs.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { join } from 'node:path'; - -import { ClientConfigClient } from '@pymodel/pythinker-code-product/client-configs/node'; - -import { getCacheDir } from '#/utils/paths'; -import { currentPythinkerRegion } from '#/utils/region'; - -export const clientConfigs = new ClientConfigClient({ - region: currentPythinkerRegion, - baseUrlOverride: () => process.env['CUSTOM_API_BASE_URL'], - cacheDir: () => join(getCacheDir(), 'client-configs'), -}); diff --git a/apps/pythinker-code/src/utils/managed-access-token.ts b/apps/pythinker-code/src/utils/managed-access-token.ts deleted file mode 100644 index 5f8355ce5..000000000 --- a/apps/pythinker-code/src/utils/managed-access-token.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { isManagedPythinkerCodeBaseUrl } from '@pymodel/pythinker-code-oauth'; -import type { ModelAlias, PythinkerAuthFacade, ProviderConfig } from '@pymodel/pythinker-code-sdk'; - -/** - * Cached access token of the model's provider, but only when that provider - * sits on the managed base (`CUSTOM_API_BASE_URL`). Any other provider's - * token must never reach that endpoint, so those resolve to undefined and the - * caller fetches anonymously. - */ -export async function managedAccessToken( - auth: Pick, - model: string | undefined, - models: Readonly> | undefined, - providers: Readonly>, -): Promise { - const entry = model === undefined ? undefined : models?.[model]; - if (entry === undefined) return undefined; - const provider = providers[entry.provider]; - if (provider?.oauth === undefined) return undefined; - if (!isManagedPythinkerCodeBaseUrl(entry.baseUrl ?? provider.baseUrl)) return undefined; - return auth.getCachedAccessToken(provider.oauth); -} diff --git a/apps/pythinker-code/src/utils/paths.ts b/apps/pythinker-code/src/utils/paths.ts index 1cfb456cc..09cc88361 100644 --- a/apps/pythinker-code/src/utils/paths.ts +++ b/apps/pythinker-code/src/utils/paths.ts @@ -22,7 +22,6 @@ import { PYTHINKER_CODE_NATIVE_STAGED_STATE_FILE_NAME, PYTHINKER_CODE_NATIVE_STAGING_DIR_NAME, PYTHINKER_CODE_PLUGIN_UPDATE_NOTICE_STATE_FILE_NAME, - PYTHINKER_CODE_RECOMMENDED_EFFORT_STATE_FILE_NAME, PYTHINKER_CODE_UPDATE_INSTALL_LOCK_FILE_NAME, PYTHINKER_CODE_UPDATE_INSTALL_STATE_FILE_NAME, PYTHINKER_CODE_UPDATE_DIR_NAME, @@ -129,9 +128,6 @@ export function getBannerStateFile(): string { } -export function getRecommendedEffortStateFile(): string { - return join(getDataDir(), PYTHINKER_CODE_RECOMMENDED_EFFORT_STATE_FILE_NAME); -} export function getModelMigrationStateFile(): string { return join(getDataDir(), PYTHINKER_CODE_MODEL_MIGRATION_STATE_FILE_NAME); diff --git a/apps/pythinker-code/src/utils/recommended-effort-config.ts b/apps/pythinker-code/src/utils/recommended-effort-config.ts deleted file mode 100644 index 18522c7d7..000000000 --- a/apps/pythinker-code/src/utils/recommended-effort-config.ts +++ /dev/null @@ -1,43 +0,0 @@ -import type { ClientConfigFetchOptions } from '@pymodel/pythinker-code-product/client-configs/node'; -import { z } from 'zod'; - -import { clientConfigs } from '#/utils/client-configs'; - -const CONFIG_NAME = 'recommended_effort'; - -export interface RecommendedEffortEntry { - version: number; - recommended_default_effort: string; -} - -export type RecommendedEffortConfig = Record; - -const recommendedEffortEntrySchema = z.object({ - version: z.number().int().min(0), - recommended_default_effort: z.string(), -}); - -const recommendedEffortConfigSchema = z - .record(z.string(), z.unknown()) - .transform((record): RecommendedEffortConfig => { - const config: RecommendedEffortConfig = {}; - for (const [model, rawEntry] of Object.entries(record)) { - const parsed = recommendedEffortEntrySchema.safeParse(rawEntry); - if (parsed.success) config[model] = parsed.data; - } - return config; - }); - -export async function getRecommendedEffortConfig( - options: ClientConfigFetchOptions = {}, -): Promise { - return clientConfigs.get(CONFIG_NAME, recommendedEffortConfigSchema, options); -} - -export function peekRecommendedEffortConfig(now?: number): RecommendedEffortConfig | undefined { - return clientConfigs.peek(CONFIG_NAME, recommendedEffortConfigSchema, now); -} - -export function resetRecommendedEffortConfigCache(): void { - clientConfigs.reset(CONFIG_NAME); -} diff --git a/apps/pythinker-code/src/utils/recommended-effort-state-store.ts b/apps/pythinker-code/src/utils/recommended-effort-state-store.ts deleted file mode 100644 index d93dc723a..000000000 --- a/apps/pythinker-code/src/utils/recommended-effort-state-store.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { z } from 'zod'; - -import { getRecommendedEffortStateFile } from '#/utils/paths'; -import { readJsonFile, writeJsonFileSync } from '#/utils/persistence'; - -const RecommendedEffortStateSchema = z.record( - z.string(), - z.object({ - version: z.number().int().min(0), - applied_at: z.string(), - }), -); - -export type RecommendedEffortState = z.infer; - -export async function readRecommendedEffortState( - filePath: string = getRecommendedEffortStateFile(), -): Promise { - try { - return await readJsonFile(filePath, RecommendedEffortStateSchema, {}); - } catch { - return {}; - } -} - -export function writeRecommendedEffortState( - state: RecommendedEffortState, - filePath: string = getRecommendedEffortStateFile(), -): void { - writeJsonFileSync(filePath, RecommendedEffortStateSchema, state); -} diff --git a/apps/pythinker-code/src/utils/recommended-effort.ts b/apps/pythinker-code/src/utils/recommended-effort.ts deleted file mode 100644 index 409072ed8..000000000 --- a/apps/pythinker-code/src/utils/recommended-effort.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { isManagedPythinkerCodeBaseUrl } from '@pymodel/pythinker-code-oauth'; -import type { PythinkerConfig, PythinkerConfigPatch, ModelAlias } from '@pymodel/pythinker-code-sdk'; -import type { TelemetryProperties } from '@pymodel/pythinker-telemetry'; - -import { getRecommendedEffortStateFile } from '#/utils/paths'; -import type { RecommendedEffortConfig } from '#/utils/recommended-effort-config'; -import { - readRecommendedEffortState, - writeRecommendedEffortState, -} from '#/utils/recommended-effort-state-store'; - -export interface ApplyRecommendedEffortDeps { - fetchConfig: () => Promise; - getConfig: () => Promise; - setConfig: (patch: PythinkerConfigPatch) => Promise; - track: (event: string, properties?: TelemetryProperties) => void; - stateFile?: string; - now?: () => Date; -} - -function eligibleModelEntry(config: PythinkerConfig): ModelAlias | undefined { - if (config.thinking?.enabled === false) return undefined; - const alias = config.defaultModel; - if (alias === undefined) return undefined; - const entry = config.models?.[alias]; - if (entry === undefined) return undefined; - const baseUrl = entry.baseUrl ?? config.providers[entry.provider]?.baseUrl; - return isManagedPythinkerCodeBaseUrl(baseUrl) ? entry : undefined; -} - -export async function applyRecommendedEffort(deps: ApplyRecommendedEffortDeps): Promise { - try { - if (eligibleModelEntry(await deps.getConfig()) === undefined) return; - const cloud = await deps.fetchConfig(); - if (cloud === undefined) return; - - const config = await deps.getConfig(); - const modelEntry = eligibleModelEntry(config); - if (modelEntry === undefined) return; - const campaign = cloud[modelEntry.model]; - if (campaign === undefined) return; - const supportEfforts = modelEntry.overrides?.supportEfforts ?? modelEntry.supportEfforts; - if (!supportEfforts?.includes(campaign.recommended_default_effort)) return; - - const stateFile = deps.stateFile ?? getRecommendedEffortStateFile(); - const state = await readRecommendedEffortState(stateFile); - const applied = state[modelEntry.model]; - if (applied !== undefined && campaign.version <= applied.version) return; - - const previousEffort = config.thinking?.effort; - if (previousEffort !== campaign.recommended_default_effort) { - await deps.setConfig({ thinking: { effort: campaign.recommended_default_effort } }); - } - writeRecommendedEffortState( - { - ...state, - [modelEntry.model]: { - version: campaign.version, - applied_at: (deps.now?.() ?? new Date()).toISOString(), - }, - }, - stateFile, - ); - deps.track('recommended_effort_applied', { - model: modelEntry.model, - version: campaign.version, - effort: campaign.recommended_default_effort, - previous_effort: previousEffort, - }); - } catch { - } -} diff --git a/apps/pythinker-code/test/tui/banner/banner-provider.test.ts b/apps/pythinker-code/test/tui/banner/banner-provider.test.ts deleted file mode 100644 index 12f8573ca..000000000 --- a/apps/pythinker-code/test/tui/banner/banner-provider.test.ts +++ /dev/null @@ -1,780 +0,0 @@ -import { describe, expect, it } from 'vitest'; - -import { - selectBannerState, - selectDisplayableBanner, - shouldDisplayBanner, -} from '#/tui/banner/banner-provider'; -import type { BannerState } from '#/tui/types'; - -describe('selectBannerState', () => { - const now = new Date('2026-06-15T12:00:00+08:00'); - - function expectAlwaysBanner( - result: BannerState | null, - expected: Pick, - ): BannerState { - expect(result).not.toBeNull(); - const banner = result!; - expect(banner).toMatchObject({ ...expected, display: 'always' }); - expect(banner.key).toEqual(expect.any(String)); - expect(banner.ttlHours).toBeUndefined(); - return banner; - } - - it('returns the active banner when enabled and no time window is set', () => { - const result = selectBannerState( - { - banner_enabled: true, - banner_title: 'New', - banner_maintext: 'Active', - banner_subtext: 'Details', - }, - '0.14.0', - now, - () => 0, - ); - expectAlwaysBanner(result, { tag: 'New', mainText: 'Active', subText: 'Details' }); - }); - - it('returns null when the active banner is outside its time window', () => { - const result = selectBannerState( - { - banner_enabled: true, - banner_title: 'Old', - banner_maintext: 'Expired', - banner_start_time: '2026-05-01T00:00:00+08:00', - banner_end_time: '2026-05-31T00:00:00+08:00', - }, - '0.14.0', - now, - () => 0, - ); - expect(result).toBeNull(); - }); - - it('filters out the active banner when the client version is too low', () => { - const result = selectBannerState( - { - banner_enabled: true, - banner_maintext: 'New', - banner_min_version: '0.15.0', - }, - '0.14.0', - now, - () => 0, - ); - expect(result).toBeNull(); - }); - - it('shows the active banner only below banner_max_version', () => { - const json = { - banner_enabled: true, - banner_maintext: 'Upgrade', - banner_max_version: '0.15.0', - }; - expect(selectBannerState(json, '0.14.0', now, () => 0)).toMatchObject({ - mainText: 'Upgrade', - }); - expect(selectBannerState(json, '0.15.0', now, () => 0)).toBeNull(); - expect(selectBannerState(json, '0.16.0', now, () => 0)).toBeNull(); - }); - - it('shows the active banner only on the exact banner_version', () => { - const json = { - banner_enabled: true, - banner_maintext: 'Pinned', - banner_version: '0.14.0', - }; - expect(selectBannerState(json, '0.14.0', now, () => 0)).toMatchObject({ - mainText: 'Pinned', - }); - expect(selectBannerState(json, '0.14.1', now, () => 0)).toBeNull(); - expect(selectBannerState(json, '0.13.9', now, () => 0)).toBeNull(); - }); - - it('combines min and max version as an inclusive-exclusive range', () => { - const json = { - banner_enabled: true, - banner_maintext: 'Range', - banner_min_version: '0.13.0', - banner_max_version: '0.15.0', - }; - expect(selectBannerState(json, '0.12.9', now, () => 0)).toBeNull(); - expect(selectBannerState(json, '0.13.0', now, () => 0)).not.toBeNull(); - expect(selectBannerState(json, '0.14.9', now, () => 0)).not.toBeNull(); - expect(selectBannerState(json, '0.15.0', now, () => 0)).toBeNull(); - }); - - it('filters out the banner when a version constraint is not valid semver', () => { - for (const constraint of [ - { banner_max_version: 'not-a-version' }, - { banner_version: 'not-a-version' }, - ]) { - const result = selectBannerState( - { - banner_enabled: true, - banner_maintext: 'Broken', - ...constraint, - }, - '0.14.0', - now, - () => 0, - ); - expect(result).toBeNull(); - } - }); - - it('picks a random enabled fallback when the active banner is not shown', () => { - const result = selectBannerState( - { - banner_enabled: false, - banner_fallback_enabled: true, - banner_fallback_list: [ - { enabled: true, banner_title: 'Tip', banner_maintext: 'First' }, - { enabled: true, banner_title: 'Tip', banner_maintext: 'Second' }, - ], - }, - '0.14.0', - now, - () => 0.75, - ); - expectAlwaysBanner(result, { tag: 'Tip', mainText: 'Second', subText: null }); - }); - - it('filters out fallback entries when the client version is too low', () => { - const result = selectBannerState( - { - banner_enabled: false, - banner_fallback_enabled: true, - banner_fallback_list: [ - { enabled: true, banner_maintext: 'Old tip' }, - { enabled: true, banner_maintext: 'New tip', banner_min_version: '0.15.0' }, - ], - }, - '0.14.0', - now, - () => 0, - ); - expectAlwaysBanner(result, { tag: null, mainText: 'Old tip', subText: null }); - }); - - it('filters out fallback entries by max and exact version', () => { - const result = selectBannerState( - { - banner_enabled: false, - banner_fallback_enabled: true, - banner_fallback_list: [ - { enabled: true, banner_maintext: 'Too new', banner_max_version: '0.14.0' }, - { enabled: true, banner_maintext: 'Other version', banner_version: '0.13.0' }, - { enabled: true, banner_maintext: 'Matching', banner_version: '0.14.0' }, - ], - }, - '0.14.0', - now, - () => 0.99, - ); - expectAlwaysBanner(result, { tag: null, mainText: 'Matching', subText: null }); - }); - - it('returns null when no enabled fallback entries exist', () => { - const result = selectBannerState( - { - banner_enabled: false, - banner_fallback_enabled: true, - banner_fallback_list: [{ enabled: false, banner_maintext: 'Hidden' }], - }, - '0.14.0', - now, - () => 0, - ); - expect(result).toBeNull(); - }); - - it('returns null for malformed input fields', () => { - expect(selectBannerState({ weird: true }, '0.14.0', now, () => 0)).toBeNull(); - }); - - it('falls back to the fallback list when banner_enabled is missing', () => { - const result = selectBannerState( - { - banner_fallback_enabled: true, - banner_fallback_list: [{ enabled: true, banner_maintext: 'Fallback' }], - }, - '0.14.0', - now, - () => 0, - ); - expectAlwaysBanner(result, { tag: null, mainText: 'Fallback', subText: null }); - }); - - it('treats an empty tag as null while still showing the banner', () => { - const result = selectBannerState( - { - banner_enabled: true, - banner_title: '', - banner_maintext: 'No tag', - }, - '0.14.0', - now, - () => 0, - ); - expectAlwaysBanner(result, { tag: null, mainText: 'No tag', subText: null }); - }); - - it('makes the active banner unavailable when mainText is empty', () => { - const result = selectBannerState( - { - banner_enabled: true, - banner_title: 'New', - banner_maintext: '', - banner_fallback_enabled: true, - banner_fallback_list: [{ enabled: true, banner_maintext: 'Fallback' }], - }, - '0.14.0', - now, - () => 0, - ); - expectAlwaysBanner(result, { tag: null, mainText: 'Fallback', subText: null }); - }); - - it('treats missing subtext as null', () => { - const result = selectBannerState( - { - banner_enabled: true, - banner_maintext: 'Main only', - }, - '0.14.0', - now, - () => 0, - ); - expectAlwaysBanner(result, { tag: null, mainText: 'Main only', subText: null }); - }); - - it('treats empty time fields as always valid', () => { - const result = selectBannerState( - { - banner_enabled: true, - banner_maintext: 'Always on', - banner_start_time: '', - banner_end_time: null, - }, - '0.14.0', - now, - () => 0, - ); - expectAlwaysBanner(result, { tag: null, mainText: 'Always on', subText: null }); - }); - - it('falls back to UTC when timestamps have no timezone', () => { - const result = selectBannerState( - { - banner_enabled: true, - banner_maintext: 'UTC fallback', - banner_start_time: '2026-06-15T04:00:00', - banner_end_time: '2026-06-15T20:00:00', - }, - '0.14.0', - now, - () => 0, - ); - expectAlwaysBanner(result, { tag: null, mainText: 'UTC fallback', subText: null }); - }); - - it('returns null when the fallback list is empty', () => { - const result = selectBannerState( - { - banner_enabled: false, - banner_fallback_enabled: true, - banner_fallback_list: [], - }, - '0.14.0', - now, - () => 0, - ); - expect(result).toBeNull(); - }); - - it('returns null when the fallback list is missing', () => { - const result = selectBannerState( - { - banner_enabled: false, - banner_fallback_enabled: true, - }, - '0.14.0', - now, - () => 0, - ); - expect(result).toBeNull(); - }); - - it('uses banner_id as the banner key when present', () => { - const result = selectBannerState( - { - banner_enabled: true, - banner_id: 'active-1', - banner_maintext: 'Active', - }, - '0.14.0', - now, - () => 0, - ); - expect(result).toMatchObject({ key: 'active-1', display: 'always' }); - }); - - it('generates a stable hash key when banner_id is missing', () => { - const json = { - banner_enabled: true, - banner_title: 'New', - banner_maintext: 'Active', - banner_subtext: 'Details', - }; - - const first = selectBannerState(json, '0.14.0', now, () => 0); - const second = selectBannerState(json, '0.14.0', now, () => 0); - const changedDisplay = selectBannerState( - { - ...json, - banner_display: 'cooldown', - banner_display_ttl_hours: 72, - }, - '0.14.0', - now, - () => 0, - ); - - expect(first).not.toBeNull(); - expect(second).not.toBeNull(); - expect(changedDisplay).not.toBeNull(); - expect(first!.key).toMatch(/^[0-9a-f]{32}$/); - expect(second!.key).toBe(first!.key); - expect(changedDisplay!.key).not.toBe(first!.key); - }); - - it('parses cooldown display and ttl hours', () => { - const result = selectBannerState( - { - banner_enabled: true, - banner_id: 'active-1', - banner_maintext: 'Active', - banner_display: 'cooldown', - banner_display_ttl_hours: 72, - }, - '0.14.0', - now, - () => 0, - ); - expect(result).toMatchObject({ - key: 'active-1', - display: 'cooldown', - ttlHours: 72, - }); - }); - - it('falls back to 24 hours when cooldown ttl is invalid', () => { - const result = selectBannerState( - { - banner_enabled: true, - banner_id: 'active-1', - banner_maintext: 'Active', - banner_display: 'cooldown', - banner_display_ttl_hours: 0, - }, - '0.14.0', - now, - () => 0, - ); - expect(result).toMatchObject({ display: 'cooldown', ttlHours: 24 }); - }); - - it('falls back to always for unknown display values', () => { - const result = selectBannerState( - { - banner_enabled: true, - banner_id: 'active-1', - banner_maintext: 'Active', - banner_display: '24h', - }, - '0.14.0', - now, - () => 0, - ); - expect(result).toMatchObject({ display: 'always' }); - expect(result?.ttlHours).toBeUndefined(); - }); - - it('supports fallback display and ttl fields', () => { - const result = selectBannerState( - { - banner_enabled: false, - banner_fallback_enabled: true, - banner_fallback_list: [ - { - enabled: true, - banner_id: 'fallback-1', - banner_maintext: 'Fallback', - banner_display: 'cooldown', - banner_display_ttl_hours: 168, - }, - ], - }, - '0.14.0', - now, - () => 0, - ); - expect(result).toMatchObject({ - key: 'fallback-1', - display: 'cooldown', - ttlHours: 168, - }); - }); - - it('shows the banner when banner_platform is missing, empty, all, or cli', () => { - for (const banner_platform of [undefined, null, '', ' ', 'all', 'cli', 'ALL', ' CLI ']) { - const result = selectBannerState( - { - banner_enabled: true, - banner_maintext: 'Active', - banner_platform, - }, - '0.14.0', - now, - () => 0, - ); - expect(result, `platform=${String(banner_platform)}`).not.toBeNull(); - } - }); - - it('skips the active banner when banner_platform targets other platforms', () => { - for (const banner_platform of ['desktop', 'web']) { - const result = selectBannerState( - { - banner_enabled: true, - banner_maintext: 'Active', - banner_platform, - banner_fallback_enabled: true, - banner_fallback_list: [{ enabled: true, banner_maintext: 'Fallback' }], - }, - '0.14.0', - now, - () => 0, - ); - expectAlwaysBanner(result, { tag: null, mainText: 'Fallback', subText: null }); - } - }); - - it('filters fallback entries by banner_platform', () => { - const result = selectBannerState( - { - banner_enabled: false, - banner_fallback_enabled: true, - banner_fallback_list: [ - { enabled: true, banner_maintext: 'Desktop tip', banner_platform: 'desktop' }, - { enabled: true, banner_maintext: 'Web tip', banner_platform: 'web' }, - { enabled: true, banner_maintext: 'Cli tip', banner_platform: 'cli' }, - ], - }, - '0.14.0', - now, - () => 0.99, - ); - expectAlwaysBanner(result, { tag: null, mainText: 'Cli tip', subText: null }); - }); - - it('filters fallback entries by their time window', () => { - const result = selectBannerState( - { - banner_enabled: false, - banner_fallback_enabled: true, - banner_fallback_list: [ - { - enabled: true, - banner_maintext: 'Expired tip', - banner_end_time: '2026-06-01T00:00:00+08:00', - }, - { - enabled: true, - banner_maintext: 'Future tip', - banner_start_time: '2026-07-01T00:00:00+08:00', - }, - { - enabled: true, - banner_maintext: 'Current tip', - banner_start_time: '2026-06-01T00:00:00+08:00', - banner_end_time: '2026-06-30T00:00:00+08:00', - }, - ], - }, - '0.14.0', - now, - () => 0.99, - ); - expectAlwaysBanner(result, { tag: null, mainText: 'Current tip', subText: null }); - }); - - it('treats fallback entries without time fields as always valid', () => { - const result = selectBannerState( - { - banner_enabled: false, - banner_fallback_enabled: true, - banner_fallback_list: [ - { enabled: true, banner_maintext: 'No window', banner_start_time: '', banner_end_time: null }, - ], - }, - '0.14.0', - now, - () => 0, - ); - expectAlwaysBanner(result, { tag: null, mainText: 'No window', subText: null }); - }); -}); - -describe('shouldDisplayBanner', () => { - const now = new Date('2026-06-16T12:00:00.000Z'); - - const banner: BannerState = { - key: 'always', - tag: null, - mainText: 'Always', - subText: null, - display: 'always', - }; - - it('returns true for always banners even when they were shown before', () => { - expect( - shouldDisplayBanner( - banner, - { - version: 1, - shown: { - always: { lastShownAt: '2026-06-16T11:59:59.000Z' }, - }, - }, - now, - ), - ).toBe(true); - }); - - it('returns true for once banners without a shown record', () => { - expect(shouldDisplayBanner({ ...banner, key: 'once', display: 'once' }, { version: 1, shown: {} }, now)).toBe( - true, - ); - }); - - it('returns false for once banners with a shown record', () => { - expect( - shouldDisplayBanner( - { ...banner, key: 'once', display: 'once' }, - { - version: 1, - shown: { - once: { lastShownAt: '2026-06-16T11:59:59.000Z' }, - }, - }, - now, - ), - ).toBe(false); - }); - - it('treats an invalid shown record as not shown', () => { - expect( - shouldDisplayBanner( - { ...banner, key: 'once', display: 'once' }, - { - version: 1, - shown: { - once: { lastShownAt: 'not-a-date' }, - }, - }, - now, - ), - ).toBe(true); - }); - - it('returns false during cooldown ttl', () => { - expect( - shouldDisplayBanner( - { ...banner, key: 'cooldown', display: 'cooldown', ttlHours: 24 }, - { - version: 1, - shown: { - cooldown: { lastShownAt: '2026-06-16T00:00:00.000Z' }, - }, - }, - now, - ), - ).toBe(false); - }); - - it('returns true at the cooldown ttl boundary', () => { - expect( - shouldDisplayBanner( - { ...banner, key: 'cooldown', display: 'cooldown', ttlHours: 24 }, - { - version: 1, - shown: { - cooldown: { lastShownAt: '2026-06-15T12:00:00.000Z' }, - }, - }, - now, - ), - ).toBe(true); - }); - - it('supports custom cooldown ttl values', () => { - expect( - shouldDisplayBanner( - { ...banner, key: 'cooldown', display: 'cooldown', ttlHours: 1 }, - { - version: 1, - shown: { - cooldown: { lastShownAt: '2026-06-16T11:30:00.000Z' }, - }, - }, - now, - ), - ).toBe(false); - expect( - shouldDisplayBanner( - { ...banner, key: 'cooldown', display: 'cooldown', ttlHours: 168 }, - { - version: 1, - shown: { - cooldown: { lastShownAt: '2026-06-09T12:00:01.000Z' }, - }, - }, - now, - ), - ).toBe(false); - }); -}); - -describe('selectDisplayableBanner', () => { - const now = new Date('2026-06-16T12:00:00.000Z'); - - it('falls back when the active once banner was already shown', () => { - const result = selectDisplayableBanner({ - json: { - banner_enabled: true, - banner_id: 'active', - banner_maintext: 'Active', - banner_display: 'once', - banner_fallback_enabled: true, - banner_fallback_list: [ - { - enabled: true, - banner_id: 'fallback', - banner_maintext: 'Fallback', - banner_display: 'once', - }, - ], - }, - clientVersion: '0.14.0', - now, - random: () => 0, - state: { - version: 1, - shown: { - active: { lastShownAt: '2026-06-16T00:00:00.000Z' }, - }, - }, - }); - - expect(result).toMatchObject({ key: 'fallback', display: 'once' }); - }); - - it('falls back when active cooldown is within ttl', () => { - const result = selectDisplayableBanner({ - json: { - banner_enabled: true, - banner_id: 'active', - banner_maintext: 'Active', - banner_display: 'cooldown', - banner_display_ttl_hours: 1, - banner_fallback_enabled: true, - banner_fallback_list: [ - { - enabled: true, - banner_id: 'fallback', - banner_maintext: 'Fallback', - }, - ], - }, - clientVersion: '0.14.0', - now, - random: () => 0, - state: { - version: 1, - shown: { - active: { lastShownAt: '2026-06-16T11:30:00.000Z' }, - }, - }, - }); - - expect(result).toMatchObject({ key: 'fallback', display: 'always' }); - }); - - it('returns active cooldown after ttl instead of fallback', () => { - const result = selectDisplayableBanner({ - json: { - banner_enabled: true, - banner_id: 'active', - banner_maintext: 'Active', - banner_display: 'cooldown', - banner_display_ttl_hours: 24, - banner_fallback_enabled: true, - banner_fallback_list: [ - { - enabled: true, - banner_id: 'fallback', - banner_maintext: 'Fallback', - }, - ], - }, - clientVersion: '0.14.0', - now, - random: () => 0, - state: { - version: 1, - shown: { - active: { lastShownAt: '2026-06-15T12:00:00.000Z' }, - }, - }, - }); - - expect(result).toMatchObject({ key: 'active', display: 'cooldown', ttlHours: 24 }); - }); - - it('randomly chooses only displayable fallback candidates', () => { - const result = selectDisplayableBanner({ - json: { - banner_enabled: false, - banner_fallback_enabled: true, - banner_fallback_list: [ - { - enabled: true, - banner_id: 'fallback-once', - banner_maintext: 'Fallback once', - banner_display: 'once', - }, - { - enabled: true, - banner_id: 'fallback-always', - banner_maintext: 'Fallback always', - }, - ], - }, - clientVersion: '0.14.0', - now, - random: () => 0, - state: { - version: 1, - shown: { - 'fallback-once': { lastShownAt: '2026-06-16T00:00:00.000Z' }, - }, - }, - }); - - expect(result).toMatchObject({ key: 'fallback-always', display: 'always' }); - }); -}); diff --git a/apps/pythinker-code/test/tui/banner/state.test.ts b/apps/pythinker-code/test/tui/banner/state.test.ts deleted file mode 100644 index 4d1780f37..000000000 --- a/apps/pythinker-code/test/tui/banner/state.test.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs'; -import { tmpdir } from 'node:os'; -import { join } from 'node:path'; - -import { afterEach, beforeEach, describe, expect, it } from 'vitest'; - -import { - emptyBannerDisplayState, - readBannerDisplayState, - writeBannerDisplayState, -} from '#/tui/banner/state'; -import { getBannerStateFile } from '#/utils/paths'; - -const originalEnv = { ...process.env }; - -let dir: string; - -beforeEach(() => { - dir = mkdtempSync(join(tmpdir(), 'pythinker-banner-state-')); - process.env['PYTHINKER_CODE_HOME'] = dir; -}); - -afterEach(() => { - rmSync(dir, { recursive: true, force: true }); - process.env = { ...originalEnv }; -}); - -describe('banner display state cache', () => { - it('returns an empty state when the file is missing', async () => { - await expect(readBannerDisplayState()).resolves.toEqual(emptyBannerDisplayState()); - }); - - it('falls back to an empty state when the file is corrupt', async () => { - mkdirSync(join(dir, 'cache', 'banner'), { recursive: true }); - writeFileSync(getBannerStateFile(), '{"broken"', 'utf-8'); - await expect(readBannerDisplayState()).resolves.toEqual(emptyBannerDisplayState()); - }); - - it('falls back to an empty state for an unknown future version', async () => { - mkdirSync(join(dir, 'cache', 'banner'), { recursive: true }); - writeFileSync( - getBannerStateFile(), - JSON.stringify({ - version: 2, - shown: {}, - }), - 'utf-8', - ); - await expect(readBannerDisplayState()).resolves.toEqual(emptyBannerDisplayState()); - }); - - it('writes and reads back the state from cache/banner/state.json', async () => { - const state = { - version: 1 as const, - shown: { - active: { lastShownAt: '2026-06-16T00:00:00.000Z' }, - }, - }; - - await writeBannerDisplayState(state); - - expect(getBannerStateFile()).toBe(join(dir, 'cache', 'banner', 'state.json')); - await expect(readBannerDisplayState()).resolves.toEqual(state); - }); - - it('drops invalid shown records when reading', async () => { - mkdirSync(join(dir, 'cache', 'banner'), { recursive: true }); - writeFileSync( - getBannerStateFile(), - JSON.stringify({ - version: 1, - shown: { - valid: { lastShownAt: '2026-06-16T00:00:00.000Z' }, - invalid: { lastShownAt: 'not-a-date' }, - malformed: { shownAt: '2026-06-16T00:00:00.000Z' }, - }, - }), - 'utf-8', - ); - - await expect(readBannerDisplayState()).resolves.toEqual({ - version: 1, - shown: { - valid: { lastShownAt: '2026-06-16T00:00:00.000Z' }, - }, - }); - }); -}); diff --git a/apps/pythinker-code/test/tui/components/chrome/banner.test.ts b/apps/pythinker-code/test/tui/components/chrome/banner.test.ts deleted file mode 100644 index 7cff4b4c1..000000000 --- a/apps/pythinker-code/test/tui/components/chrome/banner.test.ts +++ /dev/null @@ -1,242 +0,0 @@ -import chalk from 'chalk'; -import { afterEach, beforeEach, describe, expect, it } from 'vitest'; -import { visibleWidth } from '@pymodel/pi-tui'; - -import { BannerComponent } from '#/tui/components/chrome/banner'; -import { currentTheme } from '#/tui/theme'; -import type { BannerState } from '#/tui/types'; - -function makeBannerState(overrides: Partial = {}): BannerState { - return { - key: 'component-banner', - tag: null, - mainText: '', - subText: null, - display: 'always', - ...overrides, - }; -} - -const banner: BannerState = makeBannerState({ - tag: "What's new:", - mainText: 'This is the main banner message for testing purposes.', - subText: 'This is a short subtext line.', -}); - -describe('BannerComponent', () => { - const previousChalkLevel = chalk.level; - - beforeEach(() => { - chalk.level = 3; - }); - - afterEach(() => { - chalk.level = previousChalkLevel; - }); - - it('renders star tag, main text, and subtext', () => { - const lines = new BannerComponent(banner).render(80); - expect(lines.length).toBe(3); - expect(lines[0]).toContain('✦'); - expect(lines[0]).toContain("What's new:"); - expect(lines[0]).toContain('This is the main banner message'); - expect(lines[1]).toContain('This is a short subtext'); - expect(lines[2]).toBe(''); - }); - - it('does not add an extra colon to the tag', () => { - const lines = new BannerComponent(banner).render(80); - expect(lines[0]).not.toContain("What's new::"); - }); - - it('renders without a tag when tag is empty', () => { - const lines = new BannerComponent(makeBannerState({ mainText: 'Hello' })).render(80); - expect(lines.length).toBe(2); - expect(lines[0]).not.toContain('✦'); - expect(lines[0]).toContain('Hello'); - expect(lines[1]).toBe(''); - }); - - it('wraps long main text to fit available width', () => { - const width = 30; - const lines = new BannerComponent(banner).render(width); - for (const line of lines) { - expect(visibleWidth(line)).toBeLessThanOrEqual(width); - } - expect(lines.some((line) => line.includes('…'))).toBe(false); - const mainContentLines = lines.filter((line) => - /main|banner|message|testing|purposes/.test(line), - ); - expect(mainContentLines.length).toBeGreaterThan(1); - }); - - it('wraps long subtext to fit available width', () => { - const width = 30; - const state = makeBannerState({ - mainText: 'Short', - subText: 'Short subtext line one plus subtext line two for wrapping tests.', - }); - const lines = new BannerComponent(state).render(width); - expect(lines[0]).toContain('Short'); - const subContentLines = lines.filter((line) => - /Short subtext|line one|plus|subtext|line two|for|wrapping|tests/.test(line), - ); - expect(subContentLines.length).toBeGreaterThan(1); - for (const line of lines) { - expect(visibleWidth(line)).toBeLessThanOrEqual(width); - } - }); - - it('keeps every line within terminal width on very narrow terminals', () => { - for (const width of [0, 1, 2, 3, 5, 10]) { - const lines = new BannerComponent(banner).render(width); - expect(lines.length).toBeGreaterThan(0); - for (const line of lines) { - expect(visibleWidth(line)).toBeLessThanOrEqual(Math.max(0, width)); - } - } - }); - - it('shows tag only on the first wrapped line', () => { - const width = 40; - const state = makeBannerState({ - tag: 'New:', - mainText: 'This is a very long main text line that should wrap automatically.', - }); - const lines = new BannerComponent(state).render(width); - const mainRows = lines.slice(0, -1); - let tagCount = 0; - for (const line of mainRows) { - if (line.includes('✦ New:')) tagCount += 1; - } - expect(tagCount).toBe(1); - expect(mainRows.length).toBeGreaterThan(1); - const firstIndex = lines.findIndex((line) => line.includes('✦ New:')); - expect(firstIndex).toBe(0); - }); - - it('continues main text under the tag column and keeps subtext aligned with the tag text', () => { - const width = 80; - const lines = new BannerComponent(banner).render(width); - const firstLine = lines[0]!; - const mainStartIndex = firstLine.indexOf('This is the main banner message'); - const tagPrefixVisibleWidth = visibleWidth(firstLine.slice(0, mainStartIndex)); - const subLine = lines[1]!; - const subStartIndex = subLine.indexOf('This is a short subtext'); - const subIndentVisibleWidth = visibleWidth(subLine.slice(0, subStartIndex)); - // The subtext starts two columns after the left edge ("✦ "), which aligns - // with the tag text itself rather than the main-text column. - expect(subIndentVisibleWidth).toBe(visibleWidth('✦ ')); - expect(tagPrefixVisibleWidth).toBeGreaterThan(visibleWidth('✦ ')); - }); - - it('drops the tag when it does not fit', () => { - const width = 5; - const lines = new BannerComponent(banner).render(width); - expect(lines[0]).not.toContain('✦'); - expect(lines[0]).not.toContain("What's new"); - for (const line of lines) { - expect(visibleWidth(line)).toBeLessThanOrEqual(width); - } - }); - - it('still renders the tag when it fits', () => { - const width = 40; - const lines = new BannerComponent(banner).render(width); - expect(lines[0]).toContain('✦'); - expect(lines[0]).toContain("What's new"); - for (const line of lines) { - expect(visibleWidth(line)).toBeLessThanOrEqual(width); - } - }); - - it('does not render subtext when empty', () => { - const lines = new BannerComponent(makeBannerState({ tag: 'Tip', mainText: 'Use /help' })).render(80); - expect(lines.length).toBe(2); - expect(lines[0]).toContain('Use /help'); - expect(lines[1]).toBe(''); - }); - - it('supports explicit newlines in main text', () => { - const lines = new BannerComponent(makeBannerState({ mainText: 'Line 1\nLine 2' })).render(80); - expect(lines.length).toBe(3); - expect(lines[0]).toContain('Line 1'); - expect(lines[1]).toContain('Line 2'); - expect(lines[2]).toBe(''); - }); - - it('styles tag, main text, and subtext with theme colors', () => { - const lines = new BannerComponent(banner).render(80); - expect(lines[0]).toContain(currentTheme.boldFg('primary', "✦ What's new:")); - expect(lines[0]).toContain( - currentTheme.boldFg('textStrong', 'This is the main banner message for testing purposes.'), - ); - expect(lines[1]).toContain(currentTheme.fg('textDim', 'This is a short subtext line.')); - }); - - it('does not stack the dim modifier on top of the textDim color', () => { - const lines = new BannerComponent(banner).render(80); - expect(lines[1]).toContain('This is a short subtext'); - expect(lines[1]).not.toContain(''); - expect(lines[2]).toBe(''); - }); - - it('keeps subsequent main lines indented to the main-text column and subtext aligned with the tag text', () => { - const width = 24; - const lines = new BannerComponent( - makeBannerState({ - tag: 'New:', - mainText: 'Line 1 with a lot of content', - subText: 'Sub text', - }), - ).render(width); - for (const line of lines) { - expect(visibleWidth(line)).toBeLessThanOrEqual(width); - } - expect(lines[0]).toContain('✦ New:'); - const firstLine = lines[0]!; - const mainTextStart = visibleWidth(firstLine.slice(0, firstLine.indexOf('Line 1'))); - const continuationLine = lines.find((line) => line.includes('of content'))!; - expect(visibleWidth(continuationLine.slice(0, continuationLine.indexOf('of content')))).toBe(mainTextStart); - const subLine = lines.find((line) => line.includes('Sub text'))!; - expect(visibleWidth(subLine.slice(0, subLine.indexOf('Sub text')))).toBe(visibleWidth('✦ ')); - }); - - it('moves a long tag onto its own line so the main text keeps a usable width', () => { - // Regression: remote banner configs can set a full-sentence tag. Inline it - // would leave the main text only a few columns, which hard-breaks words. - const width = 50; - const lines = new BannerComponent( - makeBannerState({ - tag: 'Use Kimi K3 with High thinking effort', - mainText: '- for the best balance between token spend and capability', - subText: 'Run /model to switch to K3 and set thinking effort to High', - }), - ).render(width); - for (const line of lines) { - expect(visibleWidth(line)).toBeLessThanOrEqual(width); - } - // The tag occupies the first line alone; no main text is squeezed next to it. - expect(lines[0]).toContain('✦ Use Kimi K3 with High thinking effort'); - expect(lines[0]).not.toContain('- for'); - // Words stay intact (no mid-word hard breaks like "balan"/"ce"). - const joined = lines.join('\n'); - for (const word of ['balance', 'between', 'capability', 'thinking', 'effort']) { - expect(joined).toContain(word); - } - // Main text and subtext align with the tag text (right after "✦ "). - const mainLine = lines.find((line) => line.includes('- for'))!; - expect(visibleWidth(mainLine.slice(0, mainLine.indexOf('- for')))).toBe(visibleWidth('✦ ')); - const subLine = lines.find((line) => line.includes('Run /model'))!; - expect(visibleWidth(subLine.slice(0, subLine.indexOf('Run /model')))).toBe(visibleWidth('✦ ')); - }); - - it('keeps a short tag inline when the remaining width is enough', () => { - const width = 40; - const lines = new BannerComponent( - makeBannerState({ tag: 'Tip:', mainText: 'Use /help to list commands.' }), - ).render(width); - expect(lines[0]).toContain('✦ Tip:'); - expect(lines[0]).toContain('Use /help'); - }); -}); diff --git a/apps/pythinker-code/test/tui/controllers/cache-hint-controller.test.ts b/apps/pythinker-code/test/tui/controllers/cache-hint-controller.test.ts deleted file mode 100644 index ae6d58309..000000000 --- a/apps/pythinker-code/test/tui/controllers/cache-hint-controller.test.ts +++ /dev/null @@ -1,835 +0,0 @@ -import { beforeEach, describe, expect, it, vi } from 'vitest'; - -import { - CacheHintController, - type CacheHintHost, -} from '#/tui/controllers/cache-hint-controller'; -import type { CacheHintConfig } from '#/utils/cache-hint-config'; -import type { ExtractionResult } from '#/tui/utils/image-placeholder'; - -const peekMock = vi.fn<() => CacheHintConfig | undefined>(() => undefined); -const getMock = vi.fn(async (): Promise => undefined); - -vi.mock('#/utils/cache-hint-config', () => ({ - peekCacheHintConfig: () => peekMock(), - getCacheHintConfig: (...args: unknown[]) => getMock(...(args as [])), - refreshCacheHintConfigInBackground: () => undefined, - resetCacheHintConfigCache: () => undefined, -})); - -const MANAGED_BASE = 'https://api.example.test/coding/v1'; - -const CONFIG: CacheHintConfig = { - version: 1, - config: { 'kimi-k2': { min_tokens_to_hint: 100000, cache_duration: 600 } }, -}; - -function makeHost( - overrides: { - session?: unknown; - appState?: Record; - createNewSessionFails?: boolean; - } = {}, -) { - const state = { - activeDialog: null as string | null, - editorReplacementMounted: false, - appState: { - model: 'k2', - availableModels: { k2: { model: 'kimi-k2', provider: 'openai' } }, - availableProviders: { 'openai': { baseUrl: MANAGED_BASE, oauth: { storage: 'file', key: 'managed' } } }, - sessionId: 's1', - streamingPhase: 'idle', - isCompacting: false, - contextTokens: 150000, - cacheExpiryHint: true, - ...overrides.appState, - }, - }; - const host: CacheHintHost = { - harness: { auth: { getCachedAccessToken: vi.fn(async () => 'tok') } } as never, - session: (overrides.session ?? { id: 's1' }) as never, - state: state as never, - track: vi.fn(), - setAppState: vi.fn((patch) => Object.assign(state.appState, patch)), - mountEditorReplacement: vi.fn(), - restoreEditor: vi.fn(), - restoreInputText: vi.fn(), - recallStashedMedia: vi.fn(), - showError: vi.fn(), - createNewSession: vi.fn(async () => { - if (overrides.createNewSessionFails !== true) state.appState.sessionId = 's2'; - }), - sendNormalUserInput: vi.fn(async () => undefined), - sendInlineSkillUserInput: vi.fn(async () => undefined), - }; - return { host, state }; -} - -function resumeSession(replayTimes: number[], tokenCount: number, updatedAt = 0) { - return { - id: 's1', - summary: { updatedAt }, - getResumeState: () => ({ - agents: { - main: { - replay: replayTimes.map((time) => ({ type: 'message', time })), - context: { tokenCount }, - }, - }, - }), - }; -} - -async function flush(times = 20): Promise { - for (let i = 0; i < times; i++) await new Promise((r) => setImmediate(r)); -} - -function uploadedExtraction(fileId: string, byte: number): ExtractionResult { - const path = `/tmp/${fileId}.png`; - return { - parts: [ - { type: 'text', text: `` }, - { - type: 'image_url', - imageUrl: { url: `pythinker-file://${fileId}?path=${encodeURIComponent(path)}` }, - }, - ], - hasMedia: true, - imageAttachmentIds: [1], - videoAttachmentIds: [], - imageSnapshots: [{ bytes: new Uint8Array([byte]), mime: 'image/png', width: 640, height: 480 }], - }; -} - -beforeEach(() => { - vi.unstubAllEnvs(); - vi.stubEnv('CUSTOM_API_BASE_URL', MANAGED_BASE); - peekMock.mockReset().mockReturnValue(undefined); - getMock.mockReset().mockResolvedValue(undefined); - vi.useRealTimers(); -}); - -describe('CacheHintController scenario 2 (idle submit)', () => { - it('does not intercept a fresh submit (no activity baseline)', () => { - const { host } = makeHost(); - const controller = new CacheHintController(host); - expect(controller.maybeInterceptOnSubmit('hello')).toBe(false); - }); - - it('does not intercept when idle for less than the coarse floor', () => { - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - expect(controller.maybeInterceptOnSubmit('hello')).toBe(false); - expect(peekMock).not.toHaveBeenCalled(); - }); - - it('does not intercept when the provider is not OAuth-managed', () => { - peekMock.mockReturnValue(CONFIG); - const { host } = makeHost({ - appState: { - availableProviders: { 'openai': {} }, // apiKey form: no oauth - }, - }); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - expect(controller.maybeInterceptOnSubmit('hello')).toBe(false); - expect(host.mountEditorReplacement).not.toHaveBeenCalled(); - vi.restoreAllMocks(); - }); - - it('does not intercept for an OAuth provider off the managed base', () => { - peekMock.mockReturnValue(CONFIG); - const { host } = makeHost({ - appState: { - availableProviders: { - 'openai': { baseUrl: 'https://other.example.test/v1', oauth: { storage: 'file', key: 'other' } }, - }, - }, - }); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - expect(controller.maybeInterceptOnSubmit('hello')).toBe(false); - expect(host.mountEditorReplacement).not.toHaveBeenCalled(); - vi.restoreAllMocks(); - }); - - it('does not cold-fetch for providers that can never match a rule', async () => { - // Config cache cold (peek returns undefined by default): without the - // applicability gate this submit would be swallowed for a fetch that can - // never produce a hint. - const { host } = makeHost({ - appState: { - availableProviders: { 'openai': {} }, // apiKey form: no oauth - }, - }); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - expect(controller.maybeInterceptOnSubmit('hello')).toBe(false); - await flush(); - expect(getMock).not.toHaveBeenCalled(); - vi.restoreAllMocks(); - }); - - it('swallows a cold-cache submit, fetches, and releases when no rule matches', async () => { - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - expect(controller.maybeInterceptOnSubmit('hello')).toBe(true); - await flush(); - expect(getMock).toHaveBeenCalled(); - // Fetch resolved without a matching rule → the message is released. - expect(host.sendNormalUserInput).toHaveBeenCalledWith('hello', undefined); - expect(host.mountEditorReplacement).not.toHaveBeenCalled(); - vi.restoreAllMocks(); - }); - - it('releases a stashed inline-skill submit through the inline-skill path', async () => { - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - const activations = [{ skillName: 'review' }]; - expect(controller.maybeInterceptOnSubmit('check /skill:review', undefined, activations)).toBe( - true, - ); - await flush(); - vi.restoreAllMocks(); - - expect(host.sendInlineSkillUserInput).toHaveBeenCalledWith( - 'check /skill:review', - activations, - undefined, - ); - expect(host.sendNormalUserInput).not.toHaveBeenCalled(); - }); - - it('fetches on a cold-cache submit and shows the dialog when a rule matches', async () => { - getMock.mockResolvedValue(CONFIG); - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - expect(controller.maybeInterceptOnSubmit('hello')).toBe(true); - await vi.waitFor(() => { - expect(host.mountEditorReplacement).toHaveBeenCalled(); - }); - expect(host.harness.auth.getCachedAccessToken).toHaveBeenCalledWith({ storage: 'file', key: 'managed' }); - expect(getMock).toHaveBeenCalledWith({ accessToken: 'tok' }); - expect(host.track).toHaveBeenCalledWith( - 'cache_hint_shown', - expect.objectContaining({ scene: 'idle' }), - ); - vi.restoreAllMocks(); - }); - - it('serializes cold-cache submits so they keep their order', async () => { - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - - expect(controller.maybeInterceptOnSubmit('hello')).toBe(true); - expect(controller.maybeInterceptOnSubmit('world')).toBe(true); - await flush(); - vi.restoreAllMocks(); - - expect(host.sendNormalUserInput).toHaveBeenCalledTimes(2); - expect( - (host.sendNormalUserInput as ReturnType).mock.calls.map((c) => c[0]), - ).toEqual(['hello', 'world']); - }); - - it('restores chained submits instead of sending when the dialog is dismissed', async () => { - getMock.mockResolvedValue(CONFIG); - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - - expect(controller.maybeInterceptOnSubmit('hello')).toBe(true); - expect(controller.maybeInterceptOnSubmit('world')).toBe(true); - await vi.waitFor(() => { - expect(host.mountEditorReplacement).toHaveBeenCalled(); - }); - vi.restoreAllMocks(); - - const dialog = (host.mountEditorReplacement as ReturnType).mock.calls[0]![0] as { - handleInput: (data: string) => void; - }; - dialog.handleInput('\u001B'); // dismiss the first dialog - await flush(); - - // Nothing was sent; both inputs are back in the editor, newline-joined. - expect(host.sendNormalUserInput).not.toHaveBeenCalled(); - expect(host.restoreInputText).toHaveBeenLastCalledWith('hello\nworld'); - }); - - it('releases stashed media with recall semantics when the dialog is dismissed', async () => { - getMock.mockResolvedValue(CONFIG); - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - const extraction = uploadedExtraction('file-1', 1); - - expect(controller.maybeInterceptOnSubmit('describe [image #1 (1×1)]', extraction)).toBe(true); - await vi.waitFor(() => { - expect(host.mountEditorReplacement).toHaveBeenCalled(); - }); - vi.restoreAllMocks(); - - const dialog = (host.mountEditorReplacement as ReturnType).mock.calls[0]![0] as { - handleInput: (data: string) => void; - }; - dialog.handleInput('\u001B'); // dismiss - await flush(); - - // Nothing was sent; the draft is back in the editor and the stash's - // retains go through recall — without this the retain count never - // returns to zero and the upload can never be lease-deleted. - expect(host.sendNormalUserInput).not.toHaveBeenCalled(); - expect(host.restoreInputText).toHaveBeenCalledWith('describe [image #1 (1×1)]'); - expect(host.recallStashedMedia).toHaveBeenCalledWith(extraction); - }); - - it('hands the stashed input back when the session switched during the fetch', async () => { - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - expect(controller.maybeInterceptOnSubmit('hello')).toBe(true); - (host as unknown as { session: unknown }).session = { id: 's2' }; - await flush(); - vi.restoreAllMocks(); - - expect(host.restoreInputText).toHaveBeenCalledWith('hello'); - expect(host.sendNormalUserInput).not.toHaveBeenCalled(); - }); - - it('releases instead of mounting when a foreground operation started during the fetch', async () => { - getMock.mockResolvedValue(CONFIG); - const { host, state } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - expect(controller.maybeInterceptOnSubmit('hello')).toBe(true); - // A foreground operation (turn / /compact) kicked off mid-fetch. - state.appState.streamingPhase = 'waiting'; - await flush(); - vi.restoreAllMocks(); - - expect(host.mountEditorReplacement).not.toHaveBeenCalled(); - expect(host.sendNormalUserInput).toHaveBeenCalledWith('hello', undefined); - }); - - it('intercepts and shows the dialog when all conditions hold', () => { - peekMock.mockReturnValue(CONFIG); - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - - expect(controller.maybeInterceptOnSubmit('hello')).toBe(true); - expect(host.mountEditorReplacement).toHaveBeenCalledOnce(); - expect(host.track).toHaveBeenCalledWith( - 'cache_hint_shown', - expect.objectContaining({ scene: 'idle', model: 'k2' }), - ); - vi.restoreAllMocks(); - }); - - it('does not advance the cache baseline at turn begin (the prompt may fail pre-model)', () => { - peekMock.mockReturnValue(CONFIG); - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - // A send begins a turn but fails before any model request — the expired - // baseline must survive, so the retry still intercepts. - controller.onTurnBegin(); - expect(controller.maybeInterceptOnSubmit('hello')).toBe(true); - vi.restoreAllMocks(); - }); - - it('does not intercept twice in the same idle cycle', () => { - peekMock.mockReturnValue(CONFIG); - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - expect(controller.maybeInterceptOnSubmit('hello')).toBe(true); - expect(controller.maybeInterceptOnSubmit('again')).toBe(false); - vi.restoreAllMocks(); - }); - - it('resends the stashed input on continue', async () => { - peekMock.mockReturnValue(CONFIG); - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - controller.maybeInterceptOnSubmit('hello'); - vi.restoreAllMocks(); - - const dialog = (host.mountEditorReplacement as ReturnType).mock.calls[0]![0] as { - handleInput: (data: string) => void; - }; - dialog.handleInput('\u001B[B'); // down → new - dialog.handleInput('\u001B[B'); // down → continue - dialog.handleInput('\r'); - await flush(); - expect(host.sendNormalUserInput).toHaveBeenCalledWith('hello', undefined); - expect(host.track).toHaveBeenCalledWith('cache_hint_action', { - action: 'continue', - scene: 'idle', - }); - }); - - it('restores the input on Esc without sending', async () => { - peekMock.mockReturnValue(CONFIG); - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - controller.maybeInterceptOnSubmit('hello'); - vi.restoreAllMocks(); - - const dialog = (host.mountEditorReplacement as ReturnType).mock.calls[0]![0] as { - handleInput: (data: string) => void; - }; - dialog.handleInput('\u001B'); - await flush(); - expect(host.restoreInputText).toHaveBeenCalledWith('hello'); - expect(host.sendNormalUserInput).not.toHaveBeenCalled(); - }); - - it('compacts then resends once compaction engages', async () => { - peekMock.mockReturnValue(CONFIG); - const compact = vi.fn(async () => undefined); - const { host, state } = makeHost({ session: { id: 's1', compact } }); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - controller.maybeInterceptOnSubmit('hello'); - vi.restoreAllMocks(); - - const dialog = (host.mountEditorReplacement as ReturnType).mock.calls[0]![0] as { - handleInput: (data: string) => void; - }; - dialog.handleInput('\r'); // compact (default) - // The engine flips isCompacting asynchronously via the started event. - setTimeout(() => { - state.appState.isCompacting = true; - }, 10); - await vi.waitFor(() => { - expect(host.sendNormalUserInput).toHaveBeenCalledWith('hello', undefined); - }); - expect(compact).toHaveBeenCalledWith({}); - }); - - it('starts a new session and resends', async () => { - peekMock.mockReturnValue(CONFIG); - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - controller.maybeInterceptOnSubmit('hello'); - vi.restoreAllMocks(); - - const dialog = (host.mountEditorReplacement as ReturnType).mock.calls[0]![0] as { - handleInput: (data: string) => void; - }; - dialog.handleInput('\u001B[B'); // down → new - dialog.handleInput('\r'); - await flush(); - expect(host.createNewSession).toHaveBeenCalled(); - expect(host.sendNormalUserInput).toHaveBeenCalledWith('hello', undefined); - }); - - it('resends an uploaded image inline after starting a new session', async () => { - peekMock.mockReturnValue(CONFIG); - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - const extraction = uploadedExtraction('file-1', 1); - - controller.maybeInterceptOnSubmit('describe [image #1 (1×1)]', extraction); - vi.restoreAllMocks(); - - const dialog = (host.mountEditorReplacement as ReturnType).mock.calls[0]![0] as { - handleInput: (data: string) => void; - }; - dialog.handleInput('\u001B[B'); - dialog.handleInput('\r'); - await flush(); - - const resend = vi.mocked(host.sendNormalUserInput).mock.calls[0]?.[1]; - expect(resend?.imageAttachmentIds).toEqual([]); - expect(resend?.parts).toContainEqual({ - type: 'image_url', - imageUrl: { url: 'data:image/png;base64,AQ==' }, - }); - }); - - it('resends every chained uploaded image inline after starting a new session', async () => { - getMock.mockResolvedValue(CONFIG); - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - - expect(controller.maybeInterceptOnSubmit('first', uploadedExtraction('file-1', 1))).toBe(true); - expect(controller.maybeInterceptOnSubmit('second', uploadedExtraction('file-2', 2))).toBe(true); - await vi.waitFor(() => { - expect(host.mountEditorReplacement).toHaveBeenCalled(); - }); - vi.restoreAllMocks(); - - const dialog = (host.mountEditorReplacement as ReturnType).mock.calls[0]![0] as { - handleInput: (data: string) => void; - }; - dialog.handleInput('\u001B[B'); - dialog.handleInput('\r'); - await flush(); - - const sendCalls = ( - host.sendNormalUserInput as unknown as { - mock: { calls: Array<[string, ExtractionResult | undefined]> }; - } - ).mock.calls; - const imageUrls = sendCalls.map(([, extraction]) => { - const imagePart = extraction?.parts.find((part) => part.type === 'image_url'); - return imagePart?.type === 'image_url' ? imagePart.imageUrl.url : undefined; - }); - expect(imageUrls).toEqual([ - 'data:image/png;base64,AQ==', - 'data:image/png;base64,Ag==', - ]); - }); - - it('keeps the input when new-session creation fails', async () => { - peekMock.mockReturnValue(CONFIG); - const { host, state } = makeHost({ createNewSessionFails: true }); - const controller = new CacheHintController(host); - controller.recordActivity(); - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - controller.maybeInterceptOnSubmit('hello'); - vi.restoreAllMocks(); - - const dialog = (host.mountEditorReplacement as ReturnType).mock.calls[0]![0] as { - handleInput: (data: string) => void; - }; - dialog.handleInput('\u001B[B'); - dialog.handleInput('\r'); - await flush(); - expect(state.appState.sessionId).toBe('s1'); - expect(host.restoreInputText).toHaveBeenCalledWith('hello'); - expect(host.sendNormalUserInput).not.toHaveBeenCalled(); - }); -}); - -describe('CacheHintController cache-break detection', () => { - const u = (inputCacheRead: number) => ({ - inputOther: 100, - output: 50, - inputCacheRead, - inputCacheCreation: 0, - }); - - it('does not judge the first measured step', () => { - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.noteStepUsage(u(10000)); - expect(host.track).not.toHaveBeenCalled(); - }); - - it('records cache activity on a completed step, even one without usage', () => { - peekMock.mockReturnValue(CONFIG); - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.recordActivity(); - // 20 min later a step completes — the provider round trip refreshed the - // server-side cache… - vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - controller.noteStepUsage(undefined); - // …so a submit right after is fresh and must not be intercepted. - expect(controller.maybeInterceptOnSubmit('hello')).toBe(false); - vi.restoreAllMocks(); - }); - - it('reports a drop beyond the ratio and token gates with both usages', () => { - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.noteStepUsage(u(10000)); - controller.noteStepUsage(u(7000)); - - expect(host.track).toHaveBeenCalledWith( - 'cache_break_detected', - expect.objectContaining({ - prev_model: 'k2', - curr_model: 'k2', - prev_input_cache_read: 10000, - curr_input_cache_read: 7000, - cache_read_drop_ratio: 0.3, - }), - ); - }); - - it('stays quiet within the ratio gate or under the token threshold', () => { - const a = makeHost(); - const controllerA = new CacheHintController(a.host); - controllerA.noteStepUsage(u(100000)); - controllerA.noteStepUsage(u(96000)); // 4% drop — inside the ratio gate - expect(a.host.track).not.toHaveBeenCalled(); - - const b = makeHost(); - const controllerB = new CacheHintController(b.host); - controllerB.noteStepUsage(u(4000)); - controllerB.noteStepUsage(u(2500)); // drop 1500 ≤ 2000 — under the token threshold - expect(b.host.track).not.toHaveBeenCalled(); - }); - - it('skips unmeasured usage without touching the baseline', () => { - const { host } = makeHost(); - const controller = new CacheHintController(host); - controller.noteStepUsage(u(10000)); - controller.noteStepUsage(undefined); - controller.noteStepUsage({ inputOther: 0, output: 0, inputCacheRead: 0, inputCacheCreation: 0 }); - controller.noteStepUsage(u(5000)); - expect(host.track).toHaveBeenCalledWith( - 'cache_break_detected', - expect.objectContaining({ prev_input_cache_read: 10000, curr_input_cache_read: 5000 }), - ); - }); - - it('resets the baseline on compaction, but records a mid-session model/effort switch', () => { - const { host, state } = makeHost(); - const controller = new CacheHintController(host); - controller.noteStepUsage(u(10000)); - controller.resetCacheBreakBaseline(); - controller.noteStepUsage(u(100)); // post-compaction drop is expected - expect(host.track).not.toHaveBeenCalled(); - - // A model switch busts the cache key — that drop IS the signal to record. - controller.noteStepUsage(u(10000)); - state.appState.model = 'other-model'; - controller.noteStepUsage(u(100)); - expect(host.track).toHaveBeenCalledWith( - 'cache_break_detected', - expect.objectContaining({ - prev_model: 'k2', - curr_model: 'other-model', - prev_input_cache_read: 10000, - curr_input_cache_read: 100, - }), - ); - }); -}); - -describe('CacheHintController scenario 1 (resume)', () => { - /** maybeShowOnResume awaits the user's choice; dismiss the dialog once mounted. */ - async function showOnResumeAndDismiss( - controller: CacheHintController, - host: CacheHintHost, - ): Promise { - const pending = controller.maybeShowOnResume(); - await vi.waitFor(() => { - expect(host.mountEditorReplacement).toHaveBeenCalled(); - }); - const dialog = (host.mountEditorReplacement as ReturnType).mock.calls[0]![0] as { - handleInput: (data: string) => void; - }; - dialog.handleInput('\u001B'); - await pending; - } - - it('shows the dialog on resume when idle beyond cache_duration', async () => { - getMock.mockResolvedValue(CONFIG); - const session = resumeSession([Date.now() - 1200_000], 150000); - const { host } = makeHost({ session }); - const controller = new CacheHintController(host); - - await showOnResumeAndDismiss(controller, host); - expect(host.track).toHaveBeenCalledWith( - 'cache_hint_shown', - expect.objectContaining({ scene: 'resume' }), - ); - }); - - it('shows at most once per session', async () => { - getMock.mockResolvedValue(CONFIG); - const session = resumeSession([Date.now() - 1200_000], 150000); - const { host } = makeHost({ session }); - const controller = new CacheHintController(host); - - await showOnResumeAndDismiss(controller, host); - await controller.maybeShowOnResume(); - expect(host.mountEditorReplacement).toHaveBeenCalledOnce(); - }); - - it('falls back to summary.updatedAt when there are no replay records', async () => { - getMock.mockResolvedValue(CONFIG); - const session = resumeSession([], 150000, Date.now() - 1200_000); - const { host } = makeHost({ session }); - const controller = new CacheHintController(host); - - await showOnResumeAndDismiss(controller, host); - expect(host.mountEditorReplacement).toHaveBeenCalledOnce(); - }); - - it('drops the dialog when the session switched during the config fetch', async () => { - let resolveFetch!: (config: CacheHintConfig) => void; - getMock.mockImplementation( - () => - new Promise((res) => { - resolveFetch = res; - }), - ); - const session = resumeSession([Date.now() - 1200_000], 150000); - const { host } = makeHost({ session }); - const controller = new CacheHintController(host); - - const pending = controller.maybeShowOnResume(); - await flush(); // let the fetch start (resolveFetch gets assigned) - (host as unknown as { session: unknown }).session = { id: 'other-session' }; - resolveFetch(CONFIG); - await pending; - expect(host.mountEditorReplacement).not.toHaveBeenCalled(); - }); - - it('drops the dialog when a turn started during the config fetch', async () => { - let resolveFetch!: (config: CacheHintConfig) => void; - getMock.mockImplementation( - () => - new Promise((res) => { - resolveFetch = res; - }), - ); - const session = resumeSession([Date.now() - 1200_000], 150000); - const { host, state } = makeHost({ session }); - const controller = new CacheHintController(host); - - const pending = controller.maybeShowOnResume(); - await flush(); - // The user sent the first prompt while the fetch was in flight. - state.appState.streamingPhase = 'waiting'; - resolveFetch(CONFIG); - await pending; - expect(host.mountEditorReplacement).not.toHaveBeenCalled(); - }); - - it('re-evaluates against fresh activity when a turn completed during the config fetch', async () => { - let resolveFetch!: (config: CacheHintConfig) => void; - getMock.mockImplementation( - () => - new Promise((res) => { - resolveFetch = res; - }), - ); - // Idle long past the window when the resume check started… - const session = resumeSession([Date.now() - 1200_000], 150000); - const { host } = makeHost({ session }); - const controller = new CacheHintController(host); - - const pending = controller.maybeShowOnResume(); - await flush(); // let the fetch start (resolveFetch gets assigned) - // …but the user's first prompt ran to completion while the config was in - // flight, refreshing the server-side cache — the stale replay timestamp - // must not trigger the dialog. - controller.recordActivity(); - resolveFetch(CONFIG); - await pending; - expect(host.mountEditorReplacement).not.toHaveBeenCalled(); - }); - - it('ignores local-only state records when computing the resume idle time', async () => { - getMock.mockResolvedValue(CONFIG); - const oldMessage = { type: 'message', time: Date.now() - 1200_000 }; - const recentStateRecord = { type: 'permission_updated', time: Date.now() - 5000 }; - const session = { - id: 's1', - summary: { updatedAt: 0 }, - getResumeState: () => ({ - agents: { - main: { replay: [oldMessage, recentStateRecord], context: { tokenCount: 150000 } }, - }, - }), - }; - const { host } = makeHost({ session }); - const controller = new CacheHintController(host); - - // The recent permission change must not mask the expired cache. - await showOnResumeAndDismiss(controller, host); - expect(host.mountEditorReplacement).toHaveBeenCalledOnce(); - }); - - it('skips when the config cannot be resolved', async () => { - const session = resumeSession([Date.now() - 1200_000], 150000); - const { host } = makeHost({ session }); - const controller = new CacheHintController(host); - - await controller.maybeShowOnResume(); - expect(host.mountEditorReplacement).not.toHaveBeenCalled(); - }); - - it('skips small sessions below the token threshold', async () => { - getMock.mockResolvedValue(CONFIG); - const session = resumeSession([Date.now() - 1200_000], 50_000); - const { host } = makeHost({ session }); - const controller = new CacheHintController(host); - - await controller.maybeShowOnResume(); - expect(host.mountEditorReplacement).not.toHaveBeenCalled(); - }); - - it('seeds the activity baseline when the resume check skips inside the cache window', async () => { - getMock.mockResolvedValue(CONFIG); - peekMock.mockReturnValue(CONFIG); - const now = Date.now(); - // 9 minutes into a 10-minute cache window — nothing to show on resume. - const session = resumeSession([now - 540_000], 150000); - const { host } = makeHost({ session }); - const controller = new CacheHintController(host); - - await controller.maybeShowOnResume(); - expect(host.mountEditorReplacement).not.toHaveBeenCalled(); - - // Two minutes later the window has expired; the seeded baseline lets the - // idle-submit path catch it instead of waving the prompt through. - vi.spyOn(Date, 'now').mockReturnValue(now + 660_000); - expect(controller.maybeInterceptOnSubmit('hello')).toBe(true); - expect(host.mountEditorReplacement).toHaveBeenCalledOnce(); - expect(host.track).toHaveBeenCalledWith( - 'cache_hint_shown', - expect.objectContaining({ scene: 'idle' }), - ); - vi.restoreAllMocks(); - }); - - it('yields to a dialog that already owns the editor and hints on the first idle submit', async () => { - getMock.mockResolvedValue(CONFIG); - peekMock.mockReturnValue(CONFIG); - const session = resumeSession([Date.now() - 1200_000], 150000); - const { host, state } = makeHost({ session }); - state.editorReplacementMounted = true; - const controller = new CacheHintController(host); - - await controller.maybeShowOnResume(); - expect(host.mountEditorReplacement).not.toHaveBeenCalled(); - - state.editorReplacementMounted = false; - expect(controller.maybeInterceptOnSubmit('hello')).toBe(true); - expect(host.mountEditorReplacement).toHaveBeenCalledOnce(); - expect(host.track).toHaveBeenCalledWith( - 'cache_hint_shown', - expect.objectContaining({ scene: 'idle' }), - ); - }); -}); diff --git a/apps/pythinker-code/test/tui/controllers/session-event-handler-compaction.test.ts b/apps/pythinker-code/test/tui/controllers/session-event-handler-compaction.test.ts index 34a5a8a2a..504f920e6 100644 --- a/apps/pythinker-code/test/tui/controllers/session-event-handler-compaction.test.ts +++ b/apps/pythinker-code/test/tui/controllers/session-event-handler-compaction.test.ts @@ -81,13 +81,6 @@ const compactionCancelled = { } as const; describe('SessionEventHandler compaction cache bookkeeping', () => { - it('records activity and resets the cache-break baseline after a completed compaction', () => { - const { host } = makeHost(); - const handler = new SessionEventHandler(host); - handler.handleEvent(compactionCompleted, vi.fn()); - expect(host.recordSessionActivity).toHaveBeenCalledOnce(); - expect(host.noteCompactionFinished).toHaveBeenCalledOnce(); - }); it('keeps both baselines after a cancelled compaction (context was not cut)', () => { const { host } = makeHost(); diff --git a/apps/pythinker-code/test/tui/controllers/survey-controller.test.ts b/apps/pythinker-code/test/tui/controllers/survey-controller.test.ts index c07ca0ff1..7a02cffb1 100644 --- a/apps/pythinker-code/test/tui/controllers/survey-controller.test.ts +++ b/apps/pythinker-code/test/tui/controllers/survey-controller.test.ts @@ -1,7 +1,6 @@ import type { TurnStartedEvent } from '@pymodel/pythinker-code-sdk'; import { DEFAULT_SURVEY_POPUP_PAYLOAD, - SurveyPopupConfigFeed, type SurveyPopupPayload, } from '@pymodel/pythinker-code-product/session-rating/node'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; @@ -83,7 +82,6 @@ interface Harness { interface HarnessOptions extends Partial { readonly config?: () => SurveyPopupPayload; - readonly refreshConfig?: () => unknown; } function createHarness(deps: HarnessOptions = {}): Harness { @@ -127,20 +125,17 @@ function createHarness(deps: HarnessOptions = {}): Harness { }; let randomCallCount = 0; let appearanceCounter = 0; - const { random: randomOverride, config, refreshConfig, ...restDeps } = deps; + const { random: randomOverride, config, ...restDeps } = deps; const host = { state, btwPanelController: { isActive: () => false }, track, } as unknown as SurveyHost; const controller = new SurveyController(host, { - configFeed: new SurveyPopupConfigFeed({ - peek: config ?? (() => DEFAULT_SURVEY_POPUP_PAYLOAD), - isFresh: () => true, - region: () => 'region-a', - refresh: refreshConfig, - now: () => clock.mono, - }), + configFeed: { + readyForEvaluation: () => true, + payload: config ?? (() => DEFAULT_SURVEY_POPUP_PAYLOAD), + }, cooldown: { read: () => writes.at(-1), write: (wallTime) => { @@ -231,7 +226,6 @@ const HARNESS_ENVIRONMENT = { const DEFAULT_SNAPSHOT = { config_probability: 0.005, - config_on_for_models: '*', config_min_time_before_feedback_ms: 600_000, config_min_user_turns_before_feedback: 5, config_min_time_between_feedback_ms: 3_600_000, @@ -316,79 +310,7 @@ describe('SurveyController UI veto', () => { }); }); -describe('SurveyController model route', () => { - const MANAGED_BASE_URL = 'https://api.example.com/v1/v1'; - const GATEWAY_BASE_URL = 'https://gateway.example.com/coding/v1'; - const savedBaseUrl = process.env['CUSTOM_API_BASE_URL']; - - beforeEach(() => { - process.env['CUSTOM_API_BASE_URL'] = MANAGED_BASE_URL; - }); - - afterEach(() => { - if (savedBaseUrl === undefined) { - delete process.env['CUSTOM_API_BASE_URL']; - } else { - process.env['CUSTOM_API_BASE_URL'] = savedBaseUrl; - } - }); - - function useModel( - harness: Harness, - options: { entryBaseUrl?: string; providerBaseUrl?: string } = {}, - ): void { - harness.state.appState.model = 'main'; - harness.state.appState.availableModels = { - main: { - provider: 'openai', - model: 'k3', - maxContextSize: 256_000, - baseUrl: options.entryBaseUrl, - }, - }; - harness.state.appState.availableProviders = { - 'openai': { type: 'pythinker', baseUrl: options.providerBaseUrl ?? MANAGED_BASE_URL }, - }; - } - - it('prefers the entry baseUrl over the provider baseUrl when the entry is managed', async () => { - const harness = createHarness({ - config: () => ({ ...DEFAULT_SURVEY_POPUP_PAYLOAD, on_for_models: ['k3'] }), - }); - useModel(harness, { entryBaseUrl: MANAGED_BASE_URL, providerBaseUrl: GATEWAY_BASE_URL }); - await harness.flush(); - await harness.appear(); - expect(harness.container.children).not.toHaveLength(0); - expect(harness.track).toHaveBeenCalledWith( - 'feedback_survey', - expect.objectContaining({ event_type: 'appeared', pfc_model_id: 'k3' }), - ); - }); - it('prefers the entry baseUrl over the provider baseUrl when the entry is self-hosted', async () => { - const harness = createHarness({ - config: () => ({ ...DEFAULT_SURVEY_POPUP_PAYLOAD, on_for_models: ['k3'] }), - }); - useModel(harness, { entryBaseUrl: GATEWAY_BASE_URL, providerBaseUrl: MANAGED_BASE_URL }); - await harness.flush(); - await harness.appear(); - - expect(harness.container.children).toHaveLength(0); - expect(harness.track).not.toHaveBeenCalled(); - }); -}); - -describe('SurveyController config feed', () => { - it('fires the injected refresh once at mount and not on session reset', async () => { - const refreshConfig = vi.fn(); - const harness = createHarness({ refreshConfig }); - await harness.flush(); - expect(refreshConfig).toHaveBeenCalledTimes(1); - - harness.controller.reset(); - expect(refreshConfig).toHaveBeenCalledTimes(1); - }); -}); describe('SurveyController interaction', () => { it('selects a rating after the digit debounce and walks pending → thanks → closed', async () => { diff --git a/apps/pythinker-code/test/tui/pythinker-tui-message-flow.test.ts b/apps/pythinker-code/test/tui/pythinker-tui-message-flow.test.ts index afd74e9c0..046bcc512 100644 --- a/apps/pythinker-code/test/tui/pythinker-tui-message-flow.test.ts +++ b/apps/pythinker-code/test/tui/pythinker-tui-message-flow.test.ts @@ -25,8 +25,6 @@ import { import { afterEach, describe, expect, it, vi } from 'vitest'; import { ApprovalPanelComponent } from '#/tui/components/dialogs/approval-panel'; -import { CacheHintDialogComponent } from '#/tui/components/dialogs/cache-hint-dialog'; -import * as cacheHintConfig from '#/utils/cache-hint-config'; import { EffortSelectorComponent } from '#/tui/components/dialogs/effort-selector'; import { pythinkerCodePluginMarketplaceUrl } from '#/constant/app'; import { BRAILLE_SPINNER_FRAMES } from '#/tui/constant/rendering'; @@ -3722,26 +3720,6 @@ command = "vim" }); }); - it('still deletes the staging upload when a cache-hint dismissal precedes the resend', async () => { - const { driver, session, harness } = await makeDriver(); - const imageStore = (driver as unknown as { imageStore: ImageAttachmentStore }).imageStore; - const attachment = stagedImage(imageStore, 'file-dismissed'); - const text = `describe ${attachment.placeholder}`; - - const extraction = extractMediaAttachments(text, imageStore); - driver.recallStashedMedia(extraction); - - driver.handleUserInput(text); - - expect(session.prompt).toHaveBeenCalledOnce(); - emitTurn(driver, 1, () => { - expect(harness.deleteFile).not.toHaveBeenCalled(); - }); - await vi.waitFor(() => { - expect(harness.deleteFile).toHaveBeenCalledWith('file-dismissed'); - }); - expect(harness.deleteFile).toHaveBeenCalledTimes(1); - }); it('waits briefly for a pending paste ingestion so the submit uses the daemon-ref form', async () => { const { driver, session } = await makeDriver(); @@ -3980,89 +3958,6 @@ command = "vim" await vi.waitFor(() => { expect(existsSync(path!)).toBe(false); }); }); - it.each(['image', 'video'])('preserves skill media arguments when the cache hint starts a new session (%s)', async (kind) => { - process.env['PYTHINKER_CODE_HOME'] = await makeTempHome(); - vi.stubEnv('CUSTOM_API_BASE_URL', 'https://api.example.test/v1'); - const listSkills = vi.fn(async () => [ - { name: 'review', description: 'Review skill', path: '/tmp/review', source: 'user' }, - ]); - const session = makeSession({ listSkills }); - const nextSession = makeSession({ - id: 'ses-next', listSkills, - promptWithSkills: vi.fn(async (_input: unknown, _skills: unknown) => {}), - }); - const { driver } = await makeDriver(session, { - createSession: vi.fn(async () => nextSession), - }); - await ( - driver as unknown as { refreshSkillCommands(s: unknown): Promise } - ).refreshSkillCommands(session); - driver.state.appState.availableModels = { - k2: { model: 'example-model', provider: 'example-provider', maxContextSize: 100 }, - }; - driver.state.appState.availableProviders = { - 'example-provider': { - type: 'pythinker', - baseUrl: 'https://api.example.test/v1', - oauth: { key: 'pythinker-code', storage: 'file' }, - }, - }; - driver.state.appState.contextTokens = 150000; - const peek = vi.spyOn(cacheHintConfig, 'peekCacheHintConfig').mockReturnValue({ - version: 1, - config: { 'example-model': { min_tokens_to_hint: 100000, cache_duration: 600 } }, - }); - (driver as unknown as { cacheHint: { recordActivity(): void } }).cacheHint.recordActivity(); - const now = vi.spyOn(Date, 'now').mockReturnValue(Date.now() + 1200_000); - const imageStore = (driver as unknown as { imageStore: ImageAttachmentStore }).imageStore; - const attachment = kind === 'image' - ? stagedImage(imageStore, 'file-cached-skill') - : imageStore.addVideo('video/mp4', join(process.env['PYTHINKER_CODE_HOME'], 'example.mp4')); - if (attachment.kind === 'video') { - await writeFile(attachment.sourcePath, 'example video'); - imageStore.completeVideo(attachment, { - fileId: 'file-cached-skill', fileExpiresAt: Date.now() + 3600_000, - }); - } - const input = `/skill:review describe ${attachment.placeholder}`; - try { - driver.state.editor.setText(input); - driver.state.editor.handleInput('\r'); - const dialog = driver.state.editorContainer.children[0]; - expect(dialog).toBeInstanceOf(CacheHintDialogComponent); - now.mockRestore(); - dialog!.handleInput!('\u001B[B'); - dialog!.handleInput!('\r'); - await vi.waitFor(() => { - expect(nextSession.promptWithSkills).toHaveBeenCalledOnce(); - }); - - expect(session.promptWithSkills).not.toHaveBeenCalled(); - const [parts, skills] = ( - nextSession.promptWithSkills as ReturnType Promise>> - ).mock.calls[0]!; - expect(parts).toContainEqual(kind === 'image' - ? { type: 'image_url', imageUrl: { url: 'data:image/png;base64,qrs=' } } - : { type: 'video_url', videoUrl: { url: 'pythinker-file://file-cached-skill' } }); - expect(skills).toEqual([{ name: 'review', args: expect.stringContaining(`Attached ${kind} file:`) }]); - const args = (skills as Array<{ args: string }>)[0]!.args; - expect(args).not.toContain(attachment.placeholder); - const path = args.match(/Attached (?:image|video) file: (.+?) \(open it with ReadMediaFile\)/)?.[1]; - expect(path).toBeDefined(); - expect(await readFile(path!)).toEqual(kind === 'image' ? Buffer.from([0xaa, 0xbb]) : Buffer.from('example video')); - expect(driver.state.transcriptEntries).toContainEqual(expect.objectContaining({ - kind: 'user', content: input, - })); - emitTurn(driver, 1); - expect(existsSync(path!)).toBe(true); - await driver.closeSession('test'); - await vi.waitFor(() => { expect(existsSync(path!)).toBe(false); }); - } finally { - now.mockRestore(); - peek.mockRestore(); - vi.unstubAllEnvs(); - } - }); it.each([ { prefix: '/skill:review', skills: [{ name: 'review', args: expect.stringContaining('Attached video file:') }] }, @@ -11502,7 +11397,6 @@ describe('PythinkerTUI session rating survey', () => { subagent_count: 0, dynamic_workflow_run_count: 0, config_probability: 0.005, - config_on_for_models: '*', config_min_time_before_feedback_ms: 600_000, config_min_user_turns_before_feedback: 5, config_min_time_between_feedback_ms: 3_600_000, diff --git a/apps/pythinker-code/test/tui/pythinker-tui-startup.test.ts b/apps/pythinker-code/test/tui/pythinker-tui-startup.test.ts index cb6c11cbe..43309f90d 100644 --- a/apps/pythinker-code/test/tui/pythinker-tui-startup.test.ts +++ b/apps/pythinker-code/test/tui/pythinker-tui-startup.test.ts @@ -7,12 +7,9 @@ import type { MigrationPlan } from '@pymodel/migration-legacy'; import type { Component, Focusable } from '@pymodel/pi-tui'; import { describe, expect, it, vi } from 'vitest'; -import { BannerProvider } from '#/tui/banner/banner-provider'; -import { readBannerDisplayState } from '#/tui/banner/state'; import { handleLoginCommand, handleLogoutCommand } from '#/tui/commands/auth'; import { promptPlatformSelection, promptLogoutProviderSelection } from '#/tui/commands/prompts'; import { ChoicePickerComponent } from '#/tui/components/dialogs/choice-picker'; -import { BannerComponent } from '#/tui/components/chrome/banner'; import { WelcomeComponent } from '#/tui/components/chrome/welcome'; import { PythinkerTUI, type PythinkerTUIStartupInput, type TUIState } from '#/tui/pythinker-tui'; import { maybeShowModelMigrationPrompt } from '#/tui/controllers/model-migration'; @@ -528,85 +525,7 @@ describe('PythinkerTUI startup', () => { expect(driver.state.appState.thinkingEffort).toBe('medium'); }); - it('hydrates permission/plan defaults after a session-less v2 login', async () => { - let loggedIn = false; - const harness = makeHarness(makeSession(), { - getConfig: vi.fn(async () => - loggedIn - ? { - models: { k2: { model: 'moonshot-v1', maxContextSize: 100 } }, - defaultModel: 'k2', - defaultPermissionMode: 'auto', - defaultPlanMode: true, - } - : { models: {} }, - ), - auth: { - status: vi.fn(async () => ({ providers: [] })), - login: vi.fn(async () => { - loggedIn = true; - }), - logout: vi.fn(), - getManagedUsage: vi.fn(), - }, - }); - const driver = makeDriver(harness, { ...makeStartupInput() }); - - await expect(driver.init()).resolves.toBe(false); - expect(driver.state.appState).toMatchObject({ - sessionId: '', - model: '', - permissionMode: 'manual', - planMode: false, - }); - - vi.mocked(promptPlatformSelection).mockResolvedValue({ platformId: 'pythinker-code', catalog: {} }); - await handleLoginCommand(driver as any); - - expect(harness.createSession).not.toHaveBeenCalled(); - expect(driver.state.appState).toMatchObject({ - sessionId: '', - model: 'k2', - permissionMode: 'auto', - planMode: true, - configDefaultPlanMode: true, - }); - }); - - it('hydrates permission defaults after a session-less v2 login without a default model', async () => { - let loggedIn = false; - const harness = makeHarness(makeSession(), { - getConfig: vi.fn(async () => - loggedIn - ? { - models: { k2: { model: 'moonshot-v1', maxContextSize: 100 } }, - defaultPermissionMode: 'auto', - } - : { models: {} }, - ), - auth: { - status: vi.fn(async () => ({ providers: [] })), - login: vi.fn(async () => { - loggedIn = true; - }), - logout: vi.fn(), - getManagedUsage: vi.fn(), - }, - }); - const driver = makeDriver(harness, { ...makeStartupInput() }); - - await expect(driver.init()).resolves.toBe(false); - - vi.mocked(promptPlatformSelection).mockResolvedValue({ platformId: 'pythinker-code', catalog: {} }); - await handleLoginCommand(driver as any); - expect(harness.createSession).not.toHaveBeenCalled(); - expect(driver.state.appState).toMatchObject({ - sessionId: '', - model: '', - permissionMode: 'auto', - }); - }); it('carries the --agent/--agent-file binding for the lazy-created first session (v2)', async () => { const harness = makeHarness(makeSession()); @@ -2723,121 +2642,8 @@ describe('PythinkerTUI startup', () => { }); }); - it('does not override active session thinking when configured thinking is enabled after OAuth login', async () => { - const session = makeSession(); - const harness = makeHarness(session, { - getConfig: vi.fn(async () => ({ - defaultModel: 'k2', - thinking: { enabled: true }, - models: { - k2: { model: 'moonshot-v1', maxContextSize: 100 }, - }, - })), - }); - const driver = makeDriver(harness, makeStartupInput()); - await expect(driver.init()).resolves.toBe(false); - await driver.setSession(session); - await driver.syncRuntimeState(session); - expect(driver.state.appState.thinkingEffort).toBe('off'); - vi.mocked(promptPlatformSelection).mockResolvedValue({ platformId: 'pythinker-code', catalog: {} }); - await handleLoginCommand(driver as any); - - expect(session.setModel).toHaveBeenCalledWith('k2'); - expect(session.setThinking).not.toHaveBeenCalled(); - expect(driver.state.appState).toMatchObject({ - model: 'k2', - thinkingEffort: 'off', - maxContextTokens: 100, - }); - expect(harness.track).toHaveBeenCalledWith('login', { - provider: 'openai', - method: 'oauth', - already_logged_in: false, - }); - }); - - it('tracks login with already_logged_in when a token already exists', async () => { - const session = makeSession(); - const harness = makeHarness(session, { - auth: { - status: vi.fn(async () => ({ - providers: [{ providerName: 'openai', hasToken: true }], - })), - login: vi.fn(async () => {}), - logout: vi.fn(), - getManagedUsage: vi.fn(), - }, - }); - const driver = makeDriver(harness, makeStartupInput()); - - await expect(driver.init()).resolves.toBe(false); - harness.track.mockClear(); - - vi.mocked(promptPlatformSelection).mockResolvedValue({ platformId: 'pythinker-code', catalog: {} }); - await handleLoginCommand(driver as any); - - expect(harness.auth.login).toHaveBeenCalledWith( - 'openai', - expect.objectContaining({ - signal: expect.any(AbortSignal), - onDeviceCode: expect.any(Function), - }), - ); - expect(harness.track).toHaveBeenCalledWith('login', { - provider: 'openai', - method: 'oauth', - already_logged_in: true, - }); - }); - - it('logs login failures with session context', async () => { - const warn = vi.spyOn(log, 'warn').mockImplementation(() => {}); - const session = makeSession(); - const loginError = new Error('Failed to list Pythinker Code models (HTTP 402).'); - const harness = makeHarness(session, { - auth: { - status: vi.fn(async () => ({ providers: [] })), - login: vi.fn(async () => { - throw loginError; - }), - logout: vi.fn(), - getManagedUsage: vi.fn(), - }, - }); - const driver = makeDriver(harness, makeStartupInput()); - - try { - await expect(driver.init()).resolves.toBe(false); - await driver.setSession(session); - await driver.syncRuntimeState(session); - - vi.mocked(promptPlatformSelection).mockResolvedValue({ platformId: 'pythinker-code', catalog: {} }); - await handleLoginCommand(driver as any); - - expect(harness.auth.login).toHaveBeenCalledWith( - 'openai', - expect.objectContaining({ - signal: expect.any(AbortSignal), - onDeviceCode: expect.any(Function), - }), - ); - expect(warn).toHaveBeenCalledWith( - 'login failed', - expect.objectContaining({ - providerName: 'openai', - alreadyLoggedIn: false, - sessionId: 'ses-1', - error: expect.objectContaining({ - message: 'Failed to list Pythinker Code models (HTTP 402).', - }), - }), - ); - } finally { - warn.mockRestore(); - } - }); it('tracks logout while preserving the active session model', async () => { let loggedOut = false; @@ -3273,140 +3079,8 @@ describe('PythinkerTUI startup', () => { expect(uiContainsFooter(driver)).toBe(true); }); - it('renders the banner below the welcome message after it loads', async () => { - const banner = { - key: 'new-banner', - tag: 'New', - mainText: 'Banner main', - subText: null, - display: 'always' as const, - }; - const loadSpy = vi.spyOn(BannerProvider.prototype, 'load').mockResolvedValue(banner); - const session = makeSession({ id: 'ses-target' }); - const harness = makeHarness(session, { - listSessions: vi.fn(async () => [{ id: 'ses-target', workDir: '/tmp/proj-a' }]), - }); - const driver = makeDriver( - harness, - makeStartupInput({ session: 'ses-target' }), - ) as unknown as MigrateExitDriver; - await driver.initMainTui(); - await vi.waitFor(() => { - expect( - driver.state.transcriptContainer.children.some((child) => child instanceof BannerComponent), - ).toBe(true); - }); - - const welcomeIndex = driver.state.transcriptContainer.children.findIndex( - (child) => child instanceof WelcomeComponent, - ); - const bannerIndex = driver.state.transcriptContainer.children.findIndex( - (child) => child instanceof BannerComponent, - ); - expect(welcomeIndex).toBeGreaterThanOrEqual(0); - expect(bannerIndex).toBe(welcomeIndex + 1); - - loadSpy.mockRestore(); - }); - - it('writes display state after rendering a once banner', async () => { - const originalEnv = { ...process.env }; - const dir = mkdtempSync(join(tmpdir(), 'pythinker-startup-banner-')); - process.env['PYTHINKER_CODE_HOME'] = dir; - - try { - const banner = { - key: 'once-banner', - tag: null, - mainText: 'Banner main', - subText: null, - display: 'once' as const, - }; - const loadSpy = vi.spyOn(BannerProvider.prototype, 'load').mockResolvedValue(banner); - const session = makeSession({ id: 'ses-target' }); - const harness = makeHarness(session, { - listSessions: vi.fn(async () => [{ id: 'ses-target', workDir: '/tmp/proj-a' }]), - }); - const driver = makeDriver( - harness, - makeStartupInput({ session: 'ses-target' }), - ) as unknown as MigrateExitDriver; - - await driver.initMainTui(); - - await vi.waitFor(() => { - expect( - driver.state.transcriptContainer.children.some((child) => child instanceof BannerComponent), - ).toBe(true); - }); - - await vi.waitFor( - async () => { - const state = await readBannerDisplayState(); - expect(state.shown['once-banner']?.lastShownAt).toBeDefined(); - }, - { timeout: 5000 }, - ); - await expect(readBannerDisplayState()).resolves.toMatchObject({ - version: 1, - shown: { - 'once-banner': { - lastShownAt: expect.any(String), - }, - }, - }); - - loadSpy.mockRestore(); - } finally { - process.env = { ...originalEnv }; - rmSync(dir, { recursive: true, force: true }); - } - }); - - it('does not write display state for an always banner', async () => { - const originalEnv = { ...process.env }; - const dir = mkdtempSync(join(tmpdir(), 'pythinker-startup-banner-')); - process.env['PYTHINKER_CODE_HOME'] = dir; - - try { - const banner = { - key: 'always-banner', - tag: null, - mainText: 'Banner main', - subText: null, - display: 'always' as const, - }; - const loadSpy = vi.spyOn(BannerProvider.prototype, 'load').mockResolvedValue(banner); - const session = makeSession({ id: 'ses-target' }); - const harness = makeHarness(session, { - listSessions: vi.fn(async () => [{ id: 'ses-target', workDir: '/tmp/proj-a' }]), - }); - const driver = makeDriver( - harness, - makeStartupInput({ session: 'ses-target' }), - ) as unknown as MigrateExitDriver; - - await driver.initMainTui(); - - await vi.waitFor(() => { - expect( - driver.state.transcriptContainer.children.some((child) => child instanceof BannerComponent), - ).toBe(true); - }); - - await expect(readBannerDisplayState()).resolves.toEqual({ - version: 1, - shown: {}, - }); - - loadSpy.mockRestore(); - } finally { - process.env = { ...originalEnv }; - rmSync(dir, { recursive: true, force: true }); - } - }); it('resumes a startup session when Windows workdir uses backslashes', async () => { const session = makeSession({ id: 'ses-target' }); diff --git a/apps/pythinker-code/test/utils/managed-access-token.test.ts b/apps/pythinker-code/test/utils/managed-access-token.test.ts deleted file mode 100644 index fca2db45e..000000000 --- a/apps/pythinker-code/test/utils/managed-access-token.test.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; - -import { managedAccessToken } from '#/utils/managed-access-token'; - -const BASE = 'https://api.example.test/coding/v1'; -const OAUTH = { storage: 'file', key: 'oauth/managed' } as const; - -function setup(providerBaseUrl: string, oauth: typeof OAUTH | null = OAUTH) { - const auth = { getCachedAccessToken: vi.fn(async () => 'token') }; - const models = { main: { provider: 'acme', model: 'm1', maxContextSize: 1000 } } as never; - const providers = { acme: { type: 'openai', baseUrl: providerBaseUrl, oauth: oauth ?? undefined } } as never; - return { auth, models, providers }; -} - -describe('managedAccessToken', () => { - beforeEach(() => { - vi.stubEnv('CUSTOM_API_BASE_URL', BASE); - }); - afterEach(() => { - vi.unstubAllEnvs(); - }); - - it('reads the managed provider token by its oauth ref', async () => { - const { auth, models, providers } = setup(`${BASE}/`); - await expect(managedAccessToken(auth as never, 'main', models, providers)).resolves.toBe('token'); - expect(auth.getCachedAccessToken).toHaveBeenCalledWith(OAUTH); - }); - - it('never reads a token for a provider on another base', async () => { - const { auth, models, providers } = setup('https://other.example.test/v1'); - await expect(managedAccessToken(auth as never, 'main', models, providers)).resolves.toBeUndefined(); - expect(auth.getCachedAccessToken).not.toHaveBeenCalled(); - }); - - it('never reads a token without a custom API base', async () => { - vi.stubEnv('CUSTOM_API_BASE_URL', ''); - const { auth, models, providers } = setup(BASE); - await expect(managedAccessToken(auth as never, 'main', models, providers)).resolves.toBeUndefined(); - expect(auth.getCachedAccessToken).not.toHaveBeenCalled(); - }); - - it('skips providers without oauth and unknown models', async () => { - const noOauth = setup(BASE, null); - await expect( - managedAccessToken(noOauth.auth as never, 'main', noOauth.models, noOauth.providers), - ).resolves.toBeUndefined(); - const known = setup(BASE); - await expect( - managedAccessToken(known.auth as never, 'missing', known.models, known.providers), - ).resolves.toBeUndefined(); - expect(known.auth.getCachedAccessToken).not.toHaveBeenCalled(); - }); -}); diff --git a/apps/pythinker-code/test/utils/recommended-effort-config.test.ts b/apps/pythinker-code/test/utils/recommended-effort-config.test.ts deleted file mode 100644 index 4e5ba120d..000000000 --- a/apps/pythinker-code/test/utils/recommended-effort-config.test.ts +++ /dev/null @@ -1,224 +0,0 @@ -import { mkdtemp, readFile, rm } from 'node:fs/promises'; -import { tmpdir } from 'node:os'; -import { join } from 'node:path'; - -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; - -import { - getRecommendedEffortConfig, - peekRecommendedEffortConfig, - resetRecommendedEffortConfigCache, -} from '#/utils/recommended-effort-config'; - -const CLOUD_CONFIG = { - k3: { version: 1757001600, recommended_default_effort: 'max' }, - 'k3-256k': { version: 2, recommended_default_effort: 'high' }, -}; - -const ENVELOPE = { name: 'recommended_effort', config: CLOUD_CONFIG }; - -const tempDirs: string[] = []; - -function jsonResponse(body: unknown, status = 200): Response { - return new Response(JSON.stringify(body), { - status, - headers: { 'Content-Type': 'application/json' }, - }); -} - -async function makeCacheFile(): Promise { - const dir = await mkdtemp(join(tmpdir(), 'recommended-effort-config-')); - tempDirs.push(dir); - return join(dir, 'cache.json'); -} - -beforeEach(() => { - vi.stubEnv('CUSTOM_API_BASE_URL', 'https://api.example.test/coding/v1'); -}); - -afterEach(async () => { - vi.unstubAllEnvs(); - resetRecommendedEffortConfigCache(); - await Promise.all(tempDirs.splice(0).map((dir) => rm(dir, { recursive: true, force: true }))); -}); - -describe('getRecommendedEffortConfig', () => { - it('POSTs the recommended_effort name and returns the per-model entries', async () => { - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - - const result = await getRecommendedEffortConfig({ - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result).toEqual(CLOUD_CONFIG); - expect(fetchImpl).toHaveBeenCalledWith( - expect.stringContaining('/client_configs'), - expect.objectContaining({ - method: 'POST', - body: JSON.stringify({ name: 'recommended_effort' }), - }), - ); - }); - - it('ignores unknown entry fields so the contract can evolve', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ - name: 'recommended_effort', - config: { - k3: { - version: 3, - recommended_default_effort: 'max', - recommended_current_effort: 'high', - }, - }, - }), - ); - - const result = await getRecommendedEffortConfig({ - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result).toEqual({ k3: { version: 3, recommended_default_effort: 'max' } }); - }); - - it('drops only the invalid entries and keeps the valid ones', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ - name: 'recommended_effort', - config: { - valid: { version: 1, recommended_default_effort: 'max' }, - 'missing-effort': { version: 1 }, - 'missing-version': { recommended_default_effort: 'max' }, - 'negative-version': { version: -1, recommended_default_effort: 'max' }, - 'fractional-version': { version: 1.5, recommended_default_effort: 'max' }, - 'string-version': { version: '1', recommended_default_effort: 'max' }, - 'non-string-effort': { version: 1, recommended_default_effort: 5 }, - 'not-an-object': 'max', - }, - }), - ); - - const result = await getRecommendedEffortConfig({ - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result).toEqual({ valid: { version: 1, recommended_default_effort: 'max' } }); - }); - - it('returns undefined when the envelope name does not match', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ name: 'survey_popup', config: CLOUD_CONFIG }), - ); - - const result = await getRecommendedEffortConfig({ - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result).toBeUndefined(); - }); - - it('returns undefined when the payload is not an object', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ name: 'recommended_effort', config: 'nope' }), - ); - - const result = await getRecommendedEffortConfig({ - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result).toBeUndefined(); - }); - - it('returns undefined when the fetch fails or the response is not ok', async () => { - const failing = vi.fn(async () => { - throw new Error('offline'); - }); - await expect( - getRecommendedEffortConfig({ fetchImpl: failing as typeof fetch, cacheFile: null }), - ).resolves.toBeUndefined(); - - const notOk = vi.fn(async () => jsonResponse('no', 503)); - await expect( - getRecommendedEffortConfig({ fetchImpl: notOk as typeof fetch, cacheFile: null }), - ).resolves.toBeUndefined(); - }); - - it('serves the in-process cache within a day and refetches after it', async () => { - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - const now = Date.now(); - - await getRecommendedEffortConfig({ fetchImpl: fetchImpl as typeof fetch, now, cacheFile: null }); - const cached = await getRecommendedEffortConfig({ - fetchImpl: fetchImpl as typeof fetch, - now: now + 60_000, - cacheFile: null, - }); - expect(cached).toEqual(CLOUD_CONFIG); - expect(fetchImpl).toHaveBeenCalledTimes(1); - - await getRecommendedEffortConfig({ - fetchImpl: fetchImpl as typeof fetch, - now: now + 25 * 60 * 60 * 1000, - cacheFile: null, - }); - expect(fetchImpl).toHaveBeenCalledTimes(2); - }); - - it('persists the fetched config to the disk cache for the next process', async () => { - const cacheFile = await makeCacheFile(); - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - const now = Date.now(); - - await getRecommendedEffortConfig({ fetchImpl: fetchImpl as typeof fetch, now, cacheFile }); - - const persisted = JSON.parse(await readFile(cacheFile, 'utf-8')) as { config: unknown }; - expect(persisted.config).toEqual(CLOUD_CONFIG); - - resetRecommendedEffortConfigCache(); - const result = await getRecommendedEffortConfig({ - fetchImpl: vi.fn(async () => { - throw new Error('must not fetch'); - }) as unknown as typeof fetch, - now: now + 60_000, - cacheFile, - }); - expect(result).toEqual(CLOUD_CONFIG); - }); - - it('ignores a stale disk cache and returns undefined when the refetch fails', async () => { - const cacheFile = await makeCacheFile(); - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - const now = Date.now(); - - await getRecommendedEffortConfig({ fetchImpl: fetchImpl as typeof fetch, now, cacheFile }); - resetRecommendedEffortConfigCache(); - - const result = await getRecommendedEffortConfig({ - fetchImpl: vi.fn(async () => jsonResponse('no', 503)) as unknown as typeof fetch, - now: now + 25 * 60 * 60 * 1000, - cacheFile, - }); - expect(result).toBeUndefined(); - }); -}); - -describe('peekRecommendedEffortConfig', () => { - it('returns undefined while the cache is cold', () => { - expect(peekRecommendedEffortConfig()).toBeUndefined(); - }); - - it('sees the fetched config once the cache is warm', async () => { - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - const now = Date.now(); - - await getRecommendedEffortConfig({ fetchImpl: fetchImpl as typeof fetch, now, cacheFile: null }); - - expect(peekRecommendedEffortConfig(now + 60_000)).toEqual(CLOUD_CONFIG); - expect(peekRecommendedEffortConfig(now + 25 * 60 * 60 * 1000)).toBeUndefined(); - }); -}); diff --git a/apps/pythinker-code/test/utils/recommended-effort-state-store.test.ts b/apps/pythinker-code/test/utils/recommended-effort-state-store.test.ts deleted file mode 100644 index 18356bbae..000000000 --- a/apps/pythinker-code/test/utils/recommended-effort-state-store.test.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { mkdtemp, rm, writeFile } from 'node:fs/promises'; -import { tmpdir } from 'node:os'; -import { join } from 'node:path'; - -import { afterEach, beforeEach, describe, expect, it } from 'vitest'; - -import { - readRecommendedEffortState, - writeRecommendedEffortState, -} from '#/utils/recommended-effort-state-store'; - -describe('recommended-effort-state-store', () => { - let dir: string; - let file: string; - - beforeEach(async () => { - dir = await mkdtemp(join(tmpdir(), 'pythinker-recommended-effort-state-')); - file = join(dir, 'recommended-effort-state.json'); - }); - - afterEach(async () => { - await rm(dir, { recursive: true, force: true }); - }); - - it('returns an empty record when the file is missing', async () => { - await expect(readRecommendedEffortState(file)).resolves.toEqual({}); - }); - - it('round-trips per-model applied markers', async () => { - const state = { - k3: { version: 1757001600, applied_at: '2026-09-05T02:00:00.000Z' }, - 'k3-256k': { version: 2, applied_at: '2026-09-06T02:00:00.000Z' }, - }; - writeRecommendedEffortState(state, file); - await expect(readRecommendedEffortState(file)).resolves.toEqual(state); - }); - - it('returns an empty record when the file is corrupt', async () => { - await writeFile(file, 'not json', 'utf-8'); - await expect(readRecommendedEffortState(file)).resolves.toEqual({}); - }); - - it('returns an empty record when the schema does not match', async () => { - await writeFile(file, JSON.stringify({ k3: { version: 'new' } }), 'utf-8'); - await expect(readRecommendedEffortState(file)).resolves.toEqual({}); - }); - - it('merges a new model marker into the existing state', async () => { - writeRecommendedEffortState( - { k3: { version: 1, applied_at: '2026-09-05T02:00:00.000Z' } }, - file, - ); - const state = await readRecommendedEffortState(file); - writeRecommendedEffortState( - { - ...state, - 'k3-256k': { version: 3, applied_at: '2026-09-06T02:00:00.000Z' }, - }, - file, - ); - await expect(readRecommendedEffortState(file)).resolves.toEqual({ - k3: { version: 1, applied_at: '2026-09-05T02:00:00.000Z' }, - 'k3-256k': { version: 3, applied_at: '2026-09-06T02:00:00.000Z' }, - }); - }); -}); diff --git a/apps/pythinker-code/test/utils/recommended-effort.test.ts b/apps/pythinker-code/test/utils/recommended-effort.test.ts deleted file mode 100644 index 4147760c1..000000000 --- a/apps/pythinker-code/test/utils/recommended-effort.test.ts +++ /dev/null @@ -1,457 +0,0 @@ -import { mkdir, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises'; -import { tmpdir } from 'node:os'; -import { join } from 'node:path'; - -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; - -import type { PythinkerConfig, PythinkerConfigPatch, ModelAlias } from '@pymodel/pythinker-code-sdk'; - -import { applyRecommendedEffort } from '#/utils/recommended-effort'; -import type { RecommendedEffortConfig } from '#/utils/recommended-effort-config'; - -const OFFICIAL_COM = 'https://api.example.com/v1/v1'; -const OFFICIAL_AI = 'https://api.kimi.ai/coding/v1'; -const GATEWAY = 'https://gateway.example.com/coding/v1'; - -const NOW = new Date('2026-09-05T02:00:00.000Z'); -const CAMPAIGN = { version: 5, recommended_default_effort: 'max' }; - -function makeModelEntry(overrides: Partial = {}): ModelAlias { - return { - provider: 'openai', - model: 'k3', - maxContextSize: 256000, - supportEfforts: ['low', 'medium', 'high', 'max'], - ...overrides, - }; -} - -function makeConfig(overrides: Partial = {}): PythinkerConfig { - return { - providers: { - 'openai': { type: 'pythinker', baseUrl: OFFICIAL_COM }, - }, - defaultModel: 'main', - models: { main: makeModelEntry() }, - thinking: { effort: 'high' }, - ...overrides, - }; -} - -function makeHarness( - config: PythinkerConfig, - cloud: RecommendedEffortConfig | undefined, - stateFile: string, -) { - const setConfig = vi.fn(async (_patch: PythinkerConfigPatch) => ({}) as PythinkerConfig); - const track = vi.fn(); - const fetchConfig = vi.fn(async () => cloud); - const getConfig = vi.fn(async () => config); - const run = () => - applyRecommendedEffort({ - fetchConfig, - getConfig, - setConfig, - track, - stateFile, - now: () => NOW, - }); - return { setConfig, track, fetchConfig, getConfig, run }; -} - -async function readStateRaw(file: string): Promise { - return JSON.parse(await readFile(file, 'utf-8')) as unknown; -} - -async function expectNoStateFile(file: string): Promise { - await expect(readFile(file, 'utf-8')).rejects.toThrow(); -} - -describe('applyRecommendedEffort', () => { - let dir: string; - let stateFile: string; - const savedBaseUrl = process.env['CUSTOM_API_BASE_URL']; - - beforeEach(async () => { - dir = await mkdtemp(join(tmpdir(), 'pythinker-recommended-effort-')); - stateFile = join(dir, 'recommended-effort-state.json'); - // Official-host matching is only via CUSTOM_API_BASE_URL after hosted strip. - process.env['CUSTOM_API_BASE_URL'] = OFFICIAL_COM; - }); - - afterEach(async () => { - if (savedBaseUrl === undefined) { - delete process.env['CUSTOM_API_BASE_URL']; - } else { - process.env['CUSTOM_API_BASE_URL'] = savedBaseUrl; - } - await rm(dir, { recursive: true, force: true }); - }); - - it('writes the recommended effort, records the marker, and reports the event', async () => { - const h = makeHarness(makeConfig(), { k3: CAMPAIGN }, stateFile); - - await h.run(); - - expect(h.setConfig).toHaveBeenCalledTimes(1); - expect(h.setConfig).toHaveBeenCalledWith({ thinking: { effort: 'max' } }); - expect(await readStateRaw(stateFile)).toEqual({ - k3: { version: 5, applied_at: NOW.toISOString() }, - }); - expect(h.track).toHaveBeenCalledTimes(1); - expect(h.track).toHaveBeenCalledWith('recommended_effort_applied', { - model: 'k3', - version: 5, - effort: 'max', - previous_effort: 'high', - }); - }); - - it('reports undefined previous_effort when thinking was never configured', async () => { - const h = makeHarness(makeConfig({ thinking: undefined }), { k3: CAMPAIGN }, stateFile); - - await h.run(); - - expect(h.setConfig).toHaveBeenCalledWith({ thinking: { effort: 'max' } }); - expect(h.track).toHaveBeenCalledWith('recommended_effort_applied', { - model: 'k3', - version: 5, - effort: 'max', - previous_effort: undefined, - }); - }); - - it('does not add an enabled key when thinking.enabled is absent or explicit true', async () => { - for (const thinking of [{ enabled: true }, { effort: 'low' }]) { - const h = makeHarness(makeConfig({ thinking }), { k3: CAMPAIGN }, stateFile); - - await h.run(); - - expect(h.setConfig).toHaveBeenCalledWith({ thinking: { effort: 'max' } }); - await rm(stateFile, { force: true }); - } - }); - - it('records only the marker when the current effort already equals the recommendation', async () => { - const h = makeHarness(makeConfig({ thinking: { effort: 'max' } }), { k3: CAMPAIGN }, stateFile); - - await h.run(); - - expect(h.setConfig).not.toHaveBeenCalled(); - expect(await readStateRaw(stateFile)).toEqual({ - k3: { version: 5, applied_at: NOW.toISOString() }, - }); - expect(h.track).toHaveBeenCalledWith('recommended_effort_applied', { - model: 'k3', - version: 5, - effort: 'max', - previous_effort: 'max', - }); - }); - - it('does nothing when thinking is explicitly disabled', async () => { - const h = makeHarness( - makeConfig({ thinking: { enabled: false, effort: 'high' } }), - { k3: CAMPAIGN }, - stateFile, - ); - - await h.run(); - - expect(h.fetchConfig).not.toHaveBeenCalled(); - expect(h.setConfig).not.toHaveBeenCalled(); - expect(h.track).not.toHaveBeenCalled(); - await expectNoStateFile(stateFile); - }); - - it('does nothing without a default model or its models entry', async () => { - for (const config of [ - makeConfig({ defaultModel: undefined }), - makeConfig({ models: undefined }), - makeConfig({ models: {} }), - ]) { - const h = makeHarness(config, { k3: CAMPAIGN }, stateFile); - - await h.run(); - - expect(h.setConfig).not.toHaveBeenCalled(); - expect(h.track).not.toHaveBeenCalled(); - } - await expectNoStateFile(stateFile); - }); - - it('judges by config.defaultModel only, even when another alias matches the cloud list', async () => { - const h = makeHarness( - makeConfig({ - models: { - main: makeModelEntry({ model: 'k3' }), - alt: makeModelEntry({ model: 'k3-256k' }), - }, - }), - { 'k3-256k': CAMPAIGN }, - stateFile, - ); - - await h.run(); - - expect(h.setConfig).not.toHaveBeenCalled(); - expect(h.track).not.toHaveBeenCalled(); - await expectNoStateFile(stateFile); - }); - - it('does nothing when the model is not in the cloud config or the fetch fails', async () => { - for (const cloud of [{}, undefined] as const) { - const h = makeHarness(makeConfig(), cloud, stateFile); - - await h.run(); - - expect(h.setConfig).not.toHaveBeenCalled(); - expect(h.track).not.toHaveBeenCalled(); - } - await expectNoStateFile(stateFile); - }); - - it('matches the global official endpoint as well', async () => { - process.env['CUSTOM_API_BASE_URL'] = OFFICIAL_AI; - const h = makeHarness( - makeConfig({ - providers: { 'openai': { type: 'pythinker', baseUrl: OFFICIAL_AI } }, - }), - { k3: CAMPAIGN }, - stateFile, - ); - - await h.run(); - - expect(h.setConfig).toHaveBeenCalledWith({ thinking: { effort: 'max' } }); - }); - - it('prefers the entry-level base_url over the provider one, both ways', async () => { - const entryOfficial = makeHarness( - makeConfig({ - providers: { 'openai': { type: 'pythinker', baseUrl: GATEWAY } }, - models: { main: makeModelEntry({ baseUrl: OFFICIAL_COM }) }, - }), - { k3: CAMPAIGN }, - stateFile, - ); - await entryOfficial.run(); - expect(entryOfficial.setConfig).toHaveBeenCalledTimes(1); - - await rm(stateFile, { force: true }); - - const entryGateway = makeHarness( - makeConfig({ models: { main: makeModelEntry({ baseUrl: GATEWAY }) } }), - { k3: CAMPAIGN }, - stateFile, - ); - await entryGateway.run(); - expect(entryGateway.setConfig).not.toHaveBeenCalled(); - expect(entryGateway.track).not.toHaveBeenCalled(); - await expectNoStateFile(stateFile); - }); - - it('does nothing for self-hosted endpoints', async () => { - // Keep CUSTOM_API_BASE_URL on OFFICIAL_COM so GATEWAY / missing base are non-official. - for (const config of [ - makeConfig({ providers: { 'openai': { type: 'pythinker', baseUrl: GATEWAY } } }), - makeConfig({ providers: { 'openai': { type: 'pythinker' } } }), - ]) { - const h = makeHarness(config, { k3: CAMPAIGN }, stateFile); - - await h.run(); - - expect(h.setConfig).not.toHaveBeenCalled(); - expect(h.track).not.toHaveBeenCalled(); - } - await expectNoStateFile(stateFile); - }); - - it('treats CUSTOM_API_BASE_URL as the sole official benchmark when set', async () => { - process.env['CUSTOM_API_BASE_URL'] = GATEWAY; - const h = makeHarness(makeConfig(), { k3: CAMPAIGN }, stateFile); - - await h.run(); - - expect(h.setConfig).not.toHaveBeenCalled(); - expect(h.track).not.toHaveBeenCalled(); - await expectNoStateFile(stateFile); - }); - - it('does nothing when the model does not support the recommended effort', async () => { - for (const entry of [ - makeModelEntry({ supportEfforts: ['low', 'medium', 'high'] }), - makeModelEntry({ supportEfforts: undefined }), - makeModelEntry({ overrides: { supportEfforts: ['low', 'medium', 'high'] } }), - ]) { - const h = makeHarness(makeConfig({ models: { main: entry } }), { k3: CAMPAIGN }, stateFile); - - await h.run(); - - expect(h.setConfig).not.toHaveBeenCalled(); - expect(h.track).not.toHaveBeenCalled(); - } - await expectNoStateFile(stateFile); - }); - - it('applies when entry overrides widen supportEfforts to include the recommendation', async () => { - const h = makeHarness( - makeConfig({ - models: { - main: makeModelEntry({ - supportEfforts: ['low', 'medium', 'high'], - overrides: { supportEfforts: ['low', 'medium', 'high', 'max'] }, - }), - }, - }), - { k3: CAMPAIGN }, - stateFile, - ); - - await h.run(); - - expect(h.setConfig).toHaveBeenCalledWith({ thinking: { effort: 'max' } }); - }); - - it('applies only a strictly newer campaign version', async () => { - const applied = { k3: { version: 5, applied_at: '2026-09-01T00:00:00.000Z' } }; - await writeFile(stateFile, JSON.stringify(applied), 'utf-8'); - - for (const version of [5, 4]) { - const h = makeHarness(makeConfig(), { k3: { ...CAMPAIGN, version } }, stateFile); - await h.run(); - expect(h.setConfig).not.toHaveBeenCalled(); - expect(h.track).not.toHaveBeenCalled(); - } - expect(await readStateRaw(stateFile)).toEqual(applied); - - const newer = makeHarness(makeConfig(), { k3: { ...CAMPAIGN, version: 6 } }, stateFile); - await newer.run(); - expect(newer.setConfig).toHaveBeenCalledWith({ thinking: { effort: 'max' } }); - expect(await readStateRaw(stateFile)).toEqual({ - k3: { version: 6, applied_at: NOW.toISOString() }, - }); - }); - - it('applies version 0 when nothing was ever applied', async () => { - const h = makeHarness( - makeConfig(), - { k3: { version: 0, recommended_default_effort: 'max' } }, - stateFile, - ); - - await h.run(); - - expect(h.setConfig).toHaveBeenCalledWith({ thinking: { effort: 'max' } }); - expect(await readStateRaw(stateFile)).toEqual({ - k3: { version: 0, applied_at: NOW.toISOString() }, - }); - }); - - it('treats a corrupt marker file as never applied', async () => { - await writeFile(stateFile, 'not json', 'utf-8'); - const h = makeHarness(makeConfig(), { k3: CAMPAIGN }, stateFile); - - await h.run(); - - expect(h.setConfig).toHaveBeenCalledWith({ thinking: { effort: 'max' } }); - expect(await readStateRaw(stateFile)).toEqual({ - k3: { version: 5, applied_at: NOW.toISOString() }, - }); - }); - - it('keeps other models markers when recording a new one', async () => { - await writeFile( - stateFile, - JSON.stringify({ 'k3-256k': { version: 2, applied_at: '2026-09-01T00:00:00.000Z' } }), - 'utf-8', - ); - const h = makeHarness(makeConfig(), { k3: CAMPAIGN }, stateFile); - - await h.run(); - - expect(await readStateRaw(stateFile)).toEqual({ - 'k3-256k': { version: 2, applied_at: '2026-09-01T00:00:00.000Z' }, - k3: { version: 5, applied_at: NOW.toISOString() }, - }); - }); - - it('re-reads the live config after the fetch and honors a mid-flight opt-out', async () => { - const h = makeHarness(makeConfig(), { k3: CAMPAIGN }, stateFile); - h.getConfig - .mockResolvedValueOnce(makeConfig()) - .mockResolvedValueOnce(makeConfig({ thinking: { enabled: false } })); - - await h.run(); - - expect(h.setConfig).not.toHaveBeenCalled(); - expect(h.track).not.toHaveBeenCalled(); - await expectNoStateFile(stateFile); - }); - - it('reports previous_effort from the fresh config, not the pre-fetch one', async () => { - const h = makeHarness(makeConfig(), { k3: CAMPAIGN }, stateFile); - h.getConfig - .mockResolvedValueOnce(makeConfig()) - .mockResolvedValueOnce(makeConfig({ thinking: { effort: 'medium' } })); - - await h.run(); - - expect(h.track).toHaveBeenCalledWith('recommended_effort_applied', { - model: 'k3', - version: 5, - effort: 'max', - previous_effort: 'medium', - }); - }); - - it('updates the marker without writing when a stale marker meets an already-equal effort', async () => { - await writeFile( - stateFile, - JSON.stringify({ k3: { version: 3, applied_at: '2026-09-01T00:00:00.000Z' } }), - 'utf-8', - ); - const h = makeHarness(makeConfig({ thinking: { effort: 'max' } }), { k3: CAMPAIGN }, stateFile); - - await h.run(); - - expect(h.setConfig).not.toHaveBeenCalled(); - expect(await readStateRaw(stateFile)).toEqual({ - k3: { version: 5, applied_at: NOW.toISOString() }, - }); - expect(h.track).toHaveBeenCalledWith('recommended_effort_applied', { - model: 'k3', - version: 5, - effort: 'max', - previous_effort: 'max', - }); - }); - - it('records no marker and reports nothing when the config write fails', async () => { - const h = makeHarness(makeConfig(), { k3: CAMPAIGN }, stateFile); - h.setConfig.mockRejectedValue(new Error('disk full')); - - await h.run(); - - expect(h.track).not.toHaveBeenCalled(); - await expectNoStateFile(stateFile); - }); - - it('reports nothing when the marker write fails after a successful config write', async () => { - const dirAsStateFile = join(dir, 'state-file-is-a-directory'); - await mkdir(dirAsStateFile); - const h = makeHarness(makeConfig(), { k3: CAMPAIGN }, dirAsStateFile); - - await expect(h.run()).resolves.toBeUndefined(); - - expect(h.setConfig).toHaveBeenCalledTimes(1); - expect(h.track).not.toHaveBeenCalled(); - }); - - it('never throws, whatever the dependencies do', async () => { - const h = makeHarness(makeConfig(), { k3: CAMPAIGN }, stateFile); - h.setConfig.mockRejectedValue(new Error('boom')); - - await expect(h.run()).resolves.toBeUndefined(); - }); -}); diff --git a/apps/pythinker-web/src/i18n/locales/en/app.ts b/apps/pythinker-web/src/i18n/locales/en/app.ts index 81a153449..402ba5946 100644 --- a/apps/pythinker-web/src/i18n/locales/en/app.ts +++ b/apps/pythinker-web/src/i18n/locales/en/app.ts @@ -1,5 +1,4 @@ export default { - authBannerMessage: 'Not signed in · Sign in to Pythinker Code to start a conversation', authBannerLogin: 'Sign in', authPageTitle: 'Set up Pythinker Code', authPageMessage: 'Add a model provider before starting or continuing conversations.', diff --git a/apps/pythinker-web/src/i18n/locales/en/commands.ts b/apps/pythinker-web/src/i18n/locales/en/commands.ts index b7a0b8bcf..6700f4ff2 100644 --- a/apps/pythinker-web/src/i18n/locales/en/commands.ts +++ b/apps/pythinker-web/src/i18n/locales/en/commands.ts @@ -1,7 +1,7 @@ export default { new: { desc: 'Create a new session' }, clear: { desc: 'Clear and start a new session' }, - login: { desc: 'Sign in to Pythinker in the browser' }, + login: { desc: 'Sign in to a model provider in the browser' }, plan: { desc: 'Toggle plan mode on/off' }, expertTalk: { desc: 'Configure and arm Discussion for the next message' }, dynamicWorkflow: { desc: 'Toggle Dynamic Workflow mode; /workflow runs a task in parallel' }, diff --git a/apps/pythinker-web/src/i18n/locales/en/login.ts b/apps/pythinker-web/src/i18n/locales/en/login.ts index 2a36ffb1d..be863abc5 100644 --- a/apps/pythinker-web/src/i18n/locales/en/login.ts +++ b/apps/pythinker-web/src/i18n/locales/en/login.ts @@ -1,5 +1,5 @@ export default { - title: 'Sign in to Pythinker Code', + title: 'Sign in to a provider', close: 'Close (Esc)', starting: 'Starting authorization flow…', lead: 'Click the button below to authorize in a new browser tab.', diff --git a/apps/pythinker-web/src/i18n/locales/en/providers.ts b/apps/pythinker-web/src/i18n/locales/en/providers.ts index cb78a0793..62cb7883d 100644 --- a/apps/pythinker-web/src/i18n/locales/en/providers.ts +++ b/apps/pythinker-web/src/i18n/locales/en/providers.ts @@ -33,7 +33,6 @@ export default { deleteProvider: 'Delete provider', deleteConfirm: 'Delete {id} and its {count} models?', deleteConfirmYes: 'Delete', - loginPythinker: 'Sign in to Pythinker', loginAnthropic: 'Sign in to Anthropic', enterApiKey: 'Enter API Key', fieldId: 'Name', diff --git a/docs/configuration/overrides.md b/docs/configuration/overrides.md index c76639691..33b48a92f 100644 --- a/docs/configuration/overrides.md +++ b/docs/configuration/overrides.md @@ -14,7 +14,7 @@ Environment variables fall into three categories by function and cannot be colla 1. **Locating the config file**: `PYTHINKER_CODE_HOME` sets the data root directory, making the config file path `$PYTHINKER_CODE_HOME/config.toml`. This step runs before all other resolution and is not a fallback for individual parameters. 2. **Runtime switches**: A small set of variables like `PYTHINKER_DISABLE_TELEMETRY` directly shut down the corresponding subsystem. Even if `config.toml` has `telemetry = true`, a truthy value for this variable disables telemetry. The semantics are "additionally disable", not "ordinary override". -3. **Runtime endpoints and diagnostics**: Variables like `CUSTOM_OAUTH_HOST`, `CUSTOM_API_BASE_URL`, and `PYTHINKER_LOG_LEVEL` are read when the OAuth or logging subsystems initialize. For the full list, see [Environment variables](./env-vars.md). +3. **Runtime endpoints and diagnostics**: Variables like `CUSTOM_OAUTH_HOST` and `PYTHINKER_LOG_LEVEL` are read when the OAuth or logging subsystems initialize. For the full list, see [Environment variables](./env-vars.md). ## Priority for ordinary runtime parameters diff --git a/packages/agent-gateway/test/sessionRating.test.ts b/packages/agent-gateway/test/sessionRating.test.ts index 28fb47a5d..40714c5e6 100644 --- a/packages/agent-gateway/test/sessionRating.test.ts +++ b/packages/agent-gateway/test/sessionRating.test.ts @@ -1,7 +1,6 @@ import { strictEqual } from 'node:assert'; -import { mkdtemp, rm, writeFile } from 'node:fs/promises'; +import { mkdtemp, rm } from 'node:fs/promises'; import { createServer, type Server } from 'node:http'; -import type { AddressInfo } from 'node:net'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; import { Writable } from 'node:stream'; @@ -42,6 +41,26 @@ interface Envelope { data: T; } +const surveyPopup = vi.hoisted(() => ({ openRightAway: false })); + +vi.mock('../../product/src/session-rating/node/survey-popup-config-feed', async (importOriginal) => { + const original = + await importOriginal(); + const { DEFAULT_SURVEY_POPUP_PAYLOAD } = await import( + '../../product/src/session-rating/common/survey-popup-config' + ); + return { + ...original, + localSurveyPopupConfigFeed: (payload?: typeof DEFAULT_SURVEY_POPUP_PAYLOAD) => + original.localSurveyPopupConfigFeed( + payload ?? + (surveyPopup.openRightAway + ? { ...DEFAULT_SURVEY_POPUP_PAYLOAD, ...OPEN_RIGHT_AWAY_SURVEY_POPUP } + : DEFAULT_SURVEY_POPUP_PAYLOAD), + ), + }; +}); + const OPEN_RIGHT_AWAY_SURVEY_POPUP = { probability: 1, min_time_before_feedback_ms: 0, @@ -234,7 +253,6 @@ describe('session rating preview outside development', () => { homeDir: home, env: serverEnv({ PYTHINKER_CODE_SESSION_RATING_PREVIEW: '1', - CUSTOM_API_BASE_URL: 'http://127.0.0.1:9', }), logger: pino({ level: 'silent' }), }); @@ -258,37 +276,15 @@ describe('session rating lifecycle', () => { let server: RunningServer; let home: string; let client: RatingClient; - let configServer: Server; - let configRequests = 0; const records: TelemetryAppenderRecord[] = []; - const savedCustomBaseUrl = process.env['CUSTOM_API_BASE_URL']; - - function managedModelConfig(baseUrl: string): string { - return [ - 'default_model = "acme/k3"', - '', - '[providers.acme]', - 'type = "pythinker"', - `base_url = "${baseUrl}"`, - 'api_key = "test-key"', - '', - '[models."acme/k3"]', - 'provider = "acme"', - 'model = "k3"', - 'max_context_size = 262144', - '', - ].join('\n'); - } - async function startRatingServer(): Promise { - const port = (configServer.address() as AddressInfo).port; const started = await startServer({ hostIdentity: TEST_HOST_IDENTITY, host: '127.0.0.1', port: 0, homeDir: home, - env: serverEnv({ CUSTOM_API_BASE_URL: `http://127.0.0.1:${port}` }), + env: serverEnv({}), logger: pino({ level: 'silent' }), }); started.core.accessor.get(ITelemetryService).addAppender({ @@ -299,16 +295,6 @@ describe('session rating lifecycle', () => { return started; } - async function warmUpConfig(ratings: RatingClient): Promise { - const id = await ratings.createSession(home); - await ratings.finishUserTurn(id); - await expect(ratings.evaluate(id)).resolves.toMatchObject({ data: { appearance: null } }); - await vi.waitFor(() => { - if (configRequests === 0) throw new Error('survey_popup has not been fetched yet'); - }); - await new Promise((resolve) => setTimeout(resolve, 50)); - } - function ratingEvents(sessionId: string): [unknown, unknown, unknown][] { return records .filter((record) => record.event === 'feedback_survey') @@ -322,28 +308,14 @@ describe('session rating lifecycle', () => { beforeAll(async () => { home = await mkdtemp(join(tmpdir(), 'pythinker-server-v2-rating-')); - configServer = createServer((req, res) => { - configRequests += 1; - req.resume(); - req.on('end', () => { - res.setHeader('content-type', 'application/json'); - res.end(JSON.stringify({ name: 'survey_popup', config: OPEN_RIGHT_AWAY_SURVEY_POPUP })); - }); - }); - await new Promise((resolve) => configServer.listen(0, '127.0.0.1', resolve)); - const customBaseUrl = `http://127.0.0.1:${(configServer.address() as AddressInfo).port}`; - process.env['CUSTOM_API_BASE_URL'] = customBaseUrl; - await writeFile(join(home, 'config.toml'), managedModelConfig(customBaseUrl), 'utf8'); + surveyPopup.openRightAway = true; server = await startRatingServer(); client = new RatingClient(server); - await warmUpConfig(client); }); afterAll(async () => { await server.close(); - await new Promise((resolve) => configServer.close(resolve)); - if (savedCustomBaseUrl === undefined) delete process.env['CUSTOM_API_BASE_URL']; - else process.env['CUSTOM_API_BASE_URL'] = savedCustomBaseUrl; + surveyPopup.openRightAway = false; await rm(home, { recursive: true, force: true, maxRetries: 5, retryDelay: 50 }); }); @@ -358,23 +330,6 @@ describe('session rating lifecycle', () => { ]); }); - it('identifies the managed model and its trace for the kfc check', async () => { - const id = await client.createSession(home); - await (await client.mainAgent(id)).accessor.get(IAgentProfileService).setModel('acme/k3'); - await client.openRating(id); - - const appeared = records.find( - (record) => - record.event === 'feedback_survey' && - record.context['session_id'] === id && - record.properties['event_type'] === 'appeared', - ); - expect(appeared?.properties).toMatchObject({ - current_model: 'acme/k3', - pfc_model_id: 'k3', - pfc_trace_id: 'trace-1', - }); - }); it.each(['archive', 'delete', 'reload'] as const)( 'accepts a delayed answer after %s without automatically abandoning it', async (action) => { diff --git a/packages/oauth/src/index.ts b/packages/oauth/src/index.ts index 87cadd3a6..6fb6ec7b5 100644 --- a/packages/oauth/src/index.ts +++ b/packages/oauth/src/index.ts @@ -210,27 +210,7 @@ export function formatDuration(totalSeconds: number): string { if (secs && parts.length === 0) parts.push(`${String(secs)}s`); return parts.length > 0 ? parts.join(' ') : '0s'; } -export function isManagedPythinkerCodeBaseUrl(baseUrl?: string): boolean { - if (baseUrl === undefined || baseUrl.length === 0) return false; - try { - const candidate = normalizeBaseUrl(baseUrl); - if (candidate === undefined) return false; - const custom = process.env['CUSTOM_API_BASE_URL']; - if (custom === undefined || custom.length === 0) return false; - return normalizeBaseUrl(custom) === candidate; - } catch { - return false; - } -} -function normalizeBaseUrl(value: string): string | undefined { - try { - const url = new URL(value); - return `${url.origin.toLowerCase()}${url.pathname.replace(/\/+$/, '')}`; - } catch { - return undefined; - } -} export type ManagedQuota = { readonly entries?: readonly ManagedQuotaEntry[]; readonly extraUsage?: any; diff --git a/packages/product/package.json b/packages/product/package.json index 418382c6d..cb7726fa8 100644 --- a/packages/product/package.json +++ b/packages/product/package.json @@ -18,10 +18,6 @@ "#/*": "./src/*.ts" }, "exports": { - "./client-configs/node": { - "types": "./src/client-configs/node/index.ts", - "default": "./src/client-configs/node/index.ts" - }, "./session-rating": { "types": "./src/session-rating/common/index.ts", "default": "./src/session-rating/common/index.ts" diff --git a/packages/product/src/client-configs/node/client-configs.ts b/packages/product/src/client-configs/node/client-configs.ts deleted file mode 100644 index 443f18828..000000000 --- a/packages/product/src/client-configs/node/client-configs.ts +++ /dev/null @@ -1,171 +0,0 @@ -import { join } from 'node:path'; - -import type { PythinkerRegion } from '@pymodel/pythinker-code-oauth'; -import { z } from 'zod'; - -import { readJsonFile, writeJsonFile } from '#/shared/node/json-file'; - -export const CLIENT_CONFIGS_PATH = '/client_configs'; -export const RESOURCE_CONFIGS_PATH = '/resource_configs'; - -const CONFIG_CACHE_TTL_MS = 24 * 60 * 60 * 1000; -const FETCH_TIMEOUT_MS = 5000; - -export interface ClientConfigEnvironment { - readonly region: () => PythinkerRegion; - readonly baseUrlOverride: () => string | undefined; - readonly cacheDir: () => string | undefined; -} - -export interface ClientConfigFetchOptions { - readonly path?: string; - readonly accessToken?: string; - readonly fetchImpl?: typeof fetch; - readonly now?: number; - readonly cacheFile?: string | null; -} - -interface CacheEntry { - readonly fetchedAt: number; - readonly data: unknown; -} - -const cacheFileEnvelopeSchema = z.object({ - version: z.literal(1), - fetchedAt: z.number(), - config: z.unknown(), -}); - -export class ClientConfigClient { - private readonly cache = new Map(); - - constructor(private readonly environment: ClientConfigEnvironment) {} - - region(): PythinkerRegion { - return this.environment.region(); - } - - async get( - name: string, - schema: S, - options: ClientConfigFetchOptions = {}, - ): Promise | undefined> { - if (this.baseUrl() === undefined) return undefined; - const now = options.now ?? Date.now(); - const key = this.cacheKeyFor(name, options.path); - const hit = this.cache.get(key); - if (hit !== undefined && now - hit.fetchedAt < CONFIG_CACHE_TTL_MS) { - return hit.data as z.infer; - } - const file = this.cacheFileFor(name, options); - if (file !== undefined) { - const diskHit = await readDiskCache(file, schema, now); - if (diskHit !== undefined) { - this.cache.set(key, diskHit); - return diskHit.data as z.infer; - } - } - const data = await this.fetch(name, schema, options); - if (data === undefined) return undefined; - this.cache.set(key, { fetchedAt: now, data }); - if (file !== undefined) await writeDiskCache(file, data, now); - return data; - } - - peek( - name: string, - schema: S, - now: number = Date.now(), - path?: string, - ): z.infer | undefined { - const hit = this.cache.get(this.cacheKeyFor(name, path)); - if (hit === undefined || now - hit.fetchedAt >= CONFIG_CACHE_TTL_MS) return undefined; - const parsed = schema.safeParse(hit.data); - return parsed.success ? (parsed.data as z.infer) : undefined; - } - - async fetch( - name: string, - schema: S, - options: ClientConfigFetchOptions = {}, - ): Promise | undefined> { - const baseUrl = this.baseUrl(); - if (baseUrl === undefined) return undefined; - const fetchFn = options.fetchImpl ?? fetch; - const headers: Record = { - accept: 'application/json', - 'content-type': 'application/json', - }; - if (options.accessToken !== undefined) { - headers['authorization'] = `Bearer ${options.accessToken}`; - } - try { - const response = await fetchFn( - `${baseUrl}${options.path ?? CLIENT_CONFIGS_PATH}`, - { - method: 'POST', - headers, - body: JSON.stringify({ name }), - signal: AbortSignal.timeout(FETCH_TIMEOUT_MS), - }, - ); - if (!response.ok) return undefined; - const body: unknown = await response.json(); - if (typeof body !== 'object' || body === null) return undefined; - const envelope = body as Record; - if (envelope['name'] !== name) return undefined; - const parsed = schema.safeParse(envelope['config']); - return parsed.success ? (parsed.data as z.infer) : undefined; - } catch { - return undefined; - } - } - - reset(name?: string, path?: string): void { - if (name === undefined) { - this.cache.clear(); - } else { - this.cache.delete(this.cacheKeyFor(name, path)); - } - } - - private baseUrl(): string | undefined { - const base = this.environment.baseUrlOverride()?.trim(); - if (base === undefined || base.length === 0) return undefined; - return base.replace(/\/+$/, ''); - } - - private cacheKeyFor(name: string, path: string | undefined): string { - return `${this.region()}:${path ?? CLIENT_CONFIGS_PATH}:${name}`; - } - - private cacheFileFor(name: string, options: ClientConfigFetchOptions): string | undefined { - if (options.cacheFile === null) return undefined; - if (options.cacheFile !== undefined) return options.cacheFile; - const dir = this.environment.cacheDir(); - if (dir === undefined) return undefined; - return join(dir, `${encodeURIComponent(this.cacheKeyFor(name, options.path))}.json`); - } -} - -async function readDiskCache( - file: string, - schema: z.ZodType, - now: number, -): Promise { - let envelope: z.infer | undefined; - try { - envelope = await readJsonFile(file, cacheFileEnvelopeSchema); - } catch { - return undefined; - } - if (envelope === undefined || now - envelope.fetchedAt >= CONFIG_CACHE_TTL_MS) return undefined; - const parsed = schema.safeParse(envelope.config); - return parsed.success ? { fetchedAt: envelope.fetchedAt, data: parsed.data } : undefined; -} - -async function writeDiskCache(file: string, data: unknown, now: number): Promise { - try { - await writeJsonFile(file, cacheFileEnvelopeSchema, { version: 1, fetchedAt: now, config: data }); - } catch {} -} diff --git a/packages/product/src/client-configs/node/index.ts b/packages/product/src/client-configs/node/index.ts deleted file mode 100644 index 56dc64d29..000000000 --- a/packages/product/src/client-configs/node/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './client-configs'; diff --git a/packages/product/src/session-rating/common/gates.ts b/packages/product/src/session-rating/common/gates.ts index 0292cb971..4eaefb556 100644 --- a/packages/product/src/session-rating/common/gates.ts +++ b/packages/product/src/session-rating/common/gates.ts @@ -7,7 +7,6 @@ export type SurveyGateSkipReason = | 'turn-in-progress' | 'feature-disabled' | 'telemetry-disabled' - | 'model-gated' | 'warmup' | 'pacing' | 'threshold-invalid' @@ -19,7 +18,6 @@ export interface SharedArmGateInput { readonly turnInProgress: boolean; readonly feedbackSurveyDisabled: boolean; readonly telemetryDisabled: boolean; - readonly kfcModelId: string | undefined; } export interface SessionArmGateInput extends SharedArmGateInput { @@ -58,26 +56,16 @@ export type SurveyGateVerdict = readonly longContextRollConsumed?: boolean; }; -function modelGatePasses(onForModels: readonly string[], kfcModelId: string | undefined): boolean { - if (onForModels.length === 0) return false; - if (onForModels.includes('*')) return true; - return kfcModelId !== undefined && onForModels.includes(kfcModelId); -} - -function sharedSkipReason( - input: SharedArmGateInput, - config: SurveyPopupConfig, -): SurveyGateSkipReason | undefined { +function sharedSkipReason(input: SharedArmGateInput): SurveyGateSkipReason | undefined { if (input.turnInProgress) return 'turn-in-progress'; if (input.feedbackSurveyDisabled) return 'feature-disabled'; if (input.telemetryDisabled) return 'telemetry-disabled'; - if (!modelGatePasses(config.on_for_models, input.kfcModelId)) return 'model-gated'; return undefined; } function evaluateSessionArm(input: SurveyGateInput): SurveyGateVerdict { const { session, config } = input; - const shared = sharedSkipReason(session, config); + const shared = sharedSkipReason(session); if (shared !== undefined) return { show: false, reason: shared }; if (session.msSinceLastShown === undefined) { if ( @@ -106,7 +94,7 @@ export function evaluateLongContextArm(input: SurveyGateInput): SurveyGateVerdic const { longContext, config } = input; if (longContext.mountSurveyShown) return { show: false, reason: 'mount-survey-shown' }; if (longContext.mountRollConsumed) return { show: false, reason: 'mount-roll-consumed' }; - const shared = sharedSkipReason(longContext, config); + const shared = sharedSkipReason(longContext); if (shared !== undefined) return { show: false, reason: shared }; if (!(config.long_context_survey_threshold > 0)) { return { show: false, reason: 'threshold-invalid' }; diff --git a/packages/product/src/session-rating/common/survey-popup-config.ts b/packages/product/src/session-rating/common/survey-popup-config.ts index dcee3de11..e49f99caf 100644 --- a/packages/product/src/session-rating/common/survey-popup-config.ts +++ b/packages/product/src/session-rating/common/survey-popup-config.ts @@ -1,8 +1,5 @@ -import { z } from 'zod'; - export interface SurveyPopupConfig { probability: number; - on_for_models: string[]; min_time_before_feedback_ms: number; min_user_turns_before_feedback: number; min_time_between_feedback_ms: number; @@ -15,7 +12,6 @@ export interface SurveyPopupConfig { export const DEFAULT_SURVEY_POPUP_CONFIG: SurveyPopupConfig = { probability: 0.005, - on_for_models: ['*'], min_time_before_feedback_ms: 600_000, min_user_turns_before_feedback: 5, min_time_between_feedback_ms: 3_600_000, @@ -26,67 +22,6 @@ export const DEFAULT_SURVEY_POPUP_CONFIG: SurveyPopupConfig = { long_context_trigger_mode: 'virtual_context', }; -export type SurveyPopupOverride = Partial>; - -export interface SurveyPopupPayload extends SurveyPopupConfig { - model_overrides: Record; -} - -export const DEFAULT_SURVEY_POPUP_PAYLOAD: SurveyPopupPayload = { - ...DEFAULT_SURVEY_POPUP_CONFIG, - model_overrides: {}, -}; - -const FIELD_SCHEMAS = { - probability: z.number().min(0).max(1), - on_for_models: z.array(z.string()), - min_time_before_feedback_ms: z.number().min(0), - min_user_turns_before_feedback: z.number().int().min(0), - min_time_between_feedback_ms: z.number().min(0), - min_user_turns_between_feedback: z.number().int().min(0), - min_time_between_global_feedback_ms: z.number().min(0), - long_context_survey_threshold: z.number(), - long_context_probability: z.number().min(0).max(1), - long_context_trigger_mode: z.enum(['cumulative', 'virtual_context']), -} satisfies Record; - -const surveyPopupOverrideSchema = z.object(FIELD_SCHEMAS).omit({ on_for_models: true }).partial(); +export type SurveyPopupPayload = SurveyPopupConfig; -function parseModelOverrides(raw: unknown): Record { - if (typeof raw !== 'object' || raw === null) return {}; - const overrides: Record = {}; - for (const [model, entry] of Object.entries(raw)) { - const parsed = surveyPopupOverrideSchema.safeParse(entry); - if (parsed.success) overrides[model] = parsed.data; - } - return overrides; -} - -export const surveyPopupConfigSchema = z.unknown().transform((raw): Partial => { - if (typeof raw !== 'object' || raw === null) return {}; - const record = raw as Record; - const partial: Record = {}; - for (const [key, schema] of Object.entries(FIELD_SCHEMAS)) { - const value = record[key]; - if (value === undefined) continue; - const parsed = schema.safeParse(value); - if (parsed.success) partial[key] = parsed.data; - } - if (record['model_overrides'] !== undefined) { - partial['model_overrides'] = parseModelOverrides(record['model_overrides']); - } - return partial as Partial; -}); - -export function withDefaults(partial: Partial | undefined): SurveyPopupPayload { - return { ...DEFAULT_SURVEY_POPUP_PAYLOAD, ...partial }; -} - -export function resolveSurveyPopupConfig( - payload: SurveyPopupPayload, - kfcModelId: string | undefined, -): SurveyPopupConfig { - const { model_overrides: modelOverrides, ...base } = payload; - const override = kfcModelId === undefined ? undefined : modelOverrides[kfcModelId]; - return override === undefined ? base : { ...base, ...override }; -} +export const DEFAULT_SURVEY_POPUP_PAYLOAD: SurveyPopupPayload = DEFAULT_SURVEY_POPUP_CONFIG; diff --git a/packages/product/src/session-rating/node/engine.ts b/packages/product/src/session-rating/node/engine.ts index 6ffae92ad..97d2cfd6c 100644 --- a/packages/product/src/session-rating/node/engine.ts +++ b/packages/product/src/session-rating/node/engine.ts @@ -15,11 +15,9 @@ import { type LongContextArmGateInput, type SessionArmGateInput, } from '../common/gates'; -import { kfcModelIdOf, type RatingModelRoute } from './kfc'; import { SessionRatingLedger, type RatingTracker } from './ledger'; import type { RatingOffer, SurveyAppearance, SurveyKind } from '../common/types'; import { - resolveSurveyPopupConfig, type SurveyPopupConfig, type SurveyPopupPayload, } from '../common/survey-popup-config'; @@ -51,7 +49,6 @@ export interface ResumedAgentSeed { export interface RatingEnvironment { readonly sessionId: string; readonly currentModel: string; - readonly model: RatingModelRoute; readonly cumulativeTokens: number; readonly contextTokens: number; readonly permissionMode: string; @@ -127,7 +124,7 @@ class SessionRatingMountImpl implements SessionRatingMount { private userTurnsAtLastShown: number | undefined; private appearanceCount = 0; private globalLastShownAt: number | undefined; - private readonly longContextRollConsumedModels = new Set(); + private longContextRollConsumed = false; private longContextShownThisMount = false; private stickySample: { readonly turnCount: number; readonly value: number } | undefined; private toolCallCount = 0; @@ -177,13 +174,10 @@ class SessionRatingMountImpl implements SessionRatingMount { this.globalLastShownAt = Math.max(persisted, this.globalLastShownAt ?? 0); } const environment = this.deps.environment(); - const kfcModelId = kfcModelIdOf(environment.model); - const config = resolveSurveyPopupConfig(this.deps.config.payload(), kfcModelId); - const verdict = evaluateSurveyGate({ ...this.gateInputs(environment, kfcModelId), config }); - if (verdict.longContextRollConsumed === true) { - this.longContextRollConsumedModels.add(kfcModelId); - } - return verdict.show ? this.open(verdict.survey, config, environment, kfcModelId) : undefined; + const config = this.deps.config.payload(); + const verdict = evaluateSurveyGate({ ...this.gateInputs(environment), config }); + if (verdict.longContextRollConsumed === true) this.longContextRollConsumed = true; + return verdict.show ? this.open(verdict.survey, config, environment) : undefined; } catch { return undefined; } @@ -250,14 +244,12 @@ class SessionRatingMountImpl implements SessionRatingMount { private gateInputs( environment: RatingEnvironment, - kfcModelId: string | undefined, ): { session: SessionArmGateInput; longContext: LongContextArmGateInput } { const now = this.now(); const shared = { turnInProgress: this.turnInProgress || environment.busy, feedbackSurveyDisabled: environment.ratingDisabled, telemetryDisabled: environment.telemetryDisabled, - kfcModelId, }; const msSinceGlobalLastShown = this.globalLastShownAt === undefined ? undefined : this.wallNow() - this.globalLastShownAt; @@ -278,7 +270,7 @@ class SessionRatingMountImpl implements SessionRatingMount { ...shared, cumulativeTokens: environment.cumulativeTokens, virtualContextTokens: environment.contextTokens, - mountRollConsumed: this.longContextRollConsumedModels.has(kfcModelId), + mountRollConsumed: this.longContextRollConsumed, mountSurveyShown: this.longContextShownThisMount, msSinceGlobalLastShown, drawMountRoll: () => this.random(), @@ -297,7 +289,6 @@ class SessionRatingMountImpl implements SessionRatingMount { survey: SurveyKind, config: SurveyPopupConfig, environment: RatingEnvironment, - kfcModelId: string | undefined, ): RatingOffer { this.appearanceCount += 1; const appearance: SurveyAppearance = { @@ -314,7 +305,7 @@ class SessionRatingMountImpl implements SessionRatingMount { appearance_id: appearance.appearanceId, appearance_index: appearance.appearanceIndex, }, - this.environmentFields(environment, kfcModelId), + this.environmentFields(environment), config, ), context: { sessionId: environment.sessionId }, @@ -332,14 +323,9 @@ class SessionRatingMountImpl implements SessionRatingMount { return { appearanceId: appearance.appearanceId, survey }; } - private environmentFields( - environment: RatingEnvironment, - kfcModelId: string | undefined, - ): SurveyEventEnvironmentFields { + private environmentFields(environment: RatingEnvironment): SurveyEventEnvironmentFields { return { current_model: environment.currentModel, - pfc_model_id: kfcModelId, - pfc_trace_id: kfcModelId === undefined ? undefined : this.pendingTraceId, user_turn_count: environment.historyUserTurnCount === undefined ? undefined diff --git a/packages/product/src/session-rating/node/event-properties.ts b/packages/product/src/session-rating/node/event-properties.ts index c8caf35ee..dc5f17626 100644 --- a/packages/product/src/session-rating/node/event-properties.ts +++ b/packages/product/src/session-rating/node/event-properties.ts @@ -16,8 +16,6 @@ export interface SurveyEventProperties { appearance_index: number; response?: 'bad' | 'fine' | 'good' | 'dismissed'; current_model: string; - pfc_model_id?: string; - pfc_trace_id?: string; user_turn_count?: number; cumulative_tokens: number; virtual_context_tokens: number; @@ -30,7 +28,6 @@ export interface SurveyEventProperties { dynamic_workflow_run_count: number; dynamic_workflow_models?: string; config_probability: number; - config_on_for_models: string; config_min_time_before_feedback_ms: number; config_min_user_turns_before_feedback: number; config_min_time_between_feedback_ms: number; @@ -50,8 +47,6 @@ export interface SurveyEventCoreFields { export interface SurveyEventEnvironmentFields { readonly current_model: string; - readonly pfc_model_id?: string; - readonly pfc_trace_id?: string; readonly user_turn_count?: number; readonly cumulative_tokens: number; readonly virtual_context_tokens: number; @@ -73,8 +68,6 @@ const surveyEventPropertyDescriptions: { appearance_index: 'Ordinal of the appearance within the current session mount, starting at 1', response: 'Answer carried by responded events: bad, fine, good, or dismissed', current_model: 'Session model alias when the prompt appeared', - pfc_model_id: 'Managed Pythinker Code model id, present when the session model uses the managed endpoint', - pfc_trace_id: 'Trace id of the turn that triggered the prompt, present only with pfc_model_id', user_turn_count: 'User turns in the session when the prompt appeared, absent when the history count is unknown', cumulative_tokens: 'Cumulative session token usage when the prompt appeared', @@ -88,7 +81,6 @@ const surveyEventPropertyDescriptions: { dynamic_workflow_run_count: 'AgentDynamicWorkflow runs observed since the session mount began', dynamic_workflow_models: 'Sorted comma-separated models used by dynamic_workflow members', config_probability: 'Effective survey_popup probability when the prompt appeared', - config_on_for_models: 'Effective survey_popup on_for_models, comma-separated', config_min_time_before_feedback_ms: 'Effective survey_popup min_time_before_feedback_ms', config_min_user_turns_before_feedback: 'Effective survey_popup min_user_turns_before_feedback', config_min_time_between_feedback_ms: 'Effective survey_popup min_time_between_feedback_ms', @@ -125,7 +117,6 @@ export function buildSurveyEventProperties( response: core.response, ...environment, config_probability: config.probability, - config_on_for_models: config.on_for_models.join(','), config_min_time_before_feedback_ms: config.min_time_before_feedback_ms, config_min_user_turns_before_feedback: config.min_user_turns_before_feedback, config_min_time_between_feedback_ms: config.min_time_between_feedback_ms, diff --git a/packages/product/src/session-rating/node/kfc.ts b/packages/product/src/session-rating/node/kfc.ts deleted file mode 100644 index 28be7dcf3..000000000 --- a/packages/product/src/session-rating/node/kfc.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { isManagedPythinkerCodeBaseUrl } from '@pymodel/pythinker-code-oauth'; - -export interface RatingModelRoute { - readonly modelId: string | undefined; - readonly baseUrl: string | undefined; -} - -export function kfcModelIdOf(route: RatingModelRoute): string | undefined { - if (route.modelId === undefined || !isManagedPythinkerCodeBaseUrl(route.baseUrl)) return undefined; - return route.modelId; -} diff --git a/packages/product/src/session-rating/node/session-rating-host.ts b/packages/product/src/session-rating/node/session-rating-host.ts index d7b7eded4..bcfffcd62 100644 --- a/packages/product/src/session-rating/node/session-rating-host.ts +++ b/packages/product/src/session-rating/node/session-rating-host.ts @@ -1,6 +1,4 @@ -import { join } from 'node:path'; -import { resolvePythinkerRegion } from '@pymodel/pythinker-code-oauth'; import { agentContextOf, @@ -13,7 +11,6 @@ import { IConfigService, IEventBus, IEventDispatcher, - IModelCatalog, ISessionManager, ISessionMetadata, ISessionTokenCountingService, @@ -35,7 +32,6 @@ import { ToolResultEvent, } from '@pymodel/agent-core-v2/agent/toolExecutor/toolExecutorEvents'; -import { ClientConfigClient } from '#/client-configs/node/client-configs'; import { mountSessionRating, type RatingConfigFeed, @@ -49,8 +45,7 @@ import { SessionRatingLedger } from '#/session-rating/node/ledger'; import type { RatingOffer, RatingReport } from '#/session-rating/common/types'; import { ratingCooldownFile, type RatingCooldownStore } from '#/session-rating/node/cooldown-store'; import { - cloudSurveyPopupConfigFeed, - SurveyPopupConfigFeed, + localSurveyPopupConfigFeed, } from '#/session-rating/node/survey-popup-config-feed'; import { DEFAULT_SURVEY_POPUP_PAYLOAD, @@ -59,7 +54,6 @@ import { export const SESSION_RATING_PREVIEW_ENV = 'PYTHINKER_CODE_SESSION_RATING_PREVIEW'; -const CLIENT_CONFIG_CACHE_DIR = join('cache', 'client-configs'); const PREVIEW_SURVEY_POPUP_PAYLOAD: SurveyPopupPayload = { ...DEFAULT_SURVEY_POPUP_PAYLOAD, @@ -81,25 +75,6 @@ function memoryCooldownStore(): RatingCooldownStore { }; } -class LazyConfigFeed implements RatingConfigFeed { - private feed: SurveyPopupConfigFeed | undefined; - - constructor(private readonly create: () => SurveyPopupConfigFeed) {} - - readyForEvaluation(): boolean { - return this.current().readyForEvaluation(); - } - - payload(): SurveyPopupPayload { - return this.current().payload(); - } - - private current(): SurveyPopupConfigFeed { - this.feed ??= this.create(); - return this.feed; - } -} - export interface SessionRatingHostOptions { readonly telemetryDisabled: () => boolean; readonly preview?: boolean; @@ -129,21 +104,10 @@ export class SessionRatingHost implements IDisposable { this.ledger = new SessionRatingLedger({ telemetryDisabled: options.telemetryDisabled }); this.preview = options.preview === true; if (this.preview) { - this.config = new SurveyPopupConfigFeed({ - peek: () => PREVIEW_SURVEY_POPUP_PAYLOAD, - isFresh: () => true, - region: () => '', - }); + this.config = localSurveyPopupConfigFeed(PREVIEW_SURVEY_POPUP_PAYLOAD); this.cooldown = memoryCooldownStore(); } else { - const client = new ClientConfigClient({ - region: () => resolvePythinkerRegion({ homeDir: bootstrap.homeDir }), - baseUrlOverride: () => bootstrap.getEnv('CUSTOM_API_BASE_URL'), - cacheDir: () => join(bootstrap.homeDir, CLIENT_CONFIG_CACHE_DIR), - }); - this.config = new LazyConfigFeed(() => - cloudSurveyPopupConfigFeed(client, async () => undefined), - ); + this.config = localSurveyPopupConfigFeed(); this.cooldown = ratingCooldownFile(bootstrap.homeDir); } const manager = core.accessor.get(ISessionManager); @@ -315,15 +279,6 @@ function resumedAgentSeeds( return seeds; } -function modelRouteOf(agent: IAgentScopeHandle, alias: string): RatingEnvironment['model'] { - try { - const model = agent.accessor.get(IModelCatalog).get(alias); - return { modelId: model.name, baseUrl: model.baseUrl }; - } catch { - return { modelId: undefined, baseUrl: undefined }; - } -} - function readEnvironment( sessionId: string, agent: IAgentScopeHandle | undefined, @@ -334,7 +289,6 @@ function readEnvironment( return { sessionId, currentModel: '', - model: { modelId: undefined, baseUrl: undefined }, cumulativeTokens: 0, contextTokens: 0, permissionMode: '', @@ -349,7 +303,6 @@ function readEnvironment( return { sessionId, currentModel: alias, - model: modelRouteOf(agent, alias), cumulativeTokens: total === undefined ? 0 diff --git a/packages/product/src/session-rating/node/survey-popup-config-feed.ts b/packages/product/src/session-rating/node/survey-popup-config-feed.ts index 6ff29ab66..d79c9f913 100644 --- a/packages/product/src/session-rating/node/survey-popup-config-feed.ts +++ b/packages/product/src/session-rating/node/survey-popup-config-feed.ts @@ -1,119 +1,11 @@ -import type { ClientConfigClient, ClientConfigFetchOptions } from '#/client-configs/node/client-configs'; - -import { - surveyPopupConfigSchema, - withDefaults, - type SurveyPopupPayload, -} from '../common/survey-popup-config'; - -const CONFIG_NAME = 'survey_popup'; - -export async function getSurveyPopupConfig( - client: SurveyPopupConfigClient, - options: ClientConfigFetchOptions = {}, -): Promise { - return withDefaults(await client.get(CONFIG_NAME, surveyPopupConfigSchema, options)); -} - -export function peekSurveyPopupConfig( - client: SurveyPopupConfigClient, - now?: number, -): SurveyPopupPayload { - return withDefaults(client.peek(CONFIG_NAME, surveyPopupConfigSchema, now)); -} - -export function isSurveyPopupConfigFresh(client: SurveyPopupConfigClient, now?: number): boolean { - return client.peek(CONFIG_NAME, surveyPopupConfigSchema, now) !== undefined; -} - -export function resetSurveyPopupConfigCache(client: SurveyPopupConfigClient): void { - client.reset(CONFIG_NAME); -} - -export const SURVEY_POPUP_CONFIG_REFRESH_INTERVAL_MS = 3_600_000; - -export interface SurveyPopupConfigFeedDeps { - readonly peek: () => SurveyPopupPayload; - readonly isFresh: () => boolean; - readonly region: () => string; - readonly refresh?: () => unknown; - readonly now?: () => number; -} - -export class SurveyPopupConfigFeed { - private ready = false; - private refreshedAt = 0; - private coldRefreshAttemptedAt = 0; - private refreshedRegion: string | undefined; - - constructor(private readonly deps: SurveyPopupConfigFeedDeps) { - this.refresh(); - this.coldRefreshAttemptedAt = this.now(); - } - - payload(): SurveyPopupPayload { - return this.deps.peek(); - } - - readyForEvaluation(): boolean { - if (!this.ready) return false; - const now = this.now(); - if ( - !this.deps.isFresh() && - now - this.coldRefreshAttemptedAt >= SURVEY_POPUP_CONFIG_REFRESH_INTERVAL_MS - ) { - this.coldRefreshAttemptedAt = now; - return !this.refresh(); - } - if ( - this.deps.region() !== this.refreshedRegion || - now - this.refreshedAt >= SURVEY_POPUP_CONFIG_REFRESH_INTERVAL_MS - ) { - return !this.refresh(); - } - return true; - } - - private refresh(): boolean { - this.refreshedAt = this.now(); - this.refreshedRegion = this.deps.region(); - const refresh = this.deps.refresh; - if (refresh === undefined) { - this.ready = true; - return false; - } - this.ready = false; - void new Promise((resolve) => { - resolve(refresh()); - }) - .catch(() => undefined) - .finally(() => { - this.ready = true; - }); - return true; - } - - private now(): number { - return (this.deps.now ?? (() => performance.now()))(); - } -} - -export type SurveyPopupConfigClient = Pick; - -export function cloudSurveyPopupConfigFeed( - client: SurveyPopupConfigClient, - accessToken: (() => Promise) | undefined, -): SurveyPopupConfigFeed { - return new SurveyPopupConfigFeed({ - peek: () => peekSurveyPopupConfig(client), - isFresh: () => isSurveyPopupConfigFresh(client), - region: () => client.region(), - refresh: - accessToken === undefined - ? undefined - : async () => { - const token = await accessToken(); - await getSurveyPopupConfig(client, { accessToken: token }); - }, - }); +import { DEFAULT_SURVEY_POPUP_PAYLOAD, type SurveyPopupPayload } from '../common/survey-popup-config'; +import type { RatingConfigFeed } from './engine'; + +export function localSurveyPopupConfigFeed( + payload: SurveyPopupPayload = DEFAULT_SURVEY_POPUP_PAYLOAD, +): RatingConfigFeed { + return { + readyForEvaluation: () => true, + payload: () => payload, + }; } diff --git a/packages/product/test/client-configs.test.ts b/packages/product/test/client-configs.test.ts deleted file mode 100644 index 7c79280d7..000000000 --- a/packages/product/test/client-configs.test.ts +++ /dev/null @@ -1,494 +0,0 @@ -import { mkdtemp, readFile, readdir, rm, writeFile } from 'node:fs/promises'; -import { tmpdir } from 'node:os'; -import { join } from 'node:path'; - -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; - -import type { PythinkerRegion } from '@pymodel/pythinker-code-oauth'; -import { z } from 'zod'; - -import { ClientConfigClient } from '#/client-configs/node/client-configs'; - -let region: PythinkerRegion = 'mainland-cn'; -const CUSTOM_BASE_URL = 'https://api.example.com/coding/v1'; -let baseUrlOverride: string | undefined = CUSTOM_BASE_URL; -let cacheDir: string | undefined; - -const client = new ClientConfigClient({ - region: () => region, - baseUrlOverride: () => baseUrlOverride, - cacheDir: () => cacheDir, -}); - -const configSchema = z.object({ - version: z.literal(1), - config: z.record(z.string(), z.object({ min_tokens_to_hint: z.number(), cache_duration: z.number() })), -}); - -const CONFIG = { - version: 1, - config: { k3: { min_tokens_to_hint: 200000, cache_duration: 600 } }, -}; - -const ENVELOPE = { name: 'estimated_cache_duration', config: CONFIG }; - -function jsonResponse(body: unknown, status = 200): Response { - return new Response(JSON.stringify(body), { - status, - headers: { 'Content-Type': 'application/json' }, - }); -} - -afterEach(() => { - client.reset(); - region = 'mainland-cn'; - baseUrlOverride = CUSTOM_BASE_URL; - cacheDir = undefined; -}); - -describe('fetchClientConfig', () => { - it('POSTs the config name and unwraps the envelope', async () => { - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - - const result = await client.fetch('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - }); - - expect(result).toEqual(CONFIG); - expect(fetchImpl).toHaveBeenCalledWith( - expect.stringContaining('/client_configs'), - expect.objectContaining({ - method: 'POST', - body: JSON.stringify({ name: 'estimated_cache_duration' }), - }), - ); - }); - - it('sends the bearer token when provided, anonymous otherwise', async () => { - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - - await client.fetch('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - accessToken: 'tok', - }); - expect(fetchImpl).toHaveBeenCalledWith( - expect.any(String), - expect.objectContaining({ - headers: expect.objectContaining({ authorization: 'Bearer tok' }), - }), - ); - - await client.fetch('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - }); - expect(fetchImpl).toHaveBeenLastCalledWith( - expect.any(String), - expect.objectContaining({ - headers: expect.not.objectContaining({ authorization: expect.anything() }), - }), - ); - }); - - it('returns undefined on non-OK responses', async () => { - const fetchImpl = vi.fn(async () => jsonResponse('no', 503)); - - await expect( - client.fetch('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - }), - ).resolves.toBeUndefined(); - }); - - it('returns undefined when the payload fails the caller schema', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ name: 'estimated_cache_duration', config: { version: 2, config: {} } }), - ); - - await expect( - client.fetch('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - }), - ).resolves.toBeUndefined(); - }); - - it('returns undefined when the envelope name does not match', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ name: 'some_other_config', config: CONFIG }), - ); - - await expect( - client.fetch('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - }), - ).resolves.toBeUndefined(); - }); - - it('returns undefined when fetch throws', async () => { - const fetchImpl = vi.fn(async () => { - throw new Error('offline'); - }); - - await expect( - client.fetch('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - }), - ).resolves.toBeUndefined(); - }); - - it('POSTs to a custom path when provided', async () => { - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - - const result = await client.fetch('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - path: '/resource_configs', - }); - - expect(result).toEqual(CONFIG); - expect(fetchImpl).toHaveBeenCalledWith( - expect.stringContaining('/resource_configs'), - expect.objectContaining({ - method: 'POST', - body: JSON.stringify({ name: 'estimated_cache_duration' }), - }), - ); - }); -}); - -describe('getClientConfig', () => { - it('serves the in-process cache within a day', async () => { - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - const now = Date.now(); - - const first = await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - now, - cacheFile: null, - }); - const second = await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - now: now + 60_000, - cacheFile: null, - }); - - expect(first).toEqual(CONFIG); - expect(second).toEqual(CONFIG); - expect(fetchImpl).toHaveBeenCalledTimes(1); - }); - - it('refetches when the cache is older than a day', async () => { - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - const now = Date.now(); - - await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - now, - cacheFile: null, - }); - const result = await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - now: now + 25 * 60 * 60 * 1000, - cacheFile: null, - }); - - expect(result).toEqual(CONFIG); - expect(fetchImpl).toHaveBeenCalledTimes(2); - }); - - it('caches each config name independently', async () => { - const other = { name: 'other_config', config: CONFIG }; - const fetchImpl = vi.fn(async (url: unknown, init?: { body?: string }) => - jsonResponse(init?.body?.includes('other') ? other : ENVELOPE), - ); - const now = Date.now(); - - await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - now, - cacheFile: null, - }); - const second = await client.get('other_config', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - now, - cacheFile: null, - }); - - expect(second).toEqual(CONFIG); - expect(fetchImpl).toHaveBeenCalledTimes(2); - }); - - it('resolves to undefined when the refetch fails', async () => { - const fetchImpl = vi.fn(async () => jsonResponse('no', 500)); - - await expect( - client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }), - ).resolves.toBeUndefined(); - }); - - it('partitions the cache by path', async () => { - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - const now = Date.now(); - - await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - now, - cacheFile: null, - }); - const second = await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - now, - cacheFile: null, - path: '/resource_configs', - }); - - expect(second).toEqual(CONFIG); - expect(fetchImpl).toHaveBeenCalledTimes(2); - }); - - it('peeks a custom-path entry only when the path matches', async () => { - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - const now = Date.now(); - await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - now, - cacheFile: null, - path: '/resource_configs', - }); - - expect(client.peek('estimated_cache_duration', configSchema, now, '/resource_configs')).toEqual(CONFIG); - expect(client.peek('estimated_cache_duration', configSchema, now)).toBeUndefined(); - }); -}); - -describe('peekClientConfig', () => { - it('returns the cached config only while fresh', async () => { - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - const now = Date.now(); - await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - now, - cacheFile: null, - }); - - expect(client.peek('estimated_cache_duration', configSchema, now + 60_000)).toEqual(CONFIG); - expect( - client.peek('estimated_cache_duration', configSchema, now + 25 * 60 * 60 * 1000), - ).toBeUndefined(); - }); - - it('returns undefined for a config that was never fetched', () => { - expect(client.peek('estimated_cache_duration', configSchema)).toBeUndefined(); - }); -}); - -describe('getClientConfig disk cache', () => { - let dir: string; - let file: string; - - beforeEach(async () => { - dir = await mkdtemp(join(tmpdir(), 'client-configs-')); - file = join(dir, 'estimated_cache_duration.json'); - }); - - afterEach(async () => { - await rm(dir, { recursive: true, force: true }); - }); - - it('serves a fresh disk entry without network and warms the in-process cache', async () => { - const now = Date.now(); - await writeFile(file, JSON.stringify({ version: 1, fetchedAt: now, config: CONFIG })); - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - - const result = await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - now: now + 60_000, - cacheFile: file, - }); - - expect(result).toEqual(CONFIG); - expect(fetchImpl).not.toHaveBeenCalled(); - expect(client.peek('estimated_cache_duration', configSchema, now + 60_000)).toEqual(CONFIG); - }); - - it('serves the disk entry after the in-process cache is dropped (restart)', async () => { - const now = Date.now(); - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - now, - cacheFile: file, - }); - - client.reset(); - const offline = vi.fn(async (): Promise => { - throw new Error('offline'); - }); - const result = await client.get('estimated_cache_duration', configSchema, { - fetchImpl: offline as typeof fetch, - now: now + 60_000, - cacheFile: file, - }); - - expect(result).toEqual(CONFIG); - expect(offline).not.toHaveBeenCalled(); - }); - - it('keeps the original fetch time when warming from disk (no TTL extension)', async () => { - const now = Date.now(); - await writeFile( - file, - JSON.stringify({ version: 1, fetchedAt: now - 23 * 60 * 60 * 1000, config: CONFIG }), - ); - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - now, - cacheFile: file, - }); - expect(client.peek('estimated_cache_duration', configSchema, now + 2 * 60 * 60 * 1000)).toBeUndefined(); - }); - - it('refetches and rewrites the file when the disk entry is stale', async () => { - const now = Date.now(); - await writeFile( - file, - JSON.stringify({ version: 1, fetchedAt: now - 25 * 60 * 60 * 1000, config: CONFIG }), - ); - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - - const result = await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - now, - cacheFile: file, - }); - - expect(result).toEqual(CONFIG); - expect(fetchImpl).toHaveBeenCalledTimes(1); - const onDisk = JSON.parse(await readFile(file, 'utf-8')) as { fetchedAt: number }; - expect(onDisk.fetchedAt).toBe(now); - }); - - it('treats a malformed cache file as missing', async () => { - await writeFile(file, 'not json'); - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - - const result = await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: file, - }); - - expect(result).toEqual(CONFIG); - expect(fetchImpl).toHaveBeenCalledTimes(1); - }); - - it('ignores a disk entry whose payload fails the caller schema', async () => { - await writeFile( - file, - JSON.stringify({ version: 1, fetchedAt: Date.now(), config: { version: 2 } }), - ); - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - - const result = await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: file, - }); - - expect(result).toEqual(CONFIG); - expect(fetchImpl).toHaveBeenCalledTimes(1); - }); - - it('still resolves when the cache file cannot be written', async () => { - const blocker = join(dir, 'blocker'); - await writeFile(blocker, 'x'); - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - - const result = await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: join(blocker, 'nested', 'config.json'), - }); - - expect(result).toEqual(CONFIG); - }); - - it('writes paths that sanitize alike to distinct cache files', async () => { - const home = await mkdtemp(join(tmpdir(), 'client-configs-home-')); - cacheDir = join(home, 'cache', 'client-configs'); - try { - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - const now = Date.now(); - - await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - now, - path: '/client_configs', - }); - await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - now, - path: '/client:configs', - }); - - const files = await readdir(join(home, 'cache', 'client-configs')); - expect(files.length).toBe(2); - } finally { - await rm(home, { recursive: true, force: true }); - } - }); -}); - -describe('region awareness', () => { - beforeEach(() => { - region = 'global'; - }); - - it('fetches from the custom base and partitions the cache by region', async () => { - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - - const data = await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(data).toEqual(CONFIG); - expect(fetchImpl).toHaveBeenCalledWith( - expect.stringContaining('https://api.example.com/coding/v1/client_configs'), - expect.anything(), - ); - expect(client.peek('estimated_cache_duration', configSchema)).toEqual(CONFIG); - region = 'mainland-cn'; - expect(client.peek('estimated_cache_duration', configSchema)).toBeUndefined(); - }); - - it.each([undefined, '', ' '])( - 'makes no request without a custom base (%j)', - async (override) => { - baseUrlOverride = override; - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - - const data = await client.get('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - accessToken: 'secret-token', - }); - - expect(data).toBeUndefined(); - expect(fetchImpl).not.toHaveBeenCalled(); - }, - ); - - it('uses the CUSTOM_API_BASE_URL value as the endpoint base', async () => { - baseUrlOverride = 'https://env-api.example.com'; - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - - await client.fetch('estimated_cache_duration', configSchema, { - fetchImpl: fetchImpl as typeof fetch, - }); - - expect(fetchImpl).toHaveBeenCalledWith( - expect.stringContaining('https://env-api.example.com/client_configs'), - expect.anything(), - ); - }); -}); diff --git a/packages/product/test/entry-points.test.ts b/packages/product/test/entry-points.test.ts index 354f23104..723039036 100644 --- a/packages/product/test/entry-points.test.ts +++ b/packages/product/test/entry-points.test.ts @@ -35,7 +35,6 @@ function productDependencies(program: ts.Program): string[] { describe('product entry points', () => { it.each([ - ['client-configs/node', 'client-configs/node/index.ts'], ['session-rating', 'session-rating/common/index.ts'], ['session-rating/node', 'session-rating/node/index.ts'], ])('resolves the %s public entry', (subpath, source) => { diff --git a/packages/product/test/rating-reports.test.ts b/packages/product/test/rating-reports.test.ts index a67dfe3ef..93dd08d39 100644 --- a/packages/product/test/rating-reports.test.ts +++ b/packages/product/test/rating-reports.test.ts @@ -15,7 +15,6 @@ function fixture() { const ledger = new SessionRatingLedger({ telemetryDisabled: () => disabled, now: () => now }); const environment: RatingEnvironment = { sessionId: 'session-a', currentModel: 'example-model', - model: { modelId: undefined, baseUrl: undefined }, cumulativeTokens: 100, contextTokens: 50, permissionMode: 'manual', thinkingEffort: 'high', busy: false, telemetryDisabled: false, ratingDisabled: false, historyUserTurnCount: 4, }; diff --git a/packages/product/test/session-rating.test.ts b/packages/product/test/session-rating.test.ts index b72f326c4..f467acc3f 100644 --- a/packages/product/test/session-rating.test.ts +++ b/packages/product/test/session-rating.test.ts @@ -14,13 +14,10 @@ import { DEFAULT_SURVEY_POPUP_PAYLOAD, type SurveyPopupPayload, } from '#/session-rating/common/survey-popup-config'; -import { - SurveyPopupConfigFeed, -} from '#/session-rating/node/survey-popup-config-feed'; + const USER_ORIGIN: PromptOrigin = { kind: 'user' }; const SYSTEM_ORIGIN: PromptOrigin = { kind: 'system_trigger', name: 'background-task' }; -const MANAGED_BASE_URL = 'https://api.example.com/v1/v1'; const GATEWAY_BASE_URL = 'https://gateway.example.com/coding/v1'; const DIGIT_RESPONSES: Record = { '1': 'bad', @@ -85,9 +82,6 @@ interface HarnessOptions { readonly feedbackSurveyDisabled?: () => boolean; readonly readGlobalLastShown?: () => number | undefined; readonly writeGlobalLastShown?: (wallTime: number) => void; - readonly configFresh?: () => boolean; - readonly configRegion?: () => string; - readonly refreshConfig?: () => unknown; readonly manualEvaluation?: boolean; } @@ -138,7 +132,6 @@ function createHarness(options: HarnessOptions = {}): Harness { const env: MutableEnvironment = { sessionId: '', currentModel: 'k2', - model: { modelId: undefined, baseUrl: undefined }, cumulativeTokens: 1234, contextTokens: 640, permissionMode: 'manual', @@ -149,13 +142,10 @@ function createHarness(options: HarnessOptions = {}): Harness { historyUserTurnCount: 0, resumedAgents: undefined, }; - const config = new SurveyPopupConfigFeed({ - peek: options.config ?? (() => DEFAULT_SURVEY_POPUP_PAYLOAD), - isFresh: options.configFresh ?? (() => true), - region: options.configRegion ?? (() => 'mainland-cn'), - refresh: options.refreshConfig, - now: () => clock.mono, - }); + const config = { + readyForEvaluation: () => true, + payload: options.config ?? (() => DEFAULT_SURVEY_POPUP_PAYLOAD), + }; const create = (): SessionRatingMount => mountSessionRating({ environment: () => ({ @@ -273,17 +263,6 @@ function createHarness(options: HarnessOptions = {}): Harness { return harness; } -function useModel( - harness: Harness, - options: { model?: string; entryBaseUrl?: string; providerBaseUrl?: string } = {}, -): void { - harness.env.currentModel = 'main'; - harness.env.model = { - modelId: options.model ?? 'k3', - baseUrl: options.entryBaseUrl ?? options.providerBaseUrl ?? MANAGED_BASE_URL, - }; -} - const HARNESS_ENVIRONMENT = { current_model: 'k2', user_turn_count: 5, @@ -299,7 +278,6 @@ const HARNESS_ENVIRONMENT = { const DEFAULT_SNAPSHOT = { config_probability: 0.005, - config_on_for_models: '*', config_min_time_before_feedback_ms: 600_000, config_min_user_turns_before_feedback: 5, config_min_time_between_feedback_ms: 3_600_000, @@ -1055,404 +1033,7 @@ describe('session rating long-context arm', () => { }); }); -describe('session rating kfc model gate', () => { - const savedBaseUrl = process.env['CUSTOM_API_BASE_URL']; - - beforeEach(() => { - process.env['CUSTOM_API_BASE_URL'] = MANAGED_BASE_URL; - }); - - afterEach(() => { - if (savedBaseUrl === undefined) { - delete process.env['CUSTOM_API_BASE_URL']; - } else { - process.env['CUSTOM_API_BASE_URL'] = savedBaseUrl; - } - }); - - - function trackedKfcModelId(harness: Harness): unknown { - const call = harness.track.mock.calls[0]; - return call === undefined ? undefined : (call[1] as Record)['pfc_model_id']; - } - - it('opens on "*" for a kfc user and reports the real model id alongside the alias', async () => { - const harness = createHarness(); - useModel(harness); - await harness.flush(); - await harness.appear(); - - expect(harness.visible()).toBe(true); - expect(harness.track).toHaveBeenCalledWith( - 'feedback_survey', - expect.objectContaining({ - event_type: 'appeared', - current_model: 'main', - pfc_model_id: 'k3', - }), - ); - }); - - it('opens for a kfc user when the real id is listed', async () => { - const harness = createHarness({ - config: () => ({ ...DEFAULT_SURVEY_POPUP_PAYLOAD, on_for_models: ['k2', 'k3'] }), - }); - useModel(harness); - await harness.flush(); - await harness.appear(); - - expect(harness.visible()).toBe(true); - expect(harness.track).toHaveBeenCalledWith( - 'feedback_survey', - expect.objectContaining({ event_type: 'appeared', pfc_model_id: 'k3' }), - ); - }); - - it('stays closed for a kfc user whose real id is not listed', async () => { - const harness = createHarness({ - config: () => ({ ...DEFAULT_SURVEY_POPUP_PAYLOAD, on_for_models: ['k3-256k'] }), - }); - useModel(harness); - await harness.flush(); - await harness.appear(); - - expect(harness.visible()).toBe(false); - expect(harness.track).not.toHaveBeenCalled(); - }); - - it('opens on "*" for a self-hosted user but omits the kfc model id', async () => { - const harness = createHarness(); - useModel(harness, { providerBaseUrl: GATEWAY_BASE_URL }); - await harness.flush(); - await harness.appear(); - - expect(harness.visible()).toBe(true); - expect(harness.track).toHaveBeenCalledWith( - 'feedback_survey', - expect.objectContaining({ event_type: 'appeared', current_model: 'main' }), - ); - expect(trackedKfcModelId(harness)).toBeUndefined(); - }); - - it('stays closed for a self-hosted model that happens to share the listed id', async () => { - const harness = createHarness({ - config: () => ({ ...DEFAULT_SURVEY_POPUP_PAYLOAD, on_for_models: ['k3'] }), - }); - useModel(harness, { providerBaseUrl: GATEWAY_BASE_URL }); - await harness.flush(); - await harness.appear(); - - expect(harness.visible()).toBe(false); - expect(harness.track).not.toHaveBeenCalled(); - }); - - it('opens on "*" with a dangling alias and omits the kfc model id', async () => { - const harness = createHarness(); - await harness.flush(); - await harness.appear(); - - expect(harness.visible()).toBe(true); - expect(harness.track).toHaveBeenCalledWith( - 'feedback_survey', - expect.objectContaining({ event_type: 'appeared', current_model: 'k2' }), - ); - expect(trackedKfcModelId(harness)).toBeUndefined(); - }); - - it('stays closed on a concrete list when the alias cannot be resolved', async () => { - const harness = createHarness({ - config: () => ({ ...DEFAULT_SURVEY_POPUP_PAYLOAD, on_for_models: ['k2'] }), - }); - await harness.flush(); - await harness.appear(); - - expect(harness.visible()).toBe(false); - expect(harness.track).not.toHaveBeenCalled(); - }); - - it('reports the kfc model id on long-context events as well', async () => { - const harness = createHarness(); - useModel(harness); - harness.env.contextTokens = 250_000; - await harness.flush(); - - harness.host.turnStarted(true); - harness.host.turnEnded(); - await harness.elapse(2000); - - expect(harness.track).toHaveBeenCalledWith( - 'long_context_survey', - expect.objectContaining({ - event_type: 'appeared', - current_model: 'main', - pfc_model_id: 'k3', - }), - ); - }); - - -}); - -describe('session rating model overrides', () => { - const savedBaseUrl = process.env['CUSTOM_API_BASE_URL']; - - beforeEach(() => { - process.env['CUSTOM_API_BASE_URL'] = MANAGED_BASE_URL; - }); - - afterEach(() => { - if (savedBaseUrl === undefined) { - delete process.env['CUSTOM_API_BASE_URL']; - } else { - process.env['CUSTOM_API_BASE_URL'] = savedBaseUrl; - } - }); - - - it('opens for the targeted model under its override probability when the base samples out', async () => { - const harness = createHarness({ - config: () => ({ - ...DEFAULT_SURVEY_POPUP_PAYLOAD, - probability: 0, - model_overrides: { k3: { probability: 1 } }, - }), - }); - useModel(harness); - await harness.flush(); - await harness.appear(); - - expect(harness.track).toHaveBeenCalledWith( - 'feedback_survey', - expect.objectContaining({ event_type: 'appeared', config_probability: 1 }), - ); - }); - - it('keeps the base policy for models without an override entry', async () => { - const harness = createHarness({ - config: () => ({ - ...DEFAULT_SURVEY_POPUP_PAYLOAD, - probability: 0, - model_overrides: { k3: { probability: 1 } }, - }), - }); - useModel(harness, { model: 'other-model' }); - await harness.flush(); - await harness.appear(); - - expect(harness.visible()).toBe(false); - expect(harness.track).not.toHaveBeenCalled(); - }); - - it('applies the override on the next evaluation after the model switches mid-session', async () => { - const harness = createHarness({ - config: () => ({ - ...DEFAULT_SURVEY_POPUP_PAYLOAD, - probability: 0, - model_overrides: { k3: { probability: 1 } }, - }), - }); - await harness.flush(); - await harness.appear(); - expect(harness.visible()).toBe(false); - - useModel(harness); - harness.runTurns(1); - await harness.elapse(2000); - expect(harness.visible()).toBe(true); - expect(harness.track).toHaveBeenCalledWith( - 'feedback_survey', - expect.objectContaining({ event_type: 'appeared', pfc_model_id: 'k3' }), - ); - }); - - it('honors the override global cooldown against the shared persisted clock', async () => { - const harness = createHarness({ - readGlobalLastShown: () => 1_700_000_000_000 - 1000, - config: () => ({ - ...DEFAULT_SURVEY_POPUP_PAYLOAD, - model_overrides: { k3: { min_time_between_global_feedback_ms: 0 } }, - }), - }); - useModel(harness); - await harness.flush(); - await harness.appear(); - - expect(harness.visible()).toBe(true); - expect(harness.track).toHaveBeenCalledWith( - 'feedback_survey', - expect.objectContaining({ - event_type: 'appeared', - config_min_time_between_global_feedback_ms: 0, - }), - ); - }); - - it('keeps on_for_models as the gate even when an override entry matches', async () => { - const harness = createHarness({ - config: () => ({ - ...DEFAULT_SURVEY_POPUP_PAYLOAD, - on_for_models: ['someone-else'], - model_overrides: { k3: { probability: 1 } }, - }), - }); - useModel(harness); - await harness.flush(); - await harness.appear(); - - expect(harness.visible()).toBe(false); - expect(harness.track).not.toHaveBeenCalled(); - }); - - it('targets the long-context arm per model through the override', async () => { - const targeted = createHarness({ - config: () => ({ - ...DEFAULT_SURVEY_POPUP_PAYLOAD, - model_overrides: { k3: { long_context_probability: 0 } }, - }), - }); - useModel(targeted); - targeted.env.contextTokens = 250_000; - await targeted.flush(); - - targeted.host.turnStarted(true); - targeted.host.turnEnded(); - await targeted.elapse(2000); - expect(targeted.visible()).toBe(false); - expect(targeted.track).not.toHaveBeenCalled(); - - const untargeted = createHarness({ - config: () => ({ - ...DEFAULT_SURVEY_POPUP_PAYLOAD, - model_overrides: { k3: { long_context_probability: 0 } }, - }), - }); - untargeted.env.contextTokens = 250_000; - await untargeted.flush(); - - untargeted.host.turnStarted(true); - untargeted.host.turnEnded(); - await untargeted.elapse(2000); - expect(untargeted.track).toHaveBeenCalledWith( - 'long_context_survey', - expect.objectContaining({ event_type: 'appeared' }), - ); - }); - - it('treats the long-context roll as consumed per model across a mid-session switch', async () => { - const harness = createHarness({ - config: () => ({ - ...DEFAULT_SURVEY_POPUP_PAYLOAD, - model_overrides: { k3: { long_context_probability: 0 } }, - }), - }); - useModel(harness); - harness.env.contextTokens = 250_000; - await harness.flush(); - - harness.host.turnStarted(true); - harness.host.turnEnded(); - await harness.elapse(2000); - expect(harness.visible()).toBe(false); - useModel(harness, { model: 'other-model' }); - harness.host.turnStarted(true); - harness.host.turnEnded(); - await harness.elapse(2000); - expect(harness.track).toHaveBeenCalledWith( - 'long_context_survey', - expect.objectContaining({ event_type: 'appeared', pfc_model_id: 'other-model' }), - ); - - useModel(harness); - harness.host.turnStarted(true); - harness.host.turnEnded(); - await harness.elapse(2000); - expect( - harness.track.mock.calls.filter( - (call) => (call[1] as { event_type?: string }).event_type === 'appeared', - ), - ).toHaveLength(1); - }); - - it('closes the long-context arm for the rest of the mount after the first appearance', async () => { - const harness = createHarness({ - config: () => ({ - ...DEFAULT_SURVEY_POPUP_PAYLOAD, - model_overrides: { k3: { long_context_probability: 1 } }, - }), - }); - useModel(harness); - harness.env.contextTokens = 250_000; - await harness.flush(); - - const appeared = () => - harness.track.mock.calls.filter( - (call) => (call[1] as { event_type?: string }).event_type === 'appeared', - ).length; - - harness.host.turnStarted(true); - harness.host.turnEnded(); - await harness.elapse(2000); - expect(appeared()).toBe(1); - harness.clock.mono += 600; - harness.host.escape(); - - useModel(harness, { model: 'other-model' }); - harness.host.turnStarted(true); - harness.host.turnEnded(); - await harness.elapse(2000); - expect(appeared()).toBe(1); - - useModel(harness); - harness.host.turnStarted(true); - harness.host.turnEnded(); - await harness.elapse(2000); - expect(appeared()).toBe(1); - }); - - it('honors the override global cooldown on the long-context arm', async () => { - const harness = createHarness({ - readGlobalLastShown: () => 1_700_000_000_000 - 1000, - config: () => ({ - ...DEFAULT_SURVEY_POPUP_PAYLOAD, - model_overrides: { k3: { min_time_between_global_feedback_ms: 0 } }, - }), - }); - useModel(harness); - harness.env.contextTokens = 250_000; - await harness.flush(); - - harness.host.turnStarted(true); - harness.host.turnEnded(); - await harness.elapse(2000); - expect(harness.track).toHaveBeenCalledWith( - 'long_context_survey', - expect.objectContaining({ event_type: 'appeared' }), - ); - }); - - it('reports the merged effective config in the policy snapshot', async () => { - const harness = createHarness({ - config: () => ({ - ...DEFAULT_SURVEY_POPUP_PAYLOAD, - model_overrides: { k3: { probability: 0.5, min_user_turns_before_feedback: 1 } }, - }), - }); - useModel(harness); - await harness.flush(); - await harness.appear(); - - expect(harness.track).toHaveBeenCalledWith( - 'feedback_survey', - expect.objectContaining({ - event_type: 'appeared', - config_probability: 0.5, - config_min_user_turns_before_feedback: 1, - config_min_time_before_feedback_ms: 600_000, - }), - ); - }); -}); describe('session rating event payload', () => { it('reports the live session statistics and the current model', async () => { @@ -1523,201 +1104,16 @@ describe('session rating event payload', () => { }); - it('keeps deferring while a region-change refresh is still in flight', async () => { - let region = 'region-a'; - let settle!: () => void; - let first = true; - const harness = createHarness({ - configRegion: () => region, - refreshConfig: () => { - if (first) { - first = false; - return undefined; - } - return new Promise((resolve) => { - settle = resolve; - }); - }, - }); - await harness.flush(); - harness.clock.mono += 600_000; - harness.runTurns(4); - - region = 'region-b'; - harness.runTurns(1); - await harness.elapse(2000); - expect(harness.visible()).toBe(false); - - harness.runTurns(1); - await harness.elapse(2000); - expect(harness.visible()).toBe(false); - settle(); - await harness.flush(); - harness.runTurns(1); - await harness.elapse(2000); - expect(harness.visible()).toBe(true); - }); - it('defers evaluation until the startup refresh settles', async () => { - let settle!: () => void; - const harness = createHarness({ - refreshConfig: () => - new Promise((resolve) => { - settle = resolve; - }), - }); - await harness.flush(); - harness.clock.mono += 600_000; - harness.runTurns(5); - await harness.elapse(2000); - expect(harness.visible()).toBe(false); - expect(harness.track).not.toHaveBeenCalled(); - settle(); - await harness.flush(); - harness.runTurns(1); - await harness.elapse(2000); - expect(harness.visible()).toBe(true); - }); - it('refreshes and defers when the config cache has gone stale', async () => { - let fresh = true; - const refreshConfig = vi.fn(() => { - fresh = true; - }); - const harness = createHarness({ configFresh: () => fresh, refreshConfig }); - await harness.flush(); - harness.clock.mono += 600_000; - harness.runTurns(4); - expect(harness.visible()).toBe(false); - fresh = false; - harness.clock.mono += 3_600_000; - harness.runTurns(1); - await harness.elapse(2000); - expect(refreshConfig).toHaveBeenCalledTimes(2); - expect(harness.visible()).toBe(false); - await harness.flush(); - harness.runTurns(1); - await harness.elapse(2000); - expect(harness.visible()).toBe(true); - }); - it('defers the evaluation that triggers a refresh so a stale policy cannot open the survey', async () => { - let region = 'region-a'; - let config = { ...DEFAULT_SURVEY_POPUP_PAYLOAD, probability: 1 }; - const refreshConfig = vi.fn(() => { - config = { ...config, probability: 0 }; - }); - const harness = createHarness({ - configRegion: () => region, - config: () => config, - refreshConfig, - random: () => 0.9, - }); - await harness.flush(); - harness.clock.mono += 600_000; - harness.runTurns(4); - - region = 'region-b'; - harness.runTurns(1); - await harness.elapse(2000); - expect(refreshConfig).toHaveBeenCalledTimes(2); - expect(harness.visible()).toBe(false); - expect(harness.track).not.toHaveBeenCalled(); - - harness.runTurns(1); - await harness.elapse(2000); - expect(harness.visible()).toBe(false); - expect(harness.track).not.toHaveBeenCalled(); - }); - - it('evaluates with the refreshed policy on the next turn after the deferred evaluation', async () => { - let region = 'region-a'; - let config = { ...DEFAULT_SURVEY_POPUP_PAYLOAD, probability: 1, on_for_models: ['other-model'] }; - const refreshConfig = vi.fn(() => { - config = { ...config, on_for_models: ['*'] }; - }); - const harness = createHarness({ - configRegion: () => region, - config: () => config, - refreshConfig, - }); - await harness.flush(); - harness.clock.mono += 600_000; - harness.runTurns(4); - - region = 'region-b'; - harness.runTurns(1); - await harness.elapse(2000); - expect(harness.visible()).toBe(false); - - await harness.flush(); - harness.runTurns(1); - await harness.elapse(2000); - expect(harness.visible()).toBe(true); - expect(harness.track).toHaveBeenCalledWith( - 'feedback_survey', - expect.objectContaining({ event_type: 'appeared', config_on_for_models: '*' }), - ); - }); - - it('re-refreshes the cloud config when the region changes', async () => { - let region = 'region-a'; - const refreshConfig = vi.fn(); - const harness = createHarness({ refreshConfig, configRegion: () => region }); - await harness.flush(); - expect(refreshConfig).toHaveBeenCalledTimes(1); - - region = 'region-b'; - harness.runTurns(1); - await harness.elapse(2000); - expect(refreshConfig).toHaveBeenCalledTimes(2); - }); - - it('re-refreshes the cloud config once the previous refresh is over an hour old', async () => { - const refreshConfig = vi.fn(); - const harness = createHarness({ refreshConfig }); - await harness.flush(); - expect(refreshConfig).toHaveBeenCalledTimes(1); - - harness.clock.mono += 3_597_000; - harness.runTurns(1); - await harness.elapse(2000); - expect(refreshConfig).toHaveBeenCalledTimes(1); - - harness.clock.mono += 2_000; - harness.runTurns(1); - await harness.elapse(2000); - expect(refreshConfig).toHaveBeenCalledTimes(2); - }); - - it('applies the cloud model gate at evaluation time', async () => { - const harness = createHarness({ - config: () => ({ ...DEFAULT_SURVEY_POPUP_PAYLOAD, on_for_models: ['other-model'] }), - }); - await harness.flush(); - await harness.appear(); - expect(harness.visible()).toBe(false); - }); }); describe('session rating appearance snapshot', () => { - const savedBaseUrl = process.env['CUSTOM_API_BASE_URL']; - - beforeEach(() => { - process.env['CUSTOM_API_BASE_URL'] = MANAGED_BASE_URL; - }); - - afterEach(() => { - if (savedBaseUrl === undefined) { - delete process.env['CUSTOM_API_BASE_URL']; - } else { - process.env['CUSTOM_API_BASE_URL'] = savedBaseUrl; - } - }); @@ -1728,29 +1124,6 @@ describe('session rating appearance snapshot', () => { } } - it('reports the triggering turn trace id on every lifecycle event', async () => { - const harness = createHarness(); - useModel(harness); - await harness.flush(); - harness.clock.mono += 600_000; - runUserTurns(harness, ['trace-1', 'trace-2', 'trace-3', 'trace-4', 'trace-final']); - await harness.elapse(2000); - harness.clock.mono += 600; - - expect(trackedEvent(harness, 'appeared')).toMatchObject({ - pfc_model_id: 'k3', - pfc_trace_id: 'trace-final', - }); - - harness.host.choose('3'); - await harness.elapse(3000); - - expect(trackedEvent(harness, 'responded')).toMatchObject({ - response: 'good', - pfc_model_id: 'k3', - pfc_trace_id: 'trace-final', - }); - }); it('keeps the environment frozen at open across the lifecycle events', async () => { const harness = createHarness(); @@ -1777,72 +1150,10 @@ describe('session rating appearance snapshot', () => { } }); - it('omits pfc_trace_id for a non-kfc model even when a trace id is pending', async () => { - const harness = createHarness(); - useModel(harness, { providerBaseUrl: GATEWAY_BASE_URL }); - await harness.flush(); - harness.clock.mono += 600_000; - runUserTurns(harness, [undefined, undefined, undefined, undefined, 'trace-gateway']); - await harness.elapse(2000); - const appeared = trackedEvent(harness, 'appeared'); - expect(appeared['pfc_model_id']).toBeUndefined(); - expect(appeared['pfc_trace_id']).toBeUndefined(); - }); - it('omits pfc_trace_id when the triggering turn carried no trace id', async () => { - const harness = createHarness(); - useModel(harness); - await harness.flush(); - await harness.appear(); - const appeared = trackedEvent(harness, 'appeared'); - expect(appeared['pfc_model_id']).toBe('k3'); - expect(appeared['pfc_trace_id']).toBeUndefined(); - }); - it('carries pfc_trace_id under the long_context_survey name', async () => { - const harness = createHarness(); - useModel(harness); - harness.env.contextTokens = 250_000; - await harness.flush(); - harness.host.turnStarted(true); - harness.host.turnEnded('trace-long-context'); - await harness.elapse(2000); - - expect(trackedEvent(harness, 'appeared')).toMatchObject({ - pfc_model_id: 'k3', - pfc_trace_id: 'trace-long-context', - }); - expect(harness.track).toHaveBeenCalledWith( - 'long_context_survey', - expect.objectContaining({ event_type: 'appeared' }), - ); - }); - - it('keeps the pending trace id across an interleaved non-user turn', async () => { - const harness = createHarness(); - useModel(harness); - await harness.flush(); - harness.clock.mono += 600_000; - runUserTurns(harness, [undefined, undefined, undefined, undefined, 'trace-user']); - harness.host.turnStarted(false); - harness.host.turnEnded(undefined); - await harness.elapse(2000); - - expect(trackedEvent(harness, 'appeared')).toMatchObject({ pfc_trace_id: 'trace-user' }); - }); - - it('drops the pending trace id once a new user turn starts', async () => { - const harness = createHarness(); - useModel(harness); - await harness.flush(); - harness.clock.mono += 600_000; - runUserTurns(harness, [undefined, undefined, undefined, 'trace-stale', undefined]); - await harness.elapse(2000); - - expect(trackedEvent(harness, 'appeared')['pfc_trace_id']).toBeUndefined(); - }); it('attributes lifecycle events to the snapshot session after the session is torn down', async () => { const harness = createHarness(); diff --git a/packages/product/test/survey-policy.test.ts b/packages/product/test/survey-policy.test.ts index 07c81e064..68b0699a0 100644 --- a/packages/product/test/survey-policy.test.ts +++ b/packages/product/test/survey-policy.test.ts @@ -25,7 +25,6 @@ function passingSession(overrides: Partial = {}): SessionAr turnInProgress: false, feedbackSurveyDisabled: false, telemetryDisabled: false, - kfcModelId: 'k3', mountedForMs: 600_000, userTurnsSinceMount: 5, msSinceLastShown: undefined, @@ -43,7 +42,6 @@ function passingLongContext( turnInProgress: false, feedbackSurveyDisabled: false, telemetryDisabled: false, - kfcModelId: 'k3', cumulativeTokens: 0, virtualContextTokens: 0, mountRollConsumed: false, @@ -103,37 +101,6 @@ describe('evaluateSurveyGate (session arm)', () => { ); }); - describe('model gate', () => { - it('opens for everything with "*", even without a resolved kfc id', () => { - expect(evaluateSurveyGate(gate({ kfcModelId: 'anything' })).show).toBe(true); - expect(evaluateSurveyGate(gate({ kfcModelId: undefined })).show).toBe(true); - }); - - it('closes both arms with an empty list', () => { - expect(evaluateSurveyGate(gate({}, { ...CONFIG, on_for_models: [] }))).toEqual({ - show: false, - reason: 'model-gated', - }); - }); - - it('requires a resolved kfc id that exactly matches otherwise', () => { - const config = { ...CONFIG, on_for_models: ['k3'] }; - expect(evaluateSurveyGate(gate({ kfcModelId: 'k3' }, config)).show).toBe(true); - expect(evaluateSurveyGate(gate({ kfcModelId: 'k2' }, config))).toEqual({ - show: false, - reason: 'model-gated', - }); - expect(evaluateSurveyGate(gate({ kfcModelId: undefined }, config))).toEqual({ - show: false, - reason: 'model-gated', - }); - expect(evaluateSurveyGate(gate({ kfcModelId: 'k3-fictional' }, config))).toEqual({ - show: false, - reason: 'model-gated', - }); - }); - }); - describe('in-session pacing', () => { const shown = { msSinceLastShown: 3_600_000, @@ -214,16 +181,6 @@ describe('evaluateLongContextArm', () => { }); }); - it('applies the model gate before the threshold', () => { - expect(arm({}, { ...CONFIG, on_for_models: [], long_context_survey_threshold: 0 })).toEqual({ - show: false, - reason: 'model-gated', - }); - expect(arm({ kfcModelId: undefined }, { ...CONFIG, on_for_models: ['k3'] })).toEqual({ - show: false, - reason: 'model-gated', - }); - }); it('shows at the counter boundary (counter == threshold)', () => { expect(arm({ virtualContextTokens: 200_000 })).toEqual({ @@ -445,8 +402,6 @@ describe('buildSurveyEventProperties', () => { const ENVIRONMENT: SurveyEventEnvironmentFields = { current_model: 'k2', - pfc_model_id: 'k3', - pfc_trace_id: 'trace-1', user_turn_count: 9, cumulative_tokens: 123, virtual_context_tokens: 45, @@ -479,7 +434,6 @@ describe('buildSurveyEventProperties', () => { response: 'fine', ...ENVIRONMENT, config_probability: 0.005, - config_on_for_models: '*', config_min_time_before_feedback_ms: 600_000, config_min_user_turns_before_feedback: 5, config_min_time_between_feedback_ms: 3_600_000, @@ -512,10 +466,9 @@ describe('buildSurveyEventProperties', () => { appearance_index: 1, }, ENVIRONMENT, - { ...CONFIG, probability: 0.5, on_for_models: ['k3', 'k2'] }, + { ...CONFIG, probability: 0.5 }, ); expect(properties['config_probability']).toBe(0.5); - expect(properties['config_on_for_models']).toBe('k3,k2'); }); it('keeps every property a telemetry primitive so sanitize drops nothing', () => { @@ -527,7 +480,7 @@ describe('buildSurveyEventProperties', () => { response: 'bad', }, ENVIRONMENT, - { ...CONFIG, on_for_models: [] }, + CONFIG, ); for (const [key, value] of Object.entries(properties)) { const isPrimitive = @@ -538,6 +491,5 @@ describe('buildSurveyEventProperties', () => { typeof value === 'string'; expect(isPrimitive, `property ${key} is not a primitive`).toBe(true); } - expect(properties['config_on_for_models']).toBe(''); }); }); diff --git a/packages/product/test/survey-popup-config.test.ts b/packages/product/test/survey-popup-config.test.ts index 8efa0106e..ebb016c82 100644 --- a/packages/product/test/survey-popup-config.test.ts +++ b/packages/product/test/survey-popup-config.test.ts @@ -1,552 +1,12 @@ -import { mkdtemp, readFile, rm } from 'node:fs/promises'; -import { tmpdir } from 'node:os'; -import { join } from 'node:path'; +import { describe, expect, it } from 'vitest'; -import { afterEach, describe, expect, it, vi } from 'vitest'; +import { localSurveyPopupConfigFeed } from '#/session-rating/node/survey-popup-config-feed'; +import { DEFAULT_SURVEY_POPUP_PAYLOAD } from '#/session-rating/common/survey-popup-config'; -import { ClientConfigClient } from '#/client-configs/node/client-configs'; -import { - cloudSurveyPopupConfigFeed, - getSurveyPopupConfig, - peekSurveyPopupConfig, - resetSurveyPopupConfigCache, -} from '#/session-rating/node/survey-popup-config-feed'; -import { - DEFAULT_SURVEY_POPUP_CONFIG, - DEFAULT_SURVEY_POPUP_PAYLOAD, - resolveSurveyPopupConfig, - type SurveyPopupPayload, -} from '#/session-rating/common/survey-popup-config'; - -const client = new ClientConfigClient({ - region: () => 'mainland-cn', - baseUrlOverride: () => 'https://api.example.com/coding/v1', - cacheDir: () => undefined, -}); - -const CLOUD_CONFIG = { - probability: 0.5, - on_for_models: ['k3', 'k2'], - min_time_before_feedback_ms: 60_000, - min_user_turns_before_feedback: 2, - min_time_between_feedback_ms: 120_000, - min_user_turns_between_feedback: 3, - min_time_between_global_feedback_ms: 240_000, - long_context_survey_threshold: 100_000, - long_context_probability: 0.9, - long_context_trigger_mode: 'virtual_context', -}; - -const ENVELOPE = { name: 'survey_popup', config: CLOUD_CONFIG }; - -const tempDirs: string[] = []; - -function jsonResponse(body: unknown, status = 200): Response { - return new Response(JSON.stringify(body), { - status, - headers: { 'Content-Type': 'application/json' }, - }); -} - -async function makeCacheFile(): Promise { - const dir = await mkdtemp(join(tmpdir(), 'survey-popup-config-')); - tempDirs.push(dir); - return join(dir, 'cache.json'); -} - -afterEach(async () => { - resetSurveyPopupConfigCache(client); - await Promise.all(tempDirs.splice(0).map((dir) => rm(dir, { recursive: true, force: true }))); -}); - -describe('DEFAULT_SURVEY_POPUP_CONFIG', () => { - it('matches the contract defaults', () => { - expect(DEFAULT_SURVEY_POPUP_CONFIG).toEqual({ - probability: 0.005, - on_for_models: ['*'], - min_time_before_feedback_ms: 600_000, - min_user_turns_before_feedback: 5, - min_time_between_feedback_ms: 3_600_000, - min_user_turns_between_feedback: 10, - min_time_between_global_feedback_ms: 100_000_000, - long_context_survey_threshold: 200_000, - long_context_probability: 0.2, - long_context_trigger_mode: 'virtual_context', - }); - }); -}); - -describe('getSurveyPopupConfig', () => { - it('POSTs the survey_popup name and returns the cloud config over the defaults', async () => { - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - - const result = await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result).toEqual({ ...CLOUD_CONFIG, model_overrides: {} }); - expect(fetchImpl).toHaveBeenCalledWith( - expect.stringContaining('/client_configs'), - expect.objectContaining({ - method: 'POST', - body: JSON.stringify({ name: 'survey_popup' }), - }), - ); - }); - - it('fills fields the cloud payload omits from the built-in defaults', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ name: 'survey_popup', config: { probability: 0.5 } }), - ); - - const result = await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result).toEqual({ ...DEFAULT_SURVEY_POPUP_PAYLOAD, probability: 0.5 }); - }); - - it('drops only the invalid field and keeps the rest', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ - name: 'survey_popup', - config: { - ...CLOUD_CONFIG, - probability: 'often', - on_for_models: ['k3', 42], - long_context_trigger_mode: 'sometimes', - }, - }), - ); - - const result = await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result).toEqual({ - ...CLOUD_CONFIG, - probability: DEFAULT_SURVEY_POPUP_CONFIG.probability, - on_for_models: DEFAULT_SURVEY_POPUP_CONFIG.on_for_models, - long_context_trigger_mode: DEFAULT_SURVEY_POPUP_CONFIG.long_context_trigger_mode, - model_overrides: {}, - }); - }); - - it('drops negative pacing values and fractional turn counts back to defaults', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ - name: 'survey_popup', - config: { - min_time_before_feedback_ms: -1, - min_user_turns_before_feedback: 2.5, - min_time_between_feedback_ms: -100, - min_user_turns_between_feedback: -3, - min_time_between_global_feedback_ms: -1, - }, - }), - ); - - const result = await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result).toEqual(DEFAULT_SURVEY_POPUP_PAYLOAD); - }); - - it('accepts zero pacing values as the documented no-limit semantics', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ - name: 'survey_popup', - config: { - min_time_before_feedback_ms: 0, - min_user_turns_before_feedback: 0, - min_time_between_feedback_ms: 0, - min_user_turns_between_feedback: 0, - min_time_between_global_feedback_ms: 0, - }, - }), - ); - - const result = await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result).toEqual({ - ...DEFAULT_SURVEY_POPUP_PAYLOAD, - min_time_before_feedback_ms: 0, - min_user_turns_before_feedback: 0, - min_time_between_feedback_ms: 0, - min_user_turns_between_feedback: 0, - min_time_between_global_feedback_ms: 0, - }); - }); - - it('drops out-of-range probabilities back to the built-in defaults', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ - name: 'survey_popup', - config: { probability: 2, long_context_probability: -0.5 }, - }), - ); - - const result = await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result.probability).toBe(DEFAULT_SURVEY_POPUP_CONFIG.probability); - expect(result.long_context_probability).toBe( - DEFAULT_SURVEY_POPUP_CONFIG.long_context_probability, - ); - }); - - it('drops a non-numeric long-context threshold back to the built-in default', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ name: 'survey_popup', config: { long_context_survey_threshold: 'never' } }), - ); - - const result = await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result.long_context_survey_threshold).toBe( - DEFAULT_SURVEY_POPUP_CONFIG.long_context_survey_threshold, - ); - }); - - it('keeps a non-positive threshold so the policy layer can close the long-context arm', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ name: 'survey_popup', config: { long_context_survey_threshold: 0 } }), - ); - - const result = await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result.long_context_survey_threshold).toBe(0); - }); - - it('falls back to the defaults when the payload is not an object', async () => { - const fetchImpl = vi.fn(async () => jsonResponse({ name: 'survey_popup', config: 'nope' })); - - const result = await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result).toEqual(DEFAULT_SURVEY_POPUP_PAYLOAD); - }); - - it('falls back to the defaults when the fetch fails', async () => { - const fetchImpl = vi.fn(async () => { - throw new Error('offline'); - }); - - const result = await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result).toEqual(DEFAULT_SURVEY_POPUP_PAYLOAD); - }); - - it('serves the in-process cache within a day and refetches after it', async () => { - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - const now = Date.now(); - - await getSurveyPopupConfig(client, { fetchImpl: fetchImpl as typeof fetch, now, cacheFile: null }); - const cached = await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - now: now + 60_000, - cacheFile: null, - }); - expect(cached).toEqual({ ...CLOUD_CONFIG, model_overrides: {} }); - expect(fetchImpl).toHaveBeenCalledTimes(1); - - await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - now: now + 25 * 60 * 60 * 1000, - cacheFile: null, - }); - expect(fetchImpl).toHaveBeenCalledTimes(2); - }); - - it('persists the fetched config to the disk cache for the next process', async () => { - const cacheFile = await makeCacheFile(); - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - const now = Date.now(); - - await getSurveyPopupConfig(client, { fetchImpl: fetchImpl as typeof fetch, now, cacheFile }); - - const persisted = JSON.parse(await readFile(cacheFile, 'utf-8')) as { config: unknown }; - expect(persisted.config).toEqual(CLOUD_CONFIG); - - resetSurveyPopupConfigCache(client); - const result = await getSurveyPopupConfig(client, { - fetchImpl: vi.fn(async () => { - throw new Error('must not fetch'); - }) as unknown as typeof fetch, - now: now + 60_000, - cacheFile, - }); - expect(result).toEqual({ ...CLOUD_CONFIG, model_overrides: {} }); - }); - - it('ignores a stale disk cache and falls back to the defaults when the refetch fails', async () => { - const cacheFile = await makeCacheFile(); - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - const now = Date.now(); - - await getSurveyPopupConfig(client, { fetchImpl: fetchImpl as typeof fetch, now, cacheFile }); - resetSurveyPopupConfigCache(client); - - const result = await getSurveyPopupConfig(client, { - fetchImpl: vi.fn(async () => jsonResponse('no', 503)) as unknown as typeof fetch, - now: now + 25 * 60 * 60 * 1000, - cacheFile, - }); - expect(result).toEqual(DEFAULT_SURVEY_POPUP_PAYLOAD); - }); -}); - -describe('peekSurveyPopupConfig', () => { - it('returns the defaults while the cache is cold', () => { - expect(peekSurveyPopupConfig(client)).toEqual(DEFAULT_SURVEY_POPUP_PAYLOAD); - }); - - it('sees the fetched config once the cache is warm', async () => { - const fetchImpl = vi.fn(async () => jsonResponse(ENVELOPE)); - const now = Date.now(); - - await getSurveyPopupConfig(client, { fetchImpl: fetchImpl as typeof fetch, now, cacheFile: null }); - - expect(peekSurveyPopupConfig(client, now + 60_000)).toEqual({ ...CLOUD_CONFIG, model_overrides: {} }); - expect(peekSurveyPopupConfig(client, now + 25 * 60 * 60 * 1000)).toEqual(DEFAULT_SURVEY_POPUP_PAYLOAD); - }); -}); - -describe('model_overrides parsing', () => { - it('parses override entries keyed by model id', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ - name: 'survey_popup', - config: { - ...CLOUD_CONFIG, - model_overrides: { k3: { probability: 0.5, min_user_turns_before_feedback: 1 } }, - }, - }), - ); - - const result = await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result.model_overrides).toEqual({ - k3: { probability: 0.5, min_user_turns_before_feedback: 1 }, - }); - }); - - it('drops an entire override entry when any of its fields is invalid', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ - name: 'survey_popup', - config: { - ...CLOUD_CONFIG, - model_overrides: { k3: { probability: 'often', min_time_between_feedback_ms: 60_000 } }, - }, - }), - ); - - const result = await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result.model_overrides).toEqual({}); - }); - - it('keeps sibling entries when one entry is invalid', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ - name: 'survey_popup', - config: { - ...CLOUD_CONFIG, - model_overrides: { - k3: { probability: 'often' }, - 'other-model': { probability: 0.5 }, - }, - }, - }), - ); - - const result = await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result.model_overrides).toEqual({ 'other-model': { probability: 0.5 } }); - }); - - it('strips unknown keys inside an override entry', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ - name: 'survey_popup', - config: { - ...CLOUD_CONFIG, - model_overrides: { k3: { probability: 0.5, on_for_models: ['nobody'], future_knob: 1 } }, - }, - }), - ); - - const result = await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - - expect(result.model_overrides).toEqual({ k3: { probability: 0.5 } }); - }); - - it('drops non-object entries and treats a non-object table as empty', async () => { - const fetchImpl = vi.fn(async () => - jsonResponse({ - name: 'survey_popup', - config: { ...CLOUD_CONFIG, model_overrides: { k3: 42, 'other-model': { probability: 0.5 } } }, - }), - ); - - const result = await getSurveyPopupConfig(client, { - fetchImpl: fetchImpl as typeof fetch, - cacheFile: null, - }); - expect(result.model_overrides).toEqual({ 'other-model': { probability: 0.5 } }); - - resetSurveyPopupConfigCache(client); - const stringTable = vi.fn(async () => - jsonResponse({ name: 'survey_popup', config: { ...CLOUD_CONFIG, model_overrides: 'yes' } }), - ); - const fallback = await getSurveyPopupConfig(client, { - fetchImpl: stringTable as typeof fetch, - cacheFile: null, - }); - expect(fallback.model_overrides).toEqual({}); - }); -}); - -describe('resolveSurveyPopupConfig', () => { - const PAYLOAD: SurveyPopupPayload = { - ...CLOUD_CONFIG, - long_context_trigger_mode: 'virtual_context', - model_overrides: { k3: { probability: 0.5, min_user_turns_before_feedback: 1 } }, - }; - - it('returns the flat base config when no override matches the model', () => { - expect(resolveSurveyPopupConfig(PAYLOAD, 'k2')).toEqual(CLOUD_CONFIG); - }); - - it('returns the flat base config when the model id is undefined', () => { - expect(resolveSurveyPopupConfig(PAYLOAD, undefined)).toEqual(CLOUD_CONFIG); - }); - - it('merges the matching override over the base and keeps untouched base fields', () => { - expect(resolveSurveyPopupConfig(PAYLOAD, 'k3')).toEqual({ - ...CLOUD_CONFIG, - probability: 0.5, - min_user_turns_before_feedback: 1, - }); - }); -}); - -describe('cloudSurveyPopupConfigFeed', () => { - function stubClient() { - return { - get: vi.fn(async () => undefined), - peek: vi.fn(() => undefined), - region: () => 'mainland-cn' as const, - reset: vi.fn(), - }; - } - - async function flush(): Promise { - await new Promise((resolve) => { - setImmediate(resolve); - }); - } - - it('resolves the access token before refreshing the named config', async () => { - const stub = stubClient(); - cloudSurveyPopupConfigFeed(stub, async () => 'tok'); - await flush(); - expect(stub.get).toHaveBeenCalledWith('survey_popup', expect.anything(), { - accessToken: 'tok', - }); - }); - - it('refreshes anonymously when no token is cached', async () => { - const stub = stubClient(); - cloudSurveyPopupConfigFeed(stub, async () => undefined); - await flush(); - expect(stub.get).toHaveBeenCalledWith('survey_popup', expect.anything(), { - accessToken: undefined, - }); - }); - - it.each([ - [ - 'rejects', - async (): Promise => { - throw new Error('no facade'); - }, - ], - [ - 'throws synchronously', - () => { - throw new Error('no facade'); - }, - ], - ])('skips the fetch when the token provider %s', async (_kind, accessToken) => { - const stub = stubClient(); - const feed = cloudSurveyPopupConfigFeed( - stub, - accessToken as () => Promise, - ); - await flush(); - expect(stub.get).not.toHaveBeenCalled(); - expect(feed.readyForEvaluation()).toBe(true); - }); - - it('does not fetch without a token provider', async () => { - const stub = stubClient(); - const feed = cloudSurveyPopupConfigFeed(stub, undefined); - await flush(); - expect(stub.get).not.toHaveBeenCalled(); +describe('localSurveyPopupConfigFeed', () => { + it('serves the built-in defaults without any network refresh', () => { + const feed = localSurveyPopupConfigFeed(); expect(feed.payload()).toEqual(DEFAULT_SURVEY_POPUP_PAYLOAD); - }); - - it('holds evaluations until the startup refresh settles', async () => { - const stub = stubClient(); - let settle!: () => void; - stub.get.mockImplementation( - () => - new Promise((resolve) => { - settle = () => { - resolve(undefined); - }; - }), - ); - const feed = cloudSurveyPopupConfigFeed(stub, async () => 'tok'); - await flush(); - expect(feed.readyForEvaluation()).toBe(false); - - settle(); - await flush(); expect(feed.readyForEvaluation()).toBe(true); }); });