@ashwin-pc/pi-web 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.pi/extensions/auto-session-name.ts +82 -0
- package/LICENSE +21 -0
- package/README.md +162 -0
- package/bin/pi-web.js +35 -0
- package/contexts/web-ui.md +18 -0
- package/dist/apple-touch-icon.png +0 -0
- package/dist/assets/index-BNqFbA4l.css +1 -0
- package/dist/assets/index-RfnHuF-b.js +79 -0
- package/dist/icon.svg +4 -0
- package/dist/index.html +174 -0
- package/dist/manifest.webmanifest +1 -0
- package/dist/pwa-192x192.png +0 -0
- package/dist/pwa-512x512.png +0 -0
- package/dist/registerSW.js +1 -0
- package/dist/sw.js +128 -0
- package/dist/workbox-a24bf94b.js +3645 -0
- package/docs/frontend-architecture.md +72 -0
- package/package.json +55 -0
- package/server/extensions.ts +121 -0
- package/server/mock.ts +402 -0
- package/server/settings.ts +155 -0
- package/server/types.ts +76 -0
- package/server.ts +1789 -0
- package/supervisor.ts +205 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))r(a);new MutationObserver(a=>{for(const i of a)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function t(a){const i={};return a.integrity&&(i.integrity=a.integrity),a.referrerPolicy&&(i.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?i.credentials="include":a.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(a){if(a.ep)return;a.ep=!0;const i=t(a);fetch(a.href,i)}})();function Xi(n){return{headers(){return{"content-type":"application/json",...n.token?{authorization:`Bearer ${n.token}`}:{}}},wsUrl(){const e=new URL("/ws",location.href);return e.protocol=location.protocol==="https:"?"wss:":"ws:",n.token&&e.searchParams.set("token",n.token),n.lastRealtimeSeq>0&&e.searchParams.set("lastSeq",String(n.lastRealtimeSeq)),e}}}function J(n){const e=document.querySelector(n);if(!e)throw new Error(`Missing required DOM node: ${n}`);return e}function Ji(){return{messagesEl:J("#messages"),statusTitleEl:J("#statusTitle"),statusPathEl:J("#statusPath"),connectionStatusEl:J("#connectionStatus"),formEl:J("#promptForm"),contextMeterEl:J("#contextMeter"),contextMeterFillEl:J("#contextMeterFill"),contextMeterLabelEl:J("#contextMeterLabel"),contextMeterPopoverEl:J("#contextMeterPopover"),promptEl:J("#prompt"),slashCommandsEl:J("#slashCommands"),primaryButton:J("#primaryButton"),stopButton:J("#stopButton"),tokenOverlay:J("#tokenOverlay"),tokenForm:J("#tokenForm"),tokenInput:J("#tokenInput"),sessionButton:J("#sessionButton"),expandButton:J("#expandButton"),sessionDrawer:J("#sessionDrawer"),sessionBackdrop:J("#sessionBackdrop"),sessionCloseButton:J("#sessionCloseButton"),sessionNewButton:J("#sessionNewButton"),sessionListEl:J("#sessionList"),sessionBarEl:J("#sessionBar"),queueToggle:J("#queueToggle"),attachButton:J("#attachButton"),imageInput:J("#imageInput"),attachmentsEl:J("#attachments"),modelControl:J("#modelControl"),modelSettingsButton:J("#modelSettingsButton"),modelSettingsLabel:J("#modelSettingsLabel"),modelSettingsThinking:J("#modelSettingsThinking"),modelSettingsPopover:J("#modelSettingsPopover"),modelSelectEl:J("#modelSelect"),thinkingSelectEl:J("#thinkingSelect"),newSessionHeaderButton:J("#newSessionHeaderButton"),conversationTreeButton:J("#conversationTreeButton"),gitButton:J("#gitButton"),settingsButton:J("#settingsButton"),settingsPanel:J("#settingsPanel"),settingsBackdrop:J("#settingsBackdrop"),settingsCloseButton:J("#settingsCloseButton"),settingDensitySelect:J("#settingDensitySelect"),settingQueueModeSelect:J("#settingQueueModeSelect"),settingComposerExpandedCheckbox:J("#settingComposerExpandedCheckbox"),settingModelDefaultsValue:J("#settingModelDefaultsValue"),settingSaveModelDefaultsButton:J("#settingSaveModelDefaultsButton"),settingClearModelDefaultsButton:J("#settingClearModelDefaultsButton"),settingsStatusEl:J("#settingsStatus"),gitPanel:J("#gitPanel"),emptyCwdChooserEl:J("#emptyCwdChooser"),emptyCwdPathEl:J("#emptyCwdChooser .emptyCwdPath"),emptyCwdButton:J("#emptyCwdChooser .emptyCwdButton")}}function Ht(){const n=window.visualViewport?.height||window.innerHeight;document.documentElement.style.setProperty("--app-height",`${n}px`)}function ji(){Ht(),window.addEventListener("resize",Ht),window.visualViewport?.addEventListener("resize",Ht),window.visualViewport?.addEventListener("scroll",Ht)}const es={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};const Ga=([n,e,t])=>{const r=document.createElementNS("http://www.w3.org/2000/svg",n);return Object.keys(e).forEach(a=>{r.setAttribute(a,String(e[a]))}),t?.length&&t.forEach(a=>{const i=Ga(a);r.appendChild(i)}),r},rt=(n,e={})=>{const r={...es,...e};return Ga(["svg",r,n])};const ts=[["path",{d:"M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z"}]];const ns=[["path",{d:"M12 18V5"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77"}]];const rs=[["path",{d:"M20 6 9 17l-5-5"}]];const Ka=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M12 3v18"}]];const Mr=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"}]];const as=[["path",{d:"m15 10 5 5-5 5"}],["path",{d:"M4 4v7a4 4 0 0 0 4 4h12"}]];const is=[["path",{d:"M12 15V3"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}],["path",{d:"m7 10 5 5 5-5"}]];const ss=[["path",{d:"M15 3h6v6"}],["path",{d:"M10 14 21 3"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}]];const os=[["path",{d:"M15 6a9 9 0 0 0-9 9V3"}],["circle",{cx:"18",cy:"6",r:"3"}],["circle",{cx:"6",cy:"18",r:"3"}]];const cs=[["circle",{cx:"12",cy:"18",r:"3"}],["circle",{cx:"6",cy:"6",r:"3"}],["circle",{cx:"18",cy:"6",r:"3"}],["path",{d:"M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9"}],["path",{d:"M12 12v3"}]];const ls=[["circle",{cx:"5",cy:"6",r:"3"}],["path",{d:"M5 9v12"}],["circle",{cx:"19",cy:"18",r:"3"}],["path",{d:"m15 9-3-3 3-3"}],["path",{d:"M12 6h5a2 2 0 0 1 2 2v7"}]];const ds=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor"}]];const Wa=[["path",{d:"M15 3h6v6"}],["path",{d:"m21 3-7 7"}],["path",{d:"m3 21 7-7"}],["path",{d:"M9 21H3v-6"}]];const us=[["path",{d:"M4 5h16"}],["path",{d:"M4 12h16"}],["path",{d:"M4 19h16"}]];const ps=[["path",{d:"m14 10 7-7"}],["path",{d:"M20 10h-6V4"}],["path",{d:"m3 21 7-7"}],["path",{d:"M4 14h6v6"}]];const ms=[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551"}]];const gs=[["circle",{cx:"6",cy:"19",r:"3"}],["path",{d:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15"}],["circle",{cx:"18",cy:"5",r:"3"}]];const Za=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M3 12h18"}]];const fs=[["path",{d:"M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z"}],["path",{d:"M6 12h16"}]];const hs=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"}],["circle",{cx:"12",cy:"12",r:"3"}]];const bs=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z"}]];const Es=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}]];const _s=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"}]];const ys=[["path",{d:"M18 6 6 18"}],["path",{d:"m6 6 12 12"}]],ws={bookmark:ts,brain:ns,"corner-down-right":as,"git-branch":os,"git-fork":cs,"key-round":ds,menu:us,paperclip:ms,route:gs,"send-horizontal":fs,settings:hs,square:Es,"square-pen":bs,star:_s,"maximize-2":Wa,"minimize-2":ps,x:ys};function Ya(n){return rt(ws[n],{"aria-hidden":"true"})}function Le(n,e){n.textContent="",n.append(Ya(e))}const Or=4,Va="pi-web-pinned-sessions";function vs(){try{const n=JSON.parse(localStorage.getItem(Va)||"[]");return Array.isArray(n)?n.filter(e=>typeof e?.id=="string"&&typeof e?.label=="string"):[]}catch{return[]}}function Lr(n){localStorage.setItem(Va,JSON.stringify(n))}const Qa=1500,Ss=2500,ks=15e3,Ir=8,ir={version:1,appearance:{density:"comfortable"},composer:{queueMode:"steer",expanded:!1},defaults:{}},Xt="pi-web-token",Xa="pi-web-collapsed-session-folders";function Ns(){const n=new URLSearchParams(location.search).get("token");if(!n)return;localStorage.setItem(Xt,n);const e=new URL(location.href);e.searchParams.delete("token"),history.replaceState(null,"",e.toString())}function Ts(){try{const n=JSON.parse(localStorage.getItem(Xa)||"[]");return Array.isArray(n)?n.filter(e=>typeof e=="string"):[]}catch{return[]}}function xs(n){localStorage.setItem(Xa,JSON.stringify(Array.from(n)))}function Cs(){return Ns(),{token:localStorage.getItem(Xt)||"",currentModelKey:"",currentModelDisplay:"No model",currentThinkingLevel:"off",currentSessionId:"",currentCwd:"",currentSessionTitle:"New session",statusTitleEditing:!1,isStreaming:!1,wsHasOpened:!1,wsDisconnected:!1,lastRealtimeSeq:0,reconnectNoticeTimer:void 0,connectionLostTimer:void 0,reconnectedClearTimer:void 0,pinnedSessions:vs(),collapsedSessionFolders:new Set(Ts()),expandedSessionFolders:new Set,queueMode:"steer",attachedImages:[],editorExpanded:ir.composer.expanded,settings:ir,stats:void 0}}function Rs(n){localStorage.setItem(Xt,n)}function As(){localStorage.removeItem(Xt)}function Ms(n){return new Promise((e,t)=>{const r=new FileReader;r.addEventListener("load",()=>{const a=String(r.result||""),i=a.includes(",")?a.slice(a.indexOf(",")+1):a;e({type:"image",data:i,mimeType:n.type,name:n.name})}),r.addEventListener("error",()=>t(r.error||new Error(`Could not read ${n.name}`))),r.readAsDataURL(n)})}function Os(n){const{state:e,elements:t,api:r,addMessage:a,updateMeta:i,updateThinkingOptions:o,refreshModels:c,refreshMessages:d,refreshState:s,beginStreamFollow:l,endStreamFollow:u}=n,g=new Set(["help","?","commands","reload","model","models","thinking","new","compact","abort","stop","logout"]),f=5e3;let p=[],y=0,b=0;function N(){const E=!!t.promptEl.value.trim()||e.attachedImages.length>0;t.primaryButton.disabled=!E,t.stopButton.style.display=e.isStreaming?"":"none"}function M(){const E=e.queueMode==="steer";t.queueToggle.setAttribute("aria-pressed",String(E)),t.queueToggle.title=E?"Queue mode: steer while running":"Queue mode: follow up after running",t.queueToggle.setAttribute("aria-label",t.queueToggle.title),Le(t.queueToggle,E?"route":"corner-down-right")}function L(E){t.promptEl.value=E,N(),Y(),t.promptEl.focus()}function Z(E){return E.trim().replace(/^\/+/,"").split(/\s+/,1)[0]?.toLowerCase()||""}function R(){const E=t.promptEl.value.trimStart();if(!E.startsWith("/")||e.attachedImages.length>0)return;const S=E.slice(1);if(!(/\s/.test(S)||S.includes(`
|
|
2
|
+
`)))return S.toLowerCase()}function I(){t.slashCommandsEl.hidden=!0,t.promptEl.setAttribute("aria-expanded","false")}async function P(E=!1){const S=Date.now();if(!E&&p.length>0&&S-y<f)return p;const T=await fetch(`/api/commands?sessionId=${encodeURIComponent(e.currentSessionId)}`,{headers:r.headers()});if(!T.ok)throw new Error(await T.text());const $=await T.json();return p=Array.isArray($.commands)?$.commands:[],y=S,p}function B(){const E=R();if(E===void 0)return[];const S=new Map([["web",0],["extension",1],["prompt",2],["skill",3]]);return p.filter(T=>{const $=T.name.toLowerCase(),w=T.description?.toLowerCase()||"";return!E||$.includes(E)||w.includes(E)}).sort((T,$)=>{const w=T.name.toLowerCase(),A=$.name.toLowerCase(),_=w.startsWith(E)?0:1,z=A.startsWith(E)?0:1;return _-z||(S.get(T.source)??99)-(S.get($.source)??99)||T.name.localeCompare($.name)}).slice(0,12)}function D(E){const S=t.promptEl.value.match(/^\s*/)?.[0]||"";t.promptEl.value=`${S}/${E.name} `,t.promptEl.setSelectionRange(t.promptEl.value.length,t.promptEl.value.length),N(),I(),t.promptEl.focus()}function Y(){if(R()===void 0){I();return}const S=B();if(b=Math.min(b,Math.max(S.length-1,0)),t.slashCommandsEl.textContent="",S.length===0){const T=document.createElement("div");T.className="slashCommandsEmpty",T.textContent=p.length===0?"Loading slash commands…":"No matching slash commands",t.slashCommandsEl.append(T)}else S.forEach((T,$)=>{const w=document.createElement("button");w.type="button",w.className=`slashCommandItem${$===b?" active":""}`,w.setAttribute("role","option"),w.setAttribute("aria-selected",String($===b)),w.addEventListener("mousedown",_=>_.preventDefault()),w.addEventListener("mouseenter",()=>{b!==$&&(b=$,Y())}),w.addEventListener("click",()=>D(T));const A=document.createElement("span");if(A.className="slashCommandName",A.textContent=`/${T.name}`,w.append(A),T.source!=="web"){const _=document.createElement("span");_.className="slashCommandSource",_.textContent=T.source,w.append(_)}if(T.description){const _=document.createElement("span");_.className="slashCommandDescription",_.textContent=T.description,w.append(_)}t.slashCommandsEl.append(w)});t.slashCommandsEl.hidden=!1,t.promptEl.setAttribute("aria-expanded","true")}async function H(E=!1){if(R()===void 0){I();return}try{await P(E),Y()}catch{I()}}async function h(E){await P();const S=Z(E);return p.find(T=>T.name.toLowerCase()===S)}function v(){t.attachmentsEl.textContent="",t.attachmentsEl.hidden=e.attachedImages.length===0,e.attachedImages.forEach((E,S)=>{const T=document.createElement("div");T.className="attachmentChip";const $=document.createElement("img");$.src=`data:${E.mimeType};base64,${E.data}`,$.alt="";const w=document.createElement("span");w.textContent=E.name;const A=document.createElement("button");A.type="button",A.className="removeAttachment",A.title=`Remove ${E.name}`,A.setAttribute("aria-label",A.title),A.addEventListener("click",()=>{e.attachedImages.splice(S,1),v(),N()}),Le(A,"x"),T.append($,w,A),t.attachmentsEl.append(T)})}async function k(E){const S=E.trim().replace(/^\/+/,"").split(/\s+/,1)[0]?.toLowerCase();if(S==="logout"){e.token="",As(),t.tokenInput.value="",t.tokenOverlay.hidden=!1,t.tokenInput.focus();return}const T=await fetch("/api/command",{method:"POST",headers:r.headers(),body:JSON.stringify({command:E})}),$=await T.text(),w=$?JSON.parse($):{};if(!T.ok||w.ok===!1)throw new Error(w.error||$);w.state&&(i(w.state),e.isStreaming=!!w.state.isStreaming,N(),w.state.thinkingLevels&&o(w.state.thinkingLevels)),await c(),(S==="reload"||S==="commands")&&await P(!0).catch(()=>{}),S==="new"&&await d(),w.message&&a("system",w.message)}function C(){t.formEl.addEventListener("submit",async E=>{if(E.preventDefault(),e.isStreaming&&!t.promptEl.value.trim()&&e.attachedImages.length===0)return;const S=t.promptEl.value.trim(),T=e.attachedImages.map(({type:$,data:w,mimeType:A,name:_})=>({type:$,data:w,mimeType:A,name:_}));if(!(!S&&T.length===0)){if(S.startsWith("/")&&T.length===0){let $;try{$=await h(S)}catch{$=g.has(Z(S))?{name:Z(S),source:"web"}:void 0}if(!$||$.source==="web"){t.promptEl.value="",I(),N(),a("system",`› ${S}`);try{await k(S)}catch(w){a("system",w instanceof Error?w.message:String(w),"error")}finally{t.promptEl.focus()}return}}t.promptEl.value="",I(),e.attachedImages=[],v(),N(),l?.(),a("user",S||"","",T.map($=>({data:$.data,mimeType:$.mimeType})));try{const $=await fetch("/api/prompt",{method:"POST",headers:r.headers(),body:JSON.stringify({sessionId:e.currentSessionId,message:S,mode:e.queueMode,images:T})});if(!$.ok)throw new Error(await $.text())}catch($){u?.(),a("system",$ instanceof Error?$.message:String($),"error")}finally{t.promptEl.focus()}}}),t.promptEl.addEventListener("keydown",E=>{if(!t.slashCommandsEl.hidden){const S=B();if(E.key==="ArrowDown"&&S.length>0){E.preventDefault(),b=(b+1)%S.length,Y();return}if(E.key==="ArrowUp"&&S.length>0){E.preventDefault(),b=(b-1+S.length)%S.length,Y();return}if((E.key==="Enter"&&!E.metaKey&&!E.ctrlKey||E.key==="Tab")&&S[b]){E.preventDefault(),D(S[b]);return}if(E.key==="Escape"){E.preventDefault(),I();return}}E.key==="Enter"&&(E.metaKey||E.ctrlKey)&&t.formEl.requestSubmit()}),t.promptEl.addEventListener("focus",()=>{H()}),t.promptEl.addEventListener("blur",()=>window.setTimeout(I,100)),t.promptEl.addEventListener("input",()=>{N(),b=0,Y(),H()}),t.attachButton.addEventListener("click",()=>t.imageInput.click()),t.imageInput.addEventListener("change",async()=>{const E=Array.from(t.imageInput.files||[]).filter(S=>S.type.startsWith("image/"));t.imageInput.value="";try{const S=await Promise.all(E.map(Ms));e.attachedImages.push(...S),v(),N()}catch(S){a("system",S instanceof Error?S.message:String(S),"error")}}),t.stopButton.addEventListener("click",async()=>{await fetch("/api/abort",{method:"POST",headers:r.headers(),body:JSON.stringify({sessionId:e.currentSessionId})})}),t.queueToggle.addEventListener("click",()=>{e.queueMode=e.queueMode==="steer"?"followUp":"steer",M()}),t.tokenForm.addEventListener("submit",E=>{E.preventDefault();const S=t.tokenInput.value.trim();S&&(e.token=S,Rs(e.token),t.tokenOverlay.hidden=!0,s().catch(T=>a("system",T instanceof Error?T.message:String(T),"error")))}),t.expandButton.addEventListener("click",()=>{e.editorExpanded=!e.editorExpanded,t.formEl.classList.toggle("expanded",e.editorExpanded),Le(t.expandButton,e.editorExpanded?"minimize-2":"maximize-2"),t.expandButton.title=e.editorExpanded?"Collapse editor":"Expand editor",t.expandButton.setAttribute("aria-label",t.expandButton.title),t.promptEl.focus()})}return{init:C,renderAttachments:v,setPromptText:L,updatePrimaryAction:N,updateQueueToggle:M}}function gt(n){return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Dr(n){const e=gt(n);if(e===void 0)return"—";if(Math.abs(e)<1e3)return Math.round(e).toLocaleString();if(Math.abs(e)<1e6){const r=e/1e3;return`${r>=10?r.toFixed(0):r.toFixed(1)}k`}const t=e/1e6;return`${t>=10?t.toFixed(0):t.toFixed(1)}m`}function Ke(n){const e=gt(n);return e===void 0?"unknown":Math.round(e).toLocaleString()}function Ja(n){const e=gt(n);return e===void 0?"unknown":`$${e.toFixed(e<1?3:2)}`}function sr(n){const e=n?.contextUsage,t=gt(e?.percent);if(t!==void 0)return t;const r=gt(e?.tokens),a=gt(e?.contextWindow);if(!(r===void 0||a===void 0||a<=0))return r/a*100}function Ls(n){return n===void 0?"unknown":n>=95?"danger":n>=80?"warning":n>=50?"active":"normal"}function Is(n){const e=n?.contextUsage,t=sr(n);if(!n||t===void 0||e?.tokens===null)return"Context usage unavailable until the next model response.";const r=n.tokens||{};return[`Context: ${Ke(e?.tokens)} / ${Ke(e?.contextWindow)} tokens (${Math.round(t)}%)`,`Input: ${Ke(r.input)} · Output: ${Ke(r.output)}`,`Cache read: ${Ke(r.cacheRead)} · Cache write: ${Ke(r.cacheWrite)}`,`Cost: ${Ja(n.cost)}`].join(`
|
|
3
|
+
`)}function yt(n,e,t){const r=document.createElement("div");r.className="contextMeterRow";const a=document.createElement("span");a.textContent=e;const i=document.createElement("strong");i.textContent=t,r.append(a,i),n.append(r)}function Ds(n){const{state:e,elements:t}=n;function r(){t.contextMeterPopoverEl.hidden=!0,t.contextMeterEl.setAttribute("aria-expanded","false")}function a(c){const d=sr(c),s=c?.contextUsage,l=c?.tokens||{},u=t.contextMeterPopoverEl;u.textContent="";const g=document.createElement("div");if(g.className="contextMeterPopoverTitle",g.textContent="Context usage",u.append(g),!c||d===void 0||s?.tokens===null){const p=document.createElement("p");p.className="contextMeterEmpty",p.textContent="Usage will appear after the next model response.",u.append(p);return}const f=document.createElement("div");f.className="contextMeterSummary",f.textContent=`${Dr(s?.tokens)} / ${Dr(s?.contextWindow)} tokens · ${Math.round(d)}%`,u.append(f),yt(u,"Input",Ke(l.input)),yt(u,"Output",Ke(l.output)),yt(u,"Cache read",Ke(l.cacheRead)),yt(u,"Cache write",Ke(l.cacheWrite)),yt(u,"Cost",Ja(c.cost))}function i(c){e.stats=c||void 0;const d=sr(c),s=Math.max(0,Math.min(100,d??0)),l=Ls(d),u=Is(c);t.contextMeterEl.className=`contextMeter ${l}`,t.contextMeterEl.style.setProperty("--context-percent",`${s}%`),t.contextMeterEl.title=u,t.contextMeterEl.setAttribute("aria-label",u.replace(/\n/g,". ")),t.contextMeterLabelEl.textContent=d!==void 0&&d>=80?`ctx ${Math.round(d)}%`:"",a(c)}function o(){t.contextMeterEl.addEventListener("click",()=>{const c=t.contextMeterPopoverEl.hidden;a(e.stats),t.contextMeterPopoverEl.hidden=!c,t.contextMeterEl.setAttribute("aria-expanded",String(c))}),document.addEventListener("click",c=>{const d=c.target;!d||t.contextMeterEl.contains(d)||t.contextMeterPopoverEl.contains(d)||r()}),document.addEventListener("keydown",c=>{c.key==="Escape"&&r()}),i(e.stats)}return{init:o,update:i}}async function Ct(n,e){const t=await fetch(n,{headers:e});if(!t.ok)throw new Error(await t.text());return t.json()}async function Bs(n,e){const t=await fetch(n,{method:"POST",headers:e});if(!t.ok)throw new Error(await t.text());return t.json()}function Rt(n={},e){const t=new URLSearchParams(n);return e&&t.set("repo",e),t}function Br(n){return Ct("/api/git/repos",n)}function Pr(n,e,t=!1){const r=Rt(t?{fetch:"1"}:{},e);return Ct(`/api/git/status?${r}`,n)}function $r(n,e){const t=Rt({},e);return Ct(`/api/git/log?${t}`,n)}function Ps(n,e,t,r){const a=Rt({path:e,staged:t?"1":"0"},r);return Ct(`/api/git/diff?${a}`,n)}function $s(n,e,t){const r=Rt({hash:e},t);return Ct(`/api/git/commit?${r}`,n)}function Fs(n,e){const t=Rt({},e);return Bs(`/api/git/sync?${t}`,n)}function Us(n){return n.match(/^diff --git a\/(.*?) b\/(.*)$/)?.[2]||n.replace(/^diff --git /,"")}function zs(n){const e=[];let t;for(const r of n.split(`
|
|
4
|
+
`))r.startsWith("diff --git ")?(t={name:Us(r),lines:[r]},e.push(t)):t?t.lines.push(r):r.trim()&&(t={name:"Diff",lines:[r]},e.push(t));return e}function Fr(n){return String(n??"").match(/\w+|\s+|[^\w\s]+/g)||[]}function ja(n,e){const t=Array.from({length:n.length+1},()=>Array(e.length+1).fill(0));for(let a=n.length-1;a>=0;a--)for(let i=e.length-1;i>=0;i--)t[a][i]=n[a]===e[i]?t[a+1][i+1]+1:Math.max(t[a+1][i],t[a][i+1]);const r=[];for(let a=0,i=0;a<n.length&&i<e.length;)n[a]===e[i]?r.push([a++,i++]):t[a+1][i]>=t[a][i+1]?a++:i++;return r}function Zt(n){return String(n??"").split(`
|
|
5
|
+
`)}function qs(n,e){const t=Zt(n),r=Zt(e),a=ja(t,r),i=[];let o=0,c=0;for(const[d,s]of a){for(;o<d||c<s;)o<d&&c<s?i.push({op:"del",oldLine:t[o++]},{op:"add",newLine:r[c++]}):o<d?i.push({op:"del",oldLine:t[o++]}):i.push({op:"add",newLine:r[c++]});i.push({op:"same",oldLine:t[o++],newLine:r[c++]})}for(;o<t.length||c<r.length;)o<t.length&&c<r.length?i.push({op:"del",oldLine:t[o++]},{op:"add",newLine:r[c++]}):o<t.length?i.push({op:"del",oldLine:t[o++]}):i.push({op:"add",newLine:r[c++]});return i}function Ur(n,e,t,r){const a=Fr(e),i=Fr(t),o=new Set(ja(a,i).map(([d,s])=>r==="old"?d:s));(r==="old"?a:i).forEach((d,s)=>{const l=document.createElement("span");l.textContent=d,o.has(s)||(l.className=`diffWord diffWord--${r==="old"?"del":"add"}`),n.append(l)})}function zr(n){return n.startsWith("+")&&!n.startsWith("+++")?"add":n.startsWith("-")&&!n.startsWith("---")?"del":n.startsWith("@@")||n.startsWith("diff --git")||n.startsWith("index ")||n.startsWith("---")||n.startsWith("+++")?"meta":"same"}function Ye(n,e="",t=""){const r=document.createElement("tr");r.className=`diffLine diffLine--${n==="meta"?"same gitPatchMeta":n}`;const a=document.createElement("td");a.className="diffGutter";const i=document.createElement("td");i.className="diffCode diffCode--old";const o=document.createElement("td");o.className="diffGutter";const c=document.createElement("td");return c.className="diffCode diffCode--new",n==="add"?(o.textContent="+",c.textContent=t):n==="del"?(a.textContent="-",i.textContent=e):n==="changed"?(a.textContent="-",o.textContent="+",Ur(i,e,t,"old"),Ur(c,e,t,"new")):(a.textContent=n==="same"?" ":"",o.textContent=n==="same"?" ":"",i.textContent=e,c.textContent=t||e),r.append(a,i,o,c),r}function Hs(n,e){e.forEach((t,r)=>{t.op==="del"&&e[r+1]?.op==="add"?n.append(Ye("changed",t.oldLine||"",e[r+1].newLine||"")):t.op==="add"&&e[r-1]?.op==="del"||(t.op==="add"?n.append(Ye("add","",t.newLine||"")):t.op==="del"?n.append(Ye("del",t.oldLine||"","")):n.append(Ye("same",t.oldLine||"",t.newLine||t.oldLine||"")))})}function Gs(n,e){for(let t=0;t<e.length;t++){const r=e[t],a=zr(r);a==="del"&&zr(e[t+1]||"")==="add"?(n.append(Ye("changed",r.slice(1),e[t+1].slice(1))),t++):a==="add"?n.append(Ye("add","",r.slice(1))):a==="del"?n.append(Ye("del",r.slice(1),"")):a==="meta"?n.append(Ye("meta",r,r)):n.append(Ye("same",r.startsWith(" ")?r.slice(1):r,r.startsWith(" ")?r.slice(1):r))}}function Jt(n,e){n.classList.toggle("diffContainer--stacked",e),n.classList.toggle("diffContainer--sideBySide",!e)}function Ks(n,e={}){const t=document.createElement("div");return t.className="diffContainer",Jt(t,!!e.stacked),n.forEach((r,a)=>{if(a>0){const o=document.createElement("div");o.className="diffSep",t.append(o)}const i=document.createElement("table");i.className="diffTable",Hs(i,qs(r.oldText,r.newText)),t.append(i)}),t}function Ws(n){return n.reduce((e,t)=>e+Zt(t.oldText).length+Zt(t.newText).length,0)}function Zs(n,e={}){const t=document.createElement("div");t.className="diffContainer gitPatchFiles",Jt(t,!!e.stacked);const r=zs(n);if(!r.length){const a=document.createElement("div");return a.className="gitEmpty",a.textContent="No diff available.",t.append(a),t}for(const a of r){const i=document.createElement("details");i.className="gitPatchFile",i.open=!0;const o=document.createElement("summary");o.textContent=a.name;const c=document.createElement("table");c.className="diffTable",Gs(c,a.lines),i.append(o,c),t.append(i)}return t}const Ys=new Set([".png",".jpg",".jpeg",".gif",".webp"]);function Vs(){return window.matchMedia("(max-width: 700px)").matches}function qr(n){const e=n.toLowerCase();return[...Ys].some(t=>e.endsWith(t))}function fn(n){return n.split("/").filter(Boolean).at(-1)||n}function Hr(n,e,t){const r=new URLSearchParams({path:n.path,version:t,staged:n.staged&&n.worktreeStatus===" "?"1":"0"});return n.oldPath&&r.set("oldPath",n.oldPath),e&&r.set("repo",e),`/api/git/image?${r}`}async function Gr(n,e,t,r){try{const a=await fetch(e,{headers:t});if(!a.ok)throw new Error(await a.text());const i=await a.blob(),o=URL.createObjectURL(i),c=document.createElement("img");c.src=o,c.alt=r,c.addEventListener("load",()=>n.classList.add("loaded"),{once:!0}),n.textContent="",n.append(c)}catch{n.textContent="No image"}}function Qs(n){const{file:e,repo:t,apiHeaders:r}=n,a=document.createElement("div");a.className="gitImageDiff";const i=Kr("Before",e.oldPath?fn(e.oldPath):fn(e.path)),o=Kr("After",fn(e.path));return a.append(i.pane,o.pane),Gr(i.preview,Hr(e,t,"before"),r(),`Before ${e.path}`),Gr(o.preview,Hr(e,t,"after"),r(),`After ${e.path}`),a}function Kr(n,e){const t=document.createElement("section");t.className="gitImagePane";const r=document.createElement("h4");r.textContent=n;const a=document.createElement("div");a.className="gitImageName",a.textContent=e;const i=document.createElement("div");return i.className="gitImagePreview",i.textContent="Loading image…",t.append(r,a,i),{pane:t,preview:i}}function ei(n){const e=document.createElement("div"),t=document.createElement("div");t.className="diffToolbar gitDiffToolbar";const r=document.createElement("span"),a=(n.match(/^diff --git /gm)||[]).length;r.textContent=`${a||1} file${a===1?"":"s"}`;const i=document.createElement("button");i.type="button",i.className="diffLayoutToggle";let o=Vs();const c=Zs(n,{stacked:o}),d=()=>{i.replaceChildren(rt(o?Ka:Za,{"aria-hidden":"true"}));const s=o?"Switch to side-by-side diff view":"Switch to top/bottom diff view";i.title=s,i.setAttribute("aria-label",s)};return i.addEventListener("click",()=>{o=!o,Jt(c,o),d()}),d(),t.append(r,i),e.append(t,c),e}function Xs(n){const{container:e,file:t,repo:r,diff:a,loading:i,apiHeaders:o,onBack:c}=n;e.textContent="";const d=document.createElement("div");if(d.className="gitDetailHeader",c){const l=document.createElement("button");l.type="button",l.className="gitBackButton",l.textContent="← Back",l.addEventListener("click",c),d.append(l)}const s=document.createElement("h3");if(s.textContent=t?t.path:"Diff",d.append(s),e.append(d),!t){const l=document.createElement("div");l.className="gitEmpty",l.textContent="Select a file to view its diff.",e.append(l);return}if(i){const l=document.createElement("div");l.className="gitEmpty",l.textContent="Loading diff…",e.append(l);return}if(qr(t.path)||t.oldPath&&qr(t.oldPath)){e.append(Qs({file:t,repo:r,apiHeaders:o}));return}if(!a){const l=document.createElement("div");l.className="gitEmpty",l.textContent="No diff available.",e.append(l);return}e.append(ei(a))}function Js(n){const{container:e,commit:t,files:r=[],diff:a="",loading:i,onBack:o}=n;e.textContent="";const c=document.createElement("div");if(c.className="gitDetailHeader",o){const b=document.createElement("button");b.type="button",b.className="gitBackButton",b.textContent="← Back",b.addEventListener("click",o),c.append(b)}const d=document.createElement("h3");if(d.textContent="Commit",c.append(d),e.append(c),!t){const b=document.createElement("div");b.className="gitEmpty",b.textContent="Select a commit to view details.",e.append(b);return}const s=document.createElement("div");s.className="gitCommitDetails";const l=document.createElement("h4");l.textContent=t.subject;const u=document.createElement("code");u.textContent=t.hash;const g=document.createElement("p");if(g.textContent=`${t.author} · ${new Date(t.date).toLocaleString()}`,s.append(l,u,g),t.refs.length){const b=document.createElement("p");b.textContent=`Refs: ${t.refs.join(", ")}`,s.append(b)}if(e.append(s),i){const b=document.createElement("div");b.className="gitEmpty",b.textContent="Loading commit diff…",e.append(b);return}const f=document.createElement("h3");f.className="gitSectionTitle",f.textContent=`Changed files (${r.length})`,e.append(f);const p=document.createElement("div");p.className="gitCommitFiles";for(const b of r){const N=document.createElement("div");N.className="gitCommitFile";const M=document.createElement("span");M.className="gitCommitFileStatus",M.textContent=b.status;const L=document.createElement("span");L.className="gitCommitFilePath",L.textContent=b.path;const Z=document.createElement("span");Z.className="gitCommitFileStats";const R=b.additions??0,I=b.deletions??0;Z.textContent=R||I?`+${R} -${I}`:"",N.append(M,L,Z),p.append(N)}e.append(p);const y=document.createElement("h3");y.className="gitSectionTitle",y.textContent="Diff",e.append(y,ei(a))}function js(n){const e=new Date(n);return Number.isNaN(e.getTime())?"":new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric"}).format(e)}function eo(n){const{container:e,commits:t,selectedHash:r,onSelectCommit:a}=n;if(e.textContent="",!t.length){const o=document.createElement("div");o.className="gitEmpty",o.textContent="No commits found.",e.append(o);return}const i=document.createElement("div");i.className="gitCommitList";for(const o of t){const c=document.createElement("button");c.type="button",c.className=`gitCommitItem${o.hash===r?" selected":""}`;const d=document.createElement("span");d.className="gitCommitRail";const s=document.createElement("span");s.className="gitCommitDot",d.append(s);const l=document.createElement("span");l.className="gitCommitBody";const u=document.createElement("span");u.className="gitCommitSubject",u.textContent=o.subject;const g=document.createElement("span");if(g.className="gitCommitMeta",g.textContent=`${o.shortHash} · ${o.author} · ${js(o.date)}`,l.append(u),o.refs.length){const f=document.createElement("span");f.className="gitCommitRefs",f.textContent=o.refs.join(" "),l.append(f)}l.append(g),c.append(d,l),c.addEventListener("click",()=>a(o)),i.append(c)}e.append(i)}function to(n){return n.label==="untracked"?"U":n.label==="modified"?"M":n.label==="added"?"A":n.label==="deleted"?"D":n.label==="renamed"?"R":n.label==="conflicted"?"!":`${n.indexStatus||" "}${n.worktreeStatus||" "}`.trim()||n.label[0].toUpperCase()}function no(n){const e={name:"",children:new Map};for(const t of n){const r=t.path.split("/").filter(Boolean);let a=e;for(const i of r){let o=a.children.get(i);o||(o={name:i,children:new Map},a.children.set(i,o)),a=o}a.file=t}return e}function ro(n){return[...n.children.values()].sort((e,t)=>{const r=e.children.size>0&&!e.file,a=t.children.size>0&&!t.file;return r!==a?r?-1:1:e.name.localeCompare(t.name)})}function ti(n){return n.split(/[\\/]/).filter(Boolean).at(-1)||n}function ni(n){return ti(n.root||n.path)||"Repository"}function ri(n,e){return{branch:e?.branch||n.branch||"detached",upstream:e?.upstream||n.upstream,ahead:e?.ahead??n.ahead,behind:e?.behind??n.behind,dirtyCount:e?.files.length??n.dirtyCount}}function wt(n,e){const t=document.createElement("span");t.className="gitRepoMetaItem",t.textContent=e,n.append(t)}function ao(n,e,t){const r=ri(e,t);wt(n,r.branch),r.upstream&&wt(n,`⇄ ${r.upstream}`),r.ahead>0&&wt(n,`↑${r.ahead}`),r.behind>0&&wt(n,`↓${r.behind}`),wt(n,r.dirtyCount?`${r.dirtyCount} changed`:"clean")}function io(n,e){const t=ri(n,e);return!!(t.upstream&&t.behind>0)}function so(n,e,t,r){if(!io(n,e))return;const a=document.createElement("button");return a.type="button",a.className="gitRebaseButton",a.title="Fetch and rebase onto upstream",a.setAttribute("aria-label",`Fetch and rebase ${ni(n)} onto upstream`),a.disabled=t===n.path,a.append(rt(ls,{"aria-hidden":"true"})),a.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation(),r(n)}),a}function oo(n,e,t,r,a){const i=document.createElement("button");i.type="button",i.className=`gitFileItem gitTreeFile${n.path===t&&e.path===r?" selected":""}`;const o=document.createElement("span");o.className=`gitStatusBadge ${n.label}`,o.textContent=to(n);const c=document.createElement("span");return c.className="gitFilePath",c.textContent=n.oldPath?`${n.oldPath} → ${n.path}`:ti(n.path),i.append(o,c),i.addEventListener("click",()=>a(n,e)),i}function ai(n){const{container:e,node:t,repo:r,selectedPath:a,selectedRepoPath:i,onSelectFile:o}=n;for(const c of ro(t)){if(c.file&&c.children.size===0){e.append(oo(c.file,r,a,i,o));continue}const d=document.createElement("details");d.className="gitTreeDir",d.open=!0;const s=document.createElement("summary"),l=document.createElement("span");l.className="gitTreeDirName",l.textContent=c.name,s.append(l),d.append(s);const u=document.createElement("div");u.className="gitTreeChildren",ai({container:u,node:c,repo:r,selectedPath:a,selectedRepoPath:i,onSelectFile:o}),d.append(u),e.append(d)}}function co(n){const{repo:e,status:t,selectedPath:r,selectedRepoPath:a,syncingRepo:i,onSelectFile:o,onRebase:c}=n,d=t?.files||[],s=document.createElement("details");s.className="gitRepoChangesAccordion",s.open=d.length>0||e.path===a;const l=document.createElement("summary"),u=document.createElement("span");u.className="gitRepoDisclosure",u.textContent="›";const g=document.createElement("span");g.className="gitRepoHeaderText";const f=document.createElement("span");f.className="gitRepoName",f.textContent=ni(e),f.title=e.path==="."?e.root:e.path;const p=document.createElement("span");p.className="gitRepoMeta",ao(p,e,t),g.append(f,p),l.append(u,g);const y=so(e,t,i,c);y&&l.append(y),s.append(l);const b=document.createElement("div");if(b.className="gitRepoChangesBody",t)if(d.length)ai({container:b,node:no(d),repo:e,selectedPath:r,selectedRepoPath:a,onSelectFile:o});else{const N=document.createElement("div");N.className="gitEmpty",N.textContent="Working tree clean.",b.append(N)}else{const N=document.createElement("div");N.className="gitEmpty",N.textContent="Loading status…",b.append(N)}return s.append(b),s}function lo(n){const{container:e,repos:t,statusesByRepo:r,selectedPath:a,selectedRepoPath:i,syncingRepo:o,onSelectFile:c,onRebase:d}=n;e.textContent="";const s=document.createElement("section");s.className="gitChangesOverview";const l=document.createElement("h3");l.textContent="Repositories",s.append(l);const u=document.createElement("div");u.className="gitRepoChangesList";for(const g of t)u.append(co({repo:g,status:r[g.path],selectedPath:a,selectedRepoPath:i,syncingRepo:o,onSelectFile:c,onRebase:d}));s.append(u),e.append(s)}function uo(n){const{button:e,panel:t,apiHeaders:r}=n,a=t.querySelector("#gitPrimaryPane"),i=t.querySelector("#gitDetailPane"),o=t.querySelector("#gitStatusTab"),c=t.querySelector("#gitGraphTab"),d=t.querySelector("#gitCloseButton"),s={isOpen:!1,loading:!1,syncing:!1,statusesByRepo:{},commits:[],repos:[],repoPickerOpen:!1,primaryView:"status",mobileView:"status",diffLoading:!1,commitLoading:!1};function l(h=s.repoCwd){return h?`pi-web.git.selectedRepo:${h}`:"pi-web.git.selectedRepo"}function u(h){try{return localStorage.getItem(l(h))}catch{return}}function g(h){try{localStorage.setItem(l(),h.path)}catch{}}function f(){return s.selectedRepo?.path}function p(h){s.isOpen=h,t.hidden=!h,e.classList.toggle("active",h),h&&L()}function y(h,v){const k=s.selectedRepo?.path||u(v);return h.find(C=>C.path===k)||h.find(C=>C.isCurrent)||h[0]}async function b(h){const v=await Promise.all(h.map(async k=>[k.path,await Pr(r(),k.path,!0)]));return Object.fromEntries(v)}function N(h=s.statusesByRepo){const v=s.selectedRepo?h[s.selectedRepo.path]?.files[0]:void 0;if(v&&s.selectedRepo)return{repo:s.selectedRepo,file:v};for(const k of s.repos){const C=h[k.path]?.files[0];if(C)return{repo:k,file:C}}}async function M(){if(!s.selectedRepo){s.status={ok:!0,isRepo:!1,ahead:0,behind:0,files:[]},s.statusesByRepo={},s.commits=[],s.selectedFile=void 0,s.selectedFileRepo=void 0,s.selectedCommit=void 0,s.diff=void 0,s.commitDiff=void 0;return}const h=f(),[v,k]=await Promise.all([b(s.repos),$r(r(),h)]);s.statusesByRepo=v,s.status=h?v[h]:void 0,s.commits=k.commits||[],s.selectedCommit=s.commits[0],s.diff=void 0,s.commitDiff=void 0,s.commitFiles=void 0;const C=s.selectedFileRepo?s.repos.find(T=>T.path===s.selectedFileRepo):void 0,E=C&&s.selectedFile?v[C.path]?.files.find(T=>T.path===s.selectedFile?.path):void 0,S=C&&E?{repo:C,file:E}:N(v);S?await R(S.file,S.repo,!1):(s.selectedFile=void 0,s.selectedFileRepo=void 0,s.diff=void 0)}async function L(){s.loading=!0,s.error=void 0,H();try{const h=await Br(r());s.repos=h.repos,s.repoCwd=h.cwd,s.selectedRepo=y(h.repos,h.cwd),await M()}catch(h){s.error=h instanceof Error?h.message:String(h)}finally{s.loading=!1,H()}}async function Z(h){s.selectedRepo=h,s.repoPickerOpen=!1,s.loading=!0,s.error=void 0,s.selectedFile=void 0,s.selectedFileRepo=void 0,s.selectedCommit=void 0,s.diff=void 0,s.commitDiff=void 0,g(h),H();try{const[v,k]=await Promise.all([s.statusesByRepo[h.path]?Promise.resolve(s.statusesByRepo[h.path]):Pr(r(),h.path,!0),$r(r(),h.path)]);s.statusesByRepo={...s.statusesByRepo,[h.path]:v},s.status=v,s.commits=k.commits||[],s.selectedCommit=s.commits[0],v.files[0]&&await R(v.files[0],h,!1)}catch(v){s.error=v instanceof Error?v.message:String(v)}finally{s.loading=!1,H()}}async function R(h,v,k=!0){s.selectedRepo=v,s.status=s.statusesByRepo[v.path],s.selectedFile=h,s.selectedFileRepo=v.path,s.diffLoading=!0,s.diff=void 0,k&&(s.mobileView="diff"),H();try{const C=await Ps(r(),h.path,h.staged&&h.worktreeStatus===" ",v.path);s.diff=C.diff}catch(C){s.diff=C instanceof Error?C.message:String(C)}finally{s.diffLoading=!1,H()}}async function I(h,v=!0){s.selectedCommit=h,s.commitLoading=!0,s.commitFiles=void 0,s.commitDiff=void 0,v&&(s.mobileView="commit"),H();try{const k=await $s(r(),h.hash,f());s.commitFiles=k.files,s.commitDiff=k.diff}catch(k){s.commitDiff=k instanceof Error?k.message:String(k)}finally{s.commitLoading=!1,H()}}function P(h){s.primaryView=h,s.mobileView=h,H()}async function B(h){s.syncing=!0,s.syncingRepo=h.path,s.error=void 0,H();try{await Fs(r(),h.path);const v=await Br(r());s.repos=v.repos,s.repoCwd=v.cwd,s.selectedRepo=s.repos.find(k=>k.path===s.selectedRepo?.path)||s.repos.find(k=>k.path===h.path)||y(s.repos,v.cwd),await M()}catch(v){s.error=v instanceof Error?v.message:String(v)}finally{s.syncing=!1,s.syncingRepo=void 0,H()}}function D(h){return h.path==="."?".":h.path}function Y(h){if(s.repos.length<=1)return;const v=document.createElement("details");v.className="gitRepoAccordion",v.open=s.repoPickerOpen||!s.selectedRepo&&s.repos.length>0,v.addEventListener("toggle",()=>{s.repoPickerOpen=v.open});const k=document.createElement("summary");k.textContent=s.selectedRepo?`Repository: ${D(s.selectedRepo)}`:"Repository: none found",v.append(k);const C=document.createElement("div");if(C.className="gitRepoList",s.repos.length)for(const E of s.repos){const S=document.createElement("button");S.type="button",S.className=`gitRepoItem${E.path===s.selectedRepo?.path?" selected":""}`,S.disabled=s.loading||s.syncing,S.addEventListener("click",()=>{Z(E)});const T=document.createElement("span");T.className="gitRepoName",T.textContent=D(E),S.append(T);const $=document.createElement("span");$.className="gitRepoMeta";const w=E.dirtyCount?`${E.dirtyCount} changed`:"clean",A=E.upstream?` ⇄ ${E.upstream}`:"";$.textContent=`${E.branch||"detached"}${A} · ↑${E.ahead} ↓${E.behind} · ${w}`,S.append($),C.append(S)}else{const E=document.createElement("div");E.className="gitRepoEmpty",E.textContent="No repos at the current folder or one level down.",C.append(E)}v.append(C),h.append(v)}function H(){t.dataset.view=s.mobileView,t.dataset.primaryView=s.primaryView,o.classList.toggle("active",s.primaryView==="status"),c.classList.toggle("active",s.primaryView==="graph"),a.textContent="",s.primaryView==="graph"&&Y(a);const h=document.createElement("div");h.className="gitPrimaryContent",a.append(h),s.loading?h.textContent="Loading Git data…":s.error?h.textContent=s.error:s.repos.length?s.primaryView==="status"?lo({container:h,repos:s.repos,statusesByRepo:s.statusesByRepo,selectedPath:s.selectedFile?.path,selectedRepoPath:s.selectedFileRepo||s.selectedRepo?.path,syncingRepo:s.syncingRepo,onSelectFile:(v,k)=>{R(v,k)},onRebase:v=>{B(v)}}):s.status?.isRepo?eo({container:h,commits:s.commits,selectedHash:s.selectedCommit?.hash,onSelectCommit:v=>{I(v)}}):h.textContent="Selected folder is not a Git repository.":h.textContent="No Git repositories found in the current folder or one level down.",s.mobileView==="commit"?Js({container:i,commit:s.selectedCommit,files:s.commitFiles,diff:s.commitDiff,loading:s.commitLoading,onBack:()=>P("graph")}):Xs({container:i,file:s.selectedFile,repo:s.selectedFileRepo,diff:s.diff,loading:s.diffLoading,apiHeaders:r,onBack:()=>P("status")})}e.addEventListener("click",()=>p(!s.isOpen)),d.addEventListener("click",()=>p(!1)),o.addEventListener("click",()=>P("status")),c.addEventListener("click",()=>P("graph")),H()}function po(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var hn,Wr;function mo(){if(Wr)return hn;Wr=1;function n(m){return m instanceof Map?m.clear=m.delete=m.set=function(){throw new Error("map is read-only")}:m instanceof Set&&(m.add=m.clear=m.delete=function(){throw new Error("set is read-only")}),Object.freeze(m),Object.getOwnPropertyNames(m).forEach(x=>{const U=m[x],ee=typeof U;(ee==="object"||ee==="function")&&!Object.isFrozen(U)&&n(U)}),m}class e{constructor(x){x.data===void 0&&(x.data={}),this.data=x.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function t(m){return m.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function r(m,...x){const U=Object.create(null);for(const ee in m)U[ee]=m[ee];return x.forEach(function(ee){for(const ye in ee)U[ye]=ee[ye]}),U}const a="</span>",i=m=>!!m.scope,o=(m,{prefix:x})=>{if(m.startsWith("language:"))return m.replace("language:","language-");if(m.includes(".")){const U=m.split(".");return[`${x}${U.shift()}`,...U.map((ee,ye)=>`${ee}${"_".repeat(ye+1)}`)].join(" ")}return`${x}${m}`};class c{constructor(x,U){this.buffer="",this.classPrefix=U.classPrefix,x.walk(this)}addText(x){this.buffer+=t(x)}openNode(x){if(!i(x))return;const U=o(x.scope,{prefix:this.classPrefix});this.span(U)}closeNode(x){i(x)&&(this.buffer+=a)}value(){return this.buffer}span(x){this.buffer+=`<span class="${x}">`}}const d=(m={})=>{const x={children:[]};return Object.assign(x,m),x};class s{constructor(){this.rootNode=d(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(x){this.top.children.push(x)}openNode(x){const U=d({scope:x});this.add(U),this.stack.push(U)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(x){return this.constructor._walk(x,this.rootNode)}static _walk(x,U){return typeof U=="string"?x.addText(U):U.children&&(x.openNode(U),U.children.forEach(ee=>this._walk(x,ee)),x.closeNode(U)),x}static _collapse(x){typeof x!="string"&&x.children&&(x.children.every(U=>typeof U=="string")?x.children=[x.children.join("")]:x.children.forEach(U=>{s._collapse(U)}))}}class l extends s{constructor(x){super(),this.options=x}addText(x){x!==""&&this.add(x)}startScope(x){this.openNode(x)}endScope(){this.closeNode()}__addSublanguage(x,U){const ee=x.root;U&&(ee.scope=`language:${U}`),this.add(ee)}toHTML(){return new c(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function u(m){return m?typeof m=="string"?m:m.source:null}function g(m){return y("(?=",m,")")}function f(m){return y("(?:",m,")*")}function p(m){return y("(?:",m,")?")}function y(...m){return m.map(U=>u(U)).join("")}function b(m){const x=m[m.length-1];return typeof x=="object"&&x.constructor===Object?(m.splice(m.length-1,1),x):{}}function N(...m){return"("+(b(m).capture?"":"?:")+m.map(ee=>u(ee)).join("|")+")"}function M(m){return new RegExp(m.toString()+"|").exec("").length-1}function L(m,x){const U=m&&m.exec(x);return U&&U.index===0}const Z=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function R(m,{joinWith:x}){let U=0;return m.map(ee=>{U+=1;const ye=U;let we=u(ee),V="";for(;we.length>0;){const W=Z.exec(we);if(!W){V+=we;break}V+=we.substring(0,W.index),we=we.substring(W.index+W[0].length),W[0][0]==="\\"&&W[1]?V+="\\"+String(Number(W[1])+ye):(V+=W[0],W[0]==="("&&U++)}return V}).map(ee=>`(${ee})`).join(x)}const I=/\b\B/,P="[a-zA-Z]\\w*",B="[a-zA-Z_]\\w*",D="\\b\\d+(\\.\\d+)?",Y="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",H="\\b(0b[01]+)",h="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",v=(m={})=>{const x=/^#![ ]*\//;return m.binary&&(m.begin=y(x,/.*\b/,m.binary,/\b.*/)),r({scope:"meta",begin:x,end:/$/,relevance:0,"on:begin":(U,ee)=>{U.index!==0&&ee.ignoreMatch()}},m)},k={begin:"\\\\[\\s\\S]",relevance:0},C={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[k]},E={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[k]},S={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},T=function(m,x,U={}){const ee=r({scope:"comment",begin:m,end:x,contains:[]},U);ee.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const ye=N("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return ee.contains.push({begin:y(/[ ]+/,"(",ye,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),ee},$=T("//","$"),w=T("/\\*","\\*/"),A=T("#","$"),_={scope:"number",begin:D,relevance:0},z={scope:"number",begin:Y,relevance:0},G={scope:"number",begin:H,relevance:0},ne={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[k,{begin:/\[/,end:/\]/,relevance:0,contains:[k]}]},ce={scope:"title",begin:P,relevance:0},re={scope:"title",begin:B,relevance:0},ie={begin:"\\.\\s*"+B,relevance:0};var ve=Object.freeze({__proto__:null,APOS_STRING_MODE:C,BACKSLASH_ESCAPE:k,BINARY_NUMBER_MODE:G,BINARY_NUMBER_RE:H,COMMENT:T,C_BLOCK_COMMENT_MODE:w,C_LINE_COMMENT_MODE:$,C_NUMBER_MODE:z,C_NUMBER_RE:Y,END_SAME_AS_BEGIN:function(m){return Object.assign(m,{"on:begin":(x,U)=>{U.data._beginMatch=x[1]},"on:end":(x,U)=>{U.data._beginMatch!==x[1]&&U.ignoreMatch()}})},HASH_COMMENT_MODE:A,IDENT_RE:P,MATCH_NOTHING_RE:I,METHOD_GUARD:ie,NUMBER_MODE:_,NUMBER_RE:D,PHRASAL_WORDS_MODE:S,QUOTE_STRING_MODE:E,REGEXP_MODE:ne,RE_STARTERS_RE:h,SHEBANG:v,TITLE_MODE:ce,UNDERSCORE_IDENT_RE:B,UNDERSCORE_TITLE_MODE:re});function _e(m,x){m.input[m.index-1]==="."&&x.ignoreMatch()}function Ce(m,x){m.className!==void 0&&(m.scope=m.className,delete m.className)}function Ie(m,x){x&&m.beginKeywords&&(m.begin="\\b("+m.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",m.__beforeBegin=_e,m.keywords=m.keywords||m.beginKeywords,delete m.beginKeywords,m.relevance===void 0&&(m.relevance=0))}function Ue(m,x){Array.isArray(m.illegal)&&(m.illegal=N(...m.illegal))}function ht(m,x){if(m.match){if(m.begin||m.end)throw new Error("begin & end are not supported with match");m.begin=m.match,delete m.match}}function F(m,x){m.relevance===void 0&&(m.relevance=1)}const K=(m,x)=>{if(!m.beforeMatch)return;if(m.starts)throw new Error("beforeMatch cannot be used with starts");const U=Object.assign({},m);Object.keys(m).forEach(ee=>{delete m[ee]}),m.keywords=U.keywords,m.begin=y(U.beforeMatch,g(U.begin)),m.starts={relevance:0,contains:[Object.assign(U,{endsParent:!0})]},m.relevance=0,delete U.beforeMatch},le=["of","and","for","in","not","or","if","then","parent","list","value"],se="keyword";function Se(m,x,U=se){const ee=Object.create(null);return typeof m=="string"?ye(U,m.split(" ")):Array.isArray(m)?ye(U,m):Object.keys(m).forEach(function(we){Object.assign(ee,Se(m[we],x,we))}),ee;function ye(we,V){x&&(V=V.map(W=>W.toLowerCase())),V.forEach(function(W){const j=W.split("|");ee[j[0]]=[we,Me(j[0],j[1])]})}}function Me(m,x){return x?Number(x):Re(m)?0:1}function Re(m){return le.includes(m.toLowerCase())}const Je={},$e=m=>{console.error(m)},Be=(m,...x)=>{console.log(`WARN: ${m}`,...x)},ge=(m,x)=>{Je[`${m}/${x}`]||(console.log(`Deprecated as of ${m}. ${x}`),Je[`${m}/${x}`]=!0)},ut=new Error;function Lt(m,x,{key:U}){let ee=0;const ye=m[U],we={},V={};for(let W=1;W<=x.length;W++)V[W+ee]=ye[W],we[W+ee]=!0,ee+=M(x[W-1]);m[U]=V,m[U]._emit=we,m[U]._multi=!0}function It(m){if(Array.isArray(m.begin)){if(m.skip||m.excludeBegin||m.returnBegin)throw $e("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),ut;if(typeof m.beginScope!="object"||m.beginScope===null)throw $e("beginScope must be object"),ut;Lt(m,m.begin,{key:"beginScope"}),m.begin=R(m.begin,{joinWith:""})}}function bt(m){if(Array.isArray(m.end)){if(m.skip||m.excludeEnd||m.returnEnd)throw $e("skip, excludeEnd, returnEnd not compatible with endScope: {}"),ut;if(typeof m.endScope!="object"||m.endScope===null)throw $e("endScope must be object"),ut;Lt(m,m.end,{key:"endScope"}),m.end=R(m.end,{joinWith:""})}}function rn(m){m.scope&&typeof m.scope=="object"&&m.scope!==null&&(m.beginScope=m.scope,delete m.scope)}function Dt(m){rn(m),typeof m.beginScope=="string"&&(m.beginScope={_wrap:m.beginScope}),typeof m.endScope=="string"&&(m.endScope={_wrap:m.endScope}),It(m),bt(m)}function an(m){function x(V,W){return new RegExp(u(V),"m"+(m.case_insensitive?"i":"")+(m.unicodeRegex?"u":"")+(W?"g":""))}class U{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(W,j){j.position=this.position++,this.matchIndexes[this.matchAt]=j,this.regexes.push([j,W]),this.matchAt+=M(W)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const W=this.regexes.map(j=>j[1]);this.matcherRe=x(R(W,{joinWith:"|"}),!0),this.lastIndex=0}exec(W){this.matcherRe.lastIndex=this.lastIndex;const j=this.matcherRe.exec(W);if(!j)return null;const xe=j.findIndex((_t,ln)=>ln>0&&_t!==void 0),ke=this.matchIndexes[xe];return j.splice(0,xe),Object.assign(j,ke)}}class ee{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(W){if(this.multiRegexes[W])return this.multiRegexes[W];const j=new U;return this.rules.slice(W).forEach(([xe,ke])=>j.addRule(xe,ke)),j.compile(),this.multiRegexes[W]=j,j}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(W,j){this.rules.push([W,j]),j.type==="begin"&&this.count++}exec(W){const j=this.getMatcher(this.regexIndex);j.lastIndex=this.lastIndex;let xe=j.exec(W);if(this.resumingScanAtSamePosition()&&!(xe&&xe.index===this.lastIndex)){const ke=this.getMatcher(0);ke.lastIndex=this.lastIndex+1,xe=ke.exec(W)}return xe&&(this.regexIndex+=xe.position+1,this.regexIndex===this.count&&this.considerAll()),xe}}function ye(V){const W=new ee;return V.contains.forEach(j=>W.addRule(j.begin,{rule:j,type:"begin"})),V.terminatorEnd&&W.addRule(V.terminatorEnd,{type:"end"}),V.illegal&&W.addRule(V.illegal,{type:"illegal"}),W}function we(V,W){const j=V;if(V.isCompiled)return j;[Ce,ht,Dt,K].forEach(ke=>ke(V,W)),m.compilerExtensions.forEach(ke=>ke(V,W)),V.__beforeBegin=null,[Ie,Ue,F].forEach(ke=>ke(V,W)),V.isCompiled=!0;let xe=null;return typeof V.keywords=="object"&&V.keywords.$pattern&&(V.keywords=Object.assign({},V.keywords),xe=V.keywords.$pattern,delete V.keywords.$pattern),xe=xe||/\w+/,V.keywords&&(V.keywords=Se(V.keywords,m.case_insensitive)),j.keywordPatternRe=x(xe,!0),W&&(V.begin||(V.begin=/\B|\b/),j.beginRe=x(j.begin),!V.end&&!V.endsWithParent&&(V.end=/\B|\b/),V.end&&(j.endRe=x(j.end)),j.terminatorEnd=u(j.end)||"",V.endsWithParent&&W.terminatorEnd&&(j.terminatorEnd+=(V.end?"|":"")+W.terminatorEnd)),V.illegal&&(j.illegalRe=x(V.illegal)),V.contains||(V.contains=[]),V.contains=[].concat(...V.contains.map(function(ke){return sn(ke==="self"?V:ke)})),V.contains.forEach(function(ke){we(ke,j)}),V.starts&&we(V.starts,W),j.matcher=ye(j),j}if(m.compilerExtensions||(m.compilerExtensions=[]),m.contains&&m.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return m.classNameAliases=r(m.classNameAliases||{}),we(m)}function Bt(m){return m?m.endsWithParent||Bt(m.starts):!1}function sn(m){return m.variants&&!m.cachedVariants&&(m.cachedVariants=m.variants.map(function(x){return r(m,{variants:null},x)})),m.cachedVariants?m.cachedVariants:Bt(m)?r(m,{starts:m.starts?r(m.starts):null}):Object.isFrozen(m)?r(m):m}var on="11.11.1";class cn extends Error{constructor(x,U){super(x),this.name="HTMLInjectionError",this.html=U}}const Et=t,Pt=r,pe=Symbol("nomatch"),pt=7,je=function(m){const x=Object.create(null),U=Object.create(null),ee=[];let ye=!0;const we="Could not find the language '{}', did you forget to load/include a language module?",V={disableAutodetect:!0,name:"Plain text",contains:[]};let W={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:l};function j(O){return W.noHighlightRe.test(O)}function xe(O){let X=O.className+" ";X+=O.parentNode?O.parentNode.className:"";const oe=W.languageDetectRe.exec(X);if(oe){const fe=tt(oe[1]);return fe||(Be(we.replace("{}",oe[1])),Be("Falling back to no-highlight mode for this block.",O)),fe?oe[1]:"no-highlight"}return X.split(/\s+/).find(fe=>j(fe)||tt(fe))}function ke(O,X,oe){let fe="",Te="";typeof X=="object"?(fe=O,oe=X.ignoreIllegals,Te=X.language):(ge("10.7.0","highlight(lang, code, ...args) has been deprecated."),ge("10.7.0",`Please use highlight(code, options) instead.
|
|
6
|
+
https://github.com/highlightjs/highlight.js/issues/2277`),Te=O,fe=X),oe===void 0&&(oe=!0);const ze={code:fe,language:Te};Ft("before:highlight",ze);const nt=ze.result?ze.result:_t(ze.language,ze.code,oe);return nt.code=ze.code,Ft("after:highlight",nt),nt}function _t(O,X,oe,fe){const Te=Object.create(null);function ze(q,Q){return q.keywords[Q]}function nt(){if(!te.keywords){Ae.addText(he);return}let q=0;te.keywordPatternRe.lastIndex=0;let Q=te.keywordPatternRe.exec(he),ae="";for(;Q;){ae+=he.substring(q,Q.index);const me=He.case_insensitive?Q[0].toLowerCase():Q[0],Oe=ze(te,me);if(Oe){const[Ze,Vi]=Oe;if(Ae.addText(ae),ae="",Te[me]=(Te[me]||0)+1,Te[me]<=pt&&(qt+=Vi),Ze.startsWith("_"))ae+=Q[0];else{const Qi=He.classNameAliases[Ze]||Ze;qe(Q[0],Qi)}}else ae+=Q[0];q=te.keywordPatternRe.lastIndex,Q=te.keywordPatternRe.exec(he)}ae+=he.substring(q),Ae.addText(ae)}function Ut(){if(he==="")return;let q=null;if(typeof te.subLanguage=="string"){if(!x[te.subLanguage]){Ae.addText(he);return}q=_t(te.subLanguage,he,!0,Ar[te.subLanguage]),Ar[te.subLanguage]=q._top}else q=dn(he,te.subLanguage.length?te.subLanguage:null);te.relevance>0&&(qt+=q.relevance),Ae.__addSublanguage(q._emitter,q.language)}function Fe(){te.subLanguage!=null?Ut():nt(),he=""}function qe(q,Q){q!==""&&(Ae.startScope(Q),Ae.addText(q),Ae.endScope())}function Tr(q,Q){let ae=1;const me=Q.length-1;for(;ae<=me;){if(!q._emit[ae]){ae++;continue}const Oe=He.classNameAliases[q[ae]]||q[ae],Ze=Q[ae];Oe?qe(Ze,Oe):(he=Ze,nt(),he=""),ae++}}function xr(q,Q){return q.scope&&typeof q.scope=="string"&&Ae.openNode(He.classNameAliases[q.scope]||q.scope),q.beginScope&&(q.beginScope._wrap?(qe(he,He.classNameAliases[q.beginScope._wrap]||q.beginScope._wrap),he=""):q.beginScope._multi&&(Tr(q.beginScope,Q),he="")),te=Object.create(q,{parent:{value:te}}),te}function Cr(q,Q,ae){let me=L(q.endRe,ae);if(me){if(q["on:end"]){const Oe=new e(q);q["on:end"](Q,Oe),Oe.isMatchIgnored&&(me=!1)}if(me){for(;q.endsParent&&q.parent;)q=q.parent;return q}}if(q.endsWithParent)return Cr(q.parent,Q,ae)}function Gi(q){return te.matcher.regexIndex===0?(he+=q[0],1):(gn=!0,0)}function Ki(q){const Q=q[0],ae=q.rule,me=new e(ae),Oe=[ae.__beforeBegin,ae["on:begin"]];for(const Ze of Oe)if(Ze&&(Ze(q,me),me.isMatchIgnored))return Gi(Q);return ae.skip?he+=Q:(ae.excludeBegin&&(he+=Q),Fe(),!ae.returnBegin&&!ae.excludeBegin&&(he=Q)),xr(ae,q),ae.returnBegin?0:Q.length}function Wi(q){const Q=q[0],ae=X.substring(q.index),me=Cr(te,q,ae);if(!me)return pe;const Oe=te;te.endScope&&te.endScope._wrap?(Fe(),qe(Q,te.endScope._wrap)):te.endScope&&te.endScope._multi?(Fe(),Tr(te.endScope,q)):Oe.skip?he+=Q:(Oe.returnEnd||Oe.excludeEnd||(he+=Q),Fe(),Oe.excludeEnd&&(he=Q));do te.scope&&Ae.closeNode(),!te.skip&&!te.subLanguage&&(qt+=te.relevance),te=te.parent;while(te!==me.parent);return me.starts&&xr(me.starts,q),Oe.returnEnd?0:Q.length}function Zi(){const q=[];for(let Q=te;Q!==He;Q=Q.parent)Q.scope&&q.unshift(Q.scope);q.forEach(Q=>Ae.openNode(Q))}let zt={};function Rr(q,Q){const ae=Q&&Q[0];if(he+=q,ae==null)return Fe(),0;if(zt.type==="begin"&&Q.type==="end"&&zt.index===Q.index&&ae===""){if(he+=X.slice(Q.index,Q.index+1),!ye){const me=new Error(`0 width match regex (${O})`);throw me.languageName=O,me.badRule=zt.rule,me}return 1}if(zt=Q,Q.type==="begin")return Ki(Q);if(Q.type==="illegal"&&!oe){const me=new Error('Illegal lexeme "'+ae+'" for mode "'+(te.scope||"<unnamed>")+'"');throw me.mode=te,me}else if(Q.type==="end"){const me=Wi(Q);if(me!==pe)return me}if(Q.type==="illegal"&&ae==="")return he+=`
|
|
7
|
+
`,1;if(mn>1e5&&mn>Q.index*3)throw new Error("potential infinite loop, way more iterations than matches");return he+=ae,ae.length}const He=tt(O);if(!He)throw $e(we.replace("{}",O)),new Error('Unknown language: "'+O+'"');const Yi=an(He);let pn="",te=fe||Yi;const Ar={},Ae=new W.__emitter(W);Zi();let he="",qt=0,at=0,mn=0,gn=!1;try{if(He.__emitTokens)He.__emitTokens(X,Ae);else{for(te.matcher.considerAll();;){mn++,gn?gn=!1:te.matcher.considerAll(),te.matcher.lastIndex=at;const q=te.matcher.exec(X);if(!q)break;const Q=X.substring(at,q.index),ae=Rr(Q,q);at=q.index+ae}Rr(X.substring(at))}return Ae.finalize(),pn=Ae.toHTML(),{language:O,value:pn,relevance:qt,illegal:!1,_emitter:Ae,_top:te}}catch(q){if(q.message&&q.message.includes("Illegal"))return{language:O,value:Et(X),illegal:!0,relevance:0,_illegalBy:{message:q.message,index:at,context:X.slice(at-100,at+100),mode:q.mode,resultSoFar:pn},_emitter:Ae};if(ye)return{language:O,value:Et(X),illegal:!1,relevance:0,errorRaised:q,_emitter:Ae,_top:te};throw q}}function ln(O){const X={value:Et(O),illegal:!1,relevance:0,_top:V,_emitter:new W.__emitter(W)};return X._emitter.addText(O),X}function dn(O,X){X=X||W.languages||Object.keys(x);const oe=ln(O),fe=X.filter(tt).filter(Nr).map(Fe=>_t(Fe,O,!1));fe.unshift(oe);const Te=fe.sort((Fe,qe)=>{if(Fe.relevance!==qe.relevance)return qe.relevance-Fe.relevance;if(Fe.language&&qe.language){if(tt(Fe.language).supersetOf===qe.language)return 1;if(tt(qe.language).supersetOf===Fe.language)return-1}return 0}),[ze,nt]=Te,Ut=ze;return Ut.secondBest=nt,Ut}function Li(O,X,oe){const fe=X&&U[X]||oe;O.classList.add("hljs"),O.classList.add(`language-${fe}`)}function un(O){let X=null;const oe=xe(O);if(j(oe))return;if(Ft("before:highlightElement",{el:O,language:oe}),O.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",O);return}if(O.children.length>0&&(W.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(O)),W.throwUnescapedHTML))throw new cn("One of your code blocks includes unescaped HTML.",O.innerHTML);X=O;const fe=X.textContent,Te=oe?ke(fe,{language:oe,ignoreIllegals:!0}):dn(fe);O.innerHTML=Te.value,O.dataset.highlighted="yes",Li(O,oe,Te.language),O.result={language:Te.language,re:Te.relevance,relevance:Te.relevance},Te.secondBest&&(O.secondBest={language:Te.secondBest.language,relevance:Te.secondBest.relevance}),Ft("after:highlightElement",{el:O,result:Te,text:fe})}function Ii(O){W=Pt(W,O)}const Di=()=>{$t(),ge("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function Bi(){$t(),ge("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let Sr=!1;function $t(){function O(){$t()}if(document.readyState==="loading"){Sr||window.addEventListener("DOMContentLoaded",O,!1),Sr=!0;return}document.querySelectorAll(W.cssSelector).forEach(un)}function Pi(O,X){let oe=null;try{oe=X(m)}catch(fe){if($e("Language definition for '{}' could not be registered.".replace("{}",O)),ye)$e(fe);else throw fe;oe=V}oe.name||(oe.name=O),x[O]=oe,oe.rawDefinition=X.bind(null,m),oe.aliases&&kr(oe.aliases,{languageName:O})}function $i(O){delete x[O];for(const X of Object.keys(U))U[X]===O&&delete U[X]}function Fi(){return Object.keys(x)}function tt(O){return O=(O||"").toLowerCase(),x[O]||x[U[O]]}function kr(O,{languageName:X}){typeof O=="string"&&(O=[O]),O.forEach(oe=>{U[oe.toLowerCase()]=X})}function Nr(O){const X=tt(O);return X&&!X.disableAutodetect}function Ui(O){O["before:highlightBlock"]&&!O["before:highlightElement"]&&(O["before:highlightElement"]=X=>{O["before:highlightBlock"](Object.assign({block:X.el},X))}),O["after:highlightBlock"]&&!O["after:highlightElement"]&&(O["after:highlightElement"]=X=>{O["after:highlightBlock"](Object.assign({block:X.el},X))})}function zi(O){Ui(O),ee.push(O)}function qi(O){const X=ee.indexOf(O);X!==-1&&ee.splice(X,1)}function Ft(O,X){const oe=O;ee.forEach(function(fe){fe[oe]&&fe[oe](X)})}function Hi(O){return ge("10.7.0","highlightBlock will be removed entirely in v12.0"),ge("10.7.0","Please use highlightElement now."),un(O)}Object.assign(m,{highlight:ke,highlightAuto:dn,highlightAll:$t,highlightElement:un,highlightBlock:Hi,configure:Ii,initHighlighting:Di,initHighlightingOnLoad:Bi,registerLanguage:Pi,unregisterLanguage:$i,listLanguages:Fi,getLanguage:tt,registerAliases:kr,autoDetection:Nr,inherit:Pt,addPlugin:zi,removePlugin:qi}),m.debugMode=function(){ye=!1},m.safeMode=function(){ye=!0},m.versionString=on,m.regex={concat:y,lookahead:g,either:N,optional:p,anyNumberOfTimes:f};for(const O in ve)typeof ve[O]=="object"&&n(ve[O]);return Object.assign(m,ve),m},et=je({});return et.newInstance=()=>je({}),hn=et,et.HighlightJS=et,et.default=et,hn}var bn,Zr;function go(){if(Zr)return bn;Zr=1;function n(e){const t=e.regex,r=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),a=/[\p{L}0-9._:-]+/u,i={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},o={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},c=e.inherit(o,{begin:/\(/,end:/\)/}),d=e.inherit(e.APOS_STRING_MODE,{className:"string"}),s=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),l={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:a,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[i]},{begin:/'/,end:/'/,contains:[i]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[o,s,d,c,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[o,c,s,d]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},i,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[s]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[l],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[l],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:t.concat(/</,t.lookahead(t.concat(r,t.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:r,relevance:0,starts:l}]},{className:"tag",begin:t.concat(/<\//,t.lookahead(t.concat(r,/>/))),contains:[{className:"name",begin:r,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}return bn=n,bn}var En,Yr;function fo(){if(Yr)return En;Yr=1;function n(e){const t=e.regex,r={},a={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[r]}]};Object.assign(r,{className:"variable",variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},a]});const i={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},o=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),c={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},d={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,r,i]};i.contains.push(d);const s={match:/\\"/},l={className:"string",begin:/'/,end:/'/},u={match:/\\'/},g={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,r]},f=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],p=e.SHEBANG({binary:`(${f.join("|")})`,relevance:10}),y={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},b=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],N=["true","false"],M={match:/(\/[a-z._-]+)+/},L=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],Z=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],R=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],I=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:b,literal:N,built_in:[...L,...Z,"set","shopt",...R,...I]},contains:[p,e.SHEBANG(),y,g,o,c,M,d,s,l,u,r]}}return En=n,En}var _n,Vr;function ho(){if(Vr)return _n;Vr=1;function n(e){const t=e.regex,r=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),a="decltype\\(auto\\)",i="[a-zA-Z_]\\w*::",c="("+a+"|"+t.optional(i)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",d={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},l={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},u={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},g={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(l,{className:"string"}),{className:"string",begin:/<.*?>/},r,e.C_BLOCK_COMMENT_MODE]},f={className:"title",begin:t.optional(i)+e.IDENT_RE,relevance:0},p=t.optional(i)+e.IDENT_RE+"\\s*\\(",N={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},M=[g,d,r,e.C_BLOCK_COMMENT_MODE,u,l],L={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:N,contains:M.concat([{begin:/\(/,end:/\)/,keywords:N,contains:M.concat(["self"]),relevance:0}]),relevance:0},Z={begin:"("+c+"[\\*&\\s]+)+"+p,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:N,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:N,relevance:0},{begin:p,returnBegin:!0,contains:[e.inherit(f,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:N,relevance:0,contains:[r,e.C_BLOCK_COMMENT_MODE,l,u,d,{begin:/\(/,end:/\)/,keywords:N,relevance:0,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,u,d]}]},d,r,e.C_BLOCK_COMMENT_MODE,g]};return{name:"C",aliases:["h"],keywords:N,disableAutodetect:!0,illegal:"</",contains:[].concat(L,Z,M,[g,{begin:e.IDENT_RE+"::",keywords:N},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:g,strings:l,keywords:N}}}return _n=n,_n}var yn,Qr;function bo(){if(Qr)return yn;Qr=1;function n(e){const t=e.regex,r=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),a="decltype\\(auto\\)",i="[a-zA-Z_]\\w*::",c="(?!struct)("+a+"|"+t.optional(i)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",d={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},l={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},u={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},g={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(l,{className:"string"}),{className:"string",begin:/<.*?>/},r,e.C_BLOCK_COMMENT_MODE]},f={className:"title",begin:t.optional(i)+e.IDENT_RE,relevance:0},p=t.optional(i)+e.IDENT_RE+"\\s*\\(",y=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],b=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],N=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],M=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],R={type:b,keyword:y,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:N},I={className:"function.dispatch",relevance:0,keywords:{_hint:M},begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))},P=[I,g,d,r,e.C_BLOCK_COMMENT_MODE,u,l],B={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:R,contains:P.concat([{begin:/\(/,end:/\)/,keywords:R,contains:P.concat(["self"]),relevance:0}]),relevance:0},D={className:"function",begin:"("+c+"[\\*&\\s]+)+"+p,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:R,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:R,relevance:0},{begin:p,returnBegin:!0,contains:[f],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[l,u]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:R,relevance:0,contains:[r,e.C_BLOCK_COMMENT_MODE,l,u,d,{begin:/\(/,end:/\)/,keywords:R,relevance:0,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,u,d]}]},d,r,e.C_BLOCK_COMMENT_MODE,g]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:R,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(B,D,I,P,[g,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:R,contains:["self",d]},{begin:e.IDENT_RE+"::",keywords:R},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}return yn=n,yn}var wn,Xr;function Eo(){if(Xr)return wn;Xr=1;function n(e){const t=["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],r=["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"],a=["default","false","null","true"],i=["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"],o=["add","alias","and","ascending","args","async","await","by","descending","dynamic","equals","file","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","record","remove","required","scoped","select","set","unmanaged","value|0","var","when","where","with","yield"],c={keyword:i.concat(o),built_in:t,literal:a},d=e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),s={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},l={className:"string",begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},u={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},g=e.inherit(u,{illegal:/\n/}),f={className:"subst",begin:/\{/,end:/\}/,keywords:c},p=e.inherit(f,{illegal:/\n/}),y={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},e.BACKSLASH_ESCAPE,p]},b={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},f]},N=e.inherit(b,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},p]});f.contains=[b,y,u,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,e.C_BLOCK_COMMENT_MODE],p.contains=[N,y,g,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];const M={variants:[l,b,y,u,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},L={begin:"<",end:">",contains:[{beginKeywords:"in out"},d]},Z=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",R={begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:c,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"<!--|-->"},{begin:"</?",end:">"}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},M,s,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},d,L,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[d,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[d,L,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+Z+"\\s+)+"+e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:c,contains:[{beginKeywords:r.join(" "),relevance:0},{begin:e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[e.TITLE_MODE,L],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,relevance:0,contains:[M,s,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},R]}}return wn=n,wn}var vn,Jr;function _o(){if(Jr)return vn;Jr=1;const n=s=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:s.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[s.APOS_STRING_MODE,s.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:s.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],r=[...e,...t],a=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),c=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function d(s){const l=s.regex,u=n(s),g={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},f="and or not only",p=/@-?\w[\w]*(-\w+)*/,y="[a-zA-Z-][a-zA-Z0-9_-]*",b=[s.APOS_STRING_MODE,s.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[u.BLOCK_COMMENT,g,u.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+y,relevance:0},u.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+i.join("|")+")"},{begin:":(:)?("+o.join("|")+")"}]},u.CSS_VARIABLE,{className:"attribute",begin:"\\b("+c.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[u.BLOCK_COMMENT,u.HEXCOLOR,u.IMPORTANT,u.CSS_NUMBER_MODE,...b,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...b,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},u.FUNCTION_DISPATCH]},{begin:l.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:p},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:f,attribute:a.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...b,u.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+r.join("|")+")\\b"}]}}return vn=d,vn}var Sn,jr;function yo(){if(jr)return Sn;jr=1;function n(e){const t=e.regex,r={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},a={begin:"^[-\\*]{3,}",end:"$"},i={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},o={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},c={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},d=/[A-Za-z][A-Za-z0-9+.-]*/,s={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:t.concat(/\[.+?\]\(/,d,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},l={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},u={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},g=e.inherit(l,{contains:[]}),f=e.inherit(u,{contains:[]});l.contains.push(f),u.contains.push(g);let p=[r,s];return[l,u,g,f].forEach(M=>{M.contains=M.contains.concat(p)}),p=p.concat(l,u),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:p},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:p}]}]},r,o,l,u,{className:"quote",begin:"^>\\s+",contains:p,end:"$"},i,a,s,c,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}return Sn=n,Sn}var kn,ea;function wo(){if(ea)return kn;ea=1;function n(e){const t=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:t.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:t.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}return kn=n,kn}var Nn,ta;function vo(){if(ta)return Nn;ta=1;function n(e){const t=e.regex,r="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",a=t.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),i=t.concat(a,/(::\w+)*/),c={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},d={className:"doctag",begin:"@[A-Za-z]+"},s={begin:"#<",end:">"},l=[e.COMMENT("#","$",{contains:[d]}),e.COMMENT("^=begin","^=end",{contains:[d],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],u={className:"subst",begin:/#\{/,end:/\}/,keywords:c},g={className:"string",contains:[e.BACKSLASH_ESCAPE,u],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:t.concat(/<<[-~]?'?/,t.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,u]})]}]},f="[1-9](_?[0-9])*|0",p="[0-9](_?[0-9])*",y={className:"number",relevance:0,variants:[{begin:`\\b(${f})(\\.(${p}))?([eE][+-]?(${p})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},b={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:c}]},P=[g,{variants:[{match:[/class\s+/,i,/\s+<\s+/,i]},{match:[/\b(class|module)\s+/,i]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:c},{match:[/(include|extend)\s+/,i],scope:{2:"title.class"},keywords:c},{relevance:0,match:[i,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:a,scope:"title.class"},{match:[/def/,/\s+/,r],scope:{1:"keyword",3:"title.function"},contains:[b]},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[g,{begin:r}],relevance:0},y,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:c},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,u],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(s,l),relevance:0}].concat(s,l);u.contains=P,b.contains=P;const H=[{begin:/^\s*=>/,starts:{end:"$",contains:P}},{className:"meta.prompt",begin:"^("+"[>?]>"+"|"+"[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"+"|"+"(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"+")(?=[ ])",starts:{end:"$",keywords:c,contains:P}}];return l.unshift(s),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:c,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(H).concat(l).concat(P)}}return Nn=n,Nn}var Tn,na;function So(){if(na)return Tn;na=1;function n(e){const o={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:o,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:o,illegal:/["']/}]}]}}return Tn=n,Tn}var xn,ra;function ko(){if(ra)return xn;ra=1;function n(e){const t=e.regex,r=/[_A-Za-z][_0-9A-Za-z]*/;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:t.concat(r,t.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}}return xn=n,xn}var Cn,aa;function No(){if(aa)return Cn;aa=1;function n(e){const t=e.regex,r={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},a=e.COMMENT();a.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const i={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},o={className:"literal",begin:/\bon|off|true|false|yes|no\b/},c={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},d={begin:/\[/,end:/\]/,contains:[a,o,i,c,r,"self"],relevance:0},s=/[A-Za-z0-9_-]+/,l=/"(\\"|[^"])*"/,u=/'[^']*'/,g=t.either(s,l,u),f=t.concat(g,"(\\s*\\.\\s*",g,")*",t.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[a,{className:"section",begin:/\[+/,end:/\]+/},{begin:f,className:"attr",starts:{end:/$/,contains:[a,d,o,i,c,r]}}]}}return Cn=n,Cn}var Rn,ia;function To(){if(ia)return Rn;ia=1;var n="[0-9](_*[0-9])*",e=`\\.(${n})`,t="[0-9a-fA-F](_*[0-9a-fA-F])*",r={className:"number",variants:[{begin:`(\\b(${n})((${e})|\\.)?|(${e}))[eE][+-]?(${n})[fFdD]?\\b`},{begin:`\\b(${n})((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${e})[fFdD]?\\b`},{begin:`\\b(${n})[fFdD]\\b`},{begin:`\\b0[xX]((${t})\\.?|(${t})?\\.(${t}))[pP][+-]?(${n})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${t})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function a(o,c,d){return d===-1?"":o.replace(c,s=>a(o,c,d-1))}function i(o){const c=o.regex,d="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",s=d+a("(?:<"+d+"~~~(?:\\s*,\\s*"+d+"~~~)*>)?",/~~~/g,2),p={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},y={className:"meta",begin:"@"+d,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},b={className:"params",begin:/\(/,end:/\)/,keywords:p,relevance:0,contains:[o.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:p,illegal:/<\/|#/,contains:[o.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},o.C_LINE_COMMENT_MODE,o.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[o.BACKSLASH_ESCAPE]},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,d],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[c.concat(/(?!else)/,d),/\s+/,d,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,d],className:{1:"keyword",3:"title.class"},contains:[b,o.C_LINE_COMMENT_MODE,o.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+s+"\\s+)",o.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:p,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:p,relevance:0,contains:[y,o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,r,o.C_BLOCK_COMMENT_MODE]},o.C_LINE_COMMENT_MODE,o.C_BLOCK_COMMENT_MODE]},r,y]}}return Rn=i,Rn}var An,sa;function xo(){if(sa)return An;sa=1;const n="[A-Za-z$_][0-9A-Za-z$_]*",e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],t=["true","false","null","undefined","NaN","Infinity"],r=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],a=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],i=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],o=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],c=[].concat(i,r,a);function d(s){const l=s.regex,u=(re,{after:ie})=>{const be="</"+re[0].slice(1);return re.input.indexOf(be,ie)!==-1},g=n,f={begin:"<>",end:"</>"},p=/<[A-Za-z0-9\\._:-]+\s*\/>/,y={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(re,ie)=>{const be=re[0].length+re.index,ve=re.input[be];if(ve==="<"||ve===","){ie.ignoreMatch();return}ve===">"&&(u(re,{after:be})||ie.ignoreMatch());let _e;const Ce=re.input.substring(be);if(_e=Ce.match(/^\s*=/)){ie.ignoreMatch();return}if((_e=Ce.match(/^\s+extends\s+/))&&_e.index===0){ie.ignoreMatch();return}}},b={$pattern:n,keyword:e,literal:t,built_in:c,"variable.language":o},N="[0-9](_?[0-9])*",M=`\\.(${N})`,L="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",Z={className:"number",variants:[{begin:`(\\b(${L})((${M})|\\.)?|(${M}))[eE][+-]?(${N})\\b`},{begin:`\\b(${L})\\b((${M})\\b|\\.)?|(${M})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},R={className:"subst",begin:"\\$\\{",end:"\\}",keywords:b,contains:[]},I={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[s.BACKSLASH_ESCAPE,R],subLanguage:"xml"}},P={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[s.BACKSLASH_ESCAPE,R],subLanguage:"css"}},B={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[s.BACKSLASH_ESCAPE,R],subLanguage:"graphql"}},D={className:"string",begin:"`",end:"`",contains:[s.BACKSLASH_ESCAPE,R]},H={className:"comment",variants:[s.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:g+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),s.C_BLOCK_COMMENT_MODE,s.C_LINE_COMMENT_MODE]},h=[s.APOS_STRING_MODE,s.QUOTE_STRING_MODE,I,P,B,D,{match:/\$\d+/},Z];R.contains=h.concat({begin:/\{/,end:/\}/,keywords:b,contains:["self"].concat(h)});const v=[].concat(H,R.contains),k=v.concat([{begin:/(\s*)\(/,end:/\)/,keywords:b,contains:["self"].concat(v)}]),C={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:b,contains:k},E={variants:[{match:[/class/,/\s+/,g,/\s+/,/extends/,/\s+/,l.concat(g,"(",l.concat(/\./,g),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,g],scope:{1:"keyword",3:"title.class"}}]},S={relevance:0,match:l.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...r,...a]}},T={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},$={variants:[{match:[/function/,/\s+/,g,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[C],illegal:/%/},w={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function A(re){return l.concat("(?!",re.join("|"),")")}const _={match:l.concat(/\b/,A([...i,"super","import"].map(re=>`${re}\\s*\\(`)),g,l.lookahead(/\s*\(/)),className:"title.function",relevance:0},z={begin:l.concat(/\./,l.lookahead(l.concat(g,/(?![0-9A-Za-z$_(])/))),end:g,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},G={match:[/get|set/,/\s+/,g,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},C]},ne="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+s.UNDERSCORE_IDENT_RE+")\\s*=>",ce={match:[/const|var|let/,/\s+/,g,/\s*/,/=\s*/,/(async\s*)?/,l.lookahead(ne)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[C]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:b,exports:{PARAMS_CONTAINS:k,CLASS_REFERENCE:S},illegal:/#(?![$_A-z])/,contains:[s.SHEBANG({label:"shebang",binary:"node",relevance:5}),T,s.APOS_STRING_MODE,s.QUOTE_STRING_MODE,I,P,B,D,H,{match:/\$\d+/},Z,S,{scope:"attr",match:g+l.lookahead(":"),relevance:0},ce,{begin:"("+s.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[H,s.REGEXP_MODE,{className:"function",begin:ne,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:s.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:b,contains:k}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:f.begin,end:f.end},{match:p},{begin:y.begin,"on:begin":y.isTrulyOpeningTag,end:y.end}],subLanguage:"xml",contains:[{begin:y.begin,end:y.end,skip:!0,contains:["self"]}]}]},$,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+s.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[C,s.inherit(s.TITLE_MODE,{begin:g,className:"title.function"})]},{match:/\.\.\./,relevance:0},z,{match:"\\$"+g,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[C]},_,w,E,G,{match:/\$[(.]/}]}}return An=d,An}var Mn,oa;function Co(){if(oa)return Mn;oa=1;function n(e){const t={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},r={match:/[{}[\],:]/,className:"punctuation",relevance:0},a=["true","false","null"],i={scope:"literal",beginKeywords:a.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:a},contains:[t,r,e.QUOTE_STRING_MODE,i,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}return Mn=n,Mn}var On,ca;function Ro(){if(ca)return On;ca=1;var n="[0-9](_*[0-9])*",e=`\\.(${n})`,t="[0-9a-fA-F](_*[0-9a-fA-F])*",r={className:"number",variants:[{begin:`(\\b(${n})((${e})|\\.)?|(${e}))[eE][+-]?(${n})[fFdD]?\\b`},{begin:`\\b(${n})((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${e})[fFdD]?\\b`},{begin:`\\b(${n})[fFdD]\\b`},{begin:`\\b0[xX]((${t})\\.?|(${t})?\\.(${t}))[pP][+-]?(${n})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${t})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function a(i){const o={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},c={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},d={className:"symbol",begin:i.UNDERSCORE_IDENT_RE+"@"},s={className:"subst",begin:/\$\{/,end:/\}/,contains:[i.C_NUMBER_MODE]},l={className:"variable",begin:"\\$"+i.UNDERSCORE_IDENT_RE},u={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[l,s]},{begin:"'",end:"'",illegal:/\n/,contains:[i.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[i.BACKSLASH_ESCAPE,l,s]}]};s.contains.push(u);const g={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+i.UNDERSCORE_IDENT_RE+")?"},f={className:"meta",begin:"@"+i.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[i.inherit(u,{className:"string"}),"self"]}]},p=r,y=i.COMMENT("/\\*","\\*/",{contains:[i.C_BLOCK_COMMENT_MODE]}),b={variants:[{className:"type",begin:i.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},N=b;return N.variants[1].contains=[b],b.variants[1].contains=[N],{name:"Kotlin",aliases:["kt","kts"],keywords:o,contains:[i.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),i.C_LINE_COMMENT_MODE,y,c,d,g,f,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:o,relevance:5,contains:[{begin:i.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[i.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:o,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[b,i.C_LINE_COMMENT_MODE,y],relevance:0},i.C_LINE_COMMENT_MODE,y,g,f,u,i.C_NUMBER_MODE]},y]},{begin:[/class|interface|trait/,/\s+/,i.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},i.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},g,f]},u,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
|
|
8
|
+
`},p]}}return On=a,On}var Ln,la;function Ao(){if(la)return Ln;la=1;const n=l=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:l.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[l.APOS_STRING_MODE,l.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:l.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],r=[...e,...t],a=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),c=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse(),d=i.concat(o).sort().reverse();function s(l){const u=n(l),g=d,f="and or not only",p="[\\w-]+",y="("+p+"|@\\{"+p+"\\})",b=[],N=[],M=function(v){return{className:"string",begin:"~?"+v+".*?"+v}},L=function(v,k,C){return{className:v,begin:k,relevance:C}},Z={$pattern:/[a-z-]+/,keyword:f,attribute:a.join(" ")},R={begin:"\\(",end:"\\)",contains:N,keywords:Z,relevance:0};N.push(l.C_LINE_COMMENT_MODE,l.C_BLOCK_COMMENT_MODE,M("'"),M('"'),u.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},u.HEXCOLOR,R,L("variable","@@?"+p,10),L("variable","@\\{"+p+"\\}"),L("built_in","~?`[^`]*?`"),{className:"attribute",begin:p+"\\s*:",end:":",returnBegin:!0,excludeEnd:!0},u.IMPORTANT,{beginKeywords:"and not"},u.FUNCTION_DISPATCH);const I=N.concat({begin:/\{/,end:/\}/,contains:b}),P={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(N)},B={begin:y+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},u.CSS_VARIABLE,{className:"attribute",begin:"\\b("+c.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:N}}]},D={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:Z,returnEnd:!0,contains:N,relevance:0}},Y={className:"variable",variants:[{begin:"@"+p+"\\s*:",relevance:15},{begin:"@"+p}],starts:{end:"[;}]",returnEnd:!0,contains:I}},H={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:y,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:`[<='$"]`,relevance:0,contains:[l.C_LINE_COMMENT_MODE,l.C_BLOCK_COMMENT_MODE,P,L("keyword","all\\b"),L("variable","@\\{"+p+"\\}"),{begin:"\\b("+r.join("|")+")\\b",className:"selector-tag"},u.CSS_NUMBER_MODE,L("selector-tag",y,0),L("selector-id","#"+y),L("selector-class","\\."+y,0),L("selector-tag","&",0),u.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+i.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+o.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:I},{begin:"!important"},u.FUNCTION_DISPATCH]},h={begin:p+`:(:)?(${g.join("|")})`,returnBegin:!0,contains:[H]};return b.push(l.C_LINE_COMMENT_MODE,l.C_BLOCK_COMMENT_MODE,D,Y,h,B,H,P,u.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:`[=>'/<($"]`,contains:b}}return Ln=s,Ln}var In,da;function Mo(){if(da)return In;da=1;function n(e){const t="\\[=*\\[",r="\\]=*\\]",a={begin:t,end:r,contains:["self"]},i=[e.COMMENT("--(?!"+t+")","$"),e.COMMENT("--"+t,r,{contains:[a],relevance:10})];return{name:"Lua",aliases:["pluto"],keywords:{$pattern:e.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:i.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:i}].concat(i)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:t,end:r,contains:[a],relevance:5}])}}return In=n,In}var Dn,ua;function Oo(){if(ua)return Dn;ua=1;function n(e){const t={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},r={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t]},a={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[t,r]},i={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},o={className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},c={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[t]};return{name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"},contains:[e.HASH_COMMENT_MODE,t,r,a,i,o,c]}}return Dn=n,Dn}var Bn,pa;function Lo(){if(pa)return Bn;pa=1;function n(e){const t=e.regex,r=["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","class","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","field","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","method","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"],a=/[dualxmsipngr]{0,12}/,i={$pattern:/[\w.]+/,keyword:r.join(" ")},o={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:i},c={begin:/->\{/,end:/\}/},d={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},s={scope:"variable",variants:[{begin:/\$\d/},{begin:t.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[d]},l={className:"number",variants:[{match:/0?\.[0-9][0-9_]+\b/},{match:/\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/},{match:/\b0[0-7][0-7_]*\b/},{match:/\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/},{match:/\b0b[0-1][0-1_]*\b/}],relevance:0},u=[e.BACKSLASH_ESCAPE,o,s],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],f=(b,N,M="\\1")=>{const L=M==="\\1"?M:t.concat(M,N);return t.concat(t.concat("(?:",b,")"),N,/(?:\\.|[^\\\/])*?/,L,/(?:\\.|[^\\\/])*?/,M,a)},p=(b,N,M)=>t.concat(t.concat("(?:",b,")"),N,/(?:\\.|[^\\\/])*?/,M,a),y=[s,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),c,{className:"string",contains:u,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},l,{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:f("s|tr|y",t.either(...g,{capture:!0}))},{begin:f("s|tr|y","\\(","\\)")},{begin:f("s|tr|y","\\[","\\]")},{begin:f("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:p("(?:m|qr)?",/\//,/\//)},{begin:p("m|qr",t.either(...g,{capture:!0}),/\1/)},{begin:p("m|qr",/\(/,/\)/)},{begin:p("m|qr",/\[/,/\]/)},{begin:p("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE,d]},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE,d,l]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return o.contains=y,c.contains=y,{name:"Perl",aliases:["pl","pm"],keywords:i,contains:y}}return Bn=n,Bn}var Pn,ma;function Io(){if(ma)return Pn;ma=1;function n(e){const t={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},r=/[a-zA-Z@][a-zA-Z0-9_]*/,d={"variable.language":["this","super"],$pattern:r,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},s={$pattern:r,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:d,illegal:"</",contains:[t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+s.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:s,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}return Pn=n,Pn}var $n,ga;function Do(){if(ga)return $n;ga=1;function n(e){const t=e.regex,r=/(?![A-Za-z0-9])(?![$])/,a=t.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,r),i=t.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,r),o=t.concat(/[A-Z]+/,r),c={scope:"variable",match:"\\$+"+a},d={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},s={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},l=e.inherit(e.APOS_STRING_MODE,{illegal:null}),u=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(s)}),g={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(s),"on:begin":(C,E)=>{E.data._beginMatch=C[1]||C[2]},"on:end":(C,E)=>{E.data._beginMatch!==C[1]&&E.ignoreMatch()}},f=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),p=`[
|
|
9
|
+
]`,y={scope:"string",variants:[u,l,g,f]},b={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},N=["false","null","true"],M=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],L=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],R={keyword:M,literal:(C=>{const E=[];return C.forEach(S=>{E.push(S),S.toLowerCase()===S?E.push(S.toUpperCase()):E.push(S.toLowerCase())}),E})(N),built_in:L},I=C=>C.map(E=>E.replace(/\|\d+$/,"")),P={variants:[{match:[/new/,t.concat(p,"+"),t.concat("(?!",I(L).join("\\b|"),"\\b)"),i],scope:{1:"keyword",4:"title.class"}}]},B=t.concat(a,"\\b(?!\\()"),D={variants:[{match:[t.concat(/::/,t.lookahead(/(?!class\b)/)),B],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[i,t.concat(/::/,t.lookahead(/(?!class\b)/)),B],scope:{1:"title.class",3:"variable.constant"}},{match:[i,t.concat("::",t.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[i,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},Y={scope:"attr",match:t.concat(a,t.lookahead(":"),t.lookahead(/(?!::)/))},H={relevance:0,begin:/\(/,end:/\)/,keywords:R,contains:[Y,c,D,e.C_BLOCK_COMMENT_MODE,y,b,P]},h={relevance:0,match:[/\b/,t.concat("(?!fn\\b|function\\b|",I(M).join("\\b|"),"|",I(L).join("\\b|"),"\\b)"),a,t.concat(p,"*"),t.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[H]};H.contains.push(h);const v=[Y,D,e.C_BLOCK_COMMENT_MODE,y,b,P],k={begin:t.concat(/#\[\s*\\?/,t.either(i,o)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:N,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:N,keyword:["new","array"]},contains:["self",...v]},...v,{scope:"meta",variants:[{match:i},{match:o}]}]};return{case_insensitive:!1,keywords:R,contains:[k,e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},d,{scope:"variable.language",match:/\$this\b/},c,h,D,{match:[/const/,/\s/,a],scope:{1:"keyword",3:"variable.constant"}},P,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:R,contains:["self",k,c,D,e.C_BLOCK_COMMENT_MODE,y,b]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},y,b]}}return $n=n,$n}var Fn,fa;function Bo(){if(fa)return Fn;fa=1;function n(e){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}return Fn=n,Fn}var Un,ha;function Po(){if(ha)return Un;ha=1;function n(e){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}return Un=n,Un}var zn,ba;function $o(){if(ba)return zn;ba=1;function n(e){const t=e.regex,r=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),a=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],d={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:a,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},s={className:"meta",begin:/^(>>>|\.\.\.) /},l={className:"subst",begin:/\{/,end:/\}/,keywords:d,illegal:/#/},u={begin:/\{\{/,relevance:0},g={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,s],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,s],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,s,u,l]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,s,u,l]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,u,l]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,u,l]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},f="[0-9](_?[0-9])*",p=`(\\b(${f}))?\\.(${f})|\\b(${f})\\.`,y=`\\b|${a.join("|")}`,b={className:"number",relevance:0,variants:[{begin:`(\\b(${f})|(${p}))[eE][+-]?(${f})[jJ]?(?=${y})`},{begin:`(${p})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${y})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${y})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${y})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${y})`},{begin:`\\b(${f})[jJ](?=${y})`}]},N={className:"comment",begin:t.lookahead(/# type:/),end:/$/,keywords:d,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},M={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:d,contains:["self",s,b,g,e.HASH_COMMENT_MODE]}]};return l.contains=[g,b,s],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:d,illegal:/(<\/|\?)|=>/,contains:[s,b,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},g,N,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,r],scope:{1:"keyword",3:"title.function"},contains:[M]},{variants:[{match:[/\bclass/,/\s+/,r,/\s*/,/\(\s*/,r,/\s*\)/]},{match:[/\bclass/,/\s+/,r]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[b,M,g]}]}}return zn=n,zn}var qn,Ea;function Fo(){if(Ea)return qn;Ea=1;function n(e){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}return qn=n,qn}var Hn,_a;function Uo(){if(_a)return Hn;_a=1;function n(e){const t=e.regex,r=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,a=t.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),i=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,o=t.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/);return{name:"R",keywords:{$pattern:r,keyword:"function if in break next repeat else for while",literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"},contains:[e.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,starts:{end:t.lookahead(t.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{scope:"variable",variants:[{match:r},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]}),e.HASH_COMMENT_MODE,{scope:"string",contains:[e.BACKSLASH_ESCAPE],variants:[e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{1:"operator",2:"number"},match:[i,a]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,a]},{scope:{1:"punctuation",2:"number"},match:[o,a]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,a]}]},{scope:{3:"operator"},match:[r,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:i},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:o},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}}return Hn=n,Hn}var Gn,ya;function zo(){if(ya)return Gn;ya=1;function n(e){const t=e.regex,r=/(r#)?/,a=t.concat(r,e.UNDERSCORE_IDENT_RE),i=t.concat(r,e.IDENT_RE),o={className:"title.function.invoke",relevance:0,begin:t.concat(/\b/,/(?!let|for|while|if|else|match\b)/,i,t.lookahead(/\s*\(/))},c="([ui](8|16|32|64|128|size)|f(32|64))?",d=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],s=["true","false","Some","None","Ok","Err"],l=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],u=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",type:u,keyword:d,literal:s,built_in:l},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)"+c},{begin:"\\b0o([0-7_]+)"+c},{begin:"\\b0x([A-Fa-f0-9_]+)"+c},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+c}],relevance:0},{begin:[/fn/,/\s+/,a],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,a],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,a,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,a],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,a],className:{1:"keyword",3:"title.class"}},{begin:e.IDENT_RE+"::",keywords:{keyword:"Self",built_in:l,type:u}},{className:"punctuation",begin:"->"},o]}}return Gn=n,Gn}var Kn,wa;function qo(){if(wa)return Kn;wa=1;const n=s=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:s.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[s.APOS_STRING_MODE,s.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:s.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],r=[...e,...t],a=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),c=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function d(s){const l=n(s),u=o,g=i,f="@[a-z-]+",p="and or not only",b={className:"variable",begin:"(\\$"+"[a-zA-Z-][a-zA-Z0-9_-]*"+")\\b",relevance:0};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[s.C_LINE_COMMENT_MODE,s.C_BLOCK_COMMENT_MODE,l.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},l.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+r.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+g.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+u.join("|")+")"},b,{begin:/\(/,end:/\)/,contains:[l.CSS_NUMBER_MODE]},l.CSS_VARIABLE,{className:"attribute",begin:"\\b("+c.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,relevance:0,contains:[l.BLOCK_COMMENT,b,l.HEXCOLOR,l.CSS_NUMBER_MODE,s.QUOTE_STRING_MODE,s.APOS_STRING_MODE,l.IMPORTANT,l.FUNCTION_DISPATCH]},{begin:"@(page|font-face)",keywords:{$pattern:f,keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:p,attribute:a.join(" ")},contains:[{begin:f,className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},b,s.QUOTE_STRING_MODE,s.APOS_STRING_MODE,l.HEXCOLOR,l.CSS_NUMBER_MODE]},l.FUNCTION_DISPATCH]}}return Kn=d,Kn}var Wn,va;function Ho(){if(va)return Wn;va=1;function n(e){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}return Wn=n,Wn}var Zn,Sa;function Go(){if(Sa)return Zn;Sa=1;function n(e){const t=e.regex,r=e.COMMENT("--","$"),a={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},i={begin:/"/,end:/"/,contains:[{match:/""/}]},o=["true","false","unknown"],c=["double precision","large object","with timezone","without timezone"],d=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],s=["add","asc","collation","desc","final","first","last","view"],l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],u=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],g=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],f=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],p=u,y=[...l,...s].filter(I=>!u.includes(I)),b={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},N={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},M={match:t.concat(/\b/,t.either(...p),/\s*\(/),relevance:0,keywords:{built_in:p}};function L(I){return t.concat(/\b/,t.either(...I.map(P=>P.replace(/\s+/,"\\s+"))),/\b/)}const Z={scope:"keyword",match:L(f),relevance:0};function R(I,{exceptions:P,when:B}={}){const D=B;return P=P||[],I.map(Y=>Y.match(/\|\d+$/)||P.includes(Y)?Y:D(Y)?`${Y}|0`:Y)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:R(y,{when:I=>I.length<3}),literal:o,type:d,built_in:g},contains:[{scope:"type",match:L(c)},Z,M,b,a,i,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,r,N]}}return Zn=n,Zn}var Yn,ka;function Ko(){if(ka)return Yn;ka=1;function n(B){return B?typeof B=="string"?B:B.source:null}function e(B){return t("(?=",B,")")}function t(...B){return B.map(Y=>n(Y)).join("")}function r(B){const D=B[B.length-1];return typeof D=="object"&&D.constructor===Object?(B.splice(B.length-1,1),D):{}}function a(...B){return"("+(r(B).capture?"":"?:")+B.map(H=>n(H)).join("|")+")"}const i=B=>t(/\b/,B,/\w$/.test(B)?/\b/:/\B/),o=["Protocol","Type"].map(i),c=["init","self"].map(i),d=["Any","Self"],s=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],l=["false","nil","true"],u=["assignment","associativity","higherThan","left","lowerThan","none","right"],g=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],f=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],p=a(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),y=a(p,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),b=t(p,y,"*"),N=a(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),M=a(N,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),L=t(N,M,"*"),Z=t(/[A-Z]/,M,"*"),R=["attached","autoclosure",t(/convention\(/,a("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",t(/objc\(/,L,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],I=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function P(B){const D={match:/\s+/,relevance:0},Y=B.COMMENT("/\\*","\\*/",{contains:["self"]}),H=[B.C_LINE_COMMENT_MODE,Y],h={match:[/\./,a(...o,...c)],className:{2:"keyword"}},v={match:t(/\./,a(...s)),relevance:0},k=s.filter(pe=>typeof pe=="string").concat(["_|0"]),C=s.filter(pe=>typeof pe!="string").concat(d).map(i),E={variants:[{className:"keyword",match:a(...C,...c)}]},S={$pattern:a(/\b\w+/,/#\w+/),keyword:k.concat(g),literal:l},T=[h,v,E],$={match:t(/\./,a(...f)),relevance:0},w={className:"built_in",match:t(/\b/,a(...f),/(?=\()/)},A=[$,w],_={match:/->/,relevance:0},z={className:"operator",relevance:0,variants:[{match:b},{match:`\\.(\\.|${y})+`}]},G=[_,z],ne="([0-9]_*)+",ce="([0-9a-fA-F]_*)+",re={className:"number",relevance:0,variants:[{match:`\\b(${ne})(\\.(${ne}))?([eE][+-]?(${ne}))?\\b`},{match:`\\b0x(${ce})(\\.(${ce}))?([pP][+-]?(${ne}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},ie=(pe="")=>({className:"subst",variants:[{match:t(/\\/,pe,/[0\\tnr"']/)},{match:t(/\\/,pe,/u\{[0-9a-fA-F]{1,8}\}/)}]}),be=(pe="")=>({className:"subst",match:t(/\\/,pe,/[\t ]*(?:[\r\n]|\r\n)/)}),ve=(pe="")=>({className:"subst",label:"interpol",begin:t(/\\/,pe,/\(/),end:/\)/}),_e=(pe="")=>({begin:t(pe,/"""/),end:t(/"""/,pe),contains:[ie(pe),be(pe),ve(pe)]}),Ce=(pe="")=>({begin:t(pe,/"/),end:t(/"/,pe),contains:[ie(pe),ve(pe)]}),Ie={className:"string",variants:[_e(),_e("#"),_e("##"),_e("###"),Ce(),Ce("#"),Ce("##"),Ce("###")]},Ue=[B.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[B.BACKSLASH_ESCAPE]}],ht={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:Ue},F=pe=>{const pt=t(pe,/\//),je=t(/\//,pe);return{begin:pt,end:je,contains:[...Ue,{scope:"comment",begin:`#(?!.*${je})`,end:/$/}]}},K={scope:"regexp",variants:[F("###"),F("##"),F("#"),ht]},le={match:t(/`/,L,/`/)},se={className:"variable",match:/\$\d+/},Se={className:"variable",match:`\\$${M}+`},Me=[le,se,Se],Re={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:I,contains:[...G,re,Ie]}]}},Je={scope:"keyword",match:t(/@/,a(...R),e(a(/\(/,/\s+/)))},$e={scope:"meta",match:t(/@/,L)},Be=[Re,Je,$e],ge={match:e(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:t(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,M,"+")},{className:"type",match:Z,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:t(/\s+&\s+/,e(Z)),relevance:0}]},ut={begin:/</,end:/>/,keywords:S,contains:[...H,...T,...Be,_,ge]};ge.contains.push(ut);const Lt={match:t(L,/\s*:/),keywords:"_|0",relevance:0},It={begin:/\(/,end:/\)/,relevance:0,keywords:S,contains:["self",Lt,...H,K,...T,...A,...G,re,Ie,...Me,...Be,ge]},bt={begin:/</,end:/>/,keywords:"repeat each",contains:[...H,ge]},rn={begin:a(e(t(L,/\s*:/)),e(t(L,/\s+/,L,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:L}]},Dt={begin:/\(/,end:/\)/,keywords:S,contains:[rn,...H,...T,...G,re,Ie,...Be,ge,It],endsParent:!0,illegal:/["']/},an={match:[/(func|macro)/,/\s+/,a(le.match,L,b)],className:{1:"keyword",3:"title.function"},contains:[bt,Dt,D],illegal:[/\[/,/%/]},Bt={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[bt,Dt,D],illegal:/\[|%/},sn={match:[/operator/,/\s+/,b],className:{1:"keyword",3:"title"}},on={begin:[/precedencegroup/,/\s+/,Z],className:{1:"keyword",3:"title"},contains:[ge],keywords:[...u,...l],end:/}/},cn={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},Et={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},Pt={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,L,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:S,contains:[bt,...T,{begin:/:/,end:/\{/,keywords:S,contains:[{scope:"title.class.inherited",match:Z},...T],relevance:0}]};for(const pe of Ie.variants){const pt=pe.contains.find(et=>et.label==="interpol");pt.keywords=S;const je=[...T,...A,...G,re,Ie,...Me];pt.contains=[...je,{begin:/\(/,end:/\)/,contains:["self",...je]}]}return{name:"Swift",keywords:S,contains:[...H,an,Bt,cn,Et,Pt,sn,on,{beginKeywords:"import",end:/$/,contains:[...H],relevance:0},K,...T,...A,...G,re,Ie,...Me,...Be,ge,It]}}return Yn=P,Yn}var Vn,Na;function Wo(){if(Na)return Vn;Na=1;function n(e){const t="true false yes no null",r="[\\w#;/?:@&=+$,.~*'()[\\]]+",a={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},i={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},o={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},c={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,i]},d=e.inherit(c,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),f={className:"number",begin:"\\b"+"[0-9]{4}(-[0-9][0-9]){0,2}"+"([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?"+"(\\.[0-9]*)?"+"([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?"+"\\b"},p={end:",",endsWithParent:!0,excludeEnd:!0,keywords:t,relevance:0},y={begin:/\{/,end:/\}/,contains:[p],illegal:"\\n",relevance:0},b={begin:"\\[",end:"\\]",contains:[p],illegal:"\\n",relevance:0},N=[a,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+r},{className:"type",begin:"!<"+r+">"},{className:"type",begin:"!"+r},{className:"type",begin:"!!"+r},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:t,keywords:{literal:t}},f,{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},y,b,o,c],M=[...N];return M.pop(),M.push(d),p.contains=M,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:N}}return Vn=n,Vn}var Qn,Ta;function Zo(){if(Ta)return Qn;Ta=1;const n="[A-Za-z$_][0-9A-Za-z$_]*",e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],t=["true","false","null","undefined","NaN","Infinity"],r=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],a=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],i=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],o=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],c=[].concat(i,r,a);function d(l){const u=l.regex,g=(ie,{after:be})=>{const ve="</"+ie[0].slice(1);return ie.input.indexOf(ve,be)!==-1},f=n,p={begin:"<>",end:"</>"},y=/<[A-Za-z0-9\\._:-]+\s*\/>/,b={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(ie,be)=>{const ve=ie[0].length+ie.index,_e=ie.input[ve];if(_e==="<"||_e===","){be.ignoreMatch();return}_e===">"&&(g(ie,{after:ve})||be.ignoreMatch());let Ce;const Ie=ie.input.substring(ve);if(Ce=Ie.match(/^\s*=/)){be.ignoreMatch();return}if((Ce=Ie.match(/^\s+extends\s+/))&&Ce.index===0){be.ignoreMatch();return}}},N={$pattern:n,keyword:e,literal:t,built_in:c,"variable.language":o},M="[0-9](_?[0-9])*",L=`\\.(${M})`,Z="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",R={className:"number",variants:[{begin:`(\\b(${Z})((${L})|\\.)?|(${L}))[eE][+-]?(${M})\\b`},{begin:`\\b(${Z})\\b((${L})\\b|\\.)?|(${L})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},I={className:"subst",begin:"\\$\\{",end:"\\}",keywords:N,contains:[]},P={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[l.BACKSLASH_ESCAPE,I],subLanguage:"xml"}},B={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[l.BACKSLASH_ESCAPE,I],subLanguage:"css"}},D={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[l.BACKSLASH_ESCAPE,I],subLanguage:"graphql"}},Y={className:"string",begin:"`",end:"`",contains:[l.BACKSLASH_ESCAPE,I]},h={className:"comment",variants:[l.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:f+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),l.C_BLOCK_COMMENT_MODE,l.C_LINE_COMMENT_MODE]},v=[l.APOS_STRING_MODE,l.QUOTE_STRING_MODE,P,B,D,Y,{match:/\$\d+/},R];I.contains=v.concat({begin:/\{/,end:/\}/,keywords:N,contains:["self"].concat(v)});const k=[].concat(h,I.contains),C=k.concat([{begin:/(\s*)\(/,end:/\)/,keywords:N,contains:["self"].concat(k)}]),E={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:N,contains:C},S={variants:[{match:[/class/,/\s+/,f,/\s+/,/extends/,/\s+/,u.concat(f,"(",u.concat(/\./,f),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,f],scope:{1:"keyword",3:"title.class"}}]},T={relevance:0,match:u.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...r,...a]}},$={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},w={variants:[{match:[/function/,/\s+/,f,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[E],illegal:/%/},A={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function _(ie){return u.concat("(?!",ie.join("|"),")")}const z={match:u.concat(/\b/,_([...i,"super","import"].map(ie=>`${ie}\\s*\\(`)),f,u.lookahead(/\s*\(/)),className:"title.function",relevance:0},G={begin:u.concat(/\./,u.lookahead(u.concat(f,/(?![0-9A-Za-z$_(])/))),end:f,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},ne={match:[/get|set/,/\s+/,f,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},E]},ce="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+l.UNDERSCORE_IDENT_RE+")\\s*=>",re={match:[/const|var|let/,/\s+/,f,/\s*/,/=\s*/,/(async\s*)?/,u.lookahead(ce)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[E]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:N,exports:{PARAMS_CONTAINS:C,CLASS_REFERENCE:T},illegal:/#(?![$_A-z])/,contains:[l.SHEBANG({label:"shebang",binary:"node",relevance:5}),$,l.APOS_STRING_MODE,l.QUOTE_STRING_MODE,P,B,D,Y,h,{match:/\$\d+/},R,T,{scope:"attr",match:f+u.lookahead(":"),relevance:0},re,{begin:"("+l.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[h,l.REGEXP_MODE,{className:"function",begin:ce,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:l.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:N,contains:C}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:p.begin,end:p.end},{match:y},{begin:b.begin,"on:begin":b.isTrulyOpeningTag,end:b.end}],subLanguage:"xml",contains:[{begin:b.begin,end:b.end,skip:!0,contains:["self"]}]}]},w,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+l.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[E,l.inherit(l.TITLE_MODE,{begin:f,className:"title.function"})]},{match:/\.\.\./,relevance:0},G,{match:"\\$"+f,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[E]},z,A,S,ne,{match:/\$[(.]/}]}}function s(l){const u=l.regex,g=d(l),f=n,p=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],y={begin:[/namespace/,/\s+/,l.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},b={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:p},contains:[g.exports.CLASS_REFERENCE]},N={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},M=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],L={$pattern:n,keyword:e.concat(M),literal:t,built_in:c.concat(p),"variable.language":o},Z={className:"meta",begin:"@"+f},R=(D,Y,H)=>{const h=D.contains.findIndex(v=>v.label===Y);if(h===-1)throw new Error("can not find mode to replace");D.contains.splice(h,1,H)};Object.assign(g.keywords,L),g.exports.PARAMS_CONTAINS.push(Z);const I=g.contains.find(D=>D.scope==="attr"),P=Object.assign({},I,{match:u.concat(f,u.lookahead(/\s*\?:/))});g.exports.PARAMS_CONTAINS.push([g.exports.CLASS_REFERENCE,I,P]),g.contains=g.contains.concat([Z,y,b,P]),R(g,"shebang",l.SHEBANG()),R(g,"use_strict",N);const B=g.contains.find(D=>D.label==="func.def");return B.relevance=0,Object.assign(g,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),g}return Qn=s,Qn}var Xn,xa;function Yo(){if(xa)return Xn;xa=1;function n(e){const t=e.regex,r={className:"string",begin:/"(""|[^/n])"C\b/},a={className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},i=/\d{1,2}\/\d{1,2}\/\d{4}/,o=/\d{4}-\d{1,2}-\d{1,2}/,c=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,d=/\d{1,2}(:\d{1,2}){1,2}/,s={className:"literal",variants:[{begin:t.concat(/# */,t.either(o,i),/ *#/)},{begin:t.concat(/# */,d,/ *#/)},{begin:t.concat(/# */,c,/ *#/)},{begin:t.concat(/# */,t.either(o,i),/ +/,t.either(c,d),/ *#/)}]},l={className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},u={className:"label",begin:/^\w+:/},g=e.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),f=e.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[r,a,s,l,u,g,f,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[f]}]}}return Xn=n,Xn}var Jn,Ca;function Vo(){if(Ca)return Jn;Ca=1;function n(e){e.regex;const t=e.COMMENT(/\(;/,/;\)/);t.contains.push("self");const r=e.COMMENT(/;;/,/$/),a=["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"],i={begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},o={className:"variable",begin:/\$[\w_]+/},c={match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},d={className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/},s={match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},l={className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/};return{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:a},contains:[r,t,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},o,c,i,e.QUOTE_STRING_MODE,s,l,d]}}return Jn=n,Jn}var jn,Ra;function Qo(){if(Ra)return jn;Ra=1;var n=mo();return n.registerLanguage("xml",go()),n.registerLanguage("bash",fo()),n.registerLanguage("c",ho()),n.registerLanguage("cpp",bo()),n.registerLanguage("csharp",Eo()),n.registerLanguage("css",_o()),n.registerLanguage("markdown",yo()),n.registerLanguage("diff",wo()),n.registerLanguage("ruby",vo()),n.registerLanguage("go",So()),n.registerLanguage("graphql",ko()),n.registerLanguage("ini",No()),n.registerLanguage("java",To()),n.registerLanguage("javascript",xo()),n.registerLanguage("json",Co()),n.registerLanguage("kotlin",Ro()),n.registerLanguage("less",Ao()),n.registerLanguage("lua",Mo()),n.registerLanguage("makefile",Oo()),n.registerLanguage("perl",Lo()),n.registerLanguage("objectivec",Io()),n.registerLanguage("php",Do()),n.registerLanguage("php-template",Bo()),n.registerLanguage("plaintext",Po()),n.registerLanguage("python",$o()),n.registerLanguage("python-repl",Fo()),n.registerLanguage("r",Uo()),n.registerLanguage("rust",zo()),n.registerLanguage("scss",qo()),n.registerLanguage("shell",Ho()),n.registerLanguage("sql",Go()),n.registerLanguage("swift",Ko()),n.registerLanguage("yaml",Wo()),n.registerLanguage("typescript",Zo()),n.registerLanguage("vbnet",Yo()),n.registerLanguage("wasm",Vo()),n.HighlightJS=n,n.default=n,jn=n,jn}var Xo=Qo();const Kt=po(Xo);function mr(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var ct=mr();function ii(n){ct=n}var xt={exec:()=>null};function ue(n,e=""){let t=typeof n=="string"?n:n.source;const r={replace:(a,i)=>{let o=typeof i=="string"?i:i.source;return o=o.replace(De.caret,"$1"),t=t.replace(a,o),r},getRegex:()=>new RegExp(t,e)};return r}var De={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:n=>new RegExp(`^( {0,3}${n})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}#`),htmlBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}<(?:[a-z].*>|!--)`,"i")},Jo=/^(?:[ \t]*(?:\n|$))+/,jo=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,ec=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,At=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,tc=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,gr=/(?:[*+-]|\d{1,9}[.)])/,si=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,oi=ue(si).replace(/bull/g,gr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),nc=ue(si).replace(/bull/g,gr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),fr=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,rc=/^[^\n]+/,hr=/(?!\s*\])(?:\\.|[^\[\]\\])+/,ac=ue(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",hr).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),ic=ue(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,gr).getRegex(),jt="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",br=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,sc=ue("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",br).replace("tag",jt).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),ci=ue(fr).replace("hr",At).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",jt).getRegex(),oc=ue(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",ci).getRegex(),Er={blockquote:oc,code:jo,def:ac,fences:ec,heading:tc,hr:At,html:sc,lheading:oi,list:ic,newline:Jo,paragraph:ci,table:xt,text:rc},Aa=ue("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",At).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",jt).getRegex(),cc={...Er,lheading:nc,table:Aa,paragraph:ue(fr).replace("hr",At).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Aa).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",jt).getRegex()},lc={...Er,html:ue(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",br).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:xt,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:ue(fr).replace("hr",At).replace("heading",` *#{1,6} *[^
|
|
10
|
+
]`).replace("lheading",oi).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},dc=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,uc=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,li=/^( {2,}|\\)\n(?!\s*$)/,pc=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,en=/[\p{P}\p{S}]/u,_r=/[\s\p{P}\p{S}]/u,di=/[^\s\p{P}\p{S}]/u,mc=ue(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,_r).getRegex(),ui=/(?!~)[\p{P}\p{S}]/u,gc=/(?!~)[\s\p{P}\p{S}]/u,fc=/(?:[^\s\p{P}\p{S}]|~)/u,hc=/\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g,pi=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,bc=ue(pi,"u").replace(/punct/g,en).getRegex(),Ec=ue(pi,"u").replace(/punct/g,ui).getRegex(),mi="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",_c=ue(mi,"gu").replace(/notPunctSpace/g,di).replace(/punctSpace/g,_r).replace(/punct/g,en).getRegex(),yc=ue(mi,"gu").replace(/notPunctSpace/g,fc).replace(/punctSpace/g,gc).replace(/punct/g,ui).getRegex(),wc=ue("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,di).replace(/punctSpace/g,_r).replace(/punct/g,en).getRegex(),vc=ue(/\\(punct)/,"gu").replace(/punct/g,en).getRegex(),Sc=ue(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),kc=ue(br).replace("(?:-->|$)","-->").getRegex(),Nc=ue("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",kc).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Yt=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,Tc=ue(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",Yt).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),gi=ue(/^!?\[(label)\]\[(ref)\]/).replace("label",Yt).replace("ref",hr).getRegex(),fi=ue(/^!?\[(ref)\](?:\[\])?/).replace("ref",hr).getRegex(),xc=ue("reflink|nolink(?!\\()","g").replace("reflink",gi).replace("nolink",fi).getRegex(),yr={_backpedal:xt,anyPunctuation:vc,autolink:Sc,blockSkip:hc,br:li,code:uc,del:xt,emStrongLDelim:bc,emStrongRDelimAst:_c,emStrongRDelimUnd:wc,escape:dc,link:Tc,nolink:fi,punctuation:mc,reflink:gi,reflinkSearch:xc,tag:Nc,text:pc,url:xt},Cc={...yr,link:ue(/^!?\[(label)\]\((.*?)\)/).replace("label",Yt).getRegex(),reflink:ue(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Yt).getRegex()},or={...yr,emStrongRDelimAst:yc,emStrongLDelim:Ec,url:ue(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/},Rc={...or,br:ue(li).replace("{2,}","*").getRegex(),text:ue(or.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Gt={normal:Er,gfm:cc,pedantic:lc},vt={normal:yr,gfm:or,breaks:Rc,pedantic:Cc},Ac={"&":"&","<":"<",">":">",'"':""","'":"'"},Ma=n=>Ac[n];function Ge(n,e){if(e){if(De.escapeTest.test(n))return n.replace(De.escapeReplace,Ma)}else if(De.escapeTestNoEncode.test(n))return n.replace(De.escapeReplaceNoEncode,Ma);return n}function Oa(n){try{n=encodeURI(n).replace(De.percentDecode,"%")}catch{return null}return n}function La(n,e){const t=n.replace(De.findPipe,(i,o,c)=>{let d=!1,s=o;for(;--s>=0&&c[s]==="\\";)d=!d;return d?"|":" |"}),r=t.split(De.splitPipe);let a=0;if(r[0].trim()||r.shift(),r.length>0&&!r.at(-1)?.trim()&&r.pop(),e)if(r.length>e)r.splice(e);else for(;r.length<e;)r.push("");for(;a<r.length;a++)r[a]=r[a].trim().replace(De.slashPipe,"|");return r}function St(n,e,t){const r=n.length;if(r===0)return"";let a=0;for(;a<r&&n.charAt(r-a-1)===e;)a++;return n.slice(0,r-a)}function Mc(n,e){if(n.indexOf(e[1])===-1)return-1;let t=0;for(let r=0;r<n.length;r++)if(n[r]==="\\")r++;else if(n[r]===e[0])t++;else if(n[r]===e[1]&&(t--,t<0))return r;return t>0?-2:-1}function Ia(n,e,t,r,a){const i=e.href,o=e.title||null,c=n[1].replace(a.other.outputLinkReplace,"$1");r.state.inLink=!0;const d={type:n[0].charAt(0)==="!"?"image":"link",raw:t,href:i,title:o,text:c,tokens:r.inlineTokens(c)};return r.state.inLink=!1,d}function Oc(n,e,t){const r=n.match(t.other.indentCodeCompensation);if(r===null)return e;const a=r[1];return e.split(`
|
|
11
|
+
`).map(i=>{const o=i.match(t.other.beginningSpace);if(o===null)return i;const[c]=o;return c.length>=a.length?i.slice(a.length):i}).join(`
|
|
12
|
+
`)}var Vt=class{options;rules;lexer;constructor(n){this.options=n||ct}space(n){const e=this.rules.block.newline.exec(n);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(n){const e=this.rules.block.code.exec(n);if(e){const t=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?t:St(t,`
|
|
13
|
+
`)}}}fences(n){const e=this.rules.block.fences.exec(n);if(e){const t=e[0],r=Oc(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:r}}}heading(n){const e=this.rules.block.heading.exec(n);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){const r=St(t,"#");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(t=r.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(n){const e=this.rules.block.hr.exec(n);if(e)return{type:"hr",raw:St(e[0],`
|
|
14
|
+
`)}}blockquote(n){const e=this.rules.block.blockquote.exec(n);if(e){let t=St(e[0],`
|
|
15
|
+
`).split(`
|
|
16
|
+
`),r="",a="";const i=[];for(;t.length>0;){let o=!1;const c=[];let d;for(d=0;d<t.length;d++)if(this.rules.other.blockquoteStart.test(t[d]))c.push(t[d]),o=!0;else if(!o)c.push(t[d]);else break;t=t.slice(d);const s=c.join(`
|
|
17
|
+
`),l=s.replace(this.rules.other.blockquoteSetextReplace,`
|
|
18
|
+
$1`).replace(this.rules.other.blockquoteSetextReplace2,"");r=r?`${r}
|
|
19
|
+
${s}`:s,a=a?`${a}
|
|
20
|
+
${l}`:l;const u=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(l,i,!0),this.lexer.state.top=u,t.length===0)break;const g=i.at(-1);if(g?.type==="code")break;if(g?.type==="blockquote"){const f=g,p=f.raw+`
|
|
21
|
+
`+t.join(`
|
|
22
|
+
`),y=this.blockquote(p);i[i.length-1]=y,r=r.substring(0,r.length-f.raw.length)+y.raw,a=a.substring(0,a.length-f.text.length)+y.text;break}else if(g?.type==="list"){const f=g,p=f.raw+`
|
|
23
|
+
`+t.join(`
|
|
24
|
+
`),y=this.list(p);i[i.length-1]=y,r=r.substring(0,r.length-g.raw.length)+y.raw,a=a.substring(0,a.length-f.raw.length)+y.raw,t=p.substring(i.at(-1).raw.length).split(`
|
|
25
|
+
`);continue}}return{type:"blockquote",raw:r,tokens:i,text:a}}}list(n){let e=this.rules.block.list.exec(n);if(e){let t=e[1].trim();const r=t.length>1,a={type:"list",raw:"",ordered:r,start:r?+t.slice(0,-1):"",loose:!1,items:[]};t=r?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=r?t:"[*+-]");const i=this.rules.other.listItemRegex(t);let o=!1;for(;n;){let d=!1,s="",l="";if(!(e=i.exec(n))||this.rules.block.hr.test(n))break;s=e[0],n=n.substring(s.length);let u=e[2].split(`
|
|
26
|
+
`,1)[0].replace(this.rules.other.listReplaceTabs,N=>" ".repeat(3*N.length)),g=n.split(`
|
|
27
|
+
`,1)[0],f=!u.trim(),p=0;if(this.options.pedantic?(p=2,l=u.trimStart()):f?p=e[1].length+1:(p=e[2].search(this.rules.other.nonSpaceChar),p=p>4?1:p,l=u.slice(p),p+=e[1].length),f&&this.rules.other.blankLine.test(g)&&(s+=g+`
|
|
28
|
+
`,n=n.substring(g.length+1),d=!0),!d){const N=this.rules.other.nextBulletRegex(p),M=this.rules.other.hrRegex(p),L=this.rules.other.fencesBeginRegex(p),Z=this.rules.other.headingBeginRegex(p),R=this.rules.other.htmlBeginRegex(p);for(;n;){const I=n.split(`
|
|
29
|
+
`,1)[0];let P;if(g=I,this.options.pedantic?(g=g.replace(this.rules.other.listReplaceNesting," "),P=g):P=g.replace(this.rules.other.tabCharGlobal," "),L.test(g)||Z.test(g)||R.test(g)||N.test(g)||M.test(g))break;if(P.search(this.rules.other.nonSpaceChar)>=p||!g.trim())l+=`
|
|
30
|
+
`+P.slice(p);else{if(f||u.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||L.test(u)||Z.test(u)||M.test(u))break;l+=`
|
|
31
|
+
`+g}!f&&!g.trim()&&(f=!0),s+=I+`
|
|
32
|
+
`,n=n.substring(I.length+1),u=P.slice(p)}}a.loose||(o?a.loose=!0:this.rules.other.doubleBlankLine.test(s)&&(o=!0));let y=null,b;this.options.gfm&&(y=this.rules.other.listIsTask.exec(l),y&&(b=y[0]!=="[ ] ",l=l.replace(this.rules.other.listReplaceTask,""))),a.items.push({type:"list_item",raw:s,task:!!y,checked:b,loose:!1,text:l,tokens:[]}),a.raw+=s}const c=a.items.at(-1);if(c)c.raw=c.raw.trimEnd(),c.text=c.text.trimEnd();else return;a.raw=a.raw.trimEnd();for(let d=0;d<a.items.length;d++)if(this.lexer.state.top=!1,a.items[d].tokens=this.lexer.blockTokens(a.items[d].text,[]),!a.loose){const s=a.items[d].tokens.filter(u=>u.type==="space"),l=s.length>0&&s.some(u=>this.rules.other.anyLine.test(u.raw));a.loose=l}if(a.loose)for(let d=0;d<a.items.length;d++)a.items[d].loose=!0;return a}}html(n){const e=this.rules.block.html.exec(n);if(e)return{type:"html",block:!0,raw:e[0],pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:e[0]}}def(n){const e=this.rules.block.def.exec(n);if(e){const t=e[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),r=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",a=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:e[0],href:r,title:a}}}table(n){const e=this.rules.block.table.exec(n);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;const t=La(e[1]),r=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),a=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(`
|
|
33
|
+
`):[],i={type:"table",raw:e[0],header:[],align:[],rows:[]};if(t.length===r.length){for(const o of r)this.rules.other.tableAlignRight.test(o)?i.align.push("right"):this.rules.other.tableAlignCenter.test(o)?i.align.push("center"):this.rules.other.tableAlignLeft.test(o)?i.align.push("left"):i.align.push(null);for(let o=0;o<t.length;o++)i.header.push({text:t[o],tokens:this.lexer.inline(t[o]),header:!0,align:i.align[o]});for(const o of a)i.rows.push(La(o,i.header.length).map((c,d)=>({text:c,tokens:this.lexer.inline(c),header:!1,align:i.align[d]})));return i}}lheading(n){const e=this.rules.block.lheading.exec(n);if(e)return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(n){const e=this.rules.block.paragraph.exec(n);if(e){const t=e[1].charAt(e[1].length-1)===`
|
|
34
|
+
`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(n){const e=this.rules.block.text.exec(n);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(n){const e=this.rules.inline.escape.exec(n);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(n){const e=this.rules.inline.tag.exec(n);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(n){const e=this.rules.inline.link.exec(n);if(e){const t=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(t)){if(!this.rules.other.endAngleBracket.test(t))return;const i=St(t.slice(0,-1),"\\");if((t.length-i.length)%2===0)return}else{const i=Mc(e[2],"()");if(i===-2)return;if(i>-1){const c=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,c).trim(),e[3]=""}}let r=e[2],a="";if(this.options.pedantic){const i=this.rules.other.pedanticHrefTitle.exec(r);i&&(r=i[1],a=i[3])}else a=e[3]?e[3].slice(1,-1):"";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(t)?r=r.slice(1):r=r.slice(1,-1)),Ia(e,{href:r&&r.replace(this.rules.inline.anyPunctuation,"$1"),title:a&&a.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(n,e){let t;if((t=this.rules.inline.reflink.exec(n))||(t=this.rules.inline.nolink.exec(n))){const r=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),a=e[r.toLowerCase()];if(!a){const i=t[0].charAt(0);return{type:"text",raw:i,text:i}}return Ia(t,a,t[0],this.lexer,this.rules)}}emStrong(n,e,t=""){let r=this.rules.inline.emStrongLDelim.exec(n);if(!r||r[3]&&t.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[2]||"")||!t||this.rules.inline.punctuation.exec(t)){const i=[...r[0]].length-1;let o,c,d=i,s=0;const l=r[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(l.lastIndex=0,e=e.slice(-1*n.length+i);(r=l.exec(e))!=null;){if(o=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!o)continue;if(c=[...o].length,r[3]||r[4]){d+=c;continue}else if((r[5]||r[6])&&i%3&&!((i+c)%3)){s+=c;continue}if(d-=c,d>0)continue;c=Math.min(c,c+d+s);const u=[...r[0]][0].length,g=n.slice(0,i+r.index+u+c);if(Math.min(i,c)%2){const p=g.slice(1,-1);return{type:"em",raw:g,text:p,tokens:this.lexer.inlineTokens(p)}}const f=g.slice(2,-2);return{type:"strong",raw:g,text:f,tokens:this.lexer.inlineTokens(f)}}}}codespan(n){const e=this.rules.inline.code.exec(n);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," ");const r=this.rules.other.nonSpaceChar.test(t),a=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return r&&a&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(n){const e=this.rules.inline.br.exec(n);if(e)return{type:"br",raw:e[0]}}del(n){const e=this.rules.inline.del.exec(n);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(n){const e=this.rules.inline.autolink.exec(n);if(e){let t,r;return e[2]==="@"?(t=e[1],r="mailto:"+t):(t=e[1],r=t),{type:"link",raw:e[0],text:t,href:r,tokens:[{type:"text",raw:t,text:t}]}}}url(n){let e;if(e=this.rules.inline.url.exec(n)){let t,r;if(e[2]==="@")t=e[0],r="mailto:"+t;else{let a;do a=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(a!==e[0]);t=e[0],e[1]==="www."?r="http://"+e[0]:r=e[0]}return{type:"link",raw:e[0],text:t,href:r,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(n){const e=this.rules.inline.text.exec(n);if(e){const t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},Ve=class cr{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||ct,this.options.tokenizer=this.options.tokenizer||new Vt,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};const t={other:De,block:Gt.normal,inline:vt.normal};this.options.pedantic?(t.block=Gt.pedantic,t.inline=vt.pedantic):this.options.gfm&&(t.block=Gt.gfm,this.options.breaks?t.inline=vt.breaks:t.inline=vt.gfm),this.tokenizer.rules=t}static get rules(){return{block:Gt,inline:vt}}static lex(e,t){return new cr(t).lex(e)}static lexInline(e,t){return new cr(t).inlineTokens(e)}lex(e){e=e.replace(De.carriageReturn,`
|
|
35
|
+
`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){const r=this.inlineQueue[t];this.inlineTokens(r.src,r.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],r=!1){for(this.options.pedantic&&(e=e.replace(De.tabCharGlobal," ").replace(De.spaceLine,""));e;){let a;if(this.options.extensions?.block?.some(o=>(a=o.call({lexer:this},e,t))?(e=e.substring(a.raw.length),t.push(a),!0):!1))continue;if(a=this.tokenizer.space(e)){e=e.substring(a.raw.length);const o=t.at(-1);a.raw.length===1&&o!==void 0?o.raw+=`
|
|
36
|
+
`:t.push(a);continue}if(a=this.tokenizer.code(e)){e=e.substring(a.raw.length);const o=t.at(-1);o?.type==="paragraph"||o?.type==="text"?(o.raw+=`
|
|
37
|
+
`+a.raw,o.text+=`
|
|
38
|
+
`+a.text,this.inlineQueue.at(-1).src=o.text):t.push(a);continue}if(a=this.tokenizer.fences(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.heading(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.hr(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.blockquote(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.list(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.html(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.def(e)){e=e.substring(a.raw.length);const o=t.at(-1);o?.type==="paragraph"||o?.type==="text"?(o.raw+=`
|
|
39
|
+
`+a.raw,o.text+=`
|
|
40
|
+
`+a.raw,this.inlineQueue.at(-1).src=o.text):this.tokens.links[a.tag]||(this.tokens.links[a.tag]={href:a.href,title:a.title});continue}if(a=this.tokenizer.table(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.lheading(e)){e=e.substring(a.raw.length),t.push(a);continue}let i=e;if(this.options.extensions?.startBlock){let o=1/0;const c=e.slice(1);let d;this.options.extensions.startBlock.forEach(s=>{d=s.call({lexer:this},c),typeof d=="number"&&d>=0&&(o=Math.min(o,d))}),o<1/0&&o>=0&&(i=e.substring(0,o+1))}if(this.state.top&&(a=this.tokenizer.paragraph(i))){const o=t.at(-1);r&&o?.type==="paragraph"?(o.raw+=`
|
|
41
|
+
`+a.raw,o.text+=`
|
|
42
|
+
`+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=o.text):t.push(a),r=i.length!==e.length,e=e.substring(a.raw.length);continue}if(a=this.tokenizer.text(e)){e=e.substring(a.raw.length);const o=t.at(-1);o?.type==="text"?(o.raw+=`
|
|
43
|
+
`+a.raw,o.text+=`
|
|
44
|
+
`+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=o.text):t.push(a);continue}if(e){const o="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(o);break}else throw new Error(o)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let r=e,a=null;if(this.tokens.links){const c=Object.keys(this.tokens.links);if(c.length>0)for(;(a=this.tokenizer.rules.inline.reflinkSearch.exec(r))!=null;)c.includes(a[0].slice(a[0].lastIndexOf("[")+1,-1))&&(r=r.slice(0,a.index)+"["+"a".repeat(a[0].length-2)+"]"+r.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(a=this.tokenizer.rules.inline.anyPunctuation.exec(r))!=null;)r=r.slice(0,a.index)+"++"+r.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(a=this.tokenizer.rules.inline.blockSkip.exec(r))!=null;)r=r.slice(0,a.index)+"["+"a".repeat(a[0].length-2)+"]"+r.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);let i=!1,o="";for(;e;){i||(o=""),i=!1;let c;if(this.options.extensions?.inline?.some(s=>(c=s.call({lexer:this},e,t))?(e=e.substring(c.raw.length),t.push(c),!0):!1))continue;if(c=this.tokenizer.escape(e)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.tag(e)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.link(e)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(c.raw.length);const s=t.at(-1);c.type==="text"&&s?.type==="text"?(s.raw+=c.raw,s.text+=c.text):t.push(c);continue}if(c=this.tokenizer.emStrong(e,r,o)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.codespan(e)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.br(e)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.del(e)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.autolink(e)){e=e.substring(c.raw.length),t.push(c);continue}if(!this.state.inLink&&(c=this.tokenizer.url(e))){e=e.substring(c.raw.length),t.push(c);continue}let d=e;if(this.options.extensions?.startInline){let s=1/0;const l=e.slice(1);let u;this.options.extensions.startInline.forEach(g=>{u=g.call({lexer:this},l),typeof u=="number"&&u>=0&&(s=Math.min(s,u))}),s<1/0&&s>=0&&(d=e.substring(0,s+1))}if(c=this.tokenizer.inlineText(d)){e=e.substring(c.raw.length),c.raw.slice(-1)!=="_"&&(o=c.raw.slice(-1)),i=!0;const s=t.at(-1);s?.type==="text"?(s.raw+=c.raw,s.text+=c.text):t.push(c);continue}if(e){const s="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return t}},Qt=class{options;parser;constructor(n){this.options=n||ct}space(n){return""}code({text:n,lang:e,escaped:t}){const r=(e||"").match(De.notSpaceStart)?.[0],a=n.replace(De.endingNewline,"")+`
|
|
45
|
+
`;return r?'<pre><code class="language-'+Ge(r)+'">'+(t?a:Ge(a,!0))+`</code></pre>
|
|
46
|
+
`:"<pre><code>"+(t?a:Ge(a,!0))+`</code></pre>
|
|
47
|
+
`}blockquote({tokens:n}){return`<blockquote>
|
|
48
|
+
${this.parser.parse(n)}</blockquote>
|
|
49
|
+
`}html({text:n}){return n}heading({tokens:n,depth:e}){return`<h${e}>${this.parser.parseInline(n)}</h${e}>
|
|
50
|
+
`}hr(n){return`<hr>
|
|
51
|
+
`}list(n){const e=n.ordered,t=n.start;let r="";for(let o=0;o<n.items.length;o++){const c=n.items[o];r+=this.listitem(c)}const a=e?"ol":"ul",i=e&&t!==1?' start="'+t+'"':"";return"<"+a+i+`>
|
|
52
|
+
`+r+"</"+a+`>
|
|
53
|
+
`}listitem(n){let e="";if(n.task){const t=this.checkbox({checked:!!n.checked});n.loose?n.tokens[0]?.type==="paragraph"?(n.tokens[0].text=t+" "+n.tokens[0].text,n.tokens[0].tokens&&n.tokens[0].tokens.length>0&&n.tokens[0].tokens[0].type==="text"&&(n.tokens[0].tokens[0].text=t+" "+Ge(n.tokens[0].tokens[0].text),n.tokens[0].tokens[0].escaped=!0)):n.tokens.unshift({type:"text",raw:t+" ",text:t+" ",escaped:!0}):e+=t+" "}return e+=this.parser.parse(n.tokens,!!n.loose),`<li>${e}</li>
|
|
54
|
+
`}checkbox({checked:n}){return"<input "+(n?'checked="" ':"")+'disabled="" type="checkbox">'}paragraph({tokens:n}){return`<p>${this.parser.parseInline(n)}</p>
|
|
55
|
+
`}table(n){let e="",t="";for(let a=0;a<n.header.length;a++)t+=this.tablecell(n.header[a]);e+=this.tablerow({text:t});let r="";for(let a=0;a<n.rows.length;a++){const i=n.rows[a];t="";for(let o=0;o<i.length;o++)t+=this.tablecell(i[o]);r+=this.tablerow({text:t})}return r&&(r=`<tbody>${r}</tbody>`),`<table>
|
|
56
|
+
<thead>
|
|
57
|
+
`+e+`</thead>
|
|
58
|
+
`+r+`</table>
|
|
59
|
+
`}tablerow({text:n}){return`<tr>
|
|
60
|
+
${n}</tr>
|
|
61
|
+
`}tablecell(n){const e=this.parser.parseInline(n.tokens),t=n.header?"th":"td";return(n.align?`<${t} align="${n.align}">`:`<${t}>`)+e+`</${t}>
|
|
62
|
+
`}strong({tokens:n}){return`<strong>${this.parser.parseInline(n)}</strong>`}em({tokens:n}){return`<em>${this.parser.parseInline(n)}</em>`}codespan({text:n}){return`<code>${Ge(n,!0)}</code>`}br(n){return"<br>"}del({tokens:n}){return`<del>${this.parser.parseInline(n)}</del>`}link({href:n,title:e,tokens:t}){const r=this.parser.parseInline(t),a=Oa(n);if(a===null)return r;n=a;let i='<a href="'+n+'"';return e&&(i+=' title="'+Ge(e)+'"'),i+=">"+r+"</a>",i}image({href:n,title:e,text:t,tokens:r}){r&&(t=this.parser.parseInline(r,this.parser.textRenderer));const a=Oa(n);if(a===null)return Ge(t);n=a;let i=`<img src="${n}" alt="${t}"`;return e&&(i+=` title="${Ge(e)}"`),i+=">",i}text(n){return"tokens"in n&&n.tokens?this.parser.parseInline(n.tokens):"escaped"in n&&n.escaped?n.text:Ge(n.text)}},wr=class{strong({text:n}){return n}em({text:n}){return n}codespan({text:n}){return n}del({text:n}){return n}html({text:n}){return n}text({text:n}){return n}link({text:n}){return""+n}image({text:n}){return""+n}br(){return""}},Qe=class lr{options;renderer;textRenderer;constructor(e){this.options=e||ct,this.options.renderer=this.options.renderer||new Qt,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new wr}static parse(e,t){return new lr(t).parse(e)}static parseInline(e,t){return new lr(t).parseInline(e)}parse(e,t=!0){let r="";for(let a=0;a<e.length;a++){const i=e[a];if(this.options.extensions?.renderers?.[i.type]){const c=i,d=this.options.extensions.renderers[c.type].call({parser:this},c);if(d!==!1||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(c.type)){r+=d||"";continue}}const o=i;switch(o.type){case"space":{r+=this.renderer.space(o);continue}case"hr":{r+=this.renderer.hr(o);continue}case"heading":{r+=this.renderer.heading(o);continue}case"code":{r+=this.renderer.code(o);continue}case"table":{r+=this.renderer.table(o);continue}case"blockquote":{r+=this.renderer.blockquote(o);continue}case"list":{r+=this.renderer.list(o);continue}case"html":{r+=this.renderer.html(o);continue}case"paragraph":{r+=this.renderer.paragraph(o);continue}case"text":{let c=o,d=this.renderer.text(c);for(;a+1<e.length&&e[a+1].type==="text";)c=e[++a],d+=`
|
|
63
|
+
`+this.renderer.text(c);t?r+=this.renderer.paragraph({type:"paragraph",raw:d,text:d,tokens:[{type:"text",raw:d,text:d,escaped:!0}]}):r+=d;continue}default:{const c='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}return r}parseInline(e,t=this.renderer){let r="";for(let a=0;a<e.length;a++){const i=e[a];if(this.options.extensions?.renderers?.[i.type]){const c=this.options.extensions.renderers[i.type].call({parser:this},i);if(c!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(i.type)){r+=c||"";continue}}const o=i;switch(o.type){case"escape":{r+=t.text(o);break}case"html":{r+=t.html(o);break}case"link":{r+=t.link(o);break}case"image":{r+=t.image(o);break}case"strong":{r+=t.strong(o);break}case"em":{r+=t.em(o);break}case"codespan":{r+=t.codespan(o);break}case"br":{r+=t.br(o);break}case"del":{r+=t.del(o);break}case"text":{r+=t.text(o);break}default:{const c='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}return r}},Wt=class{options;block;constructor(n){this.options=n||ct}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(n){return n}postprocess(n){return n}processAllTokens(n){return n}provideLexer(){return this.block?Ve.lex:Ve.lexInline}provideParser(){return this.block?Qe.parse:Qe.parseInline}},Lc=class{defaults=mr();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Qe;Renderer=Qt;TextRenderer=wr;Lexer=Ve;Tokenizer=Vt;Hooks=Wt;constructor(...n){this.use(...n)}walkTokens(n,e){let t=[];for(const r of n)switch(t=t.concat(e.call(this,r)),r.type){case"table":{const a=r;for(const i of a.header)t=t.concat(this.walkTokens(i.tokens,e));for(const i of a.rows)for(const o of i)t=t.concat(this.walkTokens(o.tokens,e));break}case"list":{const a=r;t=t.concat(this.walkTokens(a.items,e));break}default:{const a=r;this.defaults.extensions?.childTokens?.[a.type]?this.defaults.extensions.childTokens[a.type].forEach(i=>{const o=a[i].flat(1/0);t=t.concat(this.walkTokens(o,e))}):a.tokens&&(t=t.concat(this.walkTokens(a.tokens,e)))}}return t}use(...n){const e=this.defaults.extensions||{renderers:{},childTokens:{}};return n.forEach(t=>{const r={...t};if(r.async=this.defaults.async||r.async||!1,t.extensions&&(t.extensions.forEach(a=>{if(!a.name)throw new Error("extension name required");if("renderer"in a){const i=e.renderers[a.name];i?e.renderers[a.name]=function(...o){let c=a.renderer.apply(this,o);return c===!1&&(c=i.apply(this,o)),c}:e.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||a.level!=="block"&&a.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");const i=e[a.level];i?i.unshift(a.tokenizer):e[a.level]=[a.tokenizer],a.start&&(a.level==="block"?e.startBlock?e.startBlock.push(a.start):e.startBlock=[a.start]:a.level==="inline"&&(e.startInline?e.startInline.push(a.start):e.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(e.childTokens[a.name]=a.childTokens)}),r.extensions=e),t.renderer){const a=this.defaults.renderer||new Qt(this.defaults);for(const i in t.renderer){if(!(i in a))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;const o=i,c=t.renderer[o],d=a[o];a[o]=(...s)=>{let l=c.apply(a,s);return l===!1&&(l=d.apply(a,s)),l||""}}r.renderer=a}if(t.tokenizer){const a=this.defaults.tokenizer||new Vt(this.defaults);for(const i in t.tokenizer){if(!(i in a))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;const o=i,c=t.tokenizer[o],d=a[o];a[o]=(...s)=>{let l=c.apply(a,s);return l===!1&&(l=d.apply(a,s)),l}}r.tokenizer=a}if(t.hooks){const a=this.defaults.hooks||new Wt;for(const i in t.hooks){if(!(i in a))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;const o=i,c=t.hooks[o],d=a[o];Wt.passThroughHooks.has(i)?a[o]=s=>{if(this.defaults.async)return Promise.resolve(c.call(a,s)).then(u=>d.call(a,u));const l=c.call(a,s);return d.call(a,l)}:a[o]=(...s)=>{let l=c.apply(a,s);return l===!1&&(l=d.apply(a,s)),l}}r.hooks=a}if(t.walkTokens){const a=this.defaults.walkTokens,i=t.walkTokens;r.walkTokens=function(o){let c=[];return c.push(i.call(this,o)),a&&(c=c.concat(a.call(this,o))),c}}this.defaults={...this.defaults,...r}}),this}setOptions(n){return this.defaults={...this.defaults,...n},this}lexer(n,e){return Ve.lex(n,e??this.defaults)}parser(n,e){return Qe.parse(n,e??this.defaults)}parseMarkdown(n){return(t,r)=>{const a={...r},i={...this.defaults,...a},o=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&a.async===!1)return o(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return o(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return o(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));i.hooks&&(i.hooks.options=i,i.hooks.block=n);const c=i.hooks?i.hooks.provideLexer():n?Ve.lex:Ve.lexInline,d=i.hooks?i.hooks.provideParser():n?Qe.parse:Qe.parseInline;if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(t):t).then(s=>c(s,i)).then(s=>i.hooks?i.hooks.processAllTokens(s):s).then(s=>i.walkTokens?Promise.all(this.walkTokens(s,i.walkTokens)).then(()=>s):s).then(s=>d(s,i)).then(s=>i.hooks?i.hooks.postprocess(s):s).catch(o);try{i.hooks&&(t=i.hooks.preprocess(t));let s=c(t,i);i.hooks&&(s=i.hooks.processAllTokens(s)),i.walkTokens&&this.walkTokens(s,i.walkTokens);let l=d(s,i);return i.hooks&&(l=i.hooks.postprocess(l)),l}catch(s){return o(s)}}}onError(n,e){return t=>{if(t.message+=`
|
|
64
|
+
Please report this to https://github.com/markedjs/marked.`,n){const r="<p>An error occurred:</p><pre>"+Ge(t.message+"",!0)+"</pre>";return e?Promise.resolve(r):r}if(e)return Promise.reject(t);throw t}}},st=new Lc;function de(n,e){return st.parse(n,e)}de.options=de.setOptions=function(n){return st.setOptions(n),de.defaults=st.defaults,ii(de.defaults),de};de.getDefaults=mr;de.defaults=ct;de.use=function(...n){return st.use(...n),de.defaults=st.defaults,ii(de.defaults),de};de.walkTokens=function(n,e){return st.walkTokens(n,e)};de.parseInline=st.parseInline;de.Parser=Qe;de.parser=Qe.parse;de.Renderer=Qt;de.TextRenderer=wr;de.Lexer=Ve;de.lexer=Ve.lex;de.Tokenizer=Vt;de.Hooks=Wt;de.parse=de;de.options;de.setOptions;de.use;de.walkTokens;de.parseInline;Qe.parse;Ve.lex;function er(n){const e={Download:is,ExternalLink:ss,Maximize2:Wa},t=n==="download"?e.Download:n==="external-link"?e.ExternalLink:e.Maximize2;return rt(t,{"aria-hidden":"true"})}function hi(n){if(n.closest(".imageFrame"))return;const e=document.createElement("span");e.className="imageFrame";const t=document.createElement("span");t.className="imageActions";const r=document.createElement("button");r.type="button",r.className="imageAction",r.title="Fullscreen",r.setAttribute("aria-label",r.title),r.append(er("maximize-2")),r.addEventListener("click",()=>{const o=document.createElement("div");o.className="imageOverlay";const c=document.createElement("img");c.src=n.currentSrc||n.src,c.alt=n.alt||"image",o.append(c),o.addEventListener("click",()=>o.remove()),document.body.append(o)});const a=document.createElement("a");a.className="imageAction",a.title="Download",a.setAttribute("aria-label",a.title),a.href=n.currentSrc||n.src,a.download=n.alt||"image",a.append(er("download"));const i=document.createElement("a");i.className="imageAction",i.title="Open in new tab",i.setAttribute("aria-label",i.title),i.href=n.currentSrc||n.src,i.target="_blank",i.rel="noopener noreferrer",i.append(er("external-link")),t.append(r,a,i),n.before(e),e.append(n,t)}de.setOptions({async:!1,breaks:!0,gfm:!0});const it=new Map,Ic=160,Dc=new Set(["a","blockquote","br","code","del","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","span","strong","table","tbody","td","th","thead","tr","ul"]),Bc=new Set(["alt","class","href","rel","src","target","title"]);function Pc(n){const e=document.createElement("template");e.innerHTML=n;for(const t of Array.from(e.content.querySelectorAll("*"))){const r=t.tagName.toLowerCase();if(!Dc.has(r)){t.replaceWith(...Array.from(t.childNodes));continue}for(const a of Array.from(t.attributes)){const i=a.name.toLowerCase();if(!Bc.has(i)||i.startsWith("on")){t.removeAttribute(a.name);continue}if(i==="href"){const o=a.value.trim();/^(https?:|mailto:|#|\/)/i.test(o)||t.removeAttribute(a.name)}if(i==="src"){const o=a.value.trim();/^(https?:|data:image\/(png|jpeg|jpg|gif|webp);base64,|\/api\/artifacts\/)/i.test(o)||t.removeAttribute(a.name)}}r==="a"&&(t.setAttribute("target","_blank"),t.setAttribute("rel","noopener noreferrer")),r==="img"&&!t.getAttribute("src")&&t.remove()}return e.innerHTML}function $c(n){const e=document.createElement("template");e.innerHTML=n;for(const t of Array.from(e.content.querySelectorAll("pre code"))){const a=Array.from(t.classList).find(c=>c.startsWith("language-"))?.slice(9),i=t.textContent||"",o=a&&Kt.getLanguage(a)?Kt.highlight(i,{language:a}).value:Kt.highlightAuto(i).value;t.innerHTML=o,t.classList.add("hljs"),a&&t.classList.add(`language-${a}`)}return e.innerHTML}function bi(n){const e=it.get(n);if(e!==void 0)return it.delete(n),it.set(n,e),e;const t=$c(Pc(de.parse(n)));return it.set(n,t),it.size>Ic&&it.delete(it.keys().next().value),t}function Ei(n){for(const e of Array.from(n.querySelectorAll("pre"))){if(e.querySelector(".copyCode"))continue;const t=document.createElement("button");t.type="button",t.className="copyCode",t.title="Copy code",t.setAttribute("aria-label",t.title),t.append(rt(Mr,{"aria-hidden":"true"})),t.dataset.icon="copy",t.addEventListener("click",()=>{t.innerHTML="",t.append(rt(rs,{"aria-hidden":"true"})),t.dataset.icon="check",setTimeout(()=>{t.innerHTML="",t.append(rt(Mr,{"aria-hidden":"true"})),t.dataset.icon="copy"},1500);const r=e.querySelector("code");navigator.clipboard.writeText(r?.textContent||e.textContent||"").catch(()=>{})}),e.style.position="relative",e.append(t)}}function _i(n){for(const e of Array.from(n.querySelectorAll("img")))hi(e)}function Fc(n){try{return decodeURIComponent(n.split("/").pop()||"artifact")}catch{return n.split("/").pop()||"artifact"}}function Uc(n){const e=n.toLowerCase();return e.endsWith(".md")||e.endsWith(".markdown")?"markdown":e.endsWith(".html")||e.endsWith(".htm")?"html":e.endsWith(".mp4")||e.endsWith(".webm")||e.endsWith(".mov")||e.endsWith(".ogv")?"video":""}function zc(n){const e=n.toLowerCase();return e.endsWith(".mp4")?"video/mp4":e.endsWith(".webm")?"video/webm":e.endsWith(".mov")?"video/quicktime":e.endsWith(".ogv")?"video/ogg":"video/*"}function yi(n){for(const e of Array.from(n.querySelectorAll('a[href^="/api/artifacts/"]'))){if(e.dataset.artifactPreviewEnhanced)continue;const t=new URL(e.href,window.location.origin),r=Uc(t.pathname);if(!r)continue;e.dataset.artifactPreviewEnhanced="true";const a=document.createElement("div");a.className=`artifactPreview artifactPreview--${r}`;const i=document.createElement("div");i.className="artifactPreviewHeader";const o=document.createElement("span");o.className="artifactPreviewTitle",o.textContent=Fc(t.pathname);const c=document.createElement("a");c.href=t.pathname,c.target="_blank",c.rel="noopener noreferrer",c.textContent="Open",i.append(o,c);const d=document.createElement("div");if(d.className="artifactPreviewContent",d.textContent="Loading preview…",a.append(i,d),(e.closest("p")||e).insertAdjacentElement("afterend",a),r==="html"){d.textContent="";const l=document.createElement("iframe");l.className="artifactPreviewFrame",l.src=t.pathname,l.title=`Preview of ${o.textContent}`,l.setAttribute("sandbox",""),d.append(l);continue}if(r==="video"){d.textContent="";const l=document.createElement("video");l.className="artifactPreviewVideo",l.controls=!0,l.playsInline=!0,l.preload="metadata";const u=document.createElement("source");u.src=t.pathname,u.type=zc(t.pathname),l.append(u),d.append(l);continue}fetch(t.pathname).then(async l=>{if(!l.ok)throw new Error(`Preview failed (${l.status})`);return l.text()}).then(l=>{a.isConnected&&(d.classList.add("markdownBody"),d.innerHTML=bi(l),Ei(d),_i(d),yi(d))}).catch(l=>{d.textContent=l instanceof Error?l.message:String(l),a.classList.add("artifactPreview--error")})}}function tr(n,e){n.classList.add("markdownBody"),n.innerHTML=bi(e),Ei(n),_i(n),yi(n),n.dataset.markdownRendered="true",delete n.dataset.markdownText}function qc(n){const e=window.requestIdleCallback||(r=>window.setTimeout(()=>r({didTimeout:!1,timeRemaining:()=>0}),1)),t="IntersectionObserver"in window?new IntersectionObserver((r,a)=>{for(const i of r){if(!i.isIntersecting)continue;const o=i.target;a.unobserve(o);const c=o.dataset.markdownText||"";e(()=>{o.isConnected&&c&&!o.dataset.markdownRendered&&tr(o,c)})}},{root:n,rootMargin:"600px 0px"}):null;return{renderAssistantMarkdown:tr,queueAssistantMarkdownRender(r,a){r.dataset.markdownText=a,t?t.observe(r):e(()=>{r.isConnected&&!r.dataset.markdownRendered&&tr(r,a)})},unobserve(r){t?.unobserve(r)}}}function Hc(n){return n.length>1800||n.split(`
|
|
65
|
+
`).length>28}function Gc(n){return Array.isArray(n)?n.filter(e=>!!e&&typeof e=="object"&&e.type==="image").map(e=>({data:e.data,mimeType:e.mimeType})):[]}function Kc(n){const e=n.match(/(\n\nAttached image files?:\n(?:- .+\n?)+)/s);return e?n.replace(e[1],"").trimEnd():n}function Da(n,e="image"){return n&&n.split("/").pop()||e}function dr(n){return typeof n=="string"?n:Array.isArray(n)?n.map(e=>{if(!e||typeof e!="object")return"";const t=e;return t.type==="text"?typeof t.text=="string"?t.text:"":t.type==="image"?"[image]":""}).filter(Boolean).join(`
|
|
66
|
+
`):""}function Wc(n){const e=String(n?.raw?.errorMessage||n?.errorMessage||"").trim();if(!e)return"";const t=e.replace(/^Codex error:\s*/,"");try{const r=JSON.parse(t);return`Error: ${r?.error?.message||r?.message||e}`}catch{return e.length>180?`${e.slice(0,179)}…`:e}}function Ba(n){if(n?.role==="compactionSummary"||n?.raw?.role==="compactionSummary"){const t=n.raw||n,a=`Context compacted from ${typeof t.tokensBefore=="number"?t.tokensBefore.toLocaleString():"unknown"} tokens.`;return t.summary?`${a}
|
|
67
|
+
|
|
68
|
+
${t.summary}`:a}const e=n?.text||"";return e&&!/^(\[tool call: [^\]]+\]\n?)+$/.test(e.trim())?e:dr(n?.raw?.content||n?.content)||Wc(n)||""}function Zc(n,e){if(e.data&&e.mimeType){const r=document.createElement("img");r.className="messageImageThumb",r.src=`data:${e.mimeType};base64,${e.data}`,r.alt=Da(e.path),n.append(r),hi(r);return}const t=document.createElement("span");t.className="messageImageMissing",t.title=e.path||"unknown path",t.textContent=`🖼️ ${Da(e.path,"missing image")}`,n.append(t)}function Yc(n){const{messagesEl:e,markdown:t}=n;let r=null,a=!1,i=!0,o=!1;const c=48,d=4,s=document.createElement("button");s.type="button",s.className="jumpToLatestButton",s.textContent="Jump to latest",s.setAttribute("aria-label","Jump to latest message"),s.hidden=!0,document.querySelector(".app")?.append(s);function l(){return e.scrollHeight-e.scrollTop-e.clientHeight}function u(){return l()<=c}function g(){return l()<=d}function f(D){s.hidden=!D}function p(){o=!0,e.scrollTop=e.scrollHeight,window.setTimeout(()=>{o=!1},0)}function y(){if(!i){f(!0);return}p(),f(!1)}function b(){a=!0,i=!0,p(),f(!1)}function N(){a=!1}function M(){o||a&&(i=!1,f(!0))}e.addEventListener("wheel",M,{passive:!0}),e.addEventListener("touchstart",M,{passive:!0}),e.addEventListener("pointerdown",M),e.addEventListener("keydown",D=>{["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(D.key)&&M()}),e.addEventListener("scroll",()=>{if(!o){if(i&&!u()){i=!1,f(a);return}!i&&g()&&(i=!0,f(!1))}},{passive:!0}),s.addEventListener("click",()=>{i=!0,p(),f(!1)});function L(D,Y,H="",h=[]){const v=document.createElement("div"),k=Hc(Y);v.className=`message ${D} ${H}${k?" collapsible collapsed":""}`.trim();const C=document.createElement("div");if(C.className="body",D==="user"&&h.length>0){const E=Kc(Y);if(E){const T=document.createElement("span");T.className="messageText",T.textContent=E,C.append(T)}const S=document.createElement("div");S.className="messageImages";for(const T of h)Zc(S,T);C.append(S)}else D==="assistant"&&Y?(C.textContent=Y,k?t.queueAssistantMarkdownRender(C,Y):t.renderAssistantMarkdown(C,Y)):C.textContent=Y||"";if(v.append(C),k){const E=document.createElement("button");E.type="button",E.className="messageToggle",E.textContent="Show more",E.addEventListener("click",()=>{const S=v.classList.toggle("collapsed");!S&&D==="assistant"&&Y&&!C.dataset.markdownRendered&&(t.unobserve(C),t.renderAssistantMarkdown(C,Y)),E.textContent=S?"Show more":"Show less"}),v.append(E)}return e.append(v),y(),v}function Z(){e.textContent="",r=null,f(!1)}function R(){r=null}function I(D){(!r||e.lastElementChild!==r)&&(r=L("assistant",""));const Y=r.querySelector(".body");Y&&(Y.textContent+=D||""),y()}function P(D){return(Array.isArray(D?.toolCalls)?D.toolCalls:Array.isArray(D?.raw?.content)?D.raw.content.filter(H=>H?.type==="toolCall").map(H=>({id:H.id,toolName:H.toolName||H.name||"tool",args:H.arguments||H.args||{}})):[]).map(H=>({id:typeof H.id=="string"?H.id:void 0,toolName:typeof H.toolName=="string"?H.toolName:typeof H.name=="string"?H.name:"tool",args:H.args&&typeof H.args=="object"?H.args:{}}))}async function B({sessionId:D,headers:Y,addToolHistoryCard:H,addPendingToolCard:h,addRuntimeErrorCard:v,clearActiveToolCards:k,isStreaming:C,updateEmptyCwdChooser:E}){const S=D?`?sessionId=${encodeURIComponent(D)}`:"",T=await fetch(`/api/messages${S}`,{headers:Y()});if(!T.ok)throw new Error(await T.text());const $=await T.json(),w=i,A=e.scrollTop;Z(),k();const _=$.messages||[],z=new Set;for(const G of _){const ne=G?.toolCallId||G?.raw?.toolCallId;G?.role==="toolResult"&&typeof ne=="string"&&z.add(ne)}for(const G of _){if(G.role==="toolResult"){const re=G.toolName||G.raw?.toolName||G.name||"tool",ie=!!G.isError,be=Ba(G);H(re,ie,be,G.toolArgs);continue}const ne=G.role==="assistant"?"assistant":G.role==="user"?"user":"system",ce=Ba(G);if(ce){if(ne==="assistant"&&G.isError){const be=typeof G.raw?.errorMessage=="string"?G.raw.errorMessage:typeof G.errorMessage=="string"?G.errorMessage:ce;v("assistant error",ce,be);continue}const re=ne==="user"?Gc(G.raw?.content||G.content):[],ie=G.role==="compactionSummary"?"compaction":G.isError?"error":"";L(ne,ce,ie,re)}if(ne==="assistant"&&C)for(const re of P(G))re.id&&z.has(re.id)||h(re.id,re.toolName,re.args)}w?y():(o=!0,e.scrollTop=A,window.setTimeout(()=>{o=!1},0),f(!0)),E?.()}return{addMessage:L,appendStreamingDelta:I,beginStreamFollow:b,clear:Z,endStreamFollow:N,refreshMessages:B,resetStreamingAssistant:R,scrollToBottom:y}}function wi(n){return n?`${n.provider}/${n.id}`:""}function vi(n){const e=n?.name&&n.name!==n.id?` (${n.name})`:"";return`${n.provider}/${n.id}${e}`}function Vc(n){const{state:e,elements:t,api:r,updateMeta:a,addMessage:i}=n;function o(){const f=t.thinkingSelectEl.value||e.currentThinkingLevel||"off",p=e.currentModelDisplay||e.currentModelKey||"No model";t.modelSettingsLabel.textContent=p,t.modelSettingsThinking.textContent="",t.modelSettingsThinking.append(Ya("brain"),document.createTextNode(f)),t.modelSettingsButton.dataset.thinkingLevel=f,t.modelSettingsButton.title=`${p} · reasoning: ${f}`,t.modelSettingsButton.setAttribute("aria-label",`Model and reasoning settings: ${p}, reasoning ${f}`)}function c(f){t.modelSettingsPopover.hidden=!f,t.modelSettingsButton.setAttribute("aria-expanded",String(f))}function d(f=[e.currentThinkingLevel]){const p=f.length?f:[e.currentThinkingLevel];t.thinkingSelectEl.textContent="";for(const y of p){const b=document.createElement("option");b.value=y,b.textContent=y,t.thinkingSelectEl.append(b)}t.thinkingSelectEl.value=p.includes(e.currentThinkingLevel)?e.currentThinkingLevel:p[0]||"off",o()}function s(f,p){t.modelSelectEl.textContent="";for(const y of f){if(!y)continue;const b=document.createElement("option");b.value=wi(y),b.textContent=vi(y),t.modelSelectEl.append(b)}if(t.modelSelectEl.value=p,!t.modelSelectEl.value&&p){const y=document.createElement("option");y.value=p,y.textContent=p,t.modelSelectEl.prepend(y),t.modelSelectEl.value=p}}async function l(){const f=await fetch("/api/models",{headers:r.headers()});if(!f.ok)throw new Error(await f.text());const p=await f.json();a({cwd:p.cwd||"",model:p.current,thinkingLevel:p.thinkingLevel}),s(p.models||[],e.currentModelKey),d(p.thinkingLevels||[e.currentThinkingLevel])}async function u(){const[f,...p]=t.modelSelectEl.value.split("/"),y=p.join("/");if(!(!f||!y)){t.modelSelectEl.disabled=!0,t.thinkingSelectEl.disabled=!0,t.modelSettingsButton.disabled=!0;try{const b=await fetch("/api/model",{method:"POST",headers:r.headers(),body:JSON.stringify({provider:f,id:y,thinkingLevel:t.thinkingSelectEl.value})});if(!b.ok)throw new Error(await b.text());const N=await b.json();a(N),d(N.thinkingLevels||[N.thinkingLevel]),await l()}catch(b){i("system",b instanceof Error?b.message:String(b),"error"),await l().catch(()=>{})}finally{t.modelSelectEl.disabled=!1,t.thinkingSelectEl.disabled=!1,t.modelSettingsButton.disabled=!1}}}function g(){t.modelSettingsButton.addEventListener("click",f=>{f.stopPropagation(),c(t.modelSettingsPopover.hidden)}),t.modelSettingsPopover.addEventListener("click",f=>f.stopPropagation()),document.addEventListener("click",f=>{!t.modelSettingsPopover.hidden&&!t.modelControl.contains(f.target)&&c(!1)}),document.addEventListener("keydown",f=>{f.key==="Escape"&&!t.modelSettingsPopover.hidden&&c(!1)}),t.modelSelectEl.addEventListener("change",()=>{const f=t.modelSelectEl.selectedOptions[0]?.textContent;f&&(e.currentModelDisplay=f),o(),u()}),t.thinkingSelectEl.addEventListener("change",()=>{e.currentThinkingLevel=t.thinkingSelectEl.value,o(),u()})}return{init:g,updateSummary:o,updateThinkingOptions:d,populateModelSelect:s,refreshModels:l}}function Qc(n){const{state:e,elements:t,api:r,composer:a,messages:i,models:o,sessions:c,settings:d,status:s,tools:l,conversationTree:u,updateMeta:g,updateSessionStats:f,refreshMessages:p,refreshState:y,addMessage:b}=n;let N=null,M,L=!1,Z=!1;const R=new Map;function I(w){return[!!w?.isRunning,!!w?.isStreaming,!!w?.isCompacting].join(":")}function P(w){switch(w?.type){case"session_info_changed":case"message_end":case"agent_end":case"compaction_end":return!0;default:return!1}}function B(w=250){t.sessionDrawer.hidden||M===void 0&&(M=window.setTimeout(()=>{M=void 0,D()},w))}async function D(){if(!t.sessionDrawer.hidden){if(L){Z=!0;return}L=!0;try{await c.refreshSessions()}catch{}finally{L=!1,Z&&(Z=!1,B(500))}}}function Y(w){return typeof w=="number"&&Number.isFinite(w)?w.toLocaleString():"unknown"}function H(w){return w.reason==="manual"?"Compacting context…":w.reason==="overflow"?"Context overflow detected. Auto-compacting context…":"Auto-compacting context…"}function h(w){if(w.aborted)return w.reason==="manual"?"Compaction cancelled.":"Auto-compaction cancelled.";if(w.errorMessage)return`Compaction failed: ${w.errorMessage}`;const A=w.result||{},_=`Context compacted from ${Y(A.tokensBefore)} tokens.`;return A.summary?`${_}
|
|
69
|
+
|
|
70
|
+
${A.summary}`:_}async function v(w){w.disabled=!0,w.textContent="Cancelling…";try{const A=await fetch("/api/compaction/abort",{method:"POST",headers:r.headers(),body:JSON.stringify({sessionId:e.currentSessionId})}),_=await A.json().catch(()=>({}));if(!A.ok||_.ok===!1)throw new Error(_.error||await A.text())}catch(A){w.disabled=!1,w.textContent="Cancel",b("system",A instanceof Error?A.message:String(A),"error")}}async function k(w,A){const _=await fetch("/api/extension-ui/respond",{method:"POST",headers:r.headers(),body:JSON.stringify({id:w,...A})});if(!_.ok)throw new Error(await _.text())}function C(w,A){const _=window.prompt(`${w}
|
|
71
|
+
|
|
72
|
+
${A.map((G,ne)=>`${ne+1}. ${G}`).join(`
|
|
73
|
+
`)}
|
|
74
|
+
|
|
75
|
+
Enter a number or exact value:`,A[0]||"");if(_===null)return;const z=Number(_.trim());return Number.isInteger(z)&&z>=1&&z<=A.length?A[z-1]:A.find(G=>G===_)||_}function E(w){if(w.sessionId&&w.sessionId!==e.currentSessionId)return;const A=String(w.id||"");switch(w.method){case"notify":b("system",String(w.message||""),w.notifyType==="error"?"error":void 0);return;case"set_editor_text":a.setPromptText(String(w.text||""));return;case"setTitle":document.title=String(w.title||"pi web");return;case"select":{const _=Array.isArray(w.options)?w.options.map(String):[],z=C(String(w.title||"Select"),_);k(A,z===void 0?{cancelled:!0}:{value:z}).catch(G=>b("system",G instanceof Error?G.message:String(G),"error"));return}case"confirm":{const _=window.confirm(`${String(w.title||"Confirm")}
|
|
76
|
+
|
|
77
|
+
${String(w.message||"")}`);k(A,{confirmed:_}).catch(z=>b("system",z instanceof Error?z.message:String(z),"error"));return}case"input":{const _=window.prompt(String(w.title||"Input"),String(w.placeholder||""));k(A,_===null?{cancelled:!0}:{value:_}).catch(z=>b("system",z instanceof Error?z.message:String(z),"error"));return}case"editor":{const _=window.prompt(String(w.title||"Edit"),String(w.prefill||""));k(A,_===null?{cancelled:!0}:{value:_}).catch(z=>b("system",z instanceof Error?z.message:String(z),"error"));return}}}function S(w,A="compaction",_=!1){const z=N?.isConnected?N:b("system","",A);N=z,z.className=`message system ${A}`.trim(),z.querySelector(".compactionCancel")?.remove();const G=z.querySelector(".body");if(G&&(G.textContent=w),_){const ne=document.createElement("button");ne.type="button",ne.className="compactionCancel",ne.textContent="Cancel",ne.addEventListener("click",()=>v(ne)),z.append(ne)}i.scrollToBottom()}function T(w,A=!1){switch(w.type){case"session_info_changed":"name"in w&&s.setStatusTitle(w.name||"New session");break;case"agent_start":e.isStreaming=!0,a.updatePrimaryAction(),i.resetStreamingAssistant(),i.beginStreamFollow();break;case"message_update":{const _=w.assistantMessageEvent;_?.type==="text_delta"&&i.appendStreamingDelta(_.delta||"");break}case"tool_execution_start":l.startTool(w.toolCallId,w.toolName,w.args||{});break;case"tool_execution_end":l.endTool(w.toolCallId,w.toolName,!!w.isError,w.result);break;case"agent_end":e.isStreaming=!1,a.updatePrimaryAction(),i.resetStreamingAssistant(),i.endStreamFollow(),l.clearActiveToolCards(),A||p().catch(_=>b("system",_ instanceof Error?_.message:String(_),"error")),!A&&u?.isOpen()&&u.refreshTree().catch(()=>{}),s.refreshSessionTitle();break;case"compaction_start":S(H(w),"compaction",!0);break;case"compaction_end":{const _=w.errorMessage&&!w.aborted?"compaction error":"compaction";S(h(w),_),N=null,w.result&&(A||p().catch(z=>b("system",z instanceof Error?z.message:String(z),"error")),!A&&u?.isOpen()&&u.refreshTree().catch(()=>{}),s.refreshSessionTitle());break}case"thinking_level_changed":e.currentThinkingLevel=w.level||e.currentThinkingLevel,t.thinkingSelectEl.value=e.currentThinkingLevel,o.updateSummary(),y().catch(_=>b("system",_ instanceof Error?_.message:String(_),"error"));break}}function $(){const w=new WebSocket(r.wsUrl());w.addEventListener("open",s.markWebSocketOpen),w.addEventListener("message",A=>{const _=JSON.parse(String(A.data));if(typeof _.seq=="number"&&Number.isFinite(_.seq)&&_.seq>e.lastRealtimeSeq&&(e.lastRealtimeSeq=_.seq),_.type==="sync_required"){typeof _.latestSeq=="number"&&Number.isFinite(_.latestSeq)&&_.latestSeq>=0&&(e.lastRealtimeSeq=_.latestSeq),s.markSyncRequired();return}const z=_.replay===!0;if(_.type==="hello"||_.type==="state_changed"){g(_),e.isStreaming=!!_.isStreaming,a.updatePrimaryAction(),_.thinkingLevels&&o.updateThinkingOptions(_.thinkingLevels),t.modelSelectEl.options.length&&(t.modelSelectEl.value=e.currentModelKey),_.type==="state_changed"&&!z&&(p().catch(G=>b("system",G instanceof Error?G.message:String(G),"error")),u?.isOpen()&&u.refreshTree().catch(()=>{}),B());return}if(_.type==="session_runtime_changed"){const G=String(_.sessionId||_.sessionFile||""),ne=I(_.runtime);G&&R.get(G)!==ne&&(R.set(G,ne),c.updateSessionRuntime(String(_.sessionId||""),_.runtime));return}if(_.type==="models_updated"){o.populateModelSelect(_.models||[],e.currentModelKey);return}if(_.type==="session_stats_changed"){(!_.sessionId||_.sessionId===e.currentSessionId)&&f(_.stats);return}if(_.type==="settings_updated"){d.applySettings(_.settings);return}if(_.type==="extension_ui_request"){E(_);return}if(_.type==="pi_event"){!z&&P(_.event)&&B(),(!_.sessionId||_.sessionId===e.currentSessionId)&&T(_.event,z),!z&&_.event?.type==="agent_end"&&_.sessionId&&c.updateSessionRuntime(String(_.sessionId),{loaded:!0,isRunning:!1,isStreaming:!1,isCompacting:!1,pendingMessageCount:0});return}_.type==="server_error"&&(!_.sessionId||_.sessionId===e.currentSessionId)&&b("system",_.error,"error")}),w.addEventListener("close",()=>{s.markWebSocketClosed(),window.setTimeout($,Qa)})}return{connect:$,handlePiEvent:T}}function Xc(n){const e=new Date(n);if(Number.isNaN(e.getTime()))return"";const t=Math.floor((Date.now()-e.getTime())/1e3);if(t<60)return"just now";const r=Math.floor(t/60);if(r<60)return`${r}m ago`;const a=Math.floor(r/60);if(a<24)return`${a}h ago`;const i=Math.floor(a/24);if(i<7)return`${i}d ago`;const o=Math.floor(i/7);if(o<5)return`${o}w ago`;const c=Math.floor(i/30);return c<12?`${c}mo ago`:`${Math.floor(i/365)}y ago`}function mt(n){return n.name||n.firstMessage?.trim()||"New session"}function Pa(n){return n.split(/[\\/]+/).filter(Boolean).at(-1)||n||"Folder"}function Jc(){return window.matchMedia("(max-width: 700px)").matches}const Si="pi-web-known-session-cwds";function ki(){try{const n=JSON.parse(localStorage.getItem(Si)||"[]");return Array.isArray(n)?n.filter(e=>typeof e=="string"&&e.trim().length>0):[]}catch{return[]}}function kt(n){const e=n?.trim();if(!e)return;const t=new Set(ki());t.add(e),localStorage.setItem(Si,JSON.stringify(Array.from(t)))}function jc(n){const{state:e,elements:t,api:r,updateMeta:a,updateThinkingOptions:i,refreshModels:o,refreshMessages:c,refreshState:d,refreshSessionTitle:s,clearMessages:l,addMessage:u}=n;let g=[];const f=new Map;function p(){t.emptyCwdPathEl.textContent=e.currentCwd,t.emptyCwdChooserEl.hidden=t.messagesEl.children.length>0||e.isStreaming}async function y(h){const v=await fetch("/api/session/cwd",{method:"POST",headers:r.headers(),body:JSON.stringify({cwd:h})}),k=await v.json().catch(()=>({}));if(!v.ok||k.ok===!1)throw new Error(k.error||await v.text());kt(h),a(k),k.thinkingLevels&&i(k.thinkingLevels),await o(),await c(),s()}async function b(h){const v=document.createElement("div");v.className="folderPickerBackdrop";const k=document.createElement("div");k.className="folderPicker";const C=document.createElement("h2");C.textContent="Select working directory";const E=document.createElement("input");E.className="folderPickerInput",E.value=h;const S=document.createElement("div");S.className="folderPickerList";const T=document.createElement("div");T.className="folderPickerError";const $=document.createElement("div");$.className="folderPickerActions";const w=document.createElement("button");w.type="button",w.textContent="Cancel";const A=document.createElement("button");A.type="button",A.className="primaryAction",A.textContent="Select folder",$.append(w,A),k.append(C,E,S,T,$),v.append(k),document.body.append(v);async function _(z){T.textContent="",S.textContent="Loading…";const G=await fetch(`/api/fs/dirs?path=${encodeURIComponent(z)}`,{headers:r.headers()}),ne=await G.json();if(!G.ok||ne.ok===!1)throw new Error(ne.error||"Could not list directory");E.value=ne.path,S.textContent="";const ce=document.createElement("button");ce.type="button",ce.className="folderPickerRow",ce.textContent="..",ce.addEventListener("click",()=>_(ne.parent).catch(re=>{T.textContent=re.message})),S.append(ce);for(const re of ne.dirs||[]){const ie=document.createElement("button");ie.type="button",ie.className="folderPickerRow",ie.textContent=re.name,ie.addEventListener("click",()=>_(re.path).catch(be=>{T.textContent=be.message})),S.append(ie)}}w.addEventListener("click",()=>v.remove()),v.addEventListener("click",z=>{z.target===v&&v.remove()}),E.addEventListener("keydown",z=>{z.key==="Enter"&&_(E.value).catch(G=>{T.textContent=G.message})}),A.addEventListener("click",async()=>{try{A.disabled=!0,await y(E.value),v.remove()}catch(z){T.textContent=z instanceof Error?z.message:String(z),A.disabled=!1}}),_(h).catch(z=>{T.textContent=z.message,S.textContent=""}),!("ontouchstart"in window)&&navigator.maxTouchPoints===0&&E.focus()}async function N(h){const v=await fetch("/api/sessions/new",{method:"POST",headers:r.headers(),body:h?JSON.stringify({cwd:h}):void 0});if(!v.ok)throw new Error(await v.text());kt(h||e.currentCwd),M(!1),l(),await d(),p()}function M(h){t.sessionDrawer.hidden=!h,t.sessionBackdrop.hidden=!h,document.body.classList.toggle("sessionDrawerOpen",h),h&&L().catch(v=>u("system",v instanceof Error?v.message:String(v),"error"))}async function L(){kt(e.currentCwd);const h=new URLSearchParams;for(const S of ki())h.append("cwd",S);const v=h.toString()?`/api/sessions?${h}`:"/api/sessions",k=await fetch(v,{headers:r.headers()});if(!k.ok)throw new Error(await k.text());g=(await k.json()).sessions||[];let E=!1;e.pinnedSessions=e.pinnedSessions.map(S=>{const T=g.find($=>$.id===S.id);return T&&mt(T)!==S.label?(E=!0,{...S,label:mt(T)}):S}),E&&Lr(e.pinnedSessions),D(g),B()}function Z(h,v){g=g.map(k=>({...k,isCurrent:k.id===h&&(k.cwd||v)===v})),D(g),B()}function R(h,v){if(!h)return;const k=e.pinnedSessions.some(E=>E.id===h);if(k&&f.set(h,v),g.length===0){k&&B();return}let C=!1;if(g=g.map(E=>E.id!==h?E:(C=!0,{...E,runtime:v})),!C){k&&B();return}t.sessionDrawer.hidden||D(g),B()}function I(h){return e.pinnedSessions.some(v=>v.id===h)}function P(h){if(I(h.id))e.pinnedSessions=e.pinnedSessions.filter(v=>v.id!==h.id),f.delete(h.id);else{if(e.pinnedSessions.length>=Or)return;e.pinnedSessions=[...e.pinnedSessions,{id:h.id,label:mt(h)}]}Lr(e.pinnedSessions),document.body.classList.toggle("hasPinnedSessions",e.pinnedSessions.length>0),D(g),B()}function B(){const h=t.sessionBarEl,v=e.pinnedSessions;if(v.length===0){h.hidden=!0,document.body.classList.remove("hasPinnedSessions");return}h.hidden=!1,document.body.classList.add("hasPinnedSessions"),h.textContent="";for(const k of v){const C=g.find(w=>w.id===k.id),E=e.currentSessionId===k.id,S=(C?.runtime??f.get(k.id))?.isRunning??!1,T=document.createElement("button");T.type="button",T.className=`sessionBarTab${E?" active":""}${S?" running":""}`,E&&T.setAttribute("aria-current","page"),T.title=C?mt(C):k.label;const $=document.createElement("span");$.className="sessionBarTabLabel",$.textContent=C?mt(C):k.label,T.append($),C&&T.addEventListener("click",async()=>{const w=e.currentSessionId;e.currentSessionId!==C.id&&(e.currentSessionId=C.id,B());try{const A=C.cwd||e.currentCwd,_=await fetch("/api/sessions/open",{method:"POST",headers:r.headers(),body:JSON.stringify({sessionId:C.id,cwd:A})});if(!_.ok)throw new Error(await _.text());kt(A),Z(C.id,A),await d()}catch(A){e.currentSessionId=w,B(),u("system",A instanceof Error?A.message:String(A),"error")}}),h.append(T)}}function D(h){if(t.sessionListEl.textContent="",h.length===0){const k=document.createElement("p");k.className="sessionEmpty",k.textContent="No saved sessions yet.",t.sessionListEl.append(k);return}const v=new Map;for(const k of h){const C=k.cwd||e.currentCwd||"";v.set(C,[...v.get(C)||[],k])}for(const[k,C]of v){const E=document.createElement("section");E.className="sessionFolderGroup";const S=document.createElement("div");S.className="sessionFolderHeader";const T=document.createElement("button");T.type="button",T.className="sessionFolderToggle",T.setAttribute("aria-expanded",String(!e.collapsedSessionFolders.has(k))),T.title=e.collapsedSessionFolders.has(k)?"Expand folder":"Collapse folder";const $=document.createElement("span");$.className="sessionFolderChevron",$.textContent=e.collapsedSessionFolders.has(k)?"▸":"▾";const w=document.createElement("span");w.className="sessionFolderLabels";const A=document.createElement("span");A.className="sessionFolderName",A.textContent=Pa(k);const _=document.createElement("span");_.className="sessionFolderPath",_.textContent=k,w.append(A,_),T.append($,w),T.addEventListener("click",()=>{e.collapsedSessionFolders.has(k)?e.collapsedSessionFolders.delete(k):e.collapsedSessionFolders.add(k),xs(e.collapsedSessionFolders),D(g)});const z=document.createElement("button");if(z.type="button",z.className="iconButton sessionFolderNewButton",z.title=`New session in ${Pa(k)}`,z.setAttribute("aria-label",z.title),Le(z,"square-pen"),z.addEventListener("click",async()=>{try{await N(k)}catch(ce){u("system",ce instanceof Error?ce.message:String(ce),"error")}}),S.append(T,z),E.append(S),e.collapsedSessionFolders.has(k)){t.sessionListEl.append(E);continue}const G=e.expandedSessionFolders.has(k),ne=G?C:C.slice(0,Ir);for(const ce of ne)E.append(Y(ce,k));if(C.length>Ir){const ce=document.createElement("button");ce.type="button",ce.className="sessionFolderMoreButton",ce.textContent=G?"Show fewer":`Show all ${C.length} sessions`,ce.addEventListener("click",()=>{G?e.expandedSessionFolders.delete(k):e.expandedSessionFolders.add(k),D(g)}),E.append(ce)}t.sessionListEl.append(E)}}function Y(h,v){const k=document.createElement("div");k.className=`sessionItem${h.isCurrent?" current":""}${I(h.id)?" pinned":""}`,h.isCurrent&&k.setAttribute("aria-current","page");const C=I(h.id),E=e.pinnedSessions.length>=Or,S=document.createElement("button");S.type="button",S.className=`sessionItemPinBtn${C?" pinned":""}`,S.disabled=!C&&E,S.title=C?"Remove from quick bar":E?"Quick bar is full (max 4)":"Add to quick bar",S.setAttribute("aria-label",S.title),S.setAttribute("aria-pressed",String(C)),Le(S,"star"),S.addEventListener("click",()=>P(h));const T=document.createElement("button");T.type="button",T.className="sessionItemNavBtn";const $=document.createElement("span");$.className="sessionItemTitleRow";const w=document.createElement("span");if(w.className="sessionItemTitle",w.textContent=mt(h),$.append(w),h.runtime?.isRunning){const _=document.createElement("span");_.className="sessionSpinner",_.title=h.runtime.isCompacting?"Compacting":"Running",_.setAttribute("aria-label",_.title),_.style.animationDelay=`-${Date.now()%800}ms`,$.append(_)}const A=document.createElement("span");return A.className="sessionItemMeta",A.textContent=`${Xc(h.modified)} · ${h.messageCount}`,T.append($,A),T.addEventListener("click",async()=>{try{const _=await fetch("/api/sessions/open",{method:"POST",headers:r.headers(),body:JSON.stringify({sessionId:h.id,cwd:h.cwd||v})});if(!_.ok)throw new Error(await _.text());const z=h.cwd||v;kt(z),Z(h.id,z),Jc()&&M(!1),await d()}catch(_){u("system",_ instanceof Error?_.message:String(_),"error"),t.sessionDrawer.hidden||L().catch(()=>{})}}),k.append(S,T),k}function H(){new MutationObserver(p).observe(t.messagesEl,{childList:!0}),t.emptyCwdButton.addEventListener("click",()=>b(e.currentCwd)),t.sessionButton.addEventListener("click",()=>M(!0)),t.newSessionHeaderButton.addEventListener("click",async()=>{try{await N()}catch(h){u("system",h instanceof Error?h.message:String(h),"error")}}),t.sessionCloseButton.addEventListener("click",()=>M(!1)),t.sessionBackdrop.addEventListener("click",()=>M(!1)),t.sessionNewButton.addEventListener("click",async()=>{try{await N()}catch(h){u("system",h instanceof Error?h.message:String(h),"error")}}),B(),e.pinnedSessions.length>0&&L().catch(()=>{})}return{init:H,refreshSessions:L,setSessionDrawerOpen:M,startNewSession:N,updateEmptyCwdChooser:p,updateSessionRuntime:R,renderSessionBar:B}}function el(n){return JSON.parse(JSON.stringify(n))}function Nt(n){return!!n&&typeof n=="object"&&!Array.isArray(n)}function tl(n){const e=el(ir);if(!Nt(n))return e;const t=Nt(n.appearance)?n.appearance:void 0;(t?.density==="compact"||t?.density==="comfortable")&&(e.appearance.density=t.density);const r=Nt(n.composer)?n.composer:void 0;(r?.queueMode==="steer"||r?.queueMode==="followUp")&&(e.composer.queueMode=r.queueMode),typeof r?.expanded=="boolean"&&(e.composer.expanded=r.expanded);const a=Nt(n.defaults)?n.defaults:void 0,i=Nt(a?.model)?a.model:void 0,o=typeof i?.provider=="string"?i.provider.trim():"",c=typeof i?.id=="string"?i.id.trim():"";return o&&c&&(e.defaults.model={provider:o,id:c}),typeof a?.thinkingLevel=="string"&&a.thinkingLevel.trim()&&(e.defaults.thinkingLevel=a.thinkingLevel.trim()),e}function nl(n){const e=n.defaults.model;return!e&&!n.defaults.thinkingLevel?"No default model saved":[e?`${e.provider}/${e.id}`:"Current pi default model",n.defaults.thinkingLevel?`reasoning ${n.defaults.thinkingLevel}`:void 0].filter(Boolean).join(" · ")}function rl(n){const e=n.indexOf("/");if(e<=0)return;const t=n.slice(0,e),r=n.slice(e+1);return t&&r?{provider:t,id:r}:void 0}function al(n){const{state:e,elements:t,api:r,addMessage:a}=n;function i(){const p=e.queueMode==="steer";t.queueToggle.setAttribute("aria-pressed",String(p)),t.queueToggle.title=p?"Queue mode: steer while running":"Queue mode: follow up after running",t.queueToggle.setAttribute("aria-label",t.queueToggle.title),Le(t.queueToggle,p?"route":"corner-down-right")}function o(){t.formEl.classList.toggle("expanded",e.editorExpanded),Le(t.expandButton,e.editorExpanded?"minimize-2":"maximize-2"),t.expandButton.title=e.editorExpanded?"Collapse editor":"Expand editor",t.expandButton.setAttribute("aria-label",t.expandButton.title)}function c(p){const y=tl(p);e.settings=y,e.queueMode=y.composer.queueMode,e.editorExpanded=y.composer.expanded,document.documentElement.dataset.density=y.appearance.density,t.settingDensitySelect.value=y.appearance.density,t.settingQueueModeSelect.value=y.composer.queueMode,t.settingComposerExpandedCheckbox.checked=y.composer.expanded,t.settingModelDefaultsValue.textContent=nl(y),i(),o()}function d(p,y=!1){t.settingsStatusEl.textContent=p,t.settingsStatusEl.classList.toggle("error",y)}async function s(p){d("Saving…");const y=await fetch("/api/settings",{method:"PATCH",headers:r.headers(),body:JSON.stringify(p)}),b=await y.text(),N=b?JSON.parse(b):{};if(!y.ok||N.ok===!1)throw new Error(N.error||b);c(N.settings),d("Saved")}async function l(){const p=await fetch("/api/settings",{headers:r.headers()});if(!p.ok)throw new Error(await p.text());const y=await p.json();c(y.settings)}function u(){t.settingsBackdrop.hidden=!1,t.settingsPanel.hidden=!1,d(""),t.settingsCloseButton.focus()}function g(){t.settingsPanel.hidden=!0,t.settingsBackdrop.hidden=!0,t.settingsButton.focus()}function f(){c(e.settings),t.settingsButton.addEventListener("click",u),t.settingsCloseButton.addEventListener("click",g),t.settingsBackdrop.addEventListener("click",g),document.addEventListener("keydown",p=>{p.key==="Escape"&&!t.settingsPanel.hidden&&g()}),t.settingDensitySelect.addEventListener("change",()=>{s({appearance:{density:t.settingDensitySelect.value}}).catch(p=>{d(p instanceof Error?p.message:String(p),!0),a("system",p instanceof Error?p.message:String(p),"error")})}),t.settingQueueModeSelect.addEventListener("change",()=>{s({composer:{queueMode:t.settingQueueModeSelect.value}}).catch(p=>{d(p instanceof Error?p.message:String(p),!0),a("system",p instanceof Error?p.message:String(p),"error")})}),t.settingComposerExpandedCheckbox.addEventListener("change",()=>{s({composer:{expanded:t.settingComposerExpandedCheckbox.checked}}).catch(p=>{d(p instanceof Error?p.message:String(p),!0),a("system",p instanceof Error?p.message:String(p),"error")})}),t.settingSaveModelDefaultsButton.addEventListener("click",()=>{const p=rl(e.currentModelKey);if(!p){d("No current model to save",!0);return}s({defaults:{model:p,thinkingLevel:e.currentThinkingLevel||null}}).catch(y=>{d(y instanceof Error?y.message:String(y),!0),a("system",y instanceof Error?y.message:String(y),"error")})}),t.settingClearModelDefaultsButton.addEventListener("click",()=>{s({defaults:{model:null,thinkingLevel:null}}).catch(p=>{d(p instanceof Error?p.message:String(p),!0),a("system",p instanceof Error?p.message:String(p),"error")})})}return{init:f,refreshSettings:l,applySettings:c}}function il(n){const{state:e,elements:t,api:r,updateMeta:a,addMessage:i,refreshSessions:o,refreshState:c}=n;function d(R){const I=R.trim()||"New session";e.currentSessionTitle=I,t.statusTitleEl.title="Rename session",t.statusTitleEl.setAttribute("aria-label",`Session: ${I}. Click to rename.`),e.statusTitleEditing||(t.statusTitleEl.textContent=I)}async function s(R){const I=e.currentSessionTitle;d(R||"New session");try{const P=await fetch("/api/session/name",{method:"POST",headers:r.headers(),body:JSON.stringify({sessionId:e.currentSessionId,name:R})}),B=await P.text(),D=B?JSON.parse(B):{};if(!P.ok||D.ok===!1)throw new Error(D.error||B);a(D),t.sessionDrawer.hidden||o().catch(()=>{})}catch(P){d(I),i("system",P instanceof Error?P.message:String(P),"error")}}function l(){if(e.statusTitleEditing||!e.currentSessionId)return;e.statusTitleEditing=!0;const R=document.createElement("input");R.type="text",R.className="statusTitleInput",R.value=e.currentSessionTitle==="New session"?"":e.currentSessionTitle,R.placeholder="New session",R.maxLength=200,R.setAttribute("aria-label","Session name");const I=R.value.trim();let P=!1;const B=D=>{if(P)return;P=!0,e.statusTitleEditing=!1;const Y=R.value.trim();D&&Y!==I?s(Y):d(e.currentSessionTitle)};R.addEventListener("keydown",D=>{D.key==="Enter"?(D.preventDefault(),B(!0)):D.key==="Escape"&&(D.preventDefault(),B(!1))}),R.addEventListener("blur",()=>B(!0)),t.statusTitleEl.textContent="",t.statusTitleEl.append(R),R.focus(),R.select()}function u(){e.reconnectNoticeTimer!==void 0&&window.clearTimeout(e.reconnectNoticeTimer),e.connectionLostTimer!==void 0&&window.clearTimeout(e.connectionLostTimer),e.reconnectNoticeTimer=void 0,e.connectionLostTimer=void 0}function g(){e.reconnectedClearTimer!==void 0&&window.clearTimeout(e.reconnectedClearTimer),e.reconnectedClearTimer=void 0}function f(R,I,P=I){g(),t.connectionStatusEl.className=`connectionStatus ${R}`,t.connectionStatusEl.textContent=I,t.connectionStatusEl.title=P,t.connectionStatusEl.hidden=!1}function p(){g(),t.connectionStatusEl.hidden=!0,t.connectionStatusEl.textContent="",t.connectionStatusEl.title="",t.connectionStatusEl.className="connectionStatus"}function y(){e.reconnectNoticeTimer===void 0&&(e.reconnectNoticeTimer=window.setTimeout(()=>{e.reconnectNoticeTimer=void 0,e.wsDisconnected&&t.tokenOverlay.hidden&&!t.connectionStatusEl.classList.contains("offline")&&f("reconnecting","Live updates reconnecting…")},Ss)),e.connectionLostTimer===void 0&&(e.connectionLostTimer=window.setTimeout(()=>{e.connectionLostTimer=void 0,e.wsDisconnected&&t.tokenOverlay.hidden&&f("offline","Live updates unavailable","Connection lost. Messages may still send, but live updates are unavailable.")},ks))}function b(){const R=e.wsHasOpened&&e.wsDisconnected,I=!t.connectionStatusEl.hidden;if(e.wsHasOpened=!0,e.wsDisconnected=!1,u(),!R){p();return}if(!I){p();return}f("reconnected","Reconnected"),e.reconnectedClearTimer=window.setTimeout(()=>{e.reconnectedClearTimer=void 0,e.wsDisconnected||p()},Qa)}function N(){e.wsDisconnected=!0,g(),y()}function M(){f("syncRequired","Sync needed","Some live updates were missed. Click to sync when you are ready.")}async function L(R=e.currentSessionId){try{const I=await fetch("/api/state",{headers:r.headers()});if(!I.ok||R!==e.currentSessionId)return;const P=await I.json();if(R!==e.currentSessionId||P.sessionId!==R)return;a(P)}catch{}}function Z(){t.statusTitleEl.setAttribute("role","button"),t.statusTitleEl.tabIndex=0,d(e.currentSessionTitle),t.statusTitleEl.addEventListener("click",l),t.statusTitleEl.addEventListener("keydown",R=>{R.target!==t.statusTitleEl||R.key!=="Enter"&&R.key!==" "||(R.preventDefault(),l())}),t.connectionStatusEl.addEventListener("click",()=>{t.connectionStatusEl.classList.contains("syncRequired")&&c().then(p).catch(R=>i("system",R instanceof Error?R.message:String(R),"error"))})}return{init:Z,setStatusTitle:d,refreshSessionTitle:L,markWebSocketOpen:b,markWebSocketClosed:N,markSyncRequired:M}}function sl(n){return Array.isArray(n)?n.filter(e=>!!e&&typeof e=="object").map(e=>({oldText:e.oldText,newText:e.newText})):[]}function $a(n,e){n.replaceChildren(rt(e?Ka:Za,{"aria-hidden":"true"}));const t=e?"Switch to side-by-side diff view":"Switch to top/bottom diff view";n.setAttribute("aria-label",t),n.title=t}function ol(n,e){n.textContent=e?"▾":"▴",n.setAttribute("aria-label",e?"Show more":"Show less"),n.title=e?"Show more":"Show less",n.setAttribute("aria-expanded",String(!e))}function Fa(n,e){const t=sl(e.edits);if(t.length===0)return;const r=document.createElement("div");r.className="diffToolbar";const a=document.createElement("span");a.textContent=`${t.length} edit${t.length===1?"":"s"}`;const i=document.createElement("button");i.type="button",i.className="diffLayoutToggle";const o=Ks(t);let c=!1;$a(i,c),i.addEventListener("click",()=>{c=!c,Jt(o,c),$a(i,c)}),r.append(a,i);const d=Ws(t)>20;if(d&&o.classList.add("collapsed"),n.append(r,o),d){const s=document.createElement("button");s.type="button",s.className="toolCardCollapseToggle";const l=u=>{o.classList.toggle("collapsed",u),ol(s,u)};l(!0),o.addEventListener("click",()=>l(!o.classList.contains("collapsed"))),s.addEventListener("click",u=>{u.stopPropagation(),l(!o.classList.contains("collapsed"))}),n.append(s)}}function cl(n,e){if(!e)return"";const t=["path","command","pattern","query","url"];for(const r of t)if(typeof e[r]=="string")return e[r];for(const r of Object.values(e))if(typeof r=="string")return r;return""}function Ua(){return document.documentElement.dataset.density==="compact"}function Ni(n,e){n.textContent=e?"▸":"▾",n.setAttribute("aria-label",e?"Show tool details":"Hide tool details"),n.title=e?"Show tool details":"Hide tool details",n.setAttribute("aria-expanded",String(!e))}function nr(n,e){n.classList.toggle("toolCard--compactCollapsed",e);const t=n.querySelector(".toolCardExpandToggle");t&&Ni(t,e)}function ll(n,e){if(!e||Object.keys(e).length===0)return;const t=document.createElement("details");t.className="toolCardDetails",t.open=!0;const r=document.createElement("summary");r.className="toolCardSummary",r.textContent="Arguments";const a=document.createElement("pre");a.className="toolCardArgs",a.textContent=JSON.stringify(e,null,2),t.append(r,a),n.append(t)}function Ti(n,e,t=""){const r=document.createElement("div");r.className="toolCardHeader";const a=document.createElement("span");a.className="toolCardIcon",a.setAttribute("aria-hidden","true");const i=document.createElement("span");i.className="toolCardLabel";const o=document.createElement("span");if(o.className="toolCardName",o.textContent=e,i.append(o),t){const d=document.createElement("span");d.className="toolCardSubtitle",d.textContent=t,i.append(d),i.addEventListener("click",s=>{Ua()||(s.stopPropagation(),i.classList.toggle("expanded"))})}const c=document.createElement("button");c.type="button",c.className="toolCardExpandToggle",Ni(c,!0),c.addEventListener("click",d=>{d.stopPropagation(),nr(n,!n.classList.contains("toolCard--compactCollapsed"))}),r.addEventListener("click",d=>{const s=d.target instanceof HTMLElement?d.target:void 0;!Ua()||s?.closest("button")||nr(n,!n.classList.contains("toolCard--compactCollapsed"))}),r.append(a,i,c),n.append(r),nr(n,!0)}function za(n,e,t){Ti(n,e,t?cl(e,t):""),ll(n,t)}function dl(n,e){const t=document.createElement("code");t.classList.add("hljs");const r=Kt.highlightAuto(e);t.innerHTML=r.value,n.append(t)}function ul(n){return n.length>600||n.split(`
|
|
78
|
+
`).length>10}function rr(n,e){const t=e.length>2e3?e.slice(0,2e3)+`
|
|
79
|
+
…`:e,r=ul(t),a=document.createElement("pre");if(a.className=`toolCardBody${r?" collapsed":""}`,dl(a,t),n.append(a),r){const i=document.createElement("button");i.type="button",i.className="toolCardCollapseToggle";const o=c=>{a.classList.toggle("collapsed",c),i.textContent=c?"▾":"▴",i.setAttribute("aria-label",c?"Show more":"Show less"),i.title=c?"Show more":"Show less",i.setAttribute("aria-expanded",String(!c))};o(!0),a.addEventListener("click",()=>o(!a.classList.contains("collapsed"))),i.addEventListener("click",c=>{c.stopPropagation(),o(!a.classList.contains("collapsed"))}),n.append(i)}}function xi(n){if(typeof n=="string"){const t=n.trim();if(t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]"))try{const r=JSON.parse(t),a=xi(r);if(a)return a}catch{}return n}if(!n||typeof n!="object")return n==null?"":String(n);const e=n;return dr(e.content)||dr(e.raw)||JSON.stringify(n,null,2)}function pl(n,e=()=>{n.scrollTop=n.scrollHeight}){const t=new Map;function r(s,l){const u=document.createElement("div");return u.className="toolCard toolCard--running",za(u,s,l),s==="edit"&&Fa(u,l),u.dataset.toolName=s,n.append(u),e(),u}function a(s,l,u,g){s.classList.remove("toolCard--running"),s.classList.add(u?"toolCard--error":"toolCard--success"),s.querySelector(".toolCardBadge")?.remove();const f=xi(g);f&&(u||s.dataset.toolName!=="edit")&&rr(s,f),e()}function i(s,l,u,g){const f=document.createElement("div");f.className=`toolCard ${l?"toolCard--error":"toolCard--success"}`,za(f,s,g),s==="edit"&&g?Fa(f,g):u&&rr(f,u),n.append(f)}function o(s,l,u){const g=document.createElement("div");g.className="toolCard toolCard--error runtimeErrorCard",Ti(g,s,l),u&&rr(g,u),n.append(g)}function c(s,l,u){const g=s||l;if(t.get(g)?.isConnected)return;const p=r(l,u);t.set(g,p)}function d(s,l,u,g){const f=s||l,p=t.get(f);p&&(a(p,l,u,g),t.delete(f))}return{addToolCard:r,updateToolCard:a,addToolHistoryCard:i,addRuntimeErrorCard:o,startTool:c,endTool:d,clearActiveToolCards(){t.clear()}}}function ur(n,e){switch(n){case"user":return"user";case"assistant":return"assistant";case"toolCall":return"tool";case"toolResult":return"result";case"branchSummary":return"summary";case"compaction":return"compact";case"error":return"error";case"model":return"model";case"thinking":return"thinking";case"session":return"session";case"label":return"label";case"custom":return"custom";default:return e.replace(/_/g," ")}}function qa(n){if(!n)return"";const e=new Date(n);return Number.isNaN(e.getTime())?"":new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(e)}function Ci(n,e){const t=[];for(const r of n){const a=Ci(r.children||[],e);gl(r,e)?t.push({...r,children:a,childCount:a.length}):t.push(...a)}return t}function Ri(n){return n.reduce((e,t)=>e+1+Ri(t.children||[]),0)}function Ai(n,e=new Set){for(const t of n)e.add(t.id),Ai(t.children||[],e);return e}function Mi(n,e){if(!e)return n;const t=[];for(const r of n){const a=Mi(r.children||[],e);(fl(r,e)||a.length>0)&&t.push({...r,children:a,childCount:a.length})}return t}function pr(n,e){for(const t of n){if(t.id===e)return t;const r=pr(t.children||[],e);if(r)return r}}function Oi(n){return n.role==="toolCall"||n.role==="toolResult"}function ml(n){return["user","assistant","branchSummary","compaction","custom"].includes(n.role)}function gl(n,e){return e==="all"?!0:e==="user"?n.role==="user"||n.role==="custom":e==="labeled"?!!n.label:e==="no-tools"?!Oi(n)&&n.role!=="label"&&n.role!=="error":ml(n)}function fl(n,e){return e?`${n.preview} ${n.label||""} ${ur(n.role,n.type)} ${n.id}`.toLowerCase().includes(e):!0}function Ha(){return window.matchMedia("(max-width: 700px)").matches}function ar(n,e,t=`${e}s`){return`${n} ${n===1?e:t}`}function hl(n){const{state:e,elements:t,api:r,composer:a,updateMeta:i,refreshMessages:o,addMessage:c}=n;let d=null,s="",l=!1;const u=document.createElement("div");u.className="conversationTreeBackdrop",u.hidden=!0;const g=document.createElement("aside");g.className="conversationTreePanel",g.setAttribute("aria-label","Conversation tree"),g.hidden=!0;const f=document.createElement("div");f.className="conversationTreeHeader";const p=document.createElement("div");p.className="conversationTreeTitle";const y=document.createElement("h2");y.textContent="Conversation tree";const b=document.createElement("span");b.className="conversationTreeSummary",p.append(y,b);const N=document.createElement("button");N.type="button",N.className="iconButton conversationTreeCloseButton",N.title="Close conversation tree",N.setAttribute("aria-label",N.title),N.textContent="×",f.append(p,N);const M=document.createElement("div");M.className="conversationTreeControls";const L=document.createElement("input");L.className="conversationTreeSearch",L.type="search",L.placeholder="Search tree",L.setAttribute("aria-label","Search conversation tree");const Z=document.createElement("select");Z.className="conversationTreeFilter",Z.setAttribute("aria-label","Conversation tree filter");const R=[["default","Default"],["no-tools","No tools"],["user","User only"],["labeled","Labeled"],["all","All entries"]];for(const[F,K]of R){const le=document.createElement("option");le.value=F,le.textContent=K,Z.append(le)}M.append(L,Z);const I=document.createElement("div");I.className="conversationTreeStatus",I.setAttribute("aria-live","polite");const P=document.createElement("div");P.className="conversationTreeList",P.setAttribute("role","tree");const B=document.createElement("div");B.className="conversationTreeSelection",B.hidden=!0;const D=document.createElement("div");D.className="conversationTreeSelectionText";const Y=document.createElement("strong"),H=document.createElement("span");D.append(Y,H);const h=document.createElement("div");h.className="conversationTreeSelectionActions";const v=document.createElement("button");v.type="button",v.className="primaryAction conversationTreeJumpButton",v.textContent="Jump here";const k=document.createElement("button");k.type="button",k.className="conversationTreeSummaryButton",k.textContent="Summarize & jump";const C=document.createElement("button");C.type="button",C.className="conversationTreeCustomButton",C.textContent="Custom focus…",h.append(v,k,C);const E=document.createElement("div");E.className="conversationTreeCustomForm",E.hidden=!0;const S=document.createElement("label");S.textContent="Summary focus";const T=document.createElement("textarea");T.rows=3,T.placeholder="What should the branch summary preserve?",S.append(T);const $=document.createElement("div");$.className="conversationTreeCustomActions";const w=document.createElement("button");w.type="button",w.textContent="Cancel";const A=document.createElement("button");A.type="button",A.className="primaryAction",A.textContent="Summarize & jump",$.append(w,A),E.append(S,$),B.append(D,h,E),g.append(f,M,I,P,B),document.body.append(u,g);function _(F,K=!1){I.textContent=F,I.classList.toggle("error",K)}function z(){return!g.hidden}function G(){return s&&d?pr(d.nodes,s):void 0}function ne(F){l=F,g.classList.toggle("loading",l),re()}function ce(F){if(!d){b.textContent="";return}const K=typeof F=="number"&&F!==d.entryCount?[`${F} shown`,ar(d.entryCount,"entry","entries")]:[ar(d.entryCount,"entry","entries")];d.branchPointCount>0&&K.push(ar(d.branchPointCount,"branch point")),b.textContent=K.join(" · ")}function re(F){const K=G();if(B.hidden=!K||!!(F&&!F.has(K.id)),!K||B.hidden)return;const le=ur(K.role,K.type);Y.textContent=`${le}: ${K.preview||K.id}`;const se=[qa(K.timestamp),K.label?`#${K.label}`:"",K.isCurrentLeaf?"current position":""].filter(Boolean).join(" · ");H.textContent=se;const Se=K.role==="user"||K.role==="custom"?"Edit from here":"Continue from here";v.textContent=K.isCurrentLeaf?"Current position":Se,v.disabled=l||e.isStreaming||K.isCurrentLeaf,k.disabled=l||e.isStreaming||K.isCurrentLeaf,C.disabled=l||e.isStreaming||K.isCurrentLeaf,k.hidden=K.isCurrentLeaf,C.hidden=K.isCurrentLeaf}function ie(F){const K=document.createElement("button");K.type="button",K.className="conversationTreeNode",K.classList.toggle("selected",F.id===s),K.classList.toggle("activePath",F.isOnActivePath),K.classList.toggle("currentLeaf",F.isCurrentLeaf),K.classList.toggle("inactivePath",!F.isOnActivePath),K.classList.toggle("toolEntry",Oi(F)),K.setAttribute("role","treeitem"),K.setAttribute("aria-selected",String(F.id===s)),F.isCurrentLeaf&&K.setAttribute("aria-current","true");const le=document.createElement("span");le.className="conversationTreeRail";const se=document.createElement("span");se.className=`conversationTreeGlyph ${F.role}`,le.append(se);const Se=document.createElement("span");Se.className="conversationTreeNodeMain";const Me=document.createElement("span");Me.className="conversationTreeNodeTop";const Re=document.createElement("span");Re.className=`conversationTreeRole ${F.role}`,Re.textContent=`${ur(F.role,F.type)}:`;const Je=document.createElement("span");Je.className="conversationTreeTime",Je.textContent=qa(F.timestamp),Me.append(Re,Je);const $e=document.createElement("span");$e.className="conversationTreePreview",$e.textContent=F.preview||F.type.replace(/_/g," ");const Be=document.createElement("span");if(Be.className="conversationTreeBadges",F.label){const ge=document.createElement("span");ge.className="conversationTreeBadge label",ge.textContent=F.label,Be.append(ge)}if(F.childCount>1){const ge=document.createElement("span");ge.className="conversationTreeBadge branch",ge.textContent=`${F.childCount} branches`,Be.append(ge)}if(F.isCurrentLeaf){const ge=document.createElement("span");ge.className="conversationTreeBadge current",ge.textContent="current",Be.append(ge)}return Se.append(Me,$e),Be.children.length&&Se.append(Be),K.append(le,Se),K.addEventListener("click",()=>{s=F.id,E.hidden=!0,_e()}),K}function be(F,K,le=!1){const se=document.createElement("div");se.className="conversationTreeItem",se.classList.toggle("branchItem",le),se.classList.toggle("activePath",F.isOnActivePath),se.classList.toggle("inactivePath",!F.isOnActivePath),se.append(ie(F)),K.append(se);const Se=F.children||[];if(Se.length===1){be(Se[0],K,le);return}if(Se.length>1){const Me=document.createElement("div");Me.className="conversationTreeChildren",se.append(Me);for(const Re of Se)be(Re,Me,!0)}}function ve(F,K){for(const le of F)be(le,K)}function _e(){P.textContent="";const F=Z.value,K=d?Ci(d.nodes,F):[],le=L.value.trim().toLowerCase(),se=Mi(K,le),Se=Ai(se),Me=Ri(se);if(ce(Me),!d){const Re=document.createElement("p");Re.className="conversationTreeEmpty",Re.textContent="Open a session to view its tree.",P.append(Re),re(Se);return}if(Me===0){const Re=document.createElement("p");Re.className="conversationTreeEmpty",Re.textContent=K.length===0?"No conversation entries yet.":"No entries match the current filter.",P.append(Re),re(Se);return}ve(se,P),re(Se)}async function Ce(){if(z()){_("Loading tree…");try{const F=e.currentSessionId?`?sessionId=${encodeURIComponent(e.currentSessionId)}`:"",K=await fetch(`/api/session/tree${F}`,{headers:r.headers()}),le=await K.json().catch(()=>({}));if(!K.ok||le.ok===!1)throw new Error(le.error||await K.text());const se=le;d=se,s&&!pr(se.nodes||[],s)&&(s=""),!s&&se.leafId&&(s=se.leafId),_(se.entryCount?"Tap an entry to choose how to continue.":"This session has no tree entries yet."),_e()}catch(F){d=null,_(F instanceof Error?F.message:String(F),!0),_e()}}}async function Ie(F={}){const K=G();if(!(!K||l||K.isCurrentLeaf)){ne(!0),_(F.summarize?"Summarizing branch and navigating…":"Navigating…");try{const le=await fetch("/api/session/tree/navigate",{method:"POST",headers:r.headers(),body:JSON.stringify({sessionId:e.currentSessionId,targetId:K.id,summarize:!!F.summarize,customInstructions:F.customInstructions||void 0})}),se=await le.json().catch(()=>({}));if(!le.ok||se.ok===!1)throw new Error(se.error||await le.text());if(se.cancelled){_("Navigation cancelled.");return}se.state&&(i(se.state),e.isStreaming=!!se.state.isStreaming),a.setPromptText(typeof se.editorText=="string"?se.editorText:""),await o(),await Ce(),typeof se.editorText=="string"?c("system","Loaded an earlier prompt — edit and send to create a new branch."):_("Moved to the selected point."),Ha()&&Ue(!1)}catch(le){_(le instanceof Error?le.message:String(le),!0)}finally{ne(!1)}}}function Ue(F){g.hidden=!F,u.hidden=!F,document.body.classList.toggle("conversationTreeOpen",F),t.conversationTreeButton.setAttribute("aria-expanded",String(F)),F&&(Ce().catch(K=>_(K instanceof Error?K.message:String(K),!0)),Ha()||L.focus())}function ht(){t.conversationTreeButton.addEventListener("click",()=>Ue(!0)),N.addEventListener("click",()=>Ue(!1)),u.addEventListener("click",()=>Ue(!1)),L.addEventListener("input",_e),Z.addEventListener("change",_e),v.addEventListener("click",()=>Ie().catch(F=>_(F instanceof Error?F.message:String(F),!0))),k.addEventListener("click",()=>Ie({summarize:!0}).catch(F=>_(F instanceof Error?F.message:String(F),!0))),C.addEventListener("click",()=>{E.hidden=!1,T.focus()}),w.addEventListener("click",()=>{E.hidden=!0,T.value=""}),A.addEventListener("click",()=>Ie({summarize:!0,customInstructions:T.value.trim()}).catch(F=>_(F instanceof Error?F.message:String(F),!0))),document.addEventListener("keydown",F=>{F.key==="Escape"&&z()&&Ue(!1)})}return{init:ht,isOpen:z,refreshTree:Ce,setOpen:Ue}}ji();const Ee=Ji(),Ne=Cs(),We=Xi(Ne),bl=qc(Ee.messagesEl),Pe=Yc({messagesEl:Ee.messagesEl,markdown:bl}),Tt=pl(Ee.messagesEl,Pe.scrollToBottom);let lt,tn,Xe,ot,nn,ft,vr;function El(n){Pe.addMessage("system",n instanceof Error?n.message:String(n),"error")}function dt(n){Ne.currentModelKey=wi(n.model),Ne.currentModelDisplay=n.model?vi(n.model):"No model",Ne.currentThinkingLevel=n.thinkingLevel||"off",Ne.currentSessionId=n.sessionId||Ne.currentSessionId,Ne.currentCwd=n.cwd||Ne.currentCwd,"stats"in n&&tn.update(n.stats),"sessionTitle"in n?ft.setStatusTitle(n.sessionTitle?.trim()||"New session"):"sessionName"in n&&ft.setStatusTitle(n.sessionName?.trim()||"New session"),Ee.statusPathEl.textContent=Ne.currentCwd,Xe.updateSummary(),ot&&ot.renderSessionBar()}function _l(n){tn.update(n)}async function Mt(){await Pe.refreshMessages({sessionId:Ne.currentSessionId,headers:We.headers,addToolHistoryCard:Tt.addToolHistoryCard,addPendingToolCard:Tt.startTool,addRuntimeErrorCard:Tt.addRuntimeErrorCard,clearActiveToolCards:Tt.clearActiveToolCards,isStreaming:Ne.isStreaming,updateEmptyCwdChooser:()=>ot.updateEmptyCwdChooser()})}async function Ot(){const n=await fetch("/api/state",{headers:We.headers()});if(n.status===401){Ee.tokenOverlay.hidden=!1,Ee.tokenInput.focus();return}if(!n.ok)throw new Error(await n.text());const e=await n.json();dt(e),Ne.isStreaming=!!e.isStreaming,lt.updatePrimaryAction(),await Promise.all([nn.refreshSettings(),Xe.refreshModels(),Mt()])}function yl(){Le(Ee.sessionButton,"menu"),Le(Ee.newSessionHeaderButton,"square-pen"),Le(Ee.conversationTreeButton,"git-fork"),Le(Ee.attachButton,"paperclip"),Le(Ee.primaryButton,"send-horizontal"),Le(Ee.expandButton,"maximize-2"),Le(Ee.gitButton,"git-branch"),Le(Ee.settingsButton,"settings"),Le(Ee.stopButton,"square")}Xe=Vc({state:Ne,elements:Ee,api:We,updateMeta:dt,addMessage:Pe.addMessage});ft=il({state:Ne,elements:Ee,api:We,updateMeta:dt,addMessage:Pe.addMessage,refreshSessions:()=>ot.refreshSessions(),refreshState:Ot});nn=al({state:Ne,elements:Ee,api:We,addMessage:Pe.addMessage});tn=Ds({state:Ne,elements:Ee});ot=jc({state:Ne,elements:Ee,api:We,updateMeta:dt,updateThinkingOptions:n=>Xe.updateThinkingOptions(n),refreshModels:()=>Xe.refreshModels(),refreshMessages:Mt,refreshState:Ot,refreshSessionTitle:()=>ft.refreshSessionTitle(),clearMessages:()=>Pe.clear(),addMessage:Pe.addMessage});lt=Os({state:Ne,elements:Ee,api:We,addMessage:Pe.addMessage,updateMeta:dt,updateThinkingOptions:n=>Xe.updateThinkingOptions(n),refreshModels:()=>Xe.refreshModels(),refreshMessages:Mt,refreshState:Ot,beginStreamFollow:Pe.beginStreamFollow,endStreamFollow:Pe.endStreamFollow});vr=hl({state:Ne,elements:Ee,api:We,composer:lt,updateMeta:dt,refreshMessages:Mt,addMessage:Pe.addMessage});const wl=Qc({state:Ne,elements:Ee,api:We,composer:lt,messages:Pe,models:Xe,sessions:ot,status:ft,tools:Tt,settings:nn,conversationTree:vr,updateMeta:dt,updateSessionStats:_l,refreshMessages:Mt,refreshState:Ot,addMessage:Pe.addMessage});yl();ft.init();ot.init();tn.init();lt.init();vr.init();Xe.init();nn.init();lt.updateQueueToggle();uo({button:Ee.gitButton,panel:Ee.gitPanel,apiHeaders:We.headers});lt.updatePrimaryAction();Ot().catch(El);wl.connect();
|