1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../chunks/Ddunvw2w.js","../chunks/PPVm8Dsz.js"])))=>i.map(i=>d[i]); 2import"../chunks/DsnmJJEf.js";import"../chunks/CU1QhgsP.js";import{ao as St,p as $t,am as q,ap as He,aj as Ot,aP as Dt,f as b,s as u,t as $,O as r,b as v,c as Rt,al as k,d as i,r as l,aQ as Wt,an as ce,ai as ue,e as w,aO as Ee,ah as N,a as O,j as Ut,aJ as Gt}from"../chunks/BN1SZ1vA.js";import{h as Bt}from"../chunks/pBEQZU1u.js";import{N as It,F as Ct}from"../chunks/kkwqtSwP.js";import{p as Nt,i as E}from"../chunks/InhFHllE.js";import{e as Xe}from"../chunks/BmyB_2jS.js";import{h as Ht}from"../chunks/BIlqOjG3.js";import{a as Fe}from"../chunks/DhbVa8al.js";import{b as Me,s as re,a as Xt}from"../chunks/qsbTZ_ho.js";import{b as Ft}from"../chunks/yiCzh9-i.js";import{r as Vt}from"../chunks/BCKNLdqs.js";import{_ as qt}from"../chunks/PPVm8Dsz.js";function Ze(e){const n=new Error(e.message);if(e.name.length>0&&(n.name=e.name),e.causeName!==void 0||e.causeMessage!==void 0){const a=new Error(e.causeMessage??"");e.causeName!==void 0&&e.causeName.length>0&&(a.name=e.causeName),n.causeValue=a}return n}let W=null,et=0,H=null;const B=new Set;function Ve(){const e=new Error("The demo was shut down â run it again.");return e.name="DisposedError",e}function tt(e,n){if(W!==e){e.terminate();return}W=null,H?.resolve(!1),H=null;for(const a of[...B])a(n);B.clear(),e.terminate()}function at(){if(W!==null)return W;const e=new Worker(new URL(""+new URL("../workers/llm.worker-OA7HLhk-.js",import.meta.url).href,import.meta.url),{type:"module",name:"xybrid-demo-llm"});W=e;const n=()=>tt(e,new Error("The demo engine failed to start â check your connection and retry."));return e.addEventListener("error",n),e.addEventListener("messageerror",n),e}function se(e,n){e.postMessage(n)}function Kt(){if(H===null){const e=at();let n=()=>{};H={promise:new Promise(t=>{n=t}),resolve:n};const d=t=>{t.data.type==="probe-result"&&(e.removeEventListener("message",d),n(t.data.webGpu))};e.addEventListener("message",d),se(e,{type:"probe"})}return H.promise}function rt(e,n,a,d){const t=at(),f=++et;return new Promise((_,m)=>{const M=y=>{h(),m(y)},x=y=>{const p=y.data;p.type==="probe-result"||p.id!==f||(p.type==="progress"?d(p.loadedBytes,p.totalBytes):p.type==="loaded"?(h(),_(new Qt(t,p.accelerator,f))):p.type==="error"&&(h(),m(Ze(p.error))))},h=()=>{B.delete(M),t.removeEventListener("message",x)};B.add(M),t.addEventListener("message",x),se(t,{type:"load",id:f,preference:e,metadataUrl:n,wasmPath:a})})}function Jt(e){const n=W;if(n===null){H?.resolve(!1),H=null;for(const a of[...B])a(e);B.clear();return}tt(n,e)}class Qt{constructor(n,a,d){this.worker=n,this.accelerator=a,this.loadId=d}generateStream(n,a){if(this.worker!==W)throw Ve();const d=this.worker,t=++et;return(async function*(){if(d!==W)throw Ve();const f=[];let _=!1,m=null,M=null;const x=()=>{M?.(),M=null},h=p=>{m=p,_=!0,x()},y=p=>{const T=p.data;if(!(T.type==="probe-result"||T.id!==t)){if(T.type==="delta")f.push(T.text);else if(T.type==="generated")_=!0;else if(T.type==="error")m=Ze(T.error),_=!0;else return;x()}};B.add(h),d.addEventListener("message",y);try{for(se(d,{type:"generate",id:t,prompt:n,maxOutputTokens:a.maxOutputTokens});;){const p=f.shift();if(p!==void 0){yield p;continue}if(_){if(m!==null)throw m;return}await new Promise(T=>{M=T})}}finally{B.delete(h),d.removeEventListener("message",y),se(d,{type:"stop",id:t})}})()}async dispose(){this.worker===W&&se(this.worker,{type:"dispose",id:this.loadId})}}const st="https://huggingface.co/xybrid-ai/SmolLM2-135M-Instruct-LiteRTLM/resolve/main/model_metadata.json",Pe="/demo/llm-runtime",Yt="smollm2-135m-instruct",Zt=136,ea=256,qe=1600;function nt(){return typeof navigator<"u"&&"gpu"in navigator}let Ke=null;function ta(){return Ke??=(async()=>{if(!nt())return!1;try{const e=navigator.gpu;return e!==void 0&&await e.requestAdapter()!==null}catch{return!1}})(),Ke}async function aa(e){return e==="wasm"?!0:await ta()?Kt():e==="auto"}let R=null,K=0;class J extends Error{constructor(){super("The demo run was cancelled."),this.name="DemoCancelledError"}}function ra(){return R?.preference??null}
2async function Je(e,n){const{XybridLlm:a}=await qt(async()=>{const{XybridLlm:d}=await import("../chunks/Ddunvw2w.js");return{XybridLlm:d}},__vite__mapDeps([0,1]),import.meta.url);return a.load(st,{wasmPath:Pe,accelerator:e,onDownloadProgress:({loadedBytes:d,totalBytes:t})=>n(d,t??null)})}const ot=()=>new URL(st,location.href).href;async function sa(e,n,a){if(e!=="auto")return Je(e,n);try{return await Je("webgpu",n)}catch(d){if(a()||d instanceof J)throw new J;return rt("wasm",ot(),Pe,n)}}async function na(e,n){if(R?.preference===e)return{llm:R.llm,loadMs:null};const a=++K,d=await aa(e);if(a!==K)throw new J;if(R&&(await R.llm.dispose().catch(()=>{}),R=null),a!==K)throw new J;const t=performance.now(),f=d?await rt(e,ot(),Pe,n):await sa(e,n,()=>a!==K);if(a!==K)throw f.dispose().catch(()=>{}),new J;return R={llm:f,preference:e},{llm:f,loadMs:performance.now()-t}}async function oa(e,n,a,d){const t=performance.now();let f,_=0,m="",M=!1,x=!1;for await(const ne of e.generateStream(n,{maxOutputTokens:ea}))if(f===void 0&&(f=performance.now()-t),_+=1,m=m.length===0?ne.trimStart():m+ne,m.length>=qe&&(m=m.slice(0,qe),x=!0),m.length>0&&a(m),d()||x){M=d();break}const h=performance.now()-t;if(m.length===0)throw new Error("The model returned no text â try a different prompt.");const y=f??h,p=h-y,ve=_>1&&y<h/2&&p>0?(_-1)/p*1e3:_>1&&h>0?_/h*1e3:null;return{text:m,firstTokenMs:y,totalMs:h,tokensPerSec:ve,stopped:M,capped:x}}async function la(){K+=1;const e=R;R=null,Jt(new J),e&&await e.llm.dispose().catch(()=>{})}const Qe="The download was interrupted â check your connection and retry.";function Te(e){return e instanceof Error?e.name==="HTTPError"||e.name==="TimeoutError"||/fetch|network|load failed|abort/i.test(e.message):!1}function ia(e){const n=e instanceof Error?e.name:"",a=e?.causeValue;switch(n){case"UnsupportedFeatureError":return"This browser is missing a feature the engine needs â try a current Chrome, Edge, or Safari.";case"RuntimeInitializationError":return a instanceof Error&&/webgpu/i.test(a.message)?"WebGPU isn't available here â switch the engine to auto or wasm.":"The engine or model download was interrupted â check your connection and retry.";case"DeviceLostError":return"The GPU device was lost mid-run â retry, or switch the engine to wasm.";case"ConcurrentRunError":return"A run is already in progress â wait for it to finish.";case"InvalidMetadataError":case"UnsupportedTemplateError":return Te(a)?Qe:"The demo model failed validation. That is on us â please try again later.";default:return Te(e)||Te(a)?Qe:(e instanceof Error?e.message:"")||"Something unexpected went wrong â retry."}}const Ye=["Write a haiku about AI that works offline.","Explain in two sentences why on-device inference matters.","Give three reasons to run a language model locally."],da=(e,n)=>`<span class="t-${e}">${n}</span>`,ca=(e,n)=>n,ua=e=>e.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">");function va(e){const n=e.trim().replace(/\s+/g," ");return(n.length>46?`${n.slice(0,45).trimEnd()}â¦`:n).replaceAll("'","\\'")}function lt(e,n,a,d){const t=d(va(e)||"Hello!");return[`${a("key","import")} { ${a("type","XybridLlm")} } ${a("key","from")}
2 ${a("str","'@xybrid/web'")};`,"",`${a("key","const")} ${a("id","llm")} ${a("op","=")} ${a("key","await")} ${a("type","XybridLlm")}.${a("fn","load")}(${a("str","'â¦/model_metadata.json'")}, {`,` ${a("prop","wasmPath")}: ${a("str","'/demo/llm-runtime'")},`,` ${a("prop","accelerator")}: ${a("str",`'${n}'`)},`,"});","",`${a("key","const")} ${a("id","stream")} ${a("op","=")} ${a("id","llm")}.${a("fn","generateStream")}(`,` ${a("str",`'${t}'`)},`,` { ${a("prop","maxOutputTokens")}: ${a("num","256")} },`,");",`${a("key","for await")} (${a("key","const")} ${a("id","delta")} ${a("key","of")} ${a("id","stream")}) ${a("fn","render")}(${a("id","delta")});`].join(` 3`)}function ma(e,n){return lt(e,n,da,ua)}function pa(e,n){return lt(e,n,ca,a=>a)}var fa=b(`<div class="c-banner --warn svelte-jz6j6f" role="note" aria-label="Mobile support notice"><div class="c-banner__body svelte-jz6j6f"><strong class="svelte-jz6j6f">Desktop browsers only.</strong> This live demo is not currently supported on 4 iOS, iPadOS, or Android. Please open it in a desktop browser.</div></div>`),_a=b('<button type="button"> </button>'),ga=b('<button type="button" class="x-btn --secondary svelte-jz6j6f">Stop</button>'),ja=b('<button type="button" class="x-btn --accent svelte-jz6j6f"> </button>'),ha=b('<button type="button"> </button>'),ba=b(`<span class="demo__output-label svelte-jz6j6f">Example output â run it to see your own</span> <p class="demo__stream svelte-jz6j6f">"The AI's voice is like a gentle breeze,<br class="svelte-jz6j6f"/>A soothing melody that calms the 5 mind,<br class="svelte-jz6j6f"/>It whispers secrets to those who listen,<br class="svelte-jz6j6f"/>A reminder that the world 6 is a vast and wondrous place."</p>`,1),wa=b('<span class="demo__output-label svelte-jz6j6f"> </span> <div class="demo__progress svelte-jz6j6f" role="progressbar" aria-label="Model download"><span class="demo__progress-fill svelte-jz6j6f"></span></div>',1),ya=b('<span class="demo__output-label svelte-jz6j6f">Compiling the graph, warming upâ¦</span>'),ka=b('<p class="demo__stream svelte-jz6j6f"> <span class="demo__caret svelte-jz6j6f" aria-hidden="true"></span></p>'),xa=b('<span class="demo__output-label svelte-jz6j6f">stopped early</span>'),za=b('<span class="demo__output-label svelte-jz6j6f">reply truncated â demo length cap</span>'),Ea=b('<p class="demo__stream svelte-jz6j6f"> </p> <!>',1),Ma=b('<span class="demo__output-label --error svelte-jz6j6f"> </span> <button type="button" class="x-btn --secondary --sm demo__retry svelte-jz6j6f">Retry</button>',1),Ta=b('<dl class="demo__facts svelte-jz6j6f"><div class="demo__fact svelte-jz6j6f"><dt class="svelte-jz6j6f">engine</dt> <dd class="--engine svelte-jz6j6f"> </dd></div> <div class="demo__fact svelte-jz6j6f"><dt class="svelte-jz6j6f">model load</dt> <dd class="svelte-jz6j6f"> </dd></div> <div class="demo__fact svelte-jz6j6f"><dt class="svelte-jz6j6f">first token</dt> <dd class="svelte-jz6j6f"> </dd></div> <div class="demo__fact svelte-jz6j6f"><dt class="svelte-jz6j6f">speed</dt> <dd class="svelte-jz6j6f"> </dd></div></dl>'),Pa=b(`<section class="x-section demo__section svelte-jz6j6f" id="live-demo"><div class="x-container svelte-jz6j6f"><div class="x-section__head demo__head svelte-jz6j6f"><h2 class="x-h1 svelte-jz6j6f">The model runs <em class="svelte-jz6j6f">here</em>.</h2> <p class="x-lead svelte-jz6j6f">The hero above is a simulation â this is not. SmolLM2-135M, the smallest model we ship, 7 streamed by <span class="x-mono svelte-jz6j6f">@xybrid/web</span> on your GPU or CPU. The prompt never 8 leaves this tab.</p></div> <div class="demo svelte-jz6j6f"><div class="demo__card x-card --glass svelte-jz6j6f"><div class="demo__meta svelte-jz6j6f"><span class="demo__model svelte-jz6j6f"><span class="demo__model-dot svelte-jz6j6f" aria-hidden="true"></span> </span> <span class="x-pill svelte-jz6j6f">@xybrid/web · preview</span> <span class="demo__engine-hint svelte-jz6j6f"><!></span></div> <!> <label class="demo__label svelte-jz6j6f" for="demo-prompt">Prompt</label> <textarea id="demo-prompt" class="demo__prompt svelte-jz6j6f" rows="2" maxlength="280"></textarea> <div class="demo__chips svelte-jz6j6f" role="group" aria-label="Suggested prompts"></div> <div class="demo__controls svelte-jz6j6f"><!> <div class="demo__accel svelte-jz6j6f" role="group" aria-label="Engine preference"></div></div> <p class="demo__cost svelte-jz6j6f"> <strong class="svelte-jz6j6f">Replies capped at 9 256 tokens</strong> â a demo safeguard.</p> <div><!></div> <!> <span class="demo__sr-status svelte-jz6j6f" role="status" aria-l
9ive="polite"> </span></div> <div class="demo__code x-code svelte-jz6j6f"><div class="x-code__chrome svelte-jz6j6f"><div class="x-code__lights svelte-jz6j6f"><span class="svelte-jz6j6f"></span><span class="svelte-jz6j6f"></span><span class="svelte-jz6j6f"></span></div> <div class="x-code__tabs svelte-jz6j6f"><span class="x-code__tab --active svelte-jz6j6f">demo.ts</span></div> <button type="button" class="x-code__copy svelte-jz6j6f"> </button></div> <pre class="x-code__body demo__code-body svelte-jz6j6f"><!></pre> <p class="demo__code-note svelte-jz6j6f">The exact calls this page makes â it rewrites as you edit the prompt. <a href="https://github.com/xybrid-ai/xybrid/tree/master/bindings/web" target="_blank" rel="noopener" class="svelte-jz6j6f">bindings/web â</a></p></div></div></div></section>`);function La(e,n){$t(n,!0);const a=["auto","webgpu","wasm"];let d=Nt(n,"animateOnReveal",3,!0),t=q(He({kind:"idle"})),f=q(He(Ye[0])),_=q("auto"),m=q(null),M=q(!1),x=q(!1),h=!1,y;Ot(()=>{const s=/Android|iPhone|iPad|iPod/i.test(navigator.userAgent),o=navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1;k(M,s||o,!0),k(m,nt(),!0)});const p=ue(()=>r(t).kind==="loading"||r(t).kind==="starting"||r(t).kind==="streaming"),T=ue(()=>ma(r(f),r(_))),ve=ue(()=>{if(r(t).kind==="loading")return"Downloadingâ¦";if(r(t).kind==="starting")return"Warming upâ¦";const s=ra();return s===null?"Run it in this browser":s===r(_)?"Generate again":"Load & run"}),ne=ue(()=>{switch(r(t).kind){case"loading":return"Downloading the model.";case"starting":return"Model loaded. Generating.";case"done":return r(t).stopped?"Generation stopped early.":"Reply complete.";case"error":return`Error: ${r(t).message}`;default:return""}});async function Le(){if(r(p))return;const s=r(f).trim();if(s.length!==0){h=!1;try{k(t,{kind:"loading",loadedBytes:0,totalBytes:null},!0);const{llm:o,loadMs:c}=await na(r(_),(z,j)=>{k(t,{kind:"loading",loadedBytes:z,totalBytes:j},!0)});k(t,{kind:"starting"},!0);const g=await oa(o,s,z=>k(t,{kind:"streaming",text:z},!0),()=>h);k(t,{kind:"done",text:g.text,stopped:g.stopped,capped:g.capped,facts:{engine:o.accelerator,loadMs:c,firstTokenMs:g.firstTokenMs,totalMs:g.totalMs,tokensPerSec:g.tokensPerSec}},!0)}catch(o){if(o instanceof Error&&o.name==="DemoCancelledError"){k(t,{kind:"idle"},!0);return}k(t,{kind:"error",message:ia(o)},!0)}}}function it(){h=!0}function dt(s){k(f,s,!0)}async function ct(){try{await navigator.clipboard.writeText(pa(r(f),r(_))),k(x,!0),clearTimeout(y),y=setTimeout(()=>k(x,!1),1600)}catch{}}Dt(()=>{clearTimeout(y),la()});const oe=s=>Math.round(s/(1024*1024)),Ae=s=>`${(s/1e3).toFixed(1)} s`,ut=s=>`${Math.max(1,Math.round(s))} ms`;function Se(s,o){return d()?Vt(s,o):{}}var me=Pa(),$e=i(me),Oe=i($e);Fe(Oe,(s,o)=>Se?.(s,o),()=>({children:":scope > *"}));var pe=u(Oe,2),fe=i(pe),_e=i(fe),ge=i(_e),vt=u(i(ge));l(ge);var De=u(ge,4),mt=i(De);{var pt=s=>{var o=Ee();$(()=>w(o,r(t).facts.engine==="webgpu"?"ran on WebGPU":"ran on the wasm CPU engine")),v(s,o)},ft=s=>{var o=N(),c=O(o);{var g=j=>{var P=Ee("no WebGPU here â wasm CPU engine");v(j,P)},z=j=>{var P=Ee("WebGPU when available · wasm fallback");v(j,P)};E(c,j=>{r(m)===!1?j(g):j(z,!1)},!0)}v(s,o)};E(mt,s=>{r(t).kind==="done"?s(pt):s(ft,!1)})}l(De),l(_e);var Re=u(_e,2);{var _t=s=>{var o=fa();v(s,o)};E(Re,s=>{r(M)&&s(_t)})}var le=u(Re,4);Wt(le);var je=u(le,2);Xe(je,20,()=>Ye,s=>s,(s,o)=>{var c=_a();let g;c.__click=()=>dt(o);var z=i(c,!0);l(c),$(()=>{g=Me(c,1,"demo__chip svelte-jz6j6f",null,g,{"--active":r(f)===o}),c.disabled=r(p),w(z,o)}),v(s,c)}),l(je);var he=u(je,2),We=i(he);{var gt=s=>{var o=ga();o.__click=it,v(s,o)},jt=s=>{var o=ja();o.__click=Le;var c=i(o,!0);l(o),$(()=>{o.disabled=r(p),w(c,r(ve))}),v(s,o)};E(We,s=>{r(t).kind==="streaming"?s(gt):s(jt,!1)})}var Ue=u(We,2);Xe(Ue,20,()=>a,s=>s,(s,o)=>{var c=ha();let g;c.__click=()=>k(_,o,!0);var z=i(c,!0);l(c),$(()=>{g=Me(c,1,"demo__accel-btn svelte-jz6j6f",null,g,{"--active":r(_)===o}),re(c,"aria-pressed",r(_)===o),c.disabled=r(p)||o==="webgpu"&&r(m)===!1,re(c,"title",o==="webgpu"&&r(m)===!1?"No WebGPU in this browser":void 0),w(z,o)}),v(s,c)}),l(Ue),l(he);var be=u(he,2),ht=i(be);ce(2),l(be);var ie=u(be,2);let Ge;var bt=i(ie);{var wt=s=>{var o=ba();ce(2),v(s,o)},yt=s=>{var o=N(),c=O(o);{var g=j=>{var P=wa(),I=O(P),C=i(I);l(I);var L=u(I,2);re(L,"aria-valuemin",0);var A=i(L);l(L),$((D,X,Q,Y,S)=>{w(C,`Downloading model â ${D??""}${X??""} MB`),re(L,"aria-valuemax",Q),re(L,"aria-valuenow",Y),Xt(A,`width: ${S??""}%`)},[()=>oe(r(t).loadedBytes),()=>r(t).totalBytes!==null?` of ${oe(r(t).totalBytes)}`:"",()=>r(t).totalBytes!==null?oe(r(t).totalBytes):void 0,()=>r(t).totalBytes!==null?oe(r(t).loadedBytes):void 0,()=>r(t).totalBytes?Math.min(100,r(t).loadedBytes/r(t).totalBytes*100):4]),v(j,P)},z=j=>{var P=N(),I=O(P);{var C=A=>{var D=ya();v(A,D)},L=A=>{var D=N(),X=O(D);{var Q=S=>{var U=ka(),ke=i(U,!0);ce(),l(U),$(()=>w(ke,r(t).text)),v(S,U)},Y=S=>{var U=N(),ke=O(U);{var Mt=F=>{var Z=Ea(),ee=O(Z),xe=i(ee,!0);l(ee);var te=u(ee,2);{var de=G=>{var V=xa();v(G,V)},ae=G=>{var V=N(),Pt=O(V);{var Lt=ze=>{var At=za();v(ze,At)};E(Pt,ze=>{r(t).capped&&ze(Lt)},!0)}v(G,V)};E(te,G=>{r(t).stopped?G(de):G(ae,!1)})}$(()=>w(xe,r(t).text)),v(F,Z)},Tt=F=>{var Z=N(),ee=O(Z);{var xe=te=>{var de=Ma(),ae=O(de),G=i(ae,!0);l(ae);var V=u(ae,2);V.__click=Le,$(()=>w(G,r(t).message)),v(te,de)};E(ee,te=>{r(t).kind==="error"&&te(xe)},!0)}v(F,Z)};E(ke,F=>{r(t).kind==="done"?F(Mt):F(Tt,!1)},!0)}v(S,U)};E(X,S=>{r(t).kind==="streaming"?S(Q):S(Y,!1)},!0)}v(A,D)};E(I,A=>{r(t).kind==="starting"?A(C):A(L,!1)},!0)}v(j,P)};E(c,j=>{r(t).kind==="loading"?j(g):j(z,!1)},!0)}v(s,o)};E(bt,s=>{r(t).kind==="idle"?s(wt):s(yt,!1)})}l(ie);var Be=u(ie,2);{var kt=s=>{var o=Ta(),c=i(o),g=u(i(c),2),z=i(g,!0);l(g),l(c);var j=u(c,2),P=u(i(j),2),I=i(P,!0);l(P),l(j);var C=u(j,2),L=u(i(C),2),A=i(L,!0);l(L),l(C);var D=u(C,2),X=u(i(D),2),Q=i(X,!0);l(X),l(D),l(o),$((Y,S,U)=>{w(z,r(t).facts.engine),w(I,Y),w(A,S),w(Q,U)},[()=>r(t).facts.loadMs===null?"cached":Ae(r(t).facts.loadMs),()=>ut(r(t).facts.firstTokenMs),()=>r(t).facts.tokensPerSec===null?Ae(r(t).facts.totalMs):`~${Math.round(r(t).facts.tokensPerSec)} tok/s`]),v(s,o)};E(Be,s=>{r(t).kind==="done"&&s(kt)})}var Ie=u(Be,2),xt=i(Ie,!0);l(Ie),l(fe);var Ce=u(fe,2),we=i(Ce),ye=u(i(we),4);ye.__click=ct;var zt=i(ye,!0);l(ye),l(we);var Ne=u(we,2),Et=i(Ne);Ht(Et,()=>r(T)),l(Ne),ce(2),l(Ce),l(pe),Fe(pe,s=>Se?.(s)),l($e),l(me),$(()=>{w(vt,` ${Yt}`),le.disabled=r(p),w(ht,`${Zt} MB one-time download, cached by your browser. `),Ge=Me(ie,1,"demo__output svelte-jz6j6f",null,Ge,{"--idle":r(t).kind==="idle"}),w(xt,r(ne)),w(zt,r(x)?"copied":"copy")}),Ft(le,()=>r(f),s=>k(f,s)),v(e,me),Rt()}St(["click"]);var Aa=b('<meta name="description" content="Run a compact language model locally in your browser with Xybrid."/>'),Sa=b('<div class="x-page x-root x-marketing-root"><!>
9 <main id="main-content"><!></main> <!></div>');function Fa(e){var n=Sa();Bt("1du1zi4",_=>{var m=Aa();Ut(()=>{Gt.title="Run AI on your browser | Xybrid"}),v(_,m)});var a=i(n);It(a,{});var d=u(a,2),t=i(d);La(t,{animateOnReveal:!1}),l(d);var f=u(d,2);Ct(f,{}),l(n),v(e,n)}export{Fa as component};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.