diff --git a/internal/admin/dashboard/static/dist/assets/index-DzO__mgM.js b/internal/admin/dashboard/static/dist/assets/index-DzO__mgM.js deleted file mode 100644 index 0f13e586..00000000 --- a/internal/admin/dashboard/static/dist/assets/index-DzO__mgM.js +++ /dev/null @@ -1,68 +0,0 @@ -(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible;function d(e){return typeof e==`function`}var f=()=>{};function p(e){for(var t=0;t{e=n,t=r}),resolve:e,reject:t}}function h(e,t,n=!1){return e===void 0?n?t():t:e}function g(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}var _=1<<24,v=1024,y=2048,b=4096,x=8192,S=16384,C=32768,w=1<<25,ee=65536,te=1<<19,ne=1<<20,re=1<<25,ie=65536,ae=1<<21,oe=1<<22,se=1<<23,ce=Symbol(`$state`),le=Symbol(`legacy props`),ue=Symbol(``),de=Symbol(`attributes`),fe=Symbol(`class`),pe=Symbol(`style`),me=Symbol(`text`),he=Symbol(`form reset`),ge=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},_e=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function ve(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function ye(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function be(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function xe(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Se(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function Ce(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function we(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function Te(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Ee(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function De(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Oe(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var ke={},Ae=Symbol(`uninitialized`),je=`http://www.w3.org/1999/xhtml`,Me=`http://www.w3.org/2000/svg`,Ne=`http://www.w3.org/1998/Math/MathML`;function Pe(){console.warn(`https://svelte.dev/e/derived_inert`)}function Fe(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Ie(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function Le(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var Re=!1;function ze(e){Re=e}var Be;function Ve(e){if(e===null)throw Fe(),ke;return Be=e}function He(){return Ve(bn(Be))}function T(e){if(Re){if(bn(Be)!==null)throw Fe(),ke;Be=e}}function Ue(e=1){if(Re){for(var t=e,n=Be;t--;)n=bn(n);Be=n}}function We(e=!0){for(var t=0,n=Be;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=bn(n);e&&n.remove(),n=i}}function Ge(e){if(!e||e.nodeType!==8)throw Fe(),ke;return e.data}function Ke(e){return e===this.v}function qe(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Je(e){return!qe(e,this.v)}var Ye=null;function Xe(e){Ye=e}function E(e,t=!1,n){Ye={p:Ye,i:!1,c:null,e:null,s:e,x:null,r:ir,l:null}}function D(e){var t=Ye,n=t.e;if(n!==null){t.e=null;for(var r of n)jn(r)}return e!==void 0&&(t.x=e),t.i=!0,Ye=t.p,e??{}}function Ze(){return!0}var Qe=[];function $e(){var e=Qe;Qe=[],p(e)}function et(e){if(Qe.length===0&&!zt){var t=Qe;queueMicrotask(()=>{t===Qe&&$e()})}Qe.push(e)}function tt(){for(;Qe.length>0;)$e()}function nt(e){var t=ir;if(t===null)return tr.f|=se,e;if(!(t.f&32768)&&!(t.f&4))throw e;rt(e,t)}function rt(e,t){if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}var it=~(y|b|v);function at(e,t){e.f=e.f&it|t}function ot(e){e.f&512||e.deps===null?at(e,v):at(e,b)}function st(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=ie,st(t.deps))}function ct(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),st(e.deps),at(e,v)}var lt=!1;function ut(e){var t=lt;try{return lt=!1,[e(),lt]}finally{lt=t}}function dt(e,t){if(t){let t=document.body;e.autofocus=!0,et(()=>{document.activeElement===t&&e.focus()})}}function ft(e){Re&&yn(e)!==null&&xn(e)}var pt=!1;function mt(){pt||(pt=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[he]?.()})},{capture:!0}))}function ht(e){var t=tr,n=ir;rr(null),ar(null);try{return e()}finally{rr(t),ar(n)}}function gt(e,t,n,r=n){e.addEventListener(t,()=>ht(n));let i=e[he];i?e[he]=()=>{i(),r(!0)}:e[he]=()=>r(!0),mt()}function _t(e){let t=0,n=an(0),r;return()=>{On()&&(I(n),In(()=>(t===0&&(r=Er(()=>e(()=>ln(n)))),t+=1,()=>{et(()=>{--t,t===0&&(r?.(),r=void 0,ln(n))})})))}}var vt=ee|te;function yt(e,t,n,r){new bt(e,t,n,r)}var bt=class{parent;is_pending=!1;transform_error;#e;#t=Re?Be:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=_t(()=>(this.#m=an(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=ir;t.b=this,t.f|=128,n(e)},this.parent=ir.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Ln(()=>{if(Re){let e=this.#t;He();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},vt),Re&&(this.#e=Be)}#g(){try{this.#a=zn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=zn(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=zn(()=>e(this.#e)),et(()=>{var e=this.#c=document.createDocumentFragment(),t=vn();e.append(t),this.#a=this.#x(()=>zn(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,Kn(this.#o,()=>{this.#o=null}),this.#b(Ft))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=zn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Xn(this.#a,e);let t=this.#n.pending;this.#o=zn(()=>t(this.#e))}else this.#b(Ft)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){ct(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=ir,n=tr,r=Ye;ar(this.#i),rr(this.#i),Xe(this.#i.ctx);try{return Gt.ensure(),e()}catch(e){return nt(e),null}finally{ar(t),rr(n),Xe(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&Kn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,et(()=>{this.#d=!1,this.#m&&sn(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),I(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;Ft?.is_fork?(this.#a&&Ft.skip_effect(this.#a),this.#o&&Ft.skip_effect(this.#o),this.#s&&Ft.skip_effect(this.#s),Ft.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(Un(this.#a),null),this.#o&&=(Un(this.#o),null),this.#s&&=(Un(this.#s),null),Re&&(Ve(this.#t),Ue(),Ve(We()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){Le();return}r=!0,i&&Oe(),this.#s!==null&&Kn(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){rt(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return zn(()=>{var t=ir;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return rt(e,this.#i.parent),null}}))};et(()=>{var t;try{t=this.transform_error(e)}catch(e){rt(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>rt(e,this.#i&&this.#i.parent)):o(t)})}};function xt(e,t,n,r){let i=Ze()?Tt:Ot;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=ir,c=St(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){rt(e,s)}Ct()}}var d=wt();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>Dt(e))).then(u).catch(e=>rt(e,s)).finally(d)}l?l.then(()=>{c(),f(),Ct()}):f()}function St(){var e=ir,t=tr,n=Ye,r=Ft;return function(i=!0){ar(e),rr(t),Xe(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function Ct(e=!0){ar(null),rr(null),Xe(null),e&&Ft?.deactivate()}function wt(){var e=ir,t=e.b,n=Ft,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function Tt(e){var t=2|y;return ir!==null&&(ir.f|=te),{ctx:Ye,deps:null,effects:null,equals:Ke,f:t,fn:e,reactions:null,rv:0,v:Ae,wv:0,parent:ir,ac:null}}var Et=Symbol(`obsolete`);function Dt(e,t,n){let r=ir;r===null&&ve();var i=void 0,a=an(Ae),o=!tr,s=new Set;return Fn(()=>{var t=ir,n=m();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==ge&&n.reject(e)}).finally(Ct)}catch(e){n.reject(e),Ct()}var c=Ft;if(o){if(t.f&32768)var l=wt();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(Et);else for(let e of s.values())e.reject(Et);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==Et&&(c.activate(),t?(a.f|=se,sn(a,t)):(a.f&8388608&&(a.f^=se),sn(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),kn(()=>{for(let e of s)e.reject(Et)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function O(e){let t=Tt(e);return sr(t),t}function Ot(e){let t=Tt(e);return t.equals=Je,t}function kt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n{t.ac.abort(ge),t.ac=null}),t.fn!==null&&(t.teardown=f),xr(t,0),Vn(t))}function Nt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&Sr(t)}var Pt=null,Ft=null,It=null,Lt=null,Rt=null,zt=!1,Bt=!1,Vt=null,Ht=null,Ut=0,Wt=1,Gt=class e{id=Wt++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){Pt===null?Pt=this:(Pt.#n=this,this.#t=Pt),Pt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)at(r,y),t(r);for(r of n.m)at(r,b),t(r)}this.#p.add(e)}#g(){this.#e=!0,Ut++>1e3&&(this.#x(),qt());for(let e of this.#u)this.#d.delete(e),at(e,y),this.schedule(e);for(let e of this.#d)at(e,b),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=Vt=[],r=[],i=Ht=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw en(e),this.#h()||this.discard(),t}if(Ft=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(Vt=null,Ht=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)$t(e,t);i.length>0&&Ft.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),It=this,Yt(r),Yt(n),It=null,this.#s?.resolve();var s=Ft;if(this.#a===0&&(this.#c.length===0||s!==null)&&this.#x(),this.#c.length>0)if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this;s!==null&&s.#g()}#_(e,t,n){e.f^=v;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=v:i&4?t.push(r):_r(r)&&(i&16&&this.#d.add(r),Sr(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null&&!(e.f&2&&!(e.f&6144)))for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),at(i,y),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#x(),Ft=this,this.#g()}#b(e){for(var t=0;t{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=m()).promise}static ensure(){if(Ft===null){let t=Ft=new e;!Bt&&!zt&&et(()=>{t.#e||t.flush()})}return Ft}apply(){Lt=null}schedule(e){if(Rt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(Vt!==null&&t===ir&&(tr===null||!(tr.f&2)))return;if(n&96){if(!(n&1024))return;t.f^=v}}this.#c.push(t)}#x(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?Pt=e:t.#t=e,this.linked=!1}}};function Kt(e){var t=zt;zt=!0;try{var n;for(e&&(Ft!==null&&!Ft.is_fork&&Ft.flush(),n=e());;){if(tt(),Ft===null)return n;Ft.flush()}}finally{zt=t}}function qt(){try{Ce()}catch(e){rt(e,Rt)}}var Jt=null;function Yt(e){var t=e.length;if(t!==0){for(var n=0;n0)){nn.clear();for(let e of Jt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Jt.has(n)&&(Jt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Sr(n)}}Jt.clear()}}Jt=null}}function Xt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Xt(i,t,n,r):e&4194320&&!(e&2048)&&Zt(i,t,r)&&(at(i,y),Qt(i))}}function Zt(e,t,r){let i=r.get(e);if(i!==void 0)return i;if(e.deps!==null)for(let i of e.deps){if(n.call(t,i))return!0;if(i.f&2&&Zt(i,t,r))return r.set(i,!0),!0}return r.set(e,!1),!1}function Qt(e){Ft.schedule(e)}function $t(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),at(e,v);for(var n=e.first;n!==null;)$t(n,t),n=n.next}}function en(e){at(e,v);for(var t=e.first;t!==null;)en(t),t=t.next}var tn=new Set,nn=new Map,rn=!1;function an(e,t){return{f:0,v:e,reactions:null,equals:Ke,rv:0,wv:0}}function k(e,t){let n=an(e,t);return sr(n),n}function on(e,t=!1,n=!0){let r=an(e);return t||(r.equals=Je),r}function A(e,t,n=!1){return tr!==null&&(!nr||tr.f&131072)&&Ze()&&tr.f&4325394&&(or===null||!or.has(e))&&De(),sn(e,n?j(t):t,Ht)}function sn(e,t,n=null){if(!e.equals(t)){nn.set(e,$n?t:e.v);var r=Gt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&At(t),Lt===null&&ot(t)}e.wv=gr(),un(e,y,n),Ze()&&ir!==null&&ir.f&1024&&!(ir.f&96)&&(ur===null?dr([e]):ur.push(e)),!r.is_fork&&tn.size>0&&!rn&&cn()}return t}function cn(){rn=!1;for(let e of tn){e.f&1024&&at(e,b);let t;try{t=_r(e)}catch{t=!0}t&&Sr(e)}tn.clear()}function ln(e){A(e,e.v+1)}function un(e,t,n){var r=e.reactions;if(r!==null)for(var i=Ze(),a=r.length,o=0;o{if(mr===d)return e();var t=tr,n=mr;rr(null),hr(d);var r=e();return rr(t),hr(n),r};return i&&r.set(`length`,k(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&Te();var i=r.get(t);return i===void 0?f(()=>{var e=k(n.value,u);return r.set(t,e),e}):A(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>k(Ae,u));r.set(t,e),ln(o)}}else A(n,Ae),ln(o);return!0},get(e,n,i){if(n===ce)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>k(j(s?e[n]:Ae),u)),r.set(n,o)),o!==void 0){var c=I(o);return c===Ae?void 0:c}return Reflect.get(e,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=I(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==Ae)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===ce)return!0;var n=r.get(t),i=n!==void 0&&n.v!==Ae||Reflect.has(e,t);return(n!==void 0||ir!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>k(i?j(e[t]):Ae,u)),r.set(t,n)),I(n)===Ae)?!1:i},set(e,t,n,s){var c=r.get(t),l=t in e;if(i&&t===`length`)for(var d=n;dk(Ae,u)),r.set(d+``,p)):A(p,Ae)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>k(void 0,u)),A(c,j(n)),r.set(t,c));else{l=c.v!==Ae;var m=f(()=>j(n));A(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&A(g,_+1)}ln(o)}return!0},ownKeys(e){I(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==Ae});for(var[n,i]of r)i.v!==Ae&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Ee()}})}function dn(e){try{if(typeof e==`object`&&e&&ce in e)return e[ce]}catch{}return e}function fn(e,t){return Object.is(dn(e),dn(t))}var pn,mn,hn,gn;function _n(){if(pn===void 0){pn=window,mn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;hn=a(t,`firstChild`).get,gn=a(t,`nextSibling`).get,u(e)&&(e[fe]=void 0,e[de]=null,e[pe]=void 0,e.__e=void 0),u(n)&&(n[me]=void 0)}}function vn(e=``){return document.createTextNode(e)}function yn(e){return hn.call(e)}function bn(e){return gn.call(e)}function M(e,t){if(!Re)return yn(e);var n=yn(Be);if(n===null)n=Be.appendChild(vn());else if(t&&n.nodeType!==3){var r=vn();return n?.before(r),Ve(r),r}return t&&wn(n),Ve(n),n}function N(e,t=!1){if(!Re){var n=yn(e);return n instanceof Comment&&n.data===``?bn(n):n}if(t){if(Be?.nodeType!==3){var r=vn();return Be?.before(r),Ve(r),r}wn(Be)}return Be}function P(e,t=1,n=!1){let r=Re?Be:e;for(var i;t--;)i=r,r=bn(r);if(!Re)return r;if(n){if(r?.nodeType!==3){var a=vn();return r===null?i?.after(a):r.before(a),Ve(a),a}wn(r)}return Ve(r),r}function xn(e){e.textContent=``}function Sn(){return!1}function Cn(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function wn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function Tn(e){ir===null&&(tr===null&&Se(e),xe()),$n&&be(e)}function En(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function Dn(e,t){var n=ir;n!==null&&n.f&8192&&(e|=x);var r={ctx:Ye,deps:null,nodes:null,f:e|y|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};Ft?.register_created_effect(r);var i=r;if(e&4)Vt===null?Gt.ensure().schedule(r):Vt.push(r);else if(t!==null){try{Sr(r)}catch(e){throw Un(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=ee))}if(i!==null&&(i.parent=n,n!==null&&En(i,n),tr!==null&&tr.f&2&&!(e&64))){var a=tr;(a.effects??=[]).push(i)}return r}function On(){return tr!==null&&!nr}function kn(e){let t=Dn(8,null);return at(t,v),t.teardown=e,t}function An(e){Tn(`$effect`);var t=ir.f;if(!tr&&t&32&&Ye!==null&&!Ye.i){var n=Ye;(n.e??=[]).push(e)}else return jn(e)}function jn(e){return Dn(4|ne,e)}function Mn(e){Gt.ensure();let t=Dn(64|te,e);return()=>{Un(t)}}function Nn(e){Gt.ensure();let t=Dn(64|te,e);return(e={})=>new Promise(n=>{e.outro?Kn(t,()=>{Un(t),n(void 0)}):(Un(t),n(void 0))})}function Pn(e){return Dn(4,e)}function Fn(e){return Dn(oe|te,e)}function In(e,t=0){return Dn(8|t,e)}function F(e,t=[],n=[],r=[]){xt(r,t,n,t=>{Dn(8,()=>{e(...t.map(I))})})}function Ln(e,t=0){return Dn(16|t,e)}function Rn(e,t=0){return Dn(_|t,e)}function zn(e){return Dn(32|te,e)}function Bn(e){var t=e.teardown;if(t!==null){let e=$n,n=tr;er(!0),rr(null);try{t.call(null)}finally{er(e),rr(n)}}}function Vn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&ht(()=>{e.abort(ge)});var r=n.next;n.f&64?n.parent=null:Un(n,t),n=r}}function Hn(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Un(t),t=n}}function Un(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Wn(e.nodes.start,e.nodes.end),n=!0),e.f|=w,Vn(e,t&&!n),xr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Bn(e),e.f^=w,e.f|=S;var i=e.parent;i!==null&&i.first!==null&&Gn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Wn(e,t){for(;e!==null;){var n=e===t?null:bn(e);e.remove(),e=n}}function Gn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Kn(e,t,n=!0){var r=[];qn(e,r,!0);var i=()=>{n&&Un(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function qn(e,t,n){if(!(e.f&8192)){e.f^=x;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;qn(i,t,o?n:!1)}i=a}}}function Jn(e){Yn(e,!0)}function Yn(e,t){if(e.f&8192){e.f^=x,e.f&1024||(at(e,y),Gt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Yn(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Xn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:bn(n);t.append(n),n=i}}var Zn=null,Qn=!1,$n=!1;function er(e){$n=e}var tr=null,nr=!1;function rr(e){tr=e}var ir=null;function ar(e){ir=e}var or=null;function sr(e){tr!==null&&(or??=new Set).add(e)}var cr=null,lr=0,ur=null;function dr(e){ur=e}var fr=1,pr=0,mr=pr;function hr(e){mr=e}function gr(){return++fr}function _r(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~ie),t&4096){for(var n=e.deps,r=n.length,i=0;ie.wv)return!0}t&512&&Lt===null&&at(e,v)}return!1}function vr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(or!==null&&or.has(e)))for(var i=0;i{e.ac.abort(ge)}),e.ac=null);try{e.f|=ae;var u=e.fn,d=u();e.f|=C;var f=e.deps,p=Ft?.is_fork;if(cr!==null){var m;if(p||xr(e,lr),f!==null&&lr>0)for(f.length=lr+cr.length,m=0;m{s.ac.abort(ge),s.ac=null,at(s,y)}),Mt(s),xr(s,0)}}function xr(e,t){var n=e.deps;if(n!==null)for(var r=t;rn?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?et(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function Vr(e,t,n,r,i){var a={capture:r,passive:i},o=Br(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&kn(()=>{t.removeEventListener(e,o,a)})}function L(e,t,n){(t[Lr]??={})[e]=n}function Hr(e){for(var t=0;t{throw e});throw p}}finally{e[Lr]=t,delete e.currentTarget,rr(d),ar(f)}}}var Gr=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Kr(e){return Gr?.createHTML(e)??e}function qr(e){var t=Cn(`template`);return t.innerHTML=Kr(e.replaceAll(``,``)),t.content}function Jr(e,t){var n=ir;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function R(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(``);return()=>{if(Re)return Jr(Be,null),Be;i===void 0&&(i=qr(a?e:``+e),n||(i=yn(i)));var t=r||mn?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=yn(t),s=t.lastChild;Jr(o,s)}else Jr(t,t);return t}}function Yr(e,t,n=`svg`){var r=!e.startsWith(``),i=(t&1)!=0,a=`<${n}>${r?e:``+e}`,o;return()=>{if(Re)return Jr(Be,null),Be;if(!o){var e=yn(qr(a));if(i)for(o=document.createDocumentFragment();yn(e);)o.appendChild(yn(e));else o=yn(e)}var t=o.cloneNode(!0);if(i){var n=yn(t),r=t.lastChild;Jr(n,r)}else Jr(t,t);return t}}function Xr(e,t){return Yr(e,t,`svg`)}function Zr(e=``){if(!Re){var t=vn(e+``);return Jr(t,t),t}var n=Be;return n.nodeType===3?wn(n):(n.before(n=vn()),Ve(n)),Jr(n,n),n}function Qr(){if(Re)return Jr(Be,null),Be;var e=document.createDocumentFragment(),t=document.createComment(``),n=vn();return e.append(t,n),Jr(t,n),e}function z(e,t){if(Re){var n=ir;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=Be),He();return}e!==null&&e.before(t)}var $r=!0;function ei(e){$r=e}function B(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[me]??=e.nodeValue)&&(e[me]=n,e.nodeValue=`${n}`)}function ti(e,t){return ri(e,t)}var ni=new Map;function ri(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){_n();var l=void 0,u=Nn(()=>{var u=n??t.appendChild(vn());yt(u,{pending:()=>{}},t=>{E({});var n=Ye;if(o&&(n.c=o),a&&(i.$$events=a),Re&&Jr(t,null),$r=s,l=e(t,i)||{},$r=!0,Re&&(ir.nodes.end=Be,Be===null||Be.nodeType!==8||Be.data!==`]`))throw Fe(),ke;D()},c);var d=new Set,f=e=>{for(var n=0;n{for(var e of d)for(let n of[t,document]){var r=ni.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Wr),r.delete(e),r.size===0&&ni.delete(n)):r.set(e,i)}zr.delete(f),u!==n&&u.parentNode?.removeChild(u)}});return ii.set(l,u),l}var ii=new WeakMap,ai=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)Jn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Jn(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(Un(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();Xn(r,t),t.append(vn()),this.#n.set(e,{effect:r,fragment:t})}else Un(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Kn(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(Un(n.effect),this.#n.delete(e))};ensure(e,t){var n=Ft,r=Sn();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=vn();i.append(a),this.#n.set(e,{effect:zn(()=>t(a)),fragment:i})}else this.#t.set(e,zn(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else Re&&(this.anchor=Be),this.#a(n)}};function V(e,t,n=!1){var r;Re&&(r=Be,He());var i=new ai(e),a=n?ee:0;function o(e,t){if(Re){var n=Ge(r);if(e!==parseInt(n.substring(1))){var a=We();Ve(a),i.anchor=a,ze(!1),i.ensure(e,t),ze(!0);return}}i.ensure(e,t)}Ln(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function oi(e,t){return t}function si(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;ci(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=i.length===0&&n!==null;if(l){var u=n,d=u.parentNode;xn(d),d.append(u),e.items.clear()}ci(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function ci(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i{var t=i();return e(t)?t:t==null?[]:r(t)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,di(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=re,pi(d,null,c)):Jn(d):Kn(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:Ln(()=>{p=I(f);var e=p.length;let t=!1;Re&&Ge(c)===`[!`!=(e===0)&&(c=We(),Ve(c),ze(!1),t=!0);for(var r=new Set,u=Ft,v=Sn(),y=0;ys(c)):(d=zn(()=>s(li??=vn())),d.f|=re)),e>r.size&&ye(``,``,``),Re&&e>0&&Ve(We()),!h)if(m.set(u,r),v){for(let[e,t]of l)r.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);t&&ze(!0),I(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,Re&&(c=Be)}function ui(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function di(e,t,n,i,a){var o=(i&8)!=0,s=t.length,c=e.items,l=ui(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v0){var te=i&4&&s===0?n:null;if(o){for(v=0;v{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function fi(e,t,n,r,i,a,o,s){var c=o&1?o&16?an(n):on(n,!1,!1):null,l=o&2?an(i):null;return{v:c,i:l,e:zn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function pi(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=bn(r);if(a.before(r),r===i)return;r=o}}function mi(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function hi(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;Re&&(o=Ve(yn(c)))}F(()=>{var e=ir;if(s===(s=t()??``)){Re&&He();return}if(n&&!Re){e.nodes=null,c.innerHTML=s,s!==``&&Jr(yn(c),c.lastChild);return}if(e.nodes!==null&&(Wn(e.nodes.start,e.nodes.end),e.nodes=null),s!==``){if(Re){for(var a=Be.data,l=He(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=bn(l);if(l===null)throw Fe(),ke;Jr(Be,u),o=Ve(l);return}var d=Cn(r?`svg`:i?`math`:`template`,r?Me:i?Ne:void 0);d.innerHTML=s;var f=r||i?d:d.content;if(Jr(yn(f),f.lastChild),r||i)for(;yn(f);)o.before(yn(f));else o.before(f)}})}function gi(e,t,...n){var r=new ai(e);Ln(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},ee)}function _i(e,t,n){var r;Re&&(r=Be,He());var i=new ai(e);Ln(()=>{var e=t()??null;if(Re&&Ge(r)===`[`!=(e!==null)){var a=We();Ve(a),i.anchor=a,ze(!1),i.ensure(e,e&&(t=>n(t,e))),ze(!0);return}i.ensure(e,e&&(t=>n(t,e)))},ee)}var vi=()=>performance.now(),yi={tick:e=>requestAnimationFrame(e),now:()=>vi(),tasks:new Set};function bi(){let e=yi.now();yi.tasks.forEach(t=>{t.c(e)||(yi.tasks.delete(t),t.f())}),yi.tasks.size!==0&&yi.tick(bi)}function xi(e){let t;return yi.tasks.size===0&&yi.tick(bi),{promise:new Promise(n=>{yi.tasks.add(t={c:e,f:n})}),abort(){yi.tasks.delete(t)}}}function Si(e,t){ht(()=>{e.dispatchEvent(new CustomEvent(t))})}function Ci(e){if(e===`float`)return`cssFloat`;if(e===`offset`)return`cssOffset`;if(e.startsWith(`--`))return e;let t=e.split(`-`);return t.length===1?t[0]:t[0]+t.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}function wi(e){let t={},n=e.split(`;`);for(let e of n){let[n,r]=e.split(`:`);if(!n||r===void 0)break;let i=Ci(n.trim());t[i]=r.trim()}return t}var Ti=e=>e,Ei=null;function Di(e){Ei=e}function Oi(e,t,n){var r=(Ei??ir).nodes,i,a,o,s=null;r.a??={element:e,measure(){i=this.element.getBoundingClientRect()},apply(){if(o?.abort(),a=this.element.getBoundingClientRect(),i.left!==a.left||i.right!==a.right||i.top!==a.top||i.bottom!==a.bottom){let e=t()(this.element,{from:i,to:a},n?.());o=Ai(this.element,e,void 0,1,()=>{},()=>{o?.abort(),o=void 0})}},fix(){if(!e.getAnimations().length){var{position:t,width:n,height:r}=getComputedStyle(e);if(t!==`absolute`&&t!==`fixed`){var a=e.style;s={position:a.position,width:a.width,height:a.height,transform:a.transform},a.position=`absolute`,a.width=n,a.height=r;var o=e.getBoundingClientRect();if(i.left!==o.left||i.top!==o.top){var c=`translate(${i.left-o.left}px, ${i.top-o.top}px)`;a.transform=a.transform?`${a.transform} ${c}`:c}}}},unfix(){if(s){var t=e.style;t.position=s.position,t.width=s.width,t.height=s.height,t.transform=s.transform}}},r.a.element=e}function ki(e,t,n,r){var i=(e&1)!=0,a=(e&2)!=0,o=i&&a,s=(e&4)!=0,c=o?`both`:i?`in`:`out`,l,u=t.inert,d=t.style.overflow,f,p;function m(){return ht(()=>l??=n()(t,r?.()??{},{direction:c}))}var h={is_global:s,in(){if(t.inert=u,!i){p?.abort(),p?.reset?.();return}a||f?.abort(),f=Ai(t,m(),p,1,()=>{Si(t,`introstart`)},()=>{Si(t,`introend`),f?.abort(),f=l=void 0,t.style.overflow=d})},out(e){if(!a){e?.(),l=void 0;return}t.inert=!0,p=Ai(t,m(),f,0,()=>{Si(t,`outrostart`)},()=>{Si(t,`outroend`),e?.()})},stop:()=>{f?.abort(),p?.abort()}},g=ir;if((g.nodes.t??=[]).push(h),i&&$r){var _=s;if(!_){for(var v=g.parent;v&&v.f&65536;)for(;(v=v.parent)&&!(v.f&16););_=!v||(v.f&32768)!=0}_&&Pn(()=>{Er(()=>h.in())})}}function Ai(e,t,n,r,i,a){var o=r===1;if(d(t)){var s,c=!1;return et(()=>{c||(s=Ai(e,t({direction:o?`in`:`out`}),n,r,i,a))}),{abort:()=>{c=!0,s?.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(n?.deactivate(),!t?.duration&&!t?.delay)return i(),a(),{abort:f,deactivate:f,reset:f,t:()=>r};let{delay:l=0,css:u,tick:p,easing:m=Ti}=t;var h=[];if(o&&n===void 0&&(p&&p(0,1),u)){var g=wi(u(0,1));h.push(g,g)}var _=()=>1-r,v=e.animate(h,{duration:l,fill:`forwards`});return v.onfinish=()=>{v.cancel(),i();var o=n?.t()??1-r;n?.abort();var s=r-o,c=t.duration*Math.abs(s),l=[];if(c>0){var d=!1;if(u)for(var f=Math.ceil(c/(1e3/60)),h=0;h<=f;h+=1){var g=o+s*m(h/f),y=wi(u(g,1-g));l.push(y),d||=y.overflow===`hidden`}d&&(e.style.overflow=`hidden`),_=()=>{var e=v.currentTime;return o+s*m(e/c)},p&&xi(()=>{if(v.playState!==`running`)return!1;var e=_();return p(e,1-e),!0})}v=e.animate(l,{duration:c,fill:`forwards`}),v.onfinish=()=>{_=()=>r,p?.(r,1-r),a()}},{abort:()=>{v&&(v.cancel(),v.effect=null,v.onfinish=f)},deactivate:()=>{a=f},reset:()=>{r===0&&p?.(1,0)},t:()=>_()}}function ji(e,t,n,r,i,a){let o=Re;Re&&He();var s=null;Re&&Be.nodeType===1&&(s=Be,He());var c=Re?Be:e,l=ir,u=new ai(c,!1);Ln(()=>{let e=t()||null;var a=i?i():n||e===`svg`?Me:void 0;if(e===null){u.ensure(null,null),ei(!0);return}return u.ensure(e,t=>{if(e){if(s=Re?s:Cn(e,a),Jr(s,s),r){var n=null;Re&&Ir(e)&&s.append(n=document.createComment(``));var i=Re?yn(s):s.appendChild(vn());Re&&(i===null?ze(!1):Ve(i)),Di(l),r(s,i),n?.remove(),Di(null)}ir.nodes.end=s,t.before(s)}Re&&Ve(t)}),ei(!0),()=>{e&&ei(!1)}},ee),kn(()=>{ei(!0)}),o&&(ze(!0),Ve(c))}function Mi(e,t){var n=void 0,r;Rn(()=>{n!==(n=t())&&(r&&=(Un(r),null),n&&(r=zn(()=>{Pn(()=>n(e))})))})}function Ni(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t=0;){var s=o+a;(o===0||Ii.includes(r[o-1]))&&(s===r.length||Ii.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Ri(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function zi(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Bi(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(zi)),i&&c.push(...Object.keys(i).map(zi));var l=0,u=-1;let t=e.length;for(var d=0;d{Ui(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),kn(()=>{t.disconnect()})}function Gi(e,t,n=t){var r=new WeakSet,i=!0;gt(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),Ki);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&Ki(o)}n(a),e.__value=a,Ft!==null&&r.add(Ft)}),Pn(()=>{var a=t();if(e===document.activeElement){var o=Ft;if(r.has(o))return}if(Ui(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=Ki(s),n(a))}e.__value=a,i=!1}),Wi(e)}function Ki(e){return`__value`in e?e.__value:e.value}var qi=Symbol(`class`),Ji=Symbol(`style`),Yi=Symbol(`is custom element`),Xi=Symbol(`is html`),Zi=_e?`link`:`LINK`,Qi=_e?`input`:`INPUT`,$i=_e?`option`:`OPTION`,ea=_e?`select`:`SELECT`,ta=_e?`progress`:`PROGRESS`;function na(e){if(Re){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;W(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;W(e,`checked`,null),e.checked=r}}};e[he]=n,et(n),mt()}}function ra(e,t){var n=ca(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==ta)||(e.value=t??``)}function ia(e,t){var n=ca(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function aa(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function W(e,t,n,r){var i=ca(e);Re&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===Zi)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ue]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&ua(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function oa(e,t,n,r,i=!1,a=!1){if(Re&&i&&e.nodeName===Qi){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||na(o)}var s=ca(e),c=s[Yi],l=!s[Xi];let u=Re&&c;u&&ze(!1);var d=t||{},f=e.nodeName===$i;for(var p in t)p in n||(n[p]=null);n.class?n.class=Fi(n.class):(r||n[qi])&&(n.class=null),n[Ji]&&(n.style??=null);var m=ua(e);if(e.nodeName===Qi&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==d.type||h===void 0&&e.hasAttribute(`type`))&&(d.type=h,W(e,`type`,h,a))}for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){U(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t?.[qi],n[qi]),d[i]=o,d[qi]=n[qi];continue}if(i===`style`){Hi(e,o,t?.[Ji],n[Ji]),d[i]=o,d[Ji]=n[Ji];continue}var g=d[i];if(!(o===g&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var _=i[0]+i[1];if(_!==`$$`)if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=kr(r);if(Dr(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(v)L(r,e,o),Hr([r]);else if(o!=null){function a(e){d[i].call(this,e)}d[n]=Br(r,e,a,t)}}else if(i===`style`)W(e,i,o);else if(i===`autofocus`)dt(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)aa(e,o);else{var y=i;l||(y=Mr(y));var b=y===`defaultValue`||y===`defaultChecked`;if(o==null&&!c&&!b)if(s[i]=null,y===`value`||y===`checked`){let n=e,r=t===void 0;if(y===`value`){let e=n.defaultValue;n.removeAttribute(y),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(y),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else b||m.includes(y)&&(c||typeof o!=`string`)?(e[y]=o,y in s&&(s[y]=Ae)):typeof o!=`function`&&W(e,y,o,a)}}}return u&&ze(!0),d}function sa(e,t,n=[],r=[],i=[],a,o=!1,s=!1){xt(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===ea,l=!1;if(Rn(()=>{var u=t(...n.map(I)),d=oa(e,r,u,a,o,s);l&&c&&`value`in u&&Ui(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||Un(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&Un(i[t]),i[t]=zn(()=>Mi(e,()=>f))),d[t]=f}r=d}),c){var u=e;Pn(()=>{Ui(u,r.value,!0),Wi(u)})}l=!0})}function ca(e){return e[de]??={[Yi]:e.nodeName.includes(`-`),[Xi]:e.namespaceURI===je}}var la=new Map;function ua(e){var t=e.getAttribute(`is`)||e.nodeName,n=la.get(t);if(n)return n;la.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.push(s);i=l(i)}return n}function da(e,t,n=t){var r=new WeakSet;gt(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=pa(e)?ma(a):a,n(a),Ft!==null&&r.add(Ft),await Cr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(Re&&e.defaultValue!==e.value||Er(t)==null&&e.value)&&(n(pa(e)?ma(e.value):e.value),Ft!==null&&r.add(Ft)),In(()=>{var n=t();if(e===document.activeElement){var i=Ft;if(r.has(i))return}pa(e)&&n===ma(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function fa(e,t,n=t){gt(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(Re&&e.defaultChecked!==e.checked||Er(t)==null)&&n(e.checked),In(()=>{e.checked=!!t()})}function pa(e){var t=e.type;return t===`number`||t===`range`}function ma(e){return e===``?null:+e}function ha(e,t){return e===t||e?.[ce]===t}function ga(e={},t,n,r){var i=Ye.r,a=ir;return Pn(()=>{var o,s;return In(()=>{o=s,s=r?.()||[],Er(()=>{ha(n(...s),e)||(t(e,...s),o&&ha(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&ha(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}var _a={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return!e.exclude.has(t)&&t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function va(e,t,n){return new Proxy({props:e,exclude:t},_a)}function ya(e,t,n,r){var i=!0,o=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>s&&i?(u??=Tt(r),I(u)):(l&&(l=!1,c=s?Er(r):r),c);let f;if(o){var p=ce in e||le in e;f=a(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;o?[m,h]=ut(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&we(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?Tt:Ot)(()=>(v=!1,g()));o&&I(y);var b=ir;return(function(e,t){if(arguments.length>0){let n=t?I(y):i&&o?j(e):e;return A(y,n),v=!0,c!==void 0&&(c=n),e}return $n&&v||b.f&16384?y.v:I(y)})}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var ba={activity:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`}]],"arrow-left":[[`path`,{d:`m12 19-7-7 7-7`}],[`path`,{d:`M19 12H5`}]],"arrow-right":[[`path`,{d:`M5 12h14`}],[`path`,{d:`m12 5 7 7-7 7`}]],box:[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`}],[`path`,{d:`M12 22V12`}]],calculator:[[`rect`,{width:`16`,height:`20`,x:`4`,y:`2`,rx:`2`}],[`line`,{x1:`8`,x2:`16`,y1:`6`,y2:`6`}],[`line`,{x1:`16`,x2:`16`,y1:`14`,y2:`18`}],[`path`,{d:`M16 10h.01`}],[`path`,{d:`M12 10h.01`}],[`path`,{d:`M8 10h.01`}],[`path`,{d:`M12 14h.01`}],[`path`,{d:`M8 14h.01`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M8 18h.01`}]],calendar:[[`path`,{d:`M8 2v4`}],[`path`,{d:`M16 2v4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`}],[`path`,{d:`M3 10h18`}]],"calendar-days":[[`path`,{d:`M8 2v4`}],[`path`,{d:`M16 2v4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`}],[`path`,{d:`M3 10h18`}],[`path`,{d:`M8 14h.01`}],[`path`,{d:`M12 14h.01`}],[`path`,{d:`M16 14h.01`}],[`path`,{d:`M8 18h.01`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M16 18h.01`}]],"chart-column":[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`}],[`path`,{d:`M18 17V9`}],[`path`,{d:`M13 17V5`}],[`path`,{d:`M8 17v-3`}]],"chart-column-increasing":[[`path`,{d:`M13 17V9`}],[`path`,{d:`M18 17V5`}],[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`}],[`path`,{d:`M8 17v-3`}]],check:[[`path`,{d:`M20 6 9 17l-5-5`}]],"chevron-down":[[`path`,{d:`m6 9 6 6 6-6`}]],"chevron-right":[[`path`,{d:`m9 18 6-6-6-6`}]],"circle-check":[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`m9 12 2 2 4-4`}]],"circle-check-big":[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`}],[`path`,{d:`m9 11 3 3L22 4`}]],"circle-dollar-sign":[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8`}],[`path`,{d:`M12 18V6`}]],clock:[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 6v6l4 2`}]],copy:[[`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`}]],database:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`}]],"database-zap":[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 15 21.84`}],[`path`,{d:`M21 5V8`}],[`path`,{d:`M21 12L18 17H22L19 22`}],[`path`,{d:`M3 12A9 3 0 0 0 14.59 14.87`}]],"file-text":[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`}],[`path`,{d:`M10 9H8`}],[`path`,{d:`M16 13H8`}],[`path`,{d:`M16 17H8`}]],gauge:[[`path`,{d:`m12 14 4-4`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`}]],history:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}],[`path`,{d:`M12 7v5l4 2`}]],inbox:[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`}]],info:[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 16v-4`}],[`path`,{d:`M12 8h.01`}]],"key-round":[[`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`}]],"layout-dashboard":[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`}]],list:[[`path`,{d:`M3 5h.01`}],[`path`,{d:`M3 12h.01`}],[`path`,{d:`M3 19h.01`}],[`path`,{d:`M8 5h13`}],[`path`,{d:`M8 12h13`}],[`path`,{d:`M8 19h13`}]],"lock-keyhole":[[`circle`,{cx:`12`,cy:`16`,r:`1`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`}]],"maximize-2":[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`m21 3-7 7`}],[`path`,{d:`m3 21 7-7`}],[`path`,{d:`M9 21H3v-6`}]],monitor:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`}]],moon:[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`}]],pencil:[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`}],[`path`,{d:`m15 5 4 4`}]],plug:[[`path`,{d:`M12 22v-5`}],[`path`,{d:`M15 8V2`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`}],[`path`,{d:`M9 8V2`}]],plus:[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]],power:[[`path`,{d:`M12 2v10`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`}]],"refresh-cw":[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`}],[`path`,{d:`M8 16H3v5`}]],"rotate-ccw":[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}]],save:[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`}]],search:[[`path`,{d:`m21 21-4.34-4.34`}],[`circle`,{cx:`11`,cy:`11`,r:`8`}]],server:[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`}]],"server-cog":[[`path`,{d:`m10.852 14.772-.383.923`}],[`path`,{d:`M13.148 14.772a3 3 0 1 0-2.296-5.544l-.383-.923`}],[`path`,{d:`m13.148 9.228.383-.923`}],[`path`,{d:`m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544`}],[`path`,{d:`m14.772 10.852.923-.383`}],[`path`,{d:`m14.772 13.148.923.383`}],[`path`,{d:`M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5`}],[`path`,{d:`M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5`}],[`path`,{d:`M6 18h.01`}],[`path`,{d:`M6 6h.01`}],[`path`,{d:`m9.228 10.852-.923-.383`}],[`path`,{d:`m9.228 13.148-.923.383`}]],settings:[[`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`}]],"settings-2":[[`path`,{d:`M14 17H5`}],[`path`,{d:`M19 7h-9`}],[`circle`,{cx:`17`,cy:`17`,r:`3`}],[`circle`,{cx:`7`,cy:`7`,r:`3`}]],shield:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`}]],"shield-check":[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`}],[`path`,{d:`m9 12 2 2 4-4`}]],"shield-off":[[`path`,{d:`m2 2 20 20`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`}]],shuffle:[[`path`,{d:`m18 14 4 4-4 4`}],[`path`,{d:`m18 2 4 4-4 4`}],[`path`,{d:`M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22`}],[`path`,{d:`M2 6h1.972a4 4 0 0 1 3.6 2.2`}],[`path`,{d:`M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45`}]],sun:[[`circle`,{cx:`12`,cy:`12`,r:`4`}],[`path`,{d:`M12 2v2`}],[`path`,{d:`M12 20v2`}],[`path`,{d:`m4.93 4.93 1.41 1.41`}],[`path`,{d:`m17.66 17.66 1.41 1.41`}],[`path`,{d:`M2 12h2`}],[`path`,{d:`M20 12h2`}],[`path`,{d:`m6.34 17.66-1.41 1.41`}],[`path`,{d:`m19.07 4.93-1.41 1.41`}]],tag:[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]],timer:[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`}],[`circle`,{cx:`12`,cy:`14`,r:`8`}]],"trash-2":[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]],"triangle-alert":[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`}],[`path`,{d:`M12 9v4`}],[`path`,{d:`M12 17h.01`}]],user:[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`}],[`circle`,{cx:`12`,cy:`7`,r:`4`}]],wallet:[[`path`,{d:`M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1`}],[`path`,{d:`M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4`}]],"wand-sparkles":[[`path`,{d:`m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72`}],[`path`,{d:`m14 7 3 3`}],[`path`,{d:`M5 6v4`}],[`path`,{d:`M19 14v4`}],[`path`,{d:`M10 2v2`}],[`path`,{d:`M7 8H3`}],[`path`,{d:`M21 16h-4`}],[`path`,{d:`M11 3H9`}]],workflow:[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`}]],x:[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]]},xa=new Set([`$$slots`,`$$events`,`$$legacy`,`name`,`class`]),Sa=Xr(``);function G(e,t){E(t,!0);let n=ya(t,`name`,3,``),r=ya(t,`class`,3,``),i=va(t,xa),a=O(()=>ba[n()]||[]);var o=Sa();sa(o,()=>({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`,class:r(),"aria-hidden":`true`,focusable:`false`,...i}));{let e=(t,n=f)=>{var r=Qr();H(N(r),17,n,oi,(t,n)=>{var r=O(()=>g(I(n),3));let i=()=>I(r)[0],a=()=>I(r)[1],o=()=>I(r)[2];var s=Qr();ji(N(s),i,!0,(t,n)=>{sa(t,()=>({xmlns:`http://www.w3.org/2000/svg`,...a()}));var r=Qr(),i=N(r),s=t=>{e(t,o)},c=O(()=>Array.isArray(o()));V(i,e=>{I(c)&&e(s)}),z(n,r)}),z(t,s)}),z(t,r)};e(M(o),()=>I(a)),T(o)}z(e,o),D()}var Ca=Xr(``);function wa(e){z(e,Ca())}function Ta(){try{return typeof localStorage>`u`?null:localStorage}catch{return null}}function Ea(e,t=null){let n=Ta();if(!n)return t;try{return n.getItem(e)??t}catch{return t}}function Da(e,t){let n=Ta();if(n)try{n.setItem(e,String(t))}catch{}}var Oa=new class{#e=k(`system`);get theme(){return I(this.#e)}set theme(e){A(this.#e,e,!0)}#t=k(0);get tick(){return I(this.#t)}set tick(e){A(this.#t,e,!0)}init(){this.theme=Ea(`gomodel_theme`,`system`),this.apply(),window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{this.theme===`system`&&this.tick++})}set(e){this.theme=e,Da(`gomodel_theme`,e),this.apply(),this.tick++}toggle(){let e=[`light`,`system`,`dark`];this.set(e[(e.indexOf(this.theme)+1)%e.length])}apply(){let e=document.documentElement;this.theme===`system`?e.removeAttribute(`data-theme`):e.setAttribute(`data-theme`,this.theme)}},ka=new class{#e=k(!1);get collapsed(){return I(this.#e)}set collapsed(e){A(this.#e,e,!0)}init(){this.collapsed=Ea(`gomodel_sidebar_collapsed`)===`true`}toggle(){this.collapsed=!this.collapsed,Da(`gomodel_sidebar_collapsed`,this.collapsed)}},Aa=new class{#e=k(j([]));get stack(){return I(this.#e)}set stack(e){A(this.#e,e,!0)}#t=1;opened(){let e=this.#t++;return this.stack=[...this.stack,e],e}closed(e){this.stack=this.stack.filter(t=>t!==e)}isTop(e){return this.stack.length>0&&this.stack[this.stack.length-1]===e}get openCount(){return this.stack.length}get anyOpen(){return this.stack.length>0}},ja=R(``),Ma=R(`
`,1);function Na(e,t){E(t,!0);let n=ya(t,`compact`,3,!1),r=[{value:`light`,icon:`sun`,label:`Light theme`},{value:`system`,icon:`monitor`,label:`System theme`},{value:`dark`,icon:`moon`,label:`Dark theme`}],i=O(()=>r.find(e=>e.value===Oa.theme)||r[1]),a=O(()=>`Change theme (currently `+I(i).label+`)`);var o=Ma(),s=N(o);let c;H(s,21,()=>r,e=>e.value,(e,t)=>{var n=ja();let r;G(M(n),{get name(){return I(t).icon},class:`theme-icon`}),T(n),F(()=>{r=U(n,1,`theme-btn svelte-1keql7b`,null,r,{active:Oa.theme===I(t).value}),W(n,`aria-pressed`,Oa.theme===I(t).value),W(n,`title`,I(t).label),W(n,`aria-label`,I(t).label)}),L(`click`,n,()=>Oa.set(I(t).value)),z(e,n)}),T(s);var l=P(s,2);let u;G(M(l),{get name(){return I(i).icon},class:`theme-icon`}),T(l),F(()=>{c=U(s,1,`theme-toggle svelte-1keql7b`,null,c,{"is-compact":n()}),u=U(l,1,`theme-toggle-mobile svelte-1keql7b`,null,u,{"is-compact":n()}),W(l,`title`,I(a)),W(l,`aria-label`,I(a))}),L(`click`,l,()=>Oa.toggle()),z(e,o),D()}Hr([`click`]);function Pa(){return typeof window>`u`?`/`:window.GOMODEL_BASE_PATH||`/`}function Fa(e){let t=Pa();return!e||e.charAt(0)!==`/`||e.indexOf(`//`)===0||t===`/`||e===t||e.indexOf(t+`/`)===0?e:t+e}function Ia(e){let t=Pa();return t===`/`||!e?e:e===t?`/`:e.indexOf(t+`/`)===0?e.slice(t.length)||`/`:e}function La(){return typeof window>`u`?``:window.GOMODEL_VERSION||``}function Ra(){return typeof window>`u`?!1:window.GOMODEL_DEMO_MODE===!0}var za=[`overview`,`usage`,`budgets`,`rate-limits`,`models`,`workflows`,`audit-logs`,`guardrails`,`mcp-servers`,`providers-config`,`auth-keys`,`settings`];function Ba(e){return e.startsWith(`/admin/static/`)?`/`+e.slice(14).replace(/^\/+/,``):e}function Va(e){let t=Ba(Ia(e)).replace(/\/$/,``).replace(`/admin/dashboard`,``).replace(/^\//,``).split(`/`),n=t[0];n===`audit`&&(n=`audit-logs`);let r=t[1]||null;return n===`settings`&&r===`guardrails`?{page:`guardrails`,sub:null}:(n=za.includes(n)?n:`overview`,{page:n,sub:r})}var Ha=new class{#e=k(`overview`);get page(){return I(this.#e)}set page(e){A(this.#e,e,!0)}#t=k(null);get sub(){return I(this.#t)}set sub(e){A(this.#t,e,!0)}init(){let{page:e,sub:t}=Va(window.location.pathname);this.page=e,this.sub=t,window.addEventListener(`popstate`,()=>{let{page:e,sub:t}=Va(window.location.pathname);this.page=e,this.sub=t})}navigate(e,t=null){let n=t?`/`+t:``;history.pushState(null,``,Fa(`/admin/dashboard/`+e+n)),this.page=e,this.sub=t}},Ua=`gomodel_api_key`;function Wa(e){let t=String(e||``).trim();if(/^Bearer\s*$/i.test(t))return``;let n=t.match(/^Bearer\s+(.+)$/i);return n?n[1].trim():t}var K=new class{#e=k(``);get apiKey(){return I(this.#e)}set apiKey(e){A(this.#e,e,!0)}#t=k(!1);get needsAuth(){return I(this.#t)}set needsAuth(e){A(this.#t,e,!0)}#n=k(!1);get authError(){return I(this.#n)}set authError(e){A(this.#n,e,!0)}#r=k(``);get authErrorMessage(){return I(this.#r)}set authErrorMessage(e){A(this.#r,e,!0)}#i=k(!1);get dialogOpen(){return I(this.#i)}set dialogOpen(e){A(this.#i,e,!0)}#a=k(0);get generation(){return I(this.#a)}set generation(e){A(this.#a,e,!0)}#o=k(0);get refreshTick(){return I(this.#o)}set refreshTick(e){A(this.#o,e,!0)}init(){try{this.apiKey=Wa(localStorage.getItem(Ua)||``)}catch{this.apiKey=``}}hasApiKey(){return Wa(this.apiKey)!==``}save(){this.apiKey=Wa(this.apiKey);try{localStorage.setItem(Ua,this.apiKey)}catch{}}openDialog(){this.dialogOpen=!0}closeDialog(){this.dialogOpen=!1}submit(){let e=Wa(this.apiKey);return e?(this.apiKey=e,this.save(),this.generation++,this.authError=!1,this.authErrorMessage=``,this.needsAuth=!1,this.closeDialog(),this.refresh(),!0):(this.apiKey=``,this.authError=!0,this.authErrorMessage=``,this.needsAuth=!0,this.openDialog(),!1)}refresh(){this.refreshTick++}handleUnauthorized(e,t=``){return typeof e==`number`&&e{r[e.type]=e.value}),r.year+`-`+r.month+`-`+r.day}formatTimestampInTimeZone(e,t){if(e==null)return`-`;let n=new Date(e);if(Number.isNaN(n.getTime()))return`-`;let r=to(`en-CA`,{timeZone:no(t)?t:Za,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}).formatToParts(n),i={};return r.forEach(e=>{i[e.type]=e.value}),i.year+`-`+i.month+`-`+i.day+` `+i.hour+`:`+i.minute+`:`+i.second}formatTimestamp(e){return this.formatTimestampInTimeZone(e,this.effectiveTimezone())}currentDateKey(e){return this.dateKeyInTimeZone(e||new Date,this.effectiveTimezone())}dateKeyToDate(e){return Ka(e)}dateToDateKey(e){return qa(e)}addDaysToDateKey(e,t){return Ja(e,t)}todayDate(){return this.dateKeyToDate(this.currentDateKey())}startOfMonthDate(e){let t=e instanceof Date?e:this.todayDate();return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1))}timeZoneOffsetLabel(e,t){let n=no(e)?e:Za;try{let e=to(`en-US`,{timeZone:n,hour:`2-digit`,minute:`2-digit`,hourCycle:`h23`,timeZoneName:`longOffset`}).formatToParts(t||new Date).find(e=>e.type===`timeZoneName`);if(!e||!e.value)return`UTC+00:00`;let r=e.value.replace(`GMT`,`UTC`);return r===`UTC`?`UTC+00:00`:r}catch{return`UTC+00:00`}}timeZoneOffsetMinutes(e,t){let n=/^UTC([+-])(\d{2}):(\d{2})$/.exec(this.timeZoneOffsetLabel(e,t));if(!n)return 0;let r=Number(n[2])*60+Number(n[3]);return n[1]===`-`?-r:r}timeZoneOptionLabel(e,t){return e+` (`+this.timeZoneOffsetLabel(e,t)+`)`}detectedTimeZoneLabel(){return this.timeZoneOptionLabel(this.detectedTimezone)}effectiveTimeZoneLabel(){return this.timeZoneOptionLabel(this.effectiveTimezone())}ensureOptions(){if(this.optionsLoaded)return;let e=new Date,t=[];try{typeof Intl.supportedValuesOf==`function`&&(t=Intl.supportedValuesOf(`timeZone`))}catch{t=[]}[Za,this.detectedTimezone,this.override].forEach(e=>{e&&t.indexOf(e)===-1&&no(e)&&t.push(e)}),t=t.filter(e=>no(e)),t.sort((t,n)=>{let r=this.timeZoneOffsetMinutes(t,e)-this.timeZoneOffsetMinutes(n,e);return r===0?t.localeCompare(n):r}),this.options=t.map(t=>({value:t,label:this.timeZoneOptionLabel(t,e)})),this.optionsLoaded=!0}saveOverride(){let e=Ta();if(e)if(this.override&&no(this.override))try{e.setItem(Qa,this.override)}catch{}else{try{e.removeItem(Qa)}catch{}this.override=``}this.optionsLoaded=!1,this.ensureOptions()}clearOverride(){let e=Ta();if(e)try{e.removeItem(Qa)}catch{}this.override=``}calendarTimeZoneText(){let e=this.override?`manual override`:`auto-detected`;return`Activity grouped by `+this.effectiveTimeZoneLabel()+` (`+e+`)`}};function oo(e,t){let n=e&&typeof e==`object`&&e.error&&e.error.message;return(typeof n==`string`?n.trim():``)||t}function so(e,t){let n=e&&e.data;if(n&&typeof n==`object`){let e=[n.message,n.error,n.error&&typeof n.error==`object`?n.error.message:null];for(let t of e)if(typeof t==`string`&&t.trim())return t.trim()}return t}function co(){let e={"Content-Type":`application/json`},t=Wa(K.apiKey);return t&&(e.Authorization=`Bearer `+t),e[`X-GoModel-Timezone`]=ao.effectiveTimezone(),e}function lo(e,t={}){return fetch(Fa(e),{...t,headers:{...co(),...t.headers||{}}})}async function uo(e,t,{label:n=e,parse:r=!0}={}){let i=K.generation,a=await lo(e,t);if(a.status===401)return K.handleUnauthorized(i),{ok:!1,stale:ie.trim()).filter(Boolean);return e.length>0?e:go}cacheVisible(){if(this.flag(`CACHE_ENABLED`)!==``)return this.booleanFlag(`CACHE_ENABLED`,!1);let e=this.flag(`REDIS_URL`),t=this.flag(`SEMANTIC_CACHE_ENABLED`);return e===``&&t===``||this.booleanFlag(`REDIS_URL`,!1)||this.booleanFlag(`SEMANTIC_CACHE_ENABLED`,!1)}auditVisible(){return this.booleanFlag(`LOGGING_ENABLED`,!0)}usageVisible(){return this.booleanFlag(`USAGE_ENABLED`,!0)}budgetsVisible(){return this.booleanFlag(`BUDGETS_ENABLED`,!0)}rateLimitsVisible(){return this.booleanFlag(`RATE_LIMITS_ENABLED`,!0)}guardrailsVisible(){return this.booleanFlag(`GUARDRAILS_ENABLED`,!0)}mcpVisible(){return this.booleanFlag(`MCP_ENABLED`,!0)}liveLogsVisible(){return this.booleanFlag(`DASHBOARD_LIVE_LOGS_ENABLED`,!0)}fetch(){return this.#n||=this.#r().finally(()=>{this.#n=null}),this.#n}async ensureLoaded(){if(this.#n){await this.#n;return}this.loaded||await this.fetch()}async#r(){let e=typeof AbortController==`function`?new AbortController:null,t=e?setTimeout(()=>e.abort(),1e4):null;try{let t=await fo(`/admin/runtime/config`,{label:`dashboard config`,signal:e?e.signal:void 0});if(t.stale)return;if(!t.ok){this.config={},this.loaded=!1;return}let n=t.data,r={};for(let e of ho)n&&typeof n==`object`&&!Array.isArray(n)&&n[e]!==void 0&&n[e]!==null&&(r[e]=String(n[e]).trim());this.config=r,this.loaded=!0}catch(e){console.error(`Failed to fetch dashboard config:`,e),this.config={},this.loaded=!1}finally{t!==null&&clearTimeout(t)}}},vo=[{page:`overview`,label:`Overview`,icon:`layout-dashboard`},{page:`providers-config`,label:`Providers`,icon:`server-cog`},{page:`models`,label:`Models`,icon:`box`},{page:`audit-logs`,label:`Audit Logs`,icon:`history`},{page:`usage`,label:`Usage`,icon:`chart-column`},{page:`budgets`,label:`Budgets`,icon:`wallet`,visible:()=>_o.budgetsVisible()},{page:`rate-limits`,label:`Rate Limits`,icon:`gauge`,visible:()=>_o.rateLimitsVisible()},{page:`auth-keys`,label:`API Keys`,icon:`key-round`},{page:`workflows`,label:`Workflows`,icon:`workflow`},{page:`guardrails`,label:`Guardrails (experimental)`,icon:`shield-check`,visible:()=>_o.guardrailsVisible()},{page:`mcp-servers`,label:`MCP Servers`,icon:`plug`,visible:()=>_o.mcpVisible()},{page:`settings`,label:`Settings`,icon:`settings`}],yo=R(` `),bo=R(`
`),xo=R(` `,1);function So(e,t){E(t,!0);let n=O(()=>vo.filter(e=>!e.visible||e.visible()));var r=xo(),i=N(r);let a;var o=M(i),s=M(o);wa(M(s),{}),T(s),Ue(4),T(o);var c=P(o,2);H(c,21,()=>I(n),e=>e.page,(e,t)=>{var n=yo();let r;var i=M(n);G(i,{get name(){return I(t).icon},class:`nav-icon`});var a=P(i,2),o=M(a,!0);T(a),T(n),F(e=>{W(n,`href`,e),r=U(n,1,`nav-item svelte-1nwtzae`,null,r,{active:Ha.page===I(t).page}),W(n,`title`,I(t).label),B(o,I(t).label)},[()=>Fa(`/admin/dashboard/`+I(t).page)]),L(`click`,n,e=>{e.preventDefault(),Ha.navigate(I(t).page)}),z(e,n)}),T(c);var l=P(c,2),u=M(l);Na(u,{get compact(){return ka.collapsed}});var d=P(u,2),f=e=>{var t=bo(),n=M(t),r=M(n);G(r,{name:`lock-keyhole`,class:`api-key-open-icon`});var i=P(r,2),a=M(i,!0);T(i),T(n),T(t),F(()=>{W(n,`aria-label`,K.needsAuth?`Enter API key`:`Change API key`),B(a,K.needsAuth?`Enter API key`:`Change API key`)}),L(`click`,n,()=>K.openDialog()),z(e,t)},p=O(()=>K.needsAuth||K.hasApiKey());V(d,e=>{I(p)&&e(f)}),T(l),T(i);var m=P(i,2);let h;F(()=>{a=U(i,1,`sidebar svelte-1nwtzae`,null,a,{"sidebar-collapsed":ka.collapsed}),h=U(m,1,`sidebar-toggle svelte-1nwtzae`,null,h,{collapsed:ka.collapsed}),W(m,`title`,ka.collapsed?`Expand sidebar`:`Collapse sidebar`),W(m,`aria-label`,ka.collapsed?`Expand sidebar`:`Collapse sidebar`),W(m,`aria-expanded`,!ka.collapsed)}),L(`click`,m,()=>ka.toggle()),z(e,r),D()}Hr([`click`]);var Co=R(``);function wo(e,t){E(t,!0);let n=ya(t,`label`,3,`Close`),r=ya(t,`class`,3,``),i=ya(t,`iconClass`,3,`table-icon-svg`),a=ya(t,`disabled`,3,!1),o=ya(t,`el`,15,null);var s=Co();G(M(s),{name:`x`,get class(){return i()}}),T(s),ga(s,e=>o(e),()=>o()),F(()=>{U(s,1,Fi([`dialog-close-btn`,r()]),`svelte-11l1bb5`),W(s,`aria-label`,n()),s.disabled=a()}),L(`click`,s,function(...e){t.onclick?.apply(this,e)}),z(e,s),D()}Hr([`click`]);var To=R(`
`,1);function Eo(e,t){E(t,!0);let n=ya(t,`open`,3,!1),r=ya(t,`variant`,3,`editor`),i=ya(t,`closeOnBackdrop`,3,!0),a=O(()=>r()===`auth`?`auth-dialog-backdrop`:`editor-modal-backdrop`),o=O(()=>r()===`auth`?`auth-dialog-shell`:`editor-modal-shell`),s=k(null);An(()=>{if(!n())return;let e=Er(()=>Aa.opened());Cr().then(()=>{let e=I(s)&&I(s).querySelector(`[data-modal-autofocus]`);e&&typeof e.focus==`function`&&e.focus()});let r=n=>{n.key===`Escape`&&Aa.isTop(e)&&t.onclose?.()};return window.addEventListener(`keydown`,r),()=>{Aa.closed(e),window.removeEventListener(`keydown`,r)}});function c(e){i()&&e.target===I(s)&&t.onclose?.()}var l=Qr(),u=N(l),d=e=>{var n=To(),r=N(n),i=P(r,2);gi(M(i),()=>t.children??f),T(i),ga(i,e=>A(s,e),()=>I(s)),F(()=>{U(r,1,Fi(I(a)),`svelte-17e0w4c`),U(i,1,Fi(I(o)),`svelte-17e0w4c`)}),L(`click`,i,c),z(e,n)};V(u,e=>{n()&&e(d)}),z(e,l),D()}Hr([`click`]);var Do=R(``),Oo=R(``);function ko(e,t){E(t,!0),Eo(e,{get open(){return K.dialogOpen},variant:`auth`,onclose:()=>K.closeDialog(),children:(e,t)=>{var n=Oo(),r=M(n),i=M(r),a=M(i),o=M(a,!0);T(a),T(i),wo(P(i,2),{label:`Close authentication dialog`,onclick:()=>K.closeDialog(),class:`auth-dialog-close`,iconClass:``}),T(r);var s=P(r,2),c=M(s),l=M(c);G(l,{name:`lock-keyhole`,class:`auth-dialog-input-icon`});var u=P(l,2);na(u),T(c);var d=P(c,2),f=e=>{var t=Do(),n=M(t,!0);T(t),F(()=>B(n,K.authErrorMessage||`Enter a valid API key to continue.`)),z(e,t)};V(d,e=>{K.authError&&e(f)});var p=P(d,4),m=M(p),h=M(m);G(h,{name:`check`,class:`auth-dialog-submit-icon`});var g=P(h,2),_=M(g,!0);T(g),T(m),T(p),T(s),T(n),F(()=>{B(o,K.needsAuth?`Dashboard locked`:`Change API key`),B(_,K.needsAuth?`Unlock dashboard`:`Save API key`)}),Vr(`submit`,s,e=>{e.preventDefault(),K.submit()}),da(u,()=>K.apiKey,e=>K.apiKey=e),z(e,n)},$$slots:{default:!0}}),D()}function Ao(){return{open:!1,title:``,titleId:`typedConfirmationDialogTitle`,inputId:`typed-confirmation-input`,message:``,requiredText:``,value:``,confirmLabel:`Confirm`,icon:`triangle-alert`,dialogClass:``,loading:!1,onConfirm:null,onClose:null}}var jo=new class{#e=k(j(Ao()));get state(){return I(this.#e)}set state(e){A(this.#e,e,!0)}#t=k(``);get error(){return I(this.#t)}set error(e){A(this.#t,e,!0)}open(e){this.error=``,this.state={...Ao(),open:!0,...e||{}}}close(){let e=this.state;typeof e.onClose==`function`&&e.onClose(),this.state=Ao(),this.error=``}ready(){return String(this.state.value||``).trim().toLowerCase()===String(this.state.requiredText||``).trim().toLowerCase()}inputLabel(){return`Type `+String(this.state.requiredText||``).trim()+` to confirm`}async submit(){if(!this.ready()){this.error=this.inputLabel()+`.`;return}if(typeof this.state.onConfirm==`function`){this.state.loading=!0;try{await this.state.onConfirm()}finally{this.state.loading=!1}}}},Mo=R(`

`),No=R(``),Po=R(`

`);function Fo(e,t){E(t,!0);let n=O(()=>jo.state);Eo(e,{get open(){return I(n).open},variant:`auth`,onclose:()=>jo.close(),children:(e,t)=>{var r=Po(),i=M(r),a=M(i),o=M(a,!0);T(a),wo(P(a,2),{label:`Close confirmation dialog`,onclick:()=>jo.close(),class:`auth-dialog-close`,iconClass:``}),T(i);var s=P(i,2),c=M(s),l=e=>{var t=Mo(),r=M(t,!0);T(t),F(()=>B(r,I(n).message)),z(e,t)};V(c,e=>{I(n).message&&e(l)});var u=P(c,2),d=M(u),f=M(d,!0);T(d);var p=P(d,2);na(p),T(u);var m=P(u,2),h=e=>{var t=No(),n=M(t,!0);T(t),F(()=>B(n,jo.error)),z(e,t)};V(m,e=>{jo.error&&e(h)});var g=P(m,2),_=M(g),v=P(_,2),y=M(v);G(y,{get name(){return I(n).icon},class:`form-action-icon`});var b=P(y,2),x=M(b,!0);T(b),T(v),T(g),T(s),T(r),F((e,t)=>{U(r,1,`auth-dialog ${I(n).dialogClass??``}`),W(r,`aria-labelledby`,I(n).titleId),W(a,`id`,I(n).titleId),B(o,I(n).title),W(d,`for`,I(n).inputId),B(f,e),W(p,`id`,I(n).inputId),v.disabled=t,B(x,I(n).confirmLabel)},[()=>jo.inputLabel(),()=>I(n).loading||!jo.ready()]),Vr(`submit`,s,e=>{e.preventDefault(),jo.submit()}),da(p,()=>jo.state.value,e=>jo.state.value=e),L(`click`,_,()=>jo.close()),z(e,r)},$$slots:{default:!0}}),D()}Hr([`click`]);var Io=e=>e;function Lo(e){let t=e-1;return t*t*t+1}function Ro(e){let t=typeof e==`string`&&e.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);return t?[parseFloat(t[1]),t[2]||`px`]:[e,`px`]}function zo(e,{delay:t=0,duration:n=400,easing:r=Io}={}){let i=+getComputedStyle(e).opacity;return{delay:t,duration:n,easing:r,css:e=>`opacity: ${e*i}`}}function Bo(e,{delay:t=0,duration:n=400,easing:r=Lo,x:i=0,y:a=0,opacity:o=0}={}){let s=getComputedStyle(e),c=+s.opacity,l=s.transform===`none`?``:s.transform,u=c*(1-o),[d,f]=Ro(i),[p,m]=Ro(a);return{delay:t,duration:n,easing:r,css:(e,t)=>` - transform: ${l} translate(${(1-e)*d}${f}, ${(1-e)*p}${m}); - opacity: ${c-u*t}`}}function Vo(e,{delay:t=0,duration:n=400,easing:r=Lo,axis:i=`y`}={}){let a=getComputedStyle(e),o=+a.opacity,s=i===`y`?`height`:`width`,c=parseFloat(a[s]),l=i===`y`?[`top`,`bottom`]:[`left`,`right`],u=l.map(e=>`${e[0].toUpperCase()}${e.slice(1)}`),d=parseFloat(a[`padding${u[0]}`]),f=parseFloat(a[`padding${u[1]}`]),p=parseFloat(a[`margin${u[0]}`]),m=parseFloat(a[`margin${u[1]}`]),h=parseFloat(a[`border${u[0]}Width`]),g=parseFloat(a[`border${u[1]}Width`]);return{delay:t,duration:n,easing:r,css:e=>`overflow: hidden;opacity: ${Math.min(e*20,1)*o};${s}: ${e*c}px;padding-${l[0]}: ${e*d}px;padding-${l[1]}: ${e*f}px;margin-${l[0]}: ${e*p}px;margin-${l[1]}: ${e*m}px;border-${l[0]}-width: ${e*h}px;border-${l[1]}-width: ${e*g}px;min-${s}: 0`}}function Ho(e){return--e*e*(2.70158*e+1.70158)+1}function Uo(e){let t=e-1;return t*t*t+1}var Wo=5e3,Go=8e3,q=new class{#e=k(j([]));get toasts(){return I(this.#e)}set toasts(e){A(this.#e,e,!0)}#t=0;#n=new Map;success(e){this.#r(`success`,e,Wo)}error(e){this.#r(`error`,e,Go)}dismiss(e){let t=this.#n.get(e);t&&(clearTimeout(t),this.#n.delete(e)),this.toasts=this.toasts.filter(t=>t.id!==e)}#r(e,t,n){let r=String(t||``).trim();if(!r)return;let i=this.toasts.find(t=>t.kind===e&&t.text===r);i&&this.dismiss(i.id);let a=++this.#t;this.toasts=[...this.toasts,{id:a,kind:e,text:r}],this.#n.set(a,setTimeout(()=>this.dismiss(a),n))}},Ko=R(`
`),qo=R(`
`);function Jo(e,t){E(t,!0);var n=qo();H(n,21,()=>q.toasts,e=>e.id,(e,t)=>{var n=Ko();let r;var i=M(n),a=M(i,!0);T(i);var o=P(i,2);T(n),F(()=>{r=U(n,1,`flash-toast svelte-1i257xg`,null,r,{"flash-toast-success":I(t).kind===`success`,"flash-toast-error":I(t).kind===`error`}),W(n,`role`,I(t).kind===`error`?`alert`:`status`),W(n,`aria-live`,I(t).kind===`error`?`assertive`:`polite`),B(a,I(t).text)}),L(`click`,o,()=>q.dismiss(I(t).id)),ki(1,n,()=>Bo,()=>({y:-24,duration:360,easing:Ho})),ki(2,n,()=>zo,()=>({duration:150})),z(e,n)}),T(n),z(e,n),D()}Hr([`click`]);var Yo=R(``);function Xo(e,t){E(t,!0);var n=Qr(),r=N(n),i=e=>{z(e,Yo())},a=O(()=>Ra());V(r,e=>{I(a)&&e(i)}),z(e,n),D()}function Zo(e){return String(e||``).split(`,`).map(e=>e.trim()).filter(e=>e)}function Qo(e){if(e==null||e===``)return`Not captured`;if(typeof e==`string`){let t=e.trim();if(t.startsWith(`{`)&&t.endsWith(`}`)||t.startsWith(`[`)&&t.endsWith(`]`))try{return JSON.stringify(JSON.parse(t),null,2)}catch{return e}return e}try{return JSON.stringify(e,null,2)}catch{return String(e)}}function $o(e){return e==null||e===void 0?`-`:e.toLocaleString()}function es(e){if(e==null)return`---`;let t=Number(e);return Number.isFinite(t)?t>0&&t<1e-4?`<$0.0001`:`$`+t.toFixed(4).replace(/(\.\d{2}\d*?)0+$/,`$1`):`---`}function ts(e){return e==null||e===void 0?`—`:`$`+e.toFixed(2)}function ns(e){return e==null||e===void 0?`—`:e<.01?`$`+e.toFixed(6):`$`+e.toFixed(4)}function rs(e){if(e==null||e===``)return`-`;let t=Number(e);if(!Number.isFinite(t))return`-`;let n=Math.abs(t),r=[{threshold:1e9,suffix:`B`},{threshold:1e6,suffix:`M`},{threshold:1e3,suffix:`K`}];for(let e=0;e=i.threshold){let n=t/i.threshold;return Math.abs(Number(n.toFixed(1)))>=1e3&&e>0&&(i=r[e-1],n=t/i.threshold),n.toFixed(1).replace(/\.0$/,``)+i.suffix}}return String(t)}function is(e,t){let n=t==null||t===``?NaN:Number(t),r=Number.isFinite(n)?$o(n):`-`;return String(e||`Tokens`)+`: `+r}function as(e){return e?typeof e==`string`?e:e.getUTCFullYear()+`-`+String(e.getUTCMonth()+1).padStart(2,`0`)+`-`+String(e.getUTCDate()).padStart(2,`0`):``}function os(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:t.getUTCFullYear()+`-`+String(t.getUTCMonth()+1).padStart(2,`0`)+`-`+String(t.getUTCDate()).padStart(2,`0`)}function ss(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:t.getUTCFullYear()+`-`+String(t.getUTCMonth()+1).padStart(2,`0`)+`-`+String(t.getUTCDate()).padStart(2,`0`)+` `+String(t.getUTCHours()).padStart(2,`0`)+`:`+String(t.getUTCMinutes()).padStart(2,`0`)+`:`+String(t.getUTCSeconds()).padStart(2,`0`)+` UTC`}function cs(e){return String(e&&e.provider||``).trim()}function ls(e){return String(e&&e.provider_name||``).trim()||cs(e)}function us(e,t){let n=String(t||``).trim();if(!n)return`-`;let r=ls(e);return!r||n===r||n.startsWith(r+`/`)?n:r+`/`+n}function ds(e){return us(e,e&&e.model)}function fs(e){return us(e,e&&e.resolved_model)}function ps(e){let t=String(e&&(e.requested_model||e.model)||``).trim();if(!e)return t;let n=String(e.data&&e.data.failover&&e.data.failover.target_model||``).trim();if(n&&n!==t)return t+` ⮕ `+n;if(e.alias_used&&e.resolved_model){let n=fs(e);if(n&&n!==`-`&&n!==t)return t+` ⮕ `+n}return t}var ms=`gomodel_date_range`,hs=1;function gs(e){return/^[1-9]\d*$/.test(String(e??``))}var _s=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function vs({selectedPreset:e,startKey:t,endKey:n,followsToday:r}){return e&&gs(e)?{v:hs,mode:`preset`,days:String(e)}:e?null:Ya(t)&&Ya(n)?{v:hs,mode:`custom`,start:t,end:n,follow:r===!0}:null}function ys(e){let t=e;if(typeof e==`string`)try{t=JSON.parse(e)}catch{return null}return!t||typeof t!=`object`?null:t.mode===`preset`?gs(t.days)?{mode:`preset`,days:String(t.days)}:null:t.mode===`custom`&&Ya(t.start)&&Ya(t.end)&&t.start<=t.end?{mode:`custom`,start:t.start,end:t.end,follow:t.follow===!0}:null}function bs(e,t,n){let r=Xa(e,t);return r<1||!Ya(n)?{start:e,end:t}:{start:Ja(n,-(r-1)),end:n}}function xs(e,t){if(e===t)return`Today`;let[n,r,i]=e.split(`-`);return _s[Number(r)-1]+` `+Number(i)+`, `+n}function Ss({selectedPreset:e,startKey:t,endKey:n,followsToday:r,todayKey:i}){if(e)return`Last `+e+` days`;if(!Ya(t)||!Ya(n))return``;let a=Xa(t,n);return r||n===i?a===1?`Today`:`Last `+a+` days`:a===1?`1 day`:a+` days`}function Cs({selectedPreset:e,startKey:t,endKey:n,todayKey:r}){if(e)return`Last `+e+` days`;let i=e=>xs(e,r);return Ya(t)&&Ya(n)?t===n?i(t):i(t)+` – `+i(n):Ya(t)?i(t)+` – ...`:`Last 30 days`}var ws=6e4,Ts=new class{#e=k(j(`30`));get days(){return I(this.#e)}set days(e){A(this.#e,e,!0)}#t=k(j(`30`));get selectedPreset(){return I(this.#t)}set selectedPreset(e){A(this.#t,e,!0)}#n=k(null);get customStartDate(){return I(this.#n)}set customStartDate(e){A(this.#n,e,!0)}#r=k(null);get customEndDate(){return I(this.#r)}set customEndDate(e){A(this.#r,e,!0)}#i=k(!1);get followsToday(){return I(this.#i)}set followsToday(e){A(this.#i,e,!0)}#a=k(`daily`);get interval(){return I(this.#a)}set interval(e){A(this.#a,e,!0)}#o=k(0);get syncTick(){return I(this.#o)}set syncTick(e){A(this.#o,e,!0)}init(){this.restore(),this.syncToToday(),typeof setInterval==`function`&&setInterval(()=>this.syncToToday(),ws)}queryStr(){return this.customStartDate&&this.customEndDate?`start_date=`+as(this.customStartDate)+`&end_date=`+as(this.customEndDate):`days=`+this.days}selectPreset(e){this.selectedPreset=e,this.customStartDate=null,this.customEndDate=null,this.followsToday=!1,this.days=e,this.persist()}selectStart(e){this.selectedPreset=null,this.customStartDate=e,this.customEndDate&&this.customEndDatet.category===e);return t?t.count:0}get filteredModels(){if(!this.filter)return this.models;let e=this.filter.toLowerCase();return this.models.filter(t=>(t.model?.id??``).toLowerCase().includes(e)||(t.provider_name??``).toLowerCase().includes(e)||(t.provider_type??``).toLowerCase().includes(e)||(t.selector??``).toLowerCase().includes(e)||(t.model?.owned_by??``).toLowerCase().includes(e)||(t.model?.metadata?.modes??[]).join(`,`).toLowerCase().includes(e)||(t.model?.metadata?.categories??[]).join(`,`).toLowerCase().includes(e))}},Ds=R(``);function Os(e,t){E(t,!0);var n=Qr(),r=N(n),i=e=>{var t=Ds(),n=P(M(t),2);T(t),L(`click`,n,()=>K.openDialog()),z(e,t)};V(r,e=>{K.authError&&e(i)}),z(e,n),D()}Hr([`click`]);function ks(){return{total_requests:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,total_input_cost:null,total_output_cost:null,total_cost:null}}function As(){return{summary:{total_hits:0,exact_hits:0,semantic_hits:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,total_saved_cost:null},daily:[]}}var js=new class{#e=k(j(ks()));get summary(){return I(this.#e)}set summary(e){A(this.#e,e,!0)}#t=k(j([]));get daily(){return I(this.#t)}set daily(e){A(this.#t,e,!0)}#n=k(j(As()));get cacheOverview(){return I(this.#n)}set cacheOverview(e){A(this.#n,e,!0)}#r=k(!1);get loading(){return I(this.#r)}set loading(e){A(this.#r,e,!0)}#i=null;#a=null;cacheAnalyticsEnabled(){return _o.cacheVisible()}async fetchUsage(){this.#i&&this.#i.abort();let e=new AbortController;this.#i=e,this.loading=!0;try{let t=Ts.queryStr()+`&interval=`+Ts.interval,[n,r]=await Promise.all([fo(`/admin/usage/summary?`+t,{label:`usage summary`,signal:e.signal}),fo(`/admin/usage/daily?`+t,{label:`usage daily`,signal:e.signal})]);if(n.stale||r.stale||e.signal.aborted)return;if(!n.ok||!r.ok){this.summary=ks(),this.daily=[],this.cacheOverview=As();return}this.summary=n.data||ks(),this.daily=Array.isArray(r.data)?r.data:[]}catch(e){if(mo(e))return;console.error(`Failed to fetch usage:`,e),this.summary=ks(),this.daily=[]}finally{this.#i===e&&(this.#i=null,this.loading=!1)}}async fetchCacheOverview(e=``){if(await _o.ensureLoaded(),!this.cacheAnalyticsEnabled()){this.cacheOverview=As();return}this.#a&&this.#a.abort();let t=new AbortController;this.#a=t;try{let n=await fo(`/admin/cache/overview?`+(Ts.queryStr()+`&interval=`+Ts.interval+e),{label:`cache overview`,signal:t.signal});if(n.stale||t.signal.aborted)return;if(!n.ok){this.cacheOverview=As();return}let r=n.data&&typeof n.data==`object`?n.data:As();r.summary||=As().summary,Array.isArray(r.daily)||(r.daily=[]),this.cacheOverview=r}catch(e){if(mo(e))return;console.error(`Failed to fetch cache overview:`,e),this.cacheOverview=As()}finally{this.#a===t&&(this.#a=null)}}},Ms=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`];function Ns(e,t){let n=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+t,1));return Ms[n.getUTCMonth()]+` `+n.getUTCFullYear()}function Ps(e,t,n){let r=e.getUTCFullYear(),i=e.getUTCMonth()+t,a=new Date(Date.UTC(r,i,1)),o=new Date(Date.UTC(r,i+1,0)),s=(a.getUTCDay()+6)%7,c=[],l=new Date(Date.UTC(r,i,0));for(let e=s-1;e>=0;e--){let t=l.getUTCDate()-e,a=new Date(Date.UTC(r,i-1,t));c.push({day:t,date:a,current:!1,key:`p-`+n(a)})}for(let e=1;e<=o.getUTCDate();e++){let t=new Date(Date.UTC(r,i,e));c.push({day:e,date:t,current:!0,key:`c-`+n(t)})}let u=42-c.length;for(let e=1;e<=u;e++){let t=new Date(Date.UTC(r,i+1,e));c.push({day:e,date:t,current:!1,key:`n-`+n(t)})}return c}function Fs(e,t,n){let r=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+t,1));return n&&r.getTime()>n.getTime()?e:r}function Is(e,t){return e.getUTCFullYear()===t.getUTCFullYear()&&e.getUTCMonth()===t.getUTCMonth()}var Ls=R(``),Rs=R(``),zs=R(``),Bs=R(`
MoTuWeThFrSaSu
`);function Vs(e,t){E(t,!0);let n=ya(t,`offset`,3,0),r=O(()=>Ps(t.calendarMonth,n(),e=>ao.dateToDateKey(e))),i=O(()=>Is(t.calendarMonth,ao.todayDate())),a=e=>ao.dateToDateKey(e.date),o=e=>a(e)>ao.currentDateKey(),s=e=>e.current&&a(e)===ao.currentDateKey();function c(e,t){let n=t===`start`?Ts.rangeStart():Ts.rangeEnd();return e.current&&!!n&&a(e)===ao.dateToDateKey(n)}function l(e){let t=Ts.rangeStart(),n=Ts.rangeEnd();return!e.current||!t||!n?!1:a(e)>=ao.dateToDateKey(t)&&a(e)<=ao.dateToDateKey(n)}var u=Bs(),d=M(u),f=M(d);let p;var m=P(f,2),h=M(m,!0);T(m);var g=P(m,2),_=e=>{z(e,Ls())},v=e=>{var n=Rs();F(()=>n.disabled=I(i)),L(`click`,n,function(...e){t.onnext?.apply(this,e)}),z(e,n)};V(g,e=>{n()===-1?e(_):e(v,-1)}),T(d);var y=P(d,4);H(y,21,()=>I(r),e=>e.key,(e,n)=>{var r=zs(),i=M(r,!0);T(r),F((e,t)=>{U(r,1,e,`svelte-g7ga4u`),r.disabled=t,B(i,I(n).day)},[()=>Fi([`dp-day`,{"other-month":!I(n).current,today:s(I(n)),"range-start":c(I(n),`start`),"range-end":c(I(n),`end`),"in-range":l(I(n)),disabled:o(I(n))}]),()=>o(I(n))||!I(n).current]),L(`click`,r,()=>t.onselect?.(I(n))),z(e,r)}),T(y),T(u),F(e=>{p=U(f,1,`dp-nav-btn svelte-g7ga4u`,null,p,{"dp-nav-prev-mobile":n()!==-1}),B(h,e)},[()=>Ns(t.calendarMonth,n())]),L(`click`,f,function(...e){t.onprev?.apply(this,e)}),z(e,u),D()}Hr([`click`]);var Hs=R(``),Us=R(`
`),Ws=Xr(``),Gs=Xr(``),Ks=R(`
`),qs=R(`
`);function Js(e,t){E(t,!0);let n=[`3`,`7`,`14`,`30`,`90`],r=k(!1),i=k(`start`),a=k(j(new Date)),o=k(j({show:!1,x:0,y:0})),s=k(null);function c(){A(r,!I(r)),I(r)&&(Ts.syncToToday(),A(a,ao.startOfMonthDate(Ts.customEndDate||ao.todayDate()),!0),A(i,`start`))}function l(){A(r,!1),A(o,{show:!1,x:0,y:0},!0)}An(()=>{if(!I(r))return;let e=e=>{I(s)&&!I(s).contains(e.target)&&l()},t=e=>{e.key===`Escape`&&l()};return document.addEventListener(`click`,e,!0),window.addEventListener(`keydown`,t),()=>{document.removeEventListener(`click`,e,!0),window.removeEventListener(`keydown`,t)}});let u=Ts.syncTick;An(()=>{let e=Ts.syncTick;e!==u&&(u=e,t.onchange?.())});function d(e){Ts.selectPreset(e),A(i,`start`),t.onchange?.(),l()}let f=()=>A(a,Fs(I(a),-1),!0),p=()=>A(a,Fs(I(a),1,ao.startOfMonthDate(ao.todayDate())),!0);function m(e){let n=new Date(e.date);if(I(i)===`start`){Ts.selectStart(n),A(i,`end`),t.onchange?.();return}Ts.selectEnd(n),A(i,`start`),t.onchange?.(),l()}var h=qs(),g=M(h),_=P(M(g),2),v=M(_,!0);T(_);var y=P(_,2);let b;T(g);var x=P(g,2),S=e=>{var t=Us(),r=M(t);H(r,20,()=>n,e=>e,(e,t)=>{var n=Hs();let r;var i=M(n);T(n),F(()=>{r=U(n,1,`preset-btn svelte-ax7ma4`,null,r,{active:Ts.selectedPreset===t}),B(i,`Last ${t??``} days`)}),L(`click`,n,()=>d(t)),z(e,n)}),T(r);var i=P(r,2);H(i,20,()=>[-1,0],e=>e,(e,t)=>{Vs(e,{get calendarMonth(){return I(a)},get offset(){return t},onprev:f,onnext:p,onselect:m})}),T(i),T(t),L(`mousemove`,i,e=>A(o,{show:!0,x:e.clientX,y:e.clientY},!0)),Vr(`mouseleave`,i,()=>A(o,{show:!1,x:0,y:0},!0)),z(e,t)};V(x,e=>{I(r)&&e(S)});var C=P(x,2),w=e=>{var t=Ks(),n=M(t),r=e=>{z(e,Ws())},a=e=>{z(e,Gs())};V(n,e=>{I(i)===`start`?e(r):e(a,-1)});var s=P(n,2),c=M(s,!0);T(s),T(t),F(()=>{Hi(t,`left:${I(o).x??``}px;top:${I(o).y??``}px`),B(c,I(i)===`end`?`Select end date`:`Select start date`)}),z(e,t)};V(C,e=>{I(o).show&&e(w)}),T(h),ga(h,e=>A(s,e),()=>I(s)),F((e,t)=>{W(g,`title`,e),B(v,t),b=U(y,0,`date-picker-chevron svelte-ax7ma4`,null,b,{open:I(r)})},[()=>Ts.dateRangeSpanLabel(),()=>Ts.dateRangeLabel()]),L(`click`,g,c),z(e,h),D()}Hr([`click`,`mousemove`]);function Ys(e){return e+.5|0}var Xs=(e,t,n)=>Math.max(Math.min(e,n),t);function Zs(e){return Xs(Ys(e*2.55),0,255)}function Qs(e){return Xs(Ys(e*255),0,255)}function $s(e){return Xs(Ys(e/2.55)/100,0,1)}function ec(e){return Xs(Ys(e*100),0,100)}var tc={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},nc=[...`0123456789ABCDEF`],rc=e=>nc[e&15],ic=e=>nc[(e&240)>>4]+nc[e&15],ac=e=>(e&240)>>4==(e&15),oc=e=>ac(e.r)&&ac(e.g)&&ac(e.b)&&ac(e.a);function sc(e){var t=e.length,n;return e[0]===`#`&&(t===4||t===5?n={r:255&tc[e[1]]*17,g:255&tc[e[2]]*17,b:255&tc[e[3]]*17,a:t===5?tc[e[4]]*17:255}:(t===7||t===9)&&(n={r:tc[e[1]]<<4|tc[e[2]],g:tc[e[3]]<<4|tc[e[4]],b:tc[e[5]]<<4|tc[e[6]],a:t===9?tc[e[7]]<<4|tc[e[8]]:255})),n}var cc=(e,t)=>e<255?t(e):``;function lc(e){var t=oc(e)?rc:ic;return e?`#`+t(e.r)+t(e.g)+t(e.b)+cc(e.a,t):void 0}var uc=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function dc(e,t,n){let r=t*Math.min(n,1-n),i=(t,i=(t+e/30)%12)=>n-r*Math.max(Math.min(i-3,9-i,1),-1);return[i(0),i(8),i(4)]}function fc(e,t,n){let r=(r,i=(r+e/60)%6)=>n-n*t*Math.max(Math.min(i,4-i,1),0);return[r(5),r(3),r(1)]}function pc(e,t,n){let r=dc(e,1,.5),i;for(t+n>1&&(i=1/(t+n),t*=i,n*=i),i=0;i<3;i++)r[i]*=1-t-n,r[i]+=t;return r}function mc(e,t,n,r,i){return e===i?(t-n)/r+(t.5?l/(2-i-a):l/(i+a),s=mc(t,n,r,l,i),s=s*60+.5),[s|0,c||0,o]}function gc(e,t,n,r){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,n,r)).map(Qs)}function _c(e,t,n){return gc(dc,e,t,n)}function vc(e,t,n){return gc(pc,e,t,n)}function yc(e,t,n){return gc(fc,e,t,n)}function bc(e){return(e%360+360)%360}function xc(e){let t=uc.exec(e),n=255,r;if(!t)return;t[5]!==r&&(n=t[6]?Zs(+t[5]):Qs(+t[5]));let i=bc(+t[2]),a=t[3]/100,o=t[4]/100;return r=t[1]===`hwb`?vc(i,a,o):t[1]===`hsv`?yc(i,a,o):_c(i,a,o),{r:r[0],g:r[1],b:r[2],a:n}}function Sc(e,t){var n=hc(e);n[0]=bc(n[0]+t),n=_c(n),e.r=n[0],e.g=n[1],e.b=n[2]}function Cc(e){if(!e)return;let t=hc(e),n=t[0],r=ec(t[1]),i=ec(t[2]);return e.a<255?`hsla(${n}, ${r}%, ${i}%, ${$s(e.a)})`:`hsl(${n}, ${r}%, ${i}%)`}var wc={x:`dark`,Z:`light`,Y:`re`,X:`blu`,W:`gr`,V:`medium`,U:`slate`,A:`ee`,T:`ol`,S:`or`,B:`ra`,C:`lateg`,D:`ights`,R:`in`,Q:`turquois`,E:`hi`,P:`ro`,O:`al`,N:`le`,M:`de`,L:`yello`,F:`en`,K:`ch`,G:`arks`,H:`ea`,I:`ightg`,J:`wh`},Tc={OiceXe:`f0f8ff`,antiquewEte:`faebd7`,aqua:`ffff`,aquamarRe:`7fffd4`,azuY:`f0ffff`,beige:`f5f5dc`,bisque:`ffe4c4`,black:`0`,blanKedOmond:`ffebcd`,Xe:`ff`,XeviTet:`8a2be2`,bPwn:`a52a2a`,burlywood:`deb887`,caMtXe:`5f9ea0`,KartYuse:`7fff00`,KocTate:`d2691e`,cSO:`ff7f50`,cSnflowerXe:`6495ed`,cSnsilk:`fff8dc`,crimson:`dc143c`,cyan:`ffff`,xXe:`8b`,xcyan:`8b8b`,xgTMnPd:`b8860b`,xWay:`a9a9a9`,xgYF:`6400`,xgYy:`a9a9a9`,xkhaki:`bdb76b`,xmagFta:`8b008b`,xTivegYF:`556b2f`,xSange:`ff8c00`,xScEd:`9932cc`,xYd:`8b0000`,xsOmon:`e9967a`,xsHgYF:`8fbc8f`,xUXe:`483d8b`,xUWay:`2f4f4f`,xUgYy:`2f4f4f`,xQe:`ced1`,xviTet:`9400d3`,dAppRk:`ff1493`,dApskyXe:`bfff`,dimWay:`696969`,dimgYy:`696969`,dodgerXe:`1e90ff`,fiYbrick:`b22222`,flSOwEte:`fffaf0`,foYstWAn:`228b22`,fuKsia:`ff00ff`,gaRsbSo:`dcdcdc`,ghostwEte:`f8f8ff`,gTd:`ffd700`,gTMnPd:`daa520`,Way:`808080`,gYF:`8000`,gYFLw:`adff2f`,gYy:`808080`,honeyMw:`f0fff0`,hotpRk:`ff69b4`,RdianYd:`cd5c5c`,Rdigo:`4b0082`,ivSy:`fffff0`,khaki:`f0e68c`,lavFMr:`e6e6fa`,lavFMrXsh:`fff0f5`,lawngYF:`7cfc00`,NmoncEffon:`fffacd`,ZXe:`add8e6`,ZcSO:`f08080`,Zcyan:`e0ffff`,ZgTMnPdLw:`fafad2`,ZWay:`d3d3d3`,ZgYF:`90ee90`,ZgYy:`d3d3d3`,ZpRk:`ffb6c1`,ZsOmon:`ffa07a`,ZsHgYF:`20b2aa`,ZskyXe:`87cefa`,ZUWay:`778899`,ZUgYy:`778899`,ZstAlXe:`b0c4de`,ZLw:`ffffe0`,lime:`ff00`,limegYF:`32cd32`,lRF:`faf0e6`,magFta:`ff00ff`,maPon:`800000`,VaquamarRe:`66cdaa`,VXe:`cd`,VScEd:`ba55d3`,VpurpN:`9370db`,VsHgYF:`3cb371`,VUXe:`7b68ee`,VsprRggYF:`fa9a`,VQe:`48d1cc`,VviTetYd:`c71585`,midnightXe:`191970`,mRtcYam:`f5fffa`,mistyPse:`ffe4e1`,moccasR:`ffe4b5`,navajowEte:`ffdead`,navy:`80`,Tdlace:`fdf5e6`,Tive:`808000`,TivedBb:`6b8e23`,Sange:`ffa500`,SangeYd:`ff4500`,ScEd:`da70d6`,pOegTMnPd:`eee8aa`,pOegYF:`98fb98`,pOeQe:`afeeee`,pOeviTetYd:`db7093`,papayawEp:`ffefd5`,pHKpuff:`ffdab9`,peru:`cd853f`,pRk:`ffc0cb`,plum:`dda0dd`,powMrXe:`b0e0e6`,purpN:`800080`,YbeccapurpN:`663399`,Yd:`ff0000`,Psybrown:`bc8f8f`,PyOXe:`4169e1`,saddNbPwn:`8b4513`,sOmon:`fa8072`,sandybPwn:`f4a460`,sHgYF:`2e8b57`,sHshell:`fff5ee`,siFna:`a0522d`,silver:`c0c0c0`,skyXe:`87ceeb`,UXe:`6a5acd`,UWay:`708090`,UgYy:`708090`,snow:`fffafa`,sprRggYF:`ff7f`,stAlXe:`4682b4`,tan:`d2b48c`,teO:`8080`,tEstN:`d8bfd8`,tomato:`ff6347`,Qe:`40e0d0`,viTet:`ee82ee`,JHt:`f5deb3`,wEte:`ffffff`,wEtesmoke:`f5f5f5`,Lw:`ffff00`,LwgYF:`9acd32`};function Ec(){let e={},t=Object.keys(Tc),n=Object.keys(wc),r,i,a,o,s;for(r=0;r>16&255,a>>8&255,a&255]}return e}var Dc;function Oc(e){Dc||(Dc=Ec(),Dc.transparent=[0,0,0,0]);let t=Dc[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}var kc=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function Ac(e){let t=kc.exec(e),n=255,r,i,a;if(t){if(t[7]!==r){let e=+t[7];n=t[8]?Zs(e):Xs(e*255,0,255)}return r=+t[1],i=+t[3],a=+t[5],r=255&(t[2]?Zs(r):Xs(r,0,255)),i=255&(t[4]?Zs(i):Xs(i,0,255)),a=255&(t[6]?Zs(a):Xs(a,0,255)),{r,g:i,b:a,a:n}}}function jc(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${$s(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}var Mc=e=>e<=.0031308?e*12.92:e**(1/2.4)*1.055-.055,Nc=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4;function Pc(e,t,n){let r=Nc($s(e.r)),i=Nc($s(e.g)),a=Nc($s(e.b));return{r:Qs(Mc(r+n*(Nc($s(t.r))-r))),g:Qs(Mc(i+n*(Nc($s(t.g))-i))),b:Qs(Mc(a+n*(Nc($s(t.b))-a))),a:e.a+n*(t.a-e.a)}}function Fc(e,t,n){if(e){let r=hc(e);r[t]=Math.max(0,Math.min(r[t]+r[t]*n,t===0?360:1)),r=_c(r),e.r=r[0],e.g=r[1],e.b=r[2]}}function Ic(e,t){return e&&Object.assign(t||{},e)}function Lc(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=Qs(e[3]))):(t=Ic(e,{r:0,g:0,b:0,a:1}),t.a=Qs(t.a)),t}function Rc(e){return e.charAt(0)===`r`?Ac(e):xc(e)}var zc=class e{constructor(t){if(t instanceof e)return t;let n=typeof t,r;n===`object`?r=Lc(t):n===`string`&&(r=sc(t)||Oc(t)||Rc(t)),this._rgb=r,this._valid=!!r}get valid(){return this._valid}get rgb(){var e=Ic(this._rgb);return e&&(e.a=$s(e.a)),e}set rgb(e){this._rgb=Lc(e)}rgbString(){return this._valid?jc(this._rgb):void 0}hexString(){return this._valid?lc(this._rgb):void 0}hslString(){return this._valid?Cc(this._rgb):void 0}mix(e,t){if(e){let n=this.rgb,r=e.rgb,i,a=t===i?.5:t,o=2*a-1,s=n.a-r.a,c=((o*s===-1?o:(o+s)/(1+o*s))+1)/2;i=1-c,n.r=255&c*n.r+i*r.r+.5,n.g=255&c*n.g+i*r.g+.5,n.b=255&c*n.b+i*r.b+.5,n.a=a*n.a+(1-a)*r.a,this.rgb=n}return this}interpolate(e,t){return e&&(this._rgb=Pc(this._rgb,e._rgb,t)),this}clone(){return new e(this.rgb)}alpha(e){return this._rgb.a=Qs(e),this}clearer(e){let t=this._rgb;return t.a*=1-e,this}greyscale(){let e=this._rgb;return e.r=e.g=e.b=Ys(e.r*.3+e.g*.59+e.b*.11),this}opaquer(e){let t=this._rgb;return t.a*=1+e,this}negate(){let e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return Fc(this._rgb,2,e),this}darken(e){return Fc(this._rgb,2,-e),this}saturate(e){return Fc(this._rgb,1,e),this}desaturate(e){return Fc(this._rgb,1,-e),this}rotate(e){return Sc(this._rgb,e),this}};function Bc(){}var Vc=(()=>{let e=0;return()=>e++})();function Hc(e){return e==null}function Uc(e){if(Array.isArray&&Array.isArray(e))return!0;let t=Object.prototype.toString.call(e);return t.slice(0,7)===`[object`&&t.slice(-6)===`Array]`}function Wc(e){return e!==null&&Object.prototype.toString.call(e)===`[object Object]`}function Gc(e){return(typeof e==`number`||e instanceof Number)&&isFinite(+e)}function Kc(e,t){return Gc(e)?e:t}function qc(e,t){return e===void 0?t:e}var Jc=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100:+e/t,Yc=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100*t:+e;function Xc(e,t,n){if(e&&typeof e.call==`function`)return e.apply(n,t)}function Zc(e,t,n,r){let i,a,o;if(Uc(e))if(a=e.length,r)for(i=a-1;i>=0;i--)t.call(n,e[i],i);else for(i=0;ie,x:e=>e.x,y:e=>e.y};function ol(e){let t=e.split(`.`),n=[],r=``;for(let e of t)r+=e,r.endsWith(`\\`)?r=r.slice(0,-1)+`.`:(n.push(r),r=``);return n}function sl(e){let t=ol(e);return e=>{for(let n of t){if(n===``)break;e&&=e[n]}return e}}function cl(e,t){return(al[t]||(al[t]=sl(t)))(e)}function ll(e){return e.charAt(0).toUpperCase()+e.slice(1)}var ul=e=>e!==void 0,dl=e=>typeof e==`function`,fl=(e,t)=>{if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0};function pl(e){return e.type===`mouseup`||e.type===`click`||e.type===`contextmenu`}var ml=Math.PI,hl=2*ml,gl=hl+ml,_l=1/0,vl=ml/180,yl=ml/2,bl=ml/4,xl=ml*2/3,Sl=Math.log10,Cl=Math.sign;function wl(e,t,n){return Math.abs(e-t)e-t).pop(),t}function Dl(e){return typeof e==`symbol`||typeof e==`object`&&!!e&&!(Symbol.toPrimitive in e||`toString`in e||`valueOf`in e)}function Ol(e){return!Dl(e)&&!isNaN(parseFloat(e))&&isFinite(e)}function kl(e,t){let n=Math.round(e);return n-t<=e&&n+t>=e}function Al(e,t,n){let r,i,a;for(r=0,i=e.length;rc&&l=Math.min(t,n)-r&&e<=Math.max(t,n)+r}function Hl(e,t,n){n||=(n=>e[n]1;)a=i+r>>1,n(a)?i=a:r=a;return{lo:i,hi:r}}var Ul=(e,t,n,r)=>Hl(e,n,r?r=>{let i=e[r][t];return ie[r][t]Hl(e,n,r=>e[r][t]>=n);function Gl(e,t,n){let r=0,i=e.length;for(;rr&&e[i-1]>n;)i--;return r>0||i{let n=`_onData`+ll(t),r=e[t];Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value(...t){let i=r.apply(this,t);return e._chartjs.listeners.forEach(e=>{typeof e[n]==`function`&&e[n](...t)}),i}})})}function Jl(e,t){let n=e._chartjs;if(!n)return;let r=n.listeners,i=r.indexOf(t);i!==-1&&r.splice(i,1),!(r.length>0)&&(Kl.forEach(t=>{delete e[t]}),delete e._chartjs)}function Yl(e){let t=new Set(e);return t.size===e.length?e:Array.from(t)}var Xl=function(){return typeof window>`u`?function(e){return e()}:window.requestAnimationFrame}();function Zl(e,t){let n=[],r=!1;return function(...i){n=i,r||(r=!0,Xl.call(window,()=>{r=!1,e.apply(t,n)}))}}function Ql(e,t){let n;return function(...r){return t?(clearTimeout(n),n=setTimeout(e,t,r)):e.apply(this,r),t}}var $l=e=>e===`start`?`left`:e===`end`?`right`:`center`,eu=(e,t,n)=>e===`start`?t:e===`end`?n:(t+n)/2,tu=(e,t,n,r)=>e===(r?`left`:`right`)?n:e===`center`?(t+n)/2:t;function nu(e,t,n){let r=t.length,i=0,a=r;if(e._sorted){let{iScale:o,vScale:s,_parsed:c}=e,l=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null,u=o.axis,{min:d,max:f,minDefined:p,maxDefined:m}=o.getUserBounds();if(p){if(i=Math.min(Ul(c,u,d).lo,n?r:Ul(t,u,o.getPixelForValue(d)).lo),l){let e=c.slice(0,i+1).reverse().findIndex(e=>!Hc(e[s.axis]));i-=Math.max(0,e)}i=zl(i,0,r-1)}if(m){let e=Math.max(Ul(c,o.axis,f,!0).hi+1,n?0:Ul(t,u,o.getPixelForValue(f),!0).hi+1);if(l){let t=c.slice(e-1).findIndex(e=>!Hc(e[s.axis]));e+=Math.max(0,t)}a=zl(e,i,r)-i}else a=r-i}return{start:i,count:a}}function ru(e){let{xScale:t,yScale:n,_scaleRanges:r}=e,i={xmin:t.min,xmax:t.max,ymin:n.min,ymax:n.max};if(!r)return e._scaleRanges=i,!0;let a=r.xmin!==t.min||r.xmax!==t.max||r.ymin!==n.min||r.ymax!==n.max;return Object.assign(r,i),a}var iu=e=>e===0||e===1,au=(e,t,n)=>-(2**(10*--e)*Math.sin((e-t)*hl/n)),ou=(e,t,n)=>2**(-10*e)*Math.sin((e-t)*hl/n)+1,su={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>--e*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-(--e*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>--e*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>-Math.cos(e*yl)+1,easeOutSine:e=>Math.sin(e*yl),easeInOutSine:e=>-.5*(Math.cos(ml*e)-1),easeInExpo:e=>e===0?0:2**(10*(e-1)),easeOutExpo:e=>e===1?1:-(2**(-10*e))+1,easeInOutExpo:e=>iu(e)?e:e<.5?.5*2**(10*(e*2-1)):.5*(-(2**(-10*(e*2-1)))+2),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1- --e*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>iu(e)?e:au(e,.075,.3),easeOutElastic:e=>iu(e)?e:ou(e,.075,.3),easeInOutElastic(e){let t=.1125,n=.45;return iu(e)?e:e<.5?.5*au(e*2,t,n):.5+.5*ou(e*2-1,t,n)},easeInBack(e){return e*e*(2.70158*e-1.70158)},easeOutBack(e){return--e*e*(2.70158*e+1.70158)+1},easeInOutBack(e){let t=1.70158;return(e/=.5)<1?.5*(e*e*(((t*=1.525)+1)*e-t)):.5*((e-=2)*e*(((t*=1.525)+1)*e+t)+2)},easeInBounce:e=>1-su.easeOutBounce(1-e),easeOutBounce(e){let t=7.5625,n=2.75;return e<1/n?t*e*e:e<2/n?t*(e-=1.5/n)*e+.75:e<2.5/n?t*(e-=2.25/n)*e+.9375:t*(e-=2.625/n)*e+.984375},easeInOutBounce:e=>e<.5?su.easeInBounce(e*2)*.5:su.easeOutBounce(e*2-1)*.5+.5};function cu(e){if(e&&typeof e==`object`){let t=e.toString();return t===`[object CanvasPattern]`||t===`[object CanvasGradient]`}return!1}function lu(e){return cu(e)?e:new zc(e)}function uu(e){return cu(e)?e:new zc(e).saturate(.5).darken(.1).hexString()}var du=[`x`,`y`,`borderWidth`,`radius`,`tension`],fu=[`color`,`borderColor`,`backgroundColor`];function pu(e){e.set(`animation`,{delay:void 0,duration:1e3,easing:`easeOutQuart`,fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe(`animation`,{_fallback:!1,_indexable:!1,_scriptable:e=>e!==`onProgress`&&e!==`onComplete`&&e!==`fn`}),e.set(`animations`,{colors:{type:`color`,properties:fu},numbers:{type:`number`,properties:du}}),e.describe(`animations`,{_fallback:`animation`}),e.set(`transitions`,{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:`transparent`},visible:{type:`boolean`,duration:0}}},hide:{animations:{colors:{to:`transparent`},visible:{type:`boolean`,easing:`linear`,fn:e=>e|0}}}})}function mu(e){e.set(`layout`,{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}var hu=new Map;function gu(e,t){t||={};let n=e+JSON.stringify(t),r=hu.get(n);return r||(r=new Intl.NumberFormat(e,t),hu.set(n,r)),r}function _u(e,t,n){return gu(t,n).format(e)}var vu={values(e){return Uc(e)?e:``+e},numeric(e,t,n){if(e===0)return`0`;let r=this.chart.options.locale,i,a=e;if(n.length>1){let t=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(t<1e-4||t>0x38d7ea4c68000)&&(i=`scientific`),a=yu(e,n)}let o=Sl(Math.abs(a)),s=isNaN(o)?1:Math.max(Math.min(-1*Math.floor(o),20),0),c={notation:i,minimumFractionDigits:s,maximumFractionDigits:s};return Object.assign(c,this.options.ticks.format),_u(e,r,c)},logarithmic(e,t,n){if(e===0)return`0`;let r=n[t].significand||e/10**Math.floor(Sl(e));return[1,2,3,5,10,15].includes(r)||t>.8*n.length?vu.numeric.call(this,e,t,n):``}};function yu(e,t){let n=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(n)>=1&&e!==Math.floor(e)&&(n=e-Math.floor(e)),n}var bu={formatters:vu};function xu(e){e.set(`scale`,{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:`ticks`,clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(e,t)=>t.lineWidth,tickColor:(e,t)=>t.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:``,padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:``,padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:bu.formatters.values,minor:{},major:{},align:`center`,crossAlign:`near`,showLabelBackdrop:!1,backdropColor:`rgba(255, 255, 255, 0.75)`,backdropPadding:2}}),e.route(`scale.ticks`,`color`,``,`color`),e.route(`scale.grid`,`color`,``,`borderColor`),e.route(`scale.border`,`color`,``,`borderColor`),e.route(`scale.title`,`color`,``,`color`),e.describe(`scale`,{_fallback:!1,_scriptable:e=>!e.startsWith(`before`)&&!e.startsWith(`after`)&&e!==`callback`&&e!==`parser`,_indexable:e=>e!==`borderDash`&&e!==`tickBorderDash`&&e!==`dash`}),e.describe(`scales`,{_fallback:`scale`}),e.describe(`scale.ticks`,{_scriptable:e=>e!==`backdropPadding`&&e!==`callback`,_indexable:e=>e!==`backdropPadding`})}var Su=Object.create(null),Cu=Object.create(null);function wu(e,t){if(!t)return e;let n=t.split(`.`);for(let t=0,r=n.length;te.chart.platform.getDevicePixelRatio(),this.elements={},this.events=[`mousemove`,`mouseout`,`click`,`touchstart`,`touchmove`],this.font={family:`'Helvetica Neue', 'Helvetica', 'Arial', sans-serif`,size:12,style:`normal`,lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(e,t)=>uu(t.backgroundColor),this.hoverBorderColor=(e,t)=>uu(t.borderColor),this.hoverColor=(e,t)=>uu(t.color),this.indexAxis=`x`,this.interaction={mode:`nearest`,intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(e),this.apply(t)}set(e,t){return Tu(this,e,t)}get(e){return wu(this,e)}describe(e,t){return Tu(Cu,e,t)}override(e,t){return Tu(Su,e,t)}route(e,t,n,r){let i=wu(this,e),a=wu(this,n),o=`_`+t;Object.defineProperties(i,{[o]:{value:i[t],writable:!0},[t]:{enumerable:!0,get(){let e=this[o],t=a[r];return Wc(e)?Object.assign({},t,e):qc(e,t)},set(e){this[o]=e}}})}apply(e){e.forEach(e=>e(this))}}({_scriptable:e=>!e.startsWith(`on`),_indexable:e=>e!==`events`,hover:{_fallback:`interaction`},interaction:{_scriptable:!1,_indexable:!1}},[pu,mu,xu]);function Du(e){return!e||Hc(e.size)||Hc(e.family)?null:(e.style?e.style+` `:``)+(e.weight?e.weight+` `:``)+e.size+`px `+e.family}function Ou(e,t,n,r,i){let a=t[i];return a||(a=t[i]=e.measureText(i).width,n.push(i)),a>r&&(r=a),r}function ku(e,t,n,r){r||={};let i=r.data=r.data||{},a=r.garbageCollect=r.garbageCollect||[];r.font!==t&&(i=r.data={},a=r.garbageCollect=[],r.font=t),e.save(),e.font=t;let o=0,s=n.length,c,l,u,d,f;for(c=0;cn.length){for(c=0;c0&&e.stroke()}}function Pu(e,t,n){return n||=.5,!t||e&&e.x>t.left-n&&e.xt.top-n&&e.y0&&a.strokeColor!==``,c,l;for(e.save(),e.font=i.string,zu(e,a),c=0;c+e||0;function Ju(e,t){let n={},r=Wc(t),i=r?Object.keys(t):t,a=Wc(e)?r?n=>qc(e[n],e[t[n]]):t=>e[t]:()=>e;for(let e of i)n[e]=qu(a(e));return n}function Yu(e){return Ju(e,{top:`y`,right:`x`,bottom:`y`,left:`x`})}function Xu(e){return Ju(e,[`topLeft`,`topRight`,`bottomLeft`,`bottomRight`])}function Zu(e){let t=Yu(e);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function Qu(e,t){e||={},t||=Eu.font;let n=qc(e.size,t.size);typeof n==`string`&&(n=parseInt(n,10));let r=qc(e.style,t.style);r&&!(``+r).match(Gu)&&(console.warn(`Invalid font style specified: "`+r+`"`),r=void 0);let i={family:qc(e.family,t.family),lineHeight:Ku(qc(e.lineHeight,t.lineHeight),n),size:n,style:r,weight:qc(e.weight,t.weight),string:``};return i.string=Du(i),i}function $u(e,t,n,r){let i=!0,a,o,s;for(a=0,o=e.length;an&&e===0?0:e+t;return{min:o(r,-Math.abs(a)),max:o(i,a)}}function td(e,t){return Object.assign(Object.create(e),t)}function nd(e,t=[``],n,r,i=()=>e[0]){let a=n||e;return r===void 0&&(r=vd(`_fallback`,e)),new Proxy({[Symbol.toStringTag]:`Object`,_cacheable:!0,_scopes:e,_rootScopes:a,_fallback:r,_getTarget:i,override:n=>nd([n,...e],t,a,r)},{deleteProperty(t,n){return delete t[n],delete t._keys,delete e[0][n],!0},get(n,r){return sd(n,r,()=>_d(r,t,e,n))},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(e._scopes[0],t)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(e,t){return yd(e).includes(t)},ownKeys(e){return yd(e)},set(e,t,n){let r=e._storage||=i();return e[t]=r[t]=n,delete e._keys,!0}})}function rd(e,t,n,r){let i={_cacheable:!1,_proxy:e,_context:t,_subProxy:n,_stack:new Set,_descriptors:id(e,r),setContext:t=>rd(e,t,n,r),override:i=>rd(e.override(i),t,n,r)};return new Proxy(i,{deleteProperty(t,n){return delete t[n],delete e[n],!0},get(e,t,n){return sd(e,t,()=>cd(e,t,n))},getOwnPropertyDescriptor(t,n){return t._descriptors.allKeys?Reflect.has(e,n)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,n)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(t,n){return Reflect.has(e,n)},ownKeys(){return Reflect.ownKeys(e)},set(t,n,r){return e[n]=r,delete t[n],!0}})}function id(e,t={scriptable:!0,indexable:!0}){let{_scriptable:n=t.scriptable,_indexable:r=t.indexable,_allKeys:i=t.allKeys}=e;return{allKeys:i,scriptable:n,indexable:r,isScriptable:dl(n)?n:()=>n,isIndexable:dl(r)?r:()=>r}}var ad=(e,t)=>e?e+ll(t):t,od=(e,t)=>Wc(t)&&e!==`adapters`&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function sd(e,t,n){if(Object.prototype.hasOwnProperty.call(e,t)||t===`constructor`)return e[t];let r=n();return e[t]=r,r}function cd(e,t,n){let{_proxy:r,_context:i,_subProxy:a,_descriptors:o}=e,s=r[t];return dl(s)&&o.isScriptable(t)&&(s=ld(t,s,e,n)),Uc(s)&&s.length&&(s=ud(t,s,e,o.isIndexable)),od(t,s)&&(s=rd(s,i,a&&a[t],o)),s}function ld(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_stack:s}=n;if(s.has(e))throw Error(`Recursion detected: `+Array.from(s).join(`->`)+`->`+e);s.add(e);let c=t(a,o||r);return s.delete(e),od(e,c)&&(c=md(i._scopes,i,e,c)),c}function ud(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_descriptors:s}=n;if(a.index!==void 0&&r(e))return t[a.index%t.length];if(Wc(t[0])){let n=t,r=i._scopes.filter(e=>e!==n);t=[];for(let c of n){let n=md(r,i,e,c);t.push(rd(n,a,o&&o[e],s))}}return t}function dd(e,t,n){return dl(e)?e(t,n):e}var fd=(e,t)=>e===!0?t:typeof e==`string`?cl(t,e):void 0;function pd(e,t,n,r,i){for(let a of t){let t=fd(n,a);if(t){e.add(t);let a=dd(t._fallback,n,i);if(a!==void 0&&a!==n&&a!==r)return a}else if(t===!1&&r!==void 0&&n!==r)return null}return!1}function md(e,t,n,r){let i=t._rootScopes,a=dd(t._fallback,n,r),o=[...e,...i],s=new Set;s.add(r);let c=hd(s,o,n,a||n,r);return c===null||a!==void 0&&a!==n&&(c=hd(s,o,a,c,r),c===null)?!1:nd(Array.from(s),[``],i,a,()=>gd(t,n,r))}function hd(e,t,n,r,i){for(;n;)n=pd(e,t,n,r,i);return n}function gd(e,t,n){let r=e._getTarget();t in r||(r[t]={});let i=r[t];return Uc(i)&&Wc(n)?n:i||{}}function _d(e,t,n,r){let i;for(let a of t)if(i=vd(ad(a,e),n),i!==void 0)return od(e,i)?md(n,r,e,i):i}function vd(e,t){for(let n of t){if(!n)continue;let t=n[e];if(t!==void 0)return t}}function yd(e){let t=e._keys;return t||=e._keys=bd(e._scopes),t}function bd(e){let t=new Set;for(let n of e)for(let e of Object.keys(n).filter(e=>!e.startsWith(`_`)))t.add(e);return Array.from(t)}function xd(e,t,n,r){let{iScale:i}=e,{key:a=`r`}=this._parsing,o=Array(r),s,c,l,u;for(s=0,c=r;ste===`x`?`y`:`x`;function Td(e,t,n,r){let i=e.skip?t:e,a=t,o=n.skip?t:n,s=Fl(a,i),c=Fl(o,a),l=s/(s+c),u=c/(s+c);l=isNaN(l)?0:l,u=isNaN(u)?0:u;let d=r*l,f=r*u;return{previous:{x:a.x-d*(o.x-i.x),y:a.y-d*(o.y-i.y)},next:{x:a.x+f*(o.x-i.x),y:a.y+f*(o.y-i.y)}}}function Ed(e,t,n){let r=e.length,i,a,o,s,c,l=Cd(e,0);for(let u=0;u!e.skip)),t.cubicInterpolationMode===`monotone`)Od(e,i);else{let n=r?e[e.length-1]:e[0];for(a=0,o=e.length;ae.ownerDocument.defaultView.getComputedStyle(e,null);function Id(e,t){return Fd(e).getPropertyValue(t)}var Ld=[`top`,`right`,`bottom`,`left`];function Rd(e,t,n){let r={};n=n?`-`+n:``;for(let i=0;i<4;i++){let a=Ld[i];r[a]=parseFloat(e[t+`-`+a+n])||0}return r.width=r.left+r.right,r.height=r.top+r.bottom,r}var zd=(e,t,n)=>(e>0||t>0)&&(!n||!n.shadowRoot);function Bd(e,t){let n=e.touches,r=n&&n.length?n[0]:e,{offsetX:i,offsetY:a}=r,o=!1,s,c;if(zd(i,a,e.target))s=i,c=a;else{let e=t.getBoundingClientRect();s=r.clientX-e.left,c=r.clientY-e.top,o=!0}return{x:s,y:c,box:o}}function Vd(e,t){if(`native`in e)return e;let{canvas:n,currentDevicePixelRatio:r}=t,i=Fd(n),a=i.boxSizing===`border-box`,o=Rd(i,`padding`),s=Rd(i,`border`,`width`),{x:c,y:l,box:u}=Bd(e,n),d=o.left+(u&&s.left),f=o.top+(u&&s.top),{width:p,height:m}=t;return a&&(p-=o.width+s.width,m-=o.height+s.height),{x:Math.round((c-d)/p*n.width/r),y:Math.round((l-f)/m*n.height/r)}}function Hd(e,t,n){let r,i;if(t===void 0||n===void 0){let a=e&&Nd(e);if(!a)t=e.clientWidth,n=e.clientHeight;else{let e=a.getBoundingClientRect(),o=Fd(a),s=Rd(o,`border`,`width`),c=Rd(o,`padding`);t=e.width-c.width-s.width,n=e.height-c.height-s.height,r=Pd(o.maxWidth,a,`clientWidth`),i=Pd(o.maxHeight,a,`clientHeight`)}}return{width:t,height:n,maxWidth:r||_l,maxHeight:i||_l}}var Ud=e=>Math.round(e*10)/10;function Wd(e,t,n,r){let i=Fd(e),a=Rd(i,`margin`),o=Pd(i.maxWidth,e,`clientWidth`)||_l,s=Pd(i.maxHeight,e,`clientHeight`)||_l,c=Hd(e,t,n),{width:l,height:u}=c;if(i.boxSizing===`content-box`){let e=Rd(i,`border`,`width`),t=Rd(i,`padding`);l-=t.width+e.width,u-=t.height+e.height}return l=Math.max(0,l-a.width),u=Math.max(0,r?l/r:u-a.height),l=Ud(Math.min(l,o,c.maxWidth)),u=Ud(Math.min(u,s,c.maxHeight)),l&&!u&&(u=Ud(l/2)),(t!==void 0||n!==void 0)&&r&&c.height&&u>c.height&&(u=c.height,l=Ud(Math.floor(u*r))),{width:l,height:u}}function Gd(e,t,n){let r=t||1,i=Ud(e.height*r),a=Ud(e.width*r);e.height=Ud(e.height),e.width=Ud(e.width);let o=e.canvas;return o.style&&(n||!o.style.height&&!o.style.width)&&(o.style.height=`${e.height}px`,o.style.width=`${e.width}px`),e.currentDevicePixelRatio!==r||o.height!==i||o.width!==a?(e.currentDevicePixelRatio=r,o.height=i,o.width=a,e.ctx.setTransform(r,0,0,r,0,0),!0):!1}var Kd=function(){let e=!1;try{let t={get passive(){return e=!0,!1}};Md()&&(window.addEventListener(`test`,null,t),window.removeEventListener(`test`,null,t))}catch{}return e}();function qd(e,t){let n=Id(e,t),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?+r[1]:void 0}function Jd(e,t,n,r){return{x:e.x+n*(t.x-e.x),y:e.y+n*(t.y-e.y)}}function Yd(e,t,n,r){return{x:e.x+n*(t.x-e.x),y:r===`middle`?n<.5?e.y:t.y:r===`after`?n<1?e.y:t.y:n>0?t.y:e.y}}function Xd(e,t,n,r){let i={x:e.cp2x,y:e.cp2y},a={x:t.cp1x,y:t.cp1y},o=Jd(e,i,n),s=Jd(i,a,n),c=Jd(a,t,n);return Jd(Jd(o,s,n),Jd(s,c,n),n)}var Zd=function(e,t){return{x(n){return e+e+t-n},setWidth(e){t=e},textAlign(e){return e===`center`?e:e===`right`?`left`:`right`},xPlus(e,t){return e-t},leftForLtr(e,t){return e-t}}},Qd=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,t){return e+t},leftForLtr(e,t){return e}}};function $d(e,t,n){return e?Zd(t,n):Qd()}function ef(e,t){let n,r;(t===`ltr`||t===`rtl`)&&(n=e.canvas.style,r=[n.getPropertyValue(`direction`),n.getPropertyPriority(`direction`)],n.setProperty(`direction`,t,`important`),e.prevTextDirection=r)}function tf(e,t){t!==void 0&&(delete e.prevTextDirection,e.canvas.style.setProperty(`direction`,t[0],t[1]))}function nf(e){return e===`angle`?{between:Rl,compare:Il,normalize:Ll}:{between:Vl,compare:(e,t)=>e-t,normalize:e=>e}}function rf({start:e,end:t,count:n,loop:r,style:i}){return{start:e%n,end:t%n,loop:r&&(t-e+1)%n===0,style:i}}function af(e,t,n){let{property:r,start:i,end:a}=n,{between:o,normalize:s}=nf(r),c=t.length,{start:l,end:u,loop:d}=e,f,p;if(d){for(l+=c,u+=c,f=0,p=c;fc(i,y,_)&&s(i,y)!==0,x=()=>s(a,_)===0||c(a,y,_),S=()=>h||b(),C=()=>!h||x();for(let e=u,n=u;e<=d;++e)v=t[e%o],!v.skip&&(_=l(v[r]),_!==y&&(h=c(_,i,a),g===null&&S()&&(g=s(_,i)===0?e:n),g!==null&&C()&&(m.push(rf({start:g,end:e,loop:f,count:o,style:p})),g=null),n=e,y=_));return g!==null&&m.push(rf({start:g,end:d,loop:f,count:o,style:p})),m}function sf(e,t){let n=[],r=e.segments;for(let i=0;ii&&e[a%t].skip;)a--;return a%=t,{start:i,end:a}}function lf(e,t,n,r){let i=e.length,a=[],o=t,s=e[t],c;for(c=t+1;c<=n;++c){let n=e[c%i];n.skip||n.stop?s.skip||(r=!1,a.push({start:t%i,end:(c-1)%i,loop:r}),t=o=n.stop?c:null):(o=c,s.skip&&(t=c)),s=n}return o!==null&&a.push({start:t%i,end:o%i,loop:r}),a}function uf(e,t){let n=e.points,r=e.options.spanGaps,i=n.length;if(!i)return[];let a=!!e._loop,{start:o,end:s}=cf(n,i,a,r);return r===!0?df(e,[{start:o,end:s,loop:a}],n,t):df(e,lf(n,o,sr({chart:e,initial:t.initial,numSteps:a,currentStep:Math.min(n-t.start,a)}))}_refresh(){this._request||=(this._running=!0,Xl.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let t=0;this._charts.forEach((n,r)=>{if(!n.running||!n.items.length)return;let i=n.items,a=i.length-1,o=!1,s;for(;a>=0;--a)s=i[a],s._active?(s._total>n.duration&&(n.duration=s._total),s.tick(e),o=!0):(i[a]=i[i.length-1],i.pop());o&&(r.draw(),this._notify(r,n,e,`progress`)),i.length||(n.running=!1,this._notify(r,n,e,`complete`),n.initial=!1),t+=i.length}),this._lastDate=e,t===0&&(this._running=!1)}_getAnims(e){let t=this._charts,n=t.get(e);return n||(n={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},t.set(e,n)),n}listen(e,t,n){this._getAnims(e).listeners[t].push(n)}add(e,t){!t||!t.length||this._getAnims(e).items.push(...t)}has(e){return this._getAnims(e).items.length>0}start(e){let t=this._charts.get(e);t&&(t.running=!0,t.start=Date.now(),t.duration=t.items.reduce((e,t)=>Math.max(e,t._duration),0),this._refresh())}running(e){if(!this._running)return!1;let t=this._charts.get(e);return!(!t||!t.running||!t.items.length)}stop(e){let t=this._charts.get(e);if(!t||!t.items.length)return;let n=t.items,r=n.length-1;for(;r>=0;--r)n[r].cancel();t.items=[],this._notify(e,t,Date.now(),`complete`)}remove(e){return this._charts.delete(e)}},yf=`transparent`,bf={boolean(e,t,n){return n>.5?t:e},color(e,t,n){let r=lu(e||yf),i=r.valid&&lu(t||yf);return i&&i.valid?i.mix(r,n).hexString():t},number(e,t,n){return e+(t-e)*n}},xf=class{constructor(e,t,n,r){let i=t[n];r=$u([e.to,r,i,e.from]);let a=$u([e.from,i,r]);this._active=!0,this._fn=e.fn||bf[e.type||typeof a],this._easing=su[e.easing]||su.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=t,this._prop=n,this._from=a,this._to=r,this._promises=void 0}active(){return this._active}update(e,t,n){if(this._active){this._notify(!1);let r=this._target[this._prop],i=n-this._start,a=this._duration-i;this._start=n,this._duration=Math.floor(Math.max(a,e.duration)),this._total+=i,this._loop=!!e.loop,this._to=$u([e.to,t,r,e.from]),this._from=$u([e.from,r,t])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){let t=e-this._start,n=this._duration,r=this._prop,i=this._from,a=this._loop,o=this._to,s;if(this._active=i!==o&&(a||t1?2-s:s,s=this._easing(Math.min(1,Math.max(0,s))),this._target[r]=this._fn(i,o,s)}wait(){let e=this._promises||=[];return new Promise((t,n)=>{e.push({res:t,rej:n})})}_notify(e){let t=e?`res`:`rej`,n=this._promises||[];for(let e=0;e{let i=e[r];if(!Wc(i))return;let a={};for(let e of t)a[e]=i[e];(Uc(i.properties)&&i.properties||[r]).forEach(e=>{(e===r||!n.has(e))&&n.set(e,a)})})}_animateOptions(e,t){let n=t.options,r=wf(e,n);if(!r)return[];let i=this._createAnimations(r,n);return n.$shared&&Cf(e.options.$animations,n).then(()=>{e.options=n},()=>{}),i}_createAnimations(e,t){let n=this._properties,r=[],i=e.$animations||={},a=Object.keys(t),o=Date.now(),s;for(s=a.length-1;s>=0;--s){let c=a[s];if(c.charAt(0)===`$`)continue;if(c===`options`){r.push(...this._animateOptions(e,t));continue}let l=t[c],u=i[c],d=n.get(c);if(u)if(d&&u.active()){u.update(d,l,o);continue}else u.cancel();if(!d||!d.duration){e[c]=l;continue}i[c]=u=new xf(d,e,c,l),r.push(u)}return r}update(e,t){if(this._properties.size===0){Object.assign(e,t);return}let n=this._createAnimations(e,t);if(n.length)return vf.add(this._chart,n),!0}};function Cf(e,t){let n=[],r=Object.keys(t);for(let t=0;t0||!n&&t<0)return i.index}return null}function If(e,t){let{chart:n,_cachedMeta:r}=e,i=n._stacks||={},{iScale:a,vScale:o,index:s}=r,c=a.axis,l=o.axis,u=Mf(a,o,r),d=t.length,f;for(let e=0;en[e].axis===t).shift()}function Rf(e,t){return td(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:`default`,type:`dataset`})}function zf(e,t,n){return td(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:n,index:t,mode:`default`,type:`data`})}function Bf(e,t){let n=e.controller.index,r=e.vScale&&e.vScale.axis;if(r){t||=e._parsed;for(let e of t){let t=e._stacks;if(!t||t[r]===void 0||t[r][n]===void 0)return;delete t[r][n],t[r]._visualValues!==void 0&&t[r]._visualValues[n]!==void 0&&delete t[r]._visualValues[n]}}}var Vf=e=>e===`reset`||e===`none`,Hf=(e,t)=>t?e:Object.assign({},e),Uf=(e,t,n)=>e&&!t.hidden&&t._stacked&&{keys:Of(n,!0),values:null},Wf=class{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(e,t){this.chart=e,this._ctx=e.ctx,this.index=t,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){let e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=jf(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled(`filler`)&&console.warn(`Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options`)}updateIndex(e){this.index!==e&&Bf(this._cachedMeta),this.index=e}linkScales(){let e=this.chart,t=this._cachedMeta,n=this.getDataset(),r=(e,t,n,r)=>e===`x`?t:e===`r`?r:n,i=t.xAxisID=qc(n.xAxisID,Lf(e,`x`)),a=t.yAxisID=qc(n.yAxisID,Lf(e,`y`)),o=t.rAxisID=qc(n.rAxisID,Lf(e,`r`)),s=t.indexAxis,c=t.iAxisID=r(s,i,a,o),l=t.vAxisID=r(s,a,i,o);t.xScale=this.getScaleForId(i),t.yScale=this.getScaleForId(a),t.rScale=this.getScaleForId(o),t.iScale=this.getScaleForId(c),t.vScale=this.getScaleForId(l)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){let t=this._cachedMeta;return e===t.iScale?t.vScale:t.iScale}reset(){this._update(`reset`)}_destroy(){let e=this._cachedMeta;this._data&&Jl(this._data,this),e._stacked&&Bf(e)}_dataCheck(){let e=this.getDataset(),t=e.data||=[],n=this._data;if(Wc(t)){let e=this._cachedMeta;this._data=Af(t,e)}else if(n!==t){if(n){Jl(n,this);let e=this._cachedMeta;Bf(e),e._parsed=[]}t&&Object.isExtensible(t)&&ql(t,this),this._syncList=[],this._data=t}}addElements(){let e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){let t=this._cachedMeta,n=this.getDataset(),r=!1;this._dataCheck();let i=t._stacked;t._stacked=jf(t.vScale,t),t.stack!==n.stack&&(r=!0,Bf(t),t.stack=n.stack),this._resyncElements(e),(r||i!==t._stacked)&&(If(this,t._parsed),t._stacked=jf(t.vScale,t))}configure(){let e=this.chart.config,t=e.datasetScopeKeys(this._type),n=e.getOptionScopes(this.getDataset(),t,!0);this.options=e.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,t){let{_cachedMeta:n,_data:r}=this,{iScale:i,_stacked:a}=n,o=i.axis,s=e===0&&t===r.length||n._sorted,c=e>0&&n._parsed[e-1],l,u,d;if(this._parsing===!1)n._parsed=r,n._sorted=!0,d=r;else{d=Uc(r[e])?this.parseArrayData(n,r,e,t):Wc(r[e])?this.parseObjectData(n,r,e,t):this.parsePrimitiveData(n,r,e,t);let i=()=>u[o]===null||c&&u[o]t||u=0;--d)if(!p()){this.updateRangeFromParsed(c,e,f,s);break}}return c}getAllParsedValues(e){let t=this._cachedMeta._parsed,n=[],r,i,a;for(r=0,i=t.length;r=0&&ethis.getContext(n,r,t),u);return p.$shared&&(p.$shared=s,i[a]=Object.freeze(Hf(p,s))),p}_resolveAnimations(e,t,n){let r=this.chart,i=this._cachedDataOpts,a=`animation-${t}`,o=i[a];if(o)return o;let s;if(r.options.animation!==!1){let r=this.chart.config,i=r.datasetAnimationScopeKeys(this._type,t),a=r.getOptionScopes(this.getDataset(),i);s=r.createResolver(a,this.getContext(e,n,t))}let c=new Sf(r,s&&s.animations);return s&&s._cacheable&&(i[a]=Object.freeze(c)),c}getSharedOptions(e){if(e.$shared)return this._sharedOptions||=Object.assign({},e)}includeOptions(e,t){return!t||Vf(e)||this.chart._animationsDisabled}_getSharedOptions(e,t){let n=this.resolveDataElementOptions(e,t),r=this._sharedOptions,i=this.getSharedOptions(n),a=this.includeOptions(t,i)||i!==r;return this.updateSharedOptions(i,t,n),{sharedOptions:i,includeOptions:a}}updateElement(e,t,n,r){Vf(r)?Object.assign(e,n):this._resolveAnimations(t,r).update(e,n)}updateSharedOptions(e,t,n){e&&!Vf(t)&&this._resolveAnimations(void 0,t).update(e,n)}_setStyle(e,t,n,r){e.active=r;let i=this.getStyle(t,r);this._resolveAnimations(t,n,r).update(e,{options:!r&&this.getSharedOptions(i)||i})}removeHoverStyle(e,t,n){this._setStyle(e,n,`active`,!1)}setHoverStyle(e,t,n){this._setStyle(e,n,`active`,!0)}_removeDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!1)}_setDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!0)}_resyncElements(e){let t=this._data,n=this._cachedMeta.data;for(let[e,t,n]of this._syncList)this[e](t,n);this._syncList=[];let r=n.length,i=t.length,a=Math.min(i,r);a&&this.parse(0,a),i>r?this._insertElements(r,i-r,e):i{for(e.length+=t,o=e.length-1;o>=a;o--)e[o]=e[o-t]};for(s(i),o=e;oe-t))}return e._cache.$bar}function Kf(e){let t=e.iScale,n=Gf(t,e.type),r=t._length,i,a,o,s,c=()=>{o===32767||o===-32768||(ul(s)&&(r=Math.min(r,Math.abs(o-s)||r)),s=o)};for(i=0,a=n.length;i0?i[e-1]:null,s=eMath.abs(s)&&(c=s,l=o),t[n.axis]=l,t._custom={barStart:c,barEnd:l,start:i,end:a,min:o,max:s}}function Xf(e,t,n,r){return Uc(e)?Yf(e,t,n,r):t[n.axis]=n.parse(e,r),t}function Zf(e,t,n,r){let i=e.iScale,a=e.vScale,o=i.getLabels(),s=i===a,c=[],l,u,d,f;for(l=n,u=n+r;l=n?1:-1):Cl(e)}function ep(e){let t,n,r,i,a;return e.horizontal?(t=e.base>e.x,n=`left`,r=`right`):(t=e.basee.controller.options.grouped),i=n.options.stacked,a=[],o=this._cachedMeta.controller.getParsed(t),s=o&&o[n.axis],c=e=>{let t=e._parsed.find(e=>e[n.axis]===s),r=t&&t[e.vScale.axis];if(Hc(r)||isNaN(r))return!0};for(let n of r)if(!(t!==void 0&&c(n))&&((i===!1||a.indexOf(n.stack)===-1||i===void 0&&n.stack===void 0)&&a.push(n.stack),n.index===e))break;return a.length||a.push(void 0),a}_getStackCount(e){return this._getStacks(void 0,e).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){let e=this.chart.scales,t=this.chart.options.indexAxis;return Object.keys(e).filter(n=>e[n].axis===t).shift()}_getAxis(){let e={},t=this.getFirstScaleIdForIndexAxis();for(let n of this.chart.data.datasets)e[qc(this.chart.options.indexAxis===`x`?n.xAxisID:n.yAxisID,t)]=!0;return Object.keys(e)}_getStackIndex(e,t,n){let r=this._getStacks(e,n),i=t===void 0?-1:r.indexOf(t);return i===-1?r.length-1:i}_getRuler(){let e=this.options,t=this._cachedMeta,n=t.iScale,r=[],i,a;for(i=0,a=t.data.length;i=0;--n)t=Math.max(t,e[n].size(this.resolveDataElementOptions(n))/2);return t>0&&t}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart.data.labels||[],{xScale:r,yScale:i}=t,a=this.getParsed(e),o=r.getLabelForValue(a.x),s=i.getLabelForValue(a.y),c=a._custom;return{label:n[e]||``,value:`(`+o+`, `+s+(c?`, `+c:``)+`)`}}update(e){let t=this._cachedMeta.data;this.updateElements(t,0,t.length,e)}updateElements(e,t,n,r){let i=r===`reset`,{iScale:a,vScale:o}=this._cachedMeta,{sharedOptions:s,includeOptions:c}=this._getSharedOptions(t,r),l=a.axis,u=o.axis;for(let d=t;dRl(e,s,c,!0)?1:Math.max(t,t*n,r,r*n),m=(e,t,r)=>Rl(e,s,c,!0)?-1:Math.min(t,t*n,r,r*n),h=p(0,l,d),g=p(yl,u,f),_=m(ml,l,d),v=m(ml+yl,u,f);r=(h-_)/2,i=(g-v)/2,a=-(h+_)/2,o=-(g+v)/2}return{ratioX:r,ratioY:i,offsetX:a,offsetY:o}}var lp=class extends Wf{static id=`doughnut`;static defaults={datasetElementType:!1,dataElementType:`arc`,animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:`number`,properties:[`circumference`,`endAngle`,`innerRadius`,`outerRadius`,`startAngle`,`x`,`y`,`offset`,`borderWidth`,`spacing`]}},cutout:`50%`,rotation:0,circumference:360,radius:`100%`,spacing:0,indexAxis:`r`};static descriptors={_scriptable:e=>e!==`spacing`,_indexable:e=>e!==`spacing`&&!e.startsWith(`borderDash`)&&!e.startsWith(`hoverBorderDash`)};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){let t=e.data,{labels:{pointStyle:n,textAlign:r,color:i,useBorderRadius:a,borderRadius:o}}=e.legend.options;return t.labels.length&&t.datasets.length?t.labels.map((t,s)=>{let c=e.getDatasetMeta(0).controller.getStyle(s);return{text:t,fillStyle:c.backgroundColor,fontColor:i,hidden:!e.getDataVisibility(s),lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:c.borderWidth,strokeStyle:c.borderColor,textAlign:r,pointStyle:n,borderRadius:a&&(o||c.borderRadius),index:s}}):[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}}}};constructor(e,t){super(e,t),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,t){let n=this.getDataset().data,r=this._cachedMeta;if(this._parsing===!1)r._parsed=n;else{let i=e=>+n[e];if(Wc(n[e])){let{key:e=`value`}=this._parsing;i=t=>+cl(n[t],e)}let a,o;for(a=e,o=e+t;a0&&!isNaN(e)?Math.abs(e)/t*hl:0}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart,r=n.data.labels||[],i=_u(t._parsed[e],n.options.locale);return{label:r[e]||``,value:i}}getMaxBorderWidth(e){let t=0,n=this.chart,r,i,a,o,s;if(!e){for(r=0,i=n.data.datasets.length;r0&&this.getParsed(t-1);for(let n=0;n=_){v.skip=!0;continue}let b=this.getParsed(n),x=Hc(b[f]),S=v[d]=a.getPixelForValue(b[d],n),C=v[f]=i||x?o.getBasePixel():o.getPixelForValue(s?this.applyStack(o,b,s):b[f],n);v.skip=isNaN(S)||isNaN(C)||x,v.stop=n>0&&Math.abs(b[d]-y[d])>h,m&&(v.parsed=b,v.raw=c.data[n]),u&&(v.options=l||this.resolveDataElementOptions(n,p.active?`active`:r)),g||this.updateElement(p,n,v,r),y=b}}getMaxOverflow(){let e=this._cachedMeta,t=e.dataset,n=t.options&&t.options.borderWidth||0,r=e.data||[];if(!r.length)return n;let i=r[0].size(this.resolveDataElementOptions(0)),a=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(n,i,a)/2}draw(){let e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}},dp=class extends Wf{static id=`polarArea`;static defaults={dataElementType:`arc`,animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:`number`,properties:[`x`,`y`,`startAngle`,`endAngle`,`innerRadius`,`outerRadius`]}},indexAxis:`r`,startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){let t=e.data;if(t.labels.length&&t.datasets.length){let{labels:{pointStyle:n,color:r}}=e.legend.options;return t.labels.map((t,i)=>{let a=e.getDatasetMeta(0).controller.getStyle(i);return{text:t,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,fontColor:r,lineWidth:a.borderWidth,pointStyle:n,hidden:!e.getDataVisibility(i),index:i}})}return[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}}},scales:{r:{type:`radialLinear`,angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(e,t){super(e,t),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart,r=n.data.labels||[],i=_u(t._parsed[e].r,n.options.locale);return{label:r[e]||``,value:i}}parseObjectData(e,t,n,r){return xd.bind(this)(e,t,n,r)}update(e){let t=this._cachedMeta.data;this._updateRadius(),this.updateElements(t,0,t.length,e)}getMinMax(){let e=this._cachedMeta,t={min:1/0,max:-1/0};return e.data.forEach((e,n)=>{let r=this.getParsed(n).r;!isNaN(r)&&this.chart.getDataVisibility(n)&&(rt.max&&(t.max=r))}),t}_updateRadius(){let e=this.chart,t=e.chartArea,n=e.options,r=Math.min(t.right-t.left,t.bottom-t.top),i=Math.max(r/2,0),a=(i-Math.max(n.cutoutPercentage?i/100*n.cutoutPercentage:1,0))/e.getVisibleDatasetCount();this.outerRadius=i-a*this.index,this.innerRadius=this.outerRadius-a}updateElements(e,t,n,r){let i=r===`reset`,a=this.chart,o=a.options.animation,s=this._cachedMeta.rScale,c=s.xCenter,l=s.yCenter,u=s.getIndexAngle(0)-.5*ml,d=u,f,p=360/this.countVisibleElements();for(f=0;f{!isNaN(this.getParsed(n).r)&&this.chart.getDataVisibility(n)&&t++}),t}_computeAngle(e,t,n){return this.chart.getDataVisibility(e)?jl(this.resolveDataElementOptions(e,t).angle||n):0}},fp=Object.freeze({__proto__:null,BarController:op,BubbleController:sp,DoughnutController:lp,LineController:up,PieController:class extends lp{static id=`pie`;static defaults={cutout:0,rotation:0,circumference:360,radius:`100%`}},PolarAreaController:dp,RadarController:class extends Wf{static id=`radar`;static defaults={datasetElementType:`line`,dataElementType:`point`,indexAxis:`r`,showLine:!0,elements:{line:{fill:`start`}}};static overrides={aspectRatio:1,scales:{r:{type:`radialLinear`}}};getLabelAndValue(e){let t=this._cachedMeta.vScale,n=this.getParsed(e);return{label:t.getLabels()[e],value:``+t.getLabelForValue(n[t.axis])}}parseObjectData(e,t,n,r){return xd.bind(this)(e,t,n,r)}update(e){let t=this._cachedMeta,n=t.dataset,r=t.data||[],i=t.iScale.getLabels();if(n.points=r,e!==`resize`){let t=this.resolveDatasetElementOptions(e);this.options.showLine||(t.borderWidth=0);let a={_loop:!0,_fullLoop:i.length===r.length,options:t};this.updateElement(n,void 0,a,e)}this.updateElements(r,0,r.length,e)}updateElements(e,t,n,r){let i=this._cachedMeta.rScale,a=r===`reset`;for(let o=t;o0&&this.getParsed(t-1);for(let l=t;l0&&Math.abs(n[f]-v[f])>g,h&&(m.parsed=n,m.raw=c.data[l]),d&&(m.options=u||this.resolveDataElementOptions(l,t.active?`active`:r)),_||this.updateElement(t,l,m,r),v=n}this.updateSharedOptions(u,r,l)}getMaxOverflow(){let e=this._cachedMeta,t=e.data||[];if(!this.options.showLine){let e=0;for(let n=t.length-1;n>=0;--n)e=Math.max(e,t[n].size(this.resolveDataElementOptions(n))/2);return e>0&&e}let n=e.dataset,r=n.options&&n.options.borderWidth||0;if(!t.length)return r;let i=t[0].size(this.resolveDataElementOptions(0)),a=t[t.length-1].size(this.resolveDataElementOptions(t.length-1));return Math.max(r,i,a)/2}}});function pp(){throw Error(`This method is not implemented: Check that a complete date adapter is provided.`)}var mp={_date:class e{static override(t){Object.assign(e.prototype,t)}options;constructor(e){this.options=e||{}}init(){}formats(){return pp()}parse(){return pp()}format(){return pp()}add(){return pp()}diff(){return pp()}startOf(){return pp()}endOf(){return pp()}}};function hp(e,t,n,r){let{controller:i,data:a,_sorted:o}=e,s=i._cachedMeta.iScale,c=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null;if(s&&t===s.axis&&t!==`r`&&o&&a.length){let o=s._reversePixels?Wl:Ul;if(!r){let r=o(a,t,n);if(c){let{vScale:t}=i._cachedMeta,{_parsed:n}=e,a=n.slice(0,r.lo+1).reverse().findIndex(e=>!Hc(e[t.axis]));r.lo-=Math.max(0,a);let o=n.slice(r.hi).findIndex(e=>!Hc(e[t.axis]));r.hi+=Math.max(0,o)}return r}else if(i._sharedOptions){let e=a[0],r=typeof e.getRange==`function`&&e.getRange(t);if(r){let e=o(a,t,n-r),i=o(a,t,n+r);return{lo:e.lo,hi:i.hi}}}}return{lo:0,hi:a.length-1}}function gp(e,t,n,r,i){let a=e.getSortedVisibleDatasetMetas(),o=n[t];for(let e=0,n=a.length;e{e[o]&&e[o](t[n],i)&&(a.push({element:e,datasetIndex:r,index:c}),s||=e.inRange(t.x,t.y,i))}),r&&!s?[]:a}var Cp={evaluateInteractionItems:gp,modes:{index(e,t,n,r){let i=Vd(t,e),a=n.axis||`x`,o=n.includeInvisible||!1,s=n.intersect?vp(e,i,a,r,o):xp(e,i,a,!1,r,o),c=[];return s.length?(e.getSortedVisibleDatasetMetas().forEach(e=>{let t=s[0].index,n=e.data[t];n&&!n.skip&&c.push({element:n,datasetIndex:e.index,index:t})}),c):[]},dataset(e,t,n,r){let i=Vd(t,e),a=n.axis||`xy`,o=n.includeInvisible||!1,s=n.intersect?vp(e,i,a,r,o):xp(e,i,a,!1,r,o);if(s.length>0){let t=s[0].datasetIndex,n=e.getDatasetMeta(t).data;s=[];for(let e=0;ee.pos===t)}function Ep(e,t){return e.filter(e=>wp.indexOf(e.pos)===-1&&e.box.axis===t)}function Dp(e,t){return e.sort((e,n)=>{let r=t?n:e,i=t?e:n;return r.weight===i.weight?r.index-i.index:r.weight-i.weight})}function Op(e){let t=[],n,r,i,a,o,s;for(n=0,r=(e||[]).length;ne.box.fullSize),!0),r=Dp(Tp(t,`left`),!0),i=Dp(Tp(t,`right`)),a=Dp(Tp(t,`top`),!0),o=Dp(Tp(t,`bottom`)),s=Ep(t,`x`),c=Ep(t,`y`);return{fullSize:n,leftAndTop:r.concat(a),rightAndBottom:i.concat(c).concat(o).concat(s),chartArea:Tp(t,`chartArea`),vertical:r.concat(i).concat(c),horizontal:a.concat(o).concat(s)}}function Mp(e,t,n,r){return Math.max(e[n],t[n])+Math.max(e[r],t[r])}function Np(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function Pp(e,t,n,r){let{pos:i,box:a}=n,o=e.maxPadding;if(!Wc(i)){n.size&&(e[i]-=n.size);let t=r[n.stack]||{size:0,count:1};t.size=Math.max(t.size,n.horizontal?a.height:a.width),n.size=t.size/t.count,e[i]+=n.size}a.getPadding&&Np(o,a.getPadding());let s=Math.max(0,t.outerWidth-Mp(o,e,`left`,`right`)),c=Math.max(0,t.outerHeight-Mp(o,e,`top`,`bottom`)),l=s!==e.w,u=c!==e.h;return e.w=s,e.h=c,n.horizontal?{same:l,other:u}:{same:u,other:l}}function Fp(e){let t=e.maxPadding;function n(n){let r=Math.max(t[n]-e[n],0);return e[n]+=r,r}e.y+=n(`top`),e.x+=n(`left`),n(`right`),n(`bottom`)}function Ip(e,t){let n=t.maxPadding;function r(e){let r={left:0,top:0,right:0,bottom:0};return e.forEach(e=>{r[e]=Math.max(t[e],n[e])}),r}return r(e?[`left`,`right`]:[`top`,`bottom`])}function Lp(e,t,n,r){let i=[],a,o,s,c,l,u;for(a=0,o=e.length,l=0;a{typeof e.beforeLayout==`function`&&e.beforeLayout()});let u=c.reduce((e,t)=>t.box.options&&t.box.options.display===!1?e:e+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:n,padding:i,availableWidth:a,availableHeight:o,vBoxMaxWidth:a/2/u,hBoxMaxHeight:o/2}),f=Object.assign({},i);Np(f,Zu(r));let p=Object.assign({maxPadding:f,w:a,h:o,x:i.left,y:i.top},i),m=Ap(c.concat(l),d);Lp(s.fullSize,p,d,m),Lp(c,p,d,m),Lp(l,p,d,m)&&Lp(c,p,d,m),Fp(p),zp(s.leftAndTop,p,d,m),p.x+=p.w,p.y+=p.h,zp(s.rightAndBottom,p,d,m),e.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},Zc(s.chartArea,t=>{let n=t.box;Object.assign(n,e.chartArea),n.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}},Vp=class{acquireContext(e,t){}releaseContext(e){return!1}addEventListener(e,t,n){}removeEventListener(e,t,n){}getDevicePixelRatio(){return 1}getMaximumSize(e,t,n,r){return t=Math.max(0,t||e.width),n||=e.height,{width:t,height:Math.max(0,r?Math.floor(t/r):n)}}isAttached(e){return!0}updateConfig(e){}},Hp=class extends Vp{acquireContext(e){return e&&e.getContext&&e.getContext(`2d`)||null}updateConfig(e){e.options.animation=!1}},Up=`$chartjs`,Wp={touchstart:`mousedown`,touchmove:`mousemove`,touchend:`mouseup`,pointerenter:`mouseenter`,pointerdown:`mousedown`,pointermove:`mousemove`,pointerup:`mouseup`,pointerleave:`mouseout`,pointerout:`mouseout`},Gp=e=>e===null||e===``;function Kp(e,t){let n=e.style,r=e.getAttribute(`height`),i=e.getAttribute(`width`);if(e[Up]={initial:{height:r,width:i,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||`block`,n.boxSizing=n.boxSizing||`border-box`,Gp(i)){let t=qd(e,`width`);t!==void 0&&(e.width=t)}if(Gp(r))if(e.style.height===``)e.height=e.width/(t||2);else{let t=qd(e,`height`);t!==void 0&&(e.height=t)}return e}var qp=Kd?{passive:!0}:!1;function Jp(e,t,n){e&&e.addEventListener(t,n,qp)}function Yp(e,t,n){e&&e.canvas&&e.canvas.removeEventListener(t,n,qp)}function Xp(e,t){let n=Wp[e.type]||e.type,{x:r,y:i}=Vd(e,t);return{type:n,chart:t,native:e,x:r===void 0?null:r,y:i===void 0?null:i}}function Zp(e,t){for(let n of e)if(n===t||n.contains(t))return!0}function Qp(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=Zp(n.addedNodes,r),t&&=!Zp(n.removedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}function $p(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=Zp(n.removedNodes,r),t&&=!Zp(n.addedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}var em=new Map,tm=0;function nm(){let e=window.devicePixelRatio;e!==tm&&(tm=e,em.forEach((t,n)=>{n.currentDevicePixelRatio!==e&&t()}))}function rm(e,t){em.size||window.addEventListener(`resize`,nm),em.set(e,t)}function im(e){em.delete(e),em.size||window.removeEventListener(`resize`,nm)}function am(e,t,n){let r=e.canvas,i=r&&Nd(r);if(!i)return;let a=Zl((e,t)=>{let r=i.clientWidth;n(e,t),r{let t=e[0],n=t.contentRect.width,r=t.contentRect.height;n===0&&r===0||a(n,r)});return o.observe(i),rm(e,a),o}function om(e,t,n){n&&n.disconnect(),t===`resize`&&im(e)}function sm(e,t,n){let r=e.canvas,i=Zl(t=>{e.ctx!==null&&n(Xp(t,e))},e);return Jp(r,t,i),i}var cm=class extends Vp{acquireContext(e,t){let n=e&&e.getContext&&e.getContext(`2d`);return n&&n.canvas===e?(Kp(e,t),n):null}releaseContext(e){let t=e.canvas;if(!t[Up])return!1;let n=t[Up].initial;[`height`,`width`].forEach(e=>{let r=n[e];Hc(r)?t.removeAttribute(e):t.setAttribute(e,r)});let r=n.style||{};return Object.keys(r).forEach(e=>{t.style[e]=r[e]}),t.width=t.width,delete t[Up],!0}addEventListener(e,t,n){this.removeEventListener(e,t);let r=e.$proxies||={};r[t]=({attach:Qp,detach:$p,resize:am}[t]||sm)(e,t,n)}removeEventListener(e,t){let n=e.$proxies||={},r=n[t];r&&(({attach:om,detach:om,resize:om}[t]||Yp)(e,t,r),n[t]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,t,n,r){return Wd(e,t,n,r)}isAttached(e){let t=e&&Nd(e);return!!(t&&t.isConnected)}};function lm(e){return!Md()||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas?Hp:cm}var um=class{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(e){let{x:t,y:n}=this.getProps([`x`,`y`],e);return{x:t,y:n}}hasValue(){return Ol(this.x)&&Ol(this.y)}getProps(e,t){let n=this.$animations;if(!t||!n)return this;let r={};return e.forEach(e=>{r[e]=n[e]&&n[e].active()?n[e]._to:this[e]}),r}};function dm(e,t){let n=e.options.ticks,r=fm(e),i=Math.min(n.maxTicksLimit||r,r),a=n.major.enabled?mm(t):[],o=a.length,s=a[0],c=a[o-1],l=[];if(o>i)return hm(t,l,a,o/i),l;let u=pm(a,t,i);if(o>0){let e,n,r=o>1?Math.round((c-s)/(o-1)):null;for(gm(t,l,u,Hc(r)?0:s-r,s),e=0,n=o-1;ei)return t}return Math.max(i,1)}function mm(e){let t=[],n,r;for(n=0,r=e.length;ne===`left`?`right`:e===`right`?`left`:e,ym=(e,t,n)=>t===`top`||t===`left`?e[t]+n:e[t]-n,bm=(e,t)=>Math.min(t||e,e);function xm(e,t){let n=[],r=e.length/t,i=e.length,a=0;for(;ao+s)))return c}function Cm(e,t){Zc(e,e=>{let n=e.gc,r=n.length/2,i;if(r>t){for(i=0;in?n:t,n=r&&t>n?t:n,{min:Kc(t,Kc(n,t)),max:Kc(n,Kc(t,n))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||=this._computeLabelItems(e)}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){Xc(this.options.beforeUpdate,[this])}update(e,t,n){let{beginAtZero:r,grace:i,ticks:a}=this.options,o=a.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=t,this._margins=n=Object.assign({left:0,right:0,top:0,bottom:0},n),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+n.left+n.right:this.height+n.top+n.bottom,this._dataLimitsCached||=(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=ed(this,i,r),!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let s=o=i||n<=1||!this.isHorizontal()){this.labelRotation=r;return}let l=this._getLabelSizes(),u=l.widest.width,d=l.highest.height,f=zl(this.chart.width-u,0,this.maxWidth);o=e.offset?this.maxWidth/n:f/(n-1),u+6>o&&(o=f/(n-(e.offset?.5:1)),s=this.maxHeight-wm(e.grid)-t.padding-Tm(e.title,this.chart.options.font),c=Math.sqrt(u*u+d*d),a=Ml(Math.min(Math.asin(zl((l.highest.height+6)/o,-1,1)),Math.asin(zl(s/c,-1,1))-Math.asin(zl(d/c,-1,1)))),a=Math.max(r,Math.min(i,a))),this.labelRotation=a}afterCalculateLabelRotation(){Xc(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){Xc(this.options.beforeFit,[this])}fit(){let e={width:0,height:0},{chart:t,options:{ticks:n,title:r,grid:i}}=this,a=this._isVisible(),o=this.isHorizontal();if(a){let a=Tm(r,t.options.font);if(o?(e.width=this.maxWidth,e.height=wm(i)+a):(e.height=this.maxHeight,e.width=wm(i)+a),n.display&&this.ticks.length){let{first:t,last:r,widest:i,highest:a}=this._getLabelSizes(),s=n.padding*2,c=jl(this.labelRotation),l=Math.cos(c),u=Math.sin(c);if(o){let t=n.mirror?0:u*i.width+l*a.height;e.height=Math.min(this.maxHeight,e.height+t+s)}else{let t=n.mirror?0:l*i.width+u*a.height;e.width=Math.min(this.maxWidth,e.width+t+s)}this._calculatePadding(t,r,u,l)}}this._handleMargins(),o?(this.width=this._length=t.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=t.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,t,n,r){let{ticks:{align:i,padding:a},position:o}=this.options,s=this.labelRotation!==0,c=o!==`top`&&this.axis===`x`;if(this.isHorizontal()){let o=this.getPixelForTick(0)-this.left,l=this.right-this.getPixelForTick(this.ticks.length-1),u=0,d=0;s?c?(u=r*e.width,d=n*t.height):(u=n*e.height,d=r*t.width):i===`start`?d=t.width:i===`end`?u=e.width:i!==`inner`&&(u=e.width/2,d=t.width/2),this.paddingLeft=Math.max((u-o+a)*this.width/(this.width-o),0),this.paddingRight=Math.max((d-l+a)*this.width/(this.width-l),0)}else{let n=t.height/2,r=e.height/2;i===`start`?(n=0,r=e.height):i===`end`&&(n=t.height,r=0),this.paddingTop=n+a,this.paddingBottom=r+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){Xc(this.options.afterFit,[this])}isHorizontal(){let{axis:e,position:t}=this.options;return t===`top`||t===`bottom`||e===`x`}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let t,n;for(t=0,n=e.length;t({width:a[e]||0,height:o[e]||0});return{first:C(0),last:C(t-1),widest:C(x),highest:C(S),widths:a,heights:o}}getLabelForValue(e){return e}getPixelForValue(e,t){return NaN}getValueForPixel(e){}getPixelForTick(e){let t=this.ticks;return e<0||e>t.length-1?null:this.getPixelForValue(t[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);let t=this._startPixel+e*this._length;return Bl(this._alignToPixels?Au(this.chart,t,0):t)}getDecimalForPixel(e){let t=(e-this._startPixel)/this._length;return this._reversePixels?1-t:t}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:e,max:t}=this;return e<0&&t<0?t:e>0&&t>0?e:0}getContext(e){let t=this.ticks||[];if(e>=0&&eo*r?o/n:s/r:s*r0:!!e}_computeGridLineItems(e){let t=this.axis,n=this.chart,r=this.options,{grid:i,position:a,border:o}=r,s=i.offset,c=this.isHorizontal(),l=this.ticks.length+ +!!s,u=wm(i),d=[],f=o.setContext(this.getContext()),p=f.display?f.width:0,m=p/2,h=function(e){return Au(n,e,p)},g,_,v,y,b,x,S,C,w,ee,te,ne;if(a===`top`)g=h(this.bottom),x=this.bottom-u,C=g-m,ee=h(e.top)+m,ne=e.bottom;else if(a===`bottom`)g=h(this.top),ee=e.top,ne=h(e.bottom)-m,x=g+m,C=this.top+u;else if(a===`left`)g=h(this.right),b=this.right-u,S=g-m,w=h(e.left)+m,te=e.right;else if(a===`right`)g=h(this.left),w=e.left,te=h(e.right)-m,b=g+m,S=this.left+u;else if(t===`x`){if(a===`center`)g=h((e.top+e.bottom)/2+.5);else if(Wc(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}ee=e.top,ne=e.bottom,x=g+m,C=x+u}else if(t===`y`){if(a===`center`)g=h((e.left+e.right)/2);else if(Wc(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}b=g-m,S=b-u,w=e.left,te=e.right}let re=qc(r.ticks.maxTicksLimit,l),ie=Math.max(1,Math.ceil(l/re));for(_=0;_0&&(a-=r/2);break}f={left:a,top:i,width:r+t.width,height:n+t.height,color:e.backdropColor}}h.push({label:y,font:w,textOffset:ne,options:{rotation:m,color:n,strokeColor:s,strokeWidth:l,textAlign:d,textBaseline:re,translation:[b,x],backdrop:f}})}return h}_getXAxisLabelAlignment(){let{position:e,ticks:t}=this.options;if(-jl(this.labelRotation))return e===`top`?`left`:`right`;let n=`center`;return t.align===`start`?n=`left`:t.align===`end`?n=`right`:t.align===`inner`&&(n=`inner`),n}_getYAxisLabelAlignment(e){let{position:t,ticks:{crossAlign:n,mirror:r,padding:i}}=this.options,a=this._getLabelSizes(),o=e+i,s=a.widest.width,c,l;return t===`left`?r?(l=this.right+i,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l+=s)):(l=this.right-o,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l=this.left)):t===`right`?r?(l=this.left+i,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l-=s)):(l=this.left+o,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l=this.right)):c=`right`,{textAlign:c,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;let e=this.chart,t=this.options.position;if(t===`left`||t===`right`)return{top:0,left:this.left,bottom:e.height,right:this.right};if(t===`top`||t===`bottom`)return{top:this.top,left:0,bottom:this.bottom,right:e.width}}drawBackground(){let{ctx:e,options:{backgroundColor:t},left:n,top:r,width:i,height:a}=this;t&&(e.save(),e.fillStyle=t,e.fillRect(n,r,i,a),e.restore())}getLineWidthForValue(e){let t=this.options.grid;if(!this._isVisible()||!t.display)return 0;let n=this.ticks.findIndex(t=>t.value===e);return n>=0?t.setContext(this.getContext(n)).lineWidth:0}drawGrid(e){let t=this.options.grid,n=this.ctx,r=this._gridLineItems||=this._computeGridLineItems(e),i,a,o=(e,t,r)=>{!r.width||!r.color||(n.save(),n.lineWidth=r.width,n.strokeStyle=r.color,n.setLineDash(r.borderDash||[]),n.lineDashOffset=r.borderDashOffset,n.beginPath(),n.moveTo(e.x,e.y),n.lineTo(t.x,t.y),n.stroke(),n.restore())};if(t.display)for(i=0,a=r.length;i{this.draw(e)}}]:[{z:r,draw:e=>{this.drawBackground(),this.drawGrid(e),this.drawTitle()}},{z:i,draw:()=>{this.drawBorder()}},{z:n,draw:e=>{this.drawLabels(e)}}]}getMatchingVisibleMetas(e){let t=this.chart.getSortedVisibleDatasetMetas(),n=this.axis+`AxisID`,r=[],i,a;for(i=0,a=t.length;i{let r=n.split(`.`),i=r.pop(),a=[e].concat(r).join(`.`),o=t[n].split(`.`),s=o.pop(),c=o.join(`.`);Eu.route(a,i,c,s)})}function Pm(e){return`id`in e&&`defaults`in e}var Fm=new class{constructor(){this.controllers=new jm(Wf,`datasets`,!0),this.elements=new jm(um,`elements`),this.plugins=new jm(Object,`plugins`),this.scales=new jm(Am,`scales`),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each(`register`,e)}remove(...e){this._each(`unregister`,e)}addControllers(...e){this._each(`register`,e,this.controllers)}addElements(...e){this._each(`register`,e,this.elements)}addPlugins(...e){this._each(`register`,e,this.plugins)}addScales(...e){this._each(`register`,e,this.scales)}getController(e){return this._get(e,this.controllers,`controller`)}getElement(e){return this._get(e,this.elements,`element`)}getPlugin(e){return this._get(e,this.plugins,`plugin`)}getScale(e){return this._get(e,this.scales,`scale`)}removeControllers(...e){this._each(`unregister`,e,this.controllers)}removeElements(...e){this._each(`unregister`,e,this.elements)}removePlugins(...e){this._each(`unregister`,e,this.plugins)}removeScales(...e){this._each(`unregister`,e,this.scales)}_each(e,t,n){[...t].forEach(t=>{let r=n||this._getRegistryForType(t);n||r.isForType(t)||r===this.plugins&&t.id?this._exec(e,r,t):Zc(t,t=>{let r=n||this._getRegistryForType(t);this._exec(e,r,t)})})}_exec(e,t,n){let r=ll(e);Xc(n[`before`+r],[],n),t[e](n),Xc(n[`after`+r],[],n)}_getRegistryForType(e){for(let t=0;te.filter(e=>!t.some(t=>e.plugin.id===t.plugin.id));this._notify(r(t,n),e,`stop`),this._notify(r(n,t),e,`start`)}};function Lm(e){let t={},n=[],r=Object.keys(Fm.plugins.items);for(let e=0;e1&&Wm(e[0].toLowerCase());if(t)return t}throw Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function qm(e,t,n){if(n[t+`AxisID`]===e)return{axis:t}}function Jm(e,t){if(t.data&&t.data.datasets){let n=t.data.datasets.filter(t=>t.xAxisID===e||t.yAxisID===e);if(n.length)return qm(e,`x`,n[0])||qm(e,`y`,n[0])}return{}}function Ym(e,t){let n=Su[e.type]||{scales:{}},r=t.scales||{},i=Vm(e.type,t),a=Object.create(null);return Object.keys(r).forEach(t=>{let o=r[t];if(!Wc(o))return console.error(`Invalid scale configuration for scale: ${t}`);if(o._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);let s=Km(t,o,Jm(t,e),Eu.scales[o.type]),c=Um(s,i),l=n.scales||{};a[t]=rl(Object.create(null),[{axis:s},o,l[s],l[c]])}),e.data.datasets.forEach(n=>{let i=n.type||e.type,o=n.indexAxis||Vm(i,t),s=(Su[i]||{}).scales||{};Object.keys(s).forEach(e=>{let t=Hm(e,o),i=n[t+`AxisID`]||t;a[i]=a[i]||Object.create(null),rl(a[i],[{axis:t},r[i],s[e]])})}),Object.keys(a).forEach(e=>{let t=a[e];rl(t,[Eu.scales[t.type],Eu.scale])}),a}function Xm(e){let t=e.options||={};t.plugins=qc(t.plugins,{}),t.scales=Ym(e,t)}function Zm(e){return e||={},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function Qm(e){return e||={},e.data=Zm(e.data),Xm(e),e}var $m=new Map,eh=new Set;function th(e,t){let n=$m.get(e);return n||(n=t(),$m.set(e,n),eh.add(n)),n}var nh=(e,t,n)=>{let r=cl(t,n);r!==void 0&&e.add(r)},rh=class{constructor(e){this._config=Qm(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=Zm(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){let e=this._config;this.clearCache(),Xm(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return th(e,()=>[[`datasets.${e}`,``]])}datasetAnimationScopeKeys(e,t){return th(`${e}.transition.${t}`,()=>[[`datasets.${e}.transitions.${t}`,`transitions.${t}`],[`datasets.${e}`,``]])}datasetElementScopeKeys(e,t){return th(`${e}-${t}`,()=>[[`datasets.${e}.elements.${t}`,`datasets.${e}`,`elements.${t}`,``]])}pluginScopeKeys(e){let t=e.id,n=this.type;return th(`${n}-plugin-${t}`,()=>[[`plugins.${t}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,t){let n=this._scopeCache,r=n.get(e);return(!r||t)&&(r=new Map,n.set(e,r)),r}getOptionScopes(e,t,n){let{options:r,type:i}=this,a=this._cachedScopes(e,n),o=a.get(t);if(o)return o;let s=new Set;t.forEach(t=>{e&&(s.add(e),t.forEach(t=>nh(s,e,t))),t.forEach(e=>nh(s,r,e)),t.forEach(e=>nh(s,Su[i]||{},e)),t.forEach(e=>nh(s,Eu,e)),t.forEach(e=>nh(s,Cu,e))});let c=Array.from(s);return c.length===0&&c.push(Object.create(null)),eh.has(t)&&a.set(t,c),c}chartOptionScopes(){let{options:e,type:t}=this;return[e,Su[t]||{},Eu.datasets[t]||{},{type:t},Eu,Cu]}resolveNamedOptions(e,t,n,r=[``]){let i={$shared:!0},{resolver:a,subPrefixes:o}=ih(this._resolverCache,e,r),s=a;if(oh(a,t)){i.$shared=!1,n=dl(n)?n():n;let t=this.createResolver(e,n,o);s=rd(a,n,t)}for(let e of t)i[e]=s[e];return i}createResolver(e,t,n=[``],r){let{resolver:i}=ih(this._resolverCache,e,n);return Wc(t)?rd(i,t,void 0,r):i}};function ih(e,t,n){let r=e.get(t);r||(r=new Map,e.set(t,r));let i=n.join(),a=r.get(i);return a||(a={resolver:nd(t,n),subPrefixes:n.filter(e=>!e.toLowerCase().includes(`hover`))},r.set(i,a)),a}var ah=e=>Wc(e)&&Object.getOwnPropertyNames(e).some(t=>dl(e[t]));function oh(e,t){let{isScriptable:n,isIndexable:r}=id(e);for(let i of t){let t=n(i),a=r(i),o=(a||t)&&e[i];if(t&&(dl(o)||ah(o))||a&&Uc(o))return!0}return!1}var sh=`4.5.1`,ch=[`top`,`bottom`,`left`,`right`,`chartArea`];function lh(e,t){return e===`top`||e===`bottom`||ch.indexOf(e)===-1&&t===`x`}function uh(e,t){return function(n,r){return n[e]===r[e]?n[t]-r[t]:n[e]-r[e]}}function dh(e){let t=e.chart,n=t.options.animation;t.notifyPlugins(`afterRender`),Xc(n&&n.onComplete,[e],t)}function fh(e){let t=e.chart,n=t.options.animation;Xc(n&&n.onProgress,[e],t)}function ph(e){return Md()&&typeof e==`string`?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}var mh={},hh=e=>{let t=ph(e);return Object.values(mh).filter(e=>e.canvas===t).pop()};function gh(e,t,n){let r=Object.keys(e);for(let i of r){let r=+i;if(r>=t){let a=e[i];delete e[i],(n>0||r>t)&&(e[r+n]=a)}}}function _h(e,t,n,r){return!n||e.type===`mouseout`?null:r?t:e}var vh=class{static defaults=Eu;static instances=mh;static overrides=Su;static registry=Fm;static version=sh;static getChart=hh;static register(...e){Fm.add(...e),yh()}static unregister(...e){Fm.remove(...e),yh()}constructor(e,t){let n=this.config=new rh(t),r=ph(e),i=hh(r);if(i)throw Error(`Canvas is already in use. Chart with ID '`+i.id+`' must be destroyed before the canvas with ID '`+i.canvas.id+`' can be reused.`);let a=n.createResolver(n.chartOptionScopes(),this.getContext());this.platform=new(n.platform||(lm(r))),this.platform.updateConfig(n);let o=this.platform.acquireContext(r,a.aspectRatio),s=o&&o.canvas,c=s&&s.height,l=s&&s.width;if(this.id=Vc(),this.ctx=o,this.canvas=s,this.width=l,this.height=c,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Im,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Ql(e=>this.update(e),a.resizeDelay||0),this._dataChanges=[],mh[this.id]=this,!o||!s){console.error(`Failed to create chart: can't acquire context from the given item`);return}vf.listen(this,`complete`,dh),vf.listen(this,`progress`,fh),this._initialize(),this.attached&&this.update()}get aspectRatio(){let{options:{aspectRatio:e,maintainAspectRatio:t},width:n,height:r,_aspectRatio:i}=this;return Hc(e)?t&&i?i:r?n/r:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return Fm}_initialize(){return this.notifyPlugins(`beforeInit`),this.options.responsive?this.resize():Gd(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins(`afterInit`),this}clear(){return ju(this.canvas,this.ctx),this}stop(){return vf.stop(this),this}resize(e,t){vf.running(this)?this._resizeBeforeDraw={width:e,height:t}:this._resize(e,t)}_resize(e,t){let n=this.options,r=this.canvas,i=n.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(r,e,t,i),o=n.devicePixelRatio||this.platform.getDevicePixelRatio(),s=this.width?`resize`:`attach`;this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,Gd(this,o,!0)&&(this.notifyPlugins(`resize`,{size:a}),Xc(n.onResize,[this,a],this),this.attached&&this._doResize(s)&&this.render())}ensureScalesHaveIDs(){Zc(this.options.scales||{},(e,t)=>{e.id=t})}buildOrUpdateScales(){let e=this.options,t=e.scales,n=this.scales,r=Object.keys(n).reduce((e,t)=>(e[t]=!1,e),{}),i=[];t&&(i=i.concat(Object.keys(t).map(e=>{let n=t[e],r=Km(e,n),i=r===`r`,a=r===`x`;return{options:n,dposition:i?`chartArea`:a?`bottom`:`left`,dtype:i?`radialLinear`:a?`category`:`linear`}}))),Zc(i,t=>{let i=t.options,a=i.id,o=Km(a,i),s=qc(i.type,t.dtype);(i.position===void 0||lh(i.position,o)!==lh(t.dposition))&&(i.position=t.dposition),r[a]=!0;let c=null;a in n&&n[a].type===s?c=n[a]:(c=new(Fm.getScale(s))({id:a,type:s,ctx:this.ctx,chart:this}),n[c.id]=c),c.init(i,e)}),Zc(r,(e,t)=>{e||delete n[t]}),Zc(n,e=>{Bp.configure(this,e,e.options),Bp.addBox(this,e)})}_updateMetasets(){let e=this._metasets,t=this.data.datasets.length,n=e.length;if(e.sort((e,t)=>e.index-t.index),n>t){for(let e=t;et.length&&delete this._stacks,e.forEach((e,n)=>{t.filter(t=>t===e._dataset).length===0&&this._destroyDatasetMeta(n)})}buildOrUpdateControllers(){let e=[],t=this.data.datasets,n,r;for(this._removeUnreferencedMetasets(),n=0,r=t.length;n{this.getDatasetMeta(t).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins(`reset`)}update(e){let t=this.config;t.update();let n=this._options=t.createResolver(t.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!n.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins(`beforeUpdate`,{mode:e,cancelable:!0})===!1)return;let i=this.buildOrUpdateControllers();this.notifyPlugins(`beforeElementsUpdate`);let a=0;for(let e=0,t=this.data.datasets.length;e{e.reset()}),this._updateDatasets(e),this.notifyPlugins(`afterUpdate`,{mode:e}),this._layers.sort(uh(`z`,`_idx`));let{_active:o,_lastEvent:s}=this;s?this._eventHandler(s,!0):o.length&&this._updateHoverStyles(o,o,!0),this.render()}_updateScales(){Zc(this.scales,e=>{Bp.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let e=this.options;(!fl(new Set(Object.keys(this._listeners)),new Set(e.events))||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){let{_hiddenIndices:e}=this,t=this._getUniformDataChanges()||[];for(let{method:n,start:r,count:i}of t)gh(e,r,n===`_removeElements`?-i:i)}_getUniformDataChanges(){let e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];let t=this.data.datasets.length,n=t=>new Set(e.filter(e=>e[0]===t).map((e,t)=>t+`,`+e.splice(1).join(`,`))),r=n(0);for(let e=1;ee.split(`,`)).map(e=>({method:e[1],start:+e[2],count:+e[3]}))}_updateLayout(e){if(this.notifyPlugins(`beforeLayout`,{cancelable:!0})===!1)return;Bp.update(this,this.width,this.height,e);let t=this.chartArea,n=t.width<=0||t.height<=0;this._layers=[],Zc(this.boxes,e=>{n&&e.position===`chartArea`||(e.configure&&e.configure(),this._layers.push(...e._layers()))},this),this._layers.forEach((e,t)=>{e._idx=t}),this.notifyPlugins(`afterLayout`)}_updateDatasets(e){if(this.notifyPlugins(`beforeDatasetsUpdate`,{mode:e,cancelable:!0})!==!1){for(let e=0,t=this.data.datasets.length;e=0;--t)this._drawDataset(e[t]);this.notifyPlugins(`afterDatasetsDraw`)}_drawDataset(e){let t=this.ctx,n={meta:e,index:e.index,cancelable:!0},r=_f(this,e);this.notifyPlugins(`beforeDatasetDraw`,n)!==!1&&(r&&Fu(t,r),e.controller.draw(),r&&Iu(t),n.cancelable=!1,this.notifyPlugins(`afterDatasetDraw`,n))}isPointInArea(e){return Pu(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,t,n,r){let i=Cp.modes[t];return typeof i==`function`?i(this,e,n,r):[]}getDatasetMeta(e){let t=this.data.datasets[e],n=this._metasets,r=n.filter(e=>e&&e._dataset===t).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:t&&t.order||0,index:e,_dataset:t,_parsed:[],_sorted:!1},n.push(r)),r}getContext(){return this.$context||=td(null,{chart:this,type:`chart`})}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){let t=this.data.datasets[e];if(!t)return!1;let n=this.getDatasetMeta(e);return typeof n.hidden==`boolean`?!n.hidden:!t.hidden}setDatasetVisibility(e,t){let n=this.getDatasetMeta(e);n.hidden=!t}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,t,n){let r=n?`show`:`hide`,i=this.getDatasetMeta(e),a=i.controller._resolveAnimations(void 0,r);ul(t)?(i.data[t].hidden=!n,this.update()):(this.setDatasetVisibility(e,n),a.update(i,{visible:n}),this.update(t=>t.datasetIndex===e?r:void 0))}hide(e,t){this._updateVisibility(e,t,!1)}show(e,t){this._updateVisibility(e,t,!0)}_destroyDatasetMeta(e){let t=this._metasets[e];t&&t.controller&&t.controller._destroy(),delete this._metasets[e]}_stop(){let e,t;for(this.stop(),vf.remove(this),e=0,t=this.data.datasets.length;e{t.addEventListener(this,n,r),e[n]=r},r=(e,t,n)=>{e.offsetX=t,e.offsetY=n,this._eventHandler(e)};Zc(this.options.events,e=>n(e,r))}bindResponsiveEvents(){this._responsiveListeners||={};let e=this._responsiveListeners,t=this.platform,n=(n,r)=>{t.addEventListener(this,n,r),e[n]=r},r=(n,r)=>{e[n]&&(t.removeEventListener(this,n,r),delete e[n])},i=(e,t)=>{this.canvas&&this.resize(e,t)},a,o=()=>{r(`attach`,o),this.attached=!0,this.resize(),n(`resize`,i),n(`detach`,a)};a=()=>{this.attached=!1,r(`resize`,i),this._stop(),this._resize(0,0),n(`attach`,o)},t.isAttached(this.canvas)?o():a()}unbindEvents(){Zc(this._listeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._listeners={},Zc(this._responsiveListeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,t,n){let r=n?`set`:`remove`,i,a,o,s;for(t===`dataset`&&(i=this.getDatasetMeta(e[0].datasetIndex),i.controller[`_`+r+`DatasetHoverStyle`]()),o=0,s=e.length;o{let n=this.getDatasetMeta(e);if(!n)throw Error(`No dataset found at index `+e);return{datasetIndex:e,element:n.data[t],index:t}});Qc(n,t)||(this._active=n,this._lastEvent=null,this._updateHoverStyles(n,t))}notifyPlugins(e,t,n){return this._plugins.notify(this,e,t,n)}isPluginEnabled(e){return this._plugins._cache.filter(t=>t.plugin.id===e).length===1}_updateHoverStyles(e,t,n){let r=this.options.hover,i=(e,t)=>e.filter(e=>!t.some(t=>e.datasetIndex===t.datasetIndex&&e.index===t.index)),a=i(t,e),o=n?e:i(e,t);a.length&&this.updateHoverStyle(a,r.mode,!1),o.length&&r.mode&&this.updateHoverStyle(o,r.mode,!0)}_eventHandler(e,t){let n={event:e,replay:t,cancelable:!0,inChartArea:this.isPointInArea(e)},r=t=>(t.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins(`beforeEvent`,n,r)===!1)return;let i=this._handleEvent(e,t,n.inChartArea);return n.cancelable=!1,this.notifyPlugins(`afterEvent`,n,r),(i||n.changed)&&this.render(),this}_handleEvent(e,t,n){let{_active:r=[],options:i}=this,a=t,o=this._getActiveElements(e,r,n,a),s=pl(e),c=_h(e,this._lastEvent,n,s);n&&(this._lastEvent=null,Xc(i.onHover,[e,o,this],this),s&&Xc(i.onClick,[e,o,this],this));let l=!Qc(o,r);return(l||t)&&(this._active=o,this._updateHoverStyles(o,r,t)),this._lastEvent=c,l}_getActiveElements(e,t,n,r){if(e.type===`mouseout`)return[];if(!n)return t;let i=this.options.hover;return this.getElementsAtEventForMode(e,i.mode,i,r)}};function yh(){return Zc(vh.instances,e=>e._plugins.invalidate())}function bh(e,t,n){let{startAngle:r,x:i,y:a,outerRadius:o,innerRadius:s,options:c}=t,{borderWidth:l,borderJoinStyle:u}=c,d=Math.min(l/o,Ll(r-n));if(e.beginPath(),e.arc(i,a,o-l/2,r+d/2,n-d/2),s>0){let t=Math.min(l/s,Ll(r-n));e.arc(i,a,s+l/2,n-t/2,r+t/2,!0)}else{let t=Math.min(l/2,o*Ll(r-n));if(u===`round`)e.arc(i,a,t,n-ml/2,r+ml/2,!0);else if(u===`bevel`){let o=2*t*t,s=-o*Math.cos(n+ml/2)+i,c=-o*Math.sin(n+ml/2)+a,l=o*Math.cos(r+ml/2)+i,u=o*Math.sin(r+ml/2)+a;e.lineTo(s,c),e.lineTo(l,u)}}e.closePath(),e.moveTo(0,0),e.rect(0,0,e.canvas.width,e.canvas.height),e.clip(`evenodd`)}function xh(e,t,n){let{startAngle:r,pixelMargin:i,x:a,y:o,outerRadius:s,innerRadius:c}=t,l=i/s;e.beginPath(),e.arc(a,o,s,r-l,n+l),c>i?(l=i/c,e.arc(a,o,c,n+l,r-l,!0)):e.arc(a,o,i,n+yl,r-yl),e.closePath(),e.clip()}function Sh(e){return Ju(e,[`outerStart`,`outerEnd`,`innerStart`,`innerEnd`])}function Ch(e,t,n,r){let i=Sh(e.options.borderRadius),a=(n-t)/2,o=Math.min(a,r*t/2),s=e=>{let t=(n-Math.min(a,e))*r/2;return zl(e,0,Math.min(a,t))};return{outerStart:s(i.outerStart),outerEnd:s(i.outerEnd),innerStart:zl(i.innerStart,0,o),innerEnd:zl(i.innerEnd,0,o)}}function wh(e,t,n,r){return{x:n+e*Math.cos(t),y:r+e*Math.sin(t)}}function Th(e,t,n,r,i,a){let{x:o,y:s,startAngle:c,pixelMargin:l,innerRadius:u}=t,d=Math.max(t.outerRadius+r+n-l,0),f=u>0?u+r+n+l:0,p=0,m=i-c;if(r){let e=((u>0?u-r:0)+(d>0?d-r:0))/2;p=(m-(e===0?m:m*e/(e+r)))/2}let h=(m-Math.max(.001,m*d-n/ml)/d)/2,g=c+h+p,_=i-h-p,{outerStart:v,outerEnd:y,innerStart:b,innerEnd:x}=Ch(t,f,d,_-g),S=d-v,C=d-y,w=g+v/S,ee=_-y/C,te=f+b,ne=f+x,re=g+b/te,ie=_-x/ne;if(e.beginPath(),a){let t=(w+ee)/2;if(e.arc(o,s,d,w,t),e.arc(o,s,d,t,ee),y>0){let t=wh(C,ee,o,s);e.arc(t.x,t.y,y,ee,_+yl)}let n=wh(ne,_,o,s);if(e.lineTo(n.x,n.y),x>0){let t=wh(ne,ie,o,s);e.arc(t.x,t.y,x,_+yl,ie+Math.PI)}let r=(_-x/f+(g+b/f))/2;if(e.arc(o,s,f,_-x/f,r,!0),e.arc(o,s,f,r,g+b/f,!0),b>0){let t=wh(te,re,o,s);e.arc(t.x,t.y,b,re+Math.PI,g-yl)}let i=wh(S,g,o,s);if(e.lineTo(i.x,i.y),v>0){let t=wh(S,w,o,s);e.arc(t.x,t.y,v,g-yl,w)}}else{e.moveTo(o,s);let t=Math.cos(w)*d+o,n=Math.sin(w)*d+s;e.lineTo(t,n);let r=Math.cos(ee)*d+o,i=Math.sin(ee)*d+s;e.lineTo(r,i)}e.closePath()}function Eh(e,t,n,r,i){let{fullCircles:a,startAngle:o,circumference:s}=t,c=t.endAngle;if(a){Th(e,t,n,r,c,i);for(let t=0;t=ml&&p===0&&u!==`miter`&&bh(e,t,h),a||(Th(e,t,n,r,h,i),e.stroke())}var Oh=class extends um{static id=`arc`;static defaults={borderAlign:`center`,borderColor:`#fff`,borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1};static defaultRoutes={backgroundColor:`backgroundColor`};static descriptors={_scriptable:!0,_indexable:e=>e!==`borderDash`};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(e){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,t,n){let{angle:r,distance:i}=Pl(this.getProps([`x`,`y`],n),{x:e,y:t}),{startAngle:a,endAngle:o,innerRadius:s,outerRadius:c,circumference:l}=this.getProps([`startAngle`,`endAngle`,`innerRadius`,`outerRadius`,`circumference`],n),u=(this.options.spacing+this.options.borderWidth)/2,d=qc(l,o-a),f=Rl(r,a,o)&&a!==o,p=d>=hl||f,m=Vl(i,s+u,c+u);return p&&m}getCenterPoint(e){let{x:t,y:n,startAngle:r,endAngle:i,innerRadius:a,outerRadius:o}=this.getProps([`x`,`y`,`startAngle`,`endAngle`,`innerRadius`,`outerRadius`],e),{offset:s,spacing:c}=this.options,l=(r+i)/2,u=(a+o+c+s)/2;return{x:t+Math.cos(l)*u,y:n+Math.sin(l)*u}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){let{options:t,circumference:n}=this,r=(t.offset||0)/4,i=(t.spacing||0)/2,a=t.circular;if(this.pixelMargin=t.borderAlign===`inner`?.33:0,this.fullCircles=n>hl?Math.floor(n/hl):0,n===0||this.innerRadius<0||this.outerRadius<0)return;e.save();let o=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(o)*r,Math.sin(o)*r);let s=r*(1-Math.sin(Math.min(ml,n||0)));e.fillStyle=t.backgroundColor,e.strokeStyle=t.borderColor,Eh(e,this,s,i,a),Dh(e,this,s,i,a),e.restore()}};function kh(e,t,n=t){e.lineCap=qc(n.borderCapStyle,t.borderCapStyle),e.setLineDash(qc(n.borderDash,t.borderDash)),e.lineDashOffset=qc(n.borderDashOffset,t.borderDashOffset),e.lineJoin=qc(n.borderJoinStyle,t.borderJoinStyle),e.lineWidth=qc(n.borderWidth,t.borderWidth),e.strokeStyle=qc(n.borderColor,t.borderColor)}function Ah(e,t,n){e.lineTo(n.x,n.y)}function jh(e){return e.stepped?Lu:e.tension||e.cubicInterpolationMode===`monotone`?Ru:Ah}function Mh(e,t,n={}){let r=e.length,{start:i=0,end:a=r-1}=n,{start:o,end:s}=t,c=Math.max(i,o),l=Math.min(a,s),u=is&&a>s;return{count:r,start:c,loop:t.loop,ilen:l(o+(l?s-e:e))%a,y=()=>{h!==g&&(e.lineTo(u,g),e.lineTo(u,h),e.lineTo(u,_))};for(c&&(p=i[v(0)],e.moveTo(p.x,p.y)),f=0;f<=s;++f){if(p=i[v(f)],p.skip)continue;let t=p.x,n=p.y,r=t|0;r===m?(ng&&(g=n),u=(d*u+t)/++d):(y(),e.lineTo(t,n),m=r,d=0,h=g=n),_=n}y()}function Fh(e){let t=e.options,n=t.borderDash&&t.borderDash.length;return!e._decimated&&!e._loop&&!t.tension&&t.cubicInterpolationMode!==`monotone`&&!t.stepped&&!n?Ph:Nh}function Ih(e){return e.stepped?Yd:e.tension||e.cubicInterpolationMode===`monotone`?Xd:Jd}function Lh(e,t,n,r){let i=t._path;i||(i=t._path=new Path2D,t.path(i,n,r)&&i.closePath()),kh(e,t.options),e.stroke(i)}function Rh(e,t,n,r){let{segments:i,options:a}=t,o=Fh(t);for(let s of i)kh(e,a,s.style),e.beginPath(),o(e,t,s,{start:n,end:n+r-1})&&e.closePath(),e.stroke()}var zh=typeof Path2D==`function`;function Bh(e,t,n,r){zh&&!t.options.segment?Lh(e,t,n,r):Rh(e,t,n,r)}var Vh=class extends um{static id=`line`;static defaults={borderCapStyle:`butt`,borderDash:[],borderDashOffset:0,borderJoinStyle:`miter`,borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:`default`,fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:`backgroundColor`,borderColor:`borderColor`};static descriptors={_scriptable:!0,_indexable:e=>e!==`borderDash`&&e!==`fill`};constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,t){let n=this.options;if((n.tension||n.cubicInterpolationMode===`monotone`)&&!n.stepped&&!this._pointsUpdated){let r=n.spanGaps?this._loop:this._fullLoop;jd(this._points,n,e,r,t),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||=uf(this,this.options.segment)}first(){let e=this.segments,t=this.points;return e.length&&t[e[0].start]}last(){let e=this.segments,t=this.points,n=e.length;return n&&t[e[n-1].end]}interpolate(e,t){let n=this.options,r=e[t],i=this.points,a=sf(this,{property:t,start:r,end:r});if(!a.length)return;let o=[],s=Ih(n),c,l;for(c=0,l=a.length;ce.replace(`rgb(`,`rgba(`).replace(`)`,`, 0.5)`));function ng(e){return eg[e%eg.length]}function rg(e){return tg[e%tg.length]}function ig(e,t){return e.borderColor=ng(t),e.backgroundColor=rg(t),++t}function ag(e,t){return e.backgroundColor=e.data.map(()=>ng(t++)),t}function og(e,t){return e.backgroundColor=e.data.map(()=>rg(t++)),t}function sg(e){let t=0;return(n,r)=>{let i=e.getDatasetMeta(r).controller;i instanceof lp?t=ag(n,t):i instanceof dp?t=og(n,t):i&&(t=ig(n,t))}}function cg(e){let t;for(t in e)if(e[t].borderColor||e[t].backgroundColor)return!0;return!1}function lg(e){return e&&(e.borderColor||e.backgroundColor)}function ug(){return Eu.borderColor!==`rgba(0,0,0,0.1)`||Eu.backgroundColor!==`rgba(0,0,0,0.1)`}var dg={id:`colors`,defaults:{enabled:!0,forceOverride:!1},beforeLayout(e,t,n){if(!n.enabled)return;let{data:{datasets:r},options:i}=e.config,{elements:a}=i,o=cg(r)||lg(i)||a&&cg(a)||ug();if(!n.forceOverride&&o)return;let s=sg(e);r.forEach(s)}};function fg(e,t,n,r,i){let a=i.samples||r;if(a>=n)return e.slice(t,t+n);let o=[],s=(n-2)/(a-2),c=0,l=t+n-1,u=t,d,f,p,m,h;for(o[c++]=e[u],d=0;dp&&(p=m,f=e[a],h=a);o[c++]=f,u=h}return o[c++]=e[l],o}function pg(e,t,n,r){let i=0,a=0,o,s,c,l,u,d,f,p,m,h,g=[],_=t+n-1,v=e[t].x,y=e[_].x-v;for(o=t;oh&&(h=l,f=o),i=(a*i+s.x)/++a;else{let n=o-1;if(!Hc(d)&&!Hc(f)){let t=Math.min(d,f),r=Math.max(d,f);t!==p&&t!==n&&g.push({...e[t],x:i}),r!==p&&r!==n&&g.push({...e[r],x:i})}o>0&&n!==p&&g.push(e[n]),g.push(s),u=t,a=0,m=h=l,d=f=p=o}}return g}function mg(e){if(e._decimated){let t=e._data;delete e._decimated,delete e._data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,writable:!0,value:t})}}function hg(e){e.data.datasets.forEach(e=>{mg(e)})}function gg(e,t){let n=t.length,r=0,i,{iScale:a}=e,{min:o,max:s,minDefined:c,maxDefined:l}=a.getUserBounds();return c&&(r=zl(Ul(t,a.axis,o).lo,0,n-1)),i=l?zl(Ul(t,a.axis,s).hi+1,r,n)-r:n-r,{start:r,count:i}}var _g={id:`decimation`,defaults:{algorithm:`min-max`,enabled:!1},beforeElementsUpdate:(e,t,n)=>{if(!n.enabled){hg(e);return}let r=e.width;e.data.datasets.forEach((t,i)=>{let{_data:a,indexAxis:o}=t,s=e.getDatasetMeta(i),c=a||t.data;if($u([o,e.options.indexAxis])===`y`||!s.controller.supportsDecimation)return;let l=e.scales[s.xAxisID];if(l.type!==`linear`&&l.type!==`time`||e.options.parsing)return;let{start:u,count:d}=gg(s,c);if(d<=(n.threshold||4*r)){mg(t);return}Hc(a)&&(t._data=c,delete t.data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(e){this._data=e}}));let f;switch(n.algorithm){case`lttb`:f=fg(c,u,d,r,n);break;case`min-max`:f=pg(c,u,d,r);break;default:throw Error(`Unsupported decimation algorithm '${n.algorithm}'`)}t._decimated=f})},destroy(e){hg(e)}};function vg(e,t,n){let r=e.segments,i=e.points,a=t.points,o=[];for(let e of r){let{start:r,end:s}=e;s=xg(r,s,i);let c=yg(n,i[r],i[s],e.loop);if(!t.segments){o.push({source:e,target:c,start:i[r],end:i[s]});continue}let l=sf(t,c);for(let t of l){let r=yg(n,a[t.start],a[t.end],t.loop),s=of(e,i,r);for(let e of s)o.push({source:e,target:t,start:{[n]:Sg(c,r,`start`,Math.max)},end:{[n]:Sg(c,r,`end`,Math.min)}})}}return o}function yg(e,t,n,r){if(r)return;let i=t[e],a=n[e];return e===`angle`&&(i=Ll(i),a=Ll(a)),{property:e,start:i,end:a}}function bg(e,t){let{x:n=null,y:r=null}=e||{},i=t.points,a=[];return t.segments.forEach(({start:e,end:t})=>{t=xg(e,t,i);let o=i[e],s=i[t];r===null?n!==null&&(a.push({x:n,y:o.y}),a.push({x:n,y:s.y})):(a.push({x:o.x,y:r}),a.push({x:s.x,y:r}))}),a}function xg(e,t,n){for(;t>e;t--){let e=n[t];if(!isNaN(e.x)&&!isNaN(e.y))break}return t}function Sg(e,t,n,r){return e&&t?r(e[n],t[n]):e?e[n]:t?t[n]:0}function Cg(e,t){let n=[],r=!1;return Uc(e)?(r=!0,n=e):n=bg(e,t),n.length?new Vh({points:n,options:{tension:0},_loop:r,_fullLoop:r}):null}function wg(e){return e&&e.fill!==!1}function Tg(e,t,n){let r=e[t].fill,i=[t],a;if(!n)return r;for(;r!==!1&&i.indexOf(r)===-1;){if(!Gc(r))return r;if(a=e[r],!a)return!1;if(a.visible)return r;i.push(r),r=a.fill}return!1}function Eg(e,t,n){let r=Ag(e);if(Wc(r))return!isNaN(r.value)&&r;let i=parseFloat(r);return Gc(i)&&Math.floor(i)===i?Dg(r[0],t,i,n):[`origin`,`start`,`end`,`stack`,`shape`].indexOf(r)>=0&&r}function Dg(e,t,n,r){return(e===`-`||e===`+`)&&(n=t+n),n===t||n<0||n>=r?!1:n}function Og(e,t){let n=null;return e===`start`?n=t.bottom:e===`end`?n=t.top:Wc(e)?n=t.getPixelForValue(e.value):t.getBasePixel&&(n=t.getBasePixel()),n}function kg(e,t,n){let r;return r=e===`start`?n:e===`end`?t.options.reverse?t.min:t.max:Wc(e)?e.value:t.getBaseValue(),r}function Ag(e){let t=e.options,n=t.fill,r=qc(n&&n.target,n);return r===void 0&&(r=!!t.backgroundColor),r===!1||r===null?!1:r===!0?`origin`:r}function jg(e){let{scale:t,index:n,line:r}=e,i=[],a=r.segments,o=r.points,s=Mg(t,n);s.push(Cg({x:null,y:t.bottom},r));for(let e=0;e=0;--t){let n=i[t].$filler;n&&(n.line.updateControlPoints(a,n.axis),r&&n.fill&&Vg(e.ctx,n,a))}},beforeDatasetsDraw(e,t,n){if(n.drawTime!==`beforeDatasetsDraw`)return;let r=e.getSortedVisibleDatasetMetas();for(let t=r.length-1;t>=0;--t){let n=r[t].$filler;wg(n)&&Vg(e.ctx,n,e.chartArea)}},beforeDatasetDraw(e,t,n){let r=t.meta.$filler;!wg(r)||n.drawTime!==`beforeDatasetDraw`||Vg(e.ctx,r,e.chartArea)},defaults:{propagate:!0,drawTime:`beforeDatasetDraw`}},Yg=(e,t)=>{let{boxHeight:n=t,boxWidth:r=t}=e;return e.usePointStyle&&(n=Math.min(n,t),r=e.pointStyleWidth||Math.min(r,t)),{boxWidth:r,boxHeight:n,itemHeight:Math.max(t,n)}},Xg=(e,t)=>e!==null&&t!==null&&e.datasetIndex===t.datasetIndex&&e.index===t.index,Zg=class extends um{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t,n){this.maxWidth=e,this.maxHeight=t,this._margins=n,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){let e=this.options.labels||{},t=Xc(e.generateLabels,[this.chart],this)||[];e.filter&&(t=t.filter(t=>e.filter(t,this.chart.data))),e.sort&&(t=t.sort((t,n)=>e.sort(t,n,this.chart.data))),this.options.reverse&&t.reverse(),this.legendItems=t}fit(){let{options:e,ctx:t}=this;if(!e.display){this.width=this.height=0;return}let n=e.labels,r=Qu(n.font),i=r.size,a=this._computeTitleHeight(),{boxWidth:o,itemHeight:s}=Yg(n,i),c,l;t.font=r.string,this.isHorizontal()?(c=this.maxWidth,l=this._fitRows(a,i,o,s)+10):(l=this.maxHeight,c=this._fitCols(a,r,o,s)+10),this.width=Math.min(c,e.maxWidth||this.maxWidth),this.height=Math.min(l,e.maxHeight||this.maxHeight)}_fitRows(e,t,n,r){let{ctx:i,maxWidth:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.lineWidths=[0],l=r+o,u=e;i.textAlign=`left`,i.textBaseline=`middle`;let d=-1,f=-l;return this.legendItems.forEach((e,p)=>{let m=n+t/2+i.measureText(e.text).width;(p===0||c[c.length-1]+m+2*o>a)&&(u+=l,c[c.length-(p>0?0:1)]=0,f+=l,d++),s[p]={left:0,top:f,row:d,width:m,height:r},c[c.length-1]+=m+o}),u}_fitCols(e,t,n,r){let{ctx:i,maxHeight:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.columnSizes=[],l=a-e,u=o,d=0,f=0,p=0,m=0;return this.legendItems.forEach((e,a)=>{let{itemWidth:h,itemHeight:g}=Qg(n,t,i,e,r);a>0&&f+g+2*o>l&&(u+=d+o,c.push({width:d,height:f}),p+=d+o,m++,d=f=0),s[a]={left:p,top:f,col:m,width:h,height:g},d=Math.max(d,h),f+=g+o}),u+=d,c.push({width:d,height:f}),u}adjustHitBoxes(){if(!this.options.display)return;let e=this._computeTitleHeight(),{legendHitBoxes:t,options:{align:n,labels:{padding:r},rtl:i}}=this,a=$d(i,this.left,this.width);if(this.isHorizontal()){let i=0,o=eu(n,this.left+r,this.right-this.lineWidths[i]);for(let s of t)i!==s.row&&(i=s.row,o=eu(n,this.left+r,this.right-this.lineWidths[i])),s.top+=this.top+e+r,s.left=a.leftForLtr(a.x(o),s.width),o+=s.width+r}else{let i=0,o=eu(n,this.top+e+r,this.bottom-this.columnSizes[i].height);for(let s of t)s.col!==i&&(i=s.col,o=eu(n,this.top+e+r,this.bottom-this.columnSizes[i].height)),s.top=o,s.left+=this.left+r,s.left=a.leftForLtr(a.x(s.left),s.width),o+=s.height+r}}isHorizontal(){return this.options.position===`top`||this.options.position===`bottom`}draw(){if(this.options.display){let e=this.ctx;Fu(e,this),this._draw(),Iu(e)}}_draw(){let{options:e,columnSizes:t,lineWidths:n,ctx:r}=this,{align:i,labels:a}=e,o=Eu.color,s=$d(e.rtl,this.left,this.width),c=Qu(a.font),{padding:l}=a,u=c.size,d=u/2,f;this.drawTitle(),r.textAlign=s.textAlign(`left`),r.textBaseline=`middle`,r.lineWidth=.5,r.font=c.string;let{boxWidth:p,boxHeight:m,itemHeight:h}=Yg(a,u),g=function(e,t,n){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;r.save();let i=qc(n.lineWidth,1);if(r.fillStyle=qc(n.fillStyle,o),r.lineCap=qc(n.lineCap,`butt`),r.lineDashOffset=qc(n.lineDashOffset,0),r.lineJoin=qc(n.lineJoin,`miter`),r.lineWidth=i,r.strokeStyle=qc(n.strokeStyle,o),r.setLineDash(qc(n.lineDash,[])),a.usePointStyle){let o={radius:m*Math.SQRT2/2,pointStyle:n.pointStyle,rotation:n.rotation,borderWidth:i},c=s.xPlus(e,p/2),l=t+d;Nu(r,o,c,l,a.pointStyleWidth&&p)}else{let a=t+Math.max((u-m)/2,0),o=s.leftForLtr(e,p),c=Xu(n.borderRadius);r.beginPath(),Object.values(c).some(e=>e!==0)?Uu(r,{x:o,y:a,w:p,h:m,radius:c}):r.rect(o,a,p,m),r.fill(),i!==0&&r.stroke()}r.restore()},_=function(e,t,n){Hu(r,n.text,e,t+h/2,c,{strikethrough:n.hidden,textAlign:s.textAlign(n.textAlign)})},v=this.isHorizontal(),y=this._computeTitleHeight();f=v?{x:eu(i,this.left+l,this.right-n[0]),y:this.top+l+y,line:0}:{x:this.left+l,y:eu(i,this.top+y+l,this.bottom-t[0].height),line:0},ef(this.ctx,e.textDirection);let b=h+l;this.legendItems.forEach((o,u)=>{r.strokeStyle=o.fontColor,r.fillStyle=o.fontColor;let m=r.measureText(o.text).width,h=s.textAlign(o.textAlign||=a.textAlign),x=p+d+m,S=f.x,C=f.y;s.setWidth(this.width),v?u>0&&S+x+l>this.right&&(C=f.y+=b,f.line++,S=f.x=eu(i,this.left+l,this.right-n[f.line])):u>0&&C+b>this.bottom&&(S=f.x=S+t[f.line].width+l,f.line++,C=f.y=eu(i,this.top+y+l,this.bottom-t[f.line].height));let w=s.x(S);if(g(w,C,o),S=tu(h,S+p+d,v?S+x:this.right,e.rtl),_(s.x(S),C,o),v)f.x+=x+l;else if(typeof o.text!=`string`){let e=c.lineHeight;f.y+=t_(o,e)+l}else f.y+=b}),tf(this.ctx,e.textDirection)}drawTitle(){let e=this.options,t=e.title,n=Qu(t.font),r=Zu(t.padding);if(!t.display)return;let i=$d(e.rtl,this.left,this.width),a=this.ctx,o=t.position,s=n.size/2,c=r.top+s,l,u=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),l=this.top+c,u=eu(e.align,u,this.right-d);else{let t=this.columnSizes.reduce((e,t)=>Math.max(e,t.height),0);l=c+eu(e.align,this.top,this.bottom-t-e.labels.padding-this._computeTitleHeight())}let f=eu(o,u,u+d);a.textAlign=i.textAlign($l(o)),a.textBaseline=`middle`,a.strokeStyle=t.color,a.fillStyle=t.color,a.font=n.string,Hu(a,t.text,f,l,n)}_computeTitleHeight(){let e=this.options.title,t=Qu(e.font),n=Zu(e.padding);return e.display?t.lineHeight+n.height:0}_getLegendItemAt(e,t){let n,r,i;if(Vl(e,this.left,this.right)&&Vl(t,this.top,this.bottom)){for(i=this.legendHitBoxes,n=0;ne.length>t.length?e:t)),t+n.size/2+r.measureText(i).width}function e_(e,t,n){let r=e;return typeof t.text!=`string`&&(r=t_(t,n)),r}function t_(e,t){return t*(e.text?e.text.length:0)}function n_(e,t){return!!((e===`mousemove`||e===`mouseout`)&&(t.onHover||t.onLeave)||t.onClick&&(e===`click`||e===`mouseup`))}var r_={id:`legend`,_element:Zg,start(e,t,n){let r=e.legend=new Zg({ctx:e.ctx,options:n,chart:e});Bp.configure(e,r,n),Bp.addBox(e,r)},stop(e){Bp.removeBox(e,e.legend),delete e.legend},beforeUpdate(e,t,n){let r=e.legend;Bp.configure(e,r,n),r.options=n},afterUpdate(e){let t=e.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(e,t){t.replay||e.legend.handleEvent(t.event)},defaults:{display:!0,position:`top`,align:`center`,fullSize:!0,reverse:!1,weight:1e3,onClick(e,t,n){let r=t.datasetIndex,i=n.chart;i.isDatasetVisible(r)?(i.hide(r),t.hidden=!0):(i.show(r),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:e=>e.chart.options.color,boxWidth:40,padding:10,generateLabels(e){let t=e.data.datasets,{labels:{usePointStyle:n,pointStyle:r,textAlign:i,color:a,useBorderRadius:o,borderRadius:s}}=e.legend.options;return e._getSortedDatasetMetas().map(e=>{let c=e.controller.getStyle(n?0:void 0),l=Zu(c.borderWidth);return{text:t[e.index].label,fillStyle:c.backgroundColor,fontColor:a,hidden:!e.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(l.width+l.height)/4,strokeStyle:c.borderColor,pointStyle:r||c.pointStyle,rotation:c.rotation,textAlign:i||c.textAlign,borderRadius:o&&(s||c.borderRadius),datasetIndex:e.index}},this)}},title:{color:e=>e.chart.options.color,display:!1,position:`center`,text:``}},descriptors:{_scriptable:e=>!e.startsWith(`on`),labels:{_scriptable:e=>![`generateLabels`,`filter`,`sort`].includes(e)}}},i_=class extends um{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t){let n=this.options;if(this.left=0,this.top=0,!n.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=t;let r=Uc(n.text)?n.text.length:1;this._padding=Zu(n.padding);let i=r*Qu(n.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=i:this.width=i}isHorizontal(){let e=this.options.position;return e===`top`||e===`bottom`}_drawArgs(e){let{top:t,left:n,bottom:r,right:i,options:a}=this,o=a.align,s=0,c,l,u;return this.isHorizontal()?(l=eu(o,n,i),u=t+e,c=i-n):(a.position===`left`?(l=n+e,u=eu(o,r,t),s=ml*-.5):(l=i-e,u=eu(o,t,r),s=ml*.5),c=r-t),{titleX:l,titleY:u,maxWidth:c,rotation:s}}draw(){let e=this.ctx,t=this.options;if(!t.display)return;let n=Qu(t.font),r=n.lineHeight/2+this._padding.top,{titleX:i,titleY:a,maxWidth:o,rotation:s}=this._drawArgs(r);Hu(e,t.text,0,0,n,{color:t.color,maxWidth:o,rotation:s,textAlign:$l(t.align),textBaseline:`middle`,translation:[i,a]})}};function a_(e,t){let n=new i_({ctx:e.ctx,options:t,chart:e});Bp.configure(e,n,t),Bp.addBox(e,n),e.titleBlock=n}var o_={id:`title`,_element:i_,start(e,t,n){a_(e,n)},stop(e){let t=e.titleBlock;Bp.removeBox(e,t),delete e.titleBlock},beforeUpdate(e,t,n){let r=e.titleBlock;Bp.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`bold`},fullSize:!0,padding:10,position:`top`,text:``,weight:2e3},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},s_=new WeakMap,c_={id:`subtitle`,start(e,t,n){let r=new i_({ctx:e.ctx,options:n,chart:e});Bp.configure(e,r,n),Bp.addBox(e,r),s_.set(e,r)},stop(e){Bp.removeBox(e,s_.get(e)),s_.delete(e)},beforeUpdate(e,t,n){let r=s_.get(e);Bp.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`normal`},fullSize:!0,padding:0,position:`top`,text:``,weight:1500},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},l_={average(e){if(!e.length)return!1;let t,n,r=new Set,i=0,a=0;for(t=0,n=e.length;te+t)/r.size,y:i/a}},nearest(e,t){if(!e.length)return!1;let n=t.x,r=t.y,i=1/0,a,o,s;for(a=0,o=e.length;a-1?e.split(` -`):e}function f_(e,t){let{element:n,datasetIndex:r,index:i}=t,a=e.getDatasetMeta(r).controller,{label:o,value:s}=a.getLabelAndValue(i);return{chart:e,label:o,parsed:a.getParsed(i),raw:e.data.datasets[r].data[i],formattedValue:s,dataset:a.getDataset(),dataIndex:i,datasetIndex:r,element:n}}function p_(e,t){let n=e.chart.ctx,{body:r,footer:i,title:a}=e,{boxWidth:o,boxHeight:s}=t,c=Qu(t.bodyFont),l=Qu(t.titleFont),u=Qu(t.footerFont),d=a.length,f=i.length,p=r.length,m=Zu(t.padding),h=m.height,g=0,_=r.reduce((e,t)=>e+t.before.length+t.lines.length+t.after.length,0);if(_+=e.beforeBody.length+e.afterBody.length,d&&(h+=d*l.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),_){let e=t.displayColors?Math.max(s,c.lineHeight):c.lineHeight;h+=p*e+(_-p)*c.lineHeight+(_-1)*t.bodySpacing}f&&(h+=t.footerMarginTop+f*u.lineHeight+(f-1)*t.footerSpacing);let v=0,y=function(e){g=Math.max(g,n.measureText(e).width+v)};return n.save(),n.font=l.string,Zc(e.title,y),n.font=c.string,Zc(e.beforeBody.concat(e.afterBody),y),v=t.displayColors?o+2+t.boxPadding:0,Zc(r,e=>{Zc(e.before,y),Zc(e.lines,y),Zc(e.after,y)}),v=0,n.font=u.string,Zc(e.footer,y),n.restore(),g+=m.width,{width:g,height:h}}function m_(e,t){let{y:n,height:r}=t;return ne.height-r/2?`bottom`:`center`}function h_(e,t,n,r){let{x:i,width:a}=r,o=n.caretSize+n.caretPadding;if(e===`left`&&i+a+o>t.width||e===`right`&&i-a-o<0)return!0}function g_(e,t,n,r){let{x:i,width:a}=n,{width:o,chartArea:{left:s,right:c}}=e,l=`center`;return r===`center`?l=i<=(s+c)/2?`left`:`right`:i<=a/2?l=`left`:i>=o-a/2&&(l=`right`),h_(l,e,t,n)&&(l=`center`),l}function __(e,t,n){let r=n.yAlign||t.yAlign||m_(e,n);return{xAlign:n.xAlign||t.xAlign||g_(e,t,n,r),yAlign:r}}function v_(e,t){let{x:n,width:r}=e;return t===`right`?n-=r:t===`center`&&(n-=r/2),n}function y_(e,t,n){let{y:r,height:i}=e;return t===`top`?r+=n:t===`bottom`?r-=i+n:r-=i/2,r}function b_(e,t,n,r){let{caretSize:i,caretPadding:a,cornerRadius:o}=e,{xAlign:s,yAlign:c}=n,l=i+a,{topLeft:u,topRight:d,bottomLeft:f,bottomRight:p}=Xu(o),m=v_(t,s),h=y_(t,c,l);return c===`center`?s===`left`?m+=l:s===`right`&&(m-=l):s===`left`?m-=Math.max(u,f)+i:s===`right`&&(m+=Math.max(d,p)+i),{x:zl(m,0,r.width-t.width),y:zl(h,0,r.height-t.height)}}function x_(e,t,n){let r=Zu(n.padding);return t===`center`?e.x+e.width/2:t===`right`?e.x+e.width-r.right:e.x+r.left}function S_(e){return u_([],d_(e))}function C_(e,t,n){return td(e,{tooltip:t,tooltipItems:n,type:`tooltip`})}function w_(e,t){let n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}var T_={beforeTitle:Bc,title(e){if(e.length>0){let t=e[0],n=t.chart.data.labels,r=n?n.length:0;if(this&&this.options&&this.options.mode===`dataset`)return t.dataset.label||``;if(t.label)return t.label;if(r>0&&t.dataIndex{let t={before:[],lines:[],after:[]},i=w_(n,e);u_(t.before,d_(E_(i,`beforeLabel`,this,e))),u_(t.lines,E_(i,`label`,this,e)),u_(t.after,d_(E_(i,`afterLabel`,this,e))),r.push(t)}),r}getAfterBody(e,t){return S_(E_(t.callbacks,`afterBody`,this,e))}getFooter(e,t){let{callbacks:n}=t,r=E_(n,`beforeFooter`,this,e),i=E_(n,`footer`,this,e),a=E_(n,`afterFooter`,this,e),o=[];return o=u_(o,d_(r)),o=u_(o,d_(i)),o=u_(o,d_(a)),o}_createItems(e){let t=this._active,n=this.chart.data,r=[],i=[],a=[],o=[],s,c;for(s=0,c=t.length;se.filter(t,r,i,n))),e.itemSort&&(o=o.sort((t,r)=>e.itemSort(t,r,n))),Zc(o,t=>{let n=w_(e.callbacks,t);r.push(E_(n,`labelColor`,this,t)),i.push(E_(n,`labelPointStyle`,this,t)),a.push(E_(n,`labelTextColor`,this,t))}),this.labelColors=r,this.labelPointStyles=i,this.labelTextColors=a,this.dataPoints=o,o}update(e,t){let n=this.options.setContext(this.getContext()),r=this._active,i,a=[];if(!r.length)this.opacity!==0&&(i={opacity:0});else{let e=l_[n.position].call(this,r,this._eventPosition);a=this._createItems(n),this.title=this.getTitle(a,n),this.beforeBody=this.getBeforeBody(a,n),this.body=this.getBody(a,n),this.afterBody=this.getAfterBody(a,n),this.footer=this.getFooter(a,n);let t=this._size=p_(this,n),o=Object.assign({},e,t),s=__(this.chart,n,o),c=b_(n,o,s,this.chart);this.xAlign=s.xAlign,this.yAlign=s.yAlign,i={opacity:1,x:c.x,y:c.y,width:t.width,height:t.height,caretX:e.x,caretY:e.y}}this._tooltipItems=a,this.$context=void 0,i&&this._resolveAnimations().update(this,i),e&&n.external&&n.external.call(this,{chart:this.chart,tooltip:this,replay:t})}drawCaret(e,t,n,r){let i=this.getCaretPosition(e,n,r);t.lineTo(i.x1,i.y1),t.lineTo(i.x2,i.y2),t.lineTo(i.x3,i.y3)}getCaretPosition(e,t,n){let{xAlign:r,yAlign:i}=this,{caretSize:a,cornerRadius:o}=n,{topLeft:s,topRight:c,bottomLeft:l,bottomRight:u}=Xu(o),{x:d,y:f}=e,{width:p,height:m}=t,h,g,_,v,y,b;return i===`center`?(y=f+m/2,r===`left`?(h=d,g=h-a,v=y+a,b=y-a):(h=d+p,g=h+a,v=y-a,b=y+a),_=h):(g=r===`left`?d+Math.max(s,l)+a:r===`right`?d+p-Math.max(c,u)-a:this.caretX,i===`top`?(v=f,y=v-a,h=g-a,_=g+a):(v=f+m,y=v+a,h=g+a,_=g-a),b=v),{x1:h,x2:g,x3:_,y1:v,y2:y,y3:b}}drawTitle(e,t,n){let r=this.title,i=r.length,a,o,s;if(i){let c=$d(n.rtl,this.x,this.width);for(e.x=x_(this,n.titleAlign,n),t.textAlign=c.textAlign(n.titleAlign),t.textBaseline=`middle`,a=Qu(n.titleFont),o=n.titleSpacing,t.fillStyle=n.titleColor,t.font=a.string,s=0;se!==0)?(e.beginPath(),e.fillStyle=i.multiKeyBackground,Uu(e,{x:t,y:p,w:c,h:s,radius:o}),e.fill(),e.stroke(),e.fillStyle=a.backgroundColor,e.beginPath(),Uu(e,{x:n,y:p+1,w:c-2,h:s-2,radius:o}),e.fill()):(e.fillStyle=i.multiKeyBackground,e.fillRect(t,p,c,s),e.strokeRect(t,p,c,s),e.fillStyle=a.backgroundColor,e.fillRect(n,p+1,c-2,s-2))}e.fillStyle=this.labelTextColors[n]}drawBody(e,t,n){let{body:r}=this,{bodySpacing:i,bodyAlign:a,displayColors:o,boxHeight:s,boxWidth:c,boxPadding:l}=n,u=Qu(n.bodyFont),d=u.lineHeight,f=0,p=$d(n.rtl,this.x,this.width),m=function(n){t.fillText(n,p.x(e.x+f),e.y+d/2),e.y+=d+i},h=p.textAlign(a),g,_,v,y,b,x,S;for(t.textAlign=a,t.textBaseline=`middle`,t.font=u.string,e.x=x_(this,h,n),t.fillStyle=n.bodyColor,Zc(this.beforeBody,m),f=o&&h!==`right`?a===`center`?c/2+l:c+2+l:0,y=0,x=r.length;y0&&t.stroke()}_updateAnimationTarget(e){let t=this.chart,n=this.$animations,r=n&&n.x,i=n&&n.y;if(r||i){let n=l_[e.position].call(this,this._active,this._eventPosition);if(!n)return;let a=this._size=p_(this,e),o=Object.assign({},n,this._size),s=__(t,e,o),c=b_(e,o,s,t);(r._to!==c.x||i._to!==c.y)&&(this.xAlign=s.xAlign,this.yAlign=s.yAlign,this.width=a.width,this.height=a.height,this.caretX=n.x,this.caretY=n.y,this._resolveAnimations().update(this,c))}}_willRender(){return!!this.opacity}draw(e){let t=this.options.setContext(this.getContext()),n=this.opacity;if(!n)return;this._updateAnimationTarget(t);let r={width:this.width,height:this.height},i={x:this.x,y:this.y};n=Math.abs(n)<.001?0:n;let a=Zu(t.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;t.enabled&&o&&(e.save(),e.globalAlpha=n,this.drawBackground(i,e,r,t),ef(e,t.textDirection),i.y+=a.top,this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),tf(e,t.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,t){let n=this._active,r=e.map(({datasetIndex:e,index:t})=>{let n=this.chart.getDatasetMeta(e);if(!n)throw Error(`Cannot find a dataset at index `+e);return{datasetIndex:e,element:n.data[t],index:t}}),i=!Qc(n,r),a=this._positionChanged(r,t);(i||a)&&(this._active=r,this._eventPosition=t,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,t,n=!0){if(t&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let r=this.options,i=this._active||[],a=this._getActiveElements(e,i,t,n),o=this._positionChanged(a,e),s=t||!Qc(a,i)||o;return s&&(this._active=a,(r.enabled||r.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,t))),s}_getActiveElements(e,t,n,r){let i=this.options;if(e.type===`mouseout`)return[];if(!r)return t.filter(e=>this.chart.data.datasets[e.datasetIndex]&&this.chart.getDatasetMeta(e.datasetIndex).controller.getParsed(e.index)!==void 0);let a=this.chart.getElementsAtEventForMode(e,i.mode,i,n);return i.reverse&&a.reverse(),a}_positionChanged(e,t){let{caretX:n,caretY:r,options:i}=this,a=l_[i.position].call(this,e,t);return a!==!1&&(n!==a.x||r!==a.y)}},O_=Object.freeze({__proto__:null,Colors:dg,Decimation:_g,Filler:Jg,Legend:r_,SubTitle:c_,Title:o_,Tooltip:{id:`tooltip`,_element:D_,positioners:l_,afterInit(e,t,n){n&&(e.tooltip=new D_({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){let t=e.tooltip;if(t&&t._willRender()){let n={tooltip:t};if(e.notifyPlugins(`beforeTooltipDraw`,{...n,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins(`afterTooltipDraw`,n)}},afterEvent(e,t){if(e.tooltip){let n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:`average`,backgroundColor:`rgba(0,0,0,0.8)`,titleColor:`#fff`,titleFont:{weight:`bold`},titleSpacing:2,titleMarginBottom:6,titleAlign:`left`,bodyColor:`#fff`,bodySpacing:2,bodyFont:{},bodyAlign:`left`,footerColor:`#fff`,footerSpacing:2,footerMarginTop:6,footerFont:{weight:`bold`},footerAlign:`left`,padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:`#fff`,displayColors:!0,boxPadding:0,borderColor:`rgba(0,0,0,0)`,borderWidth:0,animation:{duration:400,easing:`easeOutQuart`},animations:{numbers:{type:`number`,properties:[`x`,`y`,`width`,`height`,`caretX`,`caretY`]},opacity:{easing:`linear`,duration:200}},callbacks:T_},defaultRoutes:{bodyFont:`font`,footerFont:`font`,titleFont:`font`},descriptors:{_scriptable:e=>e!==`filter`&&e!==`itemSort`&&e!==`external`,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:`animation`}},additionalOptionScopes:[`interaction`]}}),k_=(e,t,n,r)=>(typeof t==`string`?(n=e.push(t)-1,r.unshift({index:n,label:t})):isNaN(t)&&(n=null),n);function A_(e,t,n,r){let i=e.indexOf(t);return i===-1?k_(e,t,n,r):i===e.lastIndexOf(t)?i:n}var j_=(e,t)=>e===null?null:zl(Math.round(e),0,t);function M_(e){let t=this.getLabels();return e>=0&&et.length-1?null:this.getPixelForValue(t[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}};function P_(e,t){let n=[],{bounds:r,step:i,min:a,max:o,precision:s,count:c,maxTicks:l,maxDigits:u,includeBounds:d}=e,f=i||1,p=l-1,{min:m,max:h}=t,g=!Hc(a),_=!Hc(o),v=!Hc(c),y=(h-m)/(u+1),b=Tl((h-m)/p/f)*f,x,S,C,w;if(b<1e-14&&!g&&!_)return[{value:m},{value:h}];w=Math.ceil(h/b)-Math.floor(m/b),w>p&&(b=Tl(w*b/p/f)*f),Hc(s)||(x=10**s,b=Math.ceil(b*x)/x),r===`ticks`?(S=Math.floor(m/b)*b,C=Math.ceil(h/b)*b):(S=m,C=h),g&&_&&i&&kl((o-a)/i,b/1e3)?(w=Math.round(Math.min((o-a)/b,l)),b=(o-a)/w,S=a,C=o):v?(S=g?a:S,C=_?o:C,w=c-1,b=(C-S)/w):(w=(C-S)/b,w=wl(w,Math.round(w),b/1e3)?Math.round(w):Math.ceil(w));let ee=Math.max(Nl(b),Nl(S));x=10**(Hc(s)?ee:s),S=Math.round(S*x)/x,C=Math.round(C*x)/x;let te=0;for(g&&(d&&S!==a?(n.push({value:a}),So)break;n.push({value:e})}return _&&d&&C!==o?n.length&&wl(n[n.length-1].value,o,F_(o,y,e))?n[n.length-1].value=o:n.push({value:o}):(!_||C===o)&&n.push({value:C}),n}function F_(e,t,{horizontal:n,minRotation:r}){let i=jl(r),a=(n?Math.sin(i):Math.cos(i))||.001,o=.75*t*(``+e).length;return Math.min(t/a,o)}var I_=class extends Am{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,t){return Hc(e)||(typeof e==`number`||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){let{beginAtZero:e}=this.options,{minDefined:t,maxDefined:n}=this.getUserBounds(),{min:r,max:i}=this,a=e=>r=t?r:e,o=e=>i=n?i:e;if(e){let e=Cl(r),t=Cl(i);e<0&&t<0?o(0):e>0&&t>0&&a(0)}if(r===i){let t=i===0?1:Math.abs(i*.05);o(i+t),e||a(r-t)}this.min=r,this.max=i}getTickLimit(){let{maxTicksLimit:e,stepSize:t}=this.options.ticks,n;return t?(n=Math.ceil(this.max/t)-Math.floor(this.min/t)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${t} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),e||=11),e&&(n=Math.min(e,n)),n}computeTickLimit(){return 1/0}buildTicks(){let e=this.options,t=e.ticks,n=this.getTickLimit();n=Math.max(2,n);let r=P_({maxTicks:n,bounds:e.bounds,min:e.min,max:e.max,precision:t.precision,step:t.stepSize,count:t.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:t.minRotation||0,includeBounds:t.includeBounds!==!1},this._range||this);return e.bounds===`ticks`&&Al(r,this,`value`),e.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){let e=this.ticks,t=this.min,n=this.max;if(super.configure(),this.options.offset&&e.length){let r=(n-t)/Math.max(e.length-1,1)/2;t-=r,n+=r}this._startValue=t,this._endValue=n,this._valueRange=n-t}getLabelForValue(e){return _u(e,this.chart.options.locale,this.options.ticks.format)}},L_=class extends I_{static id=`linear`;static defaults={ticks:{callback:bu.formatters.numeric}};determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=Gc(e)?e:0,this.max=Gc(t)?t:1,this.handleTickRangeOptions()}computeTickLimit(){let e=this.isHorizontal(),t=e?this.width:this.height,n=jl(this.options.ticks.minRotation),r=(e?Math.sin(n):Math.cos(n))||.001,i=this._resolveTickFontOptions(0);return Math.ceil(t/Math.min(40,i.lineHeight/r))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}},R_=e=>Math.floor(Sl(e)),z_=(e,t)=>10**(R_(e)+t);function B_(e){return e/10**R_(e)==1}function V_(e,t,n){let r=10**n,i=Math.floor(e/r);return Math.ceil(t/r)-i}function H_(e,t){let n=R_(t-e);for(;V_(e,t,n)>10;)n++;for(;V_(e,t,n)<10;)n--;return Math.min(n,R_(e))}function U_(e,{min:t,max:n}){t=Kc(e.min,t);let r=[],i=R_(t),a=H_(t,n),o=a<0?10**Math.abs(a):1,s=10**a,c=i>a?10**i:0,l=Math.round((t-c)*o)/o,u=Math.floor((t-c)/s/10)*s*10,d=Math.floor((l-u)/10**a),f=Kc(e.min,Math.round((c+u+d*10**a)*o)/o);for(;f=10?d=d<15?15:20:d++,d>=20&&(a++,d=2,o=a>=0?1:o),f=Math.round((c+u+d*10**a)*o)/o;let p=Kc(e.max,f);return r.push({value:p,major:B_(p),significand:d}),r}var W_=class extends Am{static id=`logarithmic`;static defaults={ticks:{callback:bu.formatters.logarithmic,major:{enabled:!0}}};constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,t){let n=I_.prototype.parse.apply(this,[e,t]);if(n===0){this._zero=!0;return}return Gc(n)&&n>0?n:null}determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=Gc(e)?Math.max(0,e):null,this.max=Gc(t)?Math.max(0,t):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!Gc(this._userMin)&&(this.min=e===z_(this.min,0)?z_(this.min,-1):z_(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:e,maxDefined:t}=this.getUserBounds(),n=this.min,r=this.max,i=t=>n=e?n:t,a=e=>r=t?r:e;n===r&&(n<=0?(i(1),a(10)):(i(z_(n,-1)),a(z_(r,1)))),n<=0&&i(z_(r,-1)),r<=0&&a(z_(n,1)),this.min=n,this.max=r}buildTicks(){let e=this.options,t=U_({min:this._userMin,max:this._userMax},this);return e.bounds===`ticks`&&Al(t,this,`value`),e.reverse?(t.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),t}getLabelForValue(e){return e===void 0?`0`:_u(e,this.chart.options.locale,this.options.ticks.format)}configure(){let e=this.min;super.configure(),this._startValue=Sl(e),this._valueRange=Sl(this.max)-Sl(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(Sl(e)-this._startValue)/this._valueRange)}getValueForPixel(e){let t=this.getDecimalForPixel(e);return 10**(this._startValue+t*this._valueRange)}};function G_(e){let t=e.ticks;if(t.display&&e.display){let e=Zu(t.backdropPadding);return qc(t.font&&t.font.size,Eu.font.size)+e.height}return 0}function K_(e,t,n){return n=Uc(n)?n:[n],{w:ku(e,t.string,n),h:n.length*t.lineHeight}}function q_(e,t,n,r,i){return e===r||e===i?{start:t-n/2,end:t+n/2}:ei?{start:t-n,end:t}:{start:t,end:t+n}}function J_(e){let t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},n=Object.assign({},t),r=[],i=[],a=e._pointLabels.length,o=e.options.pointLabels,s=o.centerPointLabels?ml/a:0;for(let c=0;ct.r&&(s=(r.end-t.r)/a,e.r=Math.max(e.r,t.r+s)),i.startt.b&&(c=(i.end-t.b)/o,e.b=Math.max(e.b,t.b+c))}function X_(e,t,n){let r=e.drawingArea,{extra:i,additionalAngle:a,padding:o,size:s}=n,c=e.getPointPosition(t,r+i+o,a),l=Math.round(Ml(Ll(c.angle+yl))),u=tv(c.y,s.h,l),d=$_(l),f=ev(c.x,s.w,d);return{visible:!0,x:c.x,y:u,textAlign:d,left:f,top:u,right:f+s.w,bottom:u+s.h}}function Z_(e,t){if(!t)return!0;let{left:n,top:r,right:i,bottom:a}=e;return!(Pu({x:n,y:r},t)||Pu({x:n,y:a},t)||Pu({x:i,y:r},t)||Pu({x:i,y:a},t))}function Q_(e,t,n){let r=[],i=e._pointLabels.length,a=e.options,{centerPointLabels:o,display:s}=a.pointLabels,c={extra:G_(a)/2,additionalAngle:o?ml/i:0},l;for(let a=0;a270||n<90)&&(e-=t),e}function nv(e,t,n){let{left:r,top:i,right:a,bottom:o}=n,{backdropColor:s}=t;if(!Hc(s)){let n=Xu(t.borderRadius),c=Zu(t.backdropPadding);e.fillStyle=s;let l=r-c.left,u=i-c.top,d=a-r+c.width,f=o-i+c.height;Object.values(n).some(e=>e!==0)?(e.beginPath(),Uu(e,{x:l,y:u,w:d,h:f,radius:n}),e.fill()):e.fillRect(l,u,d,f)}}function rv(e,t){let{ctx:n,options:{pointLabels:r}}=e;for(let i=t-1;i>=0;i--){let t=e._pointLabelItems[i];if(!t.visible)continue;let a=r.setContext(e.getPointLabelContext(i));nv(n,a,t);let o=Qu(a.font),{x:s,y:c,textAlign:l}=t;Hu(n,e._pointLabels[i],s,c+o.lineHeight/2,o,{color:a.color,textAlign:l,textBaseline:`middle`})}}function iv(e,t,n,r){let{ctx:i}=e;if(n)i.arc(e.xCenter,e.yCenter,t,0,hl);else{let n=e.getPointPosition(0,t);i.moveTo(n.x,n.y);for(let a=1;a{let n=Xc(this.options.pointLabels.callback,[e,t],this);return n||n===0?n:``}).filter((e,t)=>this.chart.getDataVisibility(t))}fit(){let e=this.options;e.display&&e.pointLabels.display?J_(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,t,n,r){this.xCenter+=Math.floor((e-t)/2),this.yCenter+=Math.floor((n-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,t,n,r))}getIndexAngle(e){let t=hl/(this._pointLabels.length||1),n=this.options.startAngle||0;return Ll(e*t+jl(n))}getDistanceFromCenterForValue(e){if(Hc(e))return NaN;let t=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*t:(e-this.min)*t}getValueForDistanceFromCenter(e){if(Hc(e))return NaN;let t=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-t:this.min+t}getPointLabelContext(e){let t=this._pointLabels||[];if(e>=0&&e{if(t!==0||t===0&&this.min<0){s=this.getDistanceFromCenterForValue(e.value);let n=this.getContext(t),o=r.setContext(n),c=i.setContext(n);av(this,o,s,a,c)}}),n.display){for(e.save(),o=a-1;o>=0;o--){let r=n.setContext(this.getPointLabelContext(o)),{color:i,lineWidth:a}=r;!a||!i||(e.lineWidth=a,e.strokeStyle=i,e.setLineDash(r.borderDash),e.lineDashOffset=r.borderDashOffset,s=this.getDistanceFromCenterForValue(t.reverse?this.min:this.max),c=this.getPointPosition(o,s),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(c.x,c.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){let e=this.ctx,t=this.options,n=t.ticks;if(!n.display)return;let r=this.getIndexAngle(0),i,a;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(r),e.textAlign=`center`,e.textBaseline=`middle`,this.ticks.forEach((r,o)=>{if(o===0&&this.min>=0&&!t.reverse)return;let s=n.setContext(this.getContext(o)),c=Qu(s.font);if(i=this.getDistanceFromCenterForValue(this.ticks[o].value),s.showLabelBackdrop){e.font=c.string,a=e.measureText(r.label).width,e.fillStyle=s.backdropColor;let t=Zu(s.backdropPadding);e.fillRect(-a/2-t.left,-i-c.size/2-t.top,a+t.width,c.size+t.height)}Hu(e,r.label,0,-i,c,{color:s.color,strokeColor:s.textStrokeColor,strokeWidth:s.textStrokeWidth})}),e.restore()}drawTitle(){}},cv={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},lv=Object.keys(cv);function uv(e,t){return e-t}function dv(e,t){if(Hc(t))return null;let n=e._adapter,{parser:r,round:i,isoWeekday:a}=e._parseOpts,o=t;return typeof r==`function`&&(o=r(o)),Gc(o)||(o=typeof r==`string`?n.parse(o,r):n.parse(o)),o===null?null:(i&&(o=i===`week`&&(Ol(a)||a===!0)?n.startOf(o,`isoWeek`,a):n.startOf(o,i)),+o)}function fv(e,t,n,r){let i=lv.length;for(let a=lv.indexOf(e);a=lv.indexOf(n);a--){let n=lv[a];if(cv[n].common&&e._adapter.diff(i,r,n)>=t-1)return n}return lv[n?lv.indexOf(n):0]}function mv(e){for(let t=lv.indexOf(e)+1,n=lv.length;t=t?n[r]:n[i];e[a]=!0}}function gv(e,t,n,r){let i=e._adapter,a=+i.startOf(t[0].value,r),o=t[t.length-1].value,s,c;for(s=a;s<=o;s=+i.add(s,1,r))c=n[s],c>=0&&(t[c].major=!0);return t}function _v(e,t,n){let r=[],i={},a=t.length,o,s;for(o=0;o+e.value))}initOffsets(e=[]){let t=0,n=0,r,i;this.options.offset&&e.length&&(r=this.getDecimalForValue(e[0]),t=e.length===1?1-r:(this.getDecimalForValue(e[1])-r)/2,i=this.getDecimalForValue(e[e.length-1]),n=e.length===1?i:(i-this.getDecimalForValue(e[e.length-2]))/2);let a=e.length<3?.5:.25;t=zl(t,0,a),n=zl(n,0,a),this._offsets={start:t,end:n,factor:1/(t+1+n)}}_generate(){let e=this._adapter,t=this.min,n=this.max,r=this.options,i=r.time,a=i.unit||fv(i.minUnit,t,n,this._getLabelCapacity(t)),o=qc(r.ticks.stepSize,1),s=a===`week`&&i.isoWeekday,c=Ol(s)||s===!0,l={},u=t,d,f;if(c&&(u=+e.startOf(u,`isoWeek`,s)),u=+e.startOf(u,c?`day`:a),e.diff(n,t,a)>1e5*o)throw Error(t+` and `+n+` are too far apart with stepSize of `+o+` `+a);let p=r.ticks.source===`data`&&this.getDataTimestamps();for(d=u,f=0;d+e)}getLabelForValue(e){let t=this._adapter,n=this.options.time;return n.tooltipFormat?t.format(e,n.tooltipFormat):t.format(e,n.displayFormats.datetime)}format(e,t){let n=this.options.time.displayFormats,r=this._unit,i=t||n[r];return this._adapter.format(e,i)}_tickFormatFunction(e,t,n,r){let i=this.options,a=i.ticks.callback;if(a)return Xc(a,[e,t,n],this);let o=i.time.displayFormats,s=this._unit,c=this._majorUnit,l=s&&o[s],u=c&&o[c],d=n[t],f=c&&u&&d&&d.major;return this._adapter.format(e,r||(f?u:l))}generateTickLabels(e){let t,n,r;for(t=0,n=e.length;t0?o:1}getDataTimestamps(){let e=this._cache.data||[],t,n;if(e.length)return e;let r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(t=0,n=r.length;t=e[r].pos&&t<=e[i].pos&&({lo:r,hi:i}=Ul(e,`pos`,t)),{pos:a,time:s}=e[r],{pos:o,time:c}=e[i]):(t>=e[r].time&&t<=e[i].time&&({lo:r,hi:i}=Ul(e,`time`,t)),{time:a,pos:s}=e[r],{time:o,pos:c}=e[i]);let l=o-a;return l?s+(c-s)*(t-a)/l:s}var bv=class extends vv{static id=`timeseries`;static defaults=vv.defaults;constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let e=this._getTimestampsForTable(),t=this._table=this.buildLookupTable(e);this._minPos=yv(t,this.min),this._tableRange=yv(t,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){let{min:t,max:n}=this,r=[],i=[],a,o,s,c,l;for(a=0,o=e.length;a=t&&c<=n&&r.push(c);if(r.length<2)return[{time:t,pos:0},{time:n,pos:1}];for(a=0,o=r.length;ae-t)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;let t=this.getDataTimestamps(),n=this.getLabelTimestamps();return e=t.length&&n.length?this.normalize(t.concat(n)):t.length?t:n,e=this._cache.all=e,e}getDecimalForValue(e){return(yv(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){let t=this._offsets,n=this.getDecimalForPixel(e)/t.factor-t.end;return yv(this._table,n*this._tableRange+this._minPos,!0)}},xv=[fp,$h,O_,Object.freeze({__proto__:null,CategoryScale:N_,LinearScale:L_,LogarithmicScale:W_,RadialLinearScale:sv,TimeScale:vv,TimeSeriesScale:bv})];vh.register(...xv);var Sv=vh,Cv=R(``);function wv(e,t){E(t,!0);let n=ya(t,`class`,3,``),r=ya(t,`ariaLabel`,3,``),i=k(null),a=null;An(()=>{if(Oa.tick,!I(i)||typeof t.build!=`function`)return;let e=t.build();if(!e){a&&=(a.destroy(),null);return}return a&&=(a.destroy(),null),a=new Sv(I(i).getContext(`2d`),e),()=>{a&&=(a.destroy(),null)}});var o=Cv();ga(o,e=>A(i,e),()=>I(i)),F(()=>{U(o,1,Fi(n())),W(o,`aria-label`,r())}),z(e,o),D()}var Tv=R(``),Ev=R(`
`);function Dv(e,t){E(t,!0);let n=ya(t,`options`,19,()=>[]),r=ya(t,`ariaLabel`,3,``),i=ya(t,`class`,3,``);var a=Ev();H(a,21,n,e=>e.value,(e,n)=>{var r=Tv();let i;var a=M(r,!0);T(r),F(()=>{i=U(r,1,`segmented-btn svelte-92fh5i`,null,i,{active:t.value===I(n).value}),W(r,`aria-pressed`,t.value===I(n).value),B(a,I(n).label)}),L(`click`,r,()=>t.onchange?.(I(n).value)),z(e,r)}),T(a),F(()=>{U(a,1,Fi([`segmented-control`,i()]),`svelte-92fh5i`),W(a,`aria-label`,r())}),z(e,a),D()}Hr([`click`]);function Ov(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function kv(){return{grid:Ov(`--chart-grid`),text:Ov(`--chart-text`),dayMarker:Ov(`--chart-day-marker`),tooltipBg:Ov(`--chart-tooltip-bg`),tooltipBorder:Ov(`--chart-tooltip-border`),tooltipText:Ov(`--chart-tooltip-text`)}}function Av(){return{size:11,family:`'SF Mono', Menlo, Consolas, monospace`}}function jv(e,t){return{backgroundColor:e.tooltipBg,borderColor:e.tooltipBorder,borderWidth:1,titleColor:e.tooltipText,bodyColor:e.tooltipText,callbacks:t}}function Mv(e){if(typeof document>`u`||!document.body)return e;let t=document.createElement(`span`);t.style.display=`none`,t.style.color=e,document.body.appendChild(t);let n=getComputedStyle(t).color;return document.body.removeChild(t),n||e}var Nv=[`#c2845a`,`#7a9e7e`,`#d4a574`,`#b8a98e`,`#8b9e6b`,`#7d8a97`,`#c47a5a`,`#6b8e6b`,`#a09486`,`#9b7ea4`,`#c49a6c`];function Pv(){return[...Nv]}function Fv(e){let t=5381,n=String(e||``);for(let e=0;ers(e)}}var Rv={seconds:{apiName:`second`,windowLabel:`Last 60 seconds`,refreshMs:2e3},minutes:{apiName:`minute`,windowLabel:`Last 60 minutes`,refreshMs:5e3},hours:{apiName:`hour`,windowLabel:`Last 24 hours`,refreshMs:2e4},days:{apiName:`day`,windowLabel:`Last 30 days`,refreshMs:6e4}},zv=[{value:`seconds`,label:`Seconds`},{value:`minutes`,label:`Minutes`},{value:`hours`,label:`Hours`},{value:`days`,label:`Days`}];function Bv(){return{input:0,output:0,prompt:0,local:0}}function Vv(e){return String(e).padStart(2,`0`)}function Hv(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function Uv(e,t){if(!Number.isFinite(t))return``;let n=new Date(t);switch(e){case`seconds`:return Vv(n.getHours())+`:`+Vv(n.getMinutes())+`:`+Vv(n.getSeconds());case`minutes`:return Vv(n.getHours())+`:`+Vv(n.getMinutes());case`hours`:return Vv(n.getHours())+`:00`;default:return Vv(n.getMonth()+1)+`-`+Vv(n.getDate())}}function Wv(e,t){let n=[],r=[],i={input:[],output:[],prompt:[],local:[]},a=Bv();for(let o of e||[]){let e=Date.parse(o&&o.start),s=Hv(o&&o.input_tokens),c=Hv(o&&o.output_tokens),l=Hv(o&&o.prompt_cached_tokens),u=Hv(o&&o.locally_cached_tokens);n.push(Uv(t,e)),r.push(Number.isFinite(e)?e:null),i.input.push(s),i.output.push(c),i.prompt.push(l),i.local.push(u),a.input+=s,a.output+=c,a.prompt+=l,a.local+=u}return{labels:n,stamps:r,cols:i,totals:a}}function Gv(e){let t=e||Bv();return t.input+t.output+t.prompt+t.local>0}function Kv(e,t){return rs(Math.max(0,Math.round(e&&e[t]||0)))}function qv(e){return(Rv[e]||Rv.minutes).windowLabel}function Jv(e,t){return`Live token throughput, `+qv(t).toLowerCase()+`. Input `+Kv(e,`input`)+`, output `+Kv(e,`output`)+`, prompt cached `+Kv(e,`prompt`)+`, locally cached `+Kv(e,`local`)+` tokens.`}function Yv(e,t,n,r){let i=e=>rs(Math.max(0,Math.round(e))),a=n.stamps,o=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderWidth:0,borderRadius:0,categoryPercentage:1,barPercentage:1,stack:`tokens`});return{type:`bar`,plugins:[{id:`liveTokensDayMarks`,afterDatasetsDraw:t=>{if(r===`days`)return;let n=t.getDatasetMeta(0),i=t.chartArea;if(!n||!n.data||!i)return;let o=t.ctx;o.save(),o.font=`10px 'SF Mono', Menlo, Consolas, monospace`;let s=null;for(let t=0;t{if(!e.length)return``;let t=a[e[0].dataIndex];if(!t)return e[0].label;let n=new Date(t);return r===`days`?n.toLocaleDateString():n.toLocaleString()},label:e=>e.dataset.label+`: `+i(e.parsed.y),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+i(t)}})}}}}var Xv=900,Zv=6,Qv=new class{#e=k(`minutes`);get granularity(){return I(this.#e)}set granularity(e){A(this.#e,e,!0)}#t=k(j([]));get buckets(){return I(this.#t)}set buckets(e){A(this.#t,e,!0)}#n=k(!1);get active(){return I(this.#n)}set active(e){A(this.#n,e,!0)}#r=null;#i=null;#a=null;#o=0;#s=null;#c=!1;start(){this.stop(),this.active=!0,this.fetch(),this.#l(),this.#u()}stop(){this.active=!1,this.#r&&=(clearInterval(this.#r),null),this.#i&&=(clearTimeout(this.#i),null),this.#a&&=(clearTimeout(this.#a),null),this.#o=0,this.#s&&=(this.#s.abort(),null),this.buckets=[]}setGranularity(e){!Rv[e]||e===this.granularity||(this.granularity=e,this.buckets=[],this.#l(),this.fetch())}#l(){this.#r&&=(clearInterval(this.#r),null);let e=Rv[this.granularity]||Rv.minutes;this.#r=setInterval(()=>{this.active&&this.fetch()},e.refreshMs)}noteUsageEvent(e){!this.active||e!==`usage.flushed`||(this.#i||=setTimeout(()=>{this.#i=null,this.fetch()},Xv))}async fetch(){if(!this.active||this.#c)return;this.#c=!0;let e=this.granularity;try{let t=await fo(`/admin/usage/throughput?granularity=`+(Rv[e]||Rv.minutes).apiName,{label:`token throughput`});if(t.stale||!t.ok||this.granularity!==e)return;this.buckets=t.data&&Array.isArray(t.data.buckets)?t.data.buckets:[]}catch(e){if(mo(e))return;console.error(`Failed to fetch token throughput:`,e)}finally{this.#c=!1,this.active&&this.granularity!==e&&this.fetch()}}async#u(){await _o.ensureLoaded(),this.active&&_o.liveLogsVisible()&&(typeof ReadableStream>`u`||(this.#s&&this.#s.abort(),this.#s=new AbortController,this.#d(this.#s)))}async#d(e){try{let t=await lo(`/admin/live/logs?types=usage`,{signal:e.signal});if(!t.ok||!t.body||typeof t.body.getReader!=`function`){this.#m();return}this.#o=0,await this.#f(t.body.getReader()),this.#m()}catch(e){if(mo(e))return;console.error(`Live usage stream failed:`,e),this.#m()}}async#f(e){let t=new TextDecoder,n=``;for(;;){let r=await e.read();if(r.done)break;n+=t.decode(r.value,{stream:!0});let i;for(;i=n.match(/\r?\n\r?\n/);){let e=i.index,t=n.slice(0,e);n=n.slice(e+i[0].length),this.#p(t)}}n+=t.decode(),n.trim()&&this.#p(n)}#p(e){let t=String(e||``).split(/\r?\n/),n=[];for(let e of t)e.indexOf(`data:`)===0&&n.push(e.slice(5).trimStart());if(n.length===0)return;let r;try{r=JSON.parse(n.join(` -`))}catch{return}if(!r||typeof r!=`object`)return;let i=String(r.type||``).trim();i.indexOf(`usage.`)===0&&this.noteUsageEvent(i)}#m(){if(!this.active||this.#a)return;let e=Math.min(this.#o+1,Zv);this.#o=e;let t=Math.min(3e4,500*2**(e-1));this.#a=setTimeout(()=>{this.#a=null,this.#u()},t)}},$v=R(`
`),ey=R(`
Waiting for live requests…
`),ty=R(`

Live Token Throughput

`);function ny(e,t){E(t,!0);let n=O(()=>Wv(Qv.buckets,Qv.granularity)),r=O(()=>I(n).totals);function i(){return{input:Mv(`var(--token-input)`),output:Mv(`var(--token-output)`),prompt:Mv(`var(--token-prompt)`),local:Mv(`var(--token-local)`)}}let a=[{metric:`input`,label:`Input Tokens`,colorVar:`--token-input`},{metric:`output`,label:`Output Tokens`,colorVar:`--token-output`},{metric:`prompt`,label:`Prompt (Input) Cached`,colorVar:`--token-prompt`},{metric:`local`,label:`Locally Cached`,colorVar:`--token-local`}];var o=ty(),s=M(o),c=M(s),l=P(M(c),2),u=M(l);let d;var f=P(u,2),p=M(f,!0);T(f),T(l),T(c),Dv(P(c,2),{ariaLabel:`Live token throughput granularity`,get options(){return zv},get value(){return Qv.granularity},onchange:e=>Qv.setGranularity(e)}),T(s);var m=P(s,2);H(m,21,()=>a,e=>e.metric,(e,t)=>{var n=$v(),i=M(n),a=P(i,2),o=M(a,!0);T(a);var s=P(a,2),c=M(s,!0);T(s),T(n),F(e=>{Hi(i,`background: var(${I(t).colorVar??``})`),B(o,I(t).label),B(c,e)},[()=>Kv(I(r),I(t).metric)]),z(e,n)}),T(m);var h=P(m,2),g=M(h);{let e=O(()=>Jv(I(r),Qv.granularity));wv(g,{get ariaLabel(){return I(e)},build:()=>Yv(kv(),i(),I(n),Qv.granularity)})}var _=P(g,2),v=e=>{z(e,ey())},y=O(()=>!Gv(I(r)));V(_,e=>{I(y)&&e(v)}),T(h),T(o),F(e=>{d=U(u,1,`live-dot`,null,d,{"is-streaming":Qv.active}),B(p,e)},[()=>qv(Qv.granularity)]),z(e,o),D()}function ry(e){let t=e||{};if(t.total_tokens!==null&&t.total_tokens!==void 0){let e=Number(t.total_tokens);if(Number.isFinite(e))return e}let n=Number(t.total_input_tokens||0),r=Number(t.total_output_tokens||0);return(Number.isFinite(n)?n:0)+(Number.isFinite(r)?r:0)}function iy(e,t){if(!t)return 0;let n=e&&e.summary?e.summary:{},r=Number(n.total_hits||0);return Number.isFinite(r)&&r>0?r:0}function ay(e,t,n){let r=Number(e&&e.total_requests||0);return(Number.isFinite(r)?r:0)+iy(t,n)}function oy(e,t,n){let r=iy(t,n);return r<=0?``:$o(ay(e,t,n)-r)+` to providers + `+$o(r)+` from cache`}function sy(e){let t=e&&e.summary?e.summary:{},n=Number(t.total_input_tokens||0),r=Number(t.total_output_tokens||0);return(Number.isFinite(n)?n:0)+(Number.isFinite(r)?r:0)}function cy(e,t,n){let r=e=>{let t=Number(e||0);return Number.isFinite(t)&&t>0?t:0},i=e||{},a=r(i.uncached_input_tokens),o=r(i.cached_input_tokens),s=r(i.cache_write_input_tokens),c=t&&t.summary?t.summary:{},l=n?r(c.total_input_tokens):0;return[{key:`uncached`,label:`Regular`,tokens:a+s,colorVar:`--cache-meter-uncached`,note:s>0?`Includes `+$o(s)+` cache-write tokens`:``},{key:`prompt`,label:`Prompt cached`,tokens:o,colorVar:`--cache-meter-prompt`,note:`Provider prompt-cache reads`},{key:`local`,label:`Locally cached`,tokens:l,colorVar:`--cache-meter-local`,note:`Served from GoModel response cache`}]}function ly(e,t,n){return cy(e,t,n).reduce((e,t)=>e+t.tokens,0)}function uy(e,t,n){return ly(e,t,n)>0}function dy(e,t,n){let r=cy(e,t,n),i=r.reduce((e,t)=>e+t.tokens,0);if(i<=0)return r.map(e=>Object.assign({},e,{pct:0}));let a=r.map(e=>{let t=e.tokens/i*100,n=Math.floor(t);return Object.assign({},e,{pct:n,remainder:t-n})}),o=100-a.reduce((e,t)=>e+t.pct,0);return a.map((e,t)=>({index:t,remainder:e.remainder,tokens:e.tokens})).filter(e=>e.tokens>0).sort((e,t)=>t.remainder-e.remainder).forEach(e=>{o>0&&(a[e.index].pct+=1,--o)}),a}function fy(e,t,n){return dy(e,t,n).filter(e=>e.tokens>0)}function py(e){let t=[e.label+`: `+$o(e.tokens)+` input tokens (`+e.pct+`%)`];return e.note&&t.push(e.note),t.join(` -`)}function my(e){let t=(e||[]).map(e=>e.label+` `+e.pct+`%`);return`Cache breakdown of input tokens — `+(t.length?t.join(`, `):`no data`)}function hy(e){return e.getUTCFullYear()+`-`+String(e.getUTCMonth()+1).padStart(2,`0`)+`-`+String(e.getUTCDate()).padStart(2,`0`)}function gy(e,t,n,r){if(t!==`daily`||!n||!r)return e;let i={};(e||[]).forEach(e=>{i[e.date]=e});let a=[];for(let e=new Date(n);e<=r;e.setUTCDate(e.getUTCDate()+1)){let t=hy(e);a.push(i[t]||{date:t,input_tokens:0,output_tokens:0,total_tokens:0,requests:0,input_cost:null,output_cost:null,total_cost:null})}return a}function _y(e,t){let n=e=>Number(e)||0,r=e.map(e=>e.date),i=e.map(e=>n(e.uncached_input_tokens)+n(e.cache_write_input_tokens)+n(e.cached_input_tokens)>0?n(e.uncached_input_tokens)+n(e.cache_write_input_tokens):n(e.input_tokens)),a=e.map(e=>n(e.output_tokens)),o=e.map(e=>n(e.cached_input_tokens)),s={};return(t||[]).forEach(e=>{s[e.date]=e}),{labels:r,inputPaid:i,output:a,prompt:o,local:r.map(e=>{let t=s[e];return t?n(t.input_tokens)+n(t.output_tokens):0})}}function vy(e){let t=e||{},n=Math.max(0,Number(t.uncached_input_tokens)||0),r=Math.max(0,Number(t.cached_input_tokens)||0),i=Math.max(0,Number(t.cache_write_input_tokens)||0),a=n+r+i;return a>0?r/a*100:0}function yy(e){let t=e||{};return(Number(t.uncached_input_tokens)||0)+(Number(t.cached_input_tokens)||0)+(Number(t.cache_write_input_tokens)||0)>0}function by(e){return yy(e)?Math.round(vy(e))+`%`:`—`}function xy(e,t,n={}){let r=!!n.cacheEnabled,i=n.resolve||(e=>e),a=(e,t)=>i(`color-mix(in srgb, `+e+` `+t+`%, transparent)`),o=(e,t,n,r)=>Object.assign({label:e,data:t,borderColor:n,backgroundColor:n,fill:!1,tension:.3,borderWidth:2,pointRadius:0,pointHoverRadius:4},r||{}),s=[o(`Input Tokens`,t.inputPaid,i(`var(--token-input)`),{fill:`origin`}),o(`Output Tokens`,t.output,i(`var(--token-output)`),{fill:`-1`}),o(`Prompt (Input) Cached`,t.prompt,i(`var(--token-prompt)`),{fill:`-1`,borderDash:[6,4]})];return r&&s.push(o(`Locally Cached`,t.local,a(`var(--info)`,35),{fill:`-1`,borderDash:[2,3]})),{type:`line`,data:{labels:t.labels,datasets:s},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:jv(e,{label:e=>e.dataset.label+`: `+e.parsed.y.toLocaleString(),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+t.toLocaleString()}})},scales:{x:{stacked:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:Av(),maxRotation:0,autoSkip:!0,maxTicksLimit:10}},y:{stacked:!0,beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:Lv(e)}}}}}function Sy(e,t,n){let r=Math.max(0,Math.min(100,e));return{type:`doughnut`,data:{datasets:[{data:[r,100-r],backgroundColor:[t,n],borderWidth:0,spacing:0}]},options:{rotation:-90,circumference:180,cutout:`84%`,responsive:!0,maintainAspectRatio:!1,animation:{duration:0},layout:{padding:1},events:[],plugins:{legend:{display:!1},tooltip:{enabled:!1}}}}}var Cy=`gomodel_provider_status_details_expanded`,wy=`gomodel_provider_card_expanded_overrides`,Ty=3e3,Ey=`https://gomodel.enterpilot.io/docs/providers/`,Dy={anthropic:`anthropic`,azure:`azure`,bailian:`bailian`,bedrock:`bedrock`,"bedrock-mantle":`bedrock-mantle`,cohere:`cohere`,deepseek:`deepseek`,gemini:`gemini`,opencode_go:`opencode-go`,oracle:`oracle`,vertex:`vertex`,vllm:`vllm`,xiaomi:`xiaomi`};function Oy(){return{summary:{total:0,healthy:0,degraded:0,unhealthy:0,overall_status:`degraded`},providers:[]}}function ky(e){let t={detailsExpanded:!1,cardOverrides:{}};try{if(e){let n=e.getItem(Cy);n===`true`||n===`false`?t.detailsExpanded=n===`true`:e.setItem(Cy,`false`);let r=JSON.parse(e.getItem(wy)||`{}`);r&&typeof r==`object`&&!Array.isArray(r)&&(t.cardOverrides=r)}}catch{}return t}function Ay(e,t){if(e)try{e.setItem(Cy,t?`true`:`false`)}catch{}}function jy(e,t){if(e)try{e.setItem(wy,JSON.stringify(t))}catch{}}function My(e,t,n){let r=n&&n.name?String(n.name):``;return r&&Object.prototype.hasOwnProperty.call(e,r)?e[r]===!0:t}function Ny(e){return`is-`+(String(e&&e.overall_status||`degraded`).trim()||`degraded`)}function Py(e){return`is-`+(String(e||`degraded`).trim()||`degraded`)}function Fy(e){let t=e||{};return String(t.healthy||0)+`/`+String(t.total||0)}function Iy(e){let t=e||{},n=Number(t.total||0),r=Number(t.healthy||0);return n>0&&rString(e&&e.status_label||``).trim().toLowerCase()===`starting`)}function zy(e){if(!e||!e.runtime)return``;let t=e.runtime.last_model_fetch_at||``,n=e.runtime.last_availability_check_at||``;return t?n&&Date.parse(n)>Date.parse(t)?n:t:n}function By(e,t){let n=zy(e);if(!n||typeof t!=`function`)return`-`;let r=t(n);if(!r||r===`-`)return`-`;let i=String(r).split(` `);return i.length>1?i.slice(1).join(` `):r}function Vy(e,t){let n=zy(e);return n?typeof t==`function`?t(n):String(n):``}function Hy(e){if(!e)return``;let t=String(e.name||``).trim(),n=String(e.type||e.config&&e.config.type||``).trim();return!n||n===t?``:n}function Uy(e){let t=String(e&&(e.type||e.config&&e.config.type)||``).trim().toLowerCase(),n=t?Dy[t]:``;return n?Ey+n+`?utm_source=gomodel_dashboard`:``}function Wy(e){let t=e&&e.config&&e.config.resilience?e.config.resilience.retry:null;return t?String(t.max_retries)+` retries, `+t.initial_backoff+` initial, `+t.max_backoff+` max, factor `+t.backoff_factor+`, jitter `+t.jitter_factor:`-`}function Gy(e){let t=e&&e.config&&e.config.resilience?e.config.resilience.circuit_breaker:null;return t?String(t.failure_threshold)+` fail, `+String(t.success_threshold)+` success, `+t.timeout+` timeout`:`-`}function Ky(e){let t=e&&e.config&&Array.isArray(e.config.models)?e.config.models.filter(Boolean):[];return t.length===0?`Automatic`:t.join(`, `)}function qy(e){if(!e)return``;let t=[];return e.status_reason&&t.push(String(e.status_reason)),e.last_error&&t.push(`Last error: `+String(e.last_error)),t.join(` - -`)}function Jy(e){let t=e&&e.request_health;return t&&typeof t==`object`?t:null}function Yy(e){let t=Jy(e);return t?String(t.circuit_state||``).trim():``}function Xy(e){let t=Yy(e);return t?t.charAt(0).toUpperCase()+t.slice(1):``}function Zy(e){let t=Yy(e);return t===`open`?`is-unhealthy`:t===`half-open`?`is-degraded`:`is-healthy`}function Qy(e){let t=Jy(e);if(!t)return``;let n=Number(t.requests||0),r=Number(t.errors||0),i=Math.round(Number(t.window_seconds||0)/60),a=i>0?`last `+i+` min`:`recent`;return String(n)+` request`+(n===1?``:`s`)+` · `+String(r)+` error`+(r===1?``:`s`)+` (`+a+`)`}function $y(e){let t=Jy(e);return t&&Array.isArray(t.models)?t.models:[]}function eb(e){return e?String(Number(e.errors||0))+`/`+String(Number(e.requests||0))+` failed`:``}function tb(e){let t=e&&e.last_error;return!t||!t.message?``:(t.status_code?`HTTP `+String(t.status_code)+`: `:``)+t.message}function nb(){return{name:``,slug:``,url:``,transport:`http`,description:``,enabled:!0,headers:[],allowed_tools:``,disallowed_tools:``,user_paths:``,tool_timeout_seconds:``}}function rb(){return{server:``,status:``,instructions:``,tools:[],prompts:[],resources:[],templates:[]}}function ib(e){return String(e&&(e.slug||e.name)||``).trim()}function ab(e){return String(e&&e.status||``).trim()||`connecting`}function ob(e){switch(ab(e)){case`connected`:return`status-success`;case`degraded`:return String(e&&e.last_error||``).trim()?`status-error`:`status-warning`;case`connecting`:return`status-neutral`;default:return`status-unknown`}}function sb(e,t){let n=ab(e),r=String(e&&e.last_error||``).trim();return r&&n!==`connected`?r:n===`connected`&&e&&e.connected_at?`Connected since `+(typeof t==`function`?t:String)(e.connected_at):``}function cb(e){return String(e&&e.transport||``)===`stdio`?`local command`:String(e&&e.url||``).trim()||`—`}function lb(e){let t=Number(e&&e.prompt_count||0),n=Number(e&&e.resource_count||0);return t+` prompts · `+n+` resources`}function ub(e){let t=String(e||``).normalize(`NFKD`).toLowerCase(),n=t.replace(/[\u0300-\u036f]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,64).replace(/-+$/g,``);if(n)return n;let r=2166136261;for(let e of t)r=Math.imul((r^e.codePointAt(0))>>>0,16777619)>>>0;return`mcp-`+r.toString(16).padStart(8,`0`)}function db(e){return String(e||``).split(` -`).map(e=>e.trim()).filter(e=>e)}function fb(e){return!e||typeof e!=`object`||Array.isArray(e)?[]:Object.keys(e).sort().map(t=>({name:t,value:String(e[t]||``)}))}function pb(e){let t={};return(Array.isArray(e)?e:[]).forEach(e=>{let n=String(e&&e.name||``).trim();n&&(t[n]=String(e&&e.value||``))}),t}function mb(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.slug,e.url,e.transport,e.description,e.status].some(e=>String(e||``).toLowerCase().includes(r)))}function hb(e){return{name:String(e.name||``).trim(),slug:ib(e),url:String(e.url||``).trim(),transport:e.transport===`sse`?`sse`:`http`,description:String(e.description||``).trim(),enabled:e.enabled!==!1,headers:fb(e.headers),allowed_tools:(Array.isArray(e.allowed_tools)?e.allowed_tools:[]).join(`, `),disallowed_tools:(Array.isArray(e.disallowed_tools)?e.disallowed_tools:[]).join(`, `),user_paths:(Array.isArray(e.user_paths)?e.user_paths:[]).join(` -`),tool_timeout_seconds:e.tool_timeout_seconds?String(e.tool_timeout_seconds):``}}function gb(e,t,n){let r=String(e.name||``).trim(),i=String(e.slug||ub(r)).trim().toLowerCase(),a=String(e.url||``).trim(),o=e.transport===`sse`?`sse`:`http`;if(!r)return{error:`Name is required.`};if(!/^[a-z0-9][a-z0-9_-]{0,63}$/.test(i))return{error:`Slug must use 1–64 lowercase ASCII letters, numbers, hyphens, or underscores.`};if(t===`create`&&(n||[]).some(e=>ib(e)===i))return{error:`Slug "`+i+`" is already in use.`};if(!a)return{error:`URL is required.`};let s,c=String(e.tool_timeout_seconds||``).trim();if(c!==``){let e=Number(c);if(!Number.isSafeInteger(e)||e<0)return{error:`Tool timeout must be a non-negative whole number of seconds.`};s=e}return{payload:{name:r,slug:i,url:a,transport:o,headers:pb(e.headers),description:String(e.description||``).trim(),enabled:!!e.enabled,allowed_tools:Zo(e.allowed_tools),disallowed_tools:Zo(e.disallowed_tools),user_paths:db(e.user_paths),tool_timeout_seconds:s}}}function _b(e,t){let n=t&&typeof t==`object`&&!Array.isArray(t)?t:{},r=e=>(Array.isArray(e)?e:[]).filter(e=>e&&typeof e==`object`);return{server:String(n.server||e||``).trim(),status:String(n.status||``).trim(),instructions:String(n.instructions||``).trim(),tools:r(n.tools),prompts:r(n.prompts),resources:r(n.resources),templates:r(n.templates)}}function vb(e,t){return String(e&&e.server||``)+`_`+String(t||``)}function yb(e){let t=e||rb(),n=(e,t)=>{let n=String(e||``).trim(),r=String(t||``).trim();return n&&r?n+` — `+r:r||n},r=e=>n=>({key:e+`:`+String(n.name||``),name:String(n.name||``),aggregated:vb(t,n.name),description:String(n.description||``).trim()});return[{key:`tools`,title:`Tools`,items:(t.tools||[]).map(r(`tool`))},{key:`prompts`,title:`Prompts`,items:(t.prompts||[]).map(r(`prompt`))},{key:`resources`,title:`Resources`,items:(t.resources||[]).map(e=>({key:`resource:`+String(e.uri||``),name:String(e.uri||``),aggregated:``,description:n(e.name,e.description)}))},{key:`templates`,title:`Resource templates`,items:(t.templates||[]).map(e=>({key:`template:`+String(e.uri_template||``),name:String(e.uri_template||``),aggregated:``,description:n(e.name,e.description)}))}].filter(e=>e.items.length>0)}function bb(e){return yb(e).length===0}function xb(e){return(e||[]).length}function Sb(e){return(e||[]).filter(e=>ab(e)===`connected`).length}function Cb(e){return(e||[]).filter(e=>e&&e.enabled!==!1&&ab(e)===`degraded`).length}function wb(e,t){return!!e&&xb(t)>0}function Tb(e){return String(Sb(e))+`/`+String(xb(e))}function Eb(e){return Cb(e)>0?`is-degraded`:`is-healthy`}function Db(e){let t=Cb(e);if(t>0)return String(t)+` server`+(t===1?``:`s`)+` need`+(t===1?`s`:``)+` attention`;let n=xb(e),r=Sb(e);return n>0&&r===n?`All MCP servers connected`:String(r)+` of `+String(n)+` server`+(n===1?``:`s`)+` connected`}function Ob(){return{interval:`day`,buckets:[],summary:{requests:0},provider_latency:[]}}function kb(e){let t=e&&typeof e==`object`?e:{};return{interval:t.interval===`hour`?`hour`:`day`,buckets:Array.isArray(t.buckets)?t.buckets:[],summary:t.summary&&typeof t.summary==`object`?t.summary:{requests:0},provider_latency:Array.isArray(t.provider_latency)?t.provider_latency:[]}}function Ab(e){return Number(e&&e.summary&&e.summary.requests||0)>0}function jb(e){return(e&&Array.isArray(e.provider_latency)?e.provider_latency:[]).length>0}function Mb(e){let t=e&&e.summary?e.summary.success_rate:null;return t==null?`—`:(Math.round(Number(t)*1e3)/10).toFixed(1)+`%`}function Nb(e,t){return Number(e&&e.summary&&e.summary[t]||0)}function Pb(e){let t=Number(e);return Number.isFinite(t)?t>=6e4?(t/6e4).toFixed(1)+` min`:t>=1e3?(t/1e3).toFixed(2)+` s`:Math.round(t)+` ms`:`-`}function Fb(e){let t=e&&e.summary?e.summary.avg_duration_ms:null;return t==null?`—`:Pb(Number(t))}function Ib(e,t){try{let n={};return new Intl.DateTimeFormat(`en-US`,{timeZone:t,year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,hourCycle:`h23`}).formatToParts(e).forEach(e=>{n[e.type]=e.value}),{year:n.year,month:n.month,day:n.day,hour:Number(n.hour)}}catch{return{year:String(e.getFullYear()),month:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`][e.getMonth()],day:String(e.getDate()),hour:e.getHours()}}}function Lb(e,t,n){let r=new Date(e.start);if(Number.isNaN(r.getTime()))return String(e.start||``);let i=Ib(r,n),a=i.month+` `+i.day;return t!==`hour`||i.hour===0?a:String(i.hour).padStart(2,`0`)+`:00`}function Rb(e,t,n,r){let i=new Date(e.start);if(Number.isNaN(i.getTime()))return String(e.start||``);if(t===`hour`)return r(e.start);let a=Ib(i,n);return a.month+` `+a.day+`, `+a.year}function zb(e){return{ok:e(`var(--success)`),clientError:e(`var(--warning)`),serverError:e(`var(--danger)`),other:e(`color-mix(in srgb, var(--text-muted) 55%, transparent)`)}}function Bb(e,t,n={}){let r=n.interval===`hour`?`hour`:`day`,i=n.zone,a=n.resolve||(e=>e),o=n.formatTimestamp||(e=>String(e)),s=t.map(e=>Lb(e,r,i)),c=zb(a),l=a(`var(--bg-surface)`),u=e=>Number(e)||0,d=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderColor:l,borderWidth:1,borderSkipped:!1,borderRadius:2,maxBarThickness:28}),f=[d(`2xx`,t.map(e=>u(e.status_2xx)),c.ok),d(`4xx`,t.map(e=>u(e.status_4xx)),c.clientError),d(`5xx`,t.map(e=>u(e.status_5xx)),c.serverError)];return t.some(e=>u(e.status_other)>0)&&f.push(d(`Other`,t.map(e=>u(e.status_other)),c.other)),{type:`bar`,data:{labels:s,datasets:f},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:jv(e,{title:e=>e.length?Rb(t[e[0].dataIndex],r,i,o):``,label:e=>e.dataset.label+`: `+e.parsed.y.toLocaleString(),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+t.toLocaleString()}})},scales:{x:{stacked:!0,grid:{display:!1},border:{display:!1},ticks:{color:e.text,font:Av(),maxRotation:0,autoSkip:!0,maxTicksLimit:12}},y:{stacked:!0,beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:Av(),precision:0,callback:e=>rs(e)}}}}}}function Vb(e=Pv()){let t={};return function(n){return n in t||(t[n]=e[Object.keys(t).length%e.length]),t[n]}}function Hb(e,t,n,r={}){let i=r.interval===`hour`?`hour`:`day`,a=r.zone,o=r.formatTimestamp||(e=>String(e)),s=r.providerColor||Vb();return{type:`line`,data:{labels:t.map(e=>Lb(e,i,a)),datasets:n.map(e=>({label:e.provider,data:(e.avg_duration_ms||[]).map(e=>e==null?null:Number(e)),borderColor:s(e.provider),backgroundColor:s(e.provider),fill:!1,tension:.3,borderWidth:2,pointRadius:0,pointHoverRadius:4,spanGaps:i===`hour`&&2}))},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:jv(e,{title:e=>e.length?Rb(t[e[0].dataIndex],i,a,o):``,label:e=>{let t=(n[e.datasetIndex]&&n[e.datasetIndex].requests||[])[e.dataIndex],r=Number(t)||0;return e.dataset.label+`: `+Pb(e.parsed.y)+(r>0?` (`+r.toLocaleString()+` req)`:``)}})},scales:{x:{grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:Av(),maxRotation:0,autoSkip:!0,maxTicksLimit:12}},y:{beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:Av(),callback:e=>Pb(e)}}}}}}var Ub=class{#e=k(j(Oy()));get status(){return I(this.#e)}set status(e){A(this.#e,e,!0)}#t=k(!1);get loading(){return I(this.#t)}set loading(e){A(this.#t,e,!0)}#n=k(!1);get loadedOnce(){return I(this.#n)}set loadedOnce(e){A(this.#n,e,!0)}#r=k(!1);get detailsExpanded(){return I(this.#r)}set detailsExpanded(e){A(this.#r,e,!0)}#i=k(j({}));get cardOverrides(){return I(this.#i)}set cardOverrides(e){A(this.#i,e,!0)}#a=null;#o=null;#s=!1;initPreferences(){if(this.#s)return;this.#s=!0;let e=ky(Ta());this.detailsExpanded=e.detailsExpanded,this.cardOverrides=e.cardOverrides}cardExpanded(e){return My(this.cardOverrides,this.detailsExpanded,e)}toggleCard(e){let t=e&&e.name?String(e.name):``;if(!t)return;let n={...this.cardOverrides};n[t]=!this.cardExpanded(e),this.cardOverrides=n,jy(Ta(),this.cardOverrides)}toggleDetails(){this.detailsExpanded=!this.detailsExpanded,this.cardOverrides={},Ay(Ta(),this.detailsExpanded),jy(Ta(),this.cardOverrides)}detailsToggleLabel(){return this.detailsExpanded?`Show Details`:`Hide Details`}async fetch(){this.initPreferences(),this.#a&&this.#a.abort();let e=new AbortController;this.#a=e,this.loading=!0;try{let t=await fo(`/admin/providers/status`,{label:`provider status`,signal:e.signal});if(t.stale||e.signal.aborted)return;if(!t.ok){this.status=Oy(),this.#l();return}let n=t.data&&typeof t.data==`object`?t.data:Oy();n.summary||=Oy().summary,Array.isArray(n.providers)||(n.providers=[]),this.status=n,this.#c()}catch(e){if(mo(e))return;console.error(`Failed to fetch provider status:`,e),this.status=Oy(),this.#l()}finally{this.#a===e&&(this.#a=null,this.loading=!1,this.loadedOnce=!0)}}#c(){this.#l(),Ry(this.status.providers)&&(this.#o=setTimeout(()=>{this.#o=null,this.fetch()},Ty))}#l(){this.#o&&=(clearTimeout(this.#o),null)}stopPolling(){this.#l()}},Wb=class{#e=k(j(Ob()));get stats(){return I(this.#e)}set stats(e){A(this.#e,e,!0)}#t=k(!1);get loading(){return I(this.#t)}set loading(e){A(this.#t,e,!0)}#n=0;async fetch(){let e=++this.#n;this.loading=!0;try{let t=await fo(`/admin/audit/stats?`+Ts.queryStr(),{label:`audit stats`});if(t.stale||e!==this.#n)return;if(!t.ok){this.stats=Ob();return}this.stats=kb(t.data)}catch(t){if(console.error(`Failed to fetch audit stats:`,t),e!==this.#n)return;this.stats=Ob()}finally{e===this.#n&&(this.loading=!1)}}},Gb=class{#e=k(j([]));get servers(){return I(this.#e)}set servers(e){A(this.#e,e,!0)}#t=k(!1);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}async fetch(){if(await _o.ensureLoaded(),!_o.mcpVisible()){this.available=!1,this.servers=[];return}this.loading=!0;try{let e=await fo(`/admin/mcp-servers`,{label:`mcp servers`});if(e.stale)return;if(e.status===503||e.status===404){this.available=!1,this.servers=[];return}if(this.available=!0,!e.ok){this.servers=[];return}this.servers=Array.isArray(e.data)?e.data:[]}catch(e){console.error(`Failed to fetch MCP servers:`,e),this.servers=[]}finally{this.loading=!1}}},Kb=class{#e=k(j([]));get data(){return I(this.#e)}set data(e){A(this.#e,e,!0)}#t=k(`tokens`);get mode(){return I(this.#t)}set mode(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=null;async fetch(){this.#r&&this.#r.abort();let e=new AbortController;this.#r=e,this.loading=!0;try{let t=await fo(`/admin/usage/daily?days=365&interval=daily`,{label:`calendar`,signal:e.signal});if(t.stale||e.signal.aborted)return;if(!t.ok){this.data=[];return}this.data=Array.isArray(t.data)?t.data:[]}catch(e){if(mo(e))return;console.error(`Failed to fetch calendar data:`,e),this.data=[]}finally{this.#r===e&&(this.#r=null,this.loading=!1)}}},qb=new Ub,Jb=new Wb,Yb=new Gb,Xb=new Kb,Zb=(e,t=f,n=f,r=f,i=f)=>{var a=$b(),o=M(a),s=M(o,!0);T(o);var c=P(o,2),l=M(c),u=M(l),d=M(u,!0);T(u),Ue(),T(l);var p=P(l,4),m=M(p),h=M(m,!0);T(m),Ue(),T(p);var g=P(p,4),_=M(g,!0);T(g),T(c),T(a),F((e,n,r,i,a,o)=>{B(s,t()),W(l,`title`,e),B(d,n),W(p,`title`,r),B(h,i),W(g,`title`,a),B(_,o)},[()=>is(`Input tokens`,n()),()=>rs(n()),()=>is(`Output tokens`,r()),()=>rs(r()),()=>is(`Total tokens`,i()),()=>rs(i())]),z(e,a)},Qb=(e,t=f,n=f,r=f,i=f,a=f,o=f)=>{var s=nx(),c=M(s),l=M(c,!0);T(c);var u=P(c,2),d=M(u,!0);T(u);var p=P(u,2),m=e=>{var t=ex(),n=M(t,!0);T(t),F(()=>{W(t,`aria-label`,o().title),W(t,`title`,o().title),B(n,a())}),L(`click`,t,function(...e){o().onclick?.apply(this,e)}),z(e,t)},h=e=>{var t=tx(),n=M(t,!0);T(t),F(()=>B(n,a())),z(e,t)};V(p,e=>{o()?e(m):e(h,-1)}),T(s),F(()=>{U(s,1,`card provider-status-flag ${t()??``} ${n()??``}`,`svelte-6tr9cf`),B(l,r()),B(d,i())}),z(e,s)},$b=R(`
i + o =
`),ex=R(``),tx=R(` `),nx=R(`
`),rx=R(`
Cache Hits
`),ix=R(`
Total Requests
Estimated Cost
Prompt Cache Rate
`);function ax(e,t){E(t,!0);let n=O(()=>js.summary),r=O(()=>js.cacheOverview),i=O(()=>js.cacheAnalyticsEnabled()),a=O(()=>qb.status.summary);function o(){let e=document.getElementById(`provider-status-section`);e&&(e.scrollIntoView({behavior:`smooth`,block:`start`}),e.focus({preventScroll:!0}))}var s=ix(),c=M(s);{let e=O(()=>ry(I(n)));Zb(c,()=>`Tokens`,()=>I(n).total_input_tokens,()=>I(n).total_output_tokens,()=>I(e))}var l=P(c,2),u=P(M(l),2),d=M(u,!0);T(u),T(l);var f=P(l,2),p=e=>{var t=rx(),n=P(M(t),2),i=M(n,!0);T(n),T(t),F(e=>B(i,e),[()=>$o(I(r).summary.total_hits)]),z(e,t)};V(f,e=>{I(i)&&e(p)});var m=P(f,2),h=P(M(m),2),g=M(h,!0);T(h),T(m);var _=P(m,2),v=e=>{{let t=O(()=>sy(I(r)));Zb(e,()=>`Local Cache`,()=>I(r).summary.total_input_tokens,()=>I(r).summary.total_output_tokens,()=>I(t))}};V(_,e=>{I(i)&&e(v)});var y=P(_,2),b=P(M(y),2),x=M(b);wv(x,{build:()=>Sy(vy(I(n)),Mv(`var(--token-prompt)`),Mv(`var(--bg-surface-hover)`))});var S=P(x,2),C=M(S,!0);T(S),T(b),T(y);var w=P(y,2),ee=e=>{{let t=O(()=>Ny(I(a))),n=O(()=>Fy(I(a))),r=O(()=>Ly(I(a))),i=O(()=>Iy(I(a))?{title:`View providers overview`,onclick:o}:null);Qb(e,()=>`provider-status-overview-card`,()=>I(t),()=>`Provider Status`,()=>I(n),()=>I(r),()=>I(i))}};V(w,e=>{I(a).total>0&&e(ee)});var te=P(w,2),ne=e=>{{let t=O(()=>Eb(Yb.servers)),n=O(()=>Tb(Yb.servers)),r=O(()=>Db(Yb.servers));Qb(e,()=>`mcp-servers-flag`,()=>I(t),()=>`MCP Servers`,()=>I(n),()=>I(r),()=>({title:`View MCP servers`,onclick:()=>Ha.navigate(`mcp-servers`)}))}},re=O(()=>wb(Yb.available,Yb.servers));V(te,e=>{I(re)&&e(ne)}),T(s),F((e,t,n,r,i)=>{W(u,`title`,e),B(d,t),B(g,n),W(b,`aria-label`,r),B(C,i)},[()=>oy(I(n),I(r),I(i)),()=>$o(ay(I(n),I(r),I(i))),()=>es(I(n).total_cost),()=>`Prompt cache rate `+by(I(n)),()=>by(I(n))]),z(e,s),D()}Hr([`click`]);var ox=R(` `),sx=R(`
`),cx=R(`No usage in the selected period yet`),lx=R(`
`),ux=R(`

Tokens

Share of input tokens over the selected period
`);function dx(e,t){E(t,!0);let n=O(()=>js.cacheAnalyticsEnabled()),r=O(()=>dy(js.summary,js.cacheOverview,I(n))),i=O(()=>fy(js.summary,js.cacheOverview,I(n))),a=O(()=>uy(js.summary,js.cacheOverview,I(n)));var o=ux(),s=P(M(o),2);let c;var l=M(s);H(l,17,()=>I(i),e=>e.key,(e,t)=>{var n=sx(),r=M(n),i=e=>{var n=ox(),r=M(n);T(n),F(()=>B(r,`${I(t).pct??``}%`)),z(e,n)};V(r,e=>{I(t).pct>=8&&e(i)}),T(n),F(e=>{Hi(n,`width: ${I(t).pct??``}%; background: var(${I(t).colorVar??``})`),W(n,`title`,e)},[()=>py(I(t))]),z(e,n)});var u=P(l,2),d=e=>{z(e,cx())};V(u,e=>{I(a)||e(d)}),T(s);var f=P(s,2);H(f,21,()=>I(r),e=>e.key,(e,t)=>{var n=lx(),r=M(n),i=P(r,2),a=M(i,!0);T(i);var o=P(i,2),s=M(o);T(o);var c=P(o,2),l=M(c,!0);T(c),T(n),F((e,i)=>{W(n,`title`,e),Hi(r,`background: var(${I(t).colorVar??``})`),B(a,I(t).label),B(s,`${I(t).pct??``}%`),B(l,i)},[()=>py(I(t)),()=>$o(I(t).tokens)]),z(e,n)}),T(f),T(o),F(e=>{c=U(s,1,`cache-meter-bar svelte-1yzecxj`,null,c,{"is-empty":!I(a)}),W(s,`aria-label`,e)},[()=>my(I(i))]),z(e,o),D()}var fx=R(``);function px(e,t){let n=ya(t,`size`,3,16),r=ya(t,`label`,3,`Loading`),i=ya(t,`class`,3,``);var a=fx();F(()=>{U(a,1,Fi([`spinner`,i()]),`svelte-b54l9o`),Hi(a,`--spinner-size: ${n()??``}px`),W(a,`aria-label`,r())}),z(e,a)}var mx=Xr(` `),hx=Xr(``);function gx(e,t){let n=ya(t,`label`,3,`No data`);var r=hx(),i=P(M(r),9),a=e=>{var t=mx(),r=M(t,!0);T(t),F(()=>B(r,n())),z(e,t)};V(i,e=>{n()&&e(a)}),T(r),F(()=>{W(r,`role`,n()?`img`:void 0),W(r,`aria-label`,n()||void 0),W(r,`aria-hidden`,n()?void 0:`true`)}),z(e,r)}var _x=R(`
`),vx=R(`

`);function yx(e,t){E(t,!0);let n=[`daily`,`weekly`,`monthly`,`yearly`];function r(e){Ts.interval=e,t.onintervalchange?.()}function i(){let e=js.daily;if(e.length===0)return null;let t=Ts.rangeStart(),n=Ts.rangeEnd(),r=_y(gy(e,Ts.interval,t,n),gy(Array.isArray(js.cacheOverview.daily)?js.cacheOverview.daily:[],Ts.interval,t,n));return xy(kv(),r,{cacheEnabled:js.cacheAnalyticsEnabled(),resolve:Mv})}var a=vx(),o=M(a),s=M(o),c=M(s,!0);T(s);var l=P(s,2);{let e=O(()=>n.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)})));Dv(l,{ariaLabel:`Usage chart interval`,get options(){return I(e)},get value(){return Ts.interval},onchange:r})}T(o);var u=P(o,2),d=M(u);wv(d,{build:i});var f=P(d,2),p=e=>{var t=_x();px(M(t),{size:24,label:`Loading usage`}),T(t),z(e,t)},m=e=>{var t=_x();gx(M(t),{}),T(t),z(e,t)};V(f,e=>{js.daily.length===0&&js.loading?e(p):js.daily.length===0&&!K.authError&&e(m,1)}),T(u),T(a),F(e=>B(c,e),[()=>Ts.chartTitle()]),z(e,a),D()}var bx=10,xx=.7;function Sx(e,t){if(e<=0||t<=0)return 0;let n=(e/t)**+xx,r=Math.ceil(n*bx);return r<1?1:r>bx?bx:r}function Cx(){let e=[];for(let t=0;t<=bx;t++)e.push(t);return e}function wx(e,t,n){let r={};(e||[]).forEach(e=>{r[e.date]=e});let i=Ka(Ja(n,-364)),a=i.getUTCDay();i.setUTCDate(i.getUTCDate()-a);let o=[];for(let e=new Date(i);qa(e)<=n;e.setUTCDate(e.getUTCDate()+1)){let n=qa(e),i=r[n],a=0;i&&(a=t===`costs`?i.total_cost==null?0:i.total_cost:i.total_tokens||0),o.push({dateStr:n,value:a,level:0,empty:!1})}let s=0;for(let e=0;es&&(s=o[e].value);for(let e=0;e0){for(;l.length<7;)l.push({dateStr:``,value:0,level:0,empty:!0});c.push(l)}return c}function Tx(e){let t=Ka(Ja(e,-364)),n=t.getUTCDay();t.setUTCDate(t.getUTCDate()-n);let r=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],i=[],a={},o=0;for(let n=new Date(t);qa(n)<=e;n.setUTCDate(n.getUTCDate()+7),o++){let t=null;if(o===0)t=new Date(n);else for(let r=0;r<7;r++){let i=new Date(n);if(i.setUTCDate(n.getUTCDate()+r),qa(i)>e)break;if(i.getUTCDate()===1){t=i;break}}if(!t)continue;let s=t.getUTCFullYear()+`-`+t.getUTCMonth();a[s]||(i.push({label:r[t.getUTCMonth()],col:o,key:s}),a[s]=!0)}for(let e=0;e `),kx=R(`
`),Ax=R(`
`),jx=R(`
`),Mx=R(`
`),Nx=R(`

Activity

Mon Wed Fri
`,1);function Px(e,t){E(t,!0);let n=k(j({show:!1,x:0,y:0,text:``})),r=O(()=>ao.currentDateKey()),i=O(()=>wx(Xb.data,Xb.mode,I(r))),a=O(()=>Tx(I(r)));function o(e,t){t.empty||A(n,{show:!0,x:e.clientX,y:e.clientY,text:Dx(t,Xb.mode)},!0)}function s(){A(n,{show:!1,x:0,y:0,text:``},!0)}var c=Nx(),l=N(c),u=M(l),d=P(M(u),2),f=e=>{px(e,{size:14,label:`Loading activity`})};V(d,e=>{Xb.loading&&Xb.data.length===0&&e(f)}),Dv(P(d,2),{ariaLabel:`Activity calendar mode`,options:[{value:`tokens`,label:`Tokens`},{value:`costs`,label:`Costs`}],get value(){return Xb.mode},onchange:e=>Xb.mode=e}),T(u);var p=P(u,2),m=P(M(p),2),h=M(m);H(h,21,()=>I(a),e=>e.key,(e,t)=>{var n=Ox(),r=M(n,!0);T(n),F(()=>{Hi(n,`grid-column: ${I(t).col+1} / span ${I(t).span??``}`),B(r,I(t).label)}),z(e,n)}),T(h);var g=P(h,2);H(g,21,()=>I(i),oi,(e,t,n)=>{var r=Ax();H(r,23,()=>I(t),(e,t)=>n+`-`+t,(e,t)=>{var n=kx();F(()=>U(n,1,Fi([`contribution-calendar-cell`,I(t).empty?`empty`:`level-${I(t).level}`]),`svelte-3hfxuq`)),Vr(`mouseenter`,n,e=>o(e,I(t))),Vr(`mouseleave`,n,s),z(e,n)}),T(r),z(e,r)}),T(g),T(m),T(p);var _=P(p,2),v=M(_),y=M(v),b=M(y,!0);T(y),T(v);var x=P(v,2);H(P(M(x),2),16,Cx,e=>e,(e,t)=>{var n=jx();F(()=>U(n,1,`contribution-calendar-cell level-${t??``}`,`svelte-3hfxuq`)),z(e,n)}),Ue(2),T(x),T(_),T(l);var S=P(l,2),C=e=>{var t=Mx(),r=M(t,!0);T(t),F(()=>{Hi(t,`left: ${I(n).x??``}px; top: ${I(n).y-40}px`),B(r,I(n).text)}),z(e,t)};V(S,e=>{I(n).show&&e(C)}),F(e=>B(b,e),[()=>Ex(Xb.data,Xb.mode)]),z(e,c),D()}var Fx=R(``),Ix=R(`

`),Lx=R(`
`);function Rx(e,t){E(t,!0);let n=ya(t,`label`,3,`help`),r=ya(t,`text`,3,``),i=ya(t,`open`,15,!1),a=ya(t,`external`,3,!1),o=O(()=>!!r()||!!t.help||a());var s=Lx(),c=M(s),l=M(c);gi(l,()=>t.title??f);var u=P(l,2),d=e=>{var r=Fx();let a;F(()=>{a=U(r,1,`inline-help-toggle svelte-y40or3`,null,a,{"is-open":i()}),W(r,`aria-label`,(i()?`Hide `:`Show `)+n()),W(r,`aria-expanded`,i()),W(r,`aria-controls`,t.copyId)}),L(`click`,r,()=>i(!i())),z(e,r)};V(u,e=>{I(o)&&e(d)}),gi(P(u,2),()=>t.extra??f),T(c);var p=P(c,2),m=e=>{var n=Ix(),i=M(n),a=e=>{var n=Qr();gi(N(n),()=>t.help),z(e,n)},o=e=>{var t=Zr();F(()=>B(t,r())),z(e,t)};V(i,e=>{t.help?e(a):e(o,-1)}),T(n),F(()=>W(n,`id`,t.copyId)),z(e,n)};V(p,e=>{i()&&I(o)&&!a()&&e(m)}),T(s),z(e,s),D()}Hr([`click`]);var zx=R(`

Provider Latency

`),Bx=R(`
Avg
`),Vx=R(`

Requests by Status

Success 2xx 4xx 5xx
`,1);function Hx(e,t){E(t,!0);let n=Vb(),r=O(()=>Jb.stats);function i(){return{interval:I(r).interval,zone:ao.effectiveTimezone(),resolve:Mv,formatTimestamp:e=>ao.formatTimestamp(e)}}var a=Qr(),o=N(a),s=e=>{var t=Vx(),a=N(t),o=M(a),s=P(M(o),2),c=M(s),l=P(M(c),2),u=M(l,!0);T(l),T(c);var d=P(c,2),f=P(M(d),4),p=M(f,!0);T(f),T(d);var m=P(d,2),h=P(M(m),4),g=M(h,!0);T(h),T(m);var _=P(m,2),v=P(M(_),4),y=M(v,!0);T(v),T(_),T(s),T(o);var b=P(o,2);wv(M(b),{build:()=>Bb(kv(),I(r).buckets,i())}),T(b),T(a);var x=P(a,2),S=e=>{var t=Bx(),a=M(t),o=M(a);Rx(o,{copyId:`audit-latency-help-copy`,label:`provider latency help`,text:`Average duration of successful requests as measured at the gateway, per provider. Local cache hits and failed requests are excluded; streamed responses count until the stream completes.`,title:e=>{z(e,zx())},$$slots:{title:!0}});var s=P(o,2),c=M(s),l=P(M(c),2),u=M(l,!0);T(l),T(c),T(s),T(a);var d=P(a,2);wv(M(d),{build:()=>Hb(kv(),I(r).buckets,I(r).provider_latency,{...i(),providerColor:n})}),T(d),T(t),F(e=>B(u,e),[()=>Fb(I(r))]),z(e,t)},C=O(()=>jb(I(r)));V(x,e=>{I(C)&&e(S)}),F((e,t,n,r)=>{B(u,e),B(p,t),B(g,n),B(y,r)},[()=>Mb(I(r)),()=>$o(Nb(I(r),`status_2xx`)),()=>$o(Nb(I(r),`status_4xx`)),()=>$o(Nb(I(r),`status_5xx`))]),z(e,t)},c=O(()=>Ab(I(r)));V(o,e=>{I(c)&&e(s)}),z(e,a),D()}var Ux=(e,t=f,n=f,r)=>{let i=Ot(()=>h(r?.(),!1));var a=Kx(),o=M(a),s=M(o,!0);T(o);var c=P(o,2),l=e=>{var t=Wx(),r=M(t,!0);T(t),F(()=>B(r,n())),z(e,t)},u=e=>{var t=Gx(),r=M(t,!0);T(t),F(()=>B(r,n())),z(e,t)};V(c,e=>{I(i)?e(l):e(u,-1)}),T(a),F(()=>B(s,t())),z(e,a)},Wx=R(` `),Gx=R(` `),Kx=R(`
`),qx=R(`

`),Jx=R(`
Breaker State
`),Yx=R(`
`),Xx=R(`
Models (Recent Traffic)
`),Zx=R(`
`),Qx=R(`

`);function $x(e,t){E(t,!0);let n=O(()=>Zy(t.provider)),r=O(()=>[[`Base URL`,t.provider.config?.base_url],[`API Version`,t.provider.config?.api_version]].filter(([,e])=>!!e));var i=Qx();let a;var o=M(i),s=M(o),c=M(s,!0);T(s);var l=P(s,2),u=e=>{var n=qx(),r=M(n,!0);T(n),F(()=>B(r,t.provider.last_error)),z(e,n)};V(l,e=>{t.provider.last_error&&e(u)});var d=P(l,2),f=e=>{var r=Zx(),i=M(r);{let e=O(()=>Qy(t.provider));Ux(i,()=>`Recent Requests`,()=>I(e))}var a=P(i,2),o=e=>{var r=Jx(),i=P(M(r),2),a=M(i),o=M(a,!0);T(a),T(i),T(r),F(e=>{U(a,1,Fi([`provider-status-health-state`,I(n)]),`svelte-6y9wjv`),B(o,e)},[()=>Xy(t.provider)]),z(e,r)},s=O(()=>Yy(t.provider));V(a,e=>{I(s)&&e(o)});var c=P(a,2),l=e=>{var n=Xx(),r=P(M(n),2);H(r,21,()=>$y(t.provider),e=>e.model,(e,t)=>{var n=Yx();let r;var i=M(n),a=M(i,!0);T(i);var o=P(i,2),s=M(o,!0);T(o),T(n),F((e,i)=>{r=U(n,1,`provider-status-health-model svelte-6y9wjv`,null,r,{"is-flagged":I(t).flagged}),W(n,`title`,e),B(a,I(t).model),B(s,i)},[()=>tb(I(t)),()=>eb(I(t))]),z(e,n)}),T(r),T(n),z(e,n)},u=O(()=>$y(t.provider).length>0);V(c,e=>{I(u)&&e(l)}),T(r),z(e,r)},p=O(()=>Jy(t.provider));V(d,e=>{I(p)&&e(f)});var m=P(d,2),h=M(m);H(h,17,()=>I(r),([e,t])=>e,(e,t)=>{var n=O(()=>g(I(t),2));Ux(e,()=>I(n)[0],()=>I(n)[1],()=>!0)});var _=P(h,2);{let e=O(()=>Ky(t.provider));Ux(_,()=>`Configured Models`,()=>I(e))}var v=P(_,2);{let e=O(()=>Wy(t.provider));Ux(v,()=>`Retry`,()=>I(e))}var y=P(v,2);{let e=O(()=>Gy(t.provider));Ux(y,()=>`Circuit Breaker`,()=>I(e))}T(m),T(o),T(i),F(()=>{a=U(i,1,`provider-status-details svelte-6y9wjv`,null,a,{"is-expanded":t.expanded,"is-collapsed":!t.expanded}),W(i,`aria-hidden`,!t.expanded),B(c,t.provider.status_reason)}),z(e,i),D()}var eS=R(` `),tS=R(``),nS=R(`

Models Available
Last Checked
`);function rS(e,t){E(t,!0);let n=O(()=>qb.cardExpanded(t.provider)),r=e=>ao.formatTimestamp(e);var i=nS(),a=M(i),o=M(a),s=M(o),c=M(s),l=M(c,!0);T(c);var u=P(c,2),d=e=>{var n=eS(),r=M(n);T(n),F(e=>B(r,`(${e??``})`),[()=>Hy(t.provider)]),z(e,n)},f=O(()=>Hy(t.provider));V(u,e=>{I(f)&&e(d)});var p=P(u,2),m=e=>{var n=tS();F((e,t,r)=>{W(n,`href`,e),W(n,`aria-label`,t),W(n,`title`,r)},[()=>Uy(t.provider),()=>`View `+(Hy(t.provider)||t.provider.name)+` provider docs`,()=>`View `+(Hy(t.provider)||t.provider.name)+` provider docs`]),z(e,n)},h=O(()=>Uy(t.provider));V(p,e=>{I(h)&&e(m)}),T(s),T(o);var g=P(o,2),_=M(g,!0);T(g),T(a);var v=P(a,2),y=M(v),b=P(M(y),2),x=M(b,!0);T(b),T(y);var S=P(y,2),C=P(M(S),2),w=M(C,!0);T(C),T(S),T(v);var ee=P(v,2);$x(ee,{get provider(){return t.provider},get expanded(){return I(n)}});var te=P(ee,2);let ne;G(M(te),{name:`chevron-down`,class:`provider-status-card-toggle-icon`}),T(te),T(i),F((e,r,i,a,o)=>{B(l,t.provider.name),U(g,1,`provider-status-pill ${e??``}`,`svelte-nopjmh`),W(g,`title`,r),B(_,t.provider.status_label),B(x,i),W(C,`title`,a),B(w,o),ne=U(te,1,`provider-status-card-toggle svelte-nopjmh`,null,ne,{"is-expanded":I(n)}),W(te,`aria-expanded`,I(n)),W(te,`aria-label`,(I(n)?`Collapse `:`Expand `)+t.provider.name+` details`),W(te,`title`,I(n)?`Collapse details`:`Expand details`)},[()=>Py(t.provider.status),()=>qy(t.provider),()=>$o(t.provider.runtime?.discovered_model_count),()=>Vy(t.provider,r),()=>By(t.provider,r)]),L(`click`,te,()=>qb.toggleCard(t.provider)),z(e,i),D()}Hr([`click`]);var iS=R(`

Providers Overview

`),aS=R(`
`);function oS(e,t){E(t,!0);let n=O(()=>qb.status.providers);var r=Qr(),i=N(r),a=e=>{var t=iS(),r=M(t),i=P(M(r),2),a=M(i),o=M(a,!0);T(a);var s=P(a,2);let c;T(i),T(r);var l=P(r,2);H(l,21,()=>I(n),e=>e.name,(e,t)=>{rS(e,{get provider(){return I(t)}})}),T(l),T(t),F((e,t)=>{W(i,`aria-checked`,qb.detailsExpanded),W(i,`title`,e),B(o,t),c=U(s,1,`provider-status-toggle-track svelte-1kx3uw4`,null,c,{"is-active":qb.detailsExpanded})},[()=>qb.detailsToggleLabel(),()=>qb.detailsToggleLabel()]),L(`click`,i,()=>qb.toggleDetails()),z(e,t)},o=e=>{var t=aS();px(M(t),{size:18,label:`Loading provider status`}),T(t),z(e,t)};V(i,e=>{I(n).length>0?e(a):qb.loading&&!qb.loadedOnce&&e(o,1)}),z(e,r),D()}Hr([`click`]);var sS=R(`
`);function cS(e,t){E(t,!0);function n(){js.fetchUsage(),js.fetchCacheOverview(``),Jb.fetch(),qb.fetch(),Yb.fetch(),Xb.fetch()}function r(){js.fetchUsage(),js.fetchCacheOverview(``),Jb.fetch()}function i(){r(),Xb.fetch()}An(()=>{if(K.refreshTick,Ha.page===`overview`)return Er(()=>{n(),Qv.start()}),()=>{Qv.stop(),qb.stopPolling()}});var a=sS(),o=M(a);ny(o,{});var s=P(o,4);Js(M(s),{onchange:i}),T(s);var c=P(s,2);Os(c,{});var l=P(c,2);ax(l,{});var u=P(l,2);dx(u,{});var d=P(u,2);yx(d,{onintervalchange:r});var f=P(d,2);Px(f,{});var p=P(f,2);Hx(p,{}),oS(P(p,2),{}),T(a),z(e,a),D()}var lS=`/admin/live/logs?types=audit,usage`;function uS(e,t,n){return!!t&&String(e&&e.id||``).trim()===t||!!n&&String(e&&e.request_id||``).trim()===n}function dS(e){switch(e){case`date_range`:return`Live paused — the selected date range does not include today. Set it to today to resume.`;case`filters`:return`Live paused while filters are active. Clear them to resume.`;case`pagination`:return`Live paused on later pages. Go to the first page to resume.`;default:return``}}function fS(e){let t=lS,n=Number(e||0);return Number.isFinite(n)&&n>0&&(t+=`&cursor=`+encodeURIComponent(String(n))),t}function pS(){return{async consumeLiveLogsBody(e){let t=new TextDecoder,n=``;for(;;){let r=await e.read();if(r.done)break;n+=t.decode(r.value,{stream:!0});let i;for(;i=n.match(/\r?\n\r?\n/);){let e=i.index,t=n.slice(0,e);n=n.slice(e+i[0].length),this.handleLiveLogsFrame(t)}}n+=t.decode(),n.trim()&&this.handleLiveLogsFrame(n)},handleLiveLogsFrame(e){let t=String(e||``).split(/\r?\n/),n=[];for(let e of t)e.indexOf(`data:`)===0&&n.push(e.slice(5).trimStart());if(n.length===0)return;let r;try{r=JSON.parse(n.join(` -`))}catch{return}this.applyLiveLogEvent(r)},applyLiveLogEvent(e){if(!e||typeof e!=`object`)return;let t=Number(e.seq||0);Number.isFinite(t)&&t>this.liveLogsLastSeq&&(this.liveLogsLastSeq=t);let n=String(e.type||``).trim();if(n!==`heartbeat`){if(n===`reset`){this.reloadLiveLogSources();return}if(n===`audit.removed`){this.removeLiveAuditEntry(e.data);return}if(n.indexOf(`audit.`)===0){this.mergeLiveAuditEntry(e.data||{},n);return}n.indexOf(`usage.`)===0&&(this.mergeLiveUsageEntry(e.data||{},n),typeof this.noteLiveTokenUsage==`function`&&this.noteLiveTokenUsage(n))}},reloadLiveLogSources(){typeof this.fetchUsage==`function`&&this.fetchUsage(),this.page===`audit-logs`&&typeof this.fetchAuditLog==`function`&&this.fetchAuditLog(!0)},auditLivePauseReason(){return!this.auditLog||this.auditLog.offset!==0?`pagination`:this.auditSearch||this.auditMethod||this.auditStatusCode||this.auditStream?`filters`:!this.followsToday&&(this.customStartDate||this.customEndDate)?`date_range`:null},auditLiveInsertAllowed(){return!this.auditLivePauseReason()},usageLiveInsertAllowed(){return this.usageLog&&this.usageLog.offset===0&&!this.usageLogSearch&&!this.usageFilterModel&&!this.usageFilterProvider&&!this.usageFilterLabel&&!this.usageFilterUserPath},mergeLiveAuditEntry(e,t){if(!e||typeof e!=`object`)return;let n=String(e.id||e.request_id||``).trim();if(!n)return;let r=String(e.request_id||``).trim(),i=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],a=i.findIndex(e=>uS(e,n,r)),o=a>=0&&i[a]||{},s=t===`audit.detail`,c=s?{...e,_detail_loaded:!0,_response_partial:!1,bodies_omitted:!1}:this.liveAuditPatch(o,e,t);if(a>=0){let e=this.mergeLiveAuditPatch(o,c);return i.splice(a,1,e),this.auditLog.entries=[...i],this.regroupLiveAuditHead(e),s||this.fetchExpandedAuditDetailIfReady(e),this.notifyLiveConversation(e),e}let l=this.mergeLiveAuditChild(e,c);if(l)return s||this.fetchExpandedAuditDetailIfReady(l),this.notifyLiveConversation(l),l;if(!this.auditLiveInsertAllowed())return;if(!s&&this.auditGroupSessions){let e=this.foldLiveAuditIntoThread(c);if(e)return this.fetchExpandedAuditDetailIfReady(e),this.notifyLiveConversation(e),e}this.auditLog.entries=[this.mergeLiveAuditUsagePatch(c),...i].slice(0,this.auditLog.limit||25),this.auditLog.total=Number(this.auditLog.total||0)+1;let u=this.auditLog.entries[0];return s||this.fetchExpandedAuditDetailIfReady(u),this.notifyLiveConversation(u),u},liveAuditPatch(e,t,n){let r=this.liveAuditStateAfter(e._live_state,n),i=this.liveAuditEventFlushed(e._live_state)||this.liveAuditEventFlushed(r),a={...t,_live:!0,_live_state:r,_audit_flushed:i,_live_pending:!i};return n===`audit.stream`?a._response_partial=!0:this.liveAuditStateSettled(n)&&(a._response_partial=!1),a},mergeLiveAuditChild(e,t){let n=this.auditThreadChildren;if(!n||typeof n!=`object`)return null;let r=String(e.id||``).trim(),i=String(e.request_id||``).trim(),a=Object.keys(n);for(let e=0;euS(e,r,i));if(c<0)continue;let l=this.mergeLiveAuditPatch(s[c]||{},t),u=[...s];return u.splice(c,1,l),this.auditThreadChildren={...n,[a[e]]:{...o,entries:u}},l}return null},regroupLiveAuditHead(e){if(!this.auditGroupSessions)return null;let t=String(e&&e.session_id||``).trim();if(!t)return null;let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=String(e.id||``).trim(),i=n.findIndex(e=>String(e.id||``).trim()===r);if(i<0)return null;let a=n.findIndex((e,n)=>n!==i&&String(e.session_id||``).trim()===t);if(a<0)return null;let o=n[a],s=Date.parse(o&&o.timestamp),c=Date.parse(e&&e.timestamp),l=Number.isFinite(s)&&Number.isFinite(c)&&s>c,u=l?o:e,d=l?e:o,f={...u,session_count:Math.max(1,Number(o.session_count||1))+Math.max(1,Number(e.session_count||1))},p=n.filter((e,t)=>t!==i&&t!==a);return p.unshift(f),this.auditLog.entries=p,this.auditLog.total=Math.max(0,Number(this.auditLog.total||0)-1),this.prependLiveAuditThreadChild(t,d),f},foldLiveAuditIntoThread(e){let t=String(e&&e.session_id||``).trim();if(!t)return null;let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=n.findIndex(e=>String(e.session_id||``).trim()===t);if(r<0)return null;let i=n[r],a=Number(i.session_count),o=this.mergeLiveAuditUsagePatch({...e,session_count:(Number.isFinite(a)&&a>0?a:1)+1}),s=[...n];return s.splice(r,1),s.unshift(o),this.auditLog.entries=s,this.prependLiveAuditThreadChild(t,i),o},prependLiveAuditThreadChild(e,t){let n=this.auditThreadChildren||{},r=n[e],i={...t};delete i.session_count;let a=r&&Array.isArray(r.entries)?{...r,entries:[i,...r.entries],total:Number(r.total||r.entries.length)+1}:{loading:!1,loaded:!1,entries:[i],total:1};this.auditThreadChildren={...n,[e]:a}},removeLiveAuditThreadChild(e,t){let n=this.auditThreadChildren;!n||typeof n!=`object`||Object.keys(n).forEach(r=>{let i=n[r],a=i&&Array.isArray(i.entries)?i.entries:[],o=a.filter(n=>!uS(n,e,t)),s=a.length-o.length;s!==0&&(this.auditThreadChildren={...this.auditThreadChildren,[r]:{...i,entries:o,total:Math.max(0,Number(i.total||a.length)-s)}},this.decrementLiveAuditThreadCount(r,s))})},decrementLiveAuditThreadCount(e,t){let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=n.findIndex(t=>String(t.session_id||``).trim()===e);if(r<0)return;let i=n[r],a=[...n];a.splice(r,1,{...i,session_count:Math.max(1,Number(i.session_count||1)-t)}),this.auditLog.entries=a},mergeLiveAuditPatch(e,t){let n={...e,...t};return t.data===void 0&&e.data!==void 0?n.data=e.data:e.data&&t.data&&typeof e.data==`object`&&typeof t.data==`object`&&!Array.isArray(e.data)&&!Array.isArray(t.data)&&(n.data={...e.data,...t.data}),this.mergeLiveAuditUsagePatch(n)},mergeLiveAuditUsagePatch(e){let t=this.liveUsageEntryForAudit(e);if(!t)return e;let n=this.auditEntryWithLiveUsage(e,t);return this.removeSkippedLiveUsage(t),n},liveUsageEntryForAudit(e){let t=String(e&&e.request_id||``).trim();return t&&((this.usageLog&&Array.isArray(this.usageLog.entries)?this.usageLog.entries:[]).find(e=>String(e&&e.request_id||``).trim()===t)||this.skippedLiveUsageByRequestId&&this.skippedLiveUsageByRequestId[t])||null},notifyLiveConversation(e){e&&typeof this.refreshLiveConversation==`function`&&this.refreshLiveConversation(e)},fetchExpandedAuditDetailIfReady(e){!e||!this.isAuditEntryExpanded||!this.isAuditEntryExpanded(e)||String(e._live_state||``).trim()!==`audit.flushed`&&!e._audit_flushed||typeof this.fetchAuditEntryDetail==`function`&&this.fetchAuditEntryDetail(e)},liveAuditStateRank(e){switch(String(e||``).trim()){case`audit.started`:return 10;case`audit.updated`:case`audit.stream`:return 20;case`audit.completed`:return 30;case`audit.failed`:case`audit.flushed`:case`audit.detail`:return 40;default:return 0}},liveAuditStateAfter(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return this.liveAuditStateRank(n)>this.liveAuditStateRank(r)?n:r},liveAuditStateSettled(e){return this.liveAuditStateRank(e)>=this.liveAuditStateRank(`audit.completed`)},liveAuditEventFlushed(e){let t=String(e||``).trim();return t===`audit.failed`||t===`audit.flushed`||t===`audit.detail`},removeLiveAuditEntry(e){if(!e||!this.auditLog||!Array.isArray(this.auditLog.entries))return;let t=String(e.id||``).trim(),n=String(e.request_id||``).trim();if(!t&&!n)return;let r=this.auditLog.entries,i=[],a=0,o=0,s=!1;r.forEach(e=>{if(!uS(e,t,n)){i.push(e);return}a++;let r=String(e.session_id||``).trim(),c=Math.max(1,Number(e.session_count||1));if(!this.auditGroupSessions||!r||c<=1)return;o++;let l=this.auditThreadChildren&&this.auditThreadChildren[r],u=l&&Array.isArray(l.entries)?l.entries.filter(e=>!uS(e,t,n)):[];if(u.length===0){s=!0;return}let d={...u[0],session_id:r,session_count:c-1};i.push(d),this.auditThreadChildren={...this.auditThreadChildren,[r]:{...l,entries:u.slice(1),total:Math.max(0,Number(l.total||c)-1)}}}),a>0&&(this.auditLog.entries=i,this.auditLog.total=Math.max(0,Number(this.auditLog.total||0)-a+o)),this.removeLiveAuditThreadChild(t,n),s&&typeof this.fetchAuditLog==`function`&&this.fetchAuditLog(!0)},mergeLiveUsageEntry(e,t){if(!e||typeof e!=`object`)return;e={...e,_live_state:t||e._live_state||`usage.completed`};let n=String(e.id||``).trim();if(!n)return;let r=this.usageLog&&Array.isArray(this.usageLog.entries)?this.usageLog.entries:[],i=r.findIndex(e=>String(e.id||``).trim()===n);if(i>=0){let t=r[i]||{},n=this.mergeLiveUsagePatch(t,e);if(this.applyLiveUsageToAudit(n),this.liveUsageShouldSkip(n)){r.splice(i,1),this.usageLog.entries=[...r],this.usageLog.total=Math.max(0,Number(this.usageLog.total||0)-1),this.storeSkippedLiveUsage(n);return}r.splice(i,1,n),this.usageLog.entries=[...r],this.removeSkippedLiveUsage(n);return}let a=this.mergeLiveUsagePatch(this.liveUsageSeedForEntry(e),e);if(this.applyLiveUsageToAudit(a),this.liveUsageShouldSkip(a)){this.storeSkippedLiveUsage(a);return}this.removeSkippedLiveUsage(a),this.usageLog.entries=[a,...r].slice(0,this.usageLog.limit||50),this.usageLog.total=Number(this.usageLog.total||0)+1},mergeLiveUsagePatch(e,t){e=e&&typeof e==`object`?e:{};let n=this.liveUsageStateAfter(e._live_state,t&&t._live_state),r=this.liveUsageEventFlushed(e)||this.liveUsageEventFlushed({...t,_live_state:n});return{...e,...t,_live:!0,_live_state:n||`usage.completed`,_live_pending:!r,_usage_flushed:r}},liveUsageShouldSkip(e){return!!(this.usageLogHideCached&&this.liveUsageEntryCached(e))||!this.usageLiveInsertAllowed()},liveUsageSeedForEntry(e){return this.skippedLiveUsageForEntry(e)||this.auditLiveUsageForEntry(e)},skippedLiveUsageForEntry(e){let t=String(e&&e.request_id||``).trim();return t&&this.skippedLiveUsageByRequestId?this.skippedLiveUsageByRequestId[t]:null},auditLiveUsageForEntry(e){let t=String(e&&e.request_id||``).trim();if(!t||!this.auditLog||!Array.isArray(this.auditLog.entries))return null;let n=this.auditLog.entries.find(e=>String(e&&e.request_id||``).trim()===t),r=n&&n.usage&&typeof n.usage==`object`&&!Array.isArray(n.usage)?n.usage:null;return r?{id:e&&e.id,request_id:t,entries:r.entries,input_tokens:r.input_tokens,uncached_input_tokens:r.uncached_input_tokens,cached_input_tokens:r.cached_input_tokens,cache_write_input_tokens:r.cache_write_input_tokens,output_tokens:r.output_tokens,total_tokens:r.total_tokens,cached_input_ratio:r.cached_input_ratio,estimated_cached_characters:r.estimated_cached_characters,_live_state:n._usage_live_state,_live_pending:n._usage_live_pending,_usage_flushed:n._usage_flushed}:null},storeSkippedLiveUsage(e){let t=String(e&&e.request_id||``).trim();t&&((!this.skippedLiveUsageByRequestId||typeof this.skippedLiveUsageByRequestId!=`object`||Array.isArray(this.skippedLiveUsageByRequestId))&&(this.skippedLiveUsageByRequestId={}),this.skippedLiveUsageByRequestId[t]=e)},removeSkippedLiveUsage(e){let t=String(e&&e.request_id||``).trim();t&&this.skippedLiveUsageByRequestId&&delete this.skippedLiveUsageByRequestId[t]},liveUsageEntryCached(e){let t=String(e&&e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`||!!(e&&e.cache_hit)},liveUsageEventFlushed(e){let t=String(e&&e._live_state||``).trim();return!!(e&&e._usage_flushed)||t===`usage.failed`||t===`usage.flushed`},liveUsageStateRank(e){switch(String(e||``).trim()){case`usage.completed`:return 10;case`usage.failed`:case`usage.flushed`:return 20;default:return 0}},liveUsageStateAfter(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return this.liveUsageStateRank(n)>this.liveUsageStateRank(r)?n:r},applyLiveUsageToAudit(e){let t=String(e&&e.request_id||``).trim();if(!t||!this.auditLog||!Array.isArray(this.auditLog.entries))return;let n=this.auditLog.entries.findIndex(e=>String(e.request_id||``).trim()===t);if(n>=0){let t=this.auditLog.entries[n];this.auditLog.entries.splice(n,1,this.auditEntryWithLiveUsage(t,e)),this.auditLog.entries=[...this.auditLog.entries]}let r=this.auditThreadChildren;if(!r||typeof r!=`object`)return;let i=r,a=!1;Object.keys(r).forEach(n=>{let r=i[n],o=r&&Array.isArray(r.entries)?r.entries:[],s=o.findIndex(e=>String(e.request_id||``).trim()===t);if(s<0)return;let c=[...o];c.splice(s,1,this.auditEntryWithLiveUsage(o[s],e)),i={...i,[n]:{...r,entries:c}},a=!0}),a&&(this.auditThreadChildren=i)},auditEntryWithLiveUsage(e,t){let n=this.liveUsageStateAfter(e._usage_live_state,t._live_state||`usage.completed`),r=this.liveUsageEventFlushed({_live_state:n,_usage_flushed:e._usage_flushed||t._usage_flushed});return{...e,usage:this.liveUsageSummary(t,e.usage),_usage_live_state:n||`usage.completed`,_usage_live_pending:!r,_usage_flushed:r}},liveUsageSummary(e,t){let n=t&&typeof t==`object`&&!Array.isArray(t)?t:{},r=this.liveNumber(e.input_tokens,this.liveNumber(n.input_tokens,0)),i=this.liveNumber(e.output_tokens,this.liveNumber(n.output_tokens,0)),a=this.liveNumber(e.uncached_input_tokens,this.liveNumber(n.uncached_input_tokens,0)),o=this.liveNumber(e.cached_input_tokens,this.liveNumber(n.cached_input_tokens,0)),s=this.liveNumber(e.cache_write_input_tokens,this.liveNumber(n.cache_write_input_tokens,0));r>0&&a+o+s===0&&(a=r);let c=a+o+s||r,l=c+i||this.liveNumber(e.total_tokens,this.liveNumber(n.total_tokens,0)),u=this.liveNumber(e.cached_input_ratio,this.liveNumber(n.cached_input_ratio,c>0?o/c:0));return{entries:Math.max(1,this.liveNumber(e.entries,this.liveNumber(n.entries,1))),input_tokens:c,uncached_input_tokens:a,cached_input_tokens:o,cache_write_input_tokens:s,output_tokens:i,total_tokens:l,cached_input_ratio:u,estimated_cached_characters:this.liveNumber(e.estimated_cached_characters,this.liveNumber(n.estimated_cached_characters,o*4))}},liveNumber(e,t){let n=Number(e);return Number.isFinite(n)?n:t},auditEntryShouldFetchDetail(e){return!e||e._detail_loading||e._detail_loaded||this.auditEntryLiveDetailPending(e)?!1:this.auditEntryNeedsPersistedLiveDetail(e)||e.bodies_omitted?!0:!this.auditEntryHasDetailData(e)},auditEntryLiveDetailPending(e){if(!e||!e._live)return!1;let t=String(e._live_state||``).trim();return t===`audit.failed`||!e._audit_flushed&&t!==`audit.flushed`&&t!==`audit.detail`},auditEntryNeedsPersistedLiveDetail(e){return!!(e&&e._live&&!e._detail_loaded)},auditEntryHasDetailData(e){let t=e&&e.data;return!t||typeof t!=`object`?!1:t.request_headers!==void 0||t.response_headers!==void 0||t.request_body!==void 0||t.response_body!==void 0||t.request_body_too_big_to_handle!==void 0||t.response_body_too_big_to_handle!==void 0||t.user_agent!==void 0||t.api_key_hash!==void 0||t.temperature!==void 0||t.max_tokens!==void 0||t.error_message!==void 0||t.error_code!==void 0},clearAuditDetailLoading(e){if(!e)return;let t=String(e.id||``).trim(),n=String(e.request_id||``).trim(),r=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],i=r.find(e=>t&&String(e.id||``).trim()===t?!0:!!(n&&String(e.request_id||``).trim()===n)),a=i||e;a._detail_loading=!1,i&&(this.auditLog.entries=[...r])}}}var mS=class{#e=k(j({entries:[],total:0,limit:25,offset:0}));get auditLog(){return I(this.#e)}set auditLog(e){A(this.#e,e,!0)}#t=k(j({entries:[],total:0,limit:50,offset:0}));get usageLog(){return I(this.#t)}set usageLog(e){A(this.#t,e,!0)}#n=k(``);get auditSearch(){return I(this.#n)}set auditSearch(e){A(this.#n,e,!0)}#r=k(``);get auditMethod(){return I(this.#r)}set auditMethod(e){A(this.#r,e,!0)}#i=k(``);get auditStatusCode(){return I(this.#i)}set auditStatusCode(e){A(this.#i,e,!0)}#a=k(``);get auditStream(){return I(this.#a)}set auditStream(e){A(this.#a,e,!0)}#o=k(Ea(`gomodel_audit_group_sessions`,`true`)!==`false`);get auditGroupSessions(){return I(this.#o)}set auditGroupSessions(e){A(this.#o,e,!0)}#s=k(j({}));get auditThreadChildren(){return I(this.#s)}set auditThreadChildren(e){A(this.#s,e,!0)}#c=k(``);get usageLogSearch(){return I(this.#c)}set usageLogSearch(e){A(this.#c,e,!0)}#l=k(``);get usageFilterModel(){return I(this.#l)}set usageFilterModel(e){A(this.#l,e,!0)}#u=k(``);get usageFilterProvider(){return I(this.#u)}set usageFilterProvider(e){A(this.#u,e,!0)}#d=k(``);get usageFilterLabel(){return I(this.#d)}set usageFilterLabel(e){A(this.#d,e,!0)}#f=k(``);get usageFilterUserPath(){return I(this.#f)}set usageFilterUserPath(e){A(this.#f,e,!0)}#p=k(!1);get usageLogHideCached(){return I(this.#p)}set usageLogHideCached(e){A(this.#p,e,!0)}#m=k(!1);get liveLogsStreaming(){return I(this.#m)}set liveLogsStreaming(e){A(this.#m,e,!0)}liveLogsLastSeq=0;liveLogsReconnectAttempts=0;liveLogsReconnectTimer=null;liveLogsController=null;skippedLiveUsageByRequestId=null;fetchUsage=null;fetchAuditLog=null;isAuditEntryExpanded=null;refreshLiveConversation=null;noteLiveTokenUsage=null;get page(){return Ha.page}get customStartDate(){return Ts.customStartDate}get customEndDate(){return Ts.customEndDate}get followsToday(){return Ts.followsToday}liveLogsEnabled(){return _o.liveLogsVisible()}async startLiveLogs(){typeof fetch!=`function`||typeof ReadableStream>`u`||(await _o.ensureLoaded(),this.liveLogsEnabled()&&(this.stopLiveLogs(),this.liveLogsController=typeof AbortController==`function`?new AbortController:null,this.readLiveLogsStream(this.liveLogsController)))}stopLiveLogs(){this.liveLogsStreaming=!1,this.liveLogsReconnectTimer&&=(clearTimeout(this.liveLogsReconnectTimer),null),this.liveLogsController&&typeof this.liveLogsController.abort==`function`&&this.liveLogsController.abort(),this.liveLogsController=null}ensureLiveLogs(){this.liveLogsController||this.liveLogsReconnectTimer||this.startLiveLogs()}async readLiveLogsStream(e){let t={};e&&(t.signal=e.signal);let n=fS(this.liveLogsLastSeq),r=K.generation;try{let i=await lo(n,t);if(i.status===401){if(K.handleUnauthorized(r),r{this.liveLogsReconnectTimer=null,this.startLiveLogs()},t)}async fetchAuditEntryDetail(e){if(!this.auditEntryShouldFetchDetail(e))return;let t=String(e.id||``).trim();if(!t)return;e._detail_loading=!0;let n=e;try{let e=await fo(`/admin/audit/detail?log_id=`+encodeURIComponent(t),{label:`audit detail`});if(e.stale||!e.ok)return;n=this.mergeLiveAuditEntry(e.data,`audit.detail`)||n}catch(e){console.error(`Failed to fetch audit detail:`,e)}finally{this.clearAuditDetailLoading(n)}}};Object.assign(mS.prototype,pS());var hS=new mS;if(typeof window<`u`){let e=!1;window.addEventListener(`pagehide`,()=>{e=!!hS.liveLogsController,hS.stopLiveLogs()}),window.addEventListener(`pageshow`,t=>{t.persisted&&e&&hS.ensureLiveLogs()})}var gS=null;Mn(()=>{An(()=>{let e=K.refreshTick;if(gS===null){gS=e;return}e!==gS&&(gS=e,Er(()=>{hS.stopLiveLogs(),hS.startLiveLogs()}))})});function _S(){return{total_requests:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,uncached_input_tokens:0,cached_input_tokens:0,cache_write_input_tokens:0,total_input_cost:null,total_output_cost:null,total_cost:null,rewrite_tokens_saved:0,rewrite_cost_saved:null}}function vS(){return{entries:[],total:0,limit:50,offset:0}}function yS(e,t){let n=[[`model`,e&&e.model],[`provider`,e&&e.provider],[`label`,e&&e.label],[`user_path`,e&&e.user_path]],r=``;for(let[e,i]of n)!i||e===t||(r+=`&`+e+`=`+encodeURIComponent(i));return r}function bS({limit:e,offset:t,hideCached:n,search:r}){let i=`&limit=`+e+`&offset=`+t;return i+=`&cache_mode=`+(n?`uncached`:`all`),r&&(i+=`&search=`+encodeURIComponent(r)),i}function xS(e,t){let n=new Set(e||[]);return t&&n.add(t),[...n].sort()}function SS(e,t){let n=Number(t&&t.total_requests||0)-Number(e&&e.total_requests||0);return Number.isFinite(n)&&n>0?n:0}function CS(e,t,n){let r=n?e:t,i=Number(r&&r.total_requests||0);return Number.isFinite(i)?i:0}function wS(e,t,n){let r=SS(e,t);return r<=0?``:n?$o(r)+` cached requests hidden`:$o(Number(e&&e.total_requests||0))+` to providers + `+$o(r)+` from cache`}function TS(e){let t=e||{};return t.total_input_cost===null||t.total_input_cost===void 0?``:es(t.total_input_cost)+` input + `+es(t.total_output_cost)+` output`}function ES(e){let t=Number(e&&e.rewrite_tokens_saved||0);return Number.isFinite(t)&&t>0?t:0}function DS(e){return ES(e)>0}function OS(e){let t=e||{};return t.rewrite_cost_saved===void 0?null:t.rewrite_cost_saved}function kS(){return`Estimated at 4 net characters removed per token`}function AS(e,t){return t===`costs`?es(OS(e)):rs(ES(e))}function jS(e,t){let n=t===`costs`,r=n?Number(OS(e)):ES(e);if(!Number.isFinite(r)||r<=0)return null;let i=e&&(n?e.total_cost:e.total_input_tokens);if(i==null)return null;let a=Number(i);return!Number.isFinite(a)||a<0?null:r/(a+r)*100}function MS(e,t){let n=jS(e,t);return n===null?``:(n<.1?`<0.1`:n.toFixed(1))+`% less`}function NS(e,t){let n=ES(e);if(n<=0)return``;let r=[$o(n)+` estimated prompt token-transmissions removed across provider requests`,kS(),`Savings are summed per provider request; resent conversation history is counted again`],i=OS(e);i!=null&&(r.push(es(i)+` estimated gross input cost avoided`),r.push(`Prompt-cache changes caused by rewriting are not included`));let a=MS(e,t);return a&&r.push(a+` than the same traffic without rewriting (`+(t===`costs`?`cost`:`tokens`)+`)`),r.join(` -`)}function PS(e){return String(e&&e.cost_source||``).trim()}function FS(e){let t=PS(e);return t===`openrouter_credits`||t===`xai_cost_in_usd_ticks`}function IS(e){switch(PS(e)){case`openrouter_credits`:return`Costs from OpenRouter USD-based credits.`;case`xai_cost_in_usd_ticks`:return`Costs from xAI usage.cost_in_usd_ticks.`;default:return``}}function LS(e){return String(e&&e.cache_type||``).trim().toLowerCase()}function RS(e){let t=LS(e);return t===`exact`||t===`semantic`}function zS(e){let t=LS(e);return t===`exact`?`Exact`:t===`semantic`?`Semantic`:`-`}function BS(e,t){let n=t?String(t):``;return RS(e)?n?`Saved by cache — not charged -`+n:`Saved by cache — not charged`:n}function VS(e){let t=Number(e&&e.cached_input_ratio);return!Number.isFinite(t)||t<=0?0:Math.min(1,t)}function HS(e){return Number(e&&e.cached_input_tokens||0)>0}function US(e){return HS(e)?(VS(e)*100).toFixed(1)+`%`:``}function WS(e){if(!HS(e))return``;let t=Number(e.cached_input_tokens||0),n=Number(e.uncached_input_tokens||0),r=Number(e.cache_write_input_tokens||0),i=t+n+r,a=[$o(t)+` cached / `+$o(i)+` input tokens`];return r>0&&a.push($o(r)+` cache write`),a.join(` -`)}function GS(e){let t=[];if(IS(e)&&(t.push(IS(e)),t.push(``)),t.push(`Input: `+es(e.input_cost)),t.push(`Output: `+es(e.output_cost)),e.raw_data){t.push(``);for(let[n,r]of Object.entries(e.raw_data)){let e=n.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase()),i=r&&typeof r==`object`?JSON.stringify(r):$o(r);t.push(e+`: `+i)}}return t.join(` -`)}function KS(e){return Array.isArray(e&&e.labels)?e.labels:[]}function qS(e,t,n){return(e||[]).length>0||t?!0:(n||[]).some(e=>KS(e).length>0)}function JS(e){return e&&typeof e.total_tokens==`number`?e.total_tokens:(e&&e.input_tokens||0)+(e&&e.output_tokens||0)}function YS(e,t){return t?e.total_cost||0:JS(e)}function XS(e,t){return[...e||[]].sort((e,n)=>t?(n.total_cost||0)-(e.total_cost||0):YS(n,t)-YS(e,t))}function ZS(e){let t=Array.isArray(e)?e:[];if(t.length===0)return!1;if(t.length!==1)return!0;let n=String(t[0]&&t[0].user_path||``).trim();return n!==``&&n!==`/`}function QS(e){return(e||`chart`)===`chart`||e===`stacked`}function $S(e,t,n){let r=XS(e,n),i=e=>Number(e)||0,a=e=>n?Math.min(i(e.cached_input_cost),i(e.input_cost)):i(e.cached_input_tokens),o=e=>n?i(e.input_cost)-a(e):i(e.uncached_input_tokens)+i(e.cached_input_tokens)+i(e.cache_write_input_tokens)>0?i(e.uncached_input_tokens)+i(e.cache_write_input_tokens):i(e.input_tokens),s=e=>i(n?e.output_cost:e.output_tokens),c=e=>n?0:i(e.local_cached_input_tokens),l=e=>n?0:i(e.local_cached_output_tokens),u=r.slice(0,10),d=r.slice(10),f=u.map(t),p=u.map(o),m=u.map(s),h=u.map(a),g=u.map(c),_=u.map(l);if(d.length>0){f.push(`Other`);let e=e=>d.reduce((t,n)=>t+e(n),0);p.push(e(o)),m.push(e(s)),h.push(e(a)),g.push(e(c)),_.push(e(l))}return{labels:f,inputs:p,outputs:m,prompts:h,localIns:g,localOuts:_}}function eC(e){return Math.max(200,e*32+72)}var J=new class{#e=k(`tokens`);get usageMode(){return I(this.#e)}set usageMode(e){A(this.#e,e,!0)}get usageFilterModel(){return hS.usageFilterModel}set usageFilterModel(e){hS.usageFilterModel=e}get usageFilterProvider(){return hS.usageFilterProvider}set usageFilterProvider(e){hS.usageFilterProvider=e}get usageFilterLabel(){return hS.usageFilterLabel}set usageFilterLabel(e){hS.usageFilterLabel=e}get usageFilterUserPath(){return hS.usageFilterUserPath}set usageFilterUserPath(e){hS.usageFilterUserPath=e}#t=k(j({models:[],providers:[],labels:[]}));get usageFacetOptions(){return I(this.#t)}set usageFacetOptions(e){A(this.#t,e,!0)}#n=k(j(_S()));get usageSummary(){return I(this.#n)}set usageSummary(e){A(this.#n,e,!0)}#r=k(j(_S()));get usageSummaryAll(){return I(this.#r)}set usageSummaryAll(e){A(this.#r,e,!0)}#i=k(j([]));get modelUsage(){return I(this.#i)}set modelUsage(e){A(this.#i,e,!0)}#a=k(j([]));get userPathUsage(){return I(this.#a)}set userPathUsage(e){A(this.#a,e,!0)}#o=k(j([]));get labelUsage(){return I(this.#o)}set labelUsage(e){A(this.#o,e,!0)}get usageLog(){return hS.usageLog}set usageLog(e){hS.usageLog=e}get usageLogSearch(){return hS.usageLogSearch}set usageLogSearch(e){hS.usageLogSearch=e}get usageLogHideCached(){return hS.usageLogHideCached}set usageLogHideCached(e){hS.usageLogHideCached=e}#s=k(`chart`);get modelUsageView(){return I(this.#s)}set modelUsageView(e){A(this.#s,e,!0)}#c=k(`chart`);get userPathUsageView(){return I(this.#c)}set userPathUsageView(e){A(this.#c,e,!0)}#l=k(`chart`);get labelUsageView(){return I(this.#l)}set labelUsageView(e){A(this.#l,e,!0)}#u=k(!1);get summaryLoading(){return I(this.#u)}set summaryLoading(e){A(this.#u,e,!0)}#d=k(!1);get modelUsageLoading(){return I(this.#d)}set modelUsageLoading(e){A(this.#d,e,!0)}#f=k(!1);get userPathUsageLoading(){return I(this.#f)}set userPathUsageLoading(e){A(this.#f,e,!0)}#p=k(!1);get labelUsageLoading(){return I(this.#p)}set labelUsageLoading(e){A(this.#p,e,!0)}#m=k(!1);get usageLogLoading(){return I(this.#m)}set usageLogLoading(e){A(this.#m,e,!0)}#h={};#g(e){this.#h[e]&&this.#h[e].abort();let t=new AbortController;return this.#h[e]=t,t}#_(e,t){this.#h[e]===t&&(this.#h[e]=null)}filterQueryStr(e){return yS({model:this.usageFilterModel,provider:this.usageFilterProvider,label:this.usageFilterLabel,user_path:this.usageFilterUserPath},e)}onUsageFilterChanged(){this.fetchUsagePage()}toggleUsageLabelFilter(e){this.usageFilterLabel=this.usageFilterLabel===e?``:e,this.onUsageFilterChanged()}usageLabelChipTitle(e){return this.usageFilterLabel===e?`Clear label filter`:`Filter usage by "`+e+`"`}toggleUsageMode(e){this.usageMode=e,Ha.navigate(`usage`,e===`costs`?`costs`:null)}toggleUsageChartView(e,t){e===`model`&&(this.modelUsageView=t),e===`userPath`&&(this.userPathUsageView=t),e===`label`&&(this.labelUsageView=t)}usageFilterModelOptions(){return xS(this.usageFacetOptions.models,this.usageFilterModel)}usageFilterProviderOptions(){return xS(this.usageFacetOptions.providers,this.usageFilterProvider)}usageFilterLabelOptions(){return xS(this.usageFacetOptions.labels,this.usageFilterLabel)}async fetchUsagePage(){await _o.ensureLoaded();let e=[this.fetchUsagePageSummary(),this.fetchUsageFacetOptions(),this.fetchModelUsage(),this.fetchUserPathUsage(),this.fetchLabelUsage(),this.fetchUsageLog(!0)];js.cacheAnalyticsEnabled()&&e.push(js.fetchCacheOverview(this.filterQueryStr())),await Promise.all(e)}async fetchUsagePageSummary(){let e=this.#g(`summary`);this.summaryLoading=!0;try{let t=Ts.queryStr()+this.filterQueryStr(),[n,r]=await Promise.all([fo(`/admin/usage/summary?`+t+`&cache_mode=uncached`,{label:`usage page summary`,signal:e.signal}),fo(`/admin/usage/summary?`+t+`&cache_mode=all`,{label:`usage page summary (all)`,signal:e.signal})]);if(n.stale||r.stale||e.signal.aborted)return;if(!n.ok||!r.ok){this.usageSummary=_S(),this.usageSummaryAll=_S();return}this.usageSummary=n.data&&typeof n.data==`object`?n.data:_S(),this.usageSummaryAll=r.data&&typeof r.data==`object`?r.data:_S()}catch(e){if(mo(e))return;console.error(`Failed to fetch usage page summary:`,e),this.usageSummary=_S(),this.usageSummaryAll=_S()}finally{this.#_(`summary`,e),this.#h.summary===null&&(this.summaryLoading=!1)}}async fetchUsageFacetOptions(){let e=this.#g(`facets`);try{let t=async(t,n)=>{let r=await fo(t+`?`+Ts.queryStr()+this.filterQueryStr(n),{label:`usage facet options`,signal:e.signal});return r.stale?null:r.ok&&Array.isArray(r.data)?r.data:[]},n=t(`/admin/usage/models`,`model`),r=!this.usageFilterModel&&!this.usageFilterProvider,[i,a,o]=await Promise.all([n,r?n:t(`/admin/usage/models`,`provider`),t(`/admin/usage/labels`,`label`)]);if(e.signal.aborted||i===null||a===null||o===null)return;this.usageFacetOptions={models:i.map(e=>e&&e.model).filter(Boolean),providers:a.map(e=>ls(e)).filter(Boolean),labels:o.map(e=>e&&e.label).filter(Boolean)}}catch(e){if(mo(e))return;console.error(`Failed to fetch usage facet options:`,e),this.usageFacetOptions={models:[],providers:[],labels:[]}}finally{this.#_(`facets`,e)}}async#v(e,t,n,r,i){let a=this.#g(e);i(!0);try{let e=await fo(t+`?`+Ts.queryStr()+this.filterQueryStr(),{label:n,signal:a.signal});if(e.stale||a.signal.aborted)return;if(!e.ok){r([]);return}r(Array.isArray(e.data)?e.data:[])}catch(e){if(mo(e))return;console.error(`Failed to fetch `+n+`:`,e),r([])}finally{this.#_(e,a),this.#h[e]===null&&i(!1)}}fetchModelUsage(){return this.#v(`modelUsage`,`/admin/usage/models`,`usage models`,e=>this.modelUsage=e,e=>this.modelUsageLoading=e)}fetchUserPathUsage(){return this.#v(`userPathUsage`,`/admin/usage/user-paths`,`usage user paths`,e=>this.userPathUsage=e,e=>this.userPathUsageLoading=e)}fetchLabelUsage(){return this.#v(`labelUsage`,`/admin/usage/labels`,`usage labels`,e=>this.labelUsage=e,e=>this.labelUsageLoading=e)}async fetchUsageLog(e){let t=this.#g(`usageLog`);this.usageLogLoading=!0;try{e&&(this.usageLog.offset=0);let n=Ts.queryStr()+this.filterQueryStr();n+=bS({limit:this.usageLog.limit,offset:this.usageLog.offset,hideCached:this.usageLogHideCached,search:this.usageLogSearch});let r=await fo(`/admin/usage/log?`+n,{label:`usage log`,signal:t.signal});if(r.stale||t.signal.aborted)return;if(!r.ok){this.usageLog=vS();return}let i=r.data&&typeof r.data==`object`?r.data:vS();i.entries||=[],this.usageLog=i}catch(e){if(mo(e))return;console.error(`Failed to fetch usage log:`,e),this.usageLog=vS()}finally{this.#_(`usageLog`,t),this.#h.usageLog===null&&(this.usageLogLoading=!1)}}usageLogNextPage(){this.usageLog.offset+this.usageLog.limit0&&(this.usageLog.offset=Math.max(0,this.usageLog.offset-this.usageLog.limit),this.fetchUsageLog(!1))}};hS.fetchUsage=()=>{Ha.page===`usage`&&J.fetchUsagePage()};var tC=R(`
`);function nC(e,t){E(t,!0);let n=ya(t,`value`,15,``),r=ya(t,`placeholder`,3,``),i=ya(t,`label`,3,``),a=ya(t,`id`,3,void 0),o=ya(t,`oninput`,3,void 0),s=ya(t,`class`,3,``);var c=tC(),l=M(c);G(l,{name:`search`,class:`filter-input-icon`});var u=P(l,2);na(u),T(c),F(()=>{U(c,1,Fi([`filter-input-wrap`,s()]),`svelte-30xz1k`),W(u,`id`,a()),W(u,`placeholder`,r()),W(u,`aria-label`,i())}),L(`input`,u,function(...e){o()?.apply(this,e)}),da(u,n),z(e,c),D()}Hr([`input`]);function rC(e,t=300){let n=null,r=(...r)=>{clearTimeout(n),n=setTimeout(()=>{n=null,e(...r)},t)};return r.cancel=()=>{clearTimeout(n),n=null},r}var iC=R(``),aC=R(``),oC=R(`
`);function sC(e,t){E(t,!0);let n=rC(()=>J.onUsageFilterChanged());An(()=>n.cancel);var r=oC(),i=M(r),a=M(i);a.value=a.__value=``,H(P(a),16,()=>J.usageFilterModelOptions(),e=>e,(e,t)=>{var n=iC(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(i);var o=P(i,2),s=M(o);s.value=s.__value=``,H(P(s),16,()=>J.usageFilterProviderOptions(),e=>e,(e,t)=>{var n=iC(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(o);var c=P(o,2),l=e=>{var t=aC(),n=M(t);n.value=n.__value=``,H(P(n),16,()=>J.usageFilterLabelOptions(),e=>e,(e,t)=>{var n=iC(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(t),L(`change`,t,()=>J.onUsageFilterChanged()),Gi(t,()=>J.usageFilterLabel,e=>J.usageFilterLabel=e),z(e,t)},u=O(()=>J.usageFilterLabelOptions().length>0);V(c,e=>{I(u)&&e(l)}),nC(P(c,2),{class:`usage-page-filters-user-path`,placeholder:`User path /team/alpha`,label:`Filter by user path`,get oninput(){return n},get value(){return J.usageFilterUserPath},set value(e){J.usageFilterUserPath=e}}),T(r),L(`change`,i,()=>J.onUsageFilterChanged()),Gi(i,()=>J.usageFilterModel,e=>J.usageFilterModel=e),L(`change`,o,()=>J.onUsageFilterChanged()),Gi(o,()=>J.usageFilterProvider,e=>J.usageFilterProvider=e),z(e,r),D()}Hr([`change`]);var cC=R(`
Cache Saved
Cache Hits
`,1);function lC(e,t){E(t,!0);var n=Qr(),r=N(n),i=e=>{var t=cC(),n=N(t),r=P(M(n),2),i=M(r,!0);T(r),T(n);var a=P(n,2),o=P(M(a),2),s=M(o,!0);T(o),T(a),F((e,t)=>{B(i,e),B(s,t)},[()=>es(js.cacheOverview.summary.total_saved_cost),()=>$o(js.cacheOverview.summary.total_hits)]),z(e,t)},a=O(()=>js.cacheAnalyticsEnabled());V(r,e=>{I(a)&&e(i)}),z(e,n),D()}var uC=R(` `),dC=R(`
Pro Saved
`),fC=R(`
Total Requests
Estimated Cost
`);function pC(e,t){E(t,!0);let n=O(()=>DS(J.usageSummary)),r=O(()=>AS(J.usageSummary,J.usageMode)),i=O(()=>MS(J.usageSummary,J.usageMode));var a=fC(),o=M(a),s=P(M(o),2),c=M(s),l=e=>{px(e,{size:18,label:`Loading usage summary`})},u=e=>{var t=Zr();F(e=>B(t,e),[()=>$o(CS(J.usageSummary,J.usageSummaryAll,J.usageLogHideCached))]),z(e,t)};V(c,e=>{J.summaryLoading?e(l):e(u,-1)}),T(s),T(o);var d=P(o,2),f=P(M(d),2),p=M(f),m=e=>{px(e,{size:18,label:`Loading usage summary`})},h=e=>{var t=Zr();F(e=>B(t,e),[()=>es(J.usageSummary.total_cost)]),z(e,t)};V(p,e=>{J.summaryLoading?e(m):e(h,-1)}),T(f),T(d);var g=P(d,2),_=e=>{var t=dC(),n=P(M(t),2),a=M(n),o=M(a,!0);T(a);var s=P(a,2),c=e=>{var t=uC(),n=M(t,!0);T(t),F(()=>B(n,I(i))),z(e,t)};V(s,e=>{I(i)&&e(c)}),T(n),T(t),F(e=>{W(n,`title`,e),B(o,I(r))},[()=>NS(J.usageSummary,J.usageMode)]),z(e,t)};V(g,e=>{I(n)&&e(_)}),lC(P(g,2),{}),T(a),F((e,t)=>{W(s,`title`,e),W(f,`title`,t)},[()=>wS(J.usageSummary,J.usageSummaryAll,J.usageLogHideCached),()=>TS(J.usageSummary)]),z(e,a),D()}function mC(e,t,n,r){let{stacked:i=!1,costs:a=!1,resolve:o=e=>e}=r||{},s=e=>a?`$`+Math.abs(e).toFixed(2):rs(Math.abs(e)),c=e=>a?`$`+Math.abs(e).toFixed(4):Math.abs(e).toLocaleString(),l=e=>e.map(e=>i?Math.abs(e):-Math.abs(e)),u=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderColor:`transparent`,borderWidth:0,borderRadius:4,maxBarThickness:22}),d=e=>(e||[]).some(e=>Math.abs(e)>0),f=[u(a?`Input Cost`:`Input Tokens`,l(n.inputs),o(`var(--token-input)`)),u(a?`Output Cost`:`Output Tokens`,n.outputs,o(`var(--token-output)`))];return d(n.prompts)&&f.push(u(a?`Prompt Cached Cost`:`Prompt Cached`,l(n.prompts),o(`var(--token-prompt)`))),!a&&d(n.localIns)&&f.push(u(`Locally Cached (Input)`,l(n.localIns),o(`var(--token-local)`))),!a&&d(n.localOuts)&&f.push(u(`Locally Cached (Output)`,n.localOuts,o(`var(--token-local)`))),{type:`bar`,data:{labels:t,datasets:f},options:{indexAxis:`y`,responsive:!0,maintainAspectRatio:!1,animation:{duration:0},layout:{padding:{top:8}},scales:{x:{stacked:!0,beginAtZero:!0,grid:i?{color:e.grid}:{color:t=>t.tick&&t.tick.value===0?e.text:e.grid},border:{display:!1},ticks:{color:e.text,font:Av(),callback:e=>s(e)}},y:{stacked:!0,grid:{display:!1},border:{display:!1},ticks:{color:e.text,font:Av(),autoSkip:!1}}},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:jv(e,{label:e=>e.dataset.label+`: `+c(e.parsed.x),footer:e=>{let t=0;return e.forEach(e=>{t+=Math.abs(Number(e.parsed.x))||0}),`Total: `+c(t)}})}}}}var hC=R(`
`),gC=R(`

`),_C=R(`

`,1),vC=R(`
`),yC=R(`Model Provider`,1),bC=R(`User Path`),xC=R(`Label Requests`,1),SC=R(` `,1),CC=R(` `),wC=R(` `,1),TC=R(` `),EC=R(`
Input TokensOutput TokensPrompt CachedLocal CachedTotal TokensInput CostOutput CostTotal Cost
`),DC=R(`
`),OC=R(`
`);function kC(e,t){E(t,!0);let n=e=>{var n=hC(),r=M(n);let a;var o=P(r,2);let s;var l=P(o,2);let u;T(n),F(()=>{W(n,`aria-label`,I(i).group),a=U(r,1,`chart-view-btn svelte-1kee4g8`,null,a,{active:I(c)===`chart`}),W(r,`aria-pressed`,I(c)===`chart`),W(r,`aria-label`,`Show ${I(i).noun??``} chart`),s=U(o,1,`chart-view-btn svelte-1kee4g8`,null,s,{active:I(c)===`stacked`}),W(o,`aria-pressed`,I(c)===`stacked`),W(o,`aria-label`,`Show ${I(i).noun??``} stacked chart`),u=U(l,1,`chart-view-btn svelte-1kee4g8`,null,u,{active:I(c)===`table`}),W(l,`aria-pressed`,I(c)===`table`),W(l,`aria-label`,`Show ${I(i).noun??``} table`)}),L(`click`,r,()=>J.toggleUsageChartView(t.kind,`chart`)),L(`click`,o,()=>J.toggleUsageChartView(t.kind,`stacked`)),L(`click`,l,()=>J.toggleUsageChartView(t.kind,`table`)),z(e,n)},r={model:{group:`Model usage view`,noun:`model usage`,tokensTitle:`Token Usage by Model`,costsTitle:`Cost by Model`},userPath:{group:`User path usage view`,noun:`user path usage`,tokensTitle:`Usage by User Path`,costsTitle:`Cost by User Path`},label:{group:`Label usage view`,noun:`label usage`,tokensTitle:`Usage by Label`,costsTitle:`Cost by Label`}},i=O(()=>r[t.kind]),a=O(()=>t.kind===`model`?e=>ds(e):t.kind===`userPath`?e=>e.user_path||`/`:e=>e.label);function o(e){return t.kind===`model`?(e.provider_name||e.provider||`-`)+`/`+e.model:t.kind===`userPath`?e.user_path||`/`:e.label}let s=O(()=>t.kind===`model`?J.modelUsage:t.kind===`userPath`?J.userPathUsage:J.labelUsage),c=O(()=>t.kind===`model`?J.modelUsageView:t.kind===`userPath`?J.userPathUsageView:J.labelUsageView),l=O(()=>t.kind===`model`?J.modelUsageLoading:t.kind===`userPath`?J.userPathUsageLoading:J.labelUsageLoading),u=O(()=>J.usageMode===`costs`),d=O(()=>t.kind===`userPath`?ZS(I(s)):I(s).length>0),f=O(()=>I(u)?I(i).costsTitle:I(i).tokensTitle),p=O(()=>$S(I(s),I(a),I(u))),m=O(()=>XS(I(s),I(u)));function h(){return QS(I(c))?mC(kv(),I(p).labels,I(p),{stacked:I(c)===`stacked`,costs:I(u),resolve:Mv}):null}var g=Qr(),_=N(g),v=e=>{var r=DC(),a=M(r),s=M(a),u=e=>{Rx(e,{copyId:`label-usage-help-copy`,label:`label usage help`,text:`One request can have multiple labels. Such a request counts once under each of its labels, so label rows can overlap and add up to more than the period totals.`,title:e=>{var t=gC(),n=M(t,!0);T(t),F(()=>B(n,I(f))),z(e,t)},extra:e=>{var t=Qr(),n=N(t),r=e=>{px(e,{size:14,get label(){return`Loading ${I(i).noun??``}`}})};V(n,e=>{I(l)&&e(r)}),z(e,t)},$$slots:{title:!0,extra:!0}})},d=e=>{var t=_C(),n=N(t),r=M(n,!0);T(n);var a=P(n,2),o=e=>{px(e,{size:14,get label(){return`Loading ${I(i).noun??``}`}})};V(a,e=>{I(l)&&e(o)}),F(()=>B(r,I(f))),z(e,t)};V(s,e=>{t.kind===`label`?e(u):e(d,-1)});var g=P(s,2);n(g),T(a);var _=P(a,2),v=e=>{var t=vC();let n;wv(M(t),{build:h}),T(t),F(e=>n=Hi(t,``,n,e),[()=>({height:`${eC(I(p).labels.length)??``}px`})]),z(e,t)},y=O(()=>QS(I(c))),b=e=>{var n=EC(),r=M(n),i=M(r),a=M(i),s=M(a),c=e=>{var t=yC();Ue(2),z(e,t)},l=e=>{z(e,bC())},u=e=>{var t=xC();Ue(2),z(e,t)};V(s,e=>{t.kind===`model`?e(c):t.kind===`userPath`?e(l,1):e(u,-1)}),Ue(8),T(a),T(i);var d=P(i);H(d,21,()=>I(m),e=>o(e),(e,n)=>{var r=TC(),i=M(r),a=e=>{var t=SC(),r=N(t),i=M(r,!0);T(r);var a=P(r,2),o=M(a),s=M(o,!0);T(o),T(a),F(e=>{B(i,I(n).model||`-`),B(s,e)},[()=>ls(I(n))||`-`]),z(e,t)},o=e=>{var t=CC(),r=M(t,!0);T(t),F(()=>B(r,I(n).user_path||`/`)),z(e,t)},s=e=>{var t=wC(),r=N(t),i=M(r);let a;var o=M(i,!0);T(i),T(r);var s=P(r,2),c=M(s,!0);T(s),F((e,t,r)=>{a=U(i,1,`usage-label-chip`,null,a,{active:J.usageFilterLabel===I(n).label}),Hi(i,`--label-color: ${e??``}`),W(i,`title`,t),B(o,I(n).label),B(c,r)},[()=>Fv(I(n).label),()=>J.usageLabelChipTitle(I(n).label),()=>$o(I(n).requests)]),L(`click`,i,()=>J.toggleUsageLabelFilter(I(n).label)),z(e,t)};V(i,e=>{t.kind===`model`?e(a):t.kind===`userPath`?e(o,1):e(s,-1)});var c=P(i),l=M(c,!0);T(c);var u=P(c),d=M(u,!0);T(u);var f=P(u),p=M(f,!0);T(f);var m=P(f),h=M(m,!0);T(m);var g=P(m),_=M(g,!0);T(g);var v=P(g),y=M(v,!0);T(v);var b=P(v),x=M(b,!0);T(b);var S=P(b),C=M(S,!0);T(S),T(r),F((e,t,n,r,i,a,o,s,c,u,g)=>{B(l,e),B(d,t),W(f,`title`,n),B(p,r),W(m,`title`,`${i??``} input + ${a??``} output`),B(h,o),B(_,s),B(y,c),B(x,u),B(C,g)},[()=>$o(I(n).input_tokens),()=>$o(I(n).output_tokens),()=>I(n).cached_input_cost==null?``:`~`+es(I(n).cached_input_cost)+` at current cached-input pricing`,()=>$o(I(n).cached_input_tokens||0),()=>$o(I(n).local_cached_input_tokens||0),()=>$o(I(n).local_cached_output_tokens||0),()=>$o((I(n).local_cached_input_tokens||0)+(I(n).local_cached_output_tokens||0)),()=>$o(JS(I(n))),()=>es(I(n).input_cost),()=>es(I(n).output_cost),()=>es(I(n).total_cost)]),z(e,r)}),T(d),T(r),T(n),z(e,n)};V(_,e=>{I(y)?e(v):e(b,-1)}),T(r),z(e,r)},y=e=>{var t=OC();px(M(t),{size:20,get label(){return`Loading ${I(i).noun??``}`}}),T(t),z(e,t)};V(_,e=>{I(d)?e(v):I(l)&&e(y,1)}),z(e,g),D()}Hr([`click`]);var AC=R(``);function jC(e,t){E(t,!0);let n=ya(t,`total`,3,0),r=ya(t,`offset`,3,0),i=ya(t,`limit`,3,25);var a=Qr(),o=N(a),s=e=>{var a=AC(),o=M(a),s=M(o);T(o);var c=P(o,2),l=M(c),u=P(l,2);T(c),T(a),F(e=>{B(s,`Showing ${r()+1}-${e??``} of ${n()??``}`),l.disabled=r()===0,u.disabled=r()+i()>=n()},[()=>Math.min(r()+i(),n())]),L(`click`,l,()=>t.onprev?.()),L(`click`,u,()=>t.onnext?.()),z(e,a)};V(o,e=>{n()>0&&e(s)}),z(e,a),D()}Hr([`click`]);var MC=(e,t=f)=>{var n=Qr(),r=N(n),i=e=>{var n=PC();H(n,20,()=>KS(t()),e=>e,(e,t)=>{var n=NC();let r;var i=M(n,!0);T(n),F((e,a)=>{r=U(n,1,`usage-label-chip`,null,r,{active:J.usageFilterLabel===t}),Hi(n,`--label-color: ${e??``}`),W(n,`title`,a),B(i,t)},[()=>Fv(t),()=>J.usageLabelChipTitle(t)]),L(`click`,n,()=>J.toggleUsageLabelFilter(t)),z(e,n)}),T(n),z(e,n)},a=O(()=>KS(t()).length>0),o=e=>{z(e,FC())};V(r,e=>{I(a)?e(i):e(o,-1)}),z(e,n)},NC=R(``),PC=R(`
`),FC=R(`-`),IC=R(`Labels`),LC=R(`Cost`),RC=R(``),zC=R(` `),BC=R(``),VC=R(` `),HC=R(` `),UC=R(`
TimestampProviderModelUser PathCacheProvider Cache
`),WC=R(`
`),GC=R(`
`),KC=R(`

Request Log

`);function qC(e,t){E(t,!0);let n=O(()=>J.usageMode===`costs`),r=O(()=>qS(J.labelUsage,J.usageFilterLabel,J.usageLog.entries)),i=rC(()=>J.fetchUsageLog(!0));An(()=>i.cancel);var a=KC(),o=P(M(a),2),s=M(o);nC(M(s),{placeholder:`Search by request ID, model, provider...`,label:`Search by request ID, model, provider`,get oninput(){return i},get value(){return J.usageLogSearch},set value(e){J.usageLogSearch=e}}),T(s);var c=P(s,2),l=M(c),u=M(l);na(u),Ue(2),T(l),T(c),T(o);var d=P(o,2),f=e=>{var t=UC(),i=M(t),a=M(i),o=M(a),s=P(M(o),4),c=e=>{z(e,IC())};V(s,e=>{I(r)&&e(c)});var l=P(s,3),u=M(l,!0);T(l);var d=P(l),f=M(d,!0);T(d);var p=P(d),m=M(p,!0);T(p);var h=P(p),g=e=>{z(e,LC())};V(h,e=>{I(n)||e(g)}),T(o),T(a);var _=P(a);H(_,21,()=>J.usageLog.entries,e=>e.id,(e,t)=>{var i=HC();let a;var o=M(i),s=M(o,!0);T(o);var c=P(o),l=M(c),u=M(l,!0);T(l),T(c);var d=P(c),f=M(d,!0);T(d);var p=P(d),m=M(p,!0);T(p);var h=P(p),g=e=>{var n=RC();MC(M(n),()=>I(t)),T(n),z(e,n)};V(h,e=>{I(r)&&e(g)});var _=P(h),v=M(_,!0);T(_);var y=P(_),b=M(y),x=e=>{var n=zC(),r=M(n,!0);T(n),F(e=>B(r,e),[()=>US(I(t))]),z(e,n)},S=O(()=>HS(I(t))),C=e=>{z(e,FC())};V(b,e=>{I(S)?e(x):e(C,-1)}),T(y);var w=P(y),ee=M(w,!0);T(w);var te=P(w),ne=M(te,!0);T(te);var re=P(te),ie=M(re),ae=M(ie,!0);T(ie);var oe=P(ie,2),se=e=>{{let n=O(()=>IS(I(t)));G(e,{name:`circle-dollar-sign`,class:`cost-source-icon`,get title(){return I(n)}})}},ce=O(()=>I(n)&&FS(I(t)));V(oe,e=>{I(ce)&&e(se)});var le=P(oe,2),ue=e=>{G(e,{name:`database-zap`,class:`cache-savings-icon`})},de=O(()=>I(n)&&RS(I(t)));V(le,e=>{I(de)&&e(ue)});var fe=P(le,2),pe=e=>{var n=BC();F(()=>W(n,`title`,I(t).costs_calculation_caveat)),z(e,n)};V(fe,e=>{I(n)&&I(t).costs_calculation_caveat&&e(pe)}),T(re);var me=P(re),he=e=>{var n=VC(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=e=>{{let n=O(()=>IS(I(t)));G(e,{name:`circle-dollar-sign`,class:`cost-source-icon`,get title(){return I(n)}})}},s=O(()=>FS(I(t)));V(a,e=>{I(s)&&e(o)});var c=P(a,2),l=e=>{G(e,{name:`database-zap`,class:`cache-savings-icon`})},u=O(()=>RS(I(t)));V(c,e=>{I(u)&&e(l)});var d=P(c,2),f=e=>{var n=BC();F(()=>W(n,`title`,I(t).costs_calculation_caveat)),z(e,n)};V(d,e=>{I(t).costs_calculation_caveat&&e(f)}),T(n),F((e,t)=>{W(n,`title`,e),B(i,t)},[()=>BS(I(t),GS(I(t))),()=>es(I(t).total_cost)]),z(e,n)};V(me,e=>{I(n)||e(he)}),T(i),F((e,n,r,c,l,d,p,h,g,_,b,x,S)=>{a=U(i,1,`svelte-hg4ill`,null,a,e),W(o,`title`,n),B(s,r),B(u,c),B(f,I(t).model),B(m,I(t).user_path||`-`),B(v,l),W(y,`title`,d),W(w,`title`,p),B(ee,h),W(te,`title`,g),B(ne,_),W(re,`title`,b),W(ie,`title`,x),B(ae,S)},[()=>({"usage-log-row-cached":RS(I(t))}),()=>ss(I(t).timestamp),()=>ao.formatTimestamp(I(t).timestamp),()=>ls(I(t))||`-`,()=>zS(I(t)),()=>WS(I(t)),()=>I(n)?$o(I(t).input_tokens)+` tokens`:``,()=>I(n)?es(I(t).input_cost):$o(I(t).input_tokens),()=>I(n)?$o(I(t).output_tokens)+` tokens`:``,()=>I(n)?es(I(t).output_cost):$o(I(t).output_tokens),()=>I(n)?BS(I(t),``):``,()=>I(n)?BS(I(t),$o(I(t).total_tokens)+` tokens -`+GS(I(t))):``,()=>I(n)?es(I(t).total_cost):$o(I(t).total_tokens)]),z(e,i)}),T(_),T(i),T(t),F(()=>{B(u,I(n)?`Input Cost`:`Input`),B(f,I(n)?`Output Cost`:`Output`),B(m,I(n)?`Total Cost`:`Total`)}),z(e,t)},p=e=>{var t=WC();px(M(t),{size:20,label:`Loading request log`}),T(t),z(e,t)},m=e=>{var t=GC();gx(M(t),{}),T(t),z(e,t)};V(d,e=>{J.usageLog.entries.length>0?e(f):J.usageLogLoading?e(p,1):e(m,-1)}),jC(P(d,2),{get total(){return J.usageLog.total},get offset(){return J.usageLog.offset},get limit(){return J.usageLog.limit},onprev:()=>J.usageLogPrevPage(),onnext:()=>J.usageLogNextPage()}),T(a),L(`change`,u,()=>J.fetchUsageLog(!0)),fa(u,()=>J.usageLogHideCached,e=>J.usageLogHideCached=e),z(e,a),D()}Hr([`click`,`change`]);var JC=R(`
`);function YC(e,t){E(t,!0);let n=`usage`;An(()=>{K.refreshTick,Ha.page===n&&(J.fetchUsagePage(),hS.ensureLiveLogs())}),An(()=>{Ha.page===n&&(J.usageMode=Ha.sub===`costs`?`costs`:`tokens`)});var r=JC(),i=P(M(r),2),a=M(i);Dv(a,{ariaLabel:`Usage mode`,options:[{value:`tokens`,label:`Tokens`},{value:`costs`,label:`Costs`}],get value(){return J.usageMode},onchange:e=>J.toggleUsageMode(e)}),Js(P(a,2),{onchange:()=>J.fetchUsagePage()}),T(i);var o=P(i,2);sC(o,{});var s=P(o,2);pC(s,{});var c=P(s,2),l=M(c);kC(l,{kind:`model`});var u=P(l,2);kC(u,{kind:`userPath`}),kC(P(u,2),{kind:`label`}),T(c),qC(P(c,2),{}),T(r),z(e,r),D()}var XC=R(`
`);function ZC(e,t){let n=ya(t,`label`,3,`Loading...`),r=ya(t,`class`,3,``);var i=XC(),a=P(M(i),2),o=M(a,!0);T(a),T(i),F(()=>{U(i,1,Fi([`loading-state`,r()]),`svelte-hzxv1d`),B(o,n())}),z(e,i)}var QC=R(``);function $C(e,t){let n=ya(t,`label`,3,``),r=ya(t,`class`,3,``),i=ya(t,`disabled`,3,!1);var a=QC();gi(M(a),()=>t.children??f),T(a),F(()=>{U(a,1,Fi([`table-action-btn`,r()])),W(a,`aria-label`,n()),W(a,`title`,n()),a.disabled=i()}),L(`click`,a,function(...e){t.onclick?.apply(this,e)}),z(e,a)}Hr([`click`]);async function ew(e,{label:t,errorFallback:n=`Unable to load ${t}.`,unavailableStatuses:r=[503],normalize:i=e=>Array.isArray(e)?e:[],options:a}){let o;try{o=await fo(e,{...a||{},label:t})}catch(e){return mo(e)||console.error(`Failed to fetch ${t}:`,e),{status:`error`,items:[],error:n,result:null}}return o.stale?{status:`stale`,items:[],error:``,result:o}:r.includes(o.status)?{status:`unavailable`,items:[],error:``,result:o}:o.ok?{status:`ok`,items:i(o.data),error:``,result:o}:{status:`error`,items:[],error:o.status===401?``:oo(o.data,n),result:o}}async function tw(e,t,n,{label:r,errorFallback:i=`Unable to ${r}.`,unavailableStatuses:a=[503],unavailableMessage:o=`This feature is unavailable on the gateway.`,options:s}){let c;try{c=await po(e,t,n,{...s||{},label:r})}catch(e){return mo(e)||console.error(`Failed to ${r}:`,e),{status:`error`,error:i,result:null}}return c.stale?{status:`stale`,error:``,result:c}:a.includes(c.status)?{status:`unavailable`,error:o,result:c}:c.ok?{status:`ok`,error:``,result:c}:{status:`error`,error:c.status===401?`Authentication required.`:oo(c.data,i),result:c}}function nw(){return{scope:`user_path`,subject:`/`,period:`daily`,period_seconds:86400,amount:``,source:`manual`}}function rw(e){let t={user_path:{label:`User path`,chip:`user path`,fieldLabel:`User Path`,placeholder:`/team/alpha`},label:{label:`Label`,chip:`label`,fieldLabel:`Label`,placeholder:`Mobile-App-iOS`}};return t[e]||t.user_path}function iw(){return[`user_path`,`label`].map(e=>({value:e,label:rw(e).label}))}function aw(e){return String(e&&e.scope||``).trim()||`user_path`}function ow(e){return String(e&&e.subject||``).trim()||String(e&&e.user_path||``)}function sw(e){return rw(aw(e)).chip}function cw(e){return aw(e)===`label`?`budget-label`:`budget-user-path`}function lw(e){return rw(String(e&&e.scope||``)).fieldLabel}function uw(e){return rw(String(e&&e.scope||``)).placeholder}function dw(e){e.subject=String(e&&e.scope||``)===`user_path`?`/`:``}function fw(){return[{value:`hourly`,label:`Hourly`},{value:`daily`,label:`Daily`},{value:`weekly`,label:`Weekly`},{value:`monthly`,label:`Monthly`},{value:`custom`,label:`Custom seconds`}]}function pw(e){switch(String(e||``).trim().toLowerCase()){case`hourly`:return 3600;case`daily`:return 86400;case`weekly`:return 604800;case`monthly`:return 2592e3;default:return 0}}function mw(e){switch(Number(e||0)){case 3600:return`hourly`;case 86400:return`daily`;case 604800:return`weekly`;case 2592e3:return`monthly`;default:return`custom`}}function hw(e){return aw(e)+`:`+ow(e)+`:`+String(e&&e.period_seconds||``)}function gw(e,t){if(!t||!Array.isArray(e))return null;let n=hw(t);return e.find(e=>hw(e)===n)||null}function _w(e){let t=String(e||``).trim();if(!t)return`User path is required.`;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function vw(e){if(_w(e))return``;let t=String(e||``).trim(),n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function yw(e){return`/`+String(e||``).trimStart().replace(/^\/+/,``)}function bw(e){return Array.isArray(e)?e:e&&Array.isArray(e.budgets)?e.budgets:[]}function xw(e){let t=Number(e&&e.period_seconds||0);return[ow(e),sw(e),Rw(e),mw(t),t?String(t)+`s`:``,t?String(t)+` seconds`:``].join(` `).toLowerCase()}var Sw={user_path:0,label:1};function Cw(e,t){let n=Array.isArray(e)?e.slice():[],r=String(t||`subject`);return n.sort((e,t)=>{let n=(Sw[aw(e)]||0)-(Sw[aw(t)]||0),i=ow(e).localeCompare(ow(t)),a=Number(t&&t.period_seconds||0)-Number(e&&e.period_seconds||0);return r===`period`?a||n||i:n||i||a}),n}function ww(e,t,n){let r=Array.isArray(e)?e:[],i=String(t||``).trim().toLowerCase();return Cw(i?r.filter(e=>xw(e).includes(i)):r.slice(),n)}function Tw(e){let t=e||{},n=aw(t),r=String(t.subject||``).trim();if(n===`user_path`){let e=_w(r);if(e)return{payload:null,error:e}}else if(!r)return{payload:null,error:`Label is required.`};let i=Number(t.amount);if(!Number.isFinite(i)||i<=0)return{payload:null,error:`Amount must be greater than 0.`};let a=String(t.period||``).trim(),o=pw(a);return a===`custom`&&(o=Number(t.period_seconds)),!Number.isFinite(o)||o<=0?{payload:null,error:`Period seconds must be greater than 0.`}:{payload:{scope:n,subject:n===`user_path`?vw(r):r,period_seconds:Math.trunc(o),amount:i,source:String(t.source||`manual`).trim()||`manual`},error:``}}function Ew(e){return{scope:aw(e),subject:ow(e),budget_key:{period_seconds:e.period_seconds},amount:e.amount}}function Dw(e){return{scope:aw(e),subject:ow(e),budget_key:{period_seconds:e.period_seconds}}}function Ow(e){return{scope:aw(e),subject:ow(e),period_seconds:e.period_seconds}}function kw(e){return es(e)}function Aw(e,t){let n=e||{},r=t||{};return`A budget for "`+((ow(n)||ow(r))+` `+Rw({period_seconds:n.period_seconds||r.period_seconds,period_label:r.period_label}))+`" already exists. Saving will override the current `+kw(r.amount)+` limit with `+kw(n.amount)+`.`}function jw(e){let t=Number(e);return!Number.isFinite(t)||t<0?0:t}function Mw(e,t){let n=jw(e);return Math.round((t?Math.min(n,1):n)*1e3)/10}function Nw(e){return jw(e&&e.usage_ratio)}function Pw(e){return Mw(Nw(e),!0)}function Fw(e){return Mw(e&&e.period_ratio,!0)}function Iw(e){return Mw(Nw(e),!1).toFixed(1).replace(/\.0$/,``)+`%`}function Lw(e){return Fw(e).toFixed(1).replace(/\.0$/,``)+`%`}function Rw(e){let t=Number(e&&e.period_seconds||0);switch(t){case 3600:return`Hourly`;case 86400:return`Daily`;case 604800:return`Weekly`;case 2592e3:return`Monthly`;default:{let n=String(e&&e.period_label||``).trim();return n?`Custom `+n:`Custom `+String(t||``)+`s`}}}function zw(e){switch(Number(e&&e.period_seconds||0)){case 3600:return`budget-period-label-hourly`;case 86400:return`budget-period-label-daily`;case 604800:return`budget-period-label-weekly`;case 2592e3:return`budget-period-label-monthly`;default:return`budget-period-label-custom`}}function Bw(e){return zw(e).replace(`budget-period-label-`,`budget-bar-fill-period-`)}function Vw(e){return zw(e).replace(`budget-period-label-`,`budget-bar-track-period-`)}function Hw(e){switch(Number(e&&e.period_seconds||0)){case 3600:return`clock`;case 86400:return`sun`;case 604800:return`calendar-days`;case 2592e3:return`calendar`;default:return`settings-2`}}function Uw(e){let t=Math.max(0,Math.trunc(Number(e||0)));return t+` `+(t===1?`second`:`seconds`)}function Ww(e){let t=Number(e&&e.period_seconds||0);switch(t){case 3600:return`1 hour`;case 86400:return`1 day`;case 604800:return`1 week`;case 2592e3:return`1 month`;default:return Uw(t)}}function Gw(e){return String(e&&e.source||``).trim()||`manual`}function Kw(e){let t=Gw(e).toLowerCase();return t===`manual`?`Created from the dashboard.`:t===`config`?`Loaded from configuration.`:`Budget source: `+t}function qw(e){let t=Number(e&&e.remaining);return Number.isFinite(t)?t<0?es(Math.abs(t))+` over`:es(t)+` remaining`:``}var Y=new class{#e=k(j([]));get budgets(){return I(this.#e)}set budgets(e){A(this.#e,e,!0)}#t=k(!0);get budgetsAvailable(){return I(this.#t)}set budgetsAvailable(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get filter(){return I(this.#r)}set filter(e){A(this.#r,e,!0)}#i=k(`subject`);get sortBy(){return I(this.#i)}set sortBy(e){A(this.#i,e,!0)}#a=k(``);get error(){return I(this.#a)}set error(e){A(this.#a,e,!0)}#o=k(!1);get formOpen(){return I(this.#o)}set formOpen(e){A(this.#o,e,!0)}#s=k(!1);get formSubmitting(){return I(this.#s)}set formSubmitting(e){A(this.#s,e,!0)}#c=k(``);get formError(){return I(this.#c)}set formError(e){A(this.#c,e,!0)}#l=k(!1);get editing(){return I(this.#l)}set editing(e){A(this.#l,e,!0)}#u=k(j(nw()));get form(){return I(this.#u)}set form(e){A(this.#u,e,!0)}#d=k(!1);get overrideDialogOpen(){return I(this.#d)}set overrideDialogOpen(e){A(this.#d,e,!0)}#f=k(null);get overridePendingPayload(){return I(this.#f)}set overridePendingPayload(e){A(this.#f,e,!0)}#p=k(null);get overrideExistingBudget(){return I(this.#p)}set overrideExistingBudget(e){A(this.#p,e,!0)}#m=k(``);get resettingKey(){return I(this.#m)}set resettingKey(e){A(this.#m,e,!0)}#h=k(``);get deletingKey(){return I(this.#h)}set deletingKey(e){A(this.#h,e,!0)}#g=k(!1);get resetAllLoading(){return I(this.#g)}set resetAllLoading(e){A(this.#g,e,!0)}#_=null;managementEnabled(){return _o.budgetsVisible()}filteredBudgets(){return ww(this.budgets,this.filter,this.sortBy)}async fetchBudgetsPage(){if(await _o.ensureLoaded(),!this.managementEnabled()){this.budgets=[],this.budgetsAvailable=!1,this.error=``;return}return this.#_||=this.fetchBudgets().finally(()=>{this.#_=null}),this.#_}async fetchBudgets(){this.loading=!0,this.error=``;let e=await ew(`/admin/budgets`,{label:`budgets`,errorFallback:`Unable to load budgets.`,normalize:bw});if(this.loading=!1,e.status!==`stale`){if(e.status===`unavailable`){this.budgetsAvailable=!1,this.budgets=[];return}if(!e.result){this.budgets=[],this.error=e.error;return}if(this.budgetsAvailable=!0,e.status===`error`){this.error=e.error;return}this.budgets=e.items}}openForm(e){if(this.editing=!!e,this.formError=``,e){let t=Number(e.period_seconds||0);this.form={scope:aw(e),subject:ow(e),period:mw(t),period_seconds:t,amount:String(e.amount||``),source:String(e.source||`manual`)}}else this.form=nw();this.formOpen=!0}syncPeriodSeconds(){let e=pw(String(this.form.period||``).trim());e>0&&(this.form.period_seconds=e)}setFormSubject(e){this.form.subject=this.form.scope===`label`?String(e??``):yw(e)}syncScope(){dw(this.form)}closeForm(){this.closeOverrideDialog(),this.formOpen=!1,this.formSubmitting=!1,this.formError=``,this.editing=!1,this.form=nw()}async submitForm(){if(this.formSubmitting)return;let{payload:e,error:t}=Tw(this.form);if(!e){this.formError=t;return}if(!this.editing){let t=gw(this.budgets,e);if(t){this.openOverrideDialog(t,e);return}}await this.saveBudgetPayload(e)}async saveBudgetPayload(e){if(this.formSubmitting||!e)return;this.formSubmitting=!0,this.formError=``;let t=await tw(`/admin/budgets`,`PUT`,Ew(e),{label:`save budget`,errorFallback:`Unable to save budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.formSubmitting=!1,t.status!==`stale`){if(t.status===`unavailable`){this.budgetsAvailable=!1,this.formError=t.error;return}if(t.status===`error`){this.formError=t.error;return}this.closeForm(),q.success(`Budget saved.`),this.fetchBudgets()}}openOverrideDialog(e,t){this.overrideExistingBudget=e||null,this.overridePendingPayload=t||null,this.overrideDialogOpen=!0}closeOverrideDialog(){this.overrideDialogOpen=!1,this.overridePendingPayload=null,this.overrideExistingBudget=null}async confirmOverride(){if(!this.overridePendingPayload){this.closeOverrideDialog();return}let e=this.overridePendingPayload;this.closeOverrideDialog(),await this.saveBudgetPayload(e)}async resetBudget(e){if(!e)return;let t=hw(e);if(this.resettingKey===t)return;let n=ow(e)+` `+Rw(e);if(!confirm(`Reset budget "`+n+`"?`))return;this.resettingKey=t;let r=await tw(`/admin/budgets/reset-one`,`POST`,Ow(e),{label:`reset budget`,errorFallback:`Unable to reset budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.resettingKey=``,r.status!==`stale`){if(r.status===`unavailable`){this.budgetsAvailable=!1,q.error(r.error);return}if(r.status===`error`){q.error(r.error);return}q.success(`Budget reset.`),this.fetchBudgets()}}async deleteBudget(e){if(!e)return;let t=hw(e);if(this.deletingKey===t)return;let n=ow(e)+` `+Rw(e);if(!confirm(`Delete budget "`+n+`"? This cannot be undone.`))return;this.deletingKey=t;let r=await tw(`/admin/budgets`,`DELETE`,Dw(e),{label:`delete budget`,errorFallback:`Unable to delete budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.deletingKey=``,r.status!==`stale`){if(r.status===`unavailable`){this.budgetsAvailable=!1,q.error(r.error);return}if(r.status===`error`){q.error(r.error);return}this.budgets=bw(r.result.data),q.success(`Budget deleted.`)}}openResetDialog(){jo.open({title:`Reset Budgets`,titleId:`budgetResetDialogTitle`,inputId:`budget-reset-confirmation`,requiredText:`reset`,confirmLabel:`Reset All Budgets`,icon:`rotate-ccw`,dialogClass:`budget-reset-dialog`,onConfirm:()=>this.resetAllBudgets()})}async resetAllBudgets(){if(this.resetAllLoading)return;this.resetAllLoading=!0;let e=await tw(`/admin/budgets/reset`,`POST`,{confirmation:`reset`},{label:`reset budgets`,errorFallback:`Unable to reset budgets.`,unavailableStatuses:[]});if(this.resetAllLoading=!1,e.status!==`stale`){if(e.status!==`ok`){jo.error=e.error;return}jo.close(),q.success(`Budgets reset.`),Ha.page===`budgets`&&this.fetchBudgets()}}},Jw=R(` Edit`,1),Yw=R(` `,1),Xw=R(`
Usage
Period
`),Zw=R(`
`);function Qw(e,t){E(t,!0);let n=ya(t,`budgets`,19,()=>[]);function r(e){if(!e)return``;let t=ao.formatTimestamp(e);return!t||t===`-`?``:t+` `+ao.effectiveTimeZoneLabel()}var i=Zw();H(i,21,n,e=>hw(e),(e,t)=>{var n=Xw(),i=M(n),a=M(i),o=M(a),s=M(o),c=e=>{G(e,{name:`tag`,class:`budget-scope-icon`})},l=O(()=>aw(I(t))===`label`);V(s,e=>{I(l)&&e(c)});var u=P(s);T(o);var d=P(o,2),f=M(d),p=M(f);{let e=O(()=>Hw(I(t)));G(p,{get name(){return I(e)},class:`budget-period-icon`})}var m=P(p,2),h=M(m,!0);T(m),T(f),T(d);var g=P(d,2),_=M(g),v=M(_),y=M(v,!0);T(v),T(_);var b=P(_,2),x=M(b);$C(x,{label:`Edit budget`,class:`budget-action-btn`,onclick:()=>Y.openForm(I(t)),children:(e,t)=>{var n=Jw();G(N(n),{name:`pencil`,class:`budget-action-icon`}),Ue(2),z(e,n)},$$slots:{default:!0}});var S=P(x,2);{let e=O(()=>Y.resettingKey===hw(I(t))?`Resetting budget`:`Reset budget`),n=O(()=>Y.resettingKey===hw(I(t)));$C(S,{get label(){return I(e)},class:`budget-action-btn budget-action-btn-warning`,onclick:()=>Y.resetBudget(I(t)),get disabled(){return I(n)},children:(e,n)=>{var r=Yw(),i=N(r);G(i,{name:`rotate-ccw`,class:`budget-action-icon`});var a=P(i,2),o=M(a,!0);T(a),F(e=>B(o,e),[()=>Y.resettingKey===hw(I(t))?`Resetting`:`Reset`]),z(e,r)},$$slots:{default:!0}})}var C=P(S,2);{let e=O(()=>Y.deletingKey===hw(I(t))?`Deleting budget`:`Delete budget`),n=O(()=>Y.deletingKey===hw(I(t)));$C(C,{get label(){return I(e)},class:`table-action-btn-danger budget-action-btn`,onclick:()=>Y.deleteBudget(I(t)),get disabled(){return I(n)},children:(e,n)=>{var r=Yw(),i=N(r);G(i,{name:`trash-2`,class:`budget-action-icon`});var a=P(i,2),o=M(a,!0);T(a),F(e=>B(o,e),[()=>Y.deletingKey===hw(I(t))?`Deleting`:`Delete`]),z(e,r)},$$slots:{default:!0}})}T(b),T(g),T(a);var w=P(a,2),ee=M(w),te=M(ee),ne=P(M(te),2),re=M(ne,!0);T(ne),T(te);var ie=P(te,2),ae=M(ie);let oe;var se=P(ae,2),ce=M(se),le=M(ce,!0);T(ce);var ue=P(ce,2),de=M(ue,!0);T(ue),T(se);var fe=P(se,2),pe=M(fe),me=M(pe,!0);T(pe);var he=P(pe,2),ge=M(he,!0);T(he),T(fe),T(ie),T(ee);var _e=P(ee,2),ve=M(_e),ye=P(M(ve),2),be=M(ye,!0);T(ye),T(ve);var xe=P(ve,2),Se=M(xe),Ce=P(Se,2),we=M(Ce),Te=M(we,!0);T(we);var Ee=P(we,2),De=M(Ee,!0);T(Ee);var Oe=P(Ee,2),ke=M(Oe,!0);T(Oe),T(Ce);var Ae=P(Ce,2),je=M(Ae),Me=M(je,!0);T(je);var Ne=P(je,2),Pe=M(Ne,!0);T(Ne);var Fe=P(Ne,2),Ie=M(Fe,!0);T(Fe),T(Ae),T(xe),T(_e),T(w),T(i),T(n),F((e,t,n,r,i,a,s,c,l,d,p,m,g,_,b,x,S,C,w,ee,te,ne,se,ce,ue,fe,pe,he,_e,ve)=>{U(o,1,`budget-scope-value ${e??``}`,`svelte-1jm56wo`),Hi(o,t),W(o,`title`,n),B(u,` ${r??``}`),U(f,1,`budget-period-label ${i??``}`,`svelte-1jm56wo`),B(h,a),W(v,`title`,s),B(y,c),B(re,l),W(ie,`aria-valuenow`,d),W(ie,`aria-label`,p),Hi(ie,`--budget-progress: ${m??``}%`),oe=U(ae,1,`budget-bar-fill budget-bar-fill-usage`,null,oe,g),B(le,_),B(de,b),B(me,x),B(ge,S),B(be,C),U(xe,1,`budget-bar-track ${w??``}`,`svelte-1jm56wo`),W(xe,`aria-valuenow`,ee),Hi(xe,`--budget-progress: ${te??``}%`),U(Se,1,`budget-bar-fill budget-bar-fill-period ${ne??``}`,`svelte-1jm56wo`),W(we,`title`,se),B(Te,ce),B(De,ue),W(Oe,`title`,fe),B(ke,pe),B(Me,he),B(Pe,_e),B(Ie,ve)},[()=>cw(I(t)),()=>aw(I(t))===`label`?`--label-color: `+Fv(ow(I(t))):void 0,()=>sw(I(t))+`: `+ow(I(t)),()=>ow(I(t)),()=>zw(I(t)),()=>Rw(I(t)),()=>Kw(I(t)),()=>Gw(I(t)),()=>Iw(I(t)),()=>Pw(I(t)),()=>`Budget usage: `+es(I(t).spent)+` of `+es(I(t).amount)+`, `+qw(I(t)),()=>Pw(I(t)),()=>({"budget-bar-fill-danger":Nw(I(t))>=1}),()=>es(I(t).spent)+` of `+es(I(t).amount),()=>qw(I(t)),()=>es(I(t).spent)+` of `+es(I(t).amount),()=>qw(I(t)),()=>Lw(I(t)),()=>Vw(I(t)),()=>Fw(I(t)),()=>Fw(I(t)),()=>Bw(I(t)),()=>r(I(t).period_start),()=>ao.formatTimestamp(I(t).period_start),()=>Ww(I(t)),()=>r(I(t).period_end),()=>ao.formatTimestamp(I(t).period_end),()=>ao.formatTimestamp(I(t).period_start),()=>Ww(I(t)),()=>ao.formatTimestamp(I(t).period_end)]),z(e,n)}),T(i),z(e,i),D()}var $w=R(`

`,1),eT=R(``),tT=R(``),nT=R(`
`);function rT(e,t){E(t,!0);let n=ya(t,`open`,3,!1),r=ya(t,`title`,3,``),i=ya(t,`ariaLabel`,3,``),a=ya(t,`error`,3,``),o=ya(t,`submitting`,3,!1),s=ya(t,`submitDisabled`,3,!1),c=ya(t,`submitLabel`,3,`Save`),l=ya(t,`submittingLabel`,3,`Saving...`),u=ya(t,`submitIcon`,3,`save`),d=ya(t,`cancel`,3,!0),p=ya(t,`dialogClass`,3,``),m=ya(t,`novalidate`,3,!1),h=ya(t,`canClose`,3,()=>!0);function g(){K.dialogOpen||h()()&&t.onclose?.()}Eo(e,{get open(){return n()},variant:`editor`,onclose:g,children:(e,n)=>{var h=nT(),g=M(h),_=M(g),v=M(_),y=M(v),b=e=>{var n=Qr();gi(N(n),()=>t.header),z(e,n)},x=e=>{var n=$w(),i=N(n),a=M(i,!0);T(i);var o=P(i,2),s=e=>{var n=Qr();gi(N(n),()=>t.headerHint),z(e,n)};V(o,e=>{t.headerHint&&e(s)}),F(()=>B(a,r())),z(e,n)};V(y,e=>{t.header?e(b):e(x,-1)}),T(v);var S=P(v,2);{let e=O(()=>`Close `+(i()||r()).toLowerCase());wo(S,{get label(){return I(e)},onclick:()=>t.onclose?.()})}T(_);var C=P(_,2);gi(C,()=>t.children??f);var w=P(C,2),ee=e=>{var t=eT(),n=M(t,!0);T(t),F(()=>B(n,a())),z(e,t)};V(w,e=>{a()&&e(ee)});var te=P(w,2),ne=M(te),re=e=>{var n=tT();L(`click`,n,()=>t.onclose?.()),z(e,n)};V(ne,e=>{d()&&e(re)});var ie=P(ne,2),ae=e=>{var n=Qr();gi(N(n),()=>t.extraActions),z(e,n)};V(ie,e=>{t.extraActions&&e(ae)});var oe=P(ie,2),se=M(oe);G(se,{get name(){return u()},class:`form-action-icon`});var ce=P(se,2),le=M(ce,!0);T(ce),T(oe),T(te),T(g),T(h),F(()=>{U(h,1,Fi([`model-editor`,p()])),W(h,`aria-label`,i()||r()),g.noValidate=m(),oe.disabled=o()||s(),B(le,o()?l():c())}),Vr(`submit`,g,e=>{e.preventDefault(),t.onsubmit?.()}),z(e,h)},$$slots:{default:!0}}),D()}Hr([`click`]);var iT=R(`
`);function aT(e,t){let n=ya(t,`label`,3,``);var r=iT(),i=M(r),a=M(i,!0);T(i),gi(P(i,2),()=>t.children??f),T(r),F(()=>{W(i,`for`,t.id),B(a,n())}),z(e,r)}var oT=R(``),sT=R(``),cT=R(``),lT=R(``),uT=R(``),dT=R(``),fT=R(`

Editing a budget updates its limit only. Use Reset to start a new - budget period.

`),pT=R(`
`,1),mT=R(``),hT=R(` `,1);function gT(e,t){E(t,!0);function n(e){Y.setFormSubject(e.target.value),e.target.value=Y.form.subject}var r=hT(),i=N(r);{let e=O(()=>Y.editing?`Edit Budget`:`Create Budget`);rT(i,{get open(){return Y.formOpen},get title(){return I(e)},ariaLabel:`Budget editor`,get error(){return Y.formError},get submitting(){return Y.formSubmitting},submitLabel:`Save Budget`,dialogClass:`budget-editor`,canClose:()=>!Y.overrideDialogOpen,onclose:()=>Y.closeForm(),onsubmit:()=>Y.submitForm(),children:(e,t)=>{var r=pT(),i=N(r),a=M(i);aT(a,{id:`budget-scope`,label:`Scope`,children:(e,t)=>{var n=sT();H(n,21,iw,e=>e.value,(e,t)=>{var n=oT(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n),F(()=>n.disabled=Y.editing),L(`change`,n,()=>Y.syncScope()),Gi(n,()=>Y.form.scope,e=>Y.form.scope=e),z(e,n)},$$slots:{default:!0}});var o=P(a,2);{let e=O(()=>lw(Y.form));aT(o,{id:`budget-subject`,get label(){return I(e)},children:(e,t)=>{var r=cT();na(r),F(e=>{W(r,`placeholder`,e),ra(r,Y.form.subject),r.disabled=Y.editing,W(r,`data-modal-autofocus`,!Y.editing||void 0)},[()=>uw(Y.form)]),L(`input`,r,n),z(e,r)},$$slots:{default:!0}})}var s=P(o,2);aT(s,{id:`budget-period`,label:`Period`,children:(e,t)=>{var n=lT();H(n,21,fw,e=>e.value,(e,t)=>{var n=oT(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n),F(()=>n.disabled=Y.editing),L(`change`,n,()=>Y.syncPeriodSeconds()),Gi(n,()=>Y.form.period,e=>Y.form.period=e),z(e,n)},$$slots:{default:!0}});var c=P(s,2),l=e=>{aT(e,{id:`budget-period-seconds`,label:`Period Seconds`,children:(e,t)=>{var n=uT();na(n),F(()=>n.disabled=Y.editing),da(n,()=>Y.form.period_seconds,e=>Y.form.period_seconds=e),z(e,n)},$$slots:{default:!0}})};V(c,e=>{Y.form.period===`custom`&&e(l)}),aT(P(c,2),{id:`budget-amount`,label:`Amount`,children:(e,t)=>{var n=dT();na(n),F(()=>W(n,`data-modal-autofocus`,Y.editing||void 0)),da(n,()=>Y.form.amount,e=>Y.form.amount=e),z(e,n)},$$slots:{default:!0}}),T(i);var u=P(i,2),d=e=>{z(e,fT())};V(u,e=>{Y.editing&&e(d)}),z(e,r)},$$slots:{default:!0}})}Eo(P(i,2),{get open(){return Y.overrideDialogOpen},variant:`auth`,onclose:()=>Y.closeOverrideDialog(),children:(e,t)=>{var n=mT(),r=M(n);wo(P(M(r),2),{label:`Close budget override dialog`,onclick:()=>Y.closeOverrideDialog(),class:`auth-dialog-close`,iconClass:``}),T(r);var i=P(r,2),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s),l=P(c,2),u=M(l);G(u,{name:`save`,class:`form-action-icon`});var d=P(u,2),f=M(d,!0);T(d),T(l),T(s),T(i),T(n),F(e=>{B(o,e),l.disabled=Y.formSubmitting,B(f,Y.formSubmitting?`Saving...`:`Override Budget`)},[()=>Aw(Y.overridePendingPayload,Y.overrideExistingBudget)]),Vr(`submit`,i,e=>{e.preventDefault(),Y.confirmOverride()}),L(`click`,c,()=>Y.closeOverrideDialog()),z(e,n)},$$slots:{default:!0}}),z(e,r),D()}Hr([`change`,`input`,`click`]);var _T=R(`

Budgets

`),vT=R(``),yT=R(`
Budget management is unavailable.
`),bT=R(``),xT=R(`
`),ST=R(`

No budgets configured yet.

`),CT=R(`

No budgets match your filter.

`),wT=R(`
`);function TT(e,t){E(t,!0),An(()=>{K.refreshTick,Ha.page===`budgets`&&Y.fetchBudgetsPage()});let n=O(()=>Y.filteredBudgets());var r=wT(),i=M(r),a=M(i);Rx(M(a),{copyId:`budgets-help-copy`,label:`budgets help`,title:e=>{z(e,_T())},help:e=>{Ue(),z(e,Zr(`Budgets are evaluated from tracked usage cost records for each user - path subtree. Enforcement runs only when Budget is enabled for the - active workflow.`))},$$slots:{title:!0,help:!0}}),T(a);var o=P(a,2),s=M(o),c=e=>{var t=vT();G(M(t),{name:`plus`,class:`form-action-icon`}),Ue(2),T(t),F(()=>t.disabled=Y.formSubmitting),L(`click`,t,()=>Y.openForm()),z(e,t)},l=O(()=>Y.managementEnabled()&&Y.budgetsAvailable&&!K.authError);V(s,e=>{I(l)&&e(c)}),T(o),T(i);var u=P(i,2);Os(u,{});var d=P(u,2),f=e=>{z(e,yT())},p=O(()=>(!Y.managementEnabled()||!Y.budgetsAvailable)&&!K.authError);V(d,e=>{I(p)&&e(f)});var m=P(d,2),h=e=>{var t=bT(),n=M(t,!0);T(t),F(()=>B(n,Y.error)),z(e,t)};V(m,e=>{Y.error&&!K.authError&&e(h)});var g=P(m,2),_=e=>{ZC(e,{label:`Loading budgets...`})};V(g,e=>{Y.loading&&!K.authError&&e(_)});var v=P(g,2),y=e=>{var t=xT(),n=M(t);nC(M(n),{id:`budget-filter`,placeholder:`Filter by user path, label, or period...`,label:`Filter budgets by user path or period`,get value(){return Y.filter},set value(e){Y.filter=e}}),T(n);var r=P(n,2),i=P(M(r),2),a=M(i);a.value=a.__value=`subject`;var o=P(a);o.value=o.__value=`period`,T(i),T(r),T(t),Gi(i,()=>Y.sortBy,e=>Y.sortBy=e),z(e,t)};V(v,e=>{(Y.budgets.length>0||Y.filter)&&Y.budgetsAvailable&&!K.authError&&!Y.formOpen&&e(y)});var b=P(v,2);gT(b,{});var x=P(b,2),S=e=>{Qw(e,{get budgets(){return I(n)}})};V(x,e=>{I(n).length>0&&Y.budgetsAvailable&&!K.authError&&e(S)});var C=P(x,2),w=e=>{z(e,ST())},ee=O(()=>Y.budgets.length===0&&!Y.filter&&!Y.loading&&!K.authError&&!Y.error&&Y.budgetsAvailable&&Y.managementEnabled());V(C,e=>{I(ee)&&e(w)});var te=P(C,2),ne=e=>{z(e,CT())},re=O(()=>Y.budgets.length>0&&I(n).length===0&&Y.filter&&!Y.loading&&!K.authError&&!Y.error&&Y.budgetsAvailable&&Y.managementEnabled());V(te,e=>{I(re)&&e(ne)}),T(r),z(e,r),D()}Hr([`click`]);function ET(){return{scope:`user_path`,subject:`/`,period:`minute`,period_seconds:60,max_requests:``,max_tokens:``,source:`manual`}}function DT(e){let t={user_path:{label:`User path`,chip:`user path`,fieldLabel:`User Path`,placeholder:`/team/alpha`},provider:{label:`Provider`,chip:`provider`,fieldLabel:`Provider Name`,placeholder:`openai`},model:{label:`Model`,chip:`model`,fieldLabel:`Model`,placeholder:`openai/gpt-4o`}};return t[e]||t.user_path}function OT(){return[`user_path`,`provider`,`model`].map(e=>({value:e,label:DT(e).label}))}function kT(e){return String(e&&e.scope||``).trim()||`user_path`}function AT(e){return String(e&&e.subject||``).trim()||String(e&&e.user_path||``)}function jT(e){return DT(kT(e)).chip}function MT(e){return DT(String(e&&e.scope||``)).fieldLabel}function NT(e){return DT(String(e&&e.scope||``)).placeholder}function PT(e){e.subject=String(e&&e.scope||``)===`user_path`?`/`:``}function FT(){return[{value:`minute`,label:`Per minute`},{value:`hour`,label:`Per hour`},{value:`day`,label:`Per day`},{value:`concurrent`,label:`Concurrent (in-flight)`},{value:`custom`,label:`Custom seconds`}]}function IT(e){switch(String(e||``).trim().toLowerCase()){case`minute`:return 60;case`hour`:return 3600;case`day`:return 86400;case`concurrent`:return 0;default:return-1}}function LT(e){switch(Number(e||0)){case 60:return`minute`;case 3600:return`hour`;case 86400:return`day`;case 0:return`concurrent`;default:return`custom`}}function RT(e){let t=String(e&&e.period||``).trim(),n=IT(t);n>=0&&(e.period_seconds=n),t===`concurrent`&&(e.max_tokens=``)}function zT(e){return kT(e)+`:`+AT(e)+`:`+String(e&&e.period_seconds||`0`)}function BT(e){return Number(e&&e.period_seconds||0)===0}function VT(e){return String(e&&e.period_label||``).trim()||LT(Number(e&&e.period_seconds||0))}function HT(e){return String(e&&e.source||``)===`config`?`config`:`manual`}function UT(e){return String(e&&e.source||``)===`config`}function WT(e){let t=Number(e);return Number.isFinite(t)?t.toLocaleString():`0`}function GT(e,t){let n=Number(e),r=Number(t);if(!Number.isFinite(n)||!Number.isFinite(r)||r<=0)return 0;let i=Math.round(n/r*100);return Math.min(Math.max(i,0),100)}function KT(e,t){let n=String(t||``).trim().toLowerCase(),r=Array.isArray(e)?e.slice():[],i={user_path:0,provider:1,model:2};return r.sort((e,t)=>{let n=(i[kT(e)]||0)-(i[kT(t)]||0);if(n!==0)return n;let r=AT(e).localeCompare(AT(t));return r===0?Number(e.period_seconds||0)-Number(t.period_seconds||0):r}),n?r.filter(e=>{let t=AT(e).toLowerCase(),r=jT(e).toLowerCase(),i=VT(e).toLowerCase();return t.includes(n)||r.includes(n)||i.includes(n)}):r}function qT(e){return!e||!Array.isArray(e.rate_limits)?[]:e.rate_limits}function JT(e,t,n){let r=String(t||``).trim();return r=e===`provider`||e===`model`?r.toLowerCase():`/`+r.split(`/`).map(e=>e.trim()).filter(Boolean).join(`/`),e+`:`+r+`:`+Number(n||0)}function YT(e,t){return e?JT(t.scope,t.subject,t.limit_key.period_seconds)!==JT(e.scope,e.subject,e.period_seconds):!1}function XT(e){let t=e||{},n=String(t.scope||`user_path`),r=String(t.subject||``).trim();if(n!==`user_path`&&!r)return{error:MT(t)+` is required.`};let i=String(t.period||``)===`concurrent`,a=t.period_seconds;if(a===``||a==null)return{error:`Period seconds is required.`};let o=Number(a);if(!Number.isInteger(o)||o<0||o===0&&!i)return{error:`Period seconds must be a positive integer (0 only for the concurrent period).`};let s=String(t.max_requests===void 0||t.max_requests===null?``:t.max_requests).trim(),c=String(t.max_tokens===void 0||t.max_tokens===null?``:t.max_tokens).trim();if(!s&&!c)return{error:`Set max requests, max tokens, or both.`};if(i&&c)return{error:`Token limits are not valid for the concurrent period.`};let l={scope:n,subject:r||`/`,limit_key:{period_seconds:o}};if(s){let e=Number(s);if(!Number.isInteger(e)||e<=0)return{error:`Max requests must be a positive integer.`};l.max_requests=e}if(c){let e=Number(c);if(!Number.isInteger(e)||e<=0)return{error:`Max tokens must be a positive integer.`};l.max_tokens=e}return{payload:l}}function ZT(e,t,n){if(kT(e)!==`model`)return!1;let r=String(AT(e)).toLowerCase(),i=String(n||``).trim().toLowerCase();if(!i)return!1;if(r===i)return!0;let a=String(t||``).trim().toLowerCase();return a?r===a+`/`+i||i.startsWith(a+`/`)&&r===i.slice(a.length+1):!1}function QT(e,t){return kT(e)===`provider`&&String(AT(e)).toLowerCase()===String(t||``).trim().toLowerCase()}function $T(e){let t=e||{},n=String(t.model||``),r=String(t.provider||``);return!r||n.toLowerCase().startsWith(r+`/`)?n:r+`/`+n}function eE(e,t){let n=e||{},r=Array.isArray(t)?t:[],i=[];return n.kind===`model`&&i.push({key:`model`,title:`Model limits`,scope:`model`,subject:$T(n),hint:``,items:r.filter(e=>ZT(e,n.provider,n.model))}),i.push({key:`provider`,title:`Provider limits (`+n.provider+`)`,scope:`provider`,subject:n.provider,hint:n.kind===`model`?`Shared by every model routed to this provider.`:``,items:r.filter(e=>QT(e,n.provider))}),i.push({key:`global`,title:`Global limits`,scope:`user_path`,subject:`/`,hint:`Root user-path rules throttle all traffic. Narrower user-path rules also apply, per consumer.`,items:r.filter(e=>kT(e)===`user_path`&&AT(e)===`/`)}),i}function tE(e){return BT(e)?GT(e.in_flight,e.max_requests):Math.max(GT(e.requests_used,e.max_requests),GT(e.tokens_used,e.max_tokens))}function nE(e){return`--rate-limit-pressure: `+tE(e)+`%`}function rE(e){let t=tE(e);return t>=100?`rate-limit-pressure-row rate-limit-pressure-full`:t>=75?`rate-limit-pressure-row rate-limit-pressure-high`:`rate-limit-pressure-row`}function iE(e){return(Array.isArray(e)?e:[]).some(e=>kT(e)===`user_path`&&AT(e)===`/`)}function aE(e,t,n){let r=Array.isArray(e)?e:[];return r.some(e=>ZT(e,t,n))?`table-action-btn-active`:r.some(e=>QT(e,t))||iE(r)?`rate-limit-gauge-inherited`:``}function oE(e,t){let n=Array.isArray(e)?e:[];return n.some(e=>QT(e,t))?`table-action-btn-active`:iE(n)?`rate-limit-gauge-inherited`:``}function sE(e,t){let n=`Rate limits for `+e;return t===`table-action-btn-active`?n+` (direct limits configured)`:t?n+` (inherited limits apply)`:n}function cE(e){if(BT(e))return WT(e.in_flight)+` of `+WT(e.max_requests)+` in flight`;let t=[];return e.max_requests!==null&&e.max_requests!==void 0&&t.push(WT(e.requests_used)+`/`+WT(e.max_requests)+` req`),e.max_tokens!==null&&e.max_tokens!==void 0&&t.push(WT(e.tokens_used)+`/`+WT(e.max_tokens)+` tok`),t.join(` · `)}var X=new class{#e=k(j([]));get rateLimits(){return I(this.#e)}set rateLimits(e){A(this.#e,e,!0)}#t=k(!0);get rateLimitsAvailable(){return I(this.#t)}set rateLimitsAvailable(e){A(this.#t,e,!0)}#n=k(!1);get rateLimitsLoading(){return I(this.#n)}set rateLimitsLoading(e){A(this.#n,e,!0)}rateLimitFetchPromise=null;#r=k(``);get rateLimitFilter(){return I(this.#r)}set rateLimitFilter(e){A(this.#r,e,!0)}#i=k(``);get rateLimitError(){return I(this.#i)}set rateLimitError(e){A(this.#i,e,!0)}#a=k(!1);get rateLimitFormOpen(){return I(this.#a)}set rateLimitFormOpen(e){A(this.#a,e,!0)}#o=k(!1);get rateLimitFormSubmitting(){return I(this.#o)}set rateLimitFormSubmitting(e){A(this.#o,e,!0)}#s=k(``);get rateLimitFormError(){return I(this.#s)}set rateLimitFormError(e){A(this.#s,e,!0)}#c=k(!1);get rateLimitEditing(){return I(this.#c)}set rateLimitEditing(e){A(this.#c,e,!0)}rateLimitEditingOriginal=null;rateLimitFormReturnToInspector=!1;#l=k(``);get rateLimitResettingKey(){return I(this.#l)}set rateLimitResettingKey(e){A(this.#l,e,!0)}#u=k(``);get rateLimitDeletingKey(){return I(this.#u)}set rateLimitDeletingKey(e){A(this.#u,e,!0)}#d=k(!1);get rateLimitInspectorOpen(){return I(this.#d)}set rateLimitInspectorOpen(e){A(this.#d,e,!0)}#f=k(j({kind:``,provider:``,model:``,title:``}));get rateLimitInspector(){return I(this.#f)}set rateLimitInspector(e){A(this.#f,e,!0)}#p=k(j(ET()));get rateLimitForm(){return I(this.#p)}set rateLimitForm(e){A(this.#p,e,!0)}rateLimitsEnabled(){return _o.rateLimitsVisible()}defaultRateLimitForm(){return ET()}rateLimitScopeMeta(e){return DT(e)}rateLimitScopeOptions(){return OT()}rateLimitScope(e){return kT(e)}rateLimitSubject(e){return AT(e)}rateLimitScopeLabel(e){return jT(e)}rateLimitSubjectFieldLabel(){return MT(this.rateLimitForm)}rateLimitSubjectPlaceholder(){return NT(this.rateLimitForm)}syncRateLimitScope(){PT(this.rateLimitForm)}rateLimitPeriodOptions(){return FT()}rateLimitPeriodSeconds(e){return IT(e)}rateLimitPeriodFromSeconds(e){return LT(e)}syncRateLimitPeriodSeconds(){RT(this.rateLimitForm)}rateLimitKey(e){return zT(e)}rateLimitIsConcurrent(e){return BT(e)}rateLimitPeriodLabel(e){return VT(e)}rateLimitSourceLabel(e){return HT(e)}rateLimitIsReadOnly(e){return UT(e)}formatRateLimitNumber(e){return WT(e)}rateLimitUsagePercent(e,t){return GT(e,t)}filteredRateLimits(){return KT(this.rateLimits,this.rateLimitFilter)}normalizeRateLimitListPayload(e){return qT(e)}async fetchRateLimitsPage(){if(await _o.ensureLoaded(),!this.rateLimitsEnabled()){this.rateLimits=[],this.rateLimitsAvailable=!1,this.rateLimitError=``;return}return this.rateLimitFetchPromise||=this.fetchRateLimits().finally(()=>{this.rateLimitFetchPromise=null}),this.rateLimitFetchPromise}async fetchRateLimits(){this.rateLimitsLoading=!0,this.rateLimitError=``;let e=await ew(`/admin/rate-limits`,{label:`rate limits`,errorFallback:`Unable to load rate limits.`,normalize:qT});if(this.rateLimitsLoading=!1,e.status!==`stale`){if(e.status===`unavailable`){this.rateLimitsAvailable=!1,this.rateLimits=[];return}if(!e.result){this.rateLimits=[],this.rateLimitError=e.error;return}if(this.rateLimitsAvailable=!0,e.status===`error`){this.rateLimitError=e.error;return}this.rateLimits=e.items}}openRateLimitForm(e){if(this.rateLimitEditing=!!e,this.rateLimitFormError=``,e){let t=Number(e.period_seconds||0);this.rateLimitEditingOriginal={scope:kT(e),subject:AT(e),period_seconds:t},this.rateLimitForm={scope:kT(e),subject:AT(e),period:LT(t),period_seconds:t,max_requests:e.max_requests===null||e.max_requests===void 0?``:String(e.max_requests),max_tokens:e.max_tokens===null||e.max_tokens===void 0?``:String(e.max_tokens),source:String(e.source||`manual`)}}else this.rateLimitEditingOriginal=null,this.rateLimitForm=ET();this.rateLimitFormOpen=!0}closeRateLimitForm(){this.rateLimitFormOpen=!1,this.rateLimitFormSubmitting=!1,this.rateLimitFormError=``,this.rateLimitEditing=!1,this.rateLimitEditingOriginal=null,this.rateLimitForm=ET(),this.rateLimitFormReturnToInspector&&(this.rateLimitFormReturnToInspector=!1,this.rateLimitInspectorOpen=!0)}rateLimitNormalizedIdentity(e,t,n){return JT(e,t,n)}rateLimitIdentityMoved(e){return YT(this.rateLimitEditingOriginal,e)}setRateLimitFormSubject(e){this.rateLimitForm.subject=String(e||``)}rateLimitFormPayload(){return XT(this.rateLimitForm)}async submitRateLimitForm(){if(this.rateLimitFormSubmitting)return;let{payload:e,error:t}=this.rateLimitFormPayload();if(t){this.rateLimitFormError=t;return}let n=this.rateLimitIdentityMoved(e),r=this.rateLimitEditingOriginal;this.rateLimitFormSubmitting=!0,this.rateLimitFormError=``;try{let t=await tw(`/admin/rate-limits`,`PUT`,e,{label:`save rate limit`,errorFallback:`Unable to save rate limit.`,unavailableStatuses:[]});if(t.status===`stale`)return;if(t.status!==`ok`){this.rateLimitFormError=t.error;return}if(this.rateLimits=qT(t.result.data),n&&!await this.deleteMovedRateLimitOriginal(r))return;this.closeRateLimitForm(),q.success(n?`Rate limit moved; live counters restarted.`:`Rate limit saved.`)}finally{this.rateLimitFormSubmitting=!1}}async deleteMovedRateLimitOriginal(e){let t=await tw(`/admin/rate-limits`,`DELETE`,{scope:e.scope,subject:e.subject,limit_key:{period_seconds:Number(e.period_seconds||0)}},{label:`remove the moved rate limit`,errorFallback:`The new rule was saved, but the previous one could not be removed. Delete it manually.`,unavailableStatuses:[]});return t.status===`stale`?!1:t.status===`ok`?(this.rateLimits=qT(t.result.data),!0):(this.rateLimitFormError=t.error,!1)}async deleteRateLimit(e){let t=zT(e);if(this.rateLimitDeletingKey===t)return;this.rateLimitDeletingKey=t;let n=await tw(`/admin/rate-limits`,`DELETE`,{scope:kT(e),subject:AT(e),limit_key:{period_seconds:Number(e.period_seconds||0)}},{label:`delete rate limit`,errorFallback:`Unable to delete rate limit.`,unavailableStatuses:[]});if(this.rateLimitDeletingKey=``,n.status!==`stale`){if(n.status!==`ok`){q.error(n.error);return}this.rateLimits=qT(n.result.data),q.success(`Rate limit deleted.`)}}async resetRateLimit(e){let t=zT(e);if(this.rateLimitResettingKey===t)return;this.rateLimitResettingKey=t;let n=await tw(`/admin/rate-limits/reset-one`,`POST`,{scope:kT(e),subject:AT(e),period_seconds:Number(e.period_seconds||0)},{label:`reset rate limit`,errorFallback:`Unable to reset rate limit.`,unavailableStatuses:[]});if(this.rateLimitResettingKey=``,n.status!==`stale`){if(n.status!==`ok`){q.error(n.error);return}this.rateLimits=qT(n.result.data),q.success(`Rate limit counters reset.`)}}rateLimitInspectorModelID(e){return String(e&&e.model&&e.model.id||``).trim()}openRateLimitInspectorForModel(e){let t=this.rateLimitInspectorModelID(e),n=String(e&&e.provider_name||``).trim().toLowerCase();this.rateLimitInspector={kind:`model`,provider:n,model:t,title:String(e&&e.display_name||t)},this.showRateLimitInspector()}openRateLimitInspectorForProvider(e){let t=String(e&&e.provider_name||``).trim().toLowerCase();this.rateLimitInspector={kind:`provider`,provider:t,model:``,title:String(e&&e.display_name||t)},this.showRateLimitInspector()}showRateLimitInspector(){this.rateLimitInspectorOpen=!0,this.fetchRateLimitsPage()}closeRateLimitInspector(){this.rateLimitInspectorOpen=!1}rateLimitRuleMatchesModel(e,t,n){return ZT(e,t,n)}rateLimitRuleMatchesProvider(e,t){return QT(e,t)}rateLimitInspectorQualifiedModel(){return $T(this.rateLimitInspector)}rateLimitInspectorSections(){return eE(this.rateLimitInspector,this.rateLimits)}rateLimitPressurePercent(e){return tE(e)}rateLimitPressureStyle(e){return nE(e)}rateLimitPressureClass(e){return rE(e)}rateLimitGaugeCache={rules:null,states:{}};rateLimitGaugeMemo(e,t){this.rateLimitGaugeCache.rules!==this.rateLimits&&(this.rateLimitGaugeCache={rules:this.rateLimits,states:{}});let n=this.rateLimitGaugeCache.states;return e in n||(n[e]=t()),n[e]}rateLimitGaugeClassForModel(e){let t=this.rateLimitInspectorModelID(e),n=String(e&&e.provider_name||``).trim().toLowerCase(),r=this.rateLimits;return this.rateLimitGaugeMemo(`model:`+n+`/`+t,()=>aE(r,n,t))}rateLimitGaugeClassForProvider(e){let t=String(e&&e.provider_name||``).trim().toLowerCase(),n=this.rateLimits;return this.rateLimitGaugeMemo(`provider:`+t,()=>oE(n,t))}hasGlobalRateLimits(){let e=this.rateLimits;return this.rateLimitGaugeMemo(`global`,()=>iE(e))}rateLimitGaugeTitle(e,t){return sE(e,t)}rateLimitInspectorSummary(e){return cE(e)}openRateLimitFormFromInspector(e,t,n){this.rateLimitInspectorOpen=!1,this.rateLimitFormReturnToInspector=!0,this.openRateLimitForm(n||void 0),n||(this.rateLimitForm.scope=e,this.rateLimitForm.subject=t)}},lE=R(``),uE=R(``),dE=R(``),fE=R(``),pE=R(``),mE=R(``),hE=R(``),gE=R(`

Scope, subject, and period identify the rule: changing any of them - moves the rule to a new key and restarts its live counters.

`),_E=R(`

A user path rule limits the whole subtree; provider and model rules cap - all traffic routed there and make load balancing skip the target while - it is saturated. One shared counter per rule. Leave a field empty to - skip that limit. Token limits require usage tracking.

`,1);function vE(e,t){E(t,!0);{let t=O(()=>X.rateLimitEditing?`Edit Rate Limit`:`Create Rate Limit`);rT(e,{get open(){return X.rateLimitFormOpen},get title(){return I(t)},ariaLabel:`Rate limit editor`,get error(){return X.rateLimitFormError},get submitting(){return X.rateLimitFormSubmitting},submitLabel:`Save Rate Limit`,dialogClass:`budget-editor`,novalidate:!0,onclose:()=>X.closeRateLimitForm(),onsubmit:()=>X.submitRateLimitForm(),children:(e,t)=>{var n=_E(),r=N(n),i=M(r);aT(i,{id:`rate-limit-scope`,label:`Scope`,children:(e,t)=>{var n=uE();H(n,21,()=>X.rateLimitScopeOptions(),e=>e.value,(e,t)=>{var n=lE(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n),L(`change`,n,()=>X.syncRateLimitScope()),Gi(n,()=>X.rateLimitForm.scope,e=>X.rateLimitForm.scope=e),z(e,n)},$$slots:{default:!0}});var a=P(i,2);{let e=O(()=>X.rateLimitSubjectFieldLabel());aT(a,{id:`rate-limit-subject`,get label(){return I(e)},children:(e,t)=>{var n=dE();na(n),F(e=>{W(n,`placeholder`,e),W(n,`data-modal-autofocus`,!X.rateLimitEditing||void 0),ra(n,X.rateLimitForm.subject)},[()=>X.rateLimitSubjectPlaceholder()]),L(`input`,n,e=>X.setRateLimitFormSubject(e.currentTarget.value)),z(e,n)},$$slots:{default:!0}})}var o=P(a,2);aT(o,{id:`rate-limit-period`,label:`Period`,children:(e,t)=>{var n=fE();H(n,21,()=>X.rateLimitPeriodOptions(),e=>e.value,(e,t)=>{var n=lE(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n),L(`change`,n,()=>X.syncRateLimitPeriodSeconds()),Gi(n,()=>X.rateLimitForm.period,e=>X.rateLimitForm.period=e),z(e,n)},$$slots:{default:!0}});var s=P(o,2),c=e=>{aT(e,{id:`rate-limit-period-seconds`,label:`Period Seconds`,children:(e,t)=>{var n=pE();na(n),da(n,()=>X.rateLimitForm.period_seconds,e=>X.rateLimitForm.period_seconds=e),z(e,n)},$$slots:{default:!0}})};V(s,e=>{X.rateLimitForm.period===`custom`&&e(c)});var l=P(s,2);{let e=O(()=>X.rateLimitForm.period===`concurrent`?`Max In-Flight Requests`:`Max Requests`);aT(l,{id:`rate-limit-max-requests`,get label(){return I(e)},children:(e,t)=>{var n=mE();na(n),F(()=>W(n,`data-modal-autofocus`,X.rateLimitEditing?!0:void 0)),da(n,()=>X.rateLimitForm.max_requests,e=>X.rateLimitForm.max_requests=e),z(e,n)},$$slots:{default:!0}})}var u=P(l,2),d=e=>{aT(e,{id:`rate-limit-max-tokens`,label:`Max Tokens`,children:(e,t)=>{var n=hE();na(n),da(n,()=>X.rateLimitForm.max_tokens,e=>X.rateLimitForm.max_tokens=e),z(e,n)},$$slots:{default:!0}})};V(u,e=>{X.rateLimitForm.period!==`concurrent`&&e(d)}),T(r);var f=P(r,4),p=e=>{z(e,gE())};V(f,e=>{X.rateLimitEditing&&e(p)}),z(e,n)},$$slots:{default:!0}})}D()}Hr([`change`,`input`]);var yE=R(` `),bE=R(` Edit`,1),xE=R(` `,1),SE=R(`
In-flight
`),CE=R(`
Requests
`),wE=R(`
Tokens
`),TE=R(`
`),EE=R(`
`);function DE(e,t){E(t,!0);var n=EE();H(n,21,()=>t.rules,e=>X.rateLimitKey(e),(e,t)=>{var n=TE(),r=M(n),i=M(r),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s),l=e=>{var n=yE(),r=M(n);{let e=O(()=>X.rateLimitScope(I(t))===`provider`?`server`:`box`);G(r,{get name(){return I(e)},class:`budget-period-icon`})}var i=P(r,2),a=M(i,!0);T(i),T(n),F((e,t)=>{W(n,`title`,e),B(a,t)},[()=>`Rule scope: `+X.rateLimitScopeLabel(I(t)),()=>X.rateLimitScopeLabel(I(t))]),z(e,n)},u=O(()=>X.rateLimitScope(I(t))!==`user_path`);V(c,e=>{I(u)&&e(l)});var d=P(c,2),f=M(d);{let e=O(()=>X.rateLimitIsConcurrent(I(t))?`activity`:`timer`);G(f,{get name(){return I(e)},class:`budget-period-icon`})}var p=P(f,2),m=M(p,!0);T(p),T(d),T(s);var h=P(s,2),g=M(h),_=M(g),v=M(_,!0);T(_),T(g);var y=P(g,2),b=M(y),x=e=>{$C(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>X.openRateLimitForm(I(t)),children:(e,t)=>{var n=bE();G(N(n),{name:`pencil`,class:`budget-action-icon`}),Ue(2),z(e,n)},$$slots:{default:!0}})},S=O(()=>!X.rateLimitIsReadOnly(I(t)));V(b,e=>{I(S)&&e(x)});var C=P(b,2);{let e=O(()=>X.rateLimitResettingKey===X.rateLimitKey(I(t))?`Resetting counters`:`Reset counters`),n=O(()=>X.rateLimitResettingKey===X.rateLimitKey(I(t)));$C(C,{get label(){return I(e)},class:`budget-action-btn budget-action-btn-warning`,onclick:()=>X.resetRateLimit(I(t)),get disabled(){return I(n)},children:(e,n)=>{var r=xE(),i=N(r);G(i,{name:`rotate-ccw`,class:`budget-action-icon`});var a=P(i,2),o=M(a,!0);T(a),F(e=>B(o,e),[()=>X.rateLimitResettingKey===X.rateLimitKey(I(t))?`Resetting`:`Reset`]),z(e,r)},$$slots:{default:!0}})}var w=P(C,2),ee=e=>{{let n=O(()=>X.rateLimitDeletingKey===X.rateLimitKey(I(t))?`Deleting rate limit`:`Delete rate limit`),r=O(()=>X.rateLimitDeletingKey===X.rateLimitKey(I(t)));$C(e,{get label(){return I(n)},class:`table-action-btn-danger budget-action-btn`,onclick:()=>X.deleteRateLimit(I(t)),get disabled(){return I(r)},children:(e,n)=>{var r=xE(),i=N(r);G(i,{name:`trash-2`,class:`budget-action-icon`});var a=P(i,2),o=M(a,!0);T(a),F(e=>B(o,e),[()=>X.rateLimitDeletingKey===X.rateLimitKey(I(t))?`Deleting`:`Delete`]),z(e,r)},$$slots:{default:!0}})}},te=O(()=>!X.rateLimitIsReadOnly(I(t)));V(w,e=>{I(te)&&e(ee)}),T(y),T(h),T(i);var ne=P(i,2),re=M(ne),ie=e=>{var n=SE(),r=M(n),i=P(M(r),2),a=M(i,!0);T(i),T(r);var o=P(r,2),s=M(o);let c;var l=P(s,2),u=M(l),d=M(u,!0);T(u),T(l),T(o),T(n),F((e,t,n,r,i,l)=>{B(a,e),W(o,`aria-valuenow`,t),W(o,`aria-label`,n),Hi(o,r),c=U(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),B(d,l)},[()=>X.rateLimitUsagePercent(I(t).in_flight,I(t).max_requests)+`%`,()=>X.rateLimitUsagePercent(I(t).in_flight,I(t).max_requests),()=>`In-flight requests: `+X.formatRateLimitNumber(I(t).in_flight)+` of `+X.formatRateLimitNumber(I(t).max_requests),()=>`--budget-progress: `+X.rateLimitUsagePercent(I(t).in_flight,I(t).max_requests)+`%`,()=>({"budget-bar-fill-danger":X.rateLimitUsagePercent(I(t).in_flight,I(t).max_requests)>=100}),()=>X.formatRateLimitNumber(I(t).in_flight)+` of `+X.formatRateLimitNumber(I(t).max_requests)+` in flight`]),z(e,n)},ae=O(()=>X.rateLimitIsConcurrent(I(t)));V(re,e=>{I(ae)&&e(ie)});var oe=P(re,2),se=e=>{var n=CE(),r=M(n),i=P(M(r),2),a=M(i,!0);T(i),T(r);var o=P(r,2),s=M(o);let c;var l=P(s,2),u=M(l),d=M(u,!0);T(u);var f=P(u,2),p=M(f,!0);T(f),T(l),T(o),T(n),F((e,t,n,r,i,l,u)=>{B(a,e),W(o,`aria-valuenow`,t),W(o,`aria-label`,n),Hi(o,r),c=U(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),B(d,l),B(p,u)},[()=>X.rateLimitUsagePercent(I(t).requests_used,I(t).max_requests)+`%`,()=>X.rateLimitUsagePercent(I(t).requests_used,I(t).max_requests),()=>`Requests used: `+X.formatRateLimitNumber(I(t).requests_used)+` of `+X.formatRateLimitNumber(I(t).max_requests),()=>`--budget-progress: `+X.rateLimitUsagePercent(I(t).requests_used,I(t).max_requests)+`%`,()=>({"budget-bar-fill-danger":X.rateLimitUsagePercent(I(t).requests_used,I(t).max_requests)>=100}),()=>X.formatRateLimitNumber(I(t).requests_used)+` of `+X.formatRateLimitNumber(I(t).max_requests)+` requests`,()=>X.formatRateLimitNumber(I(t).requests_remaining)+` left`]),z(e,n)},ce=O(()=>!X.rateLimitIsConcurrent(I(t))&&I(t).max_requests);V(oe,e=>{I(ce)&&e(se)});var le=P(oe,2),ue=e=>{var n=wE(),r=M(n),i=P(M(r),2),a=M(i,!0);T(i),T(r);var o=P(r,2),s=M(o);let c;var l=P(s,2),u=M(l),d=M(u,!0);T(u);var f=P(u,2),p=M(f,!0);T(f),T(l),T(o),T(n),F((e,t,n,r,i,l,u)=>{B(a,e),W(o,`aria-valuenow`,t),W(o,`aria-label`,n),Hi(o,r),c=U(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),B(d,l),B(p,u)},[()=>X.rateLimitUsagePercent(I(t).tokens_used,I(t).max_tokens)+`%`,()=>X.rateLimitUsagePercent(I(t).tokens_used,I(t).max_tokens),()=>`Tokens used: `+X.formatRateLimitNumber(I(t).tokens_used)+` of `+X.formatRateLimitNumber(I(t).max_tokens),()=>`--budget-progress: `+X.rateLimitUsagePercent(I(t).tokens_used,I(t).max_tokens)+`%`,()=>({"budget-bar-fill-danger":X.rateLimitUsagePercent(I(t).tokens_used,I(t).max_tokens)>=100}),()=>X.formatRateLimitNumber(I(t).tokens_used)+` of `+X.formatRateLimitNumber(I(t).max_tokens)+` tokens`,()=>X.formatRateLimitNumber(I(t).tokens_remaining)+` left`]),z(e,n)},de=O(()=>!X.rateLimitIsConcurrent(I(t))&&I(t).max_tokens);V(le,e=>{I(de)&&e(ue)}),T(ne),T(r),T(n),F((e,t,n,r,i)=>{W(a,`title`,e),B(o,t),B(m,n),W(_,`title`,r),B(v,i)},[()=>X.rateLimitScopeLabel(I(t))+`: `+X.rateLimitSubject(I(t)),()=>X.rateLimitSubject(I(t)),()=>X.rateLimitPeriodLabel(I(t)),()=>X.rateLimitIsReadOnly(I(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>X.rateLimitSourceLabel(I(t))]),z(e,n)}),T(n),z(e,n),D()}var OE=R(`

Rate Limits

`),kE=R(``),AE=R(`
Rate limit management is unavailable.
`),jE=R(``),ME=R(`
`),NE=R(`

No rate limits configured yet.

`),PE=R(`

No rate limits match your filter.

`),FE=R(`
`);function IE(e,t){E(t,!0),An(()=>{K.refreshTick,Ha.page===`rate-limits`&&X.fetchRateLimitsPage()});let n=O(()=>X.filteredRateLimits());var r=FE(),i=M(r),a=M(i);Rx(M(a),{copyId:`rate-limits-help-copy`,label:`rate limits help`,text:`Rate limits cap requests, tokens, and in-flight concurrency for a user path subtree, a provider, or a model. Consumer (user path) breaches return 429 with Retry-After and x-ratelimit-* headers; saturated providers and models are skipped by load balancing and failover while capacity exists elsewhere. Counters are per gateway instance and reset on restart; token limits need usage tracking.`,title:e=>{z(e,OE())},$$slots:{title:!0}}),T(a);var o=P(a,2),s=M(o),c=e=>{var t=kE();G(M(t),{name:`plus`,class:`form-action-icon`}),Ue(2),T(t),F(()=>t.disabled=X.rateLimitFormSubmitting),L(`click`,t,()=>X.openRateLimitForm()),z(e,t)},l=O(()=>X.rateLimitsEnabled()&&X.rateLimitsAvailable&&!K.authError);V(s,e=>{I(l)&&e(c)}),T(o),T(i);var u=P(i,2);Os(u,{});var d=P(u,2),f=e=>{z(e,AE())},p=O(()=>(!X.rateLimitsEnabled()||!X.rateLimitsAvailable)&&!K.authError);V(d,e=>{I(p)&&e(f)});var m=P(d,2),h=e=>{var t=jE(),n=M(t,!0);T(t),F(()=>B(n,X.rateLimitError)),z(e,t)};V(m,e=>{X.rateLimitError&&!K.authError&&e(h)});var g=P(m,2),_=e=>{ZC(e,{label:`Loading rate limits...`})};V(g,e=>{X.rateLimitsLoading&&!K.authError&&e(_)});var v=P(g,2),y=e=>{var t=ME(),n=M(t);nC(M(n),{id:`rate-limit-filter`,placeholder:`Filter by subject, scope, or period...`,label:`Filter rate limits by subject, scope, or period`,get value(){return X.rateLimitFilter},set value(e){X.rateLimitFilter=e}}),T(n),T(t),z(e,t)};V(v,e=>{(X.rateLimits.length>0||X.rateLimitFilter)&&X.rateLimitsAvailable&&!K.authError&&!X.rateLimitFormOpen&&e(y)});var b=P(v,2);vE(b,{});var x=P(b,2),S=e=>{DE(e,{get rules(){return I(n)}})};V(x,e=>{I(n).length>0&&X.rateLimitsAvailable&&!K.authError&&e(S)});var C=P(x,2),w=e=>{z(e,NE())},ee=O(()=>X.rateLimits.length===0&&!X.rateLimitFilter&&!X.rateLimitsLoading&&!K.authError&&!X.rateLimitError&&X.rateLimitsAvailable&&X.rateLimitsEnabled());V(C,e=>{I(ee)&&e(w)});var te=P(C,2),ne=e=>{z(e,PE())},re=O(()=>X.rateLimits.length>0&&I(n).length===0&&X.rateLimitFilter&&!X.rateLimitsLoading&&!K.authError&&!X.rateLimitError&&X.rateLimitsAvailable&&X.rateLimitsEnabled());V(te,e=>{I(re)&&e(ne)}),T(r),z(e,r),D()}Hr([`click`]);function LE(e){return String(e||``).trim().toLowerCase()}function RE(e){if(!e)return``;let t=String(e.selector||``).trim();if(t)return t;if(!e.model||!e.model.id)return``;let n=String(e.model.id||``).trim(),r=String(e.provider_name||``).trim();if(r)return r+`/`+n;let i=String(e.provider_type||``).trim();return!i||n.includes(`/`)?n:i+`/`+n}function zE(e,t,n,r){let i=new Set,a=String(e||``).trim().toLowerCase(),o=String(t||``).trim().toLowerCase(),s=String(n||``).trim().toLowerCase(),c=String(r||``).trim().toLowerCase();if(c&&i.add(c),!a)return i;i.add(a),s&&i.add(s+`/`+a),o&&!a.includes(`/`)&&i.add(o+`/`+a);let l=a.split(`/`);return l.length===2&&l[1]&&i.add(l[1]),i}function BE(e){return zE(e&&e.model?e.model.id:``,e?e.provider_type:``,e?e.provider_name:``,e?e.selector:``)}function VE(e){let t=new Set,n=String(e.resolved_model||``).trim().toLowerCase(),r=String(e.target_model||``).trim().toLowerCase(),i=String(e.target_provider||``).trim().toLowerCase();if(n){t.add(n);let e=n.split(`/`);e.length===2&&e[1]&&t.add(e[1])}if(r){t.add(r);let e=r.split(`/`);e.length===2&&e[1]&&t.add(e[1])}return r&&i&&t.add(i+`/`+r),t}function HE(e){if(!e)return``;let t=String(e.provider||``).trim(),n=String(e.model||``).trim();return!t||!n||n===t||n.startsWith(t+`/`)?n:t+`/`+n}function UE(e){if(e===``||e==null)return null;let t=Number(e);return!Number.isFinite(t)||t<=0?null:t}function WE(e,t){let n={model:e},r=UE(t);return r!==null&&(n.weight=r),n}function GE(e){let t=Array.isArray(e)?e:[],n=[];for(let e of t){let t=String(e&&e.model||``).trim();t&&n.push(WE(t,e&&e.weight))}return n}function KE(e){switch(String(e||``).toLowerCase()){case`cost`:return`lowest cost`;case`round_robin`:case``:return`round robin`;default:return e}}var qE={round_robin:`Round-robin (rotate across targets; honors weights)`,cost:`Lowest cost (cheapest target per request)`,adaptive:`Adaptive (target chosen by the registered routing extension)`};function JE(e,t){let n=Array.isArray(e)?[...e]:[],r=String(t||``).trim().toLowerCase();return r&&!n.includes(r)&&n.push(r),n.map(e=>({value:e,label:qE[e]||e}))}function YE(e){let t=Array.isArray(e.targets)?e.targets:[],n=t.length>0?t[0]:{},r=t.map(e=>{let t={provider:e.provider||``,model:e.model||``};return e.weight&&(t.weight=e.weight),t});return{name:e.source,target_provider:n.provider||``,target_model:n.model||``,targets:r,strategy:e.strategy||``,session_affinity:e.session_affinity!==!1,description:e.description||``,enabled:e.enabled!==!1,managed:!!e.managed,valid:!!e.valid,resolved_model:e.resolved_model||``,provider_type:e.provider_type||``,user_paths:Array.isArray(e.user_paths)?e.user_paths:[]}}function XE(e){let t=Array.isArray(e)?e:[],n=[],r=[];for(let e of t)!e||typeof e!=`object`||(e.kind===`redirect`?n.push(YE(e)):e.kind===`policy`&&r.push({selector:e.source,provider_name:e.provider_name||``,model:e.model||``,user_paths:Array.isArray(e.user_paths)?e.user_paths:[],description:e.description||``,enabled:e.enabled!==!1,managed:!!e.managed,scope_kind:e.scope_kind||``}));return{aliases:n,policies:r}}function ZE(e){if(!e)return`—`;let t=Array.isArray(e.targets)?e.targets:[];return t.length>1?t.length+` targets · `+KE(e.strategy):e.resolved_model?e.resolved_model:e.target_provider?e.target_provider+`/`+e.target_model:e.target_model||`—`}function QE(e){return e?e.enabled===!1?`is-disabled`:e.valid?`is-valid`:`is-invalid`:`is-invalid`}function $E(e){return e?e.enabled===!1?`Disabled`:e.valid?`Active`:`Invalid`:`Invalid`}function eD(e){return Array.isArray(e)&&e.length>0&&e.indexOf(`/`)===-1}function tD(e,t){return!t||!e?``:e.effective_enabled===!1?`is-disabled`:eD(e.user_paths)?`is-restricted`:`is-enabled`}function nD(e){if(!e)return``;let t=[];e.effective_enabled===!1&&t.push(e.default_enabled===!1?`Disabled by default`:`Disabled`);let n=Array.isArray(e.user_paths)?e.user_paths:[];return n.length>0&&t.push(`Allowed for `+n.join(`, `)),t.join(` · `)}function rD({models:e,aliases:t,virtualModelsAvailable:n,activeCategory:r}){let i=Array.isArray(e)?e:[],a=Array.isArray(t)?t:[],o=new Map;if(n)for(let e of a){let t=LE(e&&e.name);!t||e.enabled===!1||!e.valid||o.set(t,e)}let s=new Map,c=i.map(e=>{let t=RE(e),n=null;for(let t of BE(e))s.has(t)||s.set(t,e),!n&&o.has(t)&&(n=o.get(t));let r=e&&e.access?e.access:null;return{key:`model:`+t,display_name:t,secondary_name:``,provider_name:e.provider_name||``,provider_type:e.provider_type||``,model:e.model,selector:e.selector||``,is_alias:!1,alias:null,access:r,masking_alias:n,has_virtual_model:!!(n||r&&r.override),alias_state_class:``,alias_state_text:``}});if(!n)return c;for(let e of a){let t=s.get(LE(e&&e.name));if(e&&e.enabled!==!1&&e.valid&&t)continue;let n=null;for(let t of VE(e))if(n=s.get(t)||null,n)break;!n&&r&&r!==`all`||c.push({key:`alias:`+e.name,display_name:e.name,secondary_name:ZE(e),provider_name:n&&n.provider_name||``,provider_type:n?n.provider_type||e.provider_type||``:e.provider_type||``,model:n?n.model:{id:e.name,object:`model`},selector:``,is_alias:!0,alias:e,access:null,masking_alias:null,source_model_exists:!!t,has_virtual_model:!0,alias_state_class:QE(e),alias_state_text:$E(e)})}return c.sort((e,t)=>e.is_alias===t.is_alias?String(e.display_name||``).localeCompare(String(t.display_name||``)):e.is_alias?-1:1)}function iD(e,t){if(!t)return e;let n=String(t).toLowerCase();return e.filter(e=>[e.display_name,e.secondary_name,e.provider_name,e.provider_type,e.model&&e.model.owned_by,e.alias&&e.alias.description,e.alias&&e.alias_state_text,e.model&&e.model.metadata&&e.model.metadata.modes?e.model.metadata.modes.join(`,`):``,e.model&&e.model.metadata&&e.model.metadata.categories?e.model.metadata.categories.join(`,`):``].some(e=>String(e||``).toLowerCase().includes(n)))}function aD(e,t){return String(e||``).trim()||String(t||``).trim()||`Unassigned`}function oD(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return!r||r===n?``:r}function sD(e){let t=String(e||``).trim();return t?t+`/`:``}function cD(e){let t=Array.isArray(e)?e:[],n=t.filter(e=>e&&!e.is_alias).length,r=t.filter(e=>e&&e.is_alias).length,i=[];return n>0&&i.push(n+(n===1?` model`:` models`)),r>0&&i.push(r+(r===1?` alias`:` aliases`)),i.join(` · `)}function lD(e,t,n){let r=String(t||``).trim(),i=String(n||``).trim();for(let t of Array.isArray(e)?e:[]){let e=String(t&&t.provider_name||``).trim(),n=String(t&&t.provider_type||``).trim();if(!(r&&e!==r)&&!(!r&&i&&n!==i)&&t&&t.access)return t.access.default_enabled!==!1}return!0}function uD(e){for(let t of Array.isArray(e)?e:[])if(t&&t.access)return t.access.default_enabled!==!1;return!0}function dD(e,t){let n=String(t||``).trim();if(!n)return null;for(let t of Array.isArray(e)?e:[])if(String(t&&t.selector||``).trim()===n)return t;return null}function fD(e,t,n,r){let i=sD(t),a=r&&r.get(`/`)||null,o=i&&r&&r.get(i)||null,s=lD(e,t,n),c=o||a,l=c&&Array.isArray(c.user_paths)?Array.from(new Set(c.user_paths)).sort():[];return{selector:i,default_enabled:s,effective_enabled:c?c.enabled!==!1:s,user_paths:l,override:o}}function pD(e,t,n){if(!Array.isArray(e)||e.length===0)return[];let r=new Map;for(let e of Array.isArray(n)?n:[]){let t=String(e&&e.selector||``).trim();t&&r.set(t,e)}let i=[],a=new Map;for(let t of e){if(t&&t.is_alias){i.push(t);continue}let e=String(t&&t.provider_name||``).trim(),n=String(t&&t.provider_type||``).trim(),r=`provider-group:`+(e||n||`unassigned`);a.has(r)||a.set(r,{key:r,provider_name:e,provider_type:n,display_name:aD(e,n),type_label:oD(e,n),rows:[]});let o=a.get(r);!o.provider_name&&e&&(o.provider_name=e),!o.provider_type&&n&&(o.provider_type=n),o.display_name=aD(o.provider_name,o.provider_type),o.type_label=oD(o.provider_name,o.provider_type),o.rows.push(t)}let o=Array.from(a.values()).map(e=>{let n=fD(t,e.provider_name,e.provider_type,r);return{...e,access:n,access_summary:nD(n),item_count_label:cD(e.rows)}}).sort((e,t)=>String(e.display_name||``).localeCompare(String(t.display_name||``)));return i.length>0&&o.unshift({key:`virtual-model-group`,is_virtual_models:!0,provider_name:``,provider_type:``,display_name:`Virtual models`,type_label:``,rows:i,access:{selector:``},access_summary:``,item_count_label:cD(i)}),o}function mD(e,t){let n=dD(t,`/`),r=uD(e),i=n&&Array.isArray(n.user_paths)?n.user_paths:[];return{key:`scope-global`,is_alias:!1,display_name:`all providers and models`,access:{selector:`/`,default_enabled:r,effective_enabled:n?n.enabled!==!1:r,user_paths:i,override:n}}}function hD(e){return e?String(e.access&&e.access.selector||``).trim()||String(e.override_selector||``).trim()||RE(e):``}function gD(e){if(!e)return[];let t=[];return e.is_alias?t.push(`alias-row`,QE(e.alias)):e.has_virtual_model&&t.push(`alias-row`,`is-valid`),!e.is_alias&&e.masking_alias&&t.push(`masked-model-row`),!e.is_alias&&e.access&&e.access.effective_enabled===!1&&t.push(`model-access-disabled-row`),t}function _D(e){return!!(e&&e.is_alias&&e.alias&&e.alias.name&&!e.alias.managed)}function vD(e){return!!(e&&!e.is_alias&&e.masking_alias&&e.masking_alias.name&&!e.masking_alias.managed)}function yD(e){return e&&e.is_alias&&e.alias&&e.alias.name?`alias-row-`+String(e.alias.name).replace(/[^a-zA-Z0-9_-]+/g,`-`):``}function bD(e){return e?e.is_alias?!!(e.alias&&e.alias.managed):!!(e.access&&e.access.override&&e.access.override.managed||e.masking_alias&&e.masking_alias.managed):!1}function xD(e){return!!(e&&e.override)}function SD(e){return e?`table-action-btn-active`:``}function CD(e,t){let n=`Edit `+String(e||`model access`);return t?n+` (virtual model exists)`:n}function wD(){return{source:``,target_model:``,target_weight:1,targets:[],strategy:`round_robin`,session_affinity:!0,user_paths:``,description:``,enabled:!0}}function TD(e){return String(e&&e.target_model||``).trim()!==``}function ED(e){return String(e&&e.target_model||``).trim()?!0:GE(e&&e.targets).length>0}function DD(e){return!!e&&Array.isArray(e.targets)&&e.targets.length>0}function OD(e){return DD(e)&&String(e&&e.strategy||``).toLowerCase()!==`cost`}function kD(e){let t=Array.isArray(e.targets)?e.targets:[];if(t.length>0){let n=t.shift();e.target_model=n.model||``,e.target_weight=n.weight||1;return}e.target_model=``,e.target_weight=1}function AD(e){let t=Array.isArray(e&&e.targets)?e.targets:[];return t.length>0?{primaryModel:HE(t[0]),primaryWeight:t[0].weight||1,extraTargets:t.slice(1).map(e=>({model:HE(e),weight:e.weight||1}))}:{primaryModel:e&&e.target_provider?e.target_provider+`/`+e.target_model:e&&e.target_model||``,primaryWeight:1,extraTargets:[]}}function jD(e){return String(e||``).split(/\r?\n|,/).map(e=>String(e||``).trim()).filter(Boolean)}function MD(e,t,n){let r=String(e&&e.source||``).trim(),i=String(e&&e.target_model||``).trim(),a=GE(e&&e.targets),o=ED(e),s=String(t||``).trim(),c=n===`edit`&&!!s&&r!==s,l={source:r,user_paths:jD(e&&e.user_paths),description:String(e&&e.description||``).trim(),enabled:!!(e&&e.enabled)};if(c&&(l.old_source=s),o){let t=[];if(i&&t.push(WE(i,e.target_weight)),t.push(...a),t.length>1){let n=e.strategy||`round_robin`;l.targets=n===`cost`?t.map(e=>({model:e.model})):t,l.strategy=n,e&&e.session_affinity===!1&&(l.session_affinity=!1)}else l.target_model=t[0].model}return{payload:l,source:r,isRedirect:o,isRename:c}}function ND(e){let t={source:e.name,description:String(e.description||``).trim(),user_paths:Array.isArray(e.user_paths)?e.user_paths:[],enabled:e.enabled===!1},n=Array.isArray(e.targets)?e.targets:[];return n.length>1?(t.strategy=e.strategy||`round_robin`,e.session_affinity===!1&&(t.session_affinity=!1),t.targets=t.strategy===`cost`?n.map(e=>({model:HE(e)})):n.map(e=>WE(HE(e),e.weight))):n.length===1?t.target_model=HE(n[0]):t.target_model=e.target_provider?e.target_provider+`/`+e.target_model:e.target_model,t}function PD(e,t,n){let r=n||{},i=r.effective_enabled===!1,a=t&&Array.isArray(t.user_paths)?t.user_paths:[],o=`PUT`,s;return i===!1?s={source:e,enabled:!1,user_paths:a}:t&&a.length===0&&r.default_enabled!==!1?(o=`DELETE`,s={source:e}):s={source:e,enabled:!0,user_paths:a},{method:o,payload:s,desired:i}}function FD(e,t,n){let r=Math.max(1,Number(t||75)),i=Math.min(n,e+r);return{limit:i,rendering:irD({models:Es.models,aliases:this.aliases,virtualModelsAvailable:this.virtualModelsAvailable,activeCategory:Es.activeCategory}));get displayModels(){return I(this.#T)}set displayModels(e){A(this.#T,e)}#E=O(()=>pD(this.displayModels,Es.models,this.modelOverrideViews));get displayModelGroups(){return I(this.#E)}set displayModelGroups(e){A(this.#E,e)}#D=O(()=>iD(this.displayModels,Es.filter));get filteredDisplayModels(){return I(this.#D)}set filteredDisplayModels(e){A(this.#D,e)}#O=O(()=>{let e=this.filteredDisplayModels,t=Math.max(0,Math.min(Number(this.modelRenderLimit||0),e.length));return!Es.filter&&t>=this.displayModels.length?this.displayModelGroups:pD(e.slice(0,t),Es.models,this.modelOverrideViews)});get filteredDisplayModelGroups(){return I(this.#O)}set filteredDisplayModelGroups(e){A(this.#O,e)}#k=O(()=>mD(Es.models,this.modelOverrideViews));get globalScopeRow(){return I(this.#k)}set globalScopeRow(e){A(this.#k,e)}modelsBusy(){return!!(Es.loading||this.modelsRendering)}modelLoadingText(){if(Es.loading)return this.displayModels.length>0?`Refreshing models...`:`Loading models...`;let e=this.filteredDisplayModels.length;return`Rendering models... `+Math.min(Number(this.modelRenderLimit||0),e)+` / `+e}restartModelRendering(e){let t=++this.#a,n=ID(this.modelRenderBatchSize,e);this.modelRenderLimit=n.limit,this.modelsRendering=n.rendering,n.rendering&&this.#A(t)}stopModelRendering(){this.#a++,this.modelsRendering=!1}#A(e){let t=()=>{if(e!==this.#a)return;let t=FD(this.modelRenderLimit,this.modelRenderBatchSize,this.filteredDisplayModels.length);this.modelRenderLimit=t.limit,this.modelsRendering=t.rendering,t.rendering&&this.#A(e)};typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>setTimeout(t,0)):setTimeout(t,0)}async fetchVirtualModels(){this.aliasLoading=!0,this.aliasError=``;try{let e=await fo(`/admin/virtual-models`,{label:`virtual models`});if(e.status===503){this.virtualModelsAvailable=!1,this.aliases=[],this.modelOverrideViews=[];return}if(e.stale)return;if(this.virtualModelsAvailable=!0,!e.ok){this.aliases=[],this.modelOverrideViews=[];return}let{aliases:t,policies:n}=XE(e.data);this.aliases=t,this.modelOverrideViews=n}catch(e){console.error(`Failed to fetch virtual models:`,e),this.aliases=[],this.modelOverrideViews=[],this.aliasError=`Unable to load virtual models.`}finally{this.aliasLoading=!1}}qualifiedModelName(e){return RE(e)}findModelOverrideView(e){return dD(this.modelOverrideViews,e)}hasGlobalModelOverride(){return!!this.findModelOverrideView(`/`)}findExistingAliasByName(e){let t=LE(e);if(!t)return null;for(let e of this.aliases)if(LE(e&&e.name)===t)return e;return null}findConcreteModelByName(e){let t=LE(e);if(!t)return null;for(let e of Es.models)if(BE(e).has(t))return e;return null}rowToggleEnabled(e){return e?e.is_alias?e.alias&&e.alias.enabled!==!1:!!(e.access&&e.access.effective_enabled!==!1):!1}rowToggleLabel(e){return this.rowTogglingKey&&this.rowTogglingKey===e.key?`Updating...`:this.rowToggleRestricted(e)?`Restricted`:this.rowToggleEnabled(e)?`Enabled`:`Disabled`}rowToggleRestricted(e){return!!e&&!e.is_alias&&tD(e.access,this.virtualModelsAvailable)===`is-restricted`}rowToggleAriaLabel(e){if(!e)return``;let t=this.rowToggleEnabled(e)?`Disable `:`Enable `,n;return n=e.is_alias?`alias `+String(e.alias&&e.alias.name||``):String(e.display_name||e.access&&e.access.selector||`model`),t+n.trim()}async toggleRowEnabled(e){if(this.virtualModelsAvailable&&!(!e||this.rowTogglingKey===e.key)){if(bD(e)){q.success(`This virtual model is managed by configuration and is read-only.`);return}if(e.is_alias){await this.toggleAliasRow(e);return}await this.toggleModelRow(e)}}async toggleAliasRow(e){let t=e.alias;if(!t||!t.name)return;this.rowTogglingKey=e.key;let n=ND(t);try{let e=await po(`/admin/virtual-models`,`PUT`,n,{label:`alias state`});if(e.status===503){this.virtualModelsAvailable=!1,q.error(`Virtual models feature is unavailable.`);return}if(e.stale)return;if(!e.ok){q.error(e.status===401?`Authentication required.`:so(e,`Failed to update alias state.`));return}q.success(n.enabled?`Alias enabled.`:`Alias disabled.`),this.fetchVirtualModels()}catch(e){console.error(`Failed to toggle alias state:`,e),q.error(`Failed to update alias state.`)}finally{this.rowTogglingKey=``}}async toggleModelRow(e){let t=hD(e);if(!t)return;let{method:n,payload:r,desired:i}=PD(t,this.findModelOverrideView(t),e.access||{});this.rowTogglingKey=e.key;try{let e=await po(`/admin/virtual-models`,n,r,{label:`model access`});if(e.status===503){this.virtualModelsAvailable=!1,q.error(`Virtual models feature is unavailable.`);return}if(!(n===`DELETE`&&e.status===404)){if(e.stale)return;if(!e.ok){q.error(e.status===401?`Authentication required.`:so(e,`Failed to update model access.`));return}}q.success(i?`Model enabled.`:`Model disabled.`),Promise.all([Es.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to toggle model access:`,e),q.error(`Failed to update model access.`)}finally{this.rowTogglingKey=``}}async removeAliasRow(e){if(!(e&&e.is_alias&&e.alias&&e.alias.name&&!e.alias.managed)||this.rowDeletingKey)return;let t=String(e.alias.name||``).trim();t&&await this.mutateVirtualModelRow({rowKey:e.key,confirmMessage:`Remove the virtual model alias "`+t+`"?`,method:`DELETE`,payload:{source:t},operation:`virtual model`,failureMessage:`Failed to remove virtual model.`,notice:`Virtual model removed.`,ignoreNotFound:!0})}async removeRedirectRow(e){let t=e&&e.masking_alias;if(!(e&&!e.is_alias&&t&&t.name&&!t.managed)||this.rowDeletingKey)return;let n=String(t.name||``).trim();n&&await this.mutateVirtualModelRow({rowKey:e.key,confirmMessage:`Remove the redirect for "`+n+`"? Other virtual model settings will be preserved.`,method:`PUT`,payload:{source:n,user_paths:Array.isArray(t.user_paths)?t.user_paths:[],description:String(t.description||``).trim(),enabled:t.enabled!==!1},operation:`virtual model redirect`,failureMessage:`Failed to remove redirect.`,notice:`Redirect removed. Other virtual model settings were preserved.`})}async mutateVirtualModelRow(e){if(!this.rowDeletingKey&&window.confirm(e.confirmMessage)){this.rowDeletingKey=e.rowKey;try{let t=await po(`/admin/virtual-models`,e.method,e.payload,{label:e.operation});if(t.status===503){this.virtualModelsAvailable=!1,q.error(`Virtual models feature is unavailable.`);return}if(!(e.ignoreNotFound&&t.status===404)){if(t.stale)return;if(!t.ok){q.error(t.status===401?`Authentication required.`:so(t,e.failureMessage));return}}this.virtualModelsAvailable=!0,q.success(e.notice),Promise.all([Es.fetchModels(),this.fetchVirtualModels()])}catch(t){console.error(e.failureMessage,t),q.error(e.failureMessage)}finally{this.rowDeletingKey=``}}}addVmTarget(){Array.isArray(this.vmForm.targets)||(this.vmForm.targets=[]),this.vmForm.targets.push({model:``,weight:1})}removeVmTarget(e){Array.isArray(this.vmForm.targets)&&this.vmForm.targets.splice(e,1)}removePrimaryTarget(){kD(this.vmForm)}vmFormHasPrimaryTarget(){return TD(this.vmForm)}vmFormShowStrategy(){return DD(this.vmForm)}vmStrategyOptions(){return JE(_o.virtualModelStrategies(),this.vmForm.strategy)}vmFormShowWeights(){return OD(this.vmForm)}vmFormToggleRestricted(){return!!(this.vmForm&&this.vmForm.enabled)&&eD(jD(this.vmForm.user_paths))}vmFormToggleLabel(){return!this.vmForm||!this.vmForm.enabled?`Disabled`:this.vmFormToggleRestricted()?`Restricted`:`Enabled`}resetVirtualModelForm(){this.vmFormError=``,this.vmFormHelpOpen=!1,this.vmFormUserPathsHelpOpen=!1,this.vmSubmitting=!1,this.vmDeleting=!1,this.vmFormHasExisting=!1,this.vmFormDefaultEnabled=!0,this.vmFormEffectiveEnabled=!0,this.vmFormDisplayName=``,this.vmFormSourceLocked=!1,this.vmFormOriginalSource=``,this.vmFormManaged=!1,this.vmForm=wD()}closeVirtualModelForm(){this.vmFormOpen=!1,this.resetVirtualModelForm()}openVirtualModelCreate(e){this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`create`,this.vmFormSourceLocked=!1,this.vmFormDisplayName=`New virtual model`,e&&e.model&&e.model.id&&(this.vmForm.target_model=RE(e))}openVirtualModelEditAlias(e){if(!e)return;this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!1,this.vmFormHasExisting=!0,this.vmFormManaged=!!e.managed,this.vmFormOriginalSource=e.name||``,this.vmFormDisplayName=e.name||``,this.vmFormDefaultEnabled=uD(Es.models),this.vmFormEffectiveEnabled=e.enabled!==!1;let{primaryModel:t,primaryWeight:n,extraTargets:r}=AD(e);this.vmForm={source:e.name||``,target_model:t,target_weight:n,targets:r,strategy:e.strategy||`round_robin`,session_affinity:e.session_affinity!==!1,user_paths:(Array.isArray(e.user_paths)?e.user_paths:[]).join(` -`),description:e.description||``,enabled:e.enabled!==!1}}openVirtualModelEditModel(e){if(!e||e.is_alias)return;let t=e.access||{},n=t.override||null,r=n&&Array.isArray(n.user_paths)?n.user_paths:Array.isArray(t.user_paths)?t.user_paths:[],i=hD(e);this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!0,this.vmFormHasExisting=!!n,this.vmFormOriginalSource=i;let a=n?n.enabled!==!1:t.effective_enabled!==!1;this.vmFormDefaultEnabled=t.default_enabled!==!1,this.vmFormEffectiveEnabled=a,this.vmFormManaged=!!(n&&n.managed),this.vmFormDisplayName=e.access_display_name||e.display_name||i||``,this.vmForm={source:i,target_model:``,target_weight:``,targets:[],strategy:`round_robin`,user_paths:r.join(` -`),description:n&&n.description?n.description:``,enabled:a}}openGlobalModelOverrideEdit(){let e=this.findModelOverrideView(`/`),t=e&&Array.isArray(e.user_paths)?e.user_paths:[],n=uD(Es.models);this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!0,this.vmFormHasExisting=!!e,this.vmFormOriginalSource=`/`,this.vmFormDefaultEnabled=n,this.vmFormEffectiveEnabled=e?e.enabled!==!1:n,this.vmFormManaged=!!(e&&e.managed),this.vmFormDisplayName=`All providers and models`,this.vmForm={source:`/`,target_model:``,target_weight:``,targets:[],strategy:`round_robin`,user_paths:t.join(` -`),description:e&&e.description?e.description:``,enabled:e?e.enabled!==!1:n}}openProviderOverrideEdit(e){!e||!e.access||!e.access.selector||this.openVirtualModelEditModel({display_name:e.display_name,access_display_name:`All models in `+e.display_name,provider_name:e.provider_name,provider_type:e.provider_type,access:e.access,override_selector:e.access.selector,is_alias:!1})}async submitVirtualModelForm(){if(this.vmFormManaged){this.vmFormError=`This virtual model is managed by configuration and cannot be edited here.`;return}let{payload:e,source:t,isRedirect:n,isRename:r}=MD(this.vmForm,this.vmFormOriginalSource,this.vmFormMode);if(!t){this.vmFormError=`Source is required.`;return}if(this.vmFormError=``,this.vmFormMode!==`edit`){let e=this.findExistingAliasByName(t),r=e?null:this.findModelOverrideView(t);if(e||r){let n=e?`A virtual model named "`+e.name+`" already exists. Saving will update that virtual model. Continue?`:`An access policy for "`+t+`" already exists. Saving will update that virtual model. Continue?`;if(!window.confirm(n)){this.vmFormError=`Choose a different source or edit the existing virtual model.`;return}}else if(n){let e=this.findConcreteModelByName(t);if(e){let t=RE(e)||String(e.model&&e.model.id||``).trim();if(!window.confirm(`A model named "`+t+`" already exists. Creating this alias will mask that model in the list. Continue?`)){this.vmFormError=`Choose a different source to avoid masking an existing model.`;return}}}}else if(r){let e=(this.aliases||[]).find(e=>e&&e.name===t)||null,r=e?null:this.findModelOverrideView(t);if(e||r){this.vmFormError=`A virtual model for "`+t+`" already exists. Choose a different source.`;return}if(n){let e=this.findConcreteModelByName(t);if(e){let t=RE(e)||String(e.model&&e.model.id||``).trim();if(!window.confirm(`A model named "`+t+`" already exists. Renaming to that name will mask the model in the list. Continue?`)){this.vmFormError=`Choose a different source to avoid masking an existing model.`;return}}}}this.vmSubmitting=!0;try{let t=await po(`/admin/virtual-models`,`PUT`,e,{label:`virtual model`});if(t.status===503){this.virtualModelsAvailable=!1,this.vmFormError=`Virtual models feature is unavailable.`;return}if(t.stale)return;if(!t.ok){this.vmFormError=t.status===401?`Authentication required.`:so(t,`Failed to save virtual model.`);return}let r=!n&&t.status===204;this.virtualModelsAvailable=!0,this.closeVirtualModelForm(),q.success(n?`Alias saved.`:r?`Model access reset to inherited/default.`:`Model access saved.`),Promise.all([Es.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to save virtual model:`,e),this.vmFormError=`Failed to save virtual model.`}finally{this.vmSubmitting=!1}}async deleteVirtualModel(){if(this.vmFormManaged){this.vmFormError=`This virtual model is managed by configuration and cannot be removed here.`;return}let e=String(this.vmForm.source||this.vmFormOriginalSource||``).trim();if(!(!e||!this.vmFormHasExisting)&&window.confirm(`Remove the virtual model for "`+e+`"? This reverts to inherited/default behavior.`)){this.vmDeleting=!0,this.vmFormError=``;try{let t=await po(`/admin/virtual-models`,`DELETE`,{source:e},{label:`virtual model`});if(t.status===503){this.virtualModelsAvailable=!1,this.vmFormError=`Virtual models feature is unavailable.`;return}if(t.status!==404){if(t.stale)return;if(!t.ok){this.vmFormError=t.status===401?`Authentication required.`:so(t,`Failed to remove virtual model.`);return}}this.virtualModelsAvailable=!0,this.closeVirtualModelForm(),q.success(`Virtual model removed.`),Promise.all([Es.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to delete virtual model:`,e),this.vmFormError=`Failed to remove virtual model.`}finally{this.vmDeleting=!1}}}},RD=[{value:`input_per_mtok`,label:`Input $/MTok`,group:`Tokens`},{value:`output_per_mtok`,label:`Output $/MTok`,group:`Tokens`},{value:`cached_input_per_mtok`,label:`Cached input $/MTok`,group:`Tokens`},{value:`cache_write_per_mtok`,label:`Cache write $/MTok`,group:`Tokens`},{value:`reasoning_output_per_mtok`,label:`Reasoning output $/MTok`,group:`Tokens`},{value:`batch_input_per_mtok`,label:`Batch input $/MTok`,group:`Batch`},{value:`batch_output_per_mtok`,label:`Batch output $/MTok`,group:`Batch`},{value:`audio_input_per_mtok`,label:`Audio input $/MTok`,group:`Audio`},{value:`audio_output_per_mtok`,label:`Audio output $/MTok`,group:`Audio`},{value:`per_image`,label:`$/Image`,group:`Image`},{value:`input_per_image`,label:`Input $/Image`,group:`Image`},{value:`per_second_input`,label:`Input $/Second`,group:`Audio/Video`},{value:`per_second_output`,label:`Output $/Second`,group:`Video`},{value:`per_character_input`,label:`$/Character`,group:`Audio`},{value:`per_page`,label:`$/Page`,group:`Utility`},{value:`per_request`,label:`$/Request`,group:`Utility`}];function zD(e){let t=RD.find(t=>t.value===e);return t?t.label:String(e||``).replace(/_/g,` `)}function BD(e){return e&&typeof e==`object`?JSON.parse(JSON.stringify(e)):{}}function VD(e,t){let n=BD(e),r=t&&t.pricing?t.pricing:t;if(!r||typeof r!=`object`)return n;for(let e of RD)r[e.value]!==null&&r[e.value]!==void 0&&(n[e.value]=Number(r[e.value]));return Array.isArray(r.tiers)&&r.tiers.length>0&&(n.tiers=BD(r.tiers)),n}function HD(e){switch(String(e||``).trim()){case`config_yaml`:return`config.yaml`;case`model_registry`:return`Model registry`;default:return e?String(e):`Unknown`}}function UD(e){let t=e&&e.pricing?e.pricing:{},n=e&&e.pricing_sources&&typeof e.pricing_sources==`object`?e.pricing_sources:{},r={};for(let e of RD)t[e.value]!==null&&t[e.value]!==void 0&&(r[e.value]=HD(n[e.value]||`model_registry`));return r}function WD(e){let t=String(e&&e.selector||``).trim();return t?`Dashboard/API override (`+t+`)`:`Dashboard/API override`}function GD(e){let t=String(e||``).trim();return t?t+`/`:``}function KD(e){return String(e&&e.model&&e.model.id||``).trim()}function qD(e){let t=String(e&&e.provider_name||``).trim(),n=KD(e);return t&&n?t+`/`+n:n}function JD(e){return KD(e)}function YD(e){let t=new Map;for(let n of Array.isArray(e)?e:[]){let e=String(n&&n.selector||``).trim();e&&t.set(e,n)}return t}function XD(e,t){let n=String(t||``).trim();return n&&YD(e).get(n)||null}function ZD(e,t,n){let r=YD(e),i=qD(t),a=JD(t),o=GD(t&&t.provider_name),s=String(n||``).trim();for(let e of[i,a,o,`/`]){if(!e||e===s)continue;let t=r.get(e);if(t)return t}return null}function QD(e,t,n){let r=e&&e.model&&e.model.metadata?e.model.metadata:null,i=BD(r&&r.pricing),a=UD(r),o=ZD(t,e,n),s=o&&o.pricing?o.pricing:null;if(s){let e=WD(o);for(let t of RD)s[t.value]!==null&&s[t.value]!==void 0&&(i[t.value]=Number(s[t.value]),a[t.value]=e);Array.isArray(s.tiers)&&s.tiers.length>0&&(i.tiers=BD(s.tiers),a.tiers=e)}return{pricing:i,sources:a}}function $D(e,t){let n=e&&e.pricing?e.pricing:{},r=[];for(let e of RD)n[e.value]!==null&&n[e.value]!==void 0&&r.push({id:t(),field:e.value,value:String(n[e.value])});return r}function eO(e,t){let n=new Set;for(let r of Array.isArray(e)?e:[]){if(t&&r.id===t)continue;let e=String(r.field||``).trim();e&&n.add(e)}return n}function tO(e,t){let n=eO(e,t&&t.id);return RD.filter(e=>e.value===(t&&t.field)||!n.has(e.value))}function nO(e,t){let n={},r=new Set;for(let t of Array.isArray(e)?e:[]){let e=String(t.field||``).trim();if(!e)return{error:`Choose a price type for every row.`};if(r.has(e))return{error:`Each price type can only be used once.`};r.add(e);let i=String(t.value||``).trim();if(i===``)return{error:`Enter a value for `+zD(e)+`.`};let a=Number(i);if(!Number.isFinite(a)||a<0)return{error:`Pricing values must be numbers greater than or equal to 0.`};n[e]=a}let i=Array.isArray(t)?t:[];return i.length>0&&(n.tiers=BD(i)),Object.keys(n).length===0?{error:`Add at least one pricing field before saving.`}:{pricing:n}}function rO(e,t,n){let r=e||{},i=t||{},a=n||{},o=VD(r,a);return RD.map(e=>{let t=a[e.value]!==null&&a[e.value]!==void 0,n=r[e.value]!==null&&r[e.value]!==void 0;return{field:e.value,label:e.label,value:o[e.value],source:t?`Form/API value`:n?i[e.value]||`Model registry`:`Unset`}}).filter(e=>e.source!==`Unset`||e.value!==void 0)}var iO=new class{#e=k(!0);get modelPricingOverridesAvailable(){return I(this.#e)}set modelPricingOverridesAvailable(e){A(this.#e,e,!0)}#t=k(j([]));get modelPricingOverrideViews(){return I(this.#t)}set modelPricingOverrideViews(e){A(this.#t,e,!0)}#n=k(``);get modelPricingOverrideError(){return I(this.#n)}set modelPricingOverrideError(e){A(this.#n,e,!0)}#r=k(!1);get modelPricingOverrideFormOpen(){return I(this.#r)}set modelPricingOverrideFormOpen(e){A(this.#r,e,!0)}#i=k(!1);get modelPricingOverrideSubmitting(){return I(this.#i)}set modelPricingOverrideSubmitting(e){A(this.#i,e,!0)}#a=k(!1);get modelPricingOverrideFormHasExistingOverride(){return I(this.#a)}set modelPricingOverrideFormHasExistingOverride(e){A(this.#a,e,!0)}#o=k(``);get modelPricingOverrideFormDisplayName(){return I(this.#o)}set modelPricingOverrideFormDisplayName(e){A(this.#o,e,!0)}#s=k(``);get modelPricingOverrideFormScope(){return I(this.#s)}set modelPricingOverrideFormScope(e){A(this.#s,e,!0)}#c=k(j([]));get modelPricingOverrideFormScopeOptions(){return I(this.#c)}set modelPricingOverrideFormScopeOptions(e){A(this.#c,e,!0)}#l=k(null);get modelPricingOverrideFormRow(){return I(this.#l)}set modelPricingOverrideFormRow(e){A(this.#l,e,!0)}#u=k(null);get modelPricingOverrideFormBasePricing(){return I(this.#u)}set modelPricingOverrideFormBasePricing(e){A(this.#u,e,!0)}#d=k(null);get modelPricingOverrideFormBasePricingSources(){return I(this.#d)}set modelPricingOverrideFormBasePricingSources(e){A(this.#d,e,!0)}#f=k(j([]));get modelPricingOverrideFormPreservedTiers(){return I(this.#f)}set modelPricingOverrideFormPreservedTiers(e){A(this.#f,e,!0)}#p=k(j([]));get modelPricingOverrideRows(){return I(this.#p)}set modelPricingOverrideRows(e){A(this.#p,e,!0)}#m=k(j({selector:``}));get modelPricingOverrideForm(){return I(this.#m)}set modelPricingOverrideForm(e){A(this.#m,e,!0)}_modelPricingOverrideRowID=0;pricingFieldOptions(){return RD}pricingFieldLabel(e){return zD(e)}async fetchModelPricingOverrides(){this.modelPricingOverrideError=``;try{let e=await fo(`/admin/model-pricing-overrides`,{label:`model pricing overrides`});if(e.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideViews=[];return}if(e.stale)return;if(this.modelPricingOverridesAvailable=!0,!e.ok){this.modelPricingOverrideViews=[];return}this.modelPricingOverrideViews=Array.isArray(e.data)?e.data:[]}catch(e){console.error(`Failed to fetch model pricing overrides:`,e),this.modelPricingOverrideViews=[],this.modelPricingOverrideError=`Unable to load model pricing overrides.`}}findModelPricingOverrideView(e){return XD(this.modelPricingOverrideViews,e)}hasGlobalPricingOverride(){return!!this.findModelPricingOverrideView(`/`)}hasProviderPricingOverride(e){return!!this.findModelPricingOverrideView(GD(e&&e.provider_name))}hasModelPricingOverride(e){return!!this.findModelPricingOverrideView(qD(e))}modelPricingButtonClass(e){return e?`table-action-btn-active`:``}modelPricingButtonLabel(e,t){let n=`Edit `+String(e||`model pricing`);return t?n+` (override exists)`:n}modelRowPricing(e){return QD(e,this.modelPricingOverrideViews).pricing}openGlobalPricingOverrideEdit(){this.openModelPricingOverrideForm({displayName:`All providers and models`,selector:`/`,scope:`global`,scopeOptions:[{value:`global`,label:`All providers and models`,selector:`/`}],row:null})}openProviderPricingOverrideEdit(e){let t=GD(e&&e.provider_name);t&&this.openModelPricingOverrideForm({displayName:`All models in `+(e.display_name||e.provider_name||t),selector:t,scope:`provider`,scopeOptions:[{value:`provider`,label:`Provider`,selector:t}],row:null})}openModelPricingOverrideEdit(e){if(!e||e.is_alias)return;let t=qD(e),n=JD(e),r=[{value:`exact`,label:`This provider and model`,selector:t}];n&&n!==t&&r.push({value:`model`,label:`This model across providers`,selector:n}),this.openModelPricingOverrideForm({displayName:e.display_name||t,selector:t,scope:`exact`,scopeOptions:r,row:e})}openModelPricingOverrideForm(e){let t=e||{};this.modelPricingOverrideFormOpen=!0,this.modelPricingOverrideError=``,this.modelPricingOverrideFormDisplayName=t.displayName||t.selector||`Pricing`,this.modelPricingOverrideFormScope=t.scope||``,this.modelPricingOverrideFormScopeOptions=Array.isArray(t.scopeOptions)?t.scopeOptions:[],this.modelPricingOverrideFormRow=t.row||null,this.modelPricingOverrideForm={selector:t.selector||``},this.loadModelPricingOverrideFormSelector(t.selector||``)}loadModelPricingOverrideFormSelector(e){e=String(e||``).trim();let t=this.findModelPricingOverrideView(e);this.modelPricingOverrideFormHasExistingOverride=!!t,this.modelPricingOverrideRows=$D(t,()=>this.nextModelPricingOverrideRowID()),this.modelPricingOverrideFormPreservedTiers=t&&t.pricing&&Array.isArray(t.pricing.tiers)?BD(t.pricing.tiers):[],this.modelPricingOverrideRows.length===0&&this.modelPricingOverrideFormPreservedTiers.length===0&&this.addModelPricingOverrideRow();let n=this.modelPricingOverrideFormRow,r=n?QD(n,this.modelPricingOverrideViews,e):{pricing:{},sources:{}};this.modelPricingOverrideFormBasePricing=r.pricing,this.modelPricingOverrideFormBasePricingSources=r.sources}setModelPricingOverrideScope(e){this.modelPricingOverrideFormScope=e;let t=this.modelPricingOverrideFormScopeOptions.find(t=>t.value===e);t&&(this.modelPricingOverrideForm.selector=t.selector,this.loadModelPricingOverrideFormSelector(t.selector))}nextModelPricingOverrideRowID(){return this._modelPricingOverrideRowID=(this._modelPricingOverrideRowID||0)+1,`pricing-row-`+this._modelPricingOverrideRowID}availablePricingFieldOptions(e){return tO(this.modelPricingOverrideRows,e)}addModelPricingOverrideRow(){let e=eO(this.modelPricingOverrideRows),t=RD.find(t=>!e.has(t.value))||RD[0];t&&this.modelPricingOverrideRows.push({id:this.nextModelPricingOverrideRowID(),field:t.value,value:``})}removeModelPricingOverrideRow(e){this.modelPricingOverrideRows=this.modelPricingOverrideRows.filter(t=>t.id!==e.id),this.modelPricingOverrideRows.length===0&&this.modelPricingOverrideFormPreservedTiers.length===0&&this.addModelPricingOverrideRow()}modelPricingOverridePayload(){return nO(this.modelPricingOverrideRows,this.modelPricingOverrideFormPreservedTiers)}modelPricingOverrideDraftPricing(){let e=this.modelPricingOverridePayload();return e&&e.pricing?e.pricing:{}}modelPricingEffectivePreviewRows(){return rO(this.modelPricingOverrideFormBasePricing,this.modelPricingOverrideFormBasePricingSources,this.modelPricingOverrideDraftPricing())}closeModelPricingOverrideForm(){this.modelPricingOverrideFormOpen=!1,this.modelPricingOverrideSubmitting=!1,this.modelPricingOverrideError=``,this.modelPricingOverrideFormHasExistingOverride=!1,this.modelPricingOverrideFormDisplayName=``,this.modelPricingOverrideFormScope=``,this.modelPricingOverrideFormScopeOptions=[],this.modelPricingOverrideFormRow=null,this.modelPricingOverrideFormBasePricing=null,this.modelPricingOverrideFormBasePricingSources=null,this.modelPricingOverrideFormPreservedTiers=[],this.modelPricingOverrideRows=[],this.modelPricingOverrideForm={selector:``}}async submitModelPricingOverrideForm(){let e=String(this.modelPricingOverrideForm.selector||``).trim();if(!e){this.modelPricingOverrideError=`Model pricing selector is required.`;return}let t=this.modelPricingOverridePayload();if(t.error){this.modelPricingOverrideError=t.error;return}let n={selector:e,...t};this.modelPricingOverrideSubmitting=!0,this.modelPricingOverrideError=``;try{let e=await po(`/admin/model-pricing-overrides`,`PUT`,n,{label:`model pricing override`});if(e.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideError=`Model pricing overrides feature is unavailable.`;return}if(e.stale)return;if(!e.ok){this.modelPricingOverrideError=e.status===401?`Authentication required.`:so(e,`Failed to save model pricing.`);return}this.modelPricingOverridesAvailable=!0,this.closeModelPricingOverrideForm(),q.success(`Model pricing saved.`),this.fetchModelPricingOverrides()}catch(e){console.error(`Failed to save model pricing override:`,e),this.modelPricingOverrideError=`Failed to save model pricing.`}finally{this.modelPricingOverrideSubmitting=!1}}async deleteModelPricingOverride(){let e=String(this.modelPricingOverrideForm.selector||``).trim();if(!(!e||!this.modelPricingOverrideFormHasExistingOverride)&&window.confirm(`Remove the model pricing override for "`+e+`"?`)){this.modelPricingOverrideSubmitting=!0,this.modelPricingOverrideError=``;try{let t=await po(`/admin/model-pricing-overrides`,`DELETE`,{selector:e},{label:`model pricing override`});if(t.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideError=`Model pricing overrides feature is unavailable.`;return}if(t.status!==404){if(t.stale)return;if(!t.ok){this.modelPricingOverrideError=t.status===401?`Authentication required.`:so(t,`Failed to remove model pricing override.`);return}}this.modelPricingOverridesAvailable=!0,this.closeModelPricingOverrideForm(),q.success(`Model pricing override removed.`),this.fetchModelPricingOverrides()}catch(e){console.error(`Failed to delete model pricing override:`,e),this.modelPricingOverrideError=`Failed to remove model pricing override.`}finally{this.modelPricingOverrideSubmitting=!1}}}},aO=R(``);function oO(e,t){E(t,!0);var n=aO();let r;var i=P(M(n),2),a=M(i,!0);T(i),T(n),F((e,i,o)=>{r=U(n,1,`alias-toggle`,null,r,e),n.disabled=LD.rowTogglingKey===t.row.key||!LD.virtualModelsAvailable,W(n,`aria-label`,i),B(a,o)},[()=>({enabled:LD.rowToggleEnabled(t.row),restricted:LD.rowToggleRestricted(t.row)}),()=>LD.rowToggleAriaLabel(t.row),()=>LD.rowToggleLabel(t.row)]),L(`click`,n,()=>LD.toggleRowEnabled(t.row)),z(e,n),D()}Hr([`click`]);var sO=R(`
`);function cO(e,t){E(t,!0);var n=sO(),r=M(n),i=e=>{oO(e,{get row(){return LD.globalScopeRow}})};V(r,e=>{LD.virtualModelsAvailable&&e(i)});var a=P(r,2),o=e=>{{let t=O(()=>iO.modelPricingButtonLabel(`global model pricing`,iO.hasGlobalPricingOverride())),n=O(()=>iO.modelPricingButtonClass(iO.hasGlobalPricingOverride()));$C(e,{get label(){return I(t)},get class(){return`table-icon-btn ${I(n)??``}`},onclick:()=>iO.openGlobalPricingOverrideEdit(),children:(e,t)=>{G(e,{name:`circle-dollar-sign`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(a,e=>{iO.modelPricingOverridesAvailable&&e(o)});var s=P(a,2),c=e=>{{let t=O(()=>CD(`global model access`,LD.hasGlobalModelOverride())),n=O(()=>SD(LD.hasGlobalModelOverride()));$C(e,{get label(){return I(t)},get class(){return`table-icon-btn ${I(n)??``}`},onclick:()=>LD.openGlobalModelOverrideEdit(),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(s,e=>{LD.virtualModelsAvailable&&e(c)}),T(n),z(e,n),D()}function lO(e){return String(e&&(e.primary_model||e.source)||``).trim()}function uO(e){return Array.isArray(e&&e.fallback_models)?e.fallback_models:Array.isArray(e&&e.targets)?e.targets:[]}function dO(e){return Array.isArray(e)?e.map(e=>({...e,source:lO(e),targets:uO(e)})):[]}function fO(e){let t=uO(e);return t.length===0?`-`:t.join(`, `)}function pO(e){return e&&e.enabled===!1?`Off`:e&&e.managed?`Config`:`On`}function mO(e,t){let n=String(t||``).trim();return n&&(Array.isArray(e)?e:[]).find(e=>lO(e)===n)||null}function hO(e,t){if(!t||t.is_alias)return!1;let n=mO(e,RE(t));return!!(n&&n.enabled!==!1&&uO(n).length>0)}function gO(e,t){return hO(e,t)?`table-action-btn-failover-active`:``}function _O(e,t){let n=`Edit failover for `+(t&&t.display_name?t.display_name:`model`);return hO(e,t)?n+` (active)`:n}function vO(e){let t=[e&&e.target_model];return(Array.isArray(e&&e.targets)?e.targets:[]).forEach(e=>t.push(e&&e.model)),t.map(e=>String(e||``).trim()).filter(Boolean)}function yO(e){let t=Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(Boolean):[];return{target_model:t[0]||``,targets:t.slice(1).map(e=>({model:e}))}}function bO(e){return{primary_model:String(e&&e.source||``).trim(),fallback_models:vO(e),enabled:!(e&&e.enabled===!1)}}function xO(e){return lO(e)}function SO(e){let t={};return(Array.isArray(e)?e:[]).forEach(e=>{let n=xO(e);n&&(t[n]=!0)}),t}function CO(e,t){let n=xO(t);return!!(n&&e&&e[n])}function wO(e,t){return(Array.isArray(e)?e:[]).filter(e=>CO(t,e))}function TO(e,t){let n=Array.isArray(e)?e:[];return n.length>0&&wO(n,t).length===n.length}function EO(e){return[lO(e),uO(e).join(` `)].join(` `).toLowerCase()}function DO(e,t){let n=Array.isArray(e)?e:[],r=String(t||``).trim().toLowerCase();return r?n.filter(e=>EO(e).includes(r)):n}function OO(e){return{primary_model:lO(e),fallback_models:uO(e).map(e=>String(e||``).trim()).filter(Boolean),enabled:!!(e&&e.enabled!==!1)}}function kO(){return{source:``,target_model:``,targets:[],enabled:!0}}var Z=new class{#e=k(!0);get failoverAvailable(){return I(this.#e)}set failoverAvailable(e){A(this.#e,e,!0)}#t=k(j([]));get failoverRules(){return I(this.#t)}set failoverRules(e){A(this.#t,e,!0)}#n=k(!1);get failoverLoading(){return I(this.#n)}set failoverLoading(e){A(this.#n,e,!0)}#r=k(!1);get failoverSaving(){return I(this.#r)}set failoverSaving(e){A(this.#r,e,!0)}#i=k(!1);get failoverGenerating(){return I(this.#i)}set failoverGenerating(e){A(this.#i,e,!0)}#a=k(``);get failoverError(){return I(this.#a)}set failoverError(e){A(this.#a,e,!0)}#o=k(j([]));get failoverGeneratedRules(){return I(this.#o)}set failoverGeneratedRules(e){A(this.#o,e,!0)}#s=k(!1);get failoverDraftsOpen(){return I(this.#s)}set failoverDraftsOpen(e){A(this.#s,e,!0)}#c=k(j({}));get failoverDraftSelections(){return I(this.#c)}set failoverDraftSelections(e){A(this.#c,e,!0)}#l=k(``);get failoverDraftFilter(){return I(this.#l)}set failoverDraftFilter(e){A(this.#l,e,!0)}#u=k(!1);get failoverDraftSaving(){return I(this.#u)}set failoverDraftSaving(e){A(this.#u,e,!0)}#d=k(!1);get failoverFormOpen(){return I(this.#d)}set failoverFormOpen(e){A(this.#d,e,!0)}#f=k(`create`);get failoverFormMode(){return I(this.#f)}set failoverFormMode(e){A(this.#f,e,!0)}#p=k(!1);get failoverFormManaged(){return I(this.#p)}set failoverFormManaged(e){A(this.#p,e,!0)}#m=k(j(kO()));get failoverForm(){return I(this.#m)}set failoverForm(e){A(this.#m,e,!0)}failoverEnabled(){return _o.booleanFlag(`FAILOVER_ENABLED`,!0)}async fetchFailoverRules(){if(!this.failoverEnabled()){this.failoverAvailable=!1,this.failoverRules=[],this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!1,this.failoverError=``,this.failoverLoading=!1;return}this.failoverLoading=!0,this.failoverError=``;try{let e=await fo(`/admin/failover`,{label:`failover mappings`});if(e.status===503){this.failoverAvailable=!1,this.failoverRules=[];return}if(e.stale)return;if(this.failoverAvailable=!0,!e.ok){this.failoverRules=[];return}this.failoverRules=dO(e.data)}catch(e){console.error(`Failed to fetch failover mappings:`,e),this.failoverRules=[],this.failoverError=`Unable to load failover mappings.`}finally{this.failoverLoading=!1}}resetFailoverForm(){this.failoverFormMode=`create`,this.failoverFormManaged=!1,this.failoverForm=kO()}openFailoverCreate(){this.resetFailoverForm(),this.failoverFormOpen=!0,this.focusFailoverEditor()}openFailoverEdit(e){if(!e)return;this.resetFailoverForm(),this.failoverFormMode=`edit`,this.failoverFormOpen=!0,this.failoverFormManaged=!!e.managed;let t=this.failoverPrimaryModel(e),n=this.failoverTargets(e);this.failoverForm={source:t,target_model:n[0]||``,targets:n.slice(1).map(e=>({model:e})),enabled:e.enabled!==!1},this.focusFailoverEditor()}openFailoverForModel(e){if(!e||e.is_alias)return;let t=this.qualifiedModelName(e),n=this.failoverRules.find(e=>this.failoverPrimaryModel(e)===t);if(n){this.openFailoverEdit(n);return}this.resetFailoverForm(),this.failoverFormMode=`create`,this.failoverFormOpen=!0,this.failoverForm.source=t,this.focusFailoverEditor()}closeFailoverForm(){this.failoverFormOpen=!1}closeFailoverDraftsModal(){this.failoverDraftSaving||(this.failoverDraftsOpen=!1)}failoverFormTargets(){return vO(this.failoverForm)}setFailoverFormTargets(e){let t=yO(e);this.failoverForm.target_model=t.target_model,this.failoverForm.targets=t.targets}addFailoverTarget(){Array.isArray(this.failoverForm.targets)||(this.failoverForm.targets=[]),this.failoverForm.targets.push({model:``}),this.focusFailoverEditor()}removeFailoverTarget(e){if(!Array.isArray(this.failoverForm.targets)){this.failoverForm.targets=[];return}this.failoverForm.targets.splice(e,1)}removePrimaryFailoverTarget(){let e=Array.isArray(this.failoverForm.targets)?this.failoverForm.targets:[];if(e.length>0){let t=e.shift();this.failoverForm.target_model=t&&t.model?t.model:``,this.failoverForm.targets=e;return}this.failoverForm.target_model=``}failoverRulePayload(){return bO(this.failoverForm)}async submitFailoverForm(){if(this.failoverSaving||this.failoverGenerating||this.failoverFormManaged)return;let e=this.failoverRulePayload();if(!e.primary_model){this.failoverError=`Primary model is required.`;return}if(e.enabled&&e.fallback_models.length===0){this.failoverError=`Add at least one failover target.`;return}this.failoverSaving=!0,this.failoverError=``;try{let t=await po(`/admin/failover`,`PUT`,e,{label:`failover mapping`});if(t.stale)return;if(!t.ok){this.failoverError=`Failed to save failover mapping.`;return}q.success(`Failover mapping saved.`),this.closeFailoverForm(),this.fetchFailoverRules()}catch(e){console.error(`Failed to save failover mapping:`,e),this.failoverError=`Failed to save failover mapping.`}finally{this.failoverSaving=!1}}async deleteFailoverRule(e){let t=String(e&&this.failoverPrimaryModel(e)||this.failoverForm.source||``).trim();if(!(!t||this.failoverSaving||this.failoverGenerating)&&confirm(`Remove failover mapping for "`+t+`"?`)){this.failoverSaving=!0,this.failoverError=``;try{let e=await po(`/admin/failover`,`DELETE`,{primary_model:t},{label:`failover mapping`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to remove failover mapping.`;return}q.success(`Failover mapping removed.`),this.closeFailoverForm(),this.fetchFailoverRules()}catch(e){console.error(`Failed to remove failover mapping:`,e),this.failoverError=`Failed to remove failover mapping.`}finally{this.failoverSaving=!1}}}async generateFailoverForForm(){if(this.failoverGenerating||this.failoverSaving||this.failoverFormManaged)return;let e=String(this.failoverForm.source||``).trim();if(!e){this.failoverError=`Primary model is required.`;return}this.failoverGenerating=!0,this.failoverError=``;try{let t=await po(`/admin/failover/generate`,`POST`,{primary_model:e},{label:`failover generation`});if(t.stale)return;if(!t.ok){this.failoverError=`Failed to generate failover mapping.`;return}let n=dO(t.data),r=n.find(t=>this.failoverPrimaryModel(t)===e)||n[0]||null,i=this.failoverTargets(r);if(i.length===0){this.failoverError=`No failover suggestions were generated for this model.`;return}this.setFailoverFormTargets(i),q.success(`Generated `+i.length+` fallback model`+(i.length===1?`.`:`s.`)),this.focusFailoverEditor()}catch(e){console.error(`Failed to generate failover mapping:`,e),this.failoverError=`Failed to generate failover mapping.`}finally{this.failoverGenerating=!1}}openFailoverResetDialog(){jo.open({title:`Remove failover models`,titleId:`failoverResetDialogTitle`,inputId:`failover-reset-confirmation`,message:`Remove every dashboard-managed failover mapping. Configuration-managed mappings remain active.`,requiredText:`remove`,confirmLabel:`Remove Failover`,icon:`trash-2`,dialogClass:`budget-reset-dialog`,onConfirm:async()=>{await this.resetFailoverRules(),this.failoverError&&(jo.error=this.failoverError)}})}async resetFailoverRules(){if(!this.failoverSaving){this.failoverSaving=!0,this.failoverError=``;try{let e=await po(`/admin/failover/reset`,`POST`,void 0,{label:`failover removal`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to remove failover mappings.`;return}this.failoverRules=dO(e.data),this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!1,q.success(`Dashboard-managed failover mappings removed.`),jo.close()}catch(e){console.error(`Failed to remove failover mappings:`,e),this.failoverError=`Failed to remove failover mappings.`}finally{this.failoverSaving=!1}}}async generateFailoverRules(){if(!(this.failoverGenerating||this.failoverDraftSaving)){this.failoverGenerating=!0,this.failoverError=``,this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!0;try{let e=await po(`/admin/failover/generate`,`POST`,void 0,{label:`failover generation`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to generate failover mappings.`;return}this.failoverGeneratedRules=dO(e.data),this.selectAllFailoverDrafts(this.failoverGeneratedRules)}catch(e){console.error(`Failed to generate failover mappings:`,e),this.failoverError=`Failed to generate failover mappings.`}finally{this.failoverGenerating=!1}}}failoverDraftKey(e){return xO(e)}selectAllFailoverDrafts(e){this.failoverDraftSelections=SO(e)}failoverDraftSelected(e){return CO(this.failoverDraftSelections,e)}setFailoverDraftSelected(e,t){let n=this.failoverDraftKey(e);n&&(this.failoverDraftSelections={...this.failoverDraftSelections,[n]:!!t})}selectedFailoverDrafts(){return wO(this.failoverGeneratedRules,this.failoverDraftSelections)}selectedFailoverDraftCount(){return this.selectedFailoverDrafts().length}failoverDraftCountLabel(){return this.selectedFailoverDraftCount()+` / `+this.failoverGeneratedRules.length+` selected`}allFailoverDraftsSelected(){return TO(this.failoverGeneratedRules,this.failoverDraftSelections)}toggleAllFailoverDrafts(){if(!(this.failoverDraftSaving||this.failoverGenerating||this.failoverGeneratedRules.length===0)){if(this.allFailoverDraftsSelected()){this.failoverDraftSelections={};return}this.selectAllFailoverDrafts(this.failoverGeneratedRules)}}failoverDraftSearchText(e){return EO(e)}filteredFailoverDrafts(){return DO(this.failoverGeneratedRules,this.failoverDraftFilter)}failoverDraftPayload(e){return OO(e)}async saveSelectedFailoverDrafts(){if(this.failoverDraftSaving||this.failoverGenerating)return;let e=this.selectedFailoverDrafts();if(e.length===0){this.failoverError=`Select at least one failover draft.`;return}this.failoverDraftSaving=!0,this.failoverError=``;try{for(let t of e){let e=this.failoverDraftPayload(t);if(!e.primary_model||e.fallback_models.length===0){this.failoverError=`Generated failover draft is missing model data.`;return}let n=await po(`/admin/failover`,`PUT`,e,{label:`failover mapping`});if(n.stale)return;if(!n.ok){this.failoverError=`Failed to save failover mapping.`;return}}q.success(`Saved `+e.length+` failover mapping`+(e.length===1?`.`:`s.`)),this.failoverDraftsOpen=!1,this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.fetchFailoverRules()}catch(e){console.error(`Failed to save generated failover mappings:`,e),this.failoverError=`Failed to save failover mappings.`}finally{this.failoverDraftSaving=!1}}focusFailoverEditor(){setTimeout(()=>{let e=document.querySelector(`[data-failover-editor]`),t=e&&e.querySelector?e.querySelector(`[data-modal-autofocus], input:not([disabled]), textarea:not([disabled]), button:not([disabled])`):null;t&&typeof t.focus==`function`&&t.focus({preventScroll:!0})},0)}failoverTargetLabel(e){return fO(e)}failoverPrimaryModel(e){return lO(e)}failoverTargets(e){return uO(e)}findFailoverMapping(e){return mO(this.failoverRules,e)}hasActiveFailoverMapping(e){return hO(this.failoverRules,e)}failoverButtonClass(e){return gO(this.failoverRules,e)}failoverButtonLabel(e){return _O(this.failoverRules,e)}normalizeFailoverRules(e){return dO(e)}failoverRuleStatus(e){return pO(e)}qualifiedModelName(e){return RE(e)}},AO=R(``),jO=R(``),MO=R(`Config`),NO=R(`
Targets
`),PO=R(``),FO=R(`
Redirects to
`),IO=R(` `),LO=R(`
`),RO=R(`
`),zO=R(`
`);function BO(e,t){E(t,!0);let n=O(()=>iO.modelRowPricing(t.row));var r=zO(),i=M(r),a=M(i),o=M(a),s=M(o),c=M(s,!0);T(s);var l=P(s,2),u=e=>{z(e,AO())};V(l,e=>{t.row.is_alias&&e(u)});var d=P(l,2),f=e=>{z(e,jO())};V(d,e=>{!t.row.is_alias&&t.row.masking_alias&&e(f)});var p=P(d,2),m=e=>{z(e,MO())},h=O(()=>bD(t.row));V(p,e=>{I(h)&&e(m)}),T(o);var g=P(o,2),_=e=>{var n=NO(),r=P(M(n)),i=M(r,!0);T(r),T(n),F(()=>B(i,t.row.secondary_name)),z(e,n)};V(g,e=>{t.row.is_alias&&e(_)});var v=P(g,2),y=e=>{var n=FO(),r=P(M(n)),i=M(r,!0);T(r);var a=P(r,2),o=e=>{var n=PO();F(e=>{W(n,`aria-label`,LD.rowDeletingKey===t.row.key?`Removing redirect for `+t.row.display_name:`Remove redirect for `+t.row.display_name),W(n,`title`,LD.rowDeletingKey===t.row.key?`Removing redirect for `+t.row.display_name:`Remove redirect for `+t.row.display_name),n.disabled=e},[()=>!!LD.rowDeletingKey]),L(`click`,n,()=>LD.removeRedirectRow(t.row)),z(e,n)},s=O(()=>LD.virtualModelsAvailable&&vD(t.row));V(a,e=>{I(s)&&e(o)}),T(n),F(e=>B(i,e),[()=>ZE(t.row.masking_alias)]),z(e,n)};V(v,e=>{!t.row.is_alias&&t.row.masking_alias&&e(y)}),T(a),T(i);var b=P(i);H(b,17,()=>t.columns,oi,(e,r)=>{var i=IO(),a=M(i,!0);T(i),F(e=>{U(i,1,Fi(I(r).class),`svelte-1iynym`),B(a,e)},[()=>I(r).value(t.row,I(n))]),z(e,i)});var x=P(b),S=M(x),C=e=>{var n=LO(),r=M(n);oO(r,{get row(){return t.row}});var i=P(r,2),a=e=>{{let n=O(()=>LD.rowDeletingKey===t.row.key?`Removing alias `+t.row.alias.name:`Remove alias `+t.row.alias.name),r=O(()=>!!LD.rowDeletingKey);$C(e,{get label(){return I(n)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>LD.removeAliasRow(t.row),get disabled(){return I(r)},children:(e,t)=>{G(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}})}},o=O(()=>LD.virtualModelsAvailable&&_D(t.row));V(i,e=>{I(o)&&e(a)});var s=P(i,2),c=e=>{{let n=O(()=>`Edit alias `+t.row.alias.name);$C(e,{get label(){return I(n)},class:`table-icon-btn table-action-btn-active`,onclick:()=>LD.openVirtualModelEditAlias(t.row.alias),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(s,e=>{LD.virtualModelsAvailable&&e(c)}),T(n),z(e,n)},w=e=>{var n=RO(),r=M(n);oO(r,{get row(){return t.row}});var i=P(r,2),a=e=>{{let n=O(()=>iO.modelPricingButtonLabel(`model pricing for `+t.row.display_name,iO.hasModelPricingOverride(t.row))),r=O(()=>iO.modelPricingButtonClass(iO.hasModelPricingOverride(t.row)));$C(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>iO.openModelPricingOverrideEdit(t.row),children:(e,t)=>{G(e,{name:`circle-dollar-sign`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(i,e=>{iO.modelPricingOverridesAvailable&&e(a)});var o=P(i,2),s=e=>{{let n=O(()=>Z.failoverButtonLabel(t.row)),r=O(()=>Z.failoverButtonClass(t.row));$C(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>Z.openFailoverForModel(t.row),children:(e,t)=>{G(e,{name:`shuffle`,class:`table-icon-svg`})},$$slots:{default:!0}})}},c=O(()=>Z.failoverAvailable&&Z.failoverEnabled());V(o,e=>{I(c)&&e(s)});var l=P(o,2),u=e=>{{let n=O(()=>X.rateLimitGaugeTitle(t.row.display_name,X.rateLimitGaugeClassForModel(t.row))),r=O(()=>X.rateLimitGaugeClassForModel(t.row));$C(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>X.openRateLimitInspectorForModel(t.row),children:(e,t)=>{G(e,{name:`gauge`,class:`table-icon-svg`})},$$slots:{default:!0}})}},d=O(()=>X.rateLimitsEnabled()&&X.rateLimitInspectorModelID(t.row));V(l,e=>{I(d)&&e(u)});var f=P(l,2),p=e=>{{let n=O(()=>`Edit redirect for `+t.row.display_name);$C(e,{get label(){return I(n)},class:`table-icon-btn table-action-btn-active`,onclick:()=>LD.openVirtualModelEditAlias(t.row.masking_alias),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(f,e=>{LD.virtualModelsAvailable&&t.row.masking_alias&&t.row.masking_alias.name&&e(p)});var m=P(f,2),h=e=>{{let n=O(()=>CD(`model access for `+t.row.display_name,xD(t.row.access))),r=O(()=>SD(xD(t.row.access)));$C(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>LD.openVirtualModelEditModel(t.row),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(m,e=>{LD.virtualModelsAvailable&&!t.row.masking_alias&&e(h)}),T(n),z(e,n)};V(S,e=>{t.row.is_alias?e(C):e(w,-1)}),T(x),T(r),F((e,n)=>{W(r,`id`,e),U(r,1,n,`svelte-1iynym`),B(c,t.row.display_name)},[()=>yD(t.row)||void 0,()=>Fi(gD(t.row))]),z(e,r),D()}Hr([`click`]);var VO={headerLines:[`Modes`],value:e=>(e.model?.metadata?.modes??[]).join(`, `)||`-`};function HO(e,t){return{headerLines:e,class:`col-price`,value:t}}var UO=HO([`Input / Output ($/MTok)`],(e,t)=>ts(t?.input_per_mtok)+` / `+ts(t?.output_per_mtok)),WO={all:[VO,UO],text_generation:[VO,UO,HO([`Cached $/MTok`],(e,t)=>ts(t?.cached_input_per_mtok))],embedding:[HO([`Input`,`$/MTok`],(e,t)=>ts(t?.input_per_mtok))],image:[HO([`$/Image`],(e,t)=>ns(t?.per_image))],audio:[HO([`$/Second`],(e,t)=>ns(t?.per_second_input)),HO([`$/Character`],(e,t)=>ns(t?.per_character_input))],video:[HO([`$/Second (In)`],(e,t)=>ns(t?.per_second_input)),HO([`$/Second (Out)`],(e,t)=>ns(t?.per_second_output))],utility:[HO([`$/Page`],(e,t)=>ns(t?.per_page)),HO([`$/Request`],(e,t)=>ns(t?.per_request))]};function GO(e){return WO[e]||WO.all}function KO(e){return GO(e).length+2}var qO=R(`
`),JO=R(` `,1),YO=R(``),XO=R(` `),ZO=R(` `),QO=R(`
`),$O=R(`
`),ek=R(`
Model
`);function tk(e,t){E(t,!0);let n=O(()=>Es.activeCategory||`all`),r=O(()=>GO(I(n))),i=O(()=>KO(I(n)));var a=ek(),o=M(a),s=M(o),c=M(s),l=P(M(c));H(l,17,()=>I(r),oi,(e,t)=>{var n=YO();H(n,21,()=>I(t).headerLines,oi,(e,t,n)=>{var r=JO(),i=N(r),a=e=>{z(e,qO())};V(i,e=>{n>0&&e(a)});var o=P(i,1,!0);F(()=>B(o,I(t))),z(e,r)}),T(n),F(()=>U(n,1,Fi(I(t).class),`svelte-1911hy6`)),z(e,n)});var u=P(l);cO(M(u),{}),T(u),T(c),T(s),H(P(s),17,()=>LD.filteredDisplayModelGroups,e=>e.key,(e,t)=>{var n=$O(),a=M(n),o=M(a),s=M(o),c=M(s),l=M(c),u=M(l),d=M(u,!0);T(u);var f=P(u,2),p=e=>{var n=XO(),r=M(n,!0);T(n),F(()=>B(r,`(`+I(t).type_label+`)`)),z(e,n)};V(f,e=>{I(t).type_label&&e(p)});var m=P(f,2),h=e=>{var n=ZO(),r=M(n,!0);T(n),F(()=>B(r,I(t).item_count_label)),z(e,n)};V(m,e=>{I(t).item_count_label&&e(h)}),T(l);var g=P(l,2),_=e=>{var n=QO(),r=M(n,!0);T(n),F(()=>B(r,I(t).access_summary)),z(e,n)};V(g,e=>{I(t).access_summary&&e(_)}),T(c);var v=P(c,2),y=M(v),b=e=>{oO(e,{get row(){return I(t)}})};V(y,e=>{I(t).access.selector&&e(b)});var x=P(y,2),S=e=>{{let n=O(()=>iO.modelPricingButtonLabel(`provider pricing for `+I(t).display_name,iO.hasProviderPricingOverride(I(t)))),r=O(()=>iO.modelPricingButtonClass(iO.hasProviderPricingOverride(I(t))));$C(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>iO.openProviderPricingOverrideEdit(I(t)),children:(e,t)=>{G(e,{name:`circle-dollar-sign`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(x,e=>{iO.modelPricingOverridesAvailable&&I(t).provider_name&&e(S)});var C=P(x,2),w=e=>{{let n=O(()=>X.rateLimitGaugeTitle(`provider `+I(t).display_name,X.rateLimitGaugeClassForProvider(I(t)))),r=O(()=>X.rateLimitGaugeClassForProvider(I(t)));$C(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>X.openRateLimitInspectorForProvider(I(t)),children:(e,t)=>{G(e,{name:`gauge`,class:`table-icon-svg`})},$$slots:{default:!0}})}},ee=O(()=>X.rateLimitsEnabled()&&I(t).provider_name);V(C,e=>{I(ee)&&e(w)});var te=P(C,2),ne=e=>{{let n=O(()=>CD(`provider access for `+I(t).display_name,xD(I(t).access))),r=O(()=>SD(xD(I(t).access)));$C(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>LD.openProviderOverrideEdit(I(t)),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(te,e=>{LD.virtualModelsAvailable&&I(t).access.selector&&e(ne)}),T(v),T(s),T(o),T(a),H(P(a),17,()=>I(t).rows,e=>e.key,(e,t)=>{BO(e,{get row(){return I(t)},get columns(){return I(r)}})}),T(n),F(()=>{W(o,`colspan`,I(i)),B(d,I(t).display_name)}),z(e,n)}),T(o),T(a),z(e,a),D()}var nk=R(``);function rk(e,t){let n=ya(t,`enabled`,3,!1),r=ya(t,`label`,3,``),i=ya(t,`disabled`,3,!1),a=ya(t,`restricted`,3,!1);var o=nk();let s;var c=P(M(o),2),l=M(c,!0);T(c),T(o),F(()=>{s=U(o,1,`alias-toggle`,null,s,{enabled:n(),restricted:a()}),o.disabled=i(),W(o,`aria-label`,(n()?`Disable `:`Enable `)+r()),B(l,t.text??(n()?`Enabled`:`Disabled`))}),L(`click`,o,function(...e){t.onclick?.apply(this,e)}),z(e,o)}Hr([`click`]);var ik=R(``),ak=R(`
`);function ok(e,t){E(t,!0);let n=ya(t,`model`,15,``),r=ya(t,`weight`,15),i=ya(t,`id`,3,void 0),a=ya(t,`placeholder`,3,`openai/gpt-4o`),o=ya(t,`showRemove`,3,!0);var s=ak(),c=M(s);na(c);var l=P(c,2),u=e=>{var t=ik();na(t),F(()=>t.disabled=LD.vmFormManaged),da(t,r),z(e,t)},d=O(()=>LD.vmFormShowWeights());V(l,e=>{I(d)&&e(u)});var f=P(l,2),p=e=>{$C(e,{label:`Remove target`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,get onclick(){return t.onremove},get disabled(){return LD.vmFormManaged},children:(e,t)=>{G(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}})};V(f,e=>{o()&&e(p)}),T(s),F(()=>{W(c,`id`,i()),W(c,`placeholder`,a()),c.disabled=LD.vmFormManaged}),da(c,n),z(e,s),D()}var sk=R(`

`),ck=R(`adaptive lets the registered routing extension pick the target per - request.`,1),lk=R(`Add one target to make this a redirect/alias, or two or more to load - balance across them, then pick a strategy: round_robin rotates across targets - (weight biases the share) and cost always routes to the cheapest available - target. Leave Targets empty to make it only an access policy on the Source selector. The selector uses / for all providers and - models, for one provider, or for one model. user_paths is - matched against the effective request user_path: the managed API key user_path when present, otherwise the configured user path request header.`,1),uk=R(``),dk=R(`

This virtual model is defined in configuration (config.yaml / VIRTUAL_MODELS) and is read-only here. Edit your configuration to change it.

`),fk=R(``),pk=R(``),mk=R(``),hk=R(`
`,1),gk=R(``),_k=R(`Use / to allow every user path. Use a team path to restrict to that - subtree, or an unused path to make the selector unavailable.`,1),vk=R(``),yk=R(` `),bk=R(`
Targets
`,1);function xk(e,t){E(t,!0);let n=LD;An(()=>{n.vmFormOpen&&_o.ensureLoaded()});{let t=e=>{Rx(e,{copyId:`virtual-model-help-copy`,label:`virtual model help`,get open(){return n.vmFormHelpOpen},set open(e){n.vmFormHelpOpen=e},title:e=>{var t=sk(),r=M(t,!0);T(t),F(()=>B(r,n.vmFormDisplayName||n.vmForm.source||`Virtual model`)),z(e,t)},help:e=>{Ue();var t=lk(),n=P(N(t),7),r=e=>{var t=ck();Ue(),z(e,t)},i=O(()=>_o.virtualModelStrategies().includes(`adaptive`));V(n,e=>{I(i)&&e(r)});var a=P(n,8);a.textContent=`{provider_name}/`;var o=P(a,2);o.textContent=`{provider_name}/{model}`,Ue(7),z(e,t)},$$slots:{title:!0,help:!0}})},r=e=>{var t=Qr(),r=N(t),i=e=>{var t=uk();F(()=>t.disabled=n.vmDeleting||n.vmSubmitting),L(`click`,t,()=>n.deleteVirtualModel()),z(e,t)};V(r,e=>{n.vmFormHasExisting&&!n.vmFormManaged&&e(i)}),z(e,t)},i=O(()=>n.vmDeleting||n.vmFormManaged),a=O(()=>n.vmFormMode===`edit`?`Save`:`Create`),o=O(()=>n.vmFormMode===`edit`?`save`:`plus`);rT(e,{get open(){return n.vmFormOpen},ariaLabel:`Virtual model editor`,get error(){return n.vmFormError},get submitting(){return n.vmSubmitting},get submitDisabled(){return I(i)},get submitLabel(){return I(a)},get submitIcon(){return I(o)},onclose:()=>n.closeVirtualModelForm(),onsubmit:()=>n.submitVirtualModelForm(),header:t,extraActions:r,children:(e,t)=>{var r=bk(),i=N(r),a=e=>{z(e,dk())};V(i,e=>{n.vmFormManaged&&e(a)});var o=P(i,2);aT(o,{id:`virtual-model-source`,label:`Source`,children:(e,t)=>{var r=fk();na(r),F(()=>r.disabled=n.vmFormSourceLocked||n.vmFormManaged),da(r,()=>n.vmForm.source,e=>n.vmForm.source=e),z(e,r)},$$slots:{default:!0}});var s=P(o,2);H(s,21,()=>Es.models,e=>RE(e),(e,t)=>{var n=pk(),r=M(n,!0);T(n);var i={};F((e,t)=>{B(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>RE(I(t)),()=>RE(I(t))]),z(e,n)}),T(s);var c=P(s,2),l=P(M(c),2);{let e=O(()=>n.vmFormHasPrimaryTarget());ok(l,{id:`virtual-model-target`,get showRemove(){return I(e)},onremove:()=>n.removePrimaryTarget(),get model(){return n.vmForm.target_model},set model(e){n.vmForm.target_model=e},get weight(){return n.vmForm.target_weight},set weight(e){n.vmForm.target_weight=e}})}var u=P(l,2);H(u,17,()=>n.vmForm.targets,oi,(e,t,r)=>{ok(e,{placeholder:`groq/llama`,onremove:()=>n.removeVmTarget(r),get model(){return I(t).model},set model(e){I(t).model=e},get weight(){return I(t).weight},set weight(e){I(t).weight=e}})});var d=P(u,2),f=M(d);G(M(f),{name:`plus`,class:`form-action-icon`}),Ue(2),T(f),T(d),T(c);var p=P(c,2),m=e=>{var t=hk(),r=N(t);aT(r,{id:`virtual-model-strategy`,label:`Load-balancing strategy`,children:(e,t)=>{var r=mk();H(r,21,()=>n.vmStrategyOptions(),e=>e.value,(e,t)=>{var n=pk(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(r),F(()=>r.disabled=n.vmFormManaged),Gi(r,()=>n.vmForm.strategy,e=>n.vmForm.strategy=e),z(e,r)},$$slots:{default:!0}});var i=P(r,2),a=M(i),o=M(a);na(o),Ue(2),T(a),T(i),F(()=>o.disabled=n.vmFormManaged),fa(o,()=>n.vmForm.session_affinity,e=>n.vmForm.session_affinity=e),z(e,t)},h=O(()=>n.vmFormShowStrategy());V(p,e=>{I(h)&&e(m)});var g=P(p,2),_=M(g);Rx(_,{copyId:`virtual-model-user-paths-help`,label:`user paths help`,get open(){return n.vmFormUserPathsHelpOpen},set open(e){n.vmFormUserPathsHelpOpen=e},title:e=>{z(e,gk())},help:e=>{Ue();var t=_k();Ue(2),z(e,t)},$$slots:{title:!0,help:!0}});var v=P(_,2);ft(v),W(v,`placeholder`,`/ -/team/alpha -/non-existing`),T(g);var y=P(g,2);aT(y,{id:`virtual-model-description`,label:`Description`,children:(e,t)=>{var r=vk();ft(r),F(()=>r.disabled=n.vmFormManaged),da(r,()=>n.vmForm.description,e=>n.vmForm.description=e),z(e,r)},$$slots:{default:!0}});var b=P(y,2),x=M(b),S=e=>{var t=yk(),r=M(t,!0);T(t),F(()=>B(r,`Default enabled: `+(n.vmFormDefaultEnabled?`yes`:`no`)+` · Effective now: `+(n.vmFormEffectiveEnabled?`yes`:`no`))),z(e,t)};V(x,e=>{n.vmFormMode===`edit`&&e(S)});var C=P(x,2),w=M(C);{let e=O(()=>n.vmFormToggleRestricted()),t=O(()=>n.vmFormToggleLabel());rk(w,{get enabled(){return n.vmForm.enabled},get restricted(){return I(e)},label:`virtual model`,get disabled(){return n.vmFormManaged},get text(){return I(t)},onclick:()=>{n.vmFormManaged||(n.vmForm.enabled=!n.vmForm.enabled)}})}T(C),T(b),F(()=>{f.disabled=n.vmFormManaged,v.disabled=n.vmFormManaged}),L(`click`,f,()=>n.addVmTarget()),da(v,()=>n.vmForm.user_paths,e=>n.vmForm.user_paths=e),z(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}})}D()}Hr([`click`]);var Sk=R(`

Pricing override

`,1),Ck=R(``),wk=R(``),Tk=R(``),Ek=R(``),Dk=R(`
`),Ok=R(`
Tiered pricing exists for this override and will be preserved. Tier editing can be added - without a database migration.
`),kk=R(`
No pricing fields set.
`),Ak=R(`
`),jk=R(`

Currency is USD. Saved fields override model registry and config.yaml pricing for this - selector; unset fields continue to inherit.

Price Type USD Source
`,1);function Mk(e,t){E(t,!0);let n=iO;rT(e,{get open(){return n.modelPricingOverrideFormOpen},ariaLabel:`Model pricing editor`,dialogClass:`model-pricing-editor`,get error(){return n.modelPricingOverrideError},get submitting(){return n.modelPricingOverrideSubmitting},submitLabel:`Save Pricing`,onclose:()=>n.closeModelPricingOverrideForm(),onsubmit:()=>n.submitModelPricingOverrideForm(),header:e=>{var t=Sk(),r=P(N(t),2),i=M(r,!0);T(r),F(()=>B(i,n.modelPricingOverrideFormDisplayName||n.modelPricingOverrideForm.selector||`Pricing`)),z(e,t)},extraActions:e=>{var t=Qr(),r=N(t),i=e=>{var t=Ck();F(()=>t.disabled=n.modelPricingOverrideSubmitting),L(`click`,t,()=>n.deleteModelPricingOverride()),z(e,t)};V(r,e=>{n.modelPricingOverrideFormHasExistingOverride&&e(i)}),z(e,t)},children:(e,t)=>{var r=jk(),i=N(r),a=M(i);aT(a,{id:`model-pricing-override-selector`,label:`Selector`,children:(e,t)=>{var r=wk();na(r),da(r,()=>n.modelPricingOverrideForm.selector,e=>n.modelPricingOverrideForm.selector=e),z(e,r)},$$slots:{default:!0}});var o=P(a,2),s=e=>{aT(e,{id:`model-pricing-override-scope`,label:`Scope`,children:(e,t)=>{var r=Ek();H(r,21,()=>n.modelPricingOverrideFormScopeOptions,e=>e.value,(e,t)=>{var n=Tk(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(r),L(`change`,r,()=>n.setModelPricingOverrideScope(n.modelPricingOverrideFormScope)),Gi(r,()=>n.modelPricingOverrideFormScope,e=>n.modelPricingOverrideFormScope=e),z(e,r)},$$slots:{default:!0}})};V(o,e=>{n.modelPricingOverrideFormScopeOptions.length>1&&e(s)}),T(i);var c=P(i,4);H(c,21,()=>n.modelPricingOverrideRows,e=>e.id,(e,t,r)=>{var i=Dk(),a=M(i),o=M(a),s=P(o,2);H(s,21,()=>n.availablePricingFieldOptions(I(t)),e=>e.value,(e,t)=>{var n=Tk(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).group+` - `+I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(s),T(a);var c=P(a,2),l=M(c),u=P(l,2);na(u),T(c);var d=P(c,2);{let e=O(()=>`Remove `+n.pricingFieldLabel(I(t).field));$C(d,{get label(){return I(e)},class:`table-action-btn-danger table-icon-btn pricing-override-remove-row`,onclick:()=>n.removeModelPricingOverrideRow(I(t)),children:(e,t)=>{G(e,{name:`x`,class:`table-icon-svg`})},$$slots:{default:!0}})}T(i),F(()=>{W(o,`for`,`pricing-type-`+I(t).id),W(s,`id`,`pricing-type-`+I(t).id),W(l,`for`,`pricing-value-`+I(t).id),W(u,`id`,`pricing-value-`+I(t).id)}),Gi(s,()=>I(t).field,e=>I(t).field=e),da(u,()=>I(t).value,e=>I(t).value=e),z(e,i)}),T(c);var l=P(c,2),u=M(l);G(M(u),{name:`plus`,class:`form-action-icon`}),Ue(2),T(u),T(l);var d=P(l,2),f=e=>{z(e,Ok())};V(d,e=>{n.modelPricingOverrideFormPreservedTiers.length>0&&e(f)});var p=P(d,2),m=P(M(p),2),h=e=>{z(e,kk())},g=O(()=>n.modelPricingEffectivePreviewRows().length===0);V(m,e=>{I(g)&&e(h)}),H(P(m,2),17,()=>n.modelPricingEffectivePreviewRows(),e=>e.field,(e,t)=>{var n=Ak(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=M(a,!0);T(a);var s=P(a,2),c=M(s,!0);T(s),T(n),F(e=>{B(i,I(t).label),B(o,e),B(c,I(t).source)},[()=>I(t).value===null||I(t).value===void 0?`-`:ns(Number(I(t).value))]),z(e,n)}),T(p),L(`click`,u,()=>n.addModelPricingOverrideRow()),z(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}}),D()}Hr([`click`,`change`]);var Nk=R(`

Failover mapping

`,1),Pk=R(``),Fk=R(`

This failover mapping is defined in configuration and is read-only here.

`),Ik=R(``),Lk=R(`
`),Rk=R(`
`,1),zk=R(`
`);function Bk(e,t){E(t,!0);{let t=e=>{var t=Nk(),n=P(N(t),2),r=M(n,!0);T(n),F(()=>B(r,Z.failoverForm.source||`Failover`)),z(e,t)},n=e=>{var t=Qr(),n=N(t),r=e=>{var t=Pk();F(()=>t.disabled=Z.failoverSaving||Z.failoverGenerating),L(`click`,t,()=>Z.deleteFailoverRule()),z(e,t)};V(n,e=>{Z.failoverFormMode===`edit`&&!Z.failoverFormManaged&&e(r)}),z(e,t)},r=O(()=>Z.failoverGenerating||Z.failoverFormManaged);rT(e,{get open(){return Z.failoverFormOpen},ariaLabel:`Failover editor`,get error(){return Z.failoverError},get submitting(){return Z.failoverSaving},get submitDisabled(){return I(r)},submitLabel:`Save`,onclose:()=>Z.closeFailoverForm(),onsubmit:()=>Z.submitFailoverForm(),header:t,extraActions:n,children:(e,t)=>{var n=zk(),r=M(n),i=e=>{z(e,Fk())};V(r,e=>{Z.failoverFormManaged&&e(i)});var a=P(r,2);H(a,21,()=>Es.models,oi,(e,t)=>{var n=Ik(),r=M(n,!0);T(n);var i={};F((e,t)=>{B(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>RE(I(t)),()=>RE(I(t))]),z(e,n)}),T(a);var o=P(a,2);aT(o,{id:`failover-target`,label:`Fallback models`,children:(e,t)=>{var n=Rk(),r=N(n),i=M(r),a=M(i);na(a);var o=P(a,2),s=e=>{$C(e,{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Z.removePrimaryFailoverTarget(),get disabled(){return Z.failoverFormManaged},children:(e,t)=>{G(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}})};V(o,e=>{Z.failoverForm.target_model&&e(s)}),T(i),H(P(i,2),17,()=>Z.failoverForm.targets,oi,(e,t,n)=>{var r=Lk(),i=M(r);na(i),$C(P(i,2),{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Z.removeFailoverTarget(n),get disabled(){return Z.failoverFormManaged},children:(e,t)=>{G(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}}),T(r),F(()=>i.disabled=Z.failoverFormManaged),da(i,()=>I(t).model,e=>I(t).model=e),z(e,r)}),T(r);var c=P(r,2),l=M(c);G(M(l),{name:`plus`,class:`form-action-icon`}),Ue(2),T(l);var u=P(l,2),d=M(u);G(d,{name:`wand-sparkles`,class:`form-action-icon`});var f=P(d,2),p=M(f,!0);T(f),T(u),T(c),F(e=>{a.disabled=Z.failoverFormManaged,l.disabled=Z.failoverFormManaged||Z.failoverGenerating||Z.failoverSaving,u.disabled=e,B(p,Z.failoverGenerating?`Generating...`:`Generate automatically`)},[()=>Z.failoverFormManaged||Z.failoverGenerating||Z.failoverSaving||!Z.failoverEnabled()]),da(a,()=>Z.failoverForm.target_model,e=>Z.failoverForm.target_model=e),L(`click`,l,()=>Z.addFailoverTarget()),L(`click`,u,()=>Z.generateFailoverForForm()),z(e,n)},$$slots:{default:!0}});var s=P(o,2),c=M(s);rk(M(c),{get enabled(){return Z.failoverForm.enabled},label:`failover mapping`,get disabled(){return Z.failoverFormManaged},onclick:()=>{Z.failoverFormManaged||(Z.failoverForm.enabled=!Z.failoverForm.enabled)}}),T(c),T(s),T(n),z(e,n)},$$slots:{header:!0,extraActions:!0,default:!0}})}D()}Hr([`click`]);var Vk=R(` `),Hk=R(`
`),Uk=R(``),Wk=R(`
`),Gk=R(`

No failover suggestions were generated.

`),Kk=R(`

No failover drafts match the filter.

`),qk=R(``),Jk=R(``);function Yk(e,t){E(t,!0),Eo(e,{get open(){return Z.failoverDraftsOpen},variant:`editor`,onclose:()=>Z.closeFailoverDraftsModal(),children:(e,t)=>{var n=Jk(),r=M(n),i=P(M(r),2),a=M(i),o=e=>{var t=Vk(),n=M(t,!0);T(t),F(e=>B(n,e),[()=>Z.failoverDraftCountLabel()]),z(e,t)};V(a,e=>{Z.failoverGeneratedRules.length>0&&e(o)}),wo(P(a,2),{label:`Close failover drafts`,onclick:()=>Z.closeFailoverDraftsModal(),get disabled(){return Z.failoverDraftSaving}}),T(i),T(r);var s=P(r,2),c=e=>{ZC(e,{label:`Generating failover drafts...`,class:`failover-drafts-loading`})};V(s,e=>{Z.failoverGenerating&&e(c)});var l=P(s,2),u=e=>{var t=Hk(),n=M(t);nC(n,{placeholder:`Filter failover drafts...`,label:`Filter failover drafts`,get value(){return Z.failoverDraftFilter},set value(e){Z.failoverDraftFilter=e}});var r=P(n,2),i=M(r);G(i,{name:`check`,class:`form-action-icon`});var a=P(i,2),o=M(a,!0);T(a),T(r),T(t),F(e=>{r.disabled=Z.failoverDraftSaving,B(o,e)},[()=>Z.allFailoverDraftsSelected()?`Deselect all`:`Select all`]),L(`click`,r,()=>Z.toggleAllFailoverDrafts()),z(e,t)};V(l,e=>{!Z.failoverGenerating&&Z.failoverGeneratedRules.length>0&&e(u)});var d=P(l,2),f=e=>{var t=Wk();H(t,21,()=>Z.filteredFailoverDrafts(),e=>`failover-draft:`+Z.failoverPrimaryModel(e),(e,t)=>{var n=Uk(),r=M(n);na(r);var i=P(r,2),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s,!0);T(s),T(i),T(n),F((e,t,n,i)=>{ia(r,e),r.disabled=Z.failoverDraftSaving,W(r,`aria-label`,t),B(o,n),B(c,i)},[()=>Z.failoverDraftSelected(I(t)),()=>`Select failover draft for `+Z.failoverPrimaryModel(I(t)),()=>Z.failoverPrimaryModel(I(t)),()=>Z.failoverTargetLabel(I(t))]),L(`change`,r,e=>Z.setFailoverDraftSelected(I(t),e.currentTarget.checked)),z(e,n)}),T(t),z(e,t)},p=O(()=>!Z.failoverGenerating&&Z.filteredFailoverDrafts().length>0);V(d,e=>{I(p)&&e(f)});var m=P(d,2),h=e=>{z(e,Gk())};V(m,e=>{!Z.failoverGenerating&&Z.failoverGeneratedRules.length===0&&!Z.failoverError&&e(h)});var g=P(m,2),_=e=>{z(e,Kk())},v=O(()=>!Z.failoverGenerating&&Z.failoverGeneratedRules.length>0&&Z.filteredFailoverDrafts().length===0);V(g,e=>{I(v)&&e(_)});var y=P(g,2),b=e=>{var t=qk(),n=M(t,!0);T(t),F(()=>B(n,Z.failoverError)),z(e,t)};V(y,e=>{Z.failoverError&&e(b)});var x=P(y,2),S=M(x),C=P(S,2),w=M(C);G(w,{name:`save`,class:`form-action-icon`});var ee=P(w,2),te=M(ee,!0);T(ee),T(C),T(x),T(n),F(e=>{S.disabled=Z.failoverDraftSaving,C.disabled=e,B(te,Z.failoverDraftSaving?`Saving...`:`Save selected`)},[()=>Z.failoverGenerating||Z.failoverDraftSaving||Z.selectedFailoverDraftCount()===0]),L(`click`,S,()=>Z.closeFailoverDraftsModal()),L(`click`,C,()=>Z.saveSelectedFailoverDrafts()),z(e,n)},$$slots:{default:!0}}),D()}Hr([`click`,`change`]);var Xk=R(`
Rate limit management is unavailable.
`),Zk=R(` Add`,1),Qk=R(`

`),$k=R(`

No rules.

`),eA=R(` Edit`,1),tA=R(`
`),nA=R(`
`),rA=R(`

`),iA=R(``),aA=R(``);function oA(e,t){E(t,!0);function n(){K.dialogOpen||X.closeRateLimitInspector()}Eo(e,{get open(){return X.rateLimitInspectorOpen},variant:`editor`,onclose:n,children:(e,t)=>{var n=aA(),r=M(n),i=M(r),a=P(M(i),2),o=M(a),s=M(o,!0);T(o),T(a),T(i),wo(P(i,2),{label:`Close rate limits inspector`,onclick:()=>X.closeRateLimitInspector()}),T(r);var c=P(r,2),l=e=>{ZC(e,{label:`Loading rate limits...`})},u=e=>{z(e,Xk())},d=e=>{var t=Qr();H(N(t),17,()=>X.rateLimitInspectorSections(),e=>e.key,(e,t)=>{var n=rA(),r=M(n),i=M(r),a=M(i,!0);T(i);var o=P(i,2);{let e=O(()=>`Add `+I(t).title.toLowerCase());$C(o,{get label(){return I(e)},class:`budget-action-btn`,onclick:()=>X.openRateLimitFormFromInspector(I(t).scope,I(t).subject),children:(e,t)=>{var n=Zk();G(N(n),{name:`plus`,class:`table-icon-svg`}),Ue(2),z(e,n)},$$slots:{default:!0}})}T(r);var s=P(r,2),c=e=>{var n=Qk(),r=M(n,!0);T(n),F(()=>B(r,I(t).hint)),z(e,n)};V(s,e=>{I(t).hint&&e(c)});var l=P(s,2),u=e=>{z(e,$k())},d=e=>{var n=nA();H(n,21,()=>I(t).items,e=>X.rateLimitKey(e),(e,t)=>{var n=tA(),r=M(n),i=M(r),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s),l=M(c);{let e=O(()=>X.rateLimitIsConcurrent(I(t))?`activity`:`timer`);G(l,{get name(){return I(e)},class:`budget-period-icon`})}var u=P(l,2),d=M(u,!0);T(u),T(c),T(s);var f=P(s,2),p=M(f),m=M(p),h=M(m,!0);T(m);var g=P(m,2),_=M(g,!0);T(g),T(p);var v=P(p,2),y=M(v),b=e=>{$C(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>X.openRateLimitFormFromInspector(null,null,I(t)),children:(e,t)=>{var n=eA();G(N(n),{name:`pencil`,class:`budget-action-icon`}),Ue(2),z(e,n)},$$slots:{default:!0}})},x=O(()=>!X.rateLimitIsReadOnly(I(t)));V(y,e=>{I(x)&&e(b)}),T(v),T(f),T(i),T(r),T(n),F((e,t,r,i,a,s,c,l)=>{U(n,1,`budget-row ${e??``}`),Hi(n,t),W(n,`title`,r),B(o,i),B(d,a),B(h,s),W(g,`title`,c),B(_,l)},[()=>X.rateLimitPressureClass(I(t)),()=>X.rateLimitPressureStyle(I(t)),()=>X.rateLimitPressurePercent(I(t))+`% of the most constrained cap used`,()=>X.rateLimitSubject(I(t)),()=>X.rateLimitPeriodLabel(I(t)),()=>X.rateLimitInspectorSummary(I(t)),()=>X.rateLimitIsReadOnly(I(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>X.rateLimitSourceLabel(I(t))]),z(e,n)}),T(n),z(e,n)};V(l,e=>{I(t).items.length===0?e(u):e(d,-1)}),T(n),F(()=>B(a,I(t).title)),z(e,n)}),z(e,t)};V(c,e=>{X.rateLimitsLoading?e(l):X.rateLimitsAvailable?e(d,-1):e(u,1)});var f=P(c,2),p=M(f),m=P(p,2),h=e=>{var t=iA();L(`click`,t,()=>{X.closeRateLimitInspector(),Ha.navigate(`rate-limits`)}),z(e,t)},g=O(()=>X.rateLimitsEnabled());V(m,e=>{I(g)&&e(h)}),T(f),T(n),F(()=>B(s,X.rateLimitInspector.title)),L(`click`,p,()=>X.closeRateLimitInspector()),z(e,n)},$$slots:{default:!0}}),D()}Hr([`click`]);var sA=R(`
models
`),cA=R(`
Virtual models feature is unavailable.
`),lA=R(`
`),uA=R(``),dA=R(`
`),fA=R(``),pA=R(`
`),mA=R(`

No models registered.

`),hA=R(`

No models in this category.

`),gA=R(`

No models match your filter.

`),_A=R(`
`);function vA(e,t){E(t,!0),An(()=>{K.refreshTick,Ha.page===`models`&&(LD.fetchVirtualModels(),iO.fetchModelPricingOverrides(),Z.fetchFailoverRules(),X.fetchRateLimitsPage())}),An(()=>{let e=LD.filteredDisplayModels.length;return Er(()=>LD.restartModelRendering(e)),()=>LD.stopModelRendering()});let n=O(()=>K.needsAuth);var r=_A(),i=M(r),a=P(M(i),2),o=e=>{var t=sA(),n=M(t),r=M(n,!0);T(n),Ue(),T(t),F(()=>B(r,Es.filter?LD.filteredDisplayModels.length+` / `+LD.displayModels.length:LD.displayModels.length)),z(e,t)};V(a,e=>{LD.displayModels.length>0&&e(o)}),T(i);var s=P(i,2);Os(s,{});var c=P(s,2),l=e=>{z(e,cA())};V(c,e=>{!LD.virtualModelsAvailable&&!I(n)&&e(l)});var u=P(c,2),d=e=>{var t=lA(),n=M(t,!0);T(t),F(()=>B(n,LD.aliasError)),z(e,t)};V(u,e=>{LD.aliasError&&!I(n)&&e(d)});var f=P(u,2),p=e=>{var t=lA(),n=M(t,!0);T(t),F(()=>B(n,iO.modelPricingOverrideError)),z(e,t)};V(f,e=>{iO.modelPricingOverrideError&&!I(n)&&!iO.modelPricingOverrideFormOpen&&e(p)});var m=P(f,2),h=e=>{var t=dA();H(t,21,()=>Es.categories,e=>e.category,(e,t)=>{var n=uA();let r;var i=M(n),a=M(i,!0);T(i);var o=P(i,2),s=M(o,!0);T(o),T(n),F(()=>{r=U(n,1,`category-tab svelte-scpjps`,null,r,{active:Es.activeCategory===I(t).category}),B(a,I(t).display_name),B(s,I(t).count)}),L(`click`,n,()=>Es.selectCategory(I(t).category)),z(e,n)}),T(t),z(e,t)};V(m,e=>{Es.categories.length>0&&e(h)});var g=P(m,2),_=e=>{var t=pA(),n=M(t);nC(M(n),{placeholder:`Filter by provider, provider/model, alias, or owner...`,label:`Filter models by provider, provider/model, alias, or owner`,get value(){return Es.filter},set value(e){Es.filter=e}}),T(n);var r=P(n,2),i=M(r),a=e=>{var t=fA();G(M(t),{name:`plus`,class:`alias-create-icon`}),Ue(2),T(t),L(`click`,t,()=>LD.openVirtualModelCreate()),z(e,t)};V(i,e=>{LD.virtualModelsAvailable&&e(a)}),T(r),T(t),z(e,t)};V(g,e=>{(LD.displayModels.length>0||Es.filter||LD.virtualModelsAvailable)&&e(_)});var v=P(g,2),y=e=>{{let t=O(()=>LD.modelLoadingText());ZC(e,{get label(){return I(t)},class:`models-loading-state`})}},b=O(()=>LD.modelsBusy()&&!I(n));V(v,e=>{I(b)&&e(y)});var x=P(v,2);xk(x,{});var S=P(x,2);Mk(S,{});var C=P(S,2),w=e=>{tk(e,{})};V(C,e=>{(LD.displayModels.length>0||Es.filter)&&e(w)});var ee=P(C,2),te=e=>{z(e,mA())};V(ee,e=>{LD.displayModels.length===0&&!Es.loading&&!I(n)&&!Es.filter&&(Es.activeCategory===`all`||!Es.activeCategory)&&e(te)});var ne=P(ee,2),re=e=>{z(e,hA())};V(ne,e=>{LD.displayModels.length===0&&!Es.loading&&!I(n)&&!Es.filter&&Es.activeCategory&&Es.activeCategory!==`all`&&e(re)});var ie=P(ne,2),ae=e=>{z(e,gA())};V(ie,e=>{LD.displayModels.length>0&&LD.filteredDisplayModels.length===0&&Es.filter&&e(ae)});var oe=P(ie,2);oA(oe,{});var se=P(oe,2);vE(se,{});var ce=P(se,2);Bk(ce,{}),Yk(P(ce,2),{}),T(r),z(e,r),D()}Hr([`click`]);var yA=`draft-workflow-preview`;function bA(){return{scope_provider:``,scope_model:``,scope_user_path:``,name:``,description:``,features:{cache:!0,audit:!0,usage:!0,budget:!0,guardrails:!1,failover:!0},guardrails:[]}}function xA(){return{scope_provider:``,scope_model:``,scope_user_path:``}}function SA(e){return{ref:``,step:Number.isFinite(e)?e:10}}function CA(e){let t=e==null?``:String(e).trim();if(t===``)return NaN;let n=Number(t);return Number.isFinite(n)?n:NaN}function wA(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return n;let r=t.charAt(0).toUpperCase()+t.slice(1);for(let n of[t,r])if(Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==null&&e[n]!==void 0)return e[n];return n}function TA(e,t){return!e||typeof e!=`object`||Array.isArray(e)?!1:[t,t.charAt(0).toUpperCase()+t.slice(1)].some(t=>Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==null&&e[t]!==void 0)}function EA(e){return{cache:!!wA(e,`cache`,!1),audit:!!wA(e,`audit`,!1),usage:!!wA(e,`usage`,!1),budget:wA(e,`budget`,!0)!==!1,guardrails:!!wA(e,`guardrails`,!1),failover:wA(e,`failover`,!0)!==!1}}function DA(e,t){let n=EA(e),r=t||{},i=n.usage&&!!r.usage;return{cache:n.cache&&!!r.cache,audit:n.audit&&!!r.audit,usage:i,budget:i&&n.budget&&!!r.budget,guardrails:n.guardrails&&!!r.guardrails,failover:n.failover&&!!r.failover}}function OA(e,t){let n=e&&e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:e&&e.features?e.features:{};return{...DA((e&&e.effective_features&&typeof e.effective_features==`object`&&!Array.isArray(e.effective_features)?e.effective_features:null)||n,t),failover:EA(n).failover}}function kA(e,t){return OA(e,t).failover?`On`:`Off`}function AA(e){return(Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:Array.isArray(e&&e.guardrails)?e.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:CA(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0)}function jA(e,t){return OA(e,t).guardrails&&Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[]}function MA(e){return String(e&&(e.scope_provider_name||e.scope_provider)||``).trim()}function NA(e){return String(e&&(e.provider_name||e.provider_type)||``).trim()}function PA(e,t){let n=new Set,r=String(t&&t.scope_provider||``).trim();return r&&n.add(r),(Array.isArray(e)?e:[]).forEach(e=>{let t=NA(e);t&&n.add(t)}),[...n].sort()}function FA(e,t,n){let r=String(t||``).trim(),i=new Set,a=String(n&&n.scope_provider||``).trim(),o=String(n&&n.scope_model||``).trim();return r&&r===a&&o&&i.add(o),(Array.isArray(e)?e:[]).forEach(e=>{if(r&&NA(e)!==r)return;let t=String(e&&e.model&&e.model.id||``).trim();t&&i.add(t)}),[...i].sort()}function IA(e){let t=String(e&&e.scope_type||``).trim();return t===`provider_model`?`Provider Name + Model`:t===`provider_model_path`?`Provider Name + Model + Path`:t===`provider_path`?`Provider Name + Path`:t===`path`?`Path`:t===`provider`?`Provider Name`:`Global`}function LA(e){return String(e&&e.scope_display||`global`).trim()||`global`}function RA(e){let t=String(e&&e.name||``).trim();if(t)return t;let n=LA(e);return n===`global`?`All models`:n}function zA(e){let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function BA(e){if(zA(e))return``;let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function VA(e){let t=e||bA(),n=String(t.scope_provider||``).trim(),r=BA(t.scope_user_path);return{scope_provider:n,scope_model:n?String(t.scope_model||``).trim():``,scope_user_path:r}}function HA(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=BA(e&&e.scope_user_path);return!t&&!r?`global`:!t&&r?`path`:!n&&!r?`provider`:!n&&r?`provider_path`:r?`provider_model_path`:`provider_model`}function UA(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=BA(e&&e.scope_user_path),i=HA({scope_provider:t,scope_model:n,scope_user_path:r});return i===`global`?`global`:i===`path`?r:i===`provider`?t:i===`provider_path`?t+` @ `+r:i===`provider_model_path`?t+`/`+n+` @ `+r:t+`/`+n}function WA(e,t){let n=t||xA(),r=MA(e&&e.scope),i=r?String(e&&e.scope&&e.scope.scope_model||``).trim():``,a=BA(e&&e.scope&&e.scope.scope_user_path);return r===String(n.scope_provider||``).trim()&&i===String(n.scope_model||``).trim()&&a===BA(n.scope_user_path)}function GA(e,t,n){let r=VA(t);return!(r.scope_provider!==``||r.scope_model!==``||r.scope_user_path!==``)&&!n?null:(Array.isArray(e)?e:[]).find(e=>WA(e,r))||null}function KA(e){return String(e&&e.scope_type||``).trim()!==`global`}function qA(e){let t=String(e||``).trim();return t?t.length<=14?t:t.slice(0,12)+`…`:`—`}function JA(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.description,e.scope_display,e.scope_type,MA(e&&e.scope),e.scope&&e.scope.scope_model,e.scope&&e.scope.scope_user_path,e.workflow_hash,...Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>e.ref):[]].some(e=>String(e||``).toLowerCase().includes(r)))}function YA(e,t){let n=e||bA(),r=VA(n),i=EA(n.features||{}),a=DA(i,t);a.failover=i.failover;let o=!!a.guardrails,s=o?AA(n):[];return{id:yA,scope_type:HA(r),scope_display:UA(r),scope:{scope_provider_name:r.scope_provider,scope_model:r.scope_model,...r.scope_user_path?{scope_user_path:r.scope_user_path}:{}},name:String(n.name||``).trim(),description:String(n.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!a.cache,audit:!!a.audit,usage:!!a.usage,budget:!!a.budget,guardrails:o,failover:!!a.failover},guardrails:s}}}function XA({form:e,caps:t,workflows:n=[],formHydrated:r=!1,hydratedScope:i=null}){let a=e||bA(),o=String(a.scope_provider||``).trim(),s=o?String(a.scope_model||``).trim():``,c=BA(a.scope_user_path),l=EA(a.features||{}),u=DA(l,t),d=GA(n,a,r),f=d&&d.workflow_payload&&d.workflow_payload.features,p=TA(f,`failover`),m=p?wA(f,`failover`,!0)!==!1:null,h=i||xA(),g=String(h.scope_provider||``).trim()===o&&String(h.scope_model||``).trim()===s&&BA(h.scope_user_path)===BA(c),_=!!(t&&t.failover),v=_||!!r&&g&&Object.prototype.hasOwnProperty.call(l,`failover`)||!r&&!!d&&p,y=u.guardrails?(Array.isArray(a.guardrails)?a.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:CA(e&&e.step)})):[],b={scope_provider_name:o,scope_model:s,...c?{scope_user_path:c}:{},name:String(a.name||``).trim(),description:String(a.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!u.cache,audit:!!u.audit,usage:!!u.usage,budget:!!u.budget,guardrails:!!u.guardrails},guardrails:y}};return v&&(b.workflow_payload.features.failover=!_&&!r&&d&&p?m:!!l.failover),b}function ZA(e,{models:t=[],hydratedScope:n=null}={}){let r=n||xA(),i=String(r.scope_provider||``).trim(),a=String(r.scope_model||``).trim(),o=String(e&&(e.scope_provider_name||e.scope_provider)||``).trim(),s=String(e&&e.scope_model||``).trim();if(o&&!PA(t,r).includes(o)&&o!==i)return`Choose a registered provider name.`;if(s&&!o)return`Model selection requires a provider name.`;if(s){let e=FA(t,o,r),n=o===i&&s===a;if(!e.includes(s)&&!n)return`Choose a registered model for the selected provider name.`}let c=zA(e.scope_user_path);if(c)return c;let l=e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:{},u=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[];if(!l.guardrails)return``;let d=new Set;for(let e of u){if(!e.ref)return`Each guardrail step needs a guardrail ref.`;if(!Number.isInteger(e.step)||e.step<0)return`Each guardrail step must use a non-negative integer step number.`;if(d.has(e.ref))return`Each guardrail ref may appear only once in a workflow.`;d.add(e.ref)}return``}var QA=new class{#e=k(j([]));get workflows(){return I(this.#e)}set workflows(e){A(this.#e,e,!0)}#t=k(!0);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get error(){return I(this.#r)}set error(e){A(this.#r,e,!0)}#i=k(``);get filter(){return I(this.#i)}set filter(e){A(this.#i,e,!0)}#a=k(!1);get formOpen(){return I(this.#a)}set formOpen(e){A(this.#a,e,!0)}#o=k(!1);get submitting(){return I(this.#o)}set submitting(e){A(this.#o,e,!0)}#s=k(``);get deactivatingID(){return I(this.#s)}set deactivatingID(e){A(this.#s,e,!0)}#c=k(``);get formError(){return I(this.#c)}set formError(e){A(this.#c,e,!0)}#l=k(!1);get formHydrated(){return I(this.#l)}set formHydrated(e){A(this.#l,e,!0)}#u=k(j(xA()));get hydratedScope(){return I(this.#u)}set hydratedScope(e){A(this.#u,e,!0)}#d=k(j([]));get guardrailRefs(){return I(this.#d)}set guardrailRefs(e){A(this.#d,e,!0)}#f=k(j(bA()));get form(){return I(this.#f)}set form(e){A(this.#f,e,!0)}#p=null;failoverVisible(){return _o.booleanFlag(`FAILOVER_ENABLED`,!0)}featureCaps(){return{cache:_o.cacheVisible(),audit:_o.auditVisible(),usage:_o.usageVisible(),budget:_o.budgetsVisible(),guardrails:_o.guardrailsVisible(),failover:this.failoverVisible()}}get filteredWorkflows(){return JA(this.workflows,this.filter)}providerOptions(){return PA(Es.models,this.hydratedScope)}modelOptions(e){return FA(Es.models,e,this.hydratedScope)}activeScopeMatch(){return GA(this.workflows,this.form,this.formHydrated)}submitMode(){return this.activeScopeMatch()?`save`:`create`}submitLabel(){return this.submitMode()===`save`?`Save`:`Create`}submittingLabel(){return this.submitMode()===`save`?`Saving...`:`Creating...`}preview(){return YA(this.form,this.featureCaps())}openCreate(e){if(this.formOpen=!0,this.submitting=!1,this.formError=``,!e){this.formHydrated=!1,this.hydratedScope=xA(),this.form=bA();return}this.formHydrated=!0,this.hydratedScope={scope_provider:MA(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``).trim(),scope_user_path:String(e.scope&&e.scope.scope_user_path||``).trim()};let t=e.workflow_payload&&e.workflow_payload.features?EA(e.workflow_payload.features):OA(e,this.featureCaps()),n=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>({ref:String(e&&e.ref||``).trim(),step:CA(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0):AA(e);this.form={scope_provider:MA(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``),scope_user_path:String(e.scope&&e.scope.scope_user_path||``),name:String(e.name||``),description:String(e.description||``),features:{cache:!!t.cache,audit:!!t.audit,usage:!!t.usage,budget:!!t.budget,guardrails:!!t.guardrails,failover:!!t.failover},guardrails:n.map(e=>({ref:String(e&&e.ref||``),step:Number.isFinite(e&&e.step)?e.step:10}))}}closeForm(){this.formOpen=!1,this.submitting=!1,this.formError=``,this.formHydrated=!1,this.hydratedScope=xA(),this.form=bA()}setProvider(e){if(this.form.scope_provider=String(e||``).trim(),!this.form.scope_provider){this.form.scope_model=``;return}this.modelOptions(this.form.scope_provider).includes(String(this.form.scope_model||``).trim())||(this.form.scope_model=``)}addGuardrailStep(){let e=(Array.isArray(this.form.guardrails)?this.form.guardrails:[]).reduce((e,t)=>{let n=Number(t&&t.step);return Number.isFinite(n)?Math.max(e,n):e},0)+10;this.form.guardrails.push(SA(e))}removeGuardrailStep(e){Array.isArray(this.form.guardrails)&&this.form.guardrails.splice(e,1)}buildRequest(){return XA({form:this.form,caps:this.featureCaps(),workflows:this.workflows,formHydrated:this.formHydrated,hydratedScope:this.hydratedScope})}async fetchWorkflows(){this.#p&&this.#p.abort();let e=new AbortController;this.#p=e,this.loading=!0,this.error=``;let t=setTimeout(()=>e.abort(),1e4),n=await ew(`/admin/workflows`,{label:`workflows`,options:{signal:e.signal}});if(clearTimeout(t),this.#p===e&&(this.#p=null,this.loading=!1,n.status!==`stale`)){if(n.status===`unavailable`){this.available=!1,this.workflows=[];return}if(n.result&&(this.available=!0),n.status===`error`){this.workflows=[],this.error=e.signal.aborted?`Loading workflows timed out.`:n.error;return}this.workflows=n.items}}async fetchGuardrailRefs(){let e=await ew(`/admin/workflows/guardrails`,{label:`workflow guardrails`});e.status!==`stale`&&(this.guardrailRefs=e.items)}async fetchPage(){await Promise.all([_o.ensureLoaded(),this.fetchWorkflows(),this.fetchGuardrailRefs()])}async submitForm(){if(this.submitting)return;this.formError=``;let e=this.buildRequest(),t=ZA(e,{models:Es.models,hydratedScope:this.hydratedScope});if(t){this.formError=t;return}this.submitting=!0;try{let t=await tw(`/admin/workflows`,`POST`,e,{label:`create workflow`,unavailableStatuses:[]});if(t.status===`stale`||t.result&&t.result.status===401)return;if(t.status===`error`){this.formError=t.error;return}q.success(`Workflow created and activated.`),this.closeForm(),this.fetchPage()}finally{this.submitting=!1}}async deactivate(e){let t=String(e&&e.id||``).trim();if(!t||this.deactivatingID||!KA(e))return;let n=RA(e);if(confirm(`Deactivate workflow "`+n+`"? Requests will fall back to the next active workflow for this scope.`)){this.deactivatingID=t;try{let e=await tw(`/admin/workflows/`+encodeURIComponent(t)+`/deactivate`,`POST`,void 0,{label:`deactivate workflow`,unavailableStatuses:[]});if(e.status===`stale`||e.result&&e.result.status===401)return;if(e.status===`error`){q.error(e.error);return}q.success(`Workflow deactivated.`),this.fetchPage()}finally{this.deactivatingID=``}}}};function $A(e){let t=String(e??``),n=typeof navigator<`u`?navigator.clipboard:null;if(n&&typeof n.writeText==`function`)return n.writeText(t);let r=typeof document<`u`?document:null;if(!r||!r.body||typeof r.execCommand!=`function`)return Promise.reject(Error(`Clipboard API unavailable`));let i=r.createElement(`textarea`);i.value=t,i.setAttribute(`readonly`,``),i.style.position=`fixed`,i.style.top=`0`,i.style.left=`0`,i.style.opacity=`0`;try{if(r.body.appendChild(i),i.focus(),i.select(),i.setSelectionRange(0,i.value.length),!r.execCommand(`copy`))throw Error(`execCommand copy returned false`)}finally{i.parentNode&&i.parentNode.removeChild(i)}return Promise.resolve()}function ej({resetDelayMs:e=2e3,logPrefix:t}={}){let n=j({copied:!1,error:!1}),r=null;function i(){r!==null&&clearTimeout(r),r=null}function a(){i(),r=setTimeout(()=>{n.copied=!1,n.error=!1,r=null},e)}return{get copied(){return n.copied},get error(){return n.error},reset(){i(),n.copied=!1,n.error=!1},async copy(e,r){if(!(e==null||e===``)){i(),n.copied=!1,n.error=!1;try{await $A(typeof r==`function`?r(e):String(e)),n.copied=!0,n.error=!1}catch(e){console.error(t||`Failed to copy text:`,e),n.copied=!1,n.error=!0}a()}}}}var tj=R(``);function nj(e,t){E(t,!0);let n=ya(t,`workflowID`,3,``),r=ej({logPrefix:`Failed to copy workflow ID:`});An(()=>{n(),r.reset()});let i=O(()=>r.error?`Unable to copy workflow ID`:r.copied?`Workflow ID copied`:`Copy workflow ID`),a=O(()=>n()?I(i)+` `+n():I(i));async function o(e){e.preventDefault(),n()&&await r.copy(n())}var s=tj();let c;var l=P(M(s),4),u=M(l,!0);T(l);var d=P(l,2);G(M(d),{name:`copy`}),T(d),T(s),F(()=>{c=U(s,1,`workflow-pipeline-meta mono svelte-1viff7o`,null,c,{"workflow-pipeline-meta-copied":r.copied,"workflow-pipeline-meta-error":r.error}),W(s,`title`,I(i)),W(s,`aria-label`,I(a)),B(u,n())}),L(`click`,s,o),z(e,s),D()}Hr([`click`]);var rj=(e,t)=>{let n=()=>(t?.()).icon,r=()=>(t?.()).label,i=Ot(()=>h((t?.()).variant,`workflow-node-feature`)),a=()=>(t?.()).state,o=()=>(t?.()).sub,s=()=>(t?.()).badge;var c=sj(),l=M(c),u=e=>{var t=ij();let r;G(M(t),{get name(){return n()}}),T(t),F(()=>r=U(t,1,`workflow-node-icon svelte-nbptrg`,null,r,{"workflow-node-icon-endpoint":I(i)===`workflow-node-endpoint`})),z(e,t)};V(l,e=>{n()&&e(u)});var d=P(l,2),f=M(d,!0);T(d);var p=P(d,2),m=e=>{var t=aj(),n=M(t,!0);T(t),F(()=>B(n,s())),z(e,t)};V(p,e=>{s()&&e(m)});var g=P(p,2),_=e=>{var t=oj(),n=M(t,!0);T(t),F(()=>B(n,o())),z(e,t)};V(g,e=>{o()&&e(_)}),T(c),F(()=>{U(c,1,Fi([`workflow-node`,I(i),a()]),`svelte-nbptrg`),B(f,r())}),z(e,c)},ij=R(`
`),aj=R(` `),oj=R(` `),sj=R(`
`),cj=R(`
`,1),lj=R(`
`,1),uj=R(`
`),dj=R(`
Async
`),fj=R(`
`);function pj(e,t){E(t,!0);let n=ya(t,`chart`,19,()=>({}));var r=fj();let i;var a=M(r),o=e=>{nj(e,{get workflowID(){return n().workflowID}})};V(a,e=>{n().workflowID&&e(o)});var s=P(a,2),c=M(s);rj(c,()=>({icon:`user`,label:`Client`,variant:`workflow-node-endpoint`}));var l=P(c,4);rj(l,()=>({icon:`database`,label:`Auth`,state:n().authNodeClass,sub:n().authNodeSublabel}));var u=P(l,2),d=e=>{var t=cj(),r=N(t);rj(P(r,2),()=>({icon:`database`,label:`Cache`,state:n().cacheNodeClass,badge:n().cacheStatusLabel})),F(()=>U(r,1,Fi([`workflow-conn`,n().cacheConnClass]),`svelte-nbptrg`)),z(e,t)};V(u,e=>{n().showCache&&e(d)});var f=P(u,2),p=e=>{var t=lj();rj(P(N(t),2),()=>({icon:`wallet`,label:`Budget`,state:n().budgetNodeClass,badge:n().budgetStatusLabel})),z(e,t)};V(f,e=>{n().showBudget&&e(p)});var m=P(f,2),h=e=>{var t=lj();rj(P(N(t),2),()=>({icon:`shield`,label:`Guardrails`,sub:n().guardrailLabel})),z(e,t)};V(m,e=>{n().showGuardrails&&e(h)});var g=P(m,2),_=P(g,2);rj(_,()=>({label:n().aiLabel,variant:`workflow-node-ai`,state:n().aiNodeClass,sub:n().aiSublabel}));var v=P(_,2),y=e=>{var t=cj(),r=N(t);rj(P(r,2),()=>({icon:`maximize-2`,label:`Failover`,state:n().failoverNodeClass,badge:n().failoverStatusLabel,sub:n().failoverTargetLabel})),F(()=>U(r,1,Fi([`workflow-conn`,n().failoverConnClass]),`svelte-nbptrg`)),z(e,t)};V(v,e=>{n().showFailover&&e(y)});var b=P(v,2);rj(P(b,2),()=>({icon:`circle-check-big`,label:`Response`,variant:`workflow-node-endpoint`,state:n().responseNodeClass,sub:n().responseNodeSublabel})),T(s);var x=P(s,2),S=e=>{var t=dj(),r=M(t),i=M(r),a=e=>{rj(e,()=>({icon:`chart-column-increasing`,label:`Usage`,variant:`workflow-node-feature workflow-node-async`,state:n().usageNodeClass}))};V(i,e=>{n().showUsage&&e(a)});var o=P(i,2),s=e=>{z(e,uj())};V(o,e=>{n().showUsage&&n().showAudit&&e(s)});var c=P(o,2),l=e=>{rj(e,()=>({icon:`file-text`,label:`Audit Log`,variant:`workflow-node-feature workflow-node-async`,state:n().auditNodeClass}))};V(c,e=>{n().showAudit&&e(l)}),T(r),Ue(4),T(t),z(e,t)};V(x,e=>{n().showAsync&&e(S)}),T(r),F(()=>{i=U(r,1,`workflow-pipeline svelte-nbptrg`,null,i,{"workflow-pipeline-has-meta":n().workflowID}),U(g,1,Fi([`workflow-conn`,n().aiConnClass]),`svelte-nbptrg`),U(b,1,Fi([`workflow-conn`,n().responseConnClass]),`svelte-nbptrg`)}),z(e,r),D()}function mj(e){let t=AA(e).length;return t===0?``:t===1?`1 step`:t+` steps`}function hj(e,t){return t&&t.provider?t.provider:MA(e&&e.scope)||`AI`}function gj(e,t){return t&&t.model?t.model:e&&e.scope&&e.scope.scope_model||null}function _j(e,t){let n=String(e&&e.id||``).trim();if(n&&n!==`draft-workflow-preview`)return n;let r=String(t&&t.workflow_version_id||``).trim();return r&&r!==`draft-workflow-preview`?r:null}function vj(e){let t=e&&e.data&&e.data.workflow_features;return!t||typeof t!=`object`||Array.isArray(t)?null:EA(t)}function yj(e){let t=e&&e.data&&e.data.failover;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=String(t.target_model||t.targetModel||``).trim()||null;return n?{targetModel:n}:null}function bj(e,t=0){if(t>4||e==null)return``;if(typeof e==`string`){let n=e.trim();if(!n||n[0]!==`{`&&n[0]!==`[`)return``;try{return bj(JSON.parse(n),t+1)}catch{return``}}if(Array.isArray(e)){for(let n of e){let e=bj(n,t+1);if(e)return e}return``}return typeof e==`object`?String(e.code||``).trim()||(e.error===void 0?``:bj(e.error,t+1)):``}function xj(e){let t=e&&e.data&&typeof e.data==`object`&&!Array.isArray(e.data)?e.data:{};return String(t.error_code||t.errorCode||``).trim()||bj(t.response_body)}function Sj(e){let t=String(e||``).trim();if(!t)return null;let n=t.indexOf(`/`);return n<=0||n>=t.length-1?null:{provider:t.slice(0,n),model:t.slice(n+1)}}function Cj(e,t){let n=String(e&&(e.requested_model||e.model)||``).trim(),r=yj(e);if(!(r&&r.targetModel))return{provider:String(e&&e.provider||``).trim()||null,model:n||null};let i=Sj(n);if(i)return i;let a=MA(t&&t.scope),o=a?String(t&&t.scope&&t.scope.scope_model||``).trim():``;return a||o?{provider:a||null,model:o||n||null}:{provider:null,model:n||null}}function wj(e,t){if(!e)return null;let n=(()=>{let t=String(e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`?t:null})(),r=(()=>{if(e.status_code===void 0||e.status_code===null)return null;let t=String(e.status_code).trim();if(!t)return null;let n=Number(t);return Number.isFinite(n)?n:null})(),i=n?!0:e.cache_hit!==void 0&&e.cache_hit!==null&&!!e.cache_hit,a=yj(e),o=Cj(e,t),s=Number.isFinite(r)&&r>=200&&r<300,c=String(e.error_type||``).trim().toLowerCase()===`authentication_error`,l=String(e.auth_method||``).trim().toLowerCase()||null,u=xj(e).toLowerCase()===`budget_exceeded`;return{cacheHit:i,cacheType:n||null,failoverTarget:a&&a.targetModel?a.targetModel:null,provider:o.provider,model:o.model,statusCode:r,responseSuccess:s,aiSuccess:s&&!i,authError:c,authMethod:l,budgetExceeded:u}}function Tj(e){return!!(e&&e.cacheHit)}function Ej(e){return!!(e&&e.failoverTarget)}function Dj(e){return!!(e&&e.budgetExceeded)}function Oj(e,t){return t?`workflow-node-current`:e&&e.cacheHit?`workflow-node-success`:``}function kj(e){return e&&e.cacheHit?`workflow-conn-hit`:``}function Aj(e){return!e||!e.cacheHit?null:e.cacheType===`semantic`?`Hit (Semantic)`:`Hit (Exact)`}function jj(e,t,n,r){return e?Dj(t)?`workflow-node-error`:r?`workflow-node-current`:n?`workflow-node-success`:``:``}function Mj(e){return Dj(e)?`Exceeded`:null}function Nj(e){return e&&e.cacheHit?`workflow-node-skipped`:e&&e.failoverTarget?`workflow-node-success`:``}function Pj(e){return e&&e.cacheHit?`workflow-conn-dim`:e&&e.failoverTarget?`workflow-conn-hit`:``}function Fj(e){return e&&e.failoverTarget?`Redirected`:null}function Ij(e){return e&&e.failoverTarget?e.failoverTarget:null}function Lj(e){return e&&e.cacheHit?`workflow-conn-dim`:``}function Rj(e,t){return e?e.cacheHit?`workflow-node-skipped`:t?`workflow-node-current`:e.aiSuccess?`workflow-node-success`:``:``}function zj(e,t){if(!e)return``;let n=e.statusCode;return!Number.isFinite(n)&&t?`workflow-node-current`:Number.isFinite(n)?n>=500?`workflow-node-error`:n>=400?`workflow-node-warning`:n>=300?`workflow-node-neutral`:n>=200?`workflow-node-success`:``:``}function Bj(e){return!e||!Number.isFinite(e.statusCode)?null:String(e.statusCode)}function Vj(e,t){return e?e.authError?`workflow-node-error`:t?`workflow-node-current`:e.authMethod===`api_key`||e.authMethod===`master_key`?`workflow-node-success`:``:``}function Hj(e){return!e||!e.authMethod?null:e.authMethod}function Uj(e,t,n){return e?n?`workflow-node-current`:t?`workflow-node-success`:``:``}function Wj(e,t){if(!e||!e._live)return!!t;let n=String(e._live_state||``).trim();return!!e._audit_flushed||n===`audit.flushed`||n===`audit.detail`}function Gj(e,t){if(!e)return!!t;let n=e.usage||{},r=Number(n.entries||0)>0;if(!e._live)return r;let i=String(e._usage_live_state||``).trim();return e._usage_flushed||i===`usage.flushed`?!0:!e._usage_live_pending&&r&&!e._live_pending}function Kj(e){return!!(e&&e._live&&e._usage_live_pending&&!e._usage_flushed)}function qj(e,t){return!e||!e._live||Wj(e,!1)?!1:String(e._live_state||``).trim()===`audit.completed`||!!(t&&Number.isFinite(t.statusCode))}function Jj(e,t,n){return!e||!e._live?``:Kj(e)?`usage`:qj(e,t)?`audit`:Wj(e,!1)&&!e._live_pending?``:t&&t.cacheHit?`cache`:t&&(t.provider||t.model)?`ai`:n&&n.budget&&(e.workflow_version_id||e.requested_model)?`budget`:t&&t.authMethod?``:`auth`}function Yj(e,t,n,r){let i=n||{},a=i.features&&typeof i.features==`object`&&!Array.isArray(i.features)?EA(i.features):OA(e,r),o=!!i.forceAudit,s=!!i.highlightAsyncPresent,c=!!a.budget||Dj(t),l=!!a.guardrails,u=!!a.usage,d=o||!!a.audit,f=!!i.forceAsync||!!(u||d),p=!!a.failover||Ej(t),m=_j(e,i.entry),h=Jj(i.entry,t,a),g=Kj(i.entry),_=qj(i.entry,t),v=Wj(i.entry,s),y=Gj(i.entry,s);return{showBudget:c,budgetNodeClass:jj(c,t,s,h===`budget`),budgetStatusLabel:Mj(t),showGuardrails:l,guardrailLabel:l?mj(e):``,showCache:!!i.forceCache||!!a.cache||Tj(t),cacheNodeClass:Oj(t,h===`cache`),cacheConnClass:kj(t),cacheStatusLabel:Aj(t),showFailover:p,failoverNodeClass:p?Nj(t):``,failoverConnClass:p?Pj(t):``,failoverStatusLabel:p?Fj(t):null,failoverTargetLabel:p?Ij(t):null,aiLabel:hj(e,t),aiSublabel:gj(e,t),aiConnClass:Lj(t),aiNodeClass:Rj(t,h===`ai`),responseConnClass:Lj(t),responseNodeClass:zj(t,h===`response`),responseNodeSublabel:Bj(t),authNodeClass:Vj(t,h===`auth`),authNodeSublabel:Hj(t),usageNodeClass:Uj(u,y,g),auditNodeClass:Uj(d,v,_),showAsync:f,showUsage:u,showAudit:d,workflowID:m}}function Xj(e,t){return Yj(e,null,{forceCache:!1},t)}function Zj(e,t,n){return Yj(t,wj(e,t),{entry:e,features:vj(e)||(t?OA(t,n):{cache:!1,audit:!1,usage:!1,budget:!1,guardrails:!1,failover:!1}),forceAudit:!0,forceAsync:!0,highlightAsyncPresent:!0},n)}var Qj=R(`

`),$j=R(`

`),eM=R(`
`),tM=R(`
`),nM=R(`

No guardrails configured for this workflow.

`),rM=R(`

Guardrails

`),iM=R(``),aM=R(`

`);function oM(e,t){E(t,!0);let n=ya(t,`preview`,3,!1),r=O(()=>QA.featureCaps()),i=O(()=>RA(t.workflow)),a=O(()=>jA(t.workflow,I(r))),o=O(()=>Xj(t.workflow,I(r))),s=O(()=>n()?`draft-workflow-preview-guardrail-`:t.workflow.id+`-guardrail-`);var c=aM();let l;var u=M(c),d=M(u),f=M(d),p=M(f,!0);T(f);var m=P(f,2),h=M(m,!0);T(m),T(d);var g=P(d,2),_=M(g),v=M(_,!0);T(_),T(g),T(u);var y=P(u,2),b=e=>{var n=Qj(),r=M(n,!0);T(n),F(()=>B(r,t.workflow.description)),z(e,n)};V(y,e=>{t.workflow.description&&e(b)});var x=P(y,2),S=e=>{var n=$j(),i=M(n);T(n),F(e=>B(i,`Failover: ${e??``}`),[()=>kA(t.workflow,I(r))]),z(e,n)},C=O(()=>QA.failoverVisible());V(x,e=>{I(C)&&e(S)});var w=P(x,2);pj(w,{get chart(){return I(o)}});var ee=P(w,2),te=e=>{var t=rM(),n=M(t),r=P(M(n),2),i=M(r,!0);T(r),T(n);var o=P(n,2),c=e=>{var t=tM();H(t,23,()=>I(a),(e,t)=>I(s)+t,(e,t)=>{var n=eM(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=M(a);T(a),T(n),F(()=>{B(i,I(t).ref),B(o,`step ${I(t).step??``}`)}),z(e,n)}),T(t),z(e,t)},l=e=>{z(e,nM())};V(o,e=>{I(a).length>0?e(c):e(l,-1)}),T(t),F(()=>B(i,I(a).length?I(a).length+` steps`:`None`)),z(e,t)},ne=O(()=>_o.guardrailsVisible());V(ee,e=>{I(ne)&&e(te)});var re=P(ee,2),ie=e=>{var n=iM(),r=M(n),a=M(r),o=M(a,!0);T(a);var s=P(a,2);{let e=O(()=>`Edit workflow `+I(i));$C(s,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>QA.openCreate(t.workflow),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}T(r);var c=P(r,2),l=M(c),u=M(l);T(l);var d=P(l,2),f=M(d);T(d);var p=P(d,2),m=M(p);T(p),T(c),T(n),F((e,n,r,s)=>{a.disabled=e,W(a,`aria-label`,`Deactivate workflow `+I(i)),W(a,`title`,n),B(o,QA.deactivatingID===t.workflow.id?`Deactivating...`:`Deactivate`),B(u,`version: v${t.workflow.version??``}`),B(f,`created: ${r??``}`),B(m,`hash: ${s??``}`)},[()=>QA.deactivatingID===t.workflow.id||!KA(t.workflow),()=>KA(t.workflow)?`Deactivate active workflow`:`The global workflow cannot be deactivated.`,()=>ao.formatTimestamp(t.workflow.created_at),()=>qA(t.workflow.workflow_hash)]),L(`click`,a,()=>QA.deactivate(t.workflow)),z(e,n)};V(re,e=>{n()||e(ie)}),T(c),F((e,t)=>{l=U(c,1,`workflow-card svelte-1fo9fvq`,null,l,{"workflow-preview-card":n()}),B(p,e),B(h,I(i)),B(v,t)},[()=>IA(t.workflow),()=>LA(t.workflow)]),z(e,c),D()}Hr([`click`]);var sM=R(`

`),cM=R(``),lM=R(``),uM=R(``),dM=R(``),fM=R(``),pM=R(``),mM=R(``),hM=R(``),gM=R(``),_M=R(``),vM=R(``),yM=R(``),bM=R(`
No named guardrails are currently registered on this deployment. You can still draft a workflow, but guardrail-backed creation may be rejected.
`),xM=R(`
`),SM=R(`
`),CM=R(`

No guardrail steps configured yet.

`),wM=R(`

Guardrail Steps

Guardrails in the same numeric step run together. Later steps wait for earlier ones to finish.

`),TM=R(`

Leave provider name empty to target all providers and models. Select a provider name without a model to target all models for that configured provider.

Add a path to scope the workflow to that subtree. Leading slashes are optional and will be normalized; you can enter "team/alpha" or "/team/alpha". Matching checks the deepest user path first, then falls back toward the root.

If you leave the name empty, the workflow will display as the matched provider/model scope or “All models”.

Preview

Live
`,1);function EM(e,t){E(t,!0);{let t=e=>{Rx(e,{copyId:`workflow-help-copy`,label:`workflow help`,text:`Create immutable version. Submitting activates it for the selected scope.`,title:e=>{var t=sM(),n=M(t,!0);T(t),F(e=>B(n,e),[()=>QA.submitMode()===`save`?`Edit Workflow`:`Create Workflow`]),z(e,t)},$$slots:{title:!0}})},n=O(()=>QA.submitLabel()),r=O(()=>QA.submittingLabel()),i=O(()=>QA.submitMode()===`create`?`plus`:`save`);rT(e,{get open(){return QA.formOpen},ariaLabel:`Workflow editor`,get error(){return QA.formError},get submitting(){return QA.submitting},get submitLabel(){return I(n)},get submittingLabel(){return I(r)},get submitIcon(){return I(i)},dialogClass:`workflow-editor`,onclose:()=>QA.closeForm(),onsubmit:()=>QA.submitForm(),header:t,children:(e,t)=>{var n=TM(),r=N(n),i=M(r);aT(i,{id:`workflow-scope-provider`,label:`Provider Name`,children:(e,t)=>{var n=lM(),r=M(n);r.value=r.__value=``,H(P(r),16,()=>QA.providerOptions(),e=>e,(e,t)=>{var n=cM(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(n),L(`change`,n,e=>QA.setProvider(e.currentTarget.value)),Gi(n,()=>QA.form.scope_provider,e=>QA.form.scope_provider=e),z(e,n)},$$slots:{default:!0}});var a=P(i,2),o=e=>{aT(e,{id:`workflow-scope-model`,label:`Model`,children:(e,t)=>{var n=uM(),r=M(n);r.value=r.__value=``,H(P(r),17,()=>QA.modelOptions(QA.form.scope_provider),e=>QA.form.scope_provider+`-`+e,(e,t)=>{var n=cM(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t)),i!==(i=I(t))&&(n.value=(n.__value=I(t))??``)}),z(e,n)}),T(n),Gi(n,()=>QA.form.scope_model,e=>QA.form.scope_model=e),z(e,n)},$$slots:{default:!0}})};V(a,e=>{QA.form.scope_provider&&e(o)});var s=P(a,2);aT(s,{id:`workflow-name`,label:`Name`,children:(e,t)=>{var n=dM();na(n),da(n,()=>QA.form.name,e=>QA.form.name=e),z(e,n)},$$slots:{default:!0}}),aT(P(s,2),{id:`workflow-user-path`,label:`User Path`,children:(e,t)=>{var n=fM();na(n),da(n,()=>QA.form.scope_user_path,e=>QA.form.scope_user_path=e),z(e,n)},$$slots:{default:!0}}),T(r);var c=P(r,8);aT(c,{id:`workflow-description`,label:`Description`,children:(e,t)=>{var n=pM();ft(n),da(n,()=>QA.form.description,e=>QA.form.description=e),z(e,n)},$$slots:{default:!0}});var l=P(c,2),u=M(l),d=e=>{var t=mM(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>QA.form.features.cache,e=>QA.form.features.cache=e),z(e,t)},f=O(()=>_o.cacheVisible());V(u,e=>{I(f)&&e(d)});var p=P(u,2),m=e=>{var t=hM(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>QA.form.features.audit,e=>QA.form.features.audit=e),z(e,t)},h=O(()=>_o.auditVisible());V(p,e=>{I(h)&&e(m)});var g=P(p,2),_=e=>{var t=gM(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>QA.form.features.usage,e=>QA.form.features.usage=e),z(e,t)},v=O(()=>_o.usageVisible());V(g,e=>{I(v)&&e(_)});var y=P(g,2),b=e=>{var t=_M(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>QA.form.features.budget,e=>QA.form.features.budget=e),z(e,t)},x=O(()=>_o.budgetsVisible());V(y,e=>{I(x)&&e(b)});var S=P(y,2),C=e=>{var t=vM(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>QA.form.features.guardrails,e=>QA.form.features.guardrails=e),z(e,t)},w=O(()=>_o.guardrailsVisible());V(S,e=>{I(w)&&e(C)});var ee=P(S,2),te=e=>{var t=yM(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>QA.form.features.failover,e=>QA.form.features.failover=e),z(e,t)},ne=O(()=>QA.failoverVisible());V(ee,e=>{I(ne)&&e(te)}),T(l);var re=P(l,2),ie=P(M(re),2);{let e=O(()=>QA.preview());oM(ie,{get workflow(){return I(e)},preview:!0})}T(re);var ae=P(re,2),oe=e=>{var t=wM(),n=M(t),r=P(M(n),2);T(n);var i=P(n,2),a=e=>{var t=bM(),n=P(M(t),2);T(t),L(`click`,n,()=>Ha.navigate(`guardrails`)),z(e,t)};V(i,e=>{QA.guardrailRefs.length===0&&e(a)});var o=P(i,2),s=e=>{var t=SM();H(t,21,()=>QA.form.guardrails,oi,(e,t,n)=>{var r=xM(),i=M(r),a=M(i);W(a,`for`,`workflow-guardrail-ref-`+n);var o=P(a,2);na(o),W(o,`id`,`workflow-guardrail-ref-`+n),W(o,`aria-label`,`Guardrail reference `+(n+1)),T(i);var s=P(i,2),c=M(s);W(c,`for`,`workflow-guardrail-step-`+n);var l=P(c,2);na(l),W(l,`id`,`workflow-guardrail-step-`+n),W(l,`aria-label`,`Guardrail step `+(n+1)),T(s);var u=P(s,2);T(r),da(o,()=>I(t).ref,e=>I(t).ref=e),da(l,()=>I(t).step,e=>I(t).step=e),L(`click`,u,()=>QA.removeGuardrailStep(n)),z(e,r)}),T(t),z(e,t)},c=e=>{z(e,CM())};V(o,e=>{QA.form.guardrails.length>0?e(s):e(c,-1)}),T(t),L(`click`,r,()=>QA.addGuardrailStep()),z(e,t)},se=O(()=>QA.form.features.guardrails&&_o.guardrailsVisible());V(ae,e=>{I(se)&&e(oe)}),z(e,n)},$$slots:{header:!0,default:!0}})}D()}Hr([`change`,`click`]);var DM=R(`

Loading workflows...

`),OM=R(`
`),kM=R(`

No active workflows found.

`),AM=R(`

No workflows match your filter.

`),jM=R(`
`);function MM(e,t){E(t,!0);var n=jM(),r=M(n),i=e=>{var t=DM();px(M(t),{size:16,label:`Loading workflows`}),Ue(),T(t),z(e,t)};V(r,e=>{QA.loading&&!K.authError&&e(i)});var a=P(r,2),o=e=>{var t=OM();H(t,21,()=>QA.filteredWorkflows,e=>e.id,(e,t)=>{oM(e,{get workflow(){return I(t)}})}),T(t),z(e,t)};V(a,e=>{QA.filteredWorkflows.length>0&&e(o)});var s=P(a,2),c=e=>{z(e,kM())};V(s,e=>{QA.workflows.length===0&&!QA.loading&&!K.authError&&QA.available&&e(c)});var l=P(s,2),u=e=>{z(e,AM())};V(l,e=>{QA.workflows.length>0&&QA.filteredWorkflows.length===0&&!QA.loading&&e(u)}),T(n),z(e,n),D()}var NM=R(``),PM=R(`
Workflows feature is unavailable.
`),FM=R(`
`),IM=R(`
`),LM=R(``),RM=R(`
`);function zM(e,t){E(t,!0),An(()=>{K.refreshTick,QA.fetchPage()});var n=RM(),r=M(n),i=P(M(r),2),a=M(i),o=e=>{var t=NM();G(M(t),{name:`plus`,class:`form-action-icon`,"aria-hidden":`true`}),Ue(2),T(t),L(`click`,t,()=>QA.openCreate()),z(e,t)};V(a,e=>{QA.available&&e(o)}),T(i),T(r);var s=P(r,2),c=e=>{z(e,PM())};V(s,e=>{!QA.available&&!K.authError&&e(c)});var l=P(s,2),u=e=>{var t=FM(),n=M(t,!0);T(t),F(()=>B(n,QA.error)),z(e,t)};V(l,e=>{QA.error&&!K.authError&&e(u)});var d=P(l,2),f=e=>{var t=IM(),n=M(t);nC(M(n),{placeholder:`Filter by scope, name, hash, or guardrail...`,label:`Filter workflows by scope, name, hash, or guardrail`,get value(){return QA.filter},set value(e){QA.filter=e}}),T(n);var r=P(n,2),i=M(r),a=M(i,!0);T(i),T(r),T(t),F(()=>B(a,QA.filteredWorkflows.length+` active scopes`)),z(e,t)};V(d,e=>{QA.available&&e(f)});var p=P(d,2);EM(p,{});var m=P(p,2);MM(m,{});var h=P(m,2);H(h,20,()=>QA.guardrailRefs,e=>e,(e,t)=>{var n=LM(),r={};F(()=>{r!==(r=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(h),T(n),z(e,n),D()}Hr([`click`]);function BM(e,{from:t,to:n},r={}){var{delay:i=0,duration:a=e=>Math.sqrt(e)*120,easing:o=Uo}=r,s=getComputedStyle(e),c=s.transform===`none`?``:s.transform,[l,u]=s.transformOrigin.split(` `).map(parseFloat);l/=e.clientWidth,u/=e.clientHeight;var d=VM(e),f=e.clientWidth/n.width/d,p=e.clientHeight/n.height/d,m=t.left+t.width*l,h=t.top+t.height*u,g=n.left+n.width*l,_=n.top+n.height*u,v=(m-g)*f,y=(h-_)*p,b=t.width/n.width,x=t.height/n.height;return{delay:i,duration:typeof a==`function`?a(Math.sqrt(v*v+y*y)):a,easing:o,css:(e,t)=>`transform: ${c} translate(${t*v}px, ${t*y}px) scale(${e+t*b}, ${e+t*x});`}}function VM(e){if(`currentCSSZoom`in e)return e.currentCSSZoom;for(var t=e,n=1;t!==null;)n*=+getComputedStyle(t).zoom,t=t.parentElement;return n}var HM=null;function UM(){return HM===null&&(HM=typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`)),!!(HM&&HM.matches)}function WM(e){return UM()?0:e}function GM(e,t){return!t||!t.live?{duration:0}:Vo(e,{duration:WM(150)})}var KM=new class{#e=k(j({}));get workflowVersionsByID(){return I(this.#e)}set workflowVersionsByID(e){A(this.#e,e,!0)}workflowVersionRequests={};workflowFeatureCaps(){return{cache:_o.cacheVisible(),audit:_o.auditVisible(),usage:_o.usageVisible(),budget:_o.budgetsVisible(),guardrails:_o.guardrailsVisible(),failover:_o.booleanFlag(`FAILOVER_ENABLED`,!0)}}cacheWorkflowVersion(e){let t=String(e&&e.id||``).trim();return t?(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:e},e):null}cacheMissingWorkflowVersion(e){let t=String(e||``).trim();t&&(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:null})}workflowVersionCacheHas(e){return Object.prototype.hasOwnProperty.call(this.workflowVersionsByID||{},String(e||``).trim())}workflowVersionByID(e){let t=String(e||``).trim();return t&&this.workflowVersionCacheHas(t)?this.workflowVersionsByID[t]:null}async fetchWorkflowVersion(e){let t=String(e||``).trim();if(!t)return null;if(this.workflowVersionCacheHas(t))return this.workflowVersionsByID[t];if(this.workflowVersionRequests[t])return this.workflowVersionRequests[t];let n=(async()=>{let e=typeof AbortController==`function`?new AbortController:null,n=e?setTimeout(()=>e.abort(),1e4):null;try{let n=await fo(`/admin/workflows/`+encodeURIComponent(t),{label:`workflow`,signal:e?e.signal:void 0});if(n.stale)return null;if(n.status===404)return this.cacheMissingWorkflowVersion(t),null;if(!n.ok)return null;let r=n.data;return!r||typeof r!=`object`||Array.isArray(r)?(this.cacheMissingWorkflowVersion(t),null):this.cacheWorkflowVersion(r)}catch(e){return e&&e.name===`AbortError`||console.error(`Failed to fetch workflow version:`,e),null}finally{n!==null&&clearTimeout(n),delete this.workflowVersionRequests[t]}})();return this.workflowVersionRequests[t]=n,n}async prefetchAuditWorkflows(e){let t=[...new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.workflow_version_id||``).trim()).filter(Boolean))];t.length!==0&&await Promise.all(t.map(e=>this.fetchWorkflowVersion(e)))}auditEntryWorkflow(e){let t=String(e&&e.workflow_version_id||``).trim();return t?this.workflowVersionByID(t):null}},qM=6;function JM(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function YM(e,t=0,n=null){let r=String(e||``).trim();if(!r)return``;if(t>qM)return r;let i=JM(r);return i==null?r:XM(i,t+1,n)||n&&n(i)||r}function XM(e,t=0,n=null,r=null){if(e==null||t>qM)return``;if(typeof e==`string`){let i=JM(e.trim());return i==null?``:XM(i,t+1,n,r)}if(typeof e!=`object`)return``;let i=r||new Set;if(i.has(e))return``;if(i.add(e),Array.isArray(e)){for(let r=0;r=400||$M(t&&t.response_body)}function tN(e){let t=e&&e.data?e.data:null;return t?ZM(t.error_message)||(eN(e,t)?XM(t.response_body,0):``):``}function nN(e){if(e==null||String(e).trim()===``)return null;let t=Number(e);return!Number.isInteger(t)||t<0?null:t}function rN(e){let t=nN(e);return t===null?``:t===0?`Audit logs are retained indefinitely.`:t===1?`Audit logs are retained for 1 day.`:`Audit logs are retained for `+t+` days.`}function iN(e){let t=nN(e);return t===null?``:t===0?`Audit logs are retained `:`Audit logs are retained for `}function aN(e){let t=nN(e);return t===null?``:t===0?`indefinitely`:t===1?`1 day`:t+` days`}function oN({dateQuery:e,limit:t,offset:n,search:r,method:i,statusCode:a,stream:o}){let s=e;return s+=`&limit=`+t+`&offset=`+n,r&&(s+=`&search=`+encodeURIComponent(r)),i&&(s+=`&method=`+encodeURIComponent(i)),a&&(s+=`&status_code=`+encodeURIComponent(a)),o&&(s+=`&stream=`+encodeURIComponent(o)),s}function sN({sessionId:e,limit:t}){return`session_id=`+encodeURIComponent(e)+`&limit=`+(t||100)+`&offset=0`}function cN(e){return String(e&&e.session_id||``).trim()}function lN(e){let t=Number(e&&e.session_count);return Number.isFinite(t)&&t>1?t:1}function uN(e){return!!cN(e)&&lN(e)>1}function dN(e){return{entries:(Array.isArray(e&&e.sessions)?e.sessions:[]).filter(e=>e&&e.latest).map(e=>({...e.latest,session_id:cN(e.latest)||String(e.session_id||``).trim(),session_count:Number(e.count||1)})),total:Number(e&&e.total||0),limit:Number(e&&e.limit||25),offset:Number(e&&e.offset||0)}}function fN(e,t,n){let r=new Set((Array.isArray(n)?n:[]).flatMap(e=>gN(e))),i=(Array.isArray(t)?t:[]).filter(e=>!gN(e).some(e=>r.has(e))),a=new Set([...r,...i.flatMap(e=>gN(e))]),o=(e&&Array.isArray(e.entries)?e.entries:[]).filter(e=>e&&e._live&&!gN(e).some(e=>a.has(e)));return{entries:[...o,...i],preservedCount:o.length}}function pN(e,t){let n=e||{};if(!t)return n;if(n[t]){let e={...n};return delete e[t],e}return{...n,[t]:!0}}function mN(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>cN(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=n[e];return}a=!0}),a?i:n}function hN(e){return String(e&&e.id||``).trim()}function gN(e){if(!e)return[];let t=[],n=String(e.id||``).trim(),r=String(e.request_id||``).trim();return n&&t.push(`id:`+n),r&&t.push(`request:`+r),t}function _N(e){return!!(e&&e._live&&e._live_pending&&!e._audit_flushed)}function vN(e){let t=e&&e.customStartDate,n=e&&e.customEndDate;if(!t&&!n)return!0;let r=new Date;if(t){let e=new Date(t);if(e.setHours(0,0,0,0),Number.isFinite(e.getTime())&&re)return!1}return!0}function yN(e,t){return e&&Number(e.offset||0)===0&&!(t&&t.search)&&!(t&&t.method)&&!(t&&t.statusCode)&&!(t&&t.stream)&&vN(t)}function bN(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!yN(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>_N(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>gN(e))),s=[];return a.forEach(e=>{let t=gN(e);t.length!==0&&(t.some(e=>o.has(e))||(t.forEach(e=>o.add(e)),s.push(e)))}),s.length===0?r:(r.entries=[...s,...i].slice(0,r.limit||25),r.total=Number(r.total||0)+s.length,r)}function xN(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!yN(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>_N(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>gN(e))),s=new Map;i.forEach((e,t)=>{let n=cN(e);n&&!s.has(n)&&s.set(n,t)});let c=[],l=i;return a.forEach(e=>{let t=gN(e);if(t.length===0||t.some(e=>o.has(e)))return;let n=cN(e);if(n&&s.has(n)){let r=s.get(n);l===i&&(l=[...i]),l[r]={...e,session_count:Math.max(lN(l[r]),lN(e))},t.forEach(e=>o.add(e));return}t.forEach(e=>o.add(e)),c.push(e)}),r.entries=[...c,...l].slice(0,r.limit||25),r.total=Number(r.total||0)+c.length,r}function SN(e,t){let n=hN(t),r=e||{};if(!n)return r;if(r[n]){let e={...r};return delete e[n],e}return{...r,[n]:!0}}function CN(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>hN(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=!0;return}a=!0}),a?i:n}function wN(e){if(e==null)return`-`;let t=Number(e);return Number.isFinite(t)?t<=0?`pending`:t<1e6?Math.round(t/1e3)+` µs`:t<1e9?(t/1e6).toFixed(2)+` ms`:(t/1e9).toFixed(2)+` s`:`-`}function TN(e){if(e==null||e===``)return`status-unknown`;let t=Number(e);return Number.isFinite(t)?t>=500?`status-error`:t>=400?`status-warning`:t>=300?`status-neutral`:`status-success`:`status-unknown`}function EN(e){if(!e||!e._live||!e._live_pending)return!1;let t=String(e._live_state||``).trim();if(t===`audit.completed`||t===`audit.flushed`||t===`audit.detail`)return!1;if(e._response_partial)return!0;if(e.status_code!==null&&e.status_code!==void 0&&e.status_code!==``||Number(e.duration_ns||0)>0||e.error_type||e.error_message)return!1;let n=e.data||{};return!(n.response_headers||n.response_body||n.error_message)}function DN(e){let t=e&&e.data&&e.data.failover;return!t||typeof t!=`object`||Array.isArray(t)?null:String(t.target_model||t.targetModel||``).trim()||null}function ON(e){return(e&&e.data&&Array.isArray(e.data.attempts)?e.data.attempts:[]).map((e,t)=>({...e,seq:Number(e&&e.seq||t+1)})).sort((e,t)=>e.seq-t.seq)}function kN(e){let t=ON(e);return t.length>1||t.some(e=>!(e&&e.success))}function AN(e){if(!e)return`-`;let t=e.status_code||e.status;return t?String(t):e.success?`ok`:`error`}function jN(e){return String(e&&e.kind||``).trim()||`attempt`}function MN(e){if(!e)return`-`;let t=String(e.provider_name||``).trim(),n=String(e.provider_type||e.provider||``).trim();return t&&n&&t!==n?t+` (`+n+`)`:t||n||`-`}function NN(e){return String(e&&e.model||``).trim()||`-`}function PN(e){let t=ON(e);return t.length>1||t.some(e=>!(e&&e.success))?t:[]}function FN(e){return ON(e).length+`×`}function IN(e){let t=ON(e),n=t.filter(e=>!(e&&e.success)).length,r=t.length===1?`attempt`:`attempts`,i=t.length+` provider `+r;return n>0?i+` · `+n+` failed`:i}function LN(e){if(!e)return``;let t=[`#`+Number(e.seq||0)],n=jN(e);n&&n!==`attempt`&&t.push(n),t.push(AN(e));let r=MN(e);r&&r!==`-`&&t.push(r);let i=NN(e);return i&&i!==`-`&&t.push(i),t.push(e.success?`succeeded`:`failed`),t.join(` · `)}function RN(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t&&t.response_body!=null?t.response_body:null}return t.response_body!=null&&t.response_body!==``?t.response_body:null}function zN(e){if(!e||e.success)return``;let t=String(e.error_message||``).trim(),n=String(e.error_code||``).trim(),r=String(e.error_type||``).trim();return t&&n?n+`: `+t:t||n||r||`Provider attempt failed`}function BN(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t?t.response_headers:null}return t.response_headers||null}function VN(e){let t=Number(e&&e.status_code);return Number.isFinite(t)&&t>0?t:null}function HN(e,t){let n=!!(t&&t.success),r=e&&e.data?e.data:null,i=RN(e,t),a=BN(e,t),o=zN(t),s=i!=null&&i!==``,c=jN(t),l=ON(e).length<=1;return{title:`Response`,direction:`response`,seq:l?0:Number(t&&t.seq||0),kind:l||c===`attempt`?``:c,statusCode:l?null:VN(t),layout:`split`,entry:e,copyHeaders:a,copyBody:i,showErrorMessage:!!o,errorMessage:o,showHeaders:!!a,headers:a,showBody:s,body:i,showEmpty:!o&&!s&&!a,emptyMessage:`No response was captured for this attempt.`,showTooLarge:!!(n&&r&&r.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function UN(e){return e&&e.data&&Array.isArray(e.data.request_revisions)?e.data.request_revisions:[]}function WN(e){return UN(e).filter(e=>!(e&&e.no_change))}function GN(e){return UN(e).filter(e=>e&&e.no_change).map(e=>{let t=String(e.rewriter||`rewriter`);return{id:`step-`+Number(e.seq||0),rewriter:t,label:t+`: no change`,title:t+` ran and forwarded the request unchanged`}})}function KN(e){let t=Number(e&&e.bytes_before),n=Number(e&&e.bytes_after);if(!Number.isFinite(t)||!Number.isFinite(n)||t<=0||n>=t)return``;let r=(1-n/t)*100;return`-`+(r>=10?String(Math.round(r)):r.toFixed(1))+`%`}function qN(e,t){let n=t&&t.body,r=n!=null&&n!==``,i=WN(e).length<=1,a={rewriter:t&&t.rewriter||``,bytes:Number(t&&t.bytes_before||0)+` → `+Number(t&&t.bytes_after||0)};return t&&t.detail!=null&&(a.detail=t.detail),{title:`Rewritten`,direction:`request`,seq:i?0:Number(t&&t.seq||0),kind:t&&t.rewriter?String(t.rewriter):``,savingsLabel:KN(t),layout:`split`,entry:e,copyHeaders:a,copyBody:n,showErrorMessage:!1,errorMessage:null,showHeaders:!0,headers:a,headersTitle:`What changed`,showBody:r,body:n,showEmpty:!1,emptyMessage:``,showTooLarge:!r,tooLargeMessage:`Rewritten body not captured (body logging disabled or body too large).`}}function JN(e){let t=e&&e.usage;return!t||typeof t!=`object`?null:t}function YN(e){let t=JN(e);return Number(t&&t.cached_input_tokens||0)>0}function XN(e){let t=JN(e),n=Number(t&&t.input_tokens||0),r=Number(t&&t.cached_input_tokens||0);return!Number.isFinite(n)||n<=0||!Number.isFinite(r)||r<=0?0:Math.max(0,Math.min(100,r/n*100))}function ZN(e){let t=JN(e);if(!t)return``;let n=Number(t.input_tokens||0),r=Number(t.cached_input_tokens||0);return n<=0?$o(r)+` cached`:XN(e).toFixed(1)+`% cached`}function QN(e){return YN(e)?ZN(e):``}function $N(e,t){let n=JN(e);if(!n||!e||!e.data||!e.data.request_body)return null;let r=Number(n.estimated_cached_characters||0);if(!Number.isFinite(r)||r<=0||typeof t!=`function`)return null;let i=t(e.data.request_body);return!Array.isArray(i)||i.length===0?null:{characters:r,segments:i}}function eP(e,t){let n=e&&e.data?e.data:null,r=!n||!n.request_headers&&!n.request_body,i=r&&EN(e);return{title:`Request`,direction:`request`,layout:`split`,entry:e,copyHeaders:n&&n.request_headers,copyBody:n&&n.request_body,showErrorMessage:!1,errorMessage:null,showHeaders:!!(n&&n.request_headers),headers:n&&n.request_headers,showBody:!!(n&&n.request_body),body:n&&n.request_body,bodyCacheRatioLabel:QN(e),promptCacheHighlight:$N(e,t),noChangeSteps:GN(e),showEmpty:r&&!i,emptyMessage:`Request details were not captured.`,showPending:i,pendingMessage:`Waiting for request data…`,showTooLarge:!!(n&&n.request_body_too_big_to_handle),tooLargeMessage:`Request body was too large to capture.`}}function tP(e){let t=e&&e.data?e.data:null,n=tN(e),r=!t||!n&&!t.response_headers&&!t.response_body,i=r&&EN(e);return{title:`Response`,direction:`response`,layout:`split`,entry:e,copyHeaders:t&&t.response_headers,copyBody:t&&t.response_body,showErrorMessage:!!n,errorMessage:n,showHeaders:!!(t&&t.response_headers),headers:t&&t.response_headers,showBody:!!(t&&t.response_body),body:t&&t.response_body,streaming:!!(e&&e._response_partial&&t&&t.response_body)&&EN(e),showEmpty:r&&!i,emptyMessage:`Response details were not captured.`,showPending:i,pendingMessage:`Response in progress…`,showTooLarge:!!(t&&t.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function nP(e,t){let n=[{id:`request`,pane:eP(e,t)}];return WN(e).forEach(t=>{n.push({id:`revision-`+Number(t&&t.seq||0),pane:qN(e,t)})}),kN(e)?ON(e).forEach(t=>{n.push({id:`response-`+Number(t&&t.seq||0),pane:HN(e,t)})}):n.push({id:`response`,pane:tP(e)}),n}function rP(e){if(!kN(e))return`response`;let t=ON(e),n=null;return t.forEach(e=>{e&&e.success&&(n=e)}),n||=t[t.length-1],n?`response-`+Number(n.seq||0):`request`}function iP(e,t,n){return e&&(Array.isArray(n)?n:nP(t)).some(t=>t.id===e)?e:rP(t)}function aP(e,t,n){if(!t||!t.length)return null;let r=t.indexOf(n);r<0&&(r=0);let i;switch(e){case`ArrowRight`:case`ArrowDown`:i=(r+1)%t.length;break;case`ArrowLeft`:case`ArrowUp`:i=(r-1+t.length)%t.length;break;case`Home`:i=0;break;case`End`:i=t.length-1;break;default:return null}return t[i]}var oP=100;function sP(){return{entries:[],total:0,limit:25,offset:0}}var cP=new class{#e=k(j({}));get auditExpandedEntries(){return I(this.#e)}set auditExpandedEntries(e){A(this.#e,e,!0)}#t=k(j({}));get auditExpandedThreads(){return I(this.#t)}set auditExpandedThreads(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}auditFetchToken=0;get auditLog(){return hS.auditLog}set auditLog(e){hS.auditLog=e}get auditSearch(){return hS.auditSearch}set auditSearch(e){hS.auditSearch=e}get auditMethod(){return hS.auditMethod}set auditMethod(e){hS.auditMethod=e}get auditStatusCode(){return hS.auditStatusCode}set auditStatusCode(e){hS.auditStatusCode=e}get auditStream(){return hS.auditStream}set auditStream(e){hS.auditStream=e}get auditGroupSessions(){return hS.auditGroupSessions}liveFilters(){return{search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream,customStartDate:Ts.customStartDate,customEndDate:Ts.customEndDate}}toggleAuditGroupSessions(){hS.auditGroupSessions=!hS.auditGroupSessions,Da(`gomodel_audit_group_sessions`,hS.auditGroupSessions),this.auditExpandedThreads={},hS.auditThreadChildren={},this.fetchAuditLog(!0)}async fetchAuditLog(e){let t=++this.auditFetchToken;this.loading=!0;try{e&&(this.auditLog.offset=0);let n=this.auditGroupSessions,r=oN({dateQuery:Ts.queryStr(),limit:this.auditLog.limit,offset:this.auditLog.offset,search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream}),i=await fo((n?`/admin/audit/sessions?`:`/admin/audit/log?`)+r,{label:`audit log`});if(i.stale||t!==this.auditFetchToken)return;if(!i.ok){this.auditLog=sP();return}let a=n?dN(i.data):i.data,o=(n?xN:bN)(a,this.auditLog&&this.auditLog.entries,this.liveFilters());Array.isArray(o.entries)||(o.entries=[]),this.auditLog=o,this.auditExpandedThreads=mN(this.auditExpandedThreads,o.entries),hS.auditThreadChildren=mN(hS.auditThreadChildren,o.entries);let s=[...o.entries,...this.loadedThreadChildren()];this.auditExpandedEntries=CN(this.auditExpandedEntries,s);try{await KM.prefetchAuditWorkflows(s)}catch(e){console.error(`Failed to prefetch audit workflows:`,e)}}catch(e){if(console.error(`Failed to fetch audit log:`,e),t!==this.auditFetchToken)return;this.auditLog=sP()}finally{t===this.auditFetchToken&&(this.loading=!1)}}loadedThreadChildren(){let e=hS.auditThreadChildren||{};return Object.keys(e).flatMap(t=>Array.isArray(e[t]&&e[t].entries)?e[t].entries:[])}isThreadExpanded(e){return!!(e&&this.auditExpandedThreads[e])}threadChildren(e){return e&&hS.auditThreadChildren[e]||null}async toggleThread(e){let t=cN(e);if(!t)return;let n=!this.isThreadExpanded(t);this.auditExpandedThreads=pN(this.auditExpandedThreads,t);let r=hS.auditThreadChildren[t];n&&!(r&&(r.loaded||r.loading))&&await this.fetchThreadEntries(e)}async fetchThreadEntries(e){let t=cN(e);if(!t)return;let n=hS.auditThreadChildren[t];hS.auditThreadChildren={...hS.auditThreadChildren,[t]:{loading:!0,loaded:!1,entries:n&&Array.isArray(n.entries)?n.entries:[],total:Number(n&&n.total||0)}};let r=()=>{let e={...hS.auditThreadChildren},n=e[t],r=n&&Array.isArray(n.entries)?n.entries:[];r.length>0?e[t]={loading:!1,loaded:!1,entries:r,total:r.length}:(delete e[t],this.auditExpandedThreads[t]&&(this.auditExpandedThreads=pN(this.auditExpandedThreads,t))),hS.auditThreadChildren=e};try{let n=await fo(`/admin/audit/log?`+sN({sessionId:t,limit:oP}),{label:`audit session`});if(n.stale){r();return}if(!n.ok)throw Error(`audit session fetch failed`);let i=hS.auditThreadChildren[t],a=this.auditLog.entries.find(e=>cN(e)===t),o=fN(i,n.data.entries,a?[a]:[e]);hS.auditThreadChildren={...hS.auditThreadChildren,[t]:{loading:!1,loaded:!0,entries:o.entries,total:Number(n.data.total||0)+o.preservedCount}}}catch(e){console.error(`Failed to fetch audit session entries:`,e),r()}}clearAuditFilters(){this.auditSearch=``,this.auditMethod=``,this.auditStatusCode=``,this.auditStream=``,this.fetchAuditLog(!0)}auditLogNextPage(){this.auditLog.offset+this.auditLog.limit0&&(this.auditLog.offset=Math.max(0,this.auditLog.offset-this.auditLog.limit),this.fetchAuditLog(!1))}isAuditEntryExpanded(e){let t=hN(e);return t?!!(this.auditExpandedEntries&&this.auditExpandedEntries[t]):!1}toggleAuditEntryExpanded(e){this.auditExpandedEntries=SN(this.auditExpandedEntries,e);let t=this.isAuditEntryExpanded(e);return t&&typeof hS.fetchAuditEntryDetail==`function`&&hS.fetchAuditEntryDetail(e),t}expandAuditEntry(e){this.isAuditEntryExpanded(e)||this.toggleAuditEntryExpanded(e)}};hS.fetchAuditLog=e=>cP.fetchAuditLog(e),hS.isAuditEntryExpanded=e=>cP.isAuditEntryExpanded(e);var lP=R(`
`);function uP(e,t){E(t,!0);let n=rC(()=>cP.fetchAuditLog(!0));An(()=>n.cancel);var r=lP(),i=M(r);nC(M(i),{id:`audit-filter-search`,placeholder:`Search by request ID, model, provider, path, user path, or error...`,label:`Search by request ID, model, provider, path, user path, or error`,get oninput(){return n},get value(){return cP.auditSearch},set value(e){cP.auditSearch=e}}),T(i);var a=P(i,2),o=M(a),s=M(o);s.value=s.__value=``;var c=P(s);c.value=c.__value=`GET`;var l=P(c);l.value=l.__value=`POST`;var u=P(l);u.value=u.__value=`PUT`;var d=P(u);d.value=d.__value=`PATCH`;var f=P(d);f.value=f.__value=`DELETE`,T(o);var p=P(o,2),m=M(p);m.value=m.__value=``;var h=P(m);h.value=h.__value=`200`;var g=P(h);g.value=g.__value=`201`;var _=P(g);_.value=_.__value=`400`;var v=P(_);v.value=v.__value=`401`;var y=P(v);y.value=y.__value=`403`;var b=P(y);b.value=b.__value=`404`;var x=P(b);x.value=x.__value=`429`;var S=P(x);S.value=S.__value=`500`;var C=P(S);C.value=C.__value=`502`;var w=P(C);w.value=w.__value=`503`;var ee=P(w);ee.value=ee.__value=`504`,T(p);var te=P(p,2),ne=M(te);ne.value=ne.__value=``;var re=P(ne);re.value=re.__value=`true`;var ie=P(re);ie.value=ie.__value=`false`,T(te);var ae=P(te,2);G(M(ae),{name:`x`,class:`table-icon-svg`}),Ue(2),T(ae),T(a),T(r),L(`change`,o,()=>cP.fetchAuditLog(!0)),Gi(o,()=>cP.auditMethod,e=>cP.auditMethod=e),L(`change`,p,()=>cP.fetchAuditLog(!0)),Gi(p,()=>cP.auditStatusCode,e=>cP.auditStatusCode=e),L(`change`,te,()=>cP.fetchAuditLog(!0)),Gi(te,()=>cP.auditStream,e=>cP.auditStream=e),L(`click`,ae,()=>cP.clearAuditFilters()),z(e,r),D()}Hr([`change`,`click`]);var dP=R(`Live stream connecting…`),fP=R(` `),pP=R(`Live`),mP=R(` `);function hP(e,t){E(t,!0);let n=O(()=>hS.auditLivePauseReason()),r=O(()=>hS.liveLogsStreaming&&!I(n));var i=Qr(),a=N(i),o=e=>{var t=mP(),i=M(t);let a;var o=P(i,2),s=e=>{z(e,dP())},c=e=>{var t=fP(),r=M(t,!0);T(t),F(e=>B(r,e),[()=>dS(I(n))]),z(e,t)},l=e=>{z(e,pP())};V(o,e=>{hS.liveLogsStreaming?I(n)?e(c,1):e(l,-1):e(s)}),T(t),F(()=>a=U(i,1,`live-dot svelte-tve6yv`,null,a,{"is-streaming":I(r)})),z(e,t)},s=O(()=>_o.liveLogsVisible());V(a,e=>{I(s)&&e(o)}),z(e,i),D()}var gP=R(` `),_P=R(``);function vP(e,t){E(t,!0);let n=O(()=>[{key:`provider`,text:ls(t.entry)||`-`},{key:`model`,text:t.entry.requested_model||t.entry.model||`-`,mono:!0},{key:`user_path`,text:t.entry.user_path,mono:!0},{key:`request_id`,text:`request_id: `+(t.entry.request_id||`-`),mono:!0},{key:`ip`,text:t.entry.client_ip&&`ip: `+t.entry.client_ip,mono:!0},{key:`auth_key_id`,text:t.entry.auth_key_id&&`auth_key_id: `+t.entry.auth_key_id,mono:!0},{key:`alias`,text:t.entry.alias_used&&`alias`,class:`audit-alias-badge`},{key:`resolved`,text:t.entry.alias_used&&t.entry.resolved_model&&`resolved: `+fs(t.entry),mono:!0},{key:`failover`,text:DN(t.entry)&&`failover: `+DN(t.entry),mono:!0},{key:`stream`,text:t.entry.stream&&`stream`},{key:`error_type`,text:t.entry.error_type}].filter(e=>!!e.text));var r=_P(),i=P(M(r),2);H(i,21,()=>I(n),e=>e.key,(e,t)=>{var n=gP(),r=M(n,!0);T(n),F(()=>{U(n,1,Fi([`provider-badge`,I(t).class,{mono:I(t).mono}]),`svelte-hyopt0`),B(r,I(t).text)}),z(e,n)}),T(i),T(r),z(e,r),D()}var yP=R(``),bP=R(` `);function xP(e,t){E(t,!0);let n=O(()=>PN(t.entry)),r=O(()=>I(n).length>0?IN(t.entry):``),i=O(()=>I(n).length>0?FN(t.entry):``);var a=Qr(),o=N(a),s=e=>{var a=bP(),o=M(a);H(o,21,()=>I(n),e=>t.entry.id+`-pip-`+e.seq,(e,t)=>{var n=yP();let r;F(e=>{r=U(n,1,`audit-attempt-pip svelte-1eu22xn`,null,r,{"audit-attempt-success":!!(I(t)&&I(t).success),"audit-attempt-error":!(I(t)&&I(t).success)}),W(n,`title`,e)},[()=>LN(I(t))]),z(e,n)}),T(o);var s=P(o,2),c=M(s,!0);T(s),T(a),F(()=>{W(a,`title`,I(r)),W(a,`aria-label`,I(r)),B(c,I(i))}),z(e,a)};V(o,e=>{I(n).length>0&&e(s)}),z(e,a),D()}var SP=new Set([`instructions`,`messages`,`input`,`previous_response_id`,`choices`,`output`]);function CP(e){if(e==null)return``;if(typeof e==`string`)return e.trim();if(Array.isArray(e))return e.map(e=>typeof e==`string`?e:!e||typeof e!=`object`?``:typeof e.text==`string`?e.text:typeof e.output_text==`string`?e.output_text:``).filter(Boolean).join(` -`).trim();if(typeof e==`object`){if(typeof e.text==`string`)return e.text.trim();try{return JSON.stringify(e,null,2)}catch{return``}}return String(e).trim()}function wP(e){if(e==null)return[];if(typeof e==`string`)return e?[e]:[];if(Array.isArray(e))return e.flatMap(e=>typeof e==`string`?e?[e]:[]:!e||typeof e!=`object`?[]:typeof e.text==`string`?e.text?[e.text]:[]:typeof e.output_text==`string`&&e.output_text?[e.output_text]:[]);if(typeof e==`object`)return typeof e.text==`string`&&e.text?[e.text]:[];let t=String(e);return t?[t]:[]}function TP(e){if(e==null)return[];if(typeof e==`string`){let t=e.trim();return t?[{role:`user`,text:t}]:[]}if(!Array.isArray(e)){let t=CP(e);return t?[{role:`user`,text:t}]:[]}return e.map(e=>{if(!e||typeof e!=`object`)return null;let t=String(e.role||`user`).toLowerCase(),n=CP(e.content);return n?{role:t,text:n}:null}).filter(Boolean)}function EP(e){return!e||typeof e!=`object`?``:Array.isArray(e.content)?e.content.map(e=>e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(` -`).trim():CP(e.content)}function DP(e){if(!e||typeof e!=`object`)return[];let t=[];return t.push(...wP(e.instructions)),Array.isArray(e.messages)&&e.messages.forEach(e=>{!e||typeof e!=`object`||t.push(...wP(e.content))}),typeof e.input==`string`?t.push(e.input):Array.isArray(e.input)?e.input.forEach(e=>{!e||typeof e!=`object`||(t.push(...wP(e.content)),typeof e.text==`string`&&t.push(e.text))}):e.input&&typeof e.input==`object`&&(t.push(...wP(e.input.content)),typeof e.input.text==`string`&&t.push(e.input.text)),t.map(e=>String(e||``)).filter(e=>e.length>0)}var OP=e=>CP(e);function kP(e){if(!e||!e.data)return``;let t=XM(e.data.response_body,0,OP);if(t)return t;let n=e.data.error_message;if(n==null)return``;if(typeof n==`string`){let e=n.trim();return e?XM(JM(e),0,OP)||e:``}return XM(n,0,OP)||CP(n)}function AP(e){return Array.isArray(e)?e.some(e=>!e||typeof e!=`object`?!1:e.type===`message`||e.role===`assistant`||e.role===`user`||e.role===`system`?!0:Array.isArray(e.content)?e.content.some(e=>!e||typeof e!=`object`?!1:typeof e.text==`string`||e.type===`output_text`||e.type===`input_text`):!1):!1}function jP(e){if(!e)return!1;let t=String(e).toLowerCase();return t===`/v1/embeddings`||t===`/v1/embeddings/`||t.startsWith(`/v1/embeddings?`)||t.startsWith(`/v1/embeddings/`)}function MP(e){return e?!!PP(e):!1}function NP(e){let t=String(e||``).trim().split(`?`)[0].replace(/\/+$/,``).toLowerCase();return t.startsWith(`/v1/`)?t.slice(3):t}function PP(e){switch(NP(e)){case`/chat/completions`:return`chat`;case`/responses`:return`responses`;case`/messages`:return`messages`;default:return``}}function FP(e){if(!e||typeof e!=`object`)return null;try{return JSON.parse(JSON.stringify(e))}catch{return null}}function IP(e,t){if(!t||typeof t!=`object`)return;let n=e[e.length-1];try{if(n&&JSON.stringify(n)===JSON.stringify(t))return}catch{}e.push(t)}function LP(e){let t=PP(e&&e.path),n=e&&e.data&&e.data.request_body;return!t||!n||typeof n!=`object`?!1:t!==`responses`||(e.data&&e.data.response_body&&typeof e.data.response_body.id==`string`?e.data.response_body.id.trim():``)!==``||gF(n)!==``}function RP(e,t){let n=String(t||``).trim(),r=PP(e&&e.path),i=FP(e&&e.data&&e.data.request_body);if(!n||!r||!i)return null;let a=e&&e.data?e.data.response_body:null;if(r===`responses`){let e=a&&typeof a.id==`string`?a.id.trim():``,t=gF(i);return!e&&!t?null:(i.input=n,e&&!t?i.previous_response_id=e:delete i.previous_response_id,i)}let o=Array.isArray(i.messages)?i.messages:[];if(r===`chat`){let e=a&&Array.isArray(a.choices)?a.choices[0]:null;e&&e.message&&IP(o,FP(e.message)),o.push({role:`user`,content:n})}else a&&a.content!==void 0&&IP(o,{role:String(a.role||`assistant`),content:FP(a.content)||a.content}),o.push({role:`user`,content:n});return i.messages=o,i}var zP=new Set(`authorization.proxy-authorization.cookie.content-type.content-length.host.accept.connection.accept-encoding.content-encoding.transfer-encoding.user-agent.date.expect.upgrade.via.te.trailer.keep-alive.origin.referer.forwarded.x-real-ip.traceparent.tracestate.x-request-id.idempotency-key.x-idempotency-key.x-gomodel-timezone.x-gomodel-interaction-parent`.split(`.`));function BP(e,t,n=``){let r=e&&e.data&&e.data.request_headers,i={};return r&&typeof r==`object`&&Object.keys(r).forEach(e=>{let t=String(e).toLowerCase(),n=String(r[e]==null?``:r[e]);!e||!n||n===`[REDACTED]`||zP.has(t)||t.startsWith(`sec-`)||t.startsWith(`cf-`)||t.startsWith(`x-forwarded-`)||(i[e]=n)}),i[`X-GoModel-Interaction-Parent`]=String(t||e&&e.id||``).trim(),String(n||``).trim()&&(i[`X-Request-ID`]=String(n).trim()),i}function VP(e,t){let n=String(t||``).trim();return!n||!Array.isArray(e)?null:e.find(e=>String(e&&e.request_id||``).trim()===n)||null}function HP(e,t,n,r,i){let a=Array.isArray(e)?e:[],o=String(i&&i.id||``).trim(),s=String(i&&i.request_id||``).trim(),c=String(i&&i.session_id||``).trim(),l=String(r||``).trim(),u=UP(i),d=a.some(e=>o&&String(e&&e.id||``).trim()===o||s&&String(e&&e.request_id||``).trim()===s),f=!!l&&s===l,p=!!n&&c===String(n).trim(),m=!!u&&(u===String(t||``).trim()||a.some(e=>String(e&&e.id||``).trim()===u)),h=d||f||!l&&(p||m);return{accepted:h,submittedChild:f,followUpRequestID:h&&f&&o?``:l}}function UP(e){let t=e&&e.data&&e.data.request_headers;if(!t||typeof t!=`object`)return``;let n=Object.keys(t).find(e=>e.toLowerCase()===`x-gomodel-interaction-parent`);return n?String(t[n]||``).trim():``}function WP(e,t){return!Array.isArray(e)||!t?null:e.find(e=>String(e&&e.id||``)===String(t))||null}function GP(e){return!Array.isArray(e)||e.length===0?null:e.reduce((e,t)=>e?_F(t,e)>=0?t:e:t,null)}function KP(e,t){let n=new Set(Array.isArray(t)?t.map(String):[]);return GP((Array.isArray(e)?e:[]).filter(e=>{let t=String(e&&e.id||``);return n.has(t)&&e&&e.data&&e.data.request_body!=null}))}function qP(e,t){let n=GP(e);return!!n&&String(n.id||``)===String(t||``)}function JP(e){if(e&&e.conversation_payload)return!0;let t=e&&e.data?e.data.request_body:null,n=e&&e.data?e.data.response_body:null,r=t&&(Array.isArray(t.messages)||t.input!==void 0||typeof t.instructions==`string`||typeof t.previous_response_id==`string`),i=n&&(Array.isArray(n.choices)||AP(n.output));return!!(r||i)}function YP(e){return!e||jP(e.path)?!1:MP(e.path)||JP(e)}function XP(e){let t=0,n=!1,r=!1,i=String(e||``);for(let e=0;e0&&a+1`,`>`).replaceAll(`"`,`"`).replaceAll(`'`,`'`)}function eF(e){return!!(e&&typeof e==`object`&&e.__audio__===!0)}function tF(e){let t=Number(e||0);if(!Number.isFinite(t)||t<=0)return`0 B`;let n=[`B`,`KB`,`MB`,`GB`],r=0,i=t;for(;i>=1024&&r`
`+$P(t)+``+$P(rF(e[t]))+`
`);return t.length?``:``}function aF(e){let t=nF(e.content_type),n=$P(t+` · `+tF(e.bytes)),r=iF(e.meta);if(e.stored&&e.encoding===`base64`&&e.data){let i=String(e.data).replace(/[^A-Za-z0-9+/=]/g,``);return`
`+n+`
`+r+`
`}let i=e.too_large?`Audio too large to store.`:`Audio not logged. Set LOGGING_LOG_AUDIO_BODIES=true to capture playable audio.`;return`
`+n+`
`+$P(i)+`
`+r+`
`}function oF(e){try{return JSON.stringify(String(e)).slice(1,-1)}catch{return``}}function sF(e){if(!e||typeof e!=`object`)return null;let t=Number(e.characters||0);if(!Number.isFinite(t)||t<=0)return null;let n=Array.isArray(e.segments)?e.segments.map(e=>String(e||``)).filter(Boolean):[];return n.length===0?null:{remaining:Math.floor(t),segments:n,segmentIndex:0}}function cF(e,t){if(!t||t.remaining<=0||t.segmentIndex>=t.segments.length)return $P(e);let n=``,r=0,i=0;for(;t.remaining>0&&t.segmentIndex`+$P(l)+``,r=s+l.length,i=s+o.length,t.remaining-=c,c>=a.length){t.segmentIndex++;continue}break}return n?n+$P(e.slice(r)):$P(e)}function lF(e,t,n){let r=n&&typeof n.formatJSON==`function`?n.formatJSON:e=>String(e),i=n&&typeof n.canShowConversation==`function`?n.canShowConversation:()=>!1,a=sF(n&&n.promptCacheHighlight),o=r(t);if(!o||o===`Not captured`)return $P(o);if(!i(e))return o.split(` -`).map(e=>cF(e,a)).join(` -`);let s=o.split(` -`),c=[],l=0;for(;lcF(e,a)).join(` -`);c.push(``+o+``),l=r+1;continue}c.push(cF(e,a)),l++}return c.join(` -`)}function uF(e){let t=String(e||``).toLowerCase();return t===`system`||t===`developer`?{role:`system`,label:`System Prompt`,className:`role-system`}:t===`assistant`?{role:`assistant`,label:`Agent`,className:`role-assistant`}:t===`error`?{role:`error`,label:`Error`,className:`role-error`}:t===`function_call`?{role:`function_call`,label:`Function Call`,className:`role-function-call`}:t===`function_result`?{role:`function_result`,label:`Function Result`,className:`role-function-result`}:{role:`user`,label:`User`,className:`role-user`}}function dF(e,t,{timestamp:n,entryID:r,isAnchor:i,isAfterAnchor:a,index:o,toolCalls:s,functionName:c}){let l=uF(e);return{uid:r+`-`+o,entryID:r,timestamp:n,text:t,role:l.role,roleLabel:l.label,roleClass:l.className,isAnchor:i,isAfterAnchor:a,toolCalls:Array.isArray(s)&&s.length>0?s:null,functionName:c||``}}function fF(e){return Array.isArray(e)?e.map(e=>{if(!e)return null;let t=e.function||e;return{name:t.name||e.name||``,arguments:t.arguments||e.arguments||``}}).filter(Boolean):[]}function pF(e,t,n){if(t&&Array.isArray(t.messages)&&t.messages.forEach(t=>{!t||!Array.isArray(t.tool_calls)||t.tool_calls.forEach(t=>{if(!t)return;let n=t.id||``,r=(t.function||t).name||t.name||``;n&&r&&(e[n]=r)})}),t&&Array.isArray(t.input)&&t.input.forEach(t=>{if(!t||typeof t!=`object`||t.type!==`function_call`)return;let n=t.id||t.call_id||``,r=t.name||``;n&&r&&(e[n]=r)}),n&&Array.isArray(n.choices)){let t=n.choices[0];t&&t.message&&Array.isArray(t.message.tool_calls)&&t.message.tool_calls.forEach(t=>{if(!t)return;let n=t.id||``,r=(t.function||t).name||t.name||``;n&&r&&(e[n]=r)})}n&&Array.isArray(n.output)&&n.output.forEach(t=>{if(!t||t.type!==`function_call`)return;let n=t.id||t.call_id||``,r=t.name||``;n&&r&&(e[n]=r)})}function mF(e){return Array.isArray(e)?`[`+e.map(mF).join(`,`)+`]`:e&&typeof e==`object`?`{`+Object.keys(e).sort().map(t=>JSON.stringify(t)+`:`+mF(e[t])).join(`,`)+`}`:JSON.stringify(e)}function hF(e){if(!e||typeof e!=`object`)return null;let t=[];if(e.system!==void 0&&t.push({system:e.system}),e.instructions!==void 0&&t.push({instructions:e.instructions}),Array.isArray(e.messages))t.push(...e.messages);else if(Array.isArray(e.input)&&e.previous_response_id==null&&e.conversation==null)t.push(...e.input);else return null;return t.map(mF)}function gF(e){let t=e&&e.conversation;return typeof t==`string`?t.trim():t&&typeof t.id==`string`?t.id.trim():``}function _F(e,t){let n=new Date(e&&e.timestamp).getTime(),r=new Date(t&&t.timestamp).getTime();if(Number.isFinite(n)&&Number.isFinite(r)&&n!==r)return n-r;let i=String(e&&e.timestamp||``).localeCompare(String(t&&t.timestamp||``));if(i!==0)return i;let a=String(e&&e.id||``),o=String(t&&t.id||``);return ao)}function vF(e,t){if(!Array.isArray(e)||e.length===0)return{messages:[],entryIDs:[]};let n=[...e].sort(_F),r={};n.forEach(e=>{let t=e.data&&e.data.request_body?e.data.request_body:null,n=e.data&&e.data.response_body?e.data.response_body:null;pF(r,t,n)});let i=[],a=new Set,o=new Set,s=new Set,c=[],l=null,u=0,d=n.findIndex(e=>e.id===t),f=e=>JSON.stringify({role:e.role,text:e.text,toolCalls:e.toolCalls,functionName:e.functionName});return n.forEach((e,n)=>{let p=e.id===t,m=d>=0&&n>d,h=e.timestamp,g=e.data&&e.data.request_body?e.data.request_body:null,_=e.data&&e.data.response_body?e.data.response_body:null,v=i.length,y=(t,n,{toolCalls:r,functionName:i}={})=>dF(t,n,{timestamp:h,entryID:e.id,isAnchor:p,isAfterAnchor:m,index:++u,toolCalls:r,functionName:i});if(g&&g.system!==void 0){let e=CP(g.system);e&&i.push(y(`system`,e))}if(g&&g.instructions!==void 0){let e=CP(g.instructions);e&&i.push(y(`system`,e))}g&&Array.isArray(g.messages)&&g.messages.forEach(e=>{if(!e)return;let t=(e.role||`user`).toLowerCase();if(t===`tool`){let t=CP(e.content),n=e.name||r[e.tool_call_id]||``;t&&i.push(y(`function_result`,t,{functionName:n}));return}if(t===`assistant`){let n=CP(e.content),r=fF(e.tool_calls);(n||r.length>0)&&i.push(y(t,n,{toolCalls:r}));return}let n=CP(e.content);n&&i.push(y(t,n))}),g&&g.input!==void 0&&(Array.isArray(g.input)?g.input.forEach(e=>{if(!(!e||typeof e!=`object`)){if(e.type===`function_call_output`){let t=typeof e.output==`string`?e.output:CP(e.output);t&&i.push(y(`function_result`,t,{functionName:r[e.call_id]||``}))}else if(e.type===`function_call`)i.push(y(`function_call`,``,{toolCalls:[{name:e.name||``,arguments:e.arguments||``}]}));else if(e.role){let t=String(e.role).toLowerCase(),n=CP(e.content);n&&i.push(y(t,n))}}}):TP(g.input).forEach(e=>{e.text&&i.push(y(e.role,e.text))}));let b=i.splice(v),x=b.map(f),S=hF(g),C=S!==null,w=UP(e),ee=!!w&&a.has(w),te=String(g&&g.previous_response_id||``).trim(),ne=gF(g),re=ee||!!te&&o.has(te)||!!ne&&s.has(ne);if(m){let e=C&&l&&l.length>0&&l.every((e,t)=>S[t]===e);if(C&&!e&&!ee||!C&&!re)return}p&&C&&(l=[...S]);let ie=String(e.id||``).trim();p&&(a.clear(),o.clear(),s.clear()),ie&&(p||m)&&a.add(ie),ne&&s.add(ne);let ae=0;for(;ae0;){let t=c.slice(-e),n=x.slice(0,e);if(t.every((e,t)=>e===n[t]))break;e--}i.push(...b.slice(e)),c.push(...x.slice(e))}if(_&&Array.isArray(_.choices)){let e=_.choices[0];if(e&&e.message){let t=(e.message.role||`assistant`).toLowerCase(),n=CP(e.message.content),r=fF(e.message.tool_calls);if(n||r.length>0){let e=y(t,n,{toolCalls:r});i.push(e),c.push(f(e))}}}if(_&&Array.isArray(_.output)&&_.output.forEach(e=>{if(!e)return;if(e.type===`function_call`){let t=y(`function_call`,``,{toolCalls:[{name:e.name||``,arguments:e.arguments||``}]});i.push(t),c.push(f(t));return}let t=(e.role||`assistant`).toLowerCase(),n=EP(e);if(n){let e=y(t,n);i.push(e),c.push(f(e))}}),_&&_.content!==void 0&&!Array.isArray(_.choices)&&!Array.isArray(_.output)){let e=String(_.role||`assistant`).toLowerCase(),t=CP(_.content);if(t){let n=y(e,t);i.push(n),c.push(f(n))}}let oe=kP(e);oe&&i.push(y(`error`,oe));let se=String(_&&_.id||``).trim();se&&o.add(se)}),{messages:i,entryIDs:[...a]}}function yF(e){return e.role===`function_call`?(e.toolCalls||[]).map(function(e){let t=e.arguments||``;try{t=JSON.stringify(JSON.parse(t),null,2)}catch{}return e.name+`(`+t+`)`}).join(` - -`):e.text||``}var bF=600*1e3,xF=15*1e3,SF=250,CF=class{#e=k(!1);get conversationOpen(){return I(this.#e)}set conversationOpen(e){A(this.#e,e,!0)}#t=k(!1);get conversationLoading(){return I(this.#t)}set conversationLoading(e){A(this.#t,e,!0)}#n=k(``);get conversationError(){return I(this.#n)}set conversationError(e){A(this.#n,e,!0)}#r=k(``);get conversationAnchorID(){return I(this.#r)}set conversationAnchorID(e){A(this.#r,e,!0)}#i=k(j([]));get conversationEntries(){return I(this.#i)}set conversationEntries(e){A(this.#i,e,!0)}#a=k(j([]));get conversationMessages(){return I(this.#a)}set conversationMessages(e){A(this.#a,e,!0)}#o=k(j([]));get conversationBranchEntryIDs(){return I(this.#o)}set conversationBranchEntryIDs(e){A(this.#o,e,!0)}#s=k(``);get conversationSessionID(){return I(this.#s)}set conversationSessionID(e){A(this.#s,e,!0)}#c=k(!1);get conversationTruncated(){return I(this.#c)}set conversationTruncated(e){A(this.#c,e,!0)}#l=k(!1);get conversationFollowLatest(){return I(this.#l)}set conversationFollowLatest(e){A(this.#l,e,!0)}#u=k(``);get conversationOpenedFromID(){return I(this.#u)}set conversationOpenedFromID(e){A(this.#u,e,!0)}#d=k(``);get followUpText(){return I(this.#d)}set followUpText(e){A(this.#d,e,!0)}#f=k(!1);get followUpSending(){return I(this.#f)}set followUpSending(e){A(this.#f,e,!0)}#p=k(``);get followUpError(){return I(this.#p)}set followUpError(e){A(this.#p,e,!0)}followUpRequestID=``;followUpAbort=null;conversationRequestToken=0;conversationReturnFocusEl=null;bodyPointerStart=null;#m=k(null);get conversationDialogEl(){return I(this.#m)}set conversationDialogEl(e){A(this.#m,e,!0)}#h=k(null);get conversationCloseBtnEl(){return I(this.#h)}set conversationCloseBtnEl(e){A(this.#h,e,!0)}#g=k(null);get conversationThreadEl(){return I(this.#g)}set conversationThreadEl(e){A(this.#g,e,!0)}canShowConversation(e){return YP(e)}startBodyInteraction(e){this.bodyPointerStart={x:e.clientX,y:e.clientY}}_isBodyDrag(e){if(!this.bodyPointerStart)return!1;let t=Math.abs(e.clientX-this.bodyPointerStart.x),n=Math.abs(e.clientY-this.bodyPointerStart.y);return t>4||n>4}_hasActiveSelection(){let e=window.getSelection?window.getSelection():null;return!e||e.isCollapsed?!1:String(e.toString()||``).trim().length>0}handleBodyConversationClick(e,t){let n=this._isBodyDrag(e);if(this.bodyPointerStart=null,n||this._hasActiveSelection()||!this.canShowConversation(t))return;let r=e.target&&e.target.closest?e.target.closest(`[data-conversation-trigger="1"]`):null;r&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,r))}handleErrorConversationClick(e,t){let n=this._isBodyDrag(e);this.bodyPointerStart=null,!n&&(this._hasActiveSelection()||this.canShowConversation(t)&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,e.currentTarget)))}formatJSON(e){return Qo(e)}renderBodyWithConversationHighlights(e,t,n){return lF(e,t,{formatJSON:e=>this.formatJSON(e),canShowConversation:e=>this.canShowConversation(e),promptCacheHighlight:n&&n.promptCacheHighlight})}async openConversation(e,t){if(!e||!e.id||!this.canShowConversation(e))return;let n=document.activeElement instanceof HTMLElement?document.activeElement:null;t instanceof HTMLElement?this.conversationReturnFocusEl=t:n&&n!==document.body&&(this.conversationReturnFocusEl=n);let r=++this.conversationRequestToken;if(this.conversationOpen=!0,this.conversationError=``,this.conversationAnchorID=e.id,this.conversationOpenedFromID=e.id,this.conversationSessionID=String(e.session_id||``).trim(),this.conversationEntries=[],this.conversationMessages=[],this.conversationBranchEntryIDs=[],this.conversationTruncated=!1,this.conversationFollowLatest=!1,this.followUpText=``,this.followUpError=``,this.followUpRequestID=``,document.body.classList.add(`conversation-drawer-open`),requestAnimationFrame(()=>this._focusConversationDrawer()),this._conversationEntryLivePending(e)){this.conversationFollowLatest=!0,this.conversationLoading=!1,this.applyLiveConversationEntry(e),this._scheduleLatestScroll();return}this.conversationLoading=!0,await this.fetchConversation(e.id,r,!0,!0)}_conversationEntryLivePending(e){return typeof hS.auditEntryLiveDetailPending==`function`&&hS.auditEntryLiveDetailPending(e)}applyLiveConversationEntry(e){let t=[...this.conversationEntries||[]],n=String(e.id||``).trim(),r=String(e.request_id||``).trim(),i=t.findIndex(e=>n&&String(e.id||``).trim()===n||r&&String(e.request_id||``).trim()===r);i>=0?t.splice(i,1,{...t[i],...e}):t.push(e),this.conversationEntries=t,!this.conversationSessionID&&e.session_id&&(this.conversationSessionID=String(e.session_id).trim()),this._applyConversationView(t),this.conversationFollowLatest&&this._scheduleLatestScroll()}_applyConversationView(e){let t=vF(e,this.conversationAnchorID);if(this.conversationFollowLatest){let n=KP(e,t.entryIDs);n&&n.id&&String(n.id)!==this.conversationAnchorID&&(this.conversationAnchorID=String(n.id),t=vF(e,this.conversationAnchorID))}this.conversationBranchEntryIDs=t.entryIDs,this.conversationMessages=t.messages}refreshLiveConversation(e){if(!this.conversationOpen||!e)return;let t=String(e.id||``).trim(),n=HP(this.conversationEntries,this.conversationAnchorID,this.conversationSessionID,this.followUpRequestID,e);if(!n.accepted)return;this.followUpRequestID=n.followUpRequestID,t&&n.submittedChild&&(this.conversationAnchorID=t,this.conversationFollowLatest=!0);let r=String(e._live_state||``).trim();if(r===`audit.flushed`||r===`audit.detail`){this.applyLiveConversationEntry(e),this.conversationMessages.length===0&&(this.conversationLoading=!0);let n=++this.conversationRequestToken;this.fetchConversation(this.conversationAnchorID||t,n,!1);return}this.applyLiveConversationEntry(e)}conversationLiveWaiting(){if(!this.conversationOpen)return!1;let e=new Set(this.conversationBranchEntryIDs||[]);return(this.conversationEntries||[]).some(t=>e.has(String(t&&t.id||``))&&t._live&&(typeof hS.liveAuditStateSettled!=`function`||!hS.liveAuditStateSettled(t._live_state)))}conversationLiveStatusText(){return(this.conversationMessages||[]).length>0?`Model is responding…`:`Waiting for request data…`}closeConversation(){this.followUpAbort&&this.followUpAbort.abort(),this.conversationOpen=!1,this.conversationRequestToken++,this.conversationSessionID=``,this.conversationBranchEntryIDs=[],this.conversationFollowLatest=!1,this.conversationOpenedFromID=``,this.followUpRequestID=``,this.followUpSending=!1,document.body.classList.remove(`conversation-drawer-open`);let e=this.conversationReturnFocusEl;this.conversationReturnFocusEl=null,e&&typeof e.focus==`function`&&document.contains(e)&&requestAnimationFrame(()=>e.focus())}_focusConversationDrawer(){if(!this.conversationOpen)return;let e=this.conversationCloseBtnEl;if(e&&typeof e.focus==`function`){e.focus();return}let t=this.conversationDialogEl;t&&typeof t.focus==`function`&&t.focus()}async fetchConversation(e,t,n=!0,r=!1){try{let i=await fo(`/admin/audit/conversation?`+(`log_id=`+encodeURIComponent(e)+`&limit=120`),{label:`audit conversation`});if(t!==this.conversationRequestToken||i.stale)return;if(!i.ok){this.conversationError=`Unable to load interactions.`,this.conversationEntries=[],this.conversationMessages=[],this.conversationBranchEntryIDs=[];return}let a=i.data||{},o=a.anchor_id||e;this.conversationEntries=Array.isArray(a.entries)?a.entries:[],r&&(this.conversationFollowLatest=qP(this.conversationEntries,o)),this.conversationAnchorID=o;let s=this.conversationEntries.find(e=>e.id===this.conversationAnchorID);s&&s.session_id&&(this.conversationSessionID=String(s.session_id).trim()),this.conversationTruncated=!!a.truncated,this._applyConversationView(this.conversationEntries),this.conversationFollowLatest?this._scheduleLatestScroll():n&&this._scheduleAnchorScroll()}catch(e){if(t!==this.conversationRequestToken)return;console.error(`Failed to fetch audit conversation:`,e),this.conversationError=`Failed to load interactions.`,this.conversationEntries=[],this.conversationMessages=[],this.conversationBranchEntryIDs=[]}finally{t===this.conversationRequestToken&&(this.conversationLoading=!1)}}selectedConversationEntry(){return WP(this.conversationEntries,this.conversationAnchorID)}followUpKind(){let e=this.selectedConversationEntry();return LP(e)?PP(e.path):``}canSendFollowUp(){return!!this.followUpKind()&&!!String(this.followUpText||``).trim()&&!this.followUpSending&&!this.conversationLiveWaiting()}async sendFollowUp(){if(!this.canSendFollowUp())return;let e=this.selectedConversationEntry(),t=RP(e,this.followUpText);if(!e||!t)return;let n=this.conversationAnchorID,r=TF(),i=new AbortController,a=!1,o=setTimeout(()=>{a=!0,i.abort()},bF);this.followUpSending=!0,this.followUpError=``,this.followUpRequestID=r,this.followUpAbort=i;try{let a=BP(e,n,r),o=await lo(e.path,{method:`POST`,headers:a,body:JSON.stringify(t),signal:i.signal}),s=String(o.headers.get(`X-Request-ID`)||``).trim();if(s&&this.followUpRequestID&&(this.followUpRequestID=s),!o.ok){let e=`Unable to send message.`;try{let t=await o.json();e=t&&t.error&&t.error.message||e}catch{}this.followUpError=e,(this.followUpRequestID===r||this.followUpRequestID===s)&&(this.followUpRequestID=``);return}if(this.followUpText=``,await wF(o),!hS.liveLogsStreaming&&this.conversationOpen){let e=++this.conversationRequestToken;await this._selectPersistedFollowUp(n,this.followUpRequestID,e,i.signal)}}catch(e){mo(e)||i.signal.aborted?a&&this.conversationOpen&&(this.followUpError=`The request timed out.`):(console.error(`Failed to send interaction follow-up:`,e),this.followUpError=`Failed to send message.`)}finally{clearTimeout(o),this.followUpAbort===i&&(this.followUpAbort=null,this.followUpSending=!1)}}async _selectPersistedFollowUp(e,t,n,r){let i=Date.now()+xF;for(;this.conversationOpen&&n===this.conversationRequestToken&&Date.now(){let e=this.conversationThreadEl;if(!e)return;let t=e.querySelectorAll(`[data-conversation-anchor="true"]`),n=t[t.length-1];n&&typeof n.scrollIntoView==`function`&&n.scrollIntoView({block:`center`})})}_scheduleLatestScroll(){requestAnimationFrame(()=>{let e=this.conversationThreadEl;if(!e)return;let t=e.lastElementChild;t&&typeof t.scrollIntoView==`function`&&t.scrollIntoView({block:`end`})})}};async function wF(e){let t=e&&e.body&&typeof e.body.getReader==`function`?e.body.getReader():null;if(!t){await e.text();return}for(;!(await t.read()).done;);}function TF(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID==`function`?globalThis.crypto.randomUUID():`dashboard-`+Date.now().toString(36)+`-`+Math.random().toString(36).slice(2)}function EF(e,t){return new Promise((n,r)=>{let i,a=()=>{clearTimeout(i),r(new DOMException(`Aborted`,`AbortError`))};if(i=setTimeout(()=>{t&&t.removeEventListener(`abort`,a),n()},e),t){if(t.aborted){a();return}t.addEventListener(`abort`,a,{once:!0})}})}var DF=new CF;hS.refreshLiveConversation=e=>DF.refreshLiveConversation(e);var OF=R(``),kF=R(` `),AF=R(``),jF=R(`
`);function MF(e,t){E(t,!0);let n=ya(t,`thread`,3,null),r=ya(t,`expanded`,3,!1),i=ya(t,`onactivate`,3,null);function a(e){e.preventDefault(),i()&&i()()}function o(e){e.stopPropagation(),e.preventDefault(),n().ontoggle()}function s(e){e.stopPropagation(),e.preventDefault(),cP.expandAuditEntry(t.entry),DF.openConversation(t.entry,e.currentTarget)}var c=jF();let l;var u=M(c),d=M(u),f=e=>{var t=OF(),r=M(t);{let e=O(()=>n().expanded?`chevron-down`:`chevron-right`);G(r,{get name(){return I(e)},class:`audit-thread-expander-svg`})}var i=P(r,2),a=M(i,!0);T(i),T(t),F(()=>{W(t,`aria-expanded`,n().expanded),W(t,`title`,`Session with `+n().count+` requests`),W(t,`aria-label`,`Session with `+n().count+` requests, `+(n().expanded?`collapse`:`expand`)),B(a,n().count)}),L(`click`,t,o),z(e,t)};V(d,e=>{n()&&e(f)});var p=P(d,2),m=M(p,!0);T(p);var h=P(p,2),g=M(h,!0);T(h);var _=P(h,2),v=e=>{var n=kF(),r=M(n,!0);T(n),F(e=>B(r,e),[()=>ps(t.entry)]),z(e,n)};V(_,e=>{(t.entry.requested_model||t.entry.model)&&e(v)});var y=P(_,2),b=M(y,!0);T(y),T(u);var x=P(u,2),S=M(x);xP(S,{get entry(){return t.entry}});var C=P(S,2),w=M(C,!0);T(C);var ee=P(C,2),te=M(ee,!0);T(ee);var ne=P(ee,2),re=e=>{var t=AF();G(M(t),{name:`chevron-right`,class:`audit-conversation-trigger-svg`}),T(t),L(`click`,t,s),z(e,t)},ie=O(()=>DF.canShowConversation(t.entry));V(ne,e=>{I(ie)&&e(re)}),T(x),T(c),F((e,n,i,a,o)=>{l=U(c,1,`audit-entry-summary svelte-17mysgz`,null,l,e),W(c,`aria-expanded`,r()),U(p,1,`audit-status-badge ${n??``}`,`svelte-17mysgz`),B(m,t.entry.status_code||`-`),B(g,t.entry.method||`-`),B(b,t.entry.path||`-`),W(C,`title`,i),B(w,a),B(te,o)},[()=>({"audit-entry-summary-live-in-progress":EN(t.entry)}),()=>TN(t.entry.status_code),()=>ss(t.entry.timestamp),()=>ao.formatTimestamp(t.entry.timestamp),()=>wN(t.entry.duration_ns)]),L(`click`,c,a),z(e,c),D()}Hr([`click`]);var NF=R(``);function PF(e,t){E(t,!0);let n=ya(t,`label`,3,`Copy`),r=ya(t,`copiedLabel`,3,`Copied`),i=ya(t,`errorLabel`,3,``),a=ya(t,`class`,3,`btn`),o=O(()=>t.state.error&&i()?i():t.state.copied?r():n());var s=NF();let c;var l=M(s),u=e=>{G(e,{name:`circle-check`,width:`14`,height:`14`,"stroke-width":`2.5`})},d=e=>{G(e,{name:`copy`,width:`14`,height:`14`})};V(l,e=>{t.state.copied?e(u):e(d,-1)});var f=P(l,2),p=M(f,!0);T(f),T(s),F(()=>{c=U(s,1,Fi([`copy-feedback-btn`,a()]),null,c,{"copy-feedback-btn-copied":t.state.copied}),B(p,I(o))}),L(`click`,s,e=>{e.preventDefault(),t.onclick?.(e)}),z(e,s),D()}Hr([`click`]);var FF=R(`
Error Message
 
`),IF=R(`
 
`),LF=R(` `),RF=R(` streaming`),zF=R(`
Body
`),BF=R(`

`),VF=R(`

`),HF=R(`

`),UF=R(`
`);function WF(e,t){E(t,!0);let n=ej({logPrefix:`Failed to copy audit payload:`}),r=ej({logPrefix:`Failed to copy audit payload:`}),i=O(()=>t.pane&&t.pane.showHeaders?Qo(t.pane.headers):``),a=O(()=>!t.pane||!t.pane.showBody?``:eF(t.pane.body)?aF(t.pane.body):DF.renderBodyWithConversationHighlights(t.pane.entry,t.pane.body,{promptCacheHighlight:t.pane.promptCacheHighlight})),o=O(()=>!!(t.pane&&DF.canShowConversation(t.pane.entry)));function s(e){e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),DF.handleErrorConversationClick(e,t.pane.entry))}var c=UF();let l;var u=M(c),d=e=>{var n=FF(),r=P(M(n),2);let i;var a=M(r,!0);T(r),T(n),F(()=>{i=U(r,1,`audit-json audit-pane-error-message svelte-1h5puht`,null,i,{"audit-pane-clickable-preview":I(o)}),W(r,`role`,I(o)?`button`:null),W(r,`tabindex`,I(o)?0:null),B(a,t.pane.errorMessage)}),L(`mousedown`,r,e=>DF.startBodyInteraction(e)),L(`keydown`,r,s),L(`click`,r,e=>DF.handleErrorConversationClick(e,t.pane.entry)),z(e,n)};V(u,e=>{t.pane.showErrorMessage&&e(d)});var f=P(u,2),p=e=>{var n=IF(),a=M(n),o=M(a),s=M(o,!0);T(o),PF(P(o,2),{get state(){return r},label:`Copy Headers`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>r.copy(t.pane.copyHeaders,Qo)}),T(a);var c=P(a,2),l=M(c,!0);T(c),T(n),F(()=>{B(s,t.pane.headersTitle||`Headers`),B(l,I(i))}),z(e,n)};V(f,e=>{t.pane.showHeaders&&e(p)});var m=P(f,2),h=e=>{var r=zF(),i=M(r),o=M(i),s=P(M(o),2),c=e=>{var n=LF(),r=M(n,!0);T(n),F(()=>B(r,t.pane.bodyCacheRatioLabel)),z(e,n)};V(s,e=>{t.pane.bodyCacheRatioLabel&&e(c)});var l=P(s,2),u=e=>{z(e,RF())};V(l,e=>{t.pane.streaming&&e(u)}),T(o),PF(P(o,2),{get state(){return n},label:`Copy Body`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>n.copy(t.pane.copyBody,Qo)}),T(i);var d=P(i,2);hi(d,()=>I(a),!0),T(d),T(r),L(`mousedown`,d,e=>DF.startBodyInteraction(e)),L(`click`,d,e=>DF.handleBodyConversationClick(e,t.pane.entry)),z(e,r)};V(m,e=>{t.pane.showBody&&e(h)});var g=P(m,2),_=e=>{var n=BF(),r=M(n,!0);T(n),F(()=>B(r,t.pane.emptyMessage)),z(e,n)};V(g,e=>{t.pane.showEmpty&&e(_)});var v=P(g,2),y=e=>{var n=VF(),r=P(M(n),2),i=M(r,!0);T(r),T(n),F(()=>B(i,t.pane.pendingMessage)),z(e,n)};V(v,e=>{t.pane.showPending&&e(y)});var b=P(v,2),x=e=>{var n=HF(),r=M(n,!0);T(n),F(()=>B(r,t.pane.tooLargeMessage)),z(e,n)};V(b,e=>{t.pane.showTooLarge&&e(x)}),T(c),F(()=>l=U(c,1,`audit-pane svelte-1h5puht`,null,l,{"audit-pane-split":t.pane&&t.pane.layout===`split`,"audit-pane-split-single":t.pane&&t.pane.layout===`split`&&!(t.pane.showHeaders&&t.pane.showBody)})),z(e,c),D()}Hr([`mousedown`,`keydown`,`click`]);var GF=R(` `),KF=R(` `),qF=R(` `),JF=R(` `),YF=R(``),XF=R(`
`),ZF=R(`
`);function QF(e,t){E(t,!0);let n=ya(t,`panes`,19,()=>[]),r=k(null),i=O(()=>iP(I(r),t.entry,n())),a=e=>`audit-tab-`+t.entry.id+`-`+e,o=e=>`audit-tabpanel-`+t.entry.id+`-`+e;function s(e,t){let i=n().map(e=>e.id),a=aP(e.key,i,t);a!=null&&(e.preventDefault(),((e.currentTarget?.closest?.(`.audit-pane-tablist`))?.querySelectorAll(`.audit-pane-tab`)[i.indexOf(a)])?.focus?.(),A(r,a,!0))}var c=ZF(),l=M(c);H(l,21,n,e=>e.id,(e,t)=>{var n=YF();let c;var l=M(n),u=M(l),d=e=>{G(e,{name:`arrow-right`})},f=e=>{G(e,{name:`arrow-left`})};V(u,e=>{I(t).pane.direction===`request`?e(d):I(t).pane.direction===`response`&&e(f,1)}),T(l);var p=P(l,2),m=M(p,!0);T(p);var h=P(p,2),g=e=>{var n=GF(),r=M(n);T(n),F(()=>B(r,`#${I(t).pane.seq??``}`)),z(e,n)};V(h,e=>{I(t).pane.seq&&e(g)});var _=P(h,2),v=e=>{var n=KF(),r=M(n,!0);T(n),F(()=>{U(n,1,`provider-badge audit-pane-kind audit-pane-kind-${I(t).pane.kind??``}`,`svelte-1bc5vi5`),B(r,I(t).pane.kind)}),z(e,n)};V(_,e=>{I(t).pane.kind&&e(v)});var y=P(_,2);H(y,17,()=>I(t).pane.noChangeSteps||[],e=>e.id,(e,t)=>{var n=qF(),r=M(n,!0);T(n),F(()=>{W(n,`title`,I(t).title),B(r,I(t).label)}),z(e,n)});var b=P(y,2),x=e=>{var n=JF(),r=M(n,!0);T(n),F(()=>B(r,I(t).pane.savingsLabel)),z(e,n)};V(b,e=>{I(t).pane.savingsLabel&&e(x)});var S=P(b,2),C=e=>{var n=KF(),r=M(n,!0);T(n),F(e=>{U(n,1,`audit-status-badge ${e??``}`,`svelte-1bc5vi5`),B(r,I(t).pane.statusCode)},[()=>TN(I(t).pane.statusCode)]),z(e,n)};V(S,e=>{I(t).pane.statusCode&&e(C)}),T(n),F((e,r)=>{c=U(n,1,`audit-pane-tab svelte-1bc5vi5`,null,c,{"audit-pane-tab-active":I(i)===I(t).id}),W(n,`aria-selected`,I(i)===I(t).id),W(n,`id`,e),W(n,`aria-controls`,r),W(n,`tabindex`,I(i)===I(t).id?0:-1),U(l,1,Fi([`audit-pane-icon`,I(t).pane.direction&&`audit-pane-icon-${I(t).pane.direction}`]),`svelte-1bc5vi5`),B(m,I(t).pane.title)},[()=>a(I(t).id),()=>o(I(t).id)]),L(`keydown`,n,e=>s(e,I(t).id)),L(`click`,n,()=>A(r,I(t).id,!0)),z(e,n)}),T(l),H(P(l,2),17,n,e=>e.id,(e,t)=>{var n=XF();let r;WF(M(n),{get pane(){return I(t).pane}}),T(n),F((e,a)=>{W(n,`id`,e),W(n,`aria-labelledby`,a),r=Hi(n,``,r,{display:I(i)===I(t).id?null:`none`})},[()=>o(I(t).id),()=>a(I(t).id)]),z(e,n)}),T(c),z(e,c),D()}Hr([`keydown`,`click`]);var $F=R(`
`),eI=R(`
`);function tI(e,t){E(t,!0);let n=ya(t,`thread`,3,null),r=O(()=>cP.isAuditEntryExpanded(t.entry)),i=O(()=>DF.conversationOpen&&String(DF.conversationAnchorID||``)===String(t.entry.id||``)),a=O(()=>I(r)?nP(t.entry,DP):[]),o=O(()=>I(r)?Zj(t.entry,KM.auditEntryWorkflow(t.entry),KM.workflowFeatureCaps()):null);function s(){cP.toggleAuditEntryExpanded(t.entry)}var c=eI();let l;var u=M(c);MF(u,{get entry(){return t.entry},get thread(){return n()},get expanded(){return I(r)},onactivate:s});var d=P(u,2),f=e=>{var n=$F(),r=M(n),i=e=>{pj(e,{get chart(){return I(o)}})};V(r,e=>{I(o)&&e(i)});var s=P(r,2);QF(s,{get entry(){return t.entry},get panes(){return I(a)}}),vP(P(s,2),{get entry(){return t.entry}}),T(n),ki(3,n,()=>Bo,()=>({y:-6,duration:WM(150)})),z(e,n)};V(d,e=>{I(r)&&e(f)}),T(c),F(()=>l=U(c,1,`audit-entry svelte-cmjgwr`,null,l,{"audit-entry-interactions-open":I(i)})),z(e,c),D()}var nI=R(`
`),rI=R(`
`),iI=R(`

`),aI=R(`
`),oI=R(`
`);function sI(e,t){E(t,!0);let n=O(()=>cN(t.entry)),r=O(()=>cP.isThreadExpanded(I(n))),i=O(()=>cP.threadChildren(I(n))),a=O(()=>I(i)&&!I(i).loading&&Number(I(i).total||0)>I(i).entries.length+1);var o=Qr(),s=N(o),c=e=>{tI(e,{get entry(){return t.entry}})},l=O(()=>!uN(t.entry)),u=e=>{var n=oI(),o=M(n);{let e=O(()=>({count:lN(t.entry),expanded:I(r),ontoggle:()=>cP.toggleThread(t.entry)}));tI(o,{get entry(){return t.entry},get thread(){return I(e)}})}var s=P(o,2),c=e=>{var t=aI(),n=M(t),r=e=>{var t=nI();px(M(t),{size:14,label:`Loading session requests`}),T(t),z(e,t)};V(n,e=>{I(i)&&I(i).loading&&e(r)});var o=P(n,2);H(o,17,()=>I(i)&&I(i).entries||[],e=>e.id,(e,t)=>{var n=rI();tI(M(n),{get entry(){return I(t)}}),T(n),z(e,n)});var s=P(o,2),c=e=>{var t=iI(),n=M(t);T(t),F(()=>B(n,`Showing the latest ${I(i).entries.length+1} of ${I(i).total??``} - requests in this session.`)),z(e,t)};V(s,e=>{I(a)&&e(c)}),T(t),ki(3,t,()=>Vo,()=>({duration:WM(150)})),z(e,t)};V(s,e=>{I(r)&&e(c)}),T(n),z(e,n)};V(s,e=>{I(l)?e(c):e(u,-1)}),z(e,o),D()}var cI=R(`
 
`),lI=R(`
 
`),uI=R(`
`),dI=R(`
`),fI=R(`
`,1),pI=R(`
`);function mI(e,t){E(t,!0);let n=O(()=>t.msg.role===`function_call`||t.msg.role===`function_result`);function r(e){return e.role===`function_call`?(e.toolCalls||[]).map(e=>e.name+`()`).join(`, `):(e.functionName?e.functionName+`: `:``)+e.text}var i=pI(),a=M(i),o=e=>{var n=cI(),i=M(n),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s,!0);T(s),T(i);var l=P(i,2),u=M(l,!0);T(l),T(n),F((e,n)=>{B(o,t.msg.roleLabel),B(c,e),B(u,n)},[()=>r(t.msg),()=>yF(t.msg)]),z(e,n)},s=e=>{var n=fI(),r=N(n),i=M(r),a=M(i,!0);T(i);var o=P(i,2),s=M(o,!0);T(o),T(r);var c=P(r,2),l=e=>{var n=lI(),r=M(n,!0);T(n),F(()=>B(r,t.msg.text)),z(e,n)};V(c,e=>{t.msg.text&&e(l)});var u=P(c,2),d=e=>{var n=dI();H(n,23,()=>t.msg.toolCalls,(e,t)=>e.name+`-`+t,(e,t)=>{var n=uI(),r=M(n),i=M(r,!0);T(r),T(n),F(()=>B(i,I(t).name+`()`)),z(e,n)}),T(n),z(e,n)};V(u,e=>{t.msg.toolCalls&&e(d)}),F(e=>{B(a,t.msg.roleLabel),B(s,e)},[()=>ao.formatTimestamp(t.msg.timestamp)]),z(e,n)};V(a,e=>{I(n)?e(o):e(s,-1)}),T(i),F(()=>{U(i,1,Fi([I(n)?`chat-function-note`:`chat-message`,t.msg.roleClass,{"is-anchor":t.msg.isAnchor,"is-after-anchor":t.msg.isAfterAnchor}]),`svelte-12s99s5`),W(i,`data-conversation-anchor`,t.msg.isAnchor?`true`:void 0),W(i,`data-entry-id`,t.msg.entryID)}),z(e,i),D()}var hI=R(``),gI=R(`
`),_I=R(`

Loading interactions...

`),vI=R(`

No interaction data available for this entry.

`),yI=R(`
`),bI=R(`

Showing the newest part of this session and the selected log.

`),xI=R(`
`),SI=R(``),CI=R(`
`),wI=R(``),TI=R(`

Interactions

`,1);function EI(e,t){E(t,!0);let n=DF;An(()=>{if(!n.conversationOpen)return;let e=Er(()=>Aa.opened()),t=e=>{e.key===`Escape`&&Aa.openCount<=1&&n.closeConversation()};return window.addEventListener(`keydown`,t),()=>{Aa.closed(e),window.removeEventListener(`keydown`,t)}});var r=TI(),i=N(r),a=e=>{var t=hI();L(`click`,t,()=>n.closeConversation()),z(e,t)};V(i,e=>{n.conversationOpen&&e(a)});var o=P(i,2);let s;var c=M(o);wo(P(M(c),2),{label:`Close interactions`,onclick:()=>n.closeConversation(),get el(){return n.conversationCloseBtnEl},set el(e){n.conversationCloseBtnEl=e}}),T(c);var l=P(c,2),u=M(l),d=e=>{var t=gI(),r=M(t,!0);T(t),F(()=>B(r,n.conversationError)),z(e,t)};V(u,e=>{n.conversationError&&e(d)});var f=P(u,2),p=e=>{z(e,_I())};V(f,e=>{n.conversationLoading&&e(p)});var m=P(f,2),h=e=>{z(e,vI())},g=O(()=>!n.conversationLoading&&!n.followUpSending&&!n.conversationError&&n.conversationMessages.length===0&&!n.conversationLiveWaiting());V(m,e=>{I(g)&&e(h)});var _=P(m,2),v=e=>{var t=yI();H(t,21,()=>n.conversationMessages,e=>e.uid,(e,t)=>{mI(e,{get msg(){return I(t)}})}),T(t),ga(t,e=>n.conversationThreadEl=e,()=>n?.conversationThreadEl),z(e,t)};V(_,e=>{n.conversationMessages.length>0&&e(v)});var y=P(_,2),b=e=>{z(e,bI())};V(y,e=>{n.conversationTruncated&&e(b)});var x=P(y,2),S=e=>{var t=xI(),r=P(M(t),2),i=M(r,!0);T(r),T(t),F(e=>B(i,e),[()=>n.conversationLiveStatusText()]),z(e,t)},C=O(()=>n.conversationLiveWaiting());V(x,e=>{I(C)&&e(S)}),T(l);var w=P(l,2),ee=e=>{var t=wI(),r=M(t),i=e=>{var t=CI(),r=P(M(t),2);ft(r);var i=P(r,2),a=e=>{var t=SI(),r=M(t,!0);T(t),F(()=>B(r,n.followUpError)),z(e,t)};V(i,e=>{n.followUpError&&e(a)});var o=P(i,2),s=M(o),c=M(s,!0);T(s);var l=P(s,2),u=M(l,!0);T(l),T(o),T(t),F((e,t,i)=>{r.disabled=e,B(c,t),l.disabled=i,B(u,n.followUpSending?`Sending…`:`Send`)},[()=>n.followUpSending||n.conversationLiveWaiting(),()=>n.selectedConversationEntry()?.path||``,()=>!n.canSendFollowUp()]),Vr(`submit`,t,e=>{e.preventDefault(),n.sendFollowUp()}),da(r,()=>n.followUpText,e=>n.followUpText=e),z(e,t)},a=O(()=>n.followUpKind());V(r,e=>{I(a)&&e(i)});var o=P(r,2),s=M(o,!0);T(o),T(t),F(()=>B(s,n.conversationFollowLatest?`Following latest interaction`:`Opened from log: `+n.conversationOpenedFromID)),z(e,t)};V(w,e=>{n.conversationAnchorID&&e(ee)}),T(o),ga(o,e=>n.conversationDialogEl=e,()=>n?.conversationDialogEl),F(()=>{s=U(o,1,`conversation-drawer`,null,s,{open:n.conversationOpen}),W(o,`aria-hidden`,!n.conversationOpen)}),z(e,r),D()}Hr([`click`]);var DI=R(`

.

`),OI=R(`
Audit logging is off. Live entries are temporary and disappear after - refresh. Set LOGGING_ENABLED=true to persist them.
`),kI=R(`

`),AI=R(`
`),jI=R(`
`),MI=R(`
`),NI=R(`
`),PI=R(`
`);function FI(e,t){E(t,!0);let n=O(()=>_o.config&&_o.config.LOGGING_RETENTION_DAYS);An(()=>{if(K.refreshTick,Ha.page===`audit-logs`)return Er(()=>r())});function r(){let e=!1;return(async()=>{try{await _o.ensureLoaded()}finally{await cP.fetchAuditLog(!0),!e&&_o.liveLogsVisible()&&hS.ensureLiveLogs()}})(),()=>{e=!0,hS.stopLiveLogs()}}var i=PI(),a=M(i),o=M(a),s=P(M(o),2),c=e=>{Rx(e,{copyId:`audit-retention-help-copy`,label:`retention help`,text:`If you want to change the retention period, set LOGGING_RETENTION_DAYS (env var) or logging.retention_days (config.yaml) and restart the gateway. Default is 30 days; 0 keeps audit logs forever.`,title:e=>{var t=DI(),r=M(t,!0),i=P(r),a=M(i,!0);T(i),Ue(),T(t),F((e,t)=>{B(r,e),B(a,t)},[()=>iN(I(n)),()=>aN(I(n))]),z(e,t)},$$slots:{title:!0}})},l=O(()=>rN(I(n)));V(s,e=>{I(l)&&e(c)}),T(o),T(a);var u=P(a,2);Js(M(u),{onchange:()=>cP.fetchAuditLog(!0)}),T(u);var d=P(u,2);Os(d,{});var f=P(d,2),p=e=>{z(e,OI())},m=O(()=>_o.loaded&&!_o.auditVisible()&&!K.needsAuth);V(f,e=>{I(m)&&e(p)});var h=P(f,2),g=M(h);uP(g,{});var _=P(g,2),v=M(_),y=M(v),b=e=>{var t=kI(),n=M(t);T(t),F(e=>B(n,`Showing ${cP.auditLog.offset+1}-${e??``} of ${cP.auditLog.total??``} - ${cP.auditGroupSessions?`sessions`:`logs`}`),[()=>Math.min(cP.auditLog.offset+cP.auditLog.limit,cP.auditLog.total)]),z(e,t)};V(y,e=>{cP.auditLog.total>0&&e(b)});var x=P(y,2),S=M(x);na(S),Ue(2),T(x),T(v),hP(P(v,2),{}),T(_);var C=P(_,2),w=e=>{var t=AI();px(M(t),{size:18,label:`Loading audit logs`}),T(t),z(e,t)},ee=e=>{var t=MI();H(t,29,()=>cP.auditLog.entries,e=>e.id,(e,t)=>{var n=jI(),r=M(n),i=e=>{sI(e,{get entry(){return I(t)}})},a=e=>{tI(e,{get entry(){return I(t)}})};V(r,e=>{cP.auditGroupSessions?e(i):e(a,-1)}),T(n),Oi(n,()=>BM,()=>({duration:WM(150)})),ki(1,n,()=>GM,()=>({live:I(t)._live})),z(e,n)}),T(t),z(e,t)};V(C,e=>{cP.loading&&cP.auditLog.entries.length===0?e(w):cP.auditLog.entries.length>0&&e(ee,1)});var te=P(C,2),ne=e=>{var t=NI();gx(M(t),{}),T(t),z(e,t)};V(te,e=>{cP.auditLog.entries.length===0&&!cP.loading&&!K.needsAuth&&e(ne)}),jC(P(te,2),{get total(){return cP.auditLog.total},get offset(){return cP.auditLog.offset},get limit(){return cP.auditLog.limit},onprev:()=>cP.auditLogPrevPage(),onnext:()=>cP.auditLogNextPage()}),T(h),EI(P(h,2),{}),T(i),F(()=>ia(S,cP.auditGroupSessions)),L(`change`,S,()=>cP.toggleAuditGroupSessions()),z(e,i),D()}Hr([`change`]);function II(e){try{let t=JSON.parse(JSON.stringify(e||{}));return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function LI(e){return Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(e=>e):e==null?[]:String(e).split(`,`).map(e=>e.trim()).filter(e=>e)}function RI(e,t){let n=String(t||``).trim();return(e||[]).find(e=>String(e&&e.type||``).trim()===n)||null}function zI(e){return Array.isArray(e)&&e.length>0&&String(e[0].type||``).trim()||`system_prompt`}function BI(e,t){let n=String(t||``).trim();return n&&RI(e,n)?n:zI(e)}function VI(e,t){let n=RI(e,t);return!n||!n.defaults?{}:II(n.defaults)}function HI(e,t,n){return{...VI(e,n),...II(t)}}function UI(e,t){let n=BI(e,t);return{name:``,type:n,description:``,user_path:``,config:VI(e,n)}}function WI(e,t){if(!t)return e||[];let n=String(t).toLowerCase();return(e||[]).filter(e=>[e.name,e.type,e.user_path,e.description,e.summary].some(e=>String(e||``).toLowerCase().includes(n)))}function GI(e,t){let n=RI(e,t);return n&&n.label?n.label:t||`Unknown`}function KI(e,t){let n=RI(e,t);return Array.isArray(n&&n.fields)?n.fields:[]}function qI(e,t){if(!t||!e)return t&&t.input===`checkboxes`?[]:``;let n=e[t.key];return n==null?t.input===`checkboxes`?[]:``:t.input===`checkboxes`?LI(n):n}function JI(e,t,n){if(!t)return e;let r=II(e);if(t.input===`number`){let e=String(n||``).trim();if(e===``)delete r[t.key];else{let n=Number(e);r[t.key]=Number.isFinite(n)?n:e}}else t.input===`checkboxes`?r[t.key]=LI(n):r[t.key]=n;return r}function YI(e,t,n){return qI(e,t).includes(String(n||``).trim())}function XI(e,t,n,r){let i=LI(qI(e,t)),a=String(n||``).trim();return a?JI(e,t,r?Array.from(new Set([...i,a])):i.filter(e=>e!==a)):e}function ZI(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),description:String(e&&e.description||``).trim()||void 0,user_path:String(e&&e.user_path||``).trim()||void 0,config:II(e&&e.config)}}var QI=new class{#e=k(j([]));get guardrails(){return I(this.#e)}set guardrails(e){A(this.#e,e,!0)}#t=k(j([]));get types(){return I(this.#t)}set types(e){A(this.#t,e,!0)}#n=k(!0);get available(){return I(this.#n)}set available(e){A(this.#n,e,!0)}#r=k(!1);get loading(){return I(this.#r)}set loading(e){A(this.#r,e,!0)}#i=k(!1);get typesLoading(){return I(this.#i)}set typesLoading(e){A(this.#i,e,!0)}#a=k(``);get error(){return I(this.#a)}set error(e){A(this.#a,e,!0)}#o=k(``);get filter(){return I(this.#o)}set filter(e){A(this.#o,e,!0)}#s=k(!1);get formOpen(){return I(this.#s)}set formOpen(e){A(this.#s,e,!0)}#c=k(!1);get formSubmitting(){return I(this.#c)}set formSubmitting(e){A(this.#c,e,!0)}#l=k(``);get deletingName(){return I(this.#l)}set deletingName(e){A(this.#l,e,!0)}#u=k(`create`);get formMode(){return I(this.#u)}set formMode(e){A(this.#u,e,!0)}#d=k(``);get formOriginalName(){return I(this.#d)}set formOriginalName(e){A(this.#d,e,!0)}#f=k(j({name:``,type:``,description:``,user_path:``,config:{}}));get form(){return I(this.#f)}set form(e){A(this.#f,e,!0)}get filtered(){return WI(this.guardrails,this.filter)}typeLabel(e){return GI(this.types,e)}typeFields(e){return KI(this.types,e)}fieldValue(e){return qI(this.form&&this.form.config,e)}setFieldValue(e,t){this.form={...this.form,config:JI(this.form.config,e,t)}}arrayFieldSelected(e,t){return YI(this.form&&this.form.config,e,t)}toggleArrayFieldValue(e,t,n){this.form={...this.form,config:XI(this.form.config,e,t,n)}}openCreate(){this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=UI(this.types,zI(this.types)),this.formOpen=!0}openEdit(e){let t=BI(this.types,e&&e.type);this.formMode=`edit`,this.formOriginalName=String(e&&e.name||``).trim(),this.error=``,this.form={name:this.formOriginalName,type:t,description:String(e&&e.description||``).trim(),user_path:String(e&&e.user_path||``).trim(),config:HI(this.types,e&&e.config,t)},this.formOpen=!0}closeForm(){this.formOpen=!1,this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=UI(this.types,zI(this.types))}changeType(e){let t=BI(this.types,e);this.form={...this.form,type:t,config:VI(this.types,t)}}async fetchTypes(){this.typesLoading=!0;try{let e=await ew(`/admin/guardrails/types`,{label:`guardrail types`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.types=[];return}if(e.result&&(this.available=!0),this.types=e.items,e.status===`error`){this.error=e.error;return}let t=BI(this.types,this.form.type);this.form={...this.form,type:t,config:HI(this.types,this.form.config,t)}}finally{this.typesLoading=!1}}async fetchGuardrails(){this.loading=!0,this.error=``;try{let e=await ew(`/admin/guardrails`,{label:`guardrails`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.guardrails=[];return}e.result&&(this.available=!0),this.guardrails=e.items,this.error=e.error}finally{this.loading=!1}}async fetchPage(){await Promise.all([this.fetchTypes(),this.fetchGuardrails()])}async submitForm(){let e=String(this.form.name||``).trim(),t=String(this.form.type||``).trim();if(!e){this.error=`Name is required.`;return}if(!t){this.error=`Type is required.`;return}this.error=``,this.formSubmitting=!0;let n=ZI(this.form);try{let t=await tw(`/admin/guardrails`,`PUT`,n,{label:`save guardrail`,errorFallback:`Failed to save guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}q.success(`Guardrail "`+e+`" saved.`),this.closeForm(),this.fetchGuardrails()}finally{this.formSubmitting=!1}}async deleteGuardrail(e){let t=String(e&&e.name||``).trim();if(!(!t||this.deletingName)&&window.confirm(`Delete guardrail "`+t+`"? Workflows that still reference it must be updated first.`)){this.deletingName=t;try{let e=await tw(`/admin/guardrails`,`DELETE`,{name:t},{label:`delete guardrail`,errorFallback:`Failed to delete guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,q.error(e.error);return}if(e.status===`error`){q.error(e.error);return}q.success(`Guardrail "`+t+`" deleted.`),this.formOpen&&this.formOriginalName===t&&this.closeForm(),this.fetchGuardrails()}finally{this.deletingName=``}}}},$I=R(`
`),eL=R(`

Loading guardrails...

`),tL=R(`
`),nL=R(`
`),rL=R(`
NameTypeUser PathSummaryActions
`),iL=R(`

No guardrails defined yet.

`),aL=R(`

Instances

Each instance has a reusable name, a type, an optional user path for - future UI visibility scoping, and a JSON-backed config payload for - that type.

`);function oL(e,t){E(t,!0);var n=aL(),r=M(n),i=P(M(r),2);G(M(i),{name:`plus`,class:`form-action-icon`}),Ue(2),T(i),T(r);var a=P(r,2),o=e=>{var t=$I(),n=M(t);nC(M(n),{id:`guardrail-filter`,placeholder:`Filter by name, type, user path, summary...`,label:`Guardrail filter`,get value(){return QI.filter},set value(e){QI.filter=e}}),T(n),T(t),z(e,t)};V(a,e=>{QI.available&&e(o)});var s=P(a,2),c=e=>{var t=eL();px(M(t),{size:16,label:`Loading guardrails`}),Ue(),T(t),z(e,t)};V(s,e=>{QI.loading&&QI.filtered.length===0&&e(c)});var l=P(s,2),u=e=>{var t=rL(),n=M(t),r=P(M(n));H(r,21,()=>QI.filtered,e=>e.name,(e,t)=>{var n=nL(),r=M(n),i=M(r,!0);T(r);var a=P(r),o=M(a),s=M(o,!0);T(o),T(a);var c=P(a),l=M(c,!0);T(c);var u=P(c),d=M(u),f=M(d,!0);T(d);var p=P(d,2),m=e=>{var n=tL(),r=M(n,!0);T(n),F(()=>B(r,I(t).description)),z(e,n)};V(p,e=>{I(t).description&&e(m)}),T(u);var h=P(u),g=M(h),_=M(g);{let e=O(()=>`Edit guardrail `+I(t).name);$C(_,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>QI.openEdit(I(t)),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}var v=P(_,2);{let e=O(()=>(QI.deletingName===I(t).name?`Deleting guardrail `:`Delete guardrail `)+I(t).name),n=O(()=>QI.deletingName===I(t).name);$C(v,{get label(){return I(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>QI.deleteGuardrail(I(t)),get disabled(){return I(n)},children:(e,t)=>{G(e,{name:`x`,class:`table-icon-svg`})},$$slots:{default:!0}})}T(g),T(h),T(n),F(e=>{B(i,I(t).name),B(s,e),B(l,I(t).user_path||`—`),B(f,I(t).summary||I(t).description||`No summary yet.`)},[()=>QI.typeLabel(I(t).type)]),z(e,n)}),T(r),T(n),T(t),z(e,t)};V(l,e=>{QI.filtered.length>0&&e(u)});var d=P(l,2),f=e=>{z(e,iL())};V(d,e=>{QI.filtered.length===0&&!QI.loading&&QI.available&&!QI.error&&!K.authError&&e(f)}),T(n),F(()=>i.disabled=QI.typesLoading||QI.formSubmitting||!QI.available),L(`click`,i,()=>QI.openCreate()),z(e,n),D()}Hr([`click`]);var sL=R(`

Workflows reference these names directly, so renames are - intentionally avoided after creation.

`),cL=R(``),lL=R(``),uL=R(``),dL=R(``),fL=R(``),pL=R(``),mL=R(``),hL=R(``),gL=R(``),_L=R(`
`),vL=R(``),yL=R(` `),bL=R(`
`),xL=R(`
`);function SL(e,t){E(t,!0);let n=O(()=>QI.formMode===`edit`);{let t=e=>{z(e,sL())},r=O(()=>I(n)?`Edit Guardrail`:`Create Guardrail`);rT(e,{get open(){return QI.formOpen},get title(){return I(r)},ariaLabel:`Guardrail editor`,get error(){return QI.error},get submitting(){return QI.formSubmitting},submitLabel:`Save Guardrail`,dialogClass:`settings-guardrails-editor guardrails-editor-wide`,onclose:()=>QI.closeForm(),onsubmit:()=>QI.submitForm(),headerHint:t,children:(e,t)=>{var r=xL(),i=M(r);aT(i,{id:`guardrail-name`,label:`Name`,children:(e,t)=>{var r=cL();na(r),F(()=>{r.disabled=I(n),W(r,`data-modal-autofocus`,!I(n)||void 0)}),da(r,()=>QI.form.name,e=>QI.form.name=e),z(e,r)},$$slots:{default:!0}});var a=P(i,2);aT(a,{id:`guardrail-type`,label:`Type`,children:(e,t)=>{var r=uL();H(r,21,()=>QI.types,e=>e.type,(e,t)=>{var n=lL(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).type)&&(n.value=(n.__value=I(t).type)??``)}),z(e,n)}),T(r);var i;Wi(r),F(()=>{r.disabled=I(n),i!==(i=QI.form.type)&&(r.value=(r.__value=QI.form.type)??``,Ui(r,QI.form.type))}),L(`change`,r,e=>QI.changeType(e.currentTarget.value)),z(e,r)},$$slots:{default:!0}});var o=P(a,2);aT(o,{id:`guardrail-description`,label:`Description`,children:(e,t)=>{var r=dL();na(r),F(()=>W(r,`data-modal-autofocus`,I(n)?!0:void 0)),da(r,()=>QI.form.description,e=>QI.form.description=e),z(e,r)},$$slots:{default:!0}});var s=P(o,2),c=M(s);Rx(c,{copyId:`guardrail-user-path-help-copy`,label:`guardrail user path help`,text:`Only used for auxiliary rewrite (llm_based_altering) guardrails; ignored for other guardrail types.`,title:e=>{z(e,fL())},$$slots:{title:!0}});var l=P(c,2);na(l),T(s),H(P(s,2),17,()=>QI.typeFields(QI.form.type),e=>e.key,(e,t)=>{var n=Qr(),r=N(n),i=e=>{var n=_L(),r=M(n);{let e=e=>{var n=pL(),r=M(n,!0);T(n),F(()=>{W(n,`for`,`guardrail-field-`+I(t).key),B(r,I(t).label)}),z(e,n)},n=O(()=>`guardrail-field-help-`+I(t).key),i=O(()=>I(t).label+` help`),a=O(()=>I(t).help||``);Rx(r,{get copyId(){return I(n)},get label(){return I(i)},get text(){return I(a)},title:e,$$slots:{title:!0}})}var i=P(r,2),a=e=>{var n=mL();H(n,21,()=>I(t).options||[],e=>e.value,(e,t)=>{var n=lL(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n);var r;Wi(n),F(e=>{W(n,`id`,`guardrail-field-`+I(t).key),W(n,`aria-describedby`,I(t).help?`guardrail-field-help-`+I(t).key:void 0),r!==(r=e)&&(n.value=(n.__value=e)??``,Ui(n,e))},[()=>QI.fieldValue(I(t))]),L(`change`,n,e=>QI.setFieldValue(I(t),e.currentTarget.value)),z(e,n)},o=e=>{var n=hL();ft(n),F(e=>{W(n,`id`,`guardrail-field-`+I(t).key),W(n,`placeholder`,I(t).placeholder||``),ra(n,e),W(n,`aria-describedby`,I(t).help?`guardrail-field-help-`+I(t).key:void 0)},[()=>QI.fieldValue(I(t))]),L(`input`,n,e=>QI.setFieldValue(I(t),e.currentTarget.value)),z(e,n)},s=e=>{var n=gL();na(n),F(e=>{W(n,`id`,`guardrail-field-`+I(t).key),W(n,`type`,I(t).input||`text`),W(n,`placeholder`,I(t).placeholder||``),ra(n,e),W(n,`aria-describedby`,I(t).help?`guardrail-field-help-`+I(t).key:void 0)},[()=>QI.fieldValue(I(t))]),L(`input`,n,e=>QI.setFieldValue(I(t),e.currentTarget.value)),z(e,n)};V(i,e=>{I(t).input===`select`?e(a):I(t).input===`textarea`?e(o,1):e(s,-1)}),T(n),z(e,n)},a=e=>{var n=bL(),r=M(n),i=M(r,!0);T(r);var a=P(r,2);H(a,21,()=>I(t).options||[],e=>I(t).key+`-`+e.value,(e,n)=>{var r=vL(),i=M(r);na(i);var a=P(i,2),o=M(a,!0);T(a),T(r),F(e=>{ia(i,e),B(o,I(n).label)},[()=>QI.arrayFieldSelected(I(t),I(n).value)]),L(`change`,i,e=>QI.toggleArrayFieldValue(I(t),I(n).value,e.currentTarget.checked)),z(e,r)}),T(a);var o=P(a,2),s=e=>{var n=yL(),r=M(n,!0);T(n),F(()=>{W(n,`id`,`guardrail-field-help-`+I(t).key),B(r,I(t).help)}),z(e,n)};V(o,e=>{I(t).help&&e(s)}),T(n),F(()=>{W(n,`aria-describedby`,I(t).help?`guardrail-field-help-`+I(t).key:void 0),B(i,I(t).label)}),z(e,n)};V(r,e=>{I(t).input===`checkboxes`?e(a,-1):e(i)}),z(e,n)}),T(r),da(l,()=>QI.form.user_path,e=>QI.form.user_path=e),z(e,r)},$$slots:{headerHint:!0,default:!0}})}D()}Hr([`change`,`input`]);var CL=R(`

Guardrails

`),wL=R(`
Runtime guardrail execution is currently off because GUARDRAILS_ENABLED is disabled. You can still manage - definitions here.
`),TL=R(`
Guardrails feature is unavailable.
`),EL=R(`
`),DL=R(`

Reusable Policy Objects

Guardrail Library

Store guardrails in the database, keep them hot in memory, and attach - them to workflows by reference.

Instances
Types
`);function OL(e,t){E(t,!0),An(()=>{K.refreshTick,Ha.page===`guardrails`&&(_o.ensureLoaded(),QI.fetchPage())});var n=DL(),r=M(n),i=M(r);Rx(M(i),{copyId:`guardrails-help-copy`,label:`guardrails help`,text:`Reusable policy objects stored in the database and kept hot in memory for workflow execution.`,title:e=>{z(e,CL())},$$slots:{title:!0}}),T(i),T(r);var a=P(r,2),o=P(M(a),2),s=M(o),c=P(M(s),2),l=M(c,!0);T(c),T(s);var u=P(s,2),d=P(M(u),2),f=M(d,!0);T(d),T(u),T(o),T(a);var p=P(a,2);Os(p,{});var m=P(p,2),h=e=>{z(e,wL())},g=O(()=>!_o.guardrailsVisible());V(m,e=>{I(g)&&e(h)});var _=P(m,2),v=e=>{z(e,TL())};V(_,e=>{!K.authError&&!QI.available&&e(v)});var y=P(_,2),b=e=>{var t=EL(),n=M(t,!0);T(t),F(()=>B(n,QI.error)),z(e,t)};V(y,e=>{!K.authError&&QI.error&&!QI.formOpen&&e(b)});var x=P(y,2);SL(x,{}),oL(P(x,2),{}),T(n),F((e,t)=>{B(l,e),B(f,t)},[()=>$o(QI.guardrails.length),()=>$o(QI.types.length)]),z(e,n),D()}var Q=new class{#e=k(j([]));get servers(){return I(this.#e)}set servers(e){A(this.#e,e,!0)}#t=k(!0);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get error(){return I(this.#r)}set error(e){A(this.#r,e,!0)}#i=k(``);get filter(){return I(this.#i)}set filter(e){A(this.#i,e,!0)}#a=k(!1);get formOpen(){return I(this.#a)}set formOpen(e){A(this.#a,e,!0)}#o=k(!1);get formSubmitting(){return I(this.#o)}set formSubmitting(e){A(this.#o,e,!0)}#s=k(`create`);get formMode(){return I(this.#s)}set formMode(e){A(this.#s,e,!0)}#c=k(!1);get slugEdited(){return I(this.#c)}set slugEdited(e){A(this.#c,e,!0)}#l=k(!1);get advancedOpen(){return I(this.#l)}set advancedOpen(e){A(this.#l,e,!0)}#u=k(j(nb()));get form(){return I(this.#u)}set form(e){A(this.#u,e,!0)}#d=k(``);get deletingName(){return I(this.#d)}set deletingName(e){A(this.#d,e,!0)}#f=k(``);get reconnectingName(){return I(this.#f)}set reconnectingName(e){A(this.#f,e,!0)}#p=k(!1);get catalogOpen(){return I(this.#p)}set catalogOpen(e){A(this.#p,e,!0)}#m=k(!1);get catalogLoading(){return I(this.#m)}set catalogLoading(e){A(this.#m,e,!0)}#h=k(``);get catalogError(){return I(this.#h)}set catalogError(e){A(this.#h,e,!0)}#g=k(j(rb()));get catalog(){return I(this.#g)}set catalog(e){A(this.#g,e,!0)}#_=O(()=>mb(this.servers,this.filter));get filtered(){return I(this.#_)}set filtered(e){A(this.#_,e)}async fetchServers(){if(await _o.ensureLoaded(),!_o.mcpVisible()){this.available=!1,this.servers=[],this.error=``,this.loading=!1;return}this.loading=!0,this.error=``;try{let e=await ew(`/admin/mcp-servers`,{label:`mcp servers`,errorFallback:`Failed to load MCP servers.`,unavailableStatuses:[503,404]});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.servers=[];return}if(e.status===`error`){e.result&&(this.available=!0),this.servers=[],this.error=e.error;return}this.available=!0,this.servers=e.items}finally{this.loading=!1}}openCreate(){this.formMode=`create`,this.slugEdited=!1,this.advancedOpen=!1,this.error=``,this.form=nb(),this.formOpen=!0}openEdit(e){!e||e.managed||(this.formMode=`edit`,this.slugEdited=!0,this.advancedOpen=!1,this.error=``,this.form=hb(e),this.formOpen=!0)}closeForm(){this.formOpen=!1,this.formMode=`create`,this.slugEdited=!1,this.advancedOpen=!1,this.error=``,this.form=nb()}syncSlugFromName(){this.formMode===`create`&&!this.slugEdited&&(this.form.slug=ub(this.form.name))}markSlugEdited(){this.formMode===`create`&&(this.slugEdited=!0)}addHeader(){this.form.headers.push({name:``,value:``})}removeHeader(e){this.form.headers.splice(e,1)}async submitForm(){let e=gb(this.form,this.formMode,this.servers);if(e.error){this.error=e.error;return}this.error=``,this.formSubmitting=!0;try{let t=await tw(`/admin/mcp-servers`,`PUT`,e.payload,{label:`save mcp server`,errorFallback:`Failed to save MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}q.success(`MCP server "`+e.payload.name+`" saved.`),this.closeForm(),this.fetchServers()}finally{this.formSubmitting=!1}}async deleteServer(e){let t=String(e&&e.name||``).trim(),n=ib(e);if(!(!n||this.deletingName||e&&e.managed)&&confirm(`Delete MCP server "`+t+`"? Clients lose access to its tools immediately.`)){this.deletingName=n;try{let e=await tw(`/admin/mcp-servers/`+encodeURIComponent(n),`DELETE`,void 0,{label:`delete mcp server`,errorFallback:`Failed to delete MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,q.error(e.error);return}if(e.status===`error`){q.error(e.error);return}q.success(`MCP server "`+t+`" deleted.`),this.formOpen&&this.form.slug===n&&this.closeForm(),this.fetchServers()}finally{this.deletingName=``}}}async reconnectServer(e){let t=String(e&&e.name||``).trim(),n=ib(e);if(!(!n||this.reconnectingName)){this.reconnectingName=n;try{let e=await tw(`/admin/mcp-servers/`+encodeURIComponent(n)+`/reconnect`,`POST`,void 0,{label:`reconnect mcp server`,errorFallback:`Failed to reconnect MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,q.error(e.error);return}if(e.status===`error`){q.error(e.error);return}let r=e.result.data,i=ab(r);i===`connected`?q.success(`MCP server "`+t+`" reconnected.`):i===`disabled`?q.success(`MCP server "`+t+`" is disabled; no connection was attempted.`):q.error(`Reconnect attempted, but MCP server "`+t+`" is still `+i+`.`),r&&r.name?this.servers=(this.servers||[]).map(e=>ib(e)===ib(r)?r:e):this.fetchServers()}finally{this.reconnectingName=``}}}async openCatalog(e){let t=String(e&&e.name||``).trim(),n=ib(e);if(n){this.catalogOpen=!0,this.catalogLoading=!0,this.catalogError=``,this.catalog={...rb(),server:n,status:ab(e)};try{let e=await fo(`/admin/mcp-servers/`+encodeURIComponent(n)+`/catalog`,{label:`mcp server catalog`});if(e.stale)return;if(e.status===503){this.available=!1,this.catalogError=`MCP server management is unavailable.`;return}if(e.status===404){this.catalogError=`MCP server "`+t+`" was not found.`;return}if(!e.ok){this.catalogError=e.status===401?`Authentication required.`:oo(e.data,`Failed to load MCP server catalog.`);return}this.catalog=_b(n,e.data)}catch(e){console.error(`Failed to load MCP server catalog:`,e),this.catalogError=`Failed to load MCP server catalog.`}finally{this.catalogLoading=!1}}}closeCatalog(){this.catalogOpen=!1,this.catalogLoading=!1,this.catalogError=``,this.catalog=rb()}},kL=R(``),AL=R(`

`),jL=R(`
`),ML=R(`

`),NL=R(`
  • `),PL=R(`

      `),FL=R(`

      No tools listed — the server may still be connecting or degraded.

      `),IL=R(` `,1),LL=R(``);function RL(e,t){E(t,!0);let n=O(()=>yb(Q.catalog));Eo(e,{get open(){return Q.catalogOpen},variant:`editor`,onclose:()=>Q.closeCatalog(),children:(e,t)=>{var r=LL(),i=M(r),a=M(i),o=P(M(a),2),s=M(o),c=M(s,!0);T(s);var l=P(s,2),u=M(l,!0);T(l),T(o),T(a),wo(P(a,2),{label:`Close MCP server catalog`,onclick:()=>Q.closeCatalog()}),T(i);var d=P(i,2),f=e=>{ZC(e,{label:`Loading catalog...`})},p=e=>{var t=kL(),n=M(t,!0);T(t),F(()=>B(n,Q.catalogError)),z(e,t)},m=e=>{var t=IL(),r=N(t),i=e=>{var t=AL(),n=M(t,!0);T(t),F(()=>B(n,Q.catalog.instructions)),z(e,t)};V(r,e=>{Q.catalog.instructions&&e(i)});var a=P(r,2);H(a,17,()=>I(n),e=>e.key,(e,t)=>{var n=PL(),r=M(n),i=M(r,!0);T(r);var a=P(r,2);H(a,21,()=>I(t).items,e=>e.key,(e,t)=>{var n=NL(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=e=>{var n=jL(),r=M(n,!0);T(n),F(()=>{W(n,`title`,`Exposed on the aggregated /mcp endpoint as `+I(t).aggregated),B(r,I(t).aggregated)}),z(e,n)};V(a,e=>{I(t).aggregated&&e(o)});var s=P(a,2),c=e=>{var n=ML(),r=M(n,!0);T(n),F(()=>B(r,I(t).description)),z(e,n)};V(s,e=>{I(t).description&&e(c)}),T(n),F(()=>{W(r,`title`,I(t).aggregated||I(t).name),B(i,I(t).name)}),z(e,n)}),T(a),T(n),F(()=>B(i,I(t).title)),z(e,n)});var o=P(a,2),s=e=>{z(e,FL())},c=O(()=>bb(Q.catalog));V(o,e=>{I(c)&&e(s)}),z(e,t)};V(d,e=>{Q.catalogLoading?e(f):Q.catalogError?e(p,1):e(m,-1)});var h=P(d,2),g=M(h);T(h),T(r),F((e,t)=>{B(c,Q.catalog.server),U(l,1,`audit-status-badge ${e??``}`,`svelte-1xqrzco`),B(u,t)},[()=>ob(Q.catalog),()=>ab(Q.catalog)]),L(`click`,g,()=>Q.closeCatalog()),z(e,r)},$$slots:{default:!0}}),D()}Hr([`click`]);var zL=R(`

      The display name can change. The slug is the stable client-facing identity.

      `),BL=R(` Human-readable and Unicode-friendly. You can change it later.`,1),VL=R(`Derived from the name. You may edit it before saving.`),HL=R(`Immutable because it is used in URLs, scope headers, and aggregated tool names.`),UL=R(` `,1),WL=R(` stdio servers are config-only: declare them in config.yaml under mcp.servers.`,1),GL=R(``),KL=R(`
      `),qL=R(`
      Headers
      Sent only to the configured server origin. Saved values are shown as ***; leave *** unchanged to keep the stored value.
      Advanced settings Description, access rules, and timeout
      `,1);function JL(e,t){E(t,!0);{let t=e=>{z(e,zL())},n=O(()=>Q.formMode===`edit`?`Edit MCP Server`:`Add MCP Server`);rT(e,{get open(){return Q.formOpen},get title(){return I(n)},ariaLabel:`MCP server editor`,get error(){return Q.error},get submitting(){return Q.formSubmitting},onclose:()=>Q.closeForm(),onsubmit:()=>Q.submitForm(),headerHint:t,children:(e,t)=>{var n=qL(),r=N(n);aT(r,{id:`mcp-server-name`,label:`Name`,children:(e,t)=>{var n=BL(),r=N(n);na(r),Ue(2),L(`input`,r,()=>Q.syncSlugFromName()),da(r,()=>Q.form.name,e=>Q.form.name=e),z(e,n)},$$slots:{default:!0}});var i=P(r,2);aT(i,{id:`mcp-server-slug`,label:`Slug`,children:(e,t)=>{var n=UL(),r=N(n);na(r);var i=P(r,2),a=e=>{z(e,VL())},o=e=>{z(e,HL())};V(i,e=>{Q.formMode===`create`?e(a):e(o,-1)}),F(()=>r.disabled=Q.formMode===`edit`),L(`input`,r,()=>Q.markSlugEdited()),da(r,()=>Q.form.slug,e=>Q.form.slug=e),z(e,n)},$$slots:{default:!0}});var a=P(i,2);aT(a,{id:`mcp-server-transport`,label:`Transport`,children:(e,t)=>{var n=WL(),r=N(n),i=M(r);i.value=i.__value=`http`;var a=P(i);a.value=a.__value=`sse`,T(r),Ue(2),Gi(r,()=>Q.form.transport,e=>Q.form.transport=e),z(e,n)},$$slots:{default:!0}});var o=P(a,2);aT(o,{id:`mcp-server-url`,label:`URL`,children:(e,t)=>{var n=GL();na(n),da(n,()=>Q.form.url,e=>Q.form.url=e),z(e,n)},$$slots:{default:!0}});var s=P(o,2),c=P(M(s),2);H(c,21,()=>Q.form.headers,oi,(e,t,n)=>{var r=KL(),i=M(r);na(i);var a=P(i,2);na(a),$C(P(a,2),{label:`Remove header`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Q.removeHeader(n),children:(e,t)=>{G(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}}),T(r),da(i,()=>I(t).name,e=>I(t).name=e),da(a,()=>I(t).value,e=>I(t).value=e),z(e,r)}),T(c);var l=P(c,2),u=M(l);G(M(u),{name:`plus`,class:`form-action-icon`}),Ue(2),T(u),T(l),Ue(2),T(s);var d=P(s,2),f=M(d);rk(M(f),{get enabled(){return Q.form.enabled},label:`MCP server`,onclick:()=>Q.form.enabled=!Q.form.enabled}),T(f),T(d);var p=P(d,2),m=P(M(p),2),h=M(m),g=P(M(h),2);na(g),T(h);var _=P(h,2),v=P(M(_),2);na(v),T(_);var y=P(_,2),b=P(M(y),2);na(b),T(y);var x=P(y,2),S=P(M(x),2);ft(S),W(S,`placeholder`,`/ -/team/alpha`),T(x);var C=P(x,2),w=P(M(C),2);na(w),T(C),T(m),T(p),F(()=>p.open=Q.advancedOpen),L(`click`,u,()=>Q.addHeader()),Vr(`toggle`,p,e=>Q.advancedOpen=e.currentTarget.open),da(g,()=>Q.form.description,e=>Q.form.description=e),da(v,()=>Q.form.allowed_tools,e=>Q.form.allowed_tools=e),da(b,()=>Q.form.disallowed_tools,e=>Q.form.disallowed_tools=e),da(S,()=>Q.form.user_paths,e=>Q.form.user_paths=e),da(w,()=>Q.form.tool_timeout_seconds,e=>Q.form.tool_timeout_seconds=e),z(e,n)},$$slots:{headerHint:!0,default:!0}})}D()}Hr([`input`,`click`]);var YL=R(`Config`),XL=R(`
      `),ZL=R(`
      `),QL=R(`
      NameTransportEndpointStatusToolsEnabledActions
      `);function $L(e,t){E(t,!0);function n(e){return sb(e,e=>ao.formatTimestamp(e))}var r=QL(),i=M(r),a=P(M(i));H(a,21,()=>Q.filtered,e=>ib(e),(e,t)=>{var r=ZL(),i=M(r),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=e=>{z(e,YL())};V(s,e=>{I(t).managed&&e(c)});var l=P(s,2),u=M(l,!0);T(l),T(i);var d=P(i),f=M(d),p=M(f,!0);T(f),T(d);var m=P(d),h=M(m,!0);T(m);var g=P(m),_=M(g),v=M(_,!0);T(_);var y=P(_,2),b=e=>{var n=XL(),r=M(n,!0);T(n),F(()=>B(r,I(t).last_error)),z(e,n)},x=O(()=>ab(I(t))===`degraded`&&I(t).last_error);V(y,e=>{I(x)&&e(b)}),T(g);var S=P(g),C=M(S),w=M(C,!0);T(C);var ee=P(C,2),te=M(ee,!0);T(ee),T(S);var ne=P(S),re=M(ne),ie=M(re,!0);T(re),T(ne);var ae=P(ne),oe=M(ae),se=M(oe),ce=e=>{{let n=O(()=>`Edit MCP server `+I(t).name);$C(e,{get label(){return I(n)},class:`table-icon-btn`,onclick:()=>Q.openEdit(I(t)),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(se,e=>{I(t).managed||e(ce)});var le=P(se,2);{let e=O(()=>`Inspect catalog of MCP server `+I(t).name);$C(le,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>Q.openCatalog(I(t)),children:(e,t)=>{G(e,{name:`list`,class:`form-action-icon`})},$$slots:{default:!0}})}var ue=P(le,2);{let e=O(()=>(Q.reconnectingName===ib(I(t))?`Reconnecting MCP server `:`Reconnect MCP server `)+I(t).name),n=O(()=>Q.reconnectingName===ib(I(t)));$C(ue,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>Q.reconnectServer(I(t)),get disabled(){return I(n)},children:(e,t)=>{G(e,{name:`refresh-cw`,class:`form-action-icon`})},$$slots:{default:!0}})}var de=P(ue,2),fe=e=>{{let n=O(()=>(Q.deletingName===ib(I(t))?`Deleting MCP server `:`Delete MCP server `)+I(t).name),r=O(()=>Q.deletingName===ib(I(t)));$C(e,{get label(){return I(n)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>Q.deleteServer(I(t)),get disabled(){return I(r)},children:(e,t)=>{G(e,{name:`x`,class:`table-icon-svg`})},$$slots:{default:!0}})}};V(de,e=>{I(t).managed||e(fe)}),T(oe),T(ae),T(r),F((e,n,r,i,a,s,c,l)=>{B(o,I(t).name),B(u,e),B(p,I(t).transport||`http`),W(m,`title`,n),B(h,r),U(_,1,`audit-status-badge ${i??``}`,`svelte-ah8nrt`),W(_,`title`,a),B(v,s),B(w,c),B(te,l),U(re,1,Fi([`auth-key-status-badge`,I(t).enabled?`auth-key-status-active`:`auth-key-status-inactive`])),B(ie,I(t).enabled?`Enabled`:`Disabled`)},[()=>ib(I(t)),()=>cb(I(t)),()=>cb(I(t)),()=>ob(I(t)),()=>n(I(t)),()=>ab(I(t)),()=>$o(I(t).tool_count||0),()=>lb(I(t))]),z(e,r)}),T(a),T(i),T(r),z(e,r),D()}var eR=R(`

      MCP Servers

      `),tR=R(``),nR=R(`
      MCP server management is unavailable.
      `),rR=R(``),iR=R(`
      `),aR=R(`

      No MCP servers yet. Add one here, or declare servers in config.yaml under mcp.servers.

      `),oR=R(`

      No MCP servers match your filter.

      `),sR=R(`
      `);function cR(e,t){E(t,!0),An(()=>{K.refreshTick,Ha.page===`mcp-servers`&&Q.fetchServers()});var n=sR(),r=M(n),i=M(r);Rx(M(i),{copyId:`mcp-servers-help-copy`,label:`MCP servers help`,text:`Upstream Model Context Protocol servers whose tools, prompts, and resources the gateway exposes to clients. Servers added here connect over HTTP or SSE; stdio servers and rows marked Config are declared in config.yaml under mcp.servers and are read-only in the dashboard. Saved header values are masked in API and dashboard responses.`,title:e=>{z(e,eR())},$$slots:{title:!0}}),T(i);var a=P(i,2),o=M(a),s=e=>{var t=tR();G(M(t),{name:`plus`,class:`form-action-icon`}),Ue(2),T(t),F(()=>t.disabled=Q.formSubmitting),L(`click`,t,()=>Q.openCreate()),z(e,t)};V(o,e=>{Q.available&&!K.authError&&e(s)}),T(a),T(r);var c=P(r,2),l=e=>{z(e,nR())};V(c,e=>{!Q.available&&!K.authError&&e(l)});var u=P(c,2),d=e=>{var t=rR(),n=M(t,!0);T(t),F(()=>B(n,Q.error)),z(e,t)};V(u,e=>{Q.error&&!K.authError&&!Q.formOpen&&e(d)});var f=P(u,2),p=e=>{ZC(e,{label:`Loading MCP servers...`})};V(f,e=>{Q.loading&&!K.authError&&e(p)});var m=P(f,2),h=e=>{var t=iR(),n=M(t);nC(M(n),{id:`mcp-server-filter`,placeholder:`Filter by name, slug, URL, transport, or status...`,label:`Filter MCP servers by name, slug, URL, transport, or status`,get value(){return Q.filter},set value(e){Q.filter=e}}),T(n),T(t),z(e,t)};V(m,e=>{(Q.servers.length>0||Q.filter)&&Q.available&&!K.authError&&e(h)});var g=P(m,2);JL(g,{});var _=P(g,2);RL(_,{});var v=P(_,2),y=e=>{$L(e,{})};V(v,e=>{Q.filtered.length>0&&Q.available&&!K.authError&&e(y)});var b=P(v,2),x=e=>{z(e,aR())};V(b,e=>{Q.servers.length===0&&!Q.filter&&!Q.loading&&!K.authError&&!Q.error&&Q.available&&e(x)});var S=P(b,2),C=e=>{z(e,oR())};V(S,e=>{Q.servers.length>0&&Q.filtered.length===0&&Q.filter&&!Q.loading&&!K.authError&&Q.available&&e(C)}),T(n),z(e,n),D()}Hr([`click`]);var lR=`api_keys`,uR=`session_sticky_keys`,dR=`base_url`,fR=`service_account_json`,pR=`models`,mR={[lR]:{label:`API Keys`,control:`keys`,hint:`Identified sessions stay on one key by default, improving provider prompt-cache hits. Saved values are shown as ***********; leave the asterisks unchanged to keep the stored key.`},[uR]:{label:`Session-sticky API keys`,control:`checkbox`,hint:`Keep each identified conversation on one API key to preserve provider prompt-cache affinity. Turn off to rotate keys round-robin on every request.`},[dR]:{label:`Base URL`,control:`text`},api_version:{label:`API Version`,control:`text`,placeholder:`e.g. 2024-10-01-preview`,hint:`Leave empty for the provider default. Realtime endpoints may need a newer version.`},backend:{label:`Backend`,control:`select`,hint:`Which Google surface to call. Vertex authenticates with Google credentials instead of an API key.`},auth_type:{label:`Auth Type`,control:`select`,hint:`How to obtain Google credentials. Leave on the default to use Application Default Credentials.`},api_mode:{label:`API Mode`,control:`select`,hint:`Which request shape to send upstream.`},vertex_project:{label:`Vertex Project`,control:`text`,placeholder:`my-gcp-project`},vertex_location:{label:`Vertex Location`,control:`text`,placeholder:`us-central1`},service_account_file:{label:`Service Account File`,control:`text`,placeholder:`/path/to/service-account.json`,hint:`Path readable by the gateway process.`},[fR]:{label:`Service Account JSON`,control:`textarea`,placeholder:`Paste service account JSON`,hint:`Saved values are shown as ***********; leave the asterisks unchanged to keep the stored value, or clear it to remove.`},service_account_json_base64:{label:`Service Account JSON (base64)`,control:`text`,hint:`Saved values are shown as ***********; leave the asterisks unchanged to keep the stored value.`},gcp_scope:{label:`GCP Scope`,control:`text`,placeholder:`https://www.googleapis.com/auth/cloud-platform`},[pR]:{label:`Models (comma-separated)`,control:`text`,placeholder:`gpt-4o, gpt-4o-mini`,hint:`Leave empty to auto-discover models from the provider's /models endpoint where supported.`}};function hR(e){return mR[e]||{label:String(e||``).split(`_`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),control:`text`}}function gR(){return{name:``,type:``,api_keys:[],session_sticky_keys:!0,base_url:``,api_version:``,backend:``,auth_type:``,api_mode:``,vertex_project:``,vertex_location:``,service_account_file:``,service_account_json:``,service_account_json_base64:``,gcp_scope:``,models:``,enabled:!0}}function _R(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.type,e.base_url].some(e=>String(e||``).toLowerCase().includes(r)))}function vR(e,t){let n=(Array.isArray(e)?e:[]).map(e=>String(e&&e.type||``).trim()).filter(Boolean),r=String(t||``).trim();return r&&!n.includes(r)&&n.push(r),n}function yR(e,t){let n=String(t||``).trim();return n&&(Array.isArray(e)?e:[]).find(e=>String(e&&e.type||``).trim()===n)||null}function bR(e,t){let n=e&&Array.isArray(e.fields)&&e.fields.length>0?e.fields:Object.keys(mR).map(e=>({name:e,advanced:e!==lR})),r=t||e&&e.default_base_url||``,i=[],a=[];for(let e of n){let t=String(e&&e.name||``).trim();if(!t)continue;let n={...hR(t),name:t,required:!!(e&&e.required),options:Array.isArray(e&&e.options)?e.options:[]};t===`base_url`&&r&&(n.placeholder=r,n.hint=`Defaults to `+r),n.options.length>0&&(n.control=`select`),(e&&e.advanced?a:i).push(n)}return{primary:i,advanced:a}}var xR=new Set([`name`,`type`,`enabled`]);function SR(e,t){let n=new Set([...t.primary||[],...t.advanced||[]].map(e=>e.name)),r=gR(),i={...e};for(let e of Object.keys(r))!xR.has(e)&&!n.has(e)&&(i[e]=r[e]);return i}function CR(e){let t=Array.isArray(e&&e.api_keys)?e.api_keys.length:0;return t>0?t+` key`+(t===1?``:`s`):String(e&&e.service_account_json||``).trim()||String(e&&e.service_account_json_base64||``).trim()||String(e&&e.service_account_file||``).trim()?`service account`:String(e&&e.vertex_project||``).trim()?`ADC`:`keyless`}function wR(e){let t=Array.isArray(e&&e.models)?e.models:[];return t.length===0?`auto-discovered`:t.length+` model`+(t.length===1?``:`s`)}function TR(e){return(Array.isArray(e)?e:[]).map(e=>({value:String(e||``)}))}function ER(e){return(Array.isArray(e)?e:[]).map(e=>String(e&&e.value||``))}function DR(e,t){let n=String(t||``).trim();if(!n)return``;let r=new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.name||``).trim()));if(!r.has(n))return n;let i=1;for(;r.has(n+`-`+i);)i+=1;return n+`-`+i}function OR(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),api_keys:TR(e&&e.api_keys),session_sticky_keys:!e||e.session_sticky_keys!==!1,base_url:String(e&&e.base_url||``),api_version:String(e&&e.api_version||``),backend:String(e&&e.backend||``),auth_type:String(e&&e.auth_type||``),api_mode:String(e&&e.api_mode||``),vertex_project:String(e&&e.vertex_project||``),vertex_location:String(e&&e.vertex_location||``),service_account_file:String(e&&e.service_account_file||``),service_account_json:String(e&&e.service_account_json||``),service_account_json_base64:String(e&&e.service_account_json_base64||``),gcp_scope:String(e&&e.gcp_scope||``),models:(Array.isArray(e&&e.models)?e.models:[]).join(`, `),enabled:!e||e.enabled!==!1}}function kR(e){let t=String(e||``).trim();return t.length>=3&&/^\*+$/.test(t)}function AR(e,t,n,r){let i={},a=String(e&&e.name||``).trim();String(e&&e.type||``).trim()||(i.type=`Select a provider type.`),a?a.includes(`/`)?i.name=`Name cannot contain '/' — it separates the provider from the model.`:t===`create`&&(Array.isArray(n)?n:[]).some(e=>String(e&&e.name||``).trim()===a)&&(i.name=`Provider "`+a+`" already exists.`):i.name=`Name is required.`;let{primary:o,advanced:s}=bR(r);for(let t of[...o,...s]){let n=jR(e,t);n&&(i[t.name]=n)}return i}function jR(e,t){if(t.name===`api_keys`){let n=ER(e&&e.api_keys);return t.required&&!n.some(e=>e.trim())?`At least one API key is required for this provider type.`:n.some(e=>!e.trim())?`Remove the empty row instead of leaving a key blank.`:``}let n=String(e&&e[t.name]||``).trim();if(t.required&&!n)return t.label+` is required for this provider type.`;if(!n)return``;if(t.name===`base_url`&&!n.includes(`://`)&&/[./]/.test(n))return`Include the scheme, e.g. https://`+n;if(t.name===`service_account_json`&&!kR(n))try{JSON.parse(n)}catch{return`Paste the service account JSON file's contents — this is not valid JSON.`}return``}function MR(e,t){let n={name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),enabled:!!(e&&e.enabled)},{primary:r,advanced:i}=bR(t),a=!!(t&&Array.isArray(t.fields)&&t.fields.length>0),o=new Set;for(let t of[...r,...i])!a&&t.name===`session_sticky_keys`||(o.add(t.name),n[t.name]=NR(e,t.name));for(let t of Object.keys(mR)){if(o.has(t)||t===`session_sticky_keys`)continue;let r=NR(e,t);(Array.isArray(r)?r.length>0:String(r).trim()!==``)&&(n[t]=r)}return n}function NR(e,t){switch(t){case lR:return ER(e&&e.api_keys);case pR:return Zo(e&&e.models);case uR:return!!(e&&e.session_sticky_keys);case fR:return e&&e.service_account_json||``;default:return String(e&&e[t]||``).trim()}}var $=new class{#e=k(j([]));get rows(){return I(this.#e)}set rows(e){A(this.#e,e,!0)}#t=k(!0);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get error(){return I(this.#r)}set error(e){A(this.#r,e,!0)}#i=k(``);get filter(){return I(this.#i)}set filter(e){A(this.#i,e,!0)}#a=k(!1);get formOpen(){return I(this.#a)}set formOpen(e){A(this.#a,e,!0)}#o=k(!1);get formSubmitting(){return I(this.#o)}set formSubmitting(e){A(this.#o,e,!0)}#s=k(`create`);get formMode(){return I(this.#s)}set formMode(e){A(this.#s,e,!0)}#c=k(!1);get advancedOpen(){return I(this.#c)}set advancedOpen(e){A(this.#c,e,!0)}#l=k(j(gR()));get form(){return I(this.#l)}set form(e){A(this.#l,e,!0)}#u=k(j({}));get fieldErrors(){return I(this.#u)}set fieldErrors(e){A(this.#u,e,!0)}#d=k(``);get focusField(){return I(this.#d)}set focusField(e){A(this.#d,e,!0)}#f=k(``);get deletingName(){return I(this.#f)}set deletingName(e){A(this.#f,e,!0)}#p=k(!1);get deleteSubmitting(){return I(this.#p)}set deleteSubmitting(e){A(this.#p,e,!0)}#m=k(j([]));get types(){return I(this.#m)}set types(e){A(this.#m,e,!0)}#h=k(!1);get typesLoaded(){return I(this.#h)}set typesLoaded(e){A(this.#h,e,!0)}#g=null;get filteredRows(){return _R(this.rows,this.filter)}get schema(){return yR(this.types,this.form.type)}get formFields(){if(!String(this.form.type||``).trim())return{primary:[],advanced:[]};let e=this.schema;return bR(e,e&&e.default_base_url)}async fetchTypes(){let e=await ew(`/admin/provider-credentials/types`,{label:`provider credential types`});e.status===`ok`&&(this.types=e.items,this.typesLoaded=!0)}async fetchPage(){this.#g&&this.#g.abort();let e=new AbortController;this.#g=e,this.loading=!0,this.error=``;try{let t=await ew(`/admin/provider-credentials`,{label:`provider credentials`,errorFallback:`Failed to load provider credentials.`,unavailableStatuses:[503,404],options:{signal:e.signal}});if(t.status===`stale`||e.signal.aborted)return;if(t.status===`unavailable`){this.available=!1,this.rows=[];return}if(t.status===`error`){t.result&&(this.available=!0),this.rows=[],this.error=t.error;return}this.available=!0,this.rows=t.items,this.typesLoaded||await this.fetchTypes()}finally{this.#g===e&&(this.#g=null,this.loading=!1)}}#_(e,t){this.formMode=e,this.form=t,this.advancedOpen=!1,this.error=``,this.fieldErrors={},this.focusField=``}openCreate(){this.#_(`create`,gR()),this.formOpen=!0,this.typesLoaded||this.fetchTypes()}openEdit(e){!e||e.managed||(this.#_(`edit`,OR(e)),this.formOpen=!0,this.typesLoaded||this.fetchTypes())}closeForm(){this.formOpen=!1,this.#_(`create`,gR())}selectType(){this.fieldErrors={};let e=this.formFields;this.formMode===`create`&&(this.form=SR(this.form,e));let t=e.primary.find(e=>e.name===`api_keys`);t&&t.required&&this.form.api_keys.length===0&&(this.form.api_keys=[{value:``}])}clearFieldError(e){if(this.fieldErrors[e]===void 0)return;let{[e]:t,...n}=this.fieldErrors;this.fieldErrors=n}addApiKeyRow(){this.form.api_keys.push({value:``}),this.clearFieldError(`api_keys`)}removeApiKeyRow(e){this.form.api_keys.splice(e,1),this.clearFieldError(`api_keys`)}#v(e){let t=oo(e,`Failed to save provider credential.`),n=String(e&&e.error&&typeof e.error==`object`&&e.error.param||``).trim();if(n&&this.#y(n)){this.fieldErrors={...this.fieldErrors,[n]:t},this.error=``,this.#b();return}this.error=t}#y(e){if(e===`name`||e===`type`)return!0;let{primary:t,advanced:n}=this.formFields;return[...t,...n].some(t=>t.name===e)}#b(){let e=Object.keys(this.fieldErrors);if(e.length===0)return;let{primary:t,advanced:n}=this.formFields;n.some(t=>e.includes(t.name))&&(this.advancedOpen=!0);let r=[`type`,`name`,...t.map(e=>e.name),...n.map(e=>e.name)];this.focusField=r.find(t=>e.includes(t))||e[0]}#x(){Es.fetchModels(),Es.fetchCategories()}async submitForm(){let e=this.schema,t=AR(this.form,this.formMode,this.rows,e);if(Object.keys(t).length>0){this.fieldErrors=t,this.error=``,this.#b();return}let n=MR(this.form,e);this.error=``,this.fieldErrors={},this.formSubmitting=!0;try{let e=await tw(`/admin/provider-credentials`,`PUT`,n,{label:`save provider credential`,errorFallback:`Failed to save provider credential.`,unavailableMessage:`Provider credential management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.error=e.error;return}if(e.status===`error`){e.result&&e.result.status!==401?this.#v(e.result.data):this.error=e.error;return}q.success(`Provider "`+n.name+`" saved.`),this.closeForm(),this.#x(),this.fetchPage()}finally{this.formSubmitting=!1}}async performDelete(e){this.deleteSubmitting=!0,this.deletingName=e;try{let t=await tw(`/admin/provider-credentials/`+encodeURIComponent(e),`DELETE`,void 0,{label:`delete provider credential`,errorFallback:`Failed to delete provider credential.`,unavailableMessage:`Provider credential management is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,jo.error=t.error;return}if(t.status===`error`){jo.error=t.error;return}q.success(`Provider "`+e+`" deleted.`),jo.close(),this.formOpen&&this.form.name===e&&this.closeForm(),this.#x(),this.fetchPage()}finally{this.deleteSubmitting=!1,this.deletingName=``}}requestDelete(e){let t=String(e||``).trim();if(!t||this.deleteSubmitting)return;let n=(this.rows||[]).find(e=>String(e&&e.name||``).trim()===t);n&&n.managed||jo.open({title:`Delete Provider`,titleId:`providerCredentialDeleteDialogTitle`,inputId:`provider-credential-delete-confirmation`,message:`Type "`+t+`" to permanently delete this provider credential. Requests routed to it will fail until it is reconfigured.`,requiredText:t,confirmLabel:`Delete Provider`,icon:`trash-2`,dialogClass:`budget-reset-dialog`,onConfirm:()=>this.performDelete(t)})}},PR=R(`Config`),FR=R(` `,1),IR=R(`
      `),LR=R(`
      NameTypeBase URLAuthModelsEnabledUpdatedActions
      `);function RR(e,t){E(t,!0);var n=LR(),r=M(n),i=P(M(r));H(i,21,()=>$.filteredRows,e=>e.name,(e,t)=>{var n=IR(),r=M(n),i=M(r),a=M(i,!0);T(i);var o=P(i,2),s=e=>{z(e,PR())};V(o,e=>{I(t).managed&&e(s)}),T(r);var c=P(r),l=M(c),u=M(l,!0);T(l),T(c);var d=P(c),f=M(d,!0);T(d);var p=P(d),m=M(p,!0);T(p);var h=P(p),g=M(h,!0);T(h);var _=P(h),v=M(_);let y;var b=M(v,!0);T(v),T(_);var x=P(_),S=M(x,!0);T(x);var C=P(x),w=M(C),ee=M(w),te=e=>{var n=FR(),r=N(n);{let e=O(()=>`Edit provider `+I(t).name);$C(r,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>$.openEdit(I(t)),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}var i=P(r,2);{let e=O(()=>($.deletingName===I(t).name?`Deleting provider `:`Delete provider `)+I(t).name),n=O(()=>$.deletingName===I(t).name);$C(i,{get label(){return I(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>$.requestDelete(I(t).name),get disabled(){return I(n)},children:(e,t)=>{G(e,{name:`x`,class:`table-icon-svg`})},$$slots:{default:!0}})}z(e,n)};V(ee,e=>{I(t).managed||e(te)}),T(w),T(C),T(n),F((e,n,r)=>{B(a,I(t).name),B(u,I(t).type),W(d,`title`,I(t).base_url||``),B(f,I(t).base_url||`—`),B(m,e),B(g,n),y=U(v,1,`auth-key-status-badge`,null,y,{"auth-key-status-active":I(t).enabled,"auth-key-status-inactive":!I(t).enabled}),B(b,I(t).enabled?`Enabled`:`Disabled`),B(S,r)},[()=>CR(I(t)),()=>wR(I(t)),()=>ao.formatTimestamp(I(t).updated_at)]),z(e,n)}),T(i),T(r),T(n),z(e,n),D()}var zR=R(``),BR=R(`
      `),VR=R(`
      `,1),HR=R(``),UR=R(``),WR=R(``),GR=R(``),KR=R(``),qR=R(` `),JR=R(` `),YR=R(`
      `);function XR(e,t){E(t,!0);let n=O(()=>`provider-credential-`+t.field.name),r=O(()=>$.fieldErrors[t.field.name]||``),i=O(()=>I(r)?I(n)+`-error`:t.field.hint?I(n)+`-hint`:void 0),a=O(()=>{let e=String($.form[t.field.name]||``).trim();return!e||t.field.options.includes(e)?t.field.options:[...t.field.options,e]});function o(){$.clearFieldError(t.field.name)}var s=YR(),c=M(s),l=M(c),u=P(l),d=e=>{z(e,zR())};V(u,e=>{t.field.required&&e(d)}),T(c);var f=P(c,2),p=e=>{var t=VR(),a=N(t);H(a,21,()=>$.form.api_keys,oi,(e,t,a)=>{var s=BR(),c=M(s);na(c),W(c,`aria-label`,`API key `+(a+1)),$C(P(c,2),{label:`Remove API key `+(a+1),class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>$.removeApiKeyRow(a),children:(e,t)=>{G(e,{name:`trash-2`,class:`table-icon-svg`})},$$slots:{default:!0}}),T(s),F(()=>{W(c,`id`,a===0?I(n):I(n)+`-`+a),W(c,`aria-invalid`,I(r)?`true`:void 0),W(c,`aria-describedby`,a===0?I(i):void 0)}),L(`input`,c,o),da(c,()=>I(t).value,e=>I(t).value=e),z(e,s)}),T(a);var s=P(a,2),c=M(s);G(M(c),{name:`plus`,class:`form-action-icon`}),Ue(2),T(c),T(s),F(()=>W(c,`id`,$.form.api_keys.length===0?I(n):void 0)),L(`click`,c,()=>$.addApiKeyRow()),z(e,t)},m=e=>{var s=UR(),c=M(s);c.value=c.__value=``,H(P(c),16,()=>I(a),e=>e,(e,t)=>{var n=HR(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(s),F(()=>{W(s,`id`,I(n)),W(s,`aria-invalid`,I(r)?`true`:void 0),W(s,`aria-describedby`,I(i))}),L(`change`,s,o),Gi(s,()=>$.form[t.field.name],e=>$.form[t.field.name]=e),z(e,s)},h=e=>{var a=WR();na(a),F(()=>{W(a,`id`,I(n)),W(a,`aria-invalid`,I(r)?`true`:void 0),W(a,`aria-describedby`,I(i))}),L(`change`,a,o),fa(a,()=>$.form[t.field.name],e=>$.form[t.field.name]=e),z(e,a)},g=e=>{var a=GR();ft(a),F(()=>{W(a,`id`,I(n)),W(a,`placeholder`,t.field.placeholder||``),W(a,`aria-invalid`,I(r)?`true`:void 0),W(a,`aria-describedby`,I(i))}),L(`input`,a,o),da(a,()=>$.form[t.field.name],e=>$.form[t.field.name]=e),z(e,a)},_=e=>{var a=KR();na(a),F(()=>{W(a,`id`,I(n)),W(a,`placeholder`,t.field.placeholder||``),W(a,`aria-invalid`,I(r)?`true`:void 0),W(a,`aria-describedby`,I(i))}),L(`input`,a,o),da(a,()=>$.form[t.field.name],e=>$.form[t.field.name]=e),z(e,a)};V(f,e=>{t.field.control===`keys`?e(p):t.field.control===`select`?e(m,1):t.field.control===`checkbox`?e(h,2):t.field.control===`textarea`?e(g,3):e(_,-1)});var v=P(f,2),y=e=>{var t=qR(),i=M(t,!0);T(t),F(()=>{W(t,`id`,I(n)+`-error`),B(i,I(r))}),z(e,t)},b=e=>{var r=JR(),i=M(r,!0);T(r),F(()=>{W(r,`id`,I(n)+`-hint`),B(i,t.field.hint)}),z(e,r)};V(v,e=>{I(r)?e(y):t.field.hint&&e(b,1)}),T(s),F(()=>{W(c,`for`,I(n)),B(l,`${t.field.label??``} `)}),z(e,s),D()}Hr([`input`,`click`,`change`]);var ZR=R(`

      The name is the stable identity used for routing and cannot change once created.

      `),QR=R(``),$R=R(` `),ez=R(`Determines which fields the gateway uses to build requests.`),tz=R(` `),nz=R(`Suggested from the selected type; used to route requests to this provider instance and editable before saving.`),rz=R(`Immutable once created.`),iz=R(`

      Pick a type to configure its credentials — each provider type asks for different settings.

      `),az=R(`
      Advanced settings
      `),oz=R(`
      `,1);function sz(e,t){E(t,!0);let n=O(()=>vR($.types,$.form.type)),r=O(()=>$.formFields),i=O(()=>$.fieldErrors.name||``),a=O(()=>$.fieldErrors.type||``);function o(){$.selectType(),$.formMode===`create`&&($.form.name=DR($.rows,$.form.type))}An(()=>{let e=$.focusField;if(!e)return;$.focusField=``;let t=document.getElementById(`provider-credential-`+e);t&&(t.scrollIntoView({block:`center`}),t.focus({preventScroll:!0}))});{let t=e=>{z(e,ZR())},s=O(()=>$.formMode===`edit`?`Edit Provider`:`Add Provider`);rT(e,{get open(){return $.formOpen},get title(){return I(s)},ariaLabel:`Provider credential editor`,get error(){return $.error},get submitting(){return $.formSubmitting},novalidate:!0,onclose:()=>$.closeForm(),onsubmit:()=>$.submitForm(),headerHint:t,children:(e,t)=>{var s=oz(),c=N(s),l=P(M(c),2),u=M(l);u.value=u.__value=``,H(P(u),16,()=>I(n),e=>e,(e,t)=>{var n=QR(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(l);var d=P(l,2),f=e=>{var t=$R(),n=M(t,!0);T(t),F(()=>B(n,I(a))),z(e,t)},p=e=>{z(e,ez())};V(d,e=>{I(a)?e(f):e(p,-1)}),T(c);var m=P(c,2),h=P(M(m),2);na(h);var g=P(h,2),_=e=>{var t=tz(),n=M(t,!0);T(t),F(()=>B(n,I(i))),z(e,t)},v=e=>{z(e,nz())},y=e=>{z(e,rz())};V(g,e=>{I(i)?e(_):$.formMode===`create`?e(v,1):e(y,-1)}),T(m);var b=P(m,2),x=e=>{z(e,iz())};V(b,e=>{$.form.type||e(x)});var S=P(b,2);H(S,17,()=>I(r).primary,e=>e.name,(e,t)=>{XR(e,{get field(){return I(t)}})});var C=P(S,2),w=M(C);rk(M(w),{get enabled(){return $.form.enabled},label:`provider`,onclick:()=>$.form.enabled=!$.form.enabled}),T(w),T(C);var ee=P(C,2),te=e=>{var t=az(),n=M(t),i=M(n),a=P(M(i),2),o=M(a,!0);T(a),T(i),T(n);var s=P(n,2);H(s,21,()=>I(r).advanced,e=>e.name,(e,t)=>{XR(e,{get field(){return I(t)}})}),T(s),T(t),F(e=>{t.open=$.advancedOpen,B(o,e)},[()=>I(r).advanced.map(e=>e.label).join(`, `)]),Vr(`toggle`,t,e=>$.advancedOpen=e.currentTarget.open),z(e,t)};V(ee,e=>{I(r).advanced.length>0&&e(te)}),F(()=>{l.disabled=$.formMode===`edit`,W(l,`aria-invalid`,I(a)?`true`:void 0),W(l,`aria-describedby`,I(a)?`provider-credential-type-error`:`provider-credential-type-hint`),h.disabled=$.formMode===`edit`,W(h,`aria-invalid`,I(i)?`true`:void 0),W(h,`aria-describedby`,I(i)?`provider-credential-name-error`:`provider-credential-name-hint`)}),L(`change`,l,o),Gi(l,()=>$.form.type,e=>$.form.type=e),L(`input`,h,()=>$.clearFieldError(`name`)),da(h,()=>$.form.name,e=>$.form.name=e),z(e,s)},$$slots:{headerHint:!0,default:!0}})}D()}Hr([`change`,`input`]);var cz=R(`

      Providers

      `),lz=R(``),uz=R(`
      Provider credential management is unavailable.
      `),dz=R(``),fz=R(`
      `),pz=R(`

      No dashboard-managed providers yet. Add one here, or declare providers in config.yaml / environment variables.

      `),mz=R(`

      No providers match your filter.

      `),hz=R(`
      `);function gz(e,t){E(t,!0),An(()=>{K.refreshTick,Ha.page===`providers-config`&&$.fetchPage()});var n=hz(),r=M(n),i=M(r);Rx(M(i),{copyId:`providers-config-help-copy`,label:`model providers help`,title:e=>{z(e,cz())},help:e=>{Ue(),z(e,Zr(`Configure LLM provider credentials here instead of setting API keys as - environment variables. Providers declared in config.yaml or env vars - are read-only (Config badge) and cannot be edited or deleted from the - dashboard. Keys are masked after saving.`))},$$slots:{title:!0,help:!0}}),T(i);var a=P(i,2),o=M(a),s=e=>{var t=lz();G(M(t),{name:`plus`,class:`form-action-icon`}),Ue(2),T(t),F(()=>t.disabled=$.formSubmitting),L(`click`,t,()=>$.openCreate()),z(e,t)};V(o,e=>{$.available&&!K.needsAuth&&e(s)}),T(a),T(r);var c=P(r,2),l=e=>{z(e,uz())};V(c,e=>{!$.available&&!K.needsAuth&&e(l)});var u=P(c,2),d=e=>{var t=dz(),n=M(t,!0);T(t),F(()=>B(n,$.error)),z(e,t)};V(u,e=>{$.error&&!K.needsAuth&&!$.formOpen&&e(d)});var f=P(u,2),p=e=>{ZC(e,{label:`Loading providers...`})};V(f,e=>{$.loading&&!K.needsAuth&&e(p)});var m=P(f,2),h=e=>{var t=fz(),n=M(t);nC(M(n),{id:`provider-credential-filter`,placeholder:`Filter by name, type, or base URL...`,label:`Filter providers by name, type, or base URL`,get value(){return $.filter},set value(e){$.filter=e}}),T(n),T(t),z(e,t)};V(m,e=>{($.rows.length>0||$.filter)&&$.available&&!K.needsAuth&&e(h)});var g=P(m,2);sz(g,{});var _=P(g,2),v=e=>{RR(e,{})};V(_,e=>{$.filteredRows.length>0&&$.available&&!K.needsAuth&&e(v)});var y=P(_,2),b=e=>{z(e,pz())};V(y,e=>{$.rows.length===0&&!$.filter&&!$.loading&&!K.needsAuth&&!$.error&&$.available&&e(b)});var x=P(y,2),S=e=>{z(e,mz())};V(x,e=>{$.rows.length>0&&$.filteredRows.length===0&&$.filter&&!$.loading&&!K.needsAuth&&$.available&&e(S)}),T(n),z(e,n),D()}Hr([`click`]);function _z(){return{name:``,description:``,user_path:``,labels:``,dashboard_access:!1,expires_at:``}}function vz(e){let t=[];for(let n of String(e||``).split(`,`)){let e=n.trim();e&&!t.includes(e)&&t.push(e)}return t}function yz(e){let t=String(e||``).trim();if(!t)return``;let n=t.startsWith(`/`)?t:`/`+t;for(let e of n.split(`/`)){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function bz(e){if(yz(e))return``;let t=String(e||``).trim();if(!t)return``;let n=t.startsWith(`/`)?t:`/`+t,r=[];for(let e of n.split(`/`)){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function xz(e){let t=e||{},n=String(t.name||``).trim();if(!n)return{error:`Name is required.`};let r=yz(t.user_path);if(r)return{error:r};let i=bz(t.user_path),a=vz(t.labels),o={name:n,description:String(t.description||``).trim()||void 0,user_path:i||void 0,labels:a.length?a:void 0,dashboard_access:t.dashboard_access?!0:void 0};return t.expires_at&&(o.expires_at=t.expires_at+`T23:59:59Z`),{payload:o}}function Sz(e,t=Date.now()){let n=e&&e.expires_at;if(!n)return!1;let r=Date.parse(n);return Number.isFinite(r)&&r<=t}function Cz(e){return e?!!e.deactivated_at||e.enabled===!1:!1}function wz(e,t=Date.now()){return!e||e.active===!1||Cz(e)?!1:!Sz(e,t)}function Tz(e){return[e.name,e.description,e.user_path,e.redacted_value,...e.labels||[]].filter(Boolean).join(` `).toLowerCase()}function Ez(e,t={}){let{query:n=``,showInactive:r=!1,now:i=Date.now()}=t,a=String(n||``).trim().toLowerCase();return(Array.isArray(e)?e:[]).filter(e=>!r&&!wz(e,i)?!1:!a||Tz(e).includes(a))}function Dz(e,t){return Cz(e)?2:+!wz(e,t)}function Oz(e){let t=e&&e.expires_at;if(!t)return 1/0;let n=Date.parse(t);return Number.isFinite(n)?n:1/0}function kz(e){let t=Date.parse(e&&e.deactivated_at||``);return Number.isFinite(t)?t:-1/0}function Az(e,t=Date.now()){return(Array.isArray(e)?e.slice():[]).sort((e,n)=>{let r=Dz(e,t),i=Dz(n,t);if(r!==i)return r-i;let[a,o]=r===2?[kz(e),kz(n)]:[Oz(e),Oz(n)];return a===o?String(e.name||``).localeCompare(String(n.name||``)):a>o?-1:1})}function jz(e,t=Date.now()){return(Array.isArray(e)?e:[]).reduce((e,n)=>e+ +!wz(n,t),0)}function Mz(){return{open:!1,id:``,name:``,value:``,submitting:!1,error:``}}var Nz=new class{#e=k(j([]));get keys(){return I(this.#e)}set keys(e){A(this.#e,e,!0)}#t=k(!0);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get error(){return I(this.#r)}set error(e){A(this.#r,e,!0)}#i=k(``);get filter(){return I(this.#i)}set filter(e){A(this.#i,e,!0)}#a=k(!1);get showInactive(){return I(this.#a)}set showInactive(e){A(this.#a,e,!0)}#o=O(()=>Az(Ez(this.keys,{query:this.filter,showInactive:this.showInactive})));get visibleKeys(){return I(this.#o)}set visibleKeys(e){A(this.#o,e)}#s=O(()=>jz(this.keys));get inactiveCount(){return I(this.#s)}set inactiveCount(e){A(this.#s,e)}#c=k(!1);get formOpen(){return I(this.#c)}set formOpen(e){A(this.#c,e,!0)}#l=k(!1);get formSubmitting(){return I(this.#l)}set formSubmitting(e){A(this.#l,e,!0)}#u=k(``);get issuedValue(){return I(this.#u)}set issuedValue(e){A(this.#u,e,!0)}#d=k(``);get deactivatingID(){return I(this.#d)}set deactivatingID(e){A(this.#d,e,!0)}#f=k(``);get dashboardAccessID(){return I(this.#f)}set dashboardAccessID(e){A(this.#f,e,!0)}#p=k(j(_z()));get form(){return I(this.#p)}set form(e){A(this.#p,e,!0)}#m=k(j(Mz()));get labelsEditor(){return I(this.#m)}set labelsEditor(e){A(this.#m,e,!0)}copyState=ej({logPrefix:`Failed to copy auth key:`});async fetchKeys(){this.loading=!0,this.error=``;try{let e=await ew(`/admin/auth-keys`,{label:`auth keys`,errorFallback:`Unable to load API keys.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.keys=[];return}if(e.status===`error`){e.result&&(this.available=!0),this.error=e.error;return}this.available=!0,this.keys=e.items}finally{this.loading=!1}}openForm(){this.formSubmitting||this.formOpen||(this.formOpen=!0,this.error=``,this.issuedValue||(this.copyState.reset(),this.form=_z()))}closeForm(){this.formOpen&&(this.formOpen=!1,this.error=``,this.copyState.reset(),!this.formSubmitting&&!this.issuedValue&&(this.form=_z()))}copyIssuedValue(){return this.copyState.copy(this.issuedValue)}dismissIssuedKey(){this.issuedValue=``,this.copyState.reset(),this.form=_z()}async submitForm(){let e=xz(this.form);if(e.error){this.error=e.error;return}this.error=``,this.formSubmitting=!0;try{let t=await tw(`/admin/auth-keys`,`POST`,e.payload,{label:`create API key`,errorFallback:`Failed to create API key.`,unavailableMessage:`Auth keys feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error,t.result&&t.result.status!==401&&console.error(`Failed to create API key:`,t.result.status,this.error);return}let n=t.result.data||{};this.issuedValue=n.value||``,this.formOpen=!0,this.copyState.reset(),this.form=_z(),this.fetchKeys()}finally{this.formSubmitting=!1}}openLabelsEditor(e){!e||this.labelsEditor.submitting||(this.labelsEditor={open:!0,id:e.id,name:e.name||``,value:(e.labels||[]).join(`, `),submitting:!1,error:``})}closeLabelsEditor(){!this.labelsEditor.open||this.labelsEditor.submitting||(this.labelsEditor=Mz())}async submitLabelsEditor(){let e=this.labelsEditor;if(!e.open||e.submitting||!e.id)return;e.submitting=!0,e.error=``;let t={labels:vz(e.value)};try{let n=await tw(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/labels`,`PUT`,t,{label:`update API key labels`,errorFallback:`Failed to update labels.`,unavailableMessage:`Auth keys feature is unavailable.`});if(n.status===`stale`)return;if(n.status===`unavailable`){this.available=!1,e.error=n.error;return}if(n.status===`error`){e.error=n.error,n.result&&n.result.status!==401&&console.error(`Failed to update auth key labels:`,n.result.status,e.error);return}q.success(`Labels updated for key "`+e.name+`".`),e.submitting=!1,this.closeLabelsEditor(),this.fetchKeys()}finally{e.submitting=!1}}async toggleDashboardAccess(e){if(!e||!e.active||this.dashboardAccessID)return;let t=!e.dashboard_access;this.dashboardAccessID=e.id;try{let n=await tw(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/dashboard-access`,`PUT`,{dashboard_access:t},{label:`update API key dashboard access`,errorFallback:`Failed to update dashboard access.`,unavailableMessage:`Auth keys feature is unavailable.`});if(n.status===`stale`)return;if(n.status===`unavailable`){this.available=!1,q.error(n.error);return}if(n.status===`error`){n.result&&n.result.status!==401&&console.error(`Failed to update auth key dashboard access:`,n.result.status,n.error),q.error(n.error);return}q.success(`Dashboard access `+(t?`granted to`:`revoked for`)+` key "`+e.name+`".`),this.fetchKeys()}finally{this.dashboardAccessID=``}}async deactivateKey(e){if(!(!e||!e.active)&&window.confirm(`Deactivate key "`+e.name+`"? This cannot be undone.`)){this.deactivatingID=e.id;try{let t=await tw(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/deactivate`,`POST`,void 0,{label:`deactivate API key`,errorFallback:`Failed to deactivate key.`,unavailableMessage:`Auth keys feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,q.error(t.error);return}if(t.status===`error`){t.result&&t.result.status!==401&&console.error(`Failed to deactivate auth key:`,t.result.status,t.error),q.error(t.error);return}q.success(`Key "`+e.name+`" deactivated.`),this.fetchKeys()}finally{this.deactivatingID=``}}}},Pz=R(``),Fz=R(`

      Store this key securely — it won’t be shown again.

      `),Iz=R(``),Lz=R(``),Rz=R(``),zz=R(``),Bz=R(`
      `);function Vz(e,t){E(t,!0);{let t=O(()=>Nz.issuedValue?``:Nz.error),n=O(()=>Nz.issuedValue?`Done, I’ve stored it`:`Create API Key`),r=O(()=>Nz.issuedValue?`check`:`plus`);rT(e,{get open(){return Nz.formOpen},title:`Create API Key`,ariaLabel:`API key editor`,get error(){return I(t)},get submitting(){return Nz.formSubmitting},get submitLabel(){return I(n)},submittingLabel:`Creating...`,get submitIcon(){return I(r)},cancel:!1,dialogClass:`auth-key-editor`,onclose:()=>Nz.closeForm(),onsubmit:()=>Nz.issuedValue?Nz.dismissIssuedKey():Nz.submitForm(),children:(e,t)=>{var n=Qr(),r=N(n),i=e=>{var t=Fz(),n=P(M(t),2),r=M(n),i=M(r,!0);T(r),PF(P(r,2),{get state(){return Nz.copyState},onclick:()=>Nz.copyIssuedValue()}),T(n);var a=P(n,2),o=e=>{z(e,Pz())};V(a,e=>{Nz.copyState.error&&e(o)}),T(t),F(()=>B(i,Nz.issuedValue)),z(e,t)},a=e=>{var t=Bz(),n=M(t),r=M(n),i=P(M(r),2);na(i),T(r);var a=P(r,2),o=P(M(a),2);na(o),T(a),T(n);var s=P(n,2),c=M(s);Rx(c,{copyId:`auth-key-user-path-help-copy`,label:`API key user path help`,title:e=>{z(e,Iz())},help:e=>{Ue(),z(e,Zr(`When set, this key overrides the configured user path request - header for audit logging and downstream request context.`))},$$slots:{title:!0,help:!0}});var l=P(c,2);na(l),T(s);var u=P(s,2),d=M(u);Rx(d,{copyId:`auth-key-labels-help-copy`,label:`API key labels help`,title:e=>{z(e,Lz())},help:e=>{Ue(),z(e,Zr(`Every request authenticated with this key gets these labels, in - addition to any labels from tagging headers. Labels show up in - usage analytics, the request log, and audit logs.`))},$$slots:{title:!0,help:!0}});var f=P(d,2);na(f),T(u);var p=P(u,2),m=M(p);Rx(m,{copyId:`auth-key-dashboard-access-help-copy`,label:`API key dashboard access help`,title:e=>{z(e,Rz())},help:e=>{Ue(),z(e,Zr(`When off, this key is denied the dashboard and every /admin API - endpoint. Model endpoints and GET /v1/usage stay available to - the key. The master key always has dashboard access.`))},$$slots:{title:!0,help:!0}});var h=P(m,2),g=M(h);na(g),Ue(2),T(h),T(p),aT(P(p,2),{id:`auth-key-description`,label:`Description (optional)`,children:(e,t)=>{var n=zz();ft(n),da(n,()=>Nz.form.description,e=>Nz.form.description=e),z(e,n)},$$slots:{default:!0}}),T(t),da(i,()=>Nz.form.name,e=>Nz.form.name=e),da(o,()=>Nz.form.expires_at,e=>Nz.form.expires_at=e),da(l,()=>Nz.form.user_path,e=>Nz.form.user_path=e),da(f,()=>Nz.form.labels,e=>Nz.form.labels=e),fa(g,()=>Nz.form.dashboard_access,e=>Nz.form.dashboard_access=e),z(e,t)};V(r,e=>{Nz.issuedValue?e(i):e(a,-1)}),z(e,n)},$$slots:{default:!0}})}D()}var Hz=R(`

      `),Uz=R(`

      Applies to new requests made with this key. Leave empty to remove all labels.

      `,1);function Wz(e,t){E(t,!0),rT(e,{get open(){return Nz.labelsEditor.open},title:`Edit Labels`,ariaLabel:`API key labels editor`,get error(){return Nz.labelsEditor.error},get submitting(){return Nz.labelsEditor.submitting},submitLabel:`Save Labels`,cancel:!1,dialogClass:`auth-key-editor`,onclose:()=>Nz.closeLabelsEditor(),onsubmit:()=>Nz.submitLabelsEditor(),headerHint:e=>{var t=Hz(),n=M(t,!0);T(t),F(()=>B(n,Nz.labelsEditor.name)),z(e,t)},children:(e,t)=>{aT(e,{id:`auth-key-labels-edit`,label:`Labels (comma-separated)`,children:(e,t)=>{var n=Uz(),r=N(n);na(r),Ue(2),da(r,()=>Nz.labelsEditor.value,e=>Nz.labelsEditor.value=e),z(e,n)},$$slots:{default:!0}})},$$slots:{headerHint:!0,default:!0}}),D()}var Gz=R(` `),Kz=R(`
      `),qz=R(``),Jz=R(`Expired`),Yz=R(` `),Xz=R(` `,1),Zz=R(`Deactivated`),Qz=R(`
      `),$z=R(`
      NameDescriptionUser PathLabelsTokenDashboard Access ExpiresCreated
      `);function eB(e,t){E(t,!0);var n=$z(),r=M(n),i=M(r),a=M(i),o=P(M(a),5),s=M(o);G(P(M(s)),{name:`info`,width:`13`,height:`13`}),T(s),T(o),Ue(3),T(a),T(i);var c=P(i);H(c,21,()=>Nz.visibleKeys,e=>e.id,(e,t)=>{var n=Qz();let r;var i=M(n),a=M(i,!0);T(i);var o=P(i),s=M(o,!0);T(o);var c=P(o),l=M(c,!0);T(c);var u=P(c),d=M(u),f=e=>{var n=Kz();H(n,20,()=>I(t).labels||[],e=>e,(e,t)=>{var n=Gz(),r=M(n,!0);T(n),F(e=>{Hi(n,e),B(r,t)},[()=>Iv(t)]),z(e,n)}),T(n),z(e,n)},p=e=>{z(e,qz())};V(d,e=>{(I(t).labels||[]).length>0?e(f):e(p,-1)}),T(u);var m=P(u),h=M(m),g=M(h,!0);T(h),T(m);var _=P(m),v=M(_);let y;var b=M(v,!0);T(v),T(_);var x=P(_),S=M(x),C=e=>{var n=Yz(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=e=>{z(e,Jz())},s=O(()=>Sz(I(t)));V(a,e=>{I(s)&&e(o)}),T(n),F(e=>B(i,e),[()=>os(I(t).expires_at)]),z(e,n)},w=e=>{z(e,Zr(`—`))};V(S,e=>{I(t).expires_at?e(C):e(w,-1)}),T(x);var ee=P(x),te=M(ee,!0);T(ee);var ne=P(ee),re=M(ne),ie=M(re),ae=e=>{var n=Xz(),r=N(n);{let e=O(()=>(I(t).dashboard_access?`Revoke dashboard access for API key `:`Grant dashboard access to API key `)+I(t).name),n=O(()=>!!Nz.dashboardAccessID);$C(r,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>Nz.toggleDashboardAccess(I(t)),get disabled(){return I(n)},children:(e,n)=>{{let n=O(()=>I(t).dashboard_access?`shield-off`:`shield-check`);G(e,{get name(){return I(n)},class:`table-icon-svg`})}},$$slots:{default:!0}})}var i=P(r,2);{let e=O(()=>`Edit labels for API key `+I(t).name);$C(i,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>Nz.openLabelsEditor(I(t)),children:(e,t)=>{G(e,{name:`pencil`,class:`table-icon-svg`})},$$slots:{default:!0}})}var a=P(i,2);{let e=O(()=>(Nz.deactivatingID===I(t).id?`Deactivating API key `:`Deactivate API key `)+I(t).name),n=O(()=>Nz.deactivatingID===I(t).id);$C(a,{get label(){return I(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>Nz.deactivateKey(I(t)),get disabled(){return I(n)},children:(e,t)=>{G(e,{name:`power`,class:`table-icon-svg`})},$$slots:{default:!0}})}z(e,n)},oe=e=>{var n=Zz();F(e=>W(n,`title`,e),[()=>I(t).deactivated_at?`Deactivated on `+ss(I(t).deactivated_at):`Deactivated`]),z(e,n)},se=O(()=>Cz(I(t)));V(ie,e=>{I(t).active?e(ae):I(se)&&e(oe,1)}),T(re),T(ne),T(n),F((e,i,o)=>{r=U(n,1,`svelte-nf0ldb`,null,r,e),B(a,I(t).name),B(s,I(t).description||`—`),B(l,I(t).user_path||`—`),B(g,I(t).redacted_value),y=U(v,1,`auth-key-status-badge`,null,y,{"auth-key-status-active":I(t).dashboard_access,"auth-key-status-inactive":!I(t).dashboard_access}),B(b,I(t).dashboard_access?`Allowed`:`Denied`),W(x,`title`,i),B(te,o)},[()=>({"auth-key-row-deactivated":Cz(I(t))}),()=>I(t).expires_at?ss(I(t).expires_at):``,()=>ao.formatTimestamp(I(t).created_at)]),z(e,n)}),T(c),T(r),T(n),z(e,n),D()}var tB=R(``),nB=R(`
      API key management is unavailable.
      `),rB=R(``),iB=R(`

      Managed API keys authenticate requests to the gateway. Deactivation is - permanent — create a new key if access needs to be restored.

      `),aB=R(`
      `),oB=R(`
      `),sB=R(`

      `),cB=R(`

      No API keys yet. Issue a key to get started.

      `),lB=R(`
      `);function uB(e,t){E(t,!0),An(()=>{K.refreshTick,Ha.page===`auth-keys`&&Nz.fetchKeys()});var n=lB(),r=M(n),i=P(M(r),2),a=M(i),o=e=>{var t=tB();G(M(t),{name:`plus`,class:`table-icon-svg`}),Ue(2),T(t),F(()=>t.disabled=Nz.formSubmitting),L(`click`,t,()=>{Nz.formSubmitting||Nz.openForm()}),z(e,t)};V(a,e=>{Nz.available&&!K.authError&&e(o)}),T(i),T(r);var s=P(r,2),c=e=>{z(e,nB())};V(s,e=>{!Nz.available&&!K.authError&&e(c)});var l=P(s,2),u=e=>{var t=rB(),n=M(t,!0);T(t),F(()=>B(n,Nz.error)),z(e,t)};V(l,e=>{Nz.error&&!K.authError&&!Nz.formOpen&&e(u)});var d=P(l,2),f=e=>{z(e,iB())};V(d,e=>{Nz.available&&!K.authError&&e(f)});var p=P(d,2);Vz(p,{});var m=P(p,2);Wz(m,{});var h=P(m,2),g=e=>{var t=aB();px(M(t),{size:18,label:`Loading API keys`}),T(t),z(e,t)};V(h,e=>{Nz.loading&&Nz.keys.length===0&&e(g)});var _=P(h,2),v=e=>{var t=oB(),n=M(t);nC(M(n),{placeholder:`Filter by name, description, user path, label, or token...`,label:`Filter API keys by name, description, user path, label, or token`,get value(){return Nz.filter},set value(e){Nz.filter=e}}),T(n);var r=P(n,2),i=M(r),a=M(i);na(a);var o=P(a,2),s=P(M(o)),c=e=>{var t=Zr();F(()=>B(t,`(${Nz.inactiveCount??``})`)),z(e,t)};V(s,e=>{Nz.inactiveCount>0&&e(c)}),T(o),T(i),T(r),T(t),fa(a,()=>Nz.showInactive,e=>Nz.showInactive=e),z(e,t)};V(_,e=>{Nz.keys.length>0&&Nz.available&&e(v)});var y=P(_,2),b=e=>{eB(e,{})};V(y,e=>{Nz.visibleKeys.length>0&&Nz.available&&e(b)});var x=P(y,2),S=e=>{var t=sB(),n=M(t);T(t),F(()=>B(n,`No API keys match the current filter.${Nz.inactiveCount>0&&!Nz.showInactive?` `+Nz.inactiveCount+` inactive `+(Nz.inactiveCount===1?`key is`:`keys are`)+` hidden.`:``}`)),z(e,t)};V(x,e=>{Nz.keys.length>0&&Nz.visibleKeys.length===0&&Nz.available&&e(S)});var C=P(x,2),w=e=>{z(e,cB())};V(C,e=>{Nz.keys.length===0&&!Nz.loading&&!K.authError&&!Nz.error&&Nz.available&&e(w)}),T(n),z(e,n),D()}Hr([`click`]);var dB=R(`

      Timezone

      `),fB=R(``),pB=R(``),mB=R(`
      `,1);function hB(e,t){E(t,!0);function n(){ao.saveOverride(),K.refresh()}function r(){ao.clearOverride(),K.refresh()}var i=mB(),a=N(i);Rx(M(a),{copyId:`timezone-help-copy`,label:`timezone help`,text:`Day-based analytics, charts, and date filters use your effective timezone. Usage and audit logs keep UTC in the hover title while rendering row timestamps in your effective timezone.`,title:e=>{z(e,dB())},$$slots:{title:!0}}),T(a);var o=P(a,2),s=M(o),c=P(M(s),2),l=M(c),u=M(l);T(l),l.value=l.__value=``,H(P(l),17,()=>ao.options,e=>e.value,(e,t)=>{var n=fB(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(c),T(s),T(o);var d=P(o,2),f=M(d),p=e=>{var t=pB();L(`click`,t,r),z(e,t)};V(f,e=>{ao.override&&e(p)}),T(d),F(e=>B(u,`Automatic (${e??``})`),[()=>ao.detectedTimeZoneLabel()]),Vr(`focus`,c,()=>ao.ensureOptions()),L(`change`,c,n),Gi(c,()=>ao.override,e=>ao.override=e),z(e,i),D()}Hr([`change`,`click`]);var gB=R(``),_B=R(`

      Failover

      `,1);function vB(e,t){E(t,!0);let n=O(()=>Z.failoverSaving||Z.failoverGenerating||Z.failoverDraftSaving||!Z.failoverAvailable||!Z.failoverEnabled());var r=_B(),i=N(r),a=P(M(i),2),o=M(a),s=M(o);G(s,{name:`wand-sparkles`,class:`form-action-icon`});var c=P(s,2),l=M(c,!0);T(c),T(o);var u=P(o,2);G(M(u),{name:`trash-2`,class:`form-action-icon`}),Ue(2),T(u),T(a),T(i);var d=P(i,2),f=M(d),p=e=>{var t=gB(),n=M(t,!0);T(t),F(()=>B(n,Z.failoverError)),z(e,t)};V(f,e=>{Z.failoverError&&e(p)}),T(d),Yk(P(d,2),{}),F(()=>{o.disabled=I(n),B(l,Z.failoverGenerating?`Generating...`:`Generate failover models automatically`),u.disabled=I(n)}),L(`click`,o,()=>Z.generateFailoverRules()),L(`click`,u,()=>Z.openFailoverResetDialog()),z(e,r),D()}Hr([`click`]);function yB(){return{daily_reset_hour:0,daily_reset_minute:0,weekly_reset_weekday:1,weekly_reset_hour:0,weekly_reset_minute:0,monthly_reset_day:1,monthly_reset_hour:0,monthly_reset_minute:0}}function bB(e,t){let n=t||{},r=(e,t)=>{if(e===``)return t;let n=Number(e);return Number.isFinite(n)&&Number.isInteger(n)?Math.trunc(n):t},i=(e,t)=>r(n[e],t),a=(t,n)=>e?r(e[t],n):n;return{daily_reset_hour:a(`daily_reset_hour`,i(`daily_reset_hour`,0)),daily_reset_minute:a(`daily_reset_minute`,i(`daily_reset_minute`,0)),weekly_reset_weekday:a(`weekly_reset_weekday`,i(`weekly_reset_weekday`,1)),weekly_reset_hour:a(`weekly_reset_hour`,i(`weekly_reset_hour`,0)),weekly_reset_minute:a(`weekly_reset_minute`,i(`weekly_reset_minute`,0)),monthly_reset_day:a(`monthly_reset_day`,i(`monthly_reset_day`,1)),monthly_reset_hour:a(`monthly_reset_hour`,i(`monthly_reset_hour`,0)),monthly_reset_minute:a(`monthly_reset_minute`,i(`monthly_reset_minute`,0))}}function xB(){return[{value:0,label:`Sunday`},{value:1,label:`Monday`},{value:2,label:`Tuesday`},{value:3,label:`Wednesday`},{value:4,label:`Thursday`},{value:5,label:`Friday`},{value:6,label:`Saturday`}]}var SB=R(`

      Budget Resets

      `),CB=R(``),wB=R(`

      If the selected day does not exist in a month, the reset runs on - the last day of that month.

      `),TB=R(``),EB=R(``),DB=R(`
      Monthly
      Weekly
      Daily
      `,1);function OB(e,t){E(t,!0);let n=k(j(yB())),r=k(!1),i=k(!1),a=k(``),o=k(!1),s=O(()=>_o.budgetsVisible());async function c(){if(await _o.ensureLoaded(),!_o.budgetsVisible()){A(a,``);return}A(r,!0),A(a,``);try{let e=await fo(`/admin/budgets/settings`,{label:`budget settings`});if(e.stale)return;if(!e.ok){A(a,`Unable to load budget settings.`);return}A(n,bB(e.data,I(n)),!0)}catch(e){console.error(`Failed to fetch budget settings:`,e),A(a,`Unable to load budget settings.`)}finally{A(r,!1)}}async function l(){if(!I(i)){A(i,!0);try{let e=await po(`/admin/budgets/settings`,`PUT`,bB(I(n),I(n)),{label:`budget settings`});if(e.stale)return;if(!e.ok){q.error(`Unable to save budget settings.`);return}A(n,bB(e.data,I(n)),!0),A(a,``),q.success(`Budget settings saved.`)}catch(e){console.error(`Failed to save budget settings:`,e),q.error(`Unable to save budget settings.`)}finally{A(i,!1)}}}An(()=>{K.refreshTick,c()});var u=Qr(),d=N(u),f=e=>{var t=DB(),s=N(t),c=M(s);Rx(c,{copyId:`budget-settings-help-copy`,label:`budget help`,text:`Budget reset anchors are stored in the database and evaluated in UTC. Hourly budgets reset at the top of each hour.`,title:e=>{z(e,SB())},$$slots:{title:!0}});var u=P(c,2),d=M(u),f=P(M(d),2),p=M(f);Rx(p,{copyId:`budget-monthly-day-help-copy`,label:`day of month help`,external:!0,get open(){return I(o)},set open(e){A(o,e,!0)},title:e=>{z(e,CB())},$$slots:{title:!0}});var m=P(p,2);na(m),T(f);var h=P(f,2),g=P(M(h),2);na(g),T(h);var _=P(h,2),v=P(M(_),2);na(v),T(_);var y=P(_,2),b=M(y),x=e=>{z(e,wB())};V(b,e=>{I(o)&&e(x)}),T(y),T(d);var S=P(d,2),C=P(M(S),2),w=P(M(C),2);H(w,21,xB,e=>e.value,(e,t)=>{var n=TB(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(w),T(C);var ee=P(C,2),te=P(M(ee),2);na(te),T(ee);var ne=P(ee,2),re=P(M(ne),2);na(re),T(ne),Ue(2),T(S);var ie=P(S,2),ae=P(M(ie),4),oe=P(M(ae),2);na(oe),T(ae);var se=P(ae,2),ce=P(M(se),2);na(ce),T(se),Ue(2),T(ie),T(u);var le=P(u,2),ue=M(le);G(M(ue),{name:`save`,class:`form-action-icon`}),Ue(2),T(ue);var de=P(ue,2),fe=e=>{px(e,{size:16,label:`Loading budget settings`})};V(de,e=>{I(r)&&e(fe)}),T(le),T(s);var pe=P(s,2),me=M(pe),he=e=>{var t=EB(),n=M(t,!0);T(t),F(()=>B(n,I(a))),z(e,t)};V(me,e=>{I(a)&&e(he)}),T(pe),F(()=>{ue.disabled=I(i)||I(r),W(ue,`aria-busy`,I(i)?`true`:`false`)}),da(m,()=>I(n).monthly_reset_day,e=>I(n).monthly_reset_day=e),da(g,()=>I(n).monthly_reset_hour,e=>I(n).monthly_reset_hour=e),da(v,()=>I(n).monthly_reset_minute,e=>I(n).monthly_reset_minute=e),Gi(w,()=>I(n).weekly_reset_weekday,e=>I(n).weekly_reset_weekday=e),da(te,()=>I(n).weekly_reset_hour,e=>I(n).weekly_reset_hour=e),da(re,()=>I(n).weekly_reset_minute,e=>I(n).weekly_reset_minute=e),da(oe,()=>I(n).daily_reset_hour,e=>I(n).daily_reset_hour=e),da(ce,()=>I(n).daily_reset_minute,e=>I(n).daily_reset_minute=e),L(`click`,ue,l),z(e,t)};V(d,e=>{I(s)&&e(f)}),z(e,u),D()}Hr([`click`]);var kB=R(`

      Reset All Budgets

      Start new budget periods for every configured budget without changing - the limits.

      `);function AB(e,t){E(t,!0);var n=Qr(),r=N(n),i=e=>{var t=kB(),n=P(M(t),2),r=M(n);G(M(r),{name:`rotate-ccw`,class:`form-action-icon`}),Ue(2),T(r),T(n),T(t),F(()=>r.disabled=Y.resetAllLoading),L(`click`,r,()=>Y.openResetDialog()),z(e,t)},a=O(()=>_o.budgetsVisible());V(r,e=>{I(a)&&e(i)}),z(e,n),D()}Hr([`click`]);function jB(){return{header:``,prefix:``,do_not_pass:!1,delimiter:``,managed:!1}}function MB(e){return(e&&Array.isArray(e.headers)?e.headers:[]).map(e=>({header:typeof e.header==`string`?e.header:``,prefix:typeof e.prefix==`string`?e.prefix:``,do_not_pass:e.do_not_pass===!0,delimiter:typeof e.delimiter==`string`&&e.delimiter!==`,`?e.delimiter:``,managed:e.managed===!0}))}function NB(e){return{headers:(Array.isArray(e)?e:[]).filter(e=>!e.managed&&e.header.trim()!==``).map(e=>({header:e.header.trim(),prefix:e.prefix,do_not_pass:e.do_not_pass,delimiter:e.delimiter}))}}function PB(e){return e&&e.error&&e.error.message?e.error.message:``}var FB=R(`

      Tagging based on headers

      `),IB=R(`config`),LB=R(``),RB=R(`
      `),zB=R(`

      No tagging headers configured. Requests are not labelled.

      `),BB=R(``),VB=R(`
      `,1);function HB(e,t){E(t,!0);let n=k(j([])),r=k(!0),i=k(!1),a=k(!1),o=k(``);function s(){I(n).push(jB())}function c(e){let t=I(n)[e];!t||t.managed||I(n).splice(e,1)}async function l(){A(i,!0),A(o,``);try{let e=await fo(`/admin/tagging/settings`,{label:`tagging settings`});if(e.stale)return;if(!e.ok){A(o,`Unable to load tagging settings.`);return}A(n,MB(e.data),!0),A(r,e.data&&e.data.editable!==!1,!0)}catch(e){console.error(`Failed to fetch tagging settings:`,e),A(o,`Unable to load tagging settings.`)}finally{A(i,!1)}}async function u(){if(!(I(a)||!I(r))){A(a,!0);try{let e=await po(`/admin/tagging/settings`,`PUT`,NB(I(n)),{label:`tagging settings`});if(e.stale)return;if(!e.ok){q.error(e.status!==401&&PB(e.data)||`Unable to save tagging settings.`);return}A(n,MB(e.data),!0),A(r,e.data&&e.data.editable!==!1,!0),A(o,``),q.success(`Tagging settings saved.`)}catch(e){console.error(`Failed to save tagging settings:`,e),q.error(`Unable to save tagging settings.`)}finally{A(a,!1)}}}An(()=>{K.refreshTick,l()});var d=VB(),f=N(d),p=M(f);Rx(p,{copyId:`tagging-settings-help-copy`,label:`tagging help`,text:`Each request is labelled from the listed headers; labels land in usage tracking and audit logs. A header value can carry several labels split by the delimiter (default: comma). The prefix is trimmed from each label only — the header itself is forwarded unchanged unless 'Do not pass' is checked. Rows marked CONFIG come from config.yaml or TAGGING_HEADER_* env vars and are read-only here.`,title:e=>{z(e,FB())},$$slots:{title:!0}});var m=P(p,2),h=M(m);H(h,17,()=>I(n),oi,(e,t,n)=>{var i=RB(),a=M(i),o=M(a);W(o,`for`,`tagging-header-`+n);var s=P(o,2);na(s),W(s,`id`,`tagging-header-`+n),T(a);var l=P(a,2),u=M(l);W(u,`for`,`tagging-prefix-`+n);var d=P(u,2);na(d),W(d,`id`,`tagging-prefix-`+n),T(l);var f=P(l,2),p=M(f);W(p,`for`,`tagging-delimiter-`+n);var m=P(p,2);na(m),W(m,`id`,`tagging-delimiter-`+n),T(f);var h=P(f,2),g=M(h);na(g),Ue(2),T(h);var _=P(h,2),v=M(_),y=e=>{z(e,IB())},b=e=>{var i=LB();F(()=>{i.disabled=!I(r),W(i,`aria-label`,`Remove tagging header `+(I(t).header||n+1))}),L(`click`,i,()=>c(n)),z(e,i)};V(v,e=>{I(t).managed?e(y):e(b,-1)}),T(_),T(i),F(()=>{s.disabled=I(t).managed||!I(r),d.disabled=I(t).managed||!I(r),m.disabled=I(t).managed||!I(r),g.disabled=I(t).managed||!I(r)}),da(s,()=>I(t).header,e=>I(t).header=e),da(d,()=>I(t).prefix,e=>I(t).prefix=e),da(m,()=>I(t).delimiter,e=>I(t).delimiter=e),fa(g,()=>I(t).do_not_pass,e=>I(t).do_not_pass=e),z(e,i)});var g=P(h,2),_=e=>{px(e,{size:16,label:`Loading tagging settings`})};V(g,e=>{I(i)&&e(_)});var v=P(g,2),y=e=>{z(e,zB())};V(v,e=>{!I(i)&&I(n).length===0&&e(y)}),T(m);var b=P(m,2),x=M(b);G(M(x),{name:`plus`,class:`form-action-icon`}),Ue(2),T(x);var S=P(x,2);G(M(S),{name:`save`,class:`form-action-icon`}),Ue(2),T(S),T(b),T(f);var C=P(f,2),w=M(C),ee=e=>{var t=BB(),n=M(t,!0);T(t),F(()=>B(n,I(o))),z(e,t)};V(w,e=>{I(o)&&e(ee)}),T(C),F(()=>{x.disabled=!I(r)||I(a)||I(i),S.disabled=!I(r)||I(a)||I(i),W(S,`aria-busy`,I(a)?`true`:`false`)}),L(`click`,x,s),L(`click`,S,u),z(e,d),D()}Hr([`click`]);function UB(e){let t=e||{};if(t.selectedPreset)return{days:parseInt(t.selectedPreset,10)||30};let n=t.customStartDate?as(t.customStartDate):``,r=t.customEndDate||t.today||null;return{start_date:n,end_date:r?as(r):``}}function WB(e,t,n,r){return{...UB(e),user_path:String(t||``).trim(),selector:String(n||``).trim(),confirmation:r}}function GB(e){let t=Number(e&&e.matched||0),n=Number(e&&e.recalculated||0),r=Number(e&&e.without_pricing||0),i=`Pricing recalculated for `+n+` of `+t+` usage record`+(t===1?``:`s`)+`.`;return r>0&&(i+=` `+r+` usage record`+(r===1?` still lacks`:`s still lack`)+` pricing metadata.`),i}var KB=R(`

      Usage Pricing Recalculation

      `),qB=R(`
      `);function JB(e,t){E(t,!0);let n=k(``),r=k(``),i=k(!1),a=O(()=>_o.booleanFlag(`USAGE_PRICING_RECALCULATION_ENABLED`,!1));function o(){if(!I(a)){q.error(`Usage pricing recalculation is unavailable.`);return}I(i)||jo.open({title:`Recalculate Pricing`,titleId:`pricingRecalculateDialogTitle`,inputId:`pricing-recalculate-confirmation`,requiredText:`recalculate`,confirmLabel:`Recalculate Pricing`,icon:`calculator`,dialogClass:`pricing-recalculate-dialog`,message:`Stored usage cost fields matching the selected filters will be overwritten.`,onConfirm:()=>s()})}async function s(){if(!I(a)){q.error(`Usage pricing recalculation is unavailable.`);return}if(!I(i)){A(i,!0);try{let e=await po(`/admin/usage/recalculate-pricing`,`POST`,WB({selectedPreset:Ts.selectedPreset,customStartDate:Ts.customStartDate,customEndDate:Ts.customEndDate,today:ao.todayDate()},I(n),I(r),`recalculate`),{label:`pricing recalculation`});if(e.stale)return;if(!e.ok){jo.error=`Unable to recalculate pricing.`;return}jo.close(),q.success(GB(e.data)),js.fetchUsage()}catch(e){console.error(`Failed to recalculate pricing:`,e),jo.error=`Unable to recalculate pricing.`}finally{A(i,!1)}}}var c=Qr(),l=N(c),u=e=>{var t=qB(),s=M(t);Rx(s,{copyId:`pricing-recalculate-help-copy`,label:`pricing recalculation help`,text:`Recalculate stored input, output, total, and Pro Saved costs from the current model pricing metadata. This overwrites matching historical cost fields. Filters are applied to the selected date range, user path subtree, and provider/model selector or alias.`,title:e=>{z(e,KB())},$$slots:{title:!0}});var c=P(s,2),l=M(c),u=P(M(l),2);Js(M(u),{}),T(u),T(l);var d=P(l,2),f=P(M(d),2);na(f),T(d);var p=P(d,2),m=P(M(p),2);na(m),T(p),T(c);var h=P(c,2),g=M(h);G(M(g),{name:`calculator`,class:`form-action-icon`}),Ue(2),T(g),T(h),T(t),F(()=>{g.disabled=I(i)||!I(a),W(g,`aria-busy`,I(i)?`true`:`false`)}),da(f,()=>I(n),e=>A(n,e)),da(m,()=>I(r),e=>A(r,e)),L(`click`,g,o),z(e,t)};V(l,e=>{I(a)&&e(u)}),z(e,c),D()}Hr([`click`]);function YB(e){return String(e&&e.status||`ok`).toLowerCase()}function XB(e){if(!e||typeof e!=`object`)return`Runtime refresh completed.`;let t=Number(e.model_count||0),n=Number(e.provider_count||0),r=YB(e);return(r===`ok`?`Runtime refreshed.`:r===`partial`?`Runtime refresh completed with warnings.`:`Runtime refresh failed.`)+` `+t+` model`+(t===1?``:`s`)+` across `+n+` provider`+(n===1?``:`s`)+`.`}function ZB(e){return!!e&&YB(e)===`ok`}function QB(e){let t=e&&e.steps;return Array.isArray(t)?t:[]}function $B(e){let t=String(e&&e.name||``).replace(/_/g,` `),n=String(e&&e.status||``).trim(),r=String(e&&(e.error||e.message)||``).trim();return t?r?t+`: `+n+` - `+r:t+`: `+n:r||n||``}var eV=R(`

      Runtime Refresh

      `),tV=R(`
    • `),nV=R(`
        `),rV=R(`
        `,1);function iV(e,t){E(t,!0);let n=k(!1),r=k(null);async function i(){if(!I(n)){A(n,!0),A(r,null);try{let e=await po(`/admin/runtime/refresh`,`POST`,void 0,{label:`runtime refresh`});if(e.stale)return;if(!e.ok){q.error(`Runtime refresh failed.`);return}A(r,e.data&&typeof e.data==`object`?e.data:null,!0),ZB(I(r))?q.success(XB(I(r))):q.error(XB(I(r))),K.refresh()}catch(e){console.error(`Failed to refresh runtime:`,e),q.error(`Runtime refresh failed.`)}finally{A(n,!1)}}}var a=rV(),o=N(a),s=M(o);Rx(s,{copyId:`runtime-refresh-help-copy`,label:`runtime refresh help`,text:`Pull the latest model metadata, provider inventory, API keys, aliases, model access rules, guardrails, and workflows.`,title:e=>{z(e,eV())},$$slots:{title:!0}});var c=P(s,2),l=M(c);let u;G(M(l),{name:`refresh-cw`,class:`settings-refresh-icon`}),Ue(2),T(l),T(c),T(o);var d=P(o,2),f=M(d),p=e=>{var t=nV();H(t,21,()=>QB(I(r)),e=>e.name,(e,t)=>{var n=tV(),r=M(n,!0);T(n),F(e=>{U(n,1,`runtime-refresh-step is-${I(t).status??``}`,`svelte-yeq2mp`),B(r,e)},[()=>$B(I(t))]),z(e,n)}),T(t),z(e,t)},m=O(()=>QB(I(r)).length>0);V(f,e=>{I(m)&&e(p)}),T(d),F(()=>{u=U(l,1,`btn btn-primary btn-with-icon settings-refresh-btn`,null,u,{"is-refreshing":I(n)}),l.disabled=I(n),W(l,`aria-busy`,I(n)?`true`:`false`)}),L(`click`,l,i),z(e,a),D()}Hr([`click`]);var aV=R(`
        `);function oV(e,t){E(t,!0),An(()=>{K.refreshTick,Ha.page===`settings`&&(ao.ensureOptions(),_o.ensureLoaded())});var n=aV(),r=P(M(n),2),i=M(r);hB(i,{});var a=P(i,2);vB(a,{});var o=P(a,2);OB(o,{});var s=P(o,2);AB(s,{});var c=P(s,2);HB(c,{});var l=P(c,2);JB(l,{}),iV(P(l,2),{}),T(r);var u=P(r,2),d=M(u,!0);T(u),T(n),F(e=>B(d,e),[()=>La()]),z(e,n),D()}var sV=R(`
        `);function cV(e,t){E(t,!0);let n={overview:cS,usage:YC,budgets:TT,"rate-limits":IE,models:vA,workflows:zM,"audit-logs":FI,guardrails:OL,"mcp-servers":cR,"providers-config":gz,"auth-keys":uB,settings:oV};ao.init(),Ts.init(),K.init(),Oa.init(),ka.init(),Ha.init(),An(()=>{K.refreshTick,_o.fetch(),Es.fetchModels(),Es.fetchCategories()}),An(()=>{document.body.classList.toggle(`dashboard-modal-open`,Aa.anyOpen)});let r=O(()=>n[Ha.page]||cS);var i=sV(),a=M(i);So(a,{});var o=P(a,2),s=M(o);Xo(s,{}),_i(P(s,2),()=>I(r),(e,t)=>{t(e,{})}),T(o);var c=P(o,2);ko(c,{});var l=P(c,2);Fo(l,{}),Jo(P(l,2),{}),T(i),z(e,i),D()}ti(cV,{target:document.getElementById(`app`)}); \ No newline at end of file diff --git a/internal/admin/dashboard/static/dist/assets/index-G3uz-AWc.js b/internal/admin/dashboard/static/dist/assets/index-G3uz-AWc.js new file mode 100644 index 00000000..0fe69bb7 --- /dev/null +++ b/internal/admin/dashboard/static/dist/assets/index-G3uz-AWc.js @@ -0,0 +1,68 @@ +(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible;function d(e){return typeof e==`function`}var f=()=>{};function p(e){for(var t=0;t{e=n,t=r}),resolve:e,reject:t}}function h(e,t,n=!1){return e===void 0?n?t():t:e}function g(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}var _=1<<24,v=1024,y=2048,b=4096,x=8192,S=16384,C=32768,w=1<<25,ee=65536,te=1<<19,ne=1<<20,re=1<<25,ie=65536,ae=1<<21,oe=1<<22,se=1<<23,ce=Symbol(`$state`),le=Symbol(`legacy props`),ue=Symbol(``),de=Symbol(`attributes`),fe=Symbol(`class`),pe=Symbol(`style`),me=Symbol(`text`),he=Symbol(`form reset`),ge=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},_e=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function ve(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function ye(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function be(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function xe(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Se(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function Ce(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function we(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function Te(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Ee(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function De(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Oe(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var ke={},Ae=Symbol(`uninitialized`),je=`http://www.w3.org/1999/xhtml`,Me=`http://www.w3.org/2000/svg`,Ne=`http://www.w3.org/1998/Math/MathML`;function Pe(){console.warn(`https://svelte.dev/e/derived_inert`)}function Fe(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Ie(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function Le(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var Re=!1;function ze(e){Re=e}var Be;function Ve(e){if(e===null)throw Fe(),ke;return Be=e}function He(){return Ve(bn(Be))}function T(e){if(Re){if(bn(Be)!==null)throw Fe(),ke;Be=e}}function Ue(e=1){if(Re){for(var t=e,n=Be;t--;)n=bn(n);Be=n}}function We(e=!0){for(var t=0,n=Be;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=bn(n);e&&n.remove(),n=i}}function Ge(e){if(!e||e.nodeType!==8)throw Fe(),ke;return e.data}function Ke(e){return e===this.v}function qe(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Je(e){return!qe(e,this.v)}var Ye=null;function Xe(e){Ye=e}function E(e,t=!1,n){Ye={p:Ye,i:!1,c:null,e:null,s:e,x:null,r:ir,l:null}}function D(e){var t=Ye,n=t.e;if(n!==null){t.e=null;for(var r of n)jn(r)}return e!==void 0&&(t.x=e),t.i=!0,Ye=t.p,e??{}}function Ze(){return!0}var Qe=[];function $e(){var e=Qe;Qe=[],p(e)}function et(e){if(Qe.length===0&&!zt){var t=Qe;queueMicrotask(()=>{t===Qe&&$e()})}Qe.push(e)}function tt(){for(;Qe.length>0;)$e()}function nt(e){var t=ir;if(t===null)return tr.f|=se,e;if(!(t.f&32768)&&!(t.f&4))throw e;rt(e,t)}function rt(e,t){if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}var it=~(y|b|v);function at(e,t){e.f=e.f&it|t}function ot(e){e.f&512||e.deps===null?at(e,v):at(e,b)}function st(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=ie,st(t.deps))}function ct(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),st(e.deps),at(e,v)}var lt=!1;function ut(e){var t=lt;try{return lt=!1,[e(),lt]}finally{lt=t}}function dt(e,t){if(t){let t=document.body;e.autofocus=!0,et(()=>{document.activeElement===t&&e.focus()})}}function ft(e){Re&&yn(e)!==null&&xn(e)}var pt=!1;function mt(){pt||(pt=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[he]?.()})},{capture:!0}))}function ht(e){var t=tr,n=ir;rr(null),ar(null);try{return e()}finally{rr(t),ar(n)}}function gt(e,t,n,r=n){e.addEventListener(t,()=>ht(n));let i=e[he];i?e[he]=()=>{i(),r(!0)}:e[he]=()=>r(!0),mt()}function _t(e){let t=0,n=an(0),r;return()=>{On()&&(I(n),In(()=>(t===0&&(r=Er(()=>e(()=>ln(n)))),t+=1,()=>{et(()=>{--t,t===0&&(r?.(),r=void 0,ln(n))})})))}}var vt=ee|te;function yt(e,t,n,r){new bt(e,t,n,r)}var bt=class{parent;is_pending=!1;transform_error;#e;#t=Re?Be:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=_t(()=>(this.#m=an(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=ir;t.b=this,t.f|=128,n(e)},this.parent=ir.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Ln(()=>{if(Re){let e=this.#t;He();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},vt),Re&&(this.#e=Be)}#g(){try{this.#a=zn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=zn(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=zn(()=>e(this.#e)),et(()=>{var e=this.#c=document.createDocumentFragment(),t=vn();e.append(t),this.#a=this.#x(()=>zn(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,Kn(this.#o,()=>{this.#o=null}),this.#b(Ft))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=zn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Xn(this.#a,e);let t=this.#n.pending;this.#o=zn(()=>t(this.#e))}else this.#b(Ft)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){ct(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=ir,n=tr,r=Ye;ar(this.#i),rr(this.#i),Xe(this.#i.ctx);try{return Gt.ensure(),e()}catch(e){return nt(e),null}finally{ar(t),rr(n),Xe(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&Kn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,et(()=>{this.#d=!1,this.#m&&sn(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),I(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;Ft?.is_fork?(this.#a&&Ft.skip_effect(this.#a),this.#o&&Ft.skip_effect(this.#o),this.#s&&Ft.skip_effect(this.#s),Ft.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(Un(this.#a),null),this.#o&&=(Un(this.#o),null),this.#s&&=(Un(this.#s),null),Re&&(Ve(this.#t),Ue(),Ve(We()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){Le();return}r=!0,i&&Oe(),this.#s!==null&&Kn(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){rt(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return zn(()=>{var t=ir;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return rt(e,this.#i.parent),null}}))};et(()=>{var t;try{t=this.transform_error(e)}catch(e){rt(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>rt(e,this.#i&&this.#i.parent)):o(t)})}};function xt(e,t,n,r){let i=Ze()?Tt:Ot;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=ir,c=St(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){rt(e,s)}Ct()}}var d=wt();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>Dt(e))).then(u).catch(e=>rt(e,s)).finally(d)}l?l.then(()=>{c(),f(),Ct()}):f()}function St(){var e=ir,t=tr,n=Ye,r=Ft;return function(i=!0){ar(e),rr(t),Xe(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function Ct(e=!0){ar(null),rr(null),Xe(null),e&&Ft?.deactivate()}function wt(){var e=ir,t=e.b,n=Ft,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function Tt(e){var t=2|y;return ir!==null&&(ir.f|=te),{ctx:Ye,deps:null,effects:null,equals:Ke,f:t,fn:e,reactions:null,rv:0,v:Ae,wv:0,parent:ir,ac:null}}var Et=Symbol(`obsolete`);function Dt(e,t,n){let r=ir;r===null&&ve();var i=void 0,a=an(Ae),o=!tr,s=new Set;return Fn(()=>{var t=ir,n=m();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==ge&&n.reject(e)}).finally(Ct)}catch(e){n.reject(e),Ct()}var c=Ft;if(o){if(t.f&32768)var l=wt();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(Et);else for(let e of s.values())e.reject(Et);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==Et&&(c.activate(),t?(a.f|=se,sn(a,t)):(a.f&8388608&&(a.f^=se),sn(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),kn(()=>{for(let e of s)e.reject(Et)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function O(e){let t=Tt(e);return sr(t),t}function Ot(e){let t=Tt(e);return t.equals=Je,t}function kt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n{t.ac.abort(ge),t.ac=null}),t.fn!==null&&(t.teardown=f),xr(t,0),Vn(t))}function Nt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&Sr(t)}var Pt=null,Ft=null,It=null,Lt=null,Rt=null,zt=!1,Bt=!1,Vt=null,Ht=null,Ut=0,Wt=1,Gt=class e{id=Wt++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){Pt===null?Pt=this:(Pt.#n=this,this.#t=Pt),Pt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)at(r,y),t(r);for(r of n.m)at(r,b),t(r)}this.#p.add(e)}#g(){this.#e=!0,Ut++>1e3&&(this.#x(),qt());for(let e of this.#u)this.#d.delete(e),at(e,y),this.schedule(e);for(let e of this.#d)at(e,b),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=Vt=[],r=[],i=Ht=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw en(e),this.#h()||this.discard(),t}if(Ft=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(Vt=null,Ht=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)$t(e,t);i.length>0&&Ft.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),It=this,Yt(r),Yt(n),It=null,this.#s?.resolve();var s=Ft;if(this.#a===0&&(this.#c.length===0||s!==null)&&this.#x(),this.#c.length>0)if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this;s!==null&&s.#g()}#_(e,t,n){e.f^=v;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=v:i&4?t.push(r):_r(r)&&(i&16&&this.#d.add(r),Sr(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null&&!(e.f&2&&!(e.f&6144)))for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),at(i,y),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#x(),Ft=this,this.#g()}#b(e){for(var t=0;t{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=m()).promise}static ensure(){if(Ft===null){let t=Ft=new e;!Bt&&!zt&&et(()=>{t.#e||t.flush()})}return Ft}apply(){Lt=null}schedule(e){if(Rt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(Vt!==null&&t===ir&&(tr===null||!(tr.f&2)))return;if(n&96){if(!(n&1024))return;t.f^=v}}this.#c.push(t)}#x(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?Pt=e:t.#t=e,this.linked=!1}}};function Kt(e){var t=zt;zt=!0;try{var n;for(e&&(Ft!==null&&!Ft.is_fork&&Ft.flush(),n=e());;){if(tt(),Ft===null)return n;Ft.flush()}}finally{zt=t}}function qt(){try{Ce()}catch(e){rt(e,Rt)}}var Jt=null;function Yt(e){var t=e.length;if(t!==0){for(var n=0;n0)){nn.clear();for(let e of Jt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Jt.has(n)&&(Jt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Sr(n)}}Jt.clear()}}Jt=null}}function Xt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Xt(i,t,n,r):e&4194320&&!(e&2048)&&Zt(i,t,r)&&(at(i,y),Qt(i))}}function Zt(e,t,r){let i=r.get(e);if(i!==void 0)return i;if(e.deps!==null)for(let i of e.deps){if(n.call(t,i))return!0;if(i.f&2&&Zt(i,t,r))return r.set(i,!0),!0}return r.set(e,!1),!1}function Qt(e){Ft.schedule(e)}function $t(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),at(e,v);for(var n=e.first;n!==null;)$t(n,t),n=n.next}}function en(e){at(e,v);for(var t=e.first;t!==null;)en(t),t=t.next}var tn=new Set,nn=new Map,rn=!1;function an(e,t){return{f:0,v:e,reactions:null,equals:Ke,rv:0,wv:0}}function k(e,t){let n=an(e,t);return sr(n),n}function on(e,t=!1,n=!0){let r=an(e);return t||(r.equals=Je),r}function A(e,t,n=!1){return tr!==null&&(!nr||tr.f&131072)&&Ze()&&tr.f&4325394&&(or===null||!or.has(e))&&De(),sn(e,n?j(t):t,Ht)}function sn(e,t,n=null){if(!e.equals(t)){nn.set(e,$n?t:e.v);var r=Gt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&At(t),Lt===null&&ot(t)}e.wv=gr(),un(e,y,n),Ze()&&ir!==null&&ir.f&1024&&!(ir.f&96)&&(ur===null?dr([e]):ur.push(e)),!r.is_fork&&tn.size>0&&!rn&&cn()}return t}function cn(){rn=!1;for(let e of tn){e.f&1024&&at(e,b);let t;try{t=_r(e)}catch{t=!0}t&&Sr(e)}tn.clear()}function ln(e){A(e,e.v+1)}function un(e,t,n){var r=e.reactions;if(r!==null)for(var i=Ze(),a=r.length,o=0;o{if(mr===d)return e();var t=tr,n=mr;rr(null),hr(d);var r=e();return rr(t),hr(n),r};return i&&r.set(`length`,k(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&Te();var i=r.get(t);return i===void 0?f(()=>{var e=k(n.value,u);return r.set(t,e),e}):A(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>k(Ae,u));r.set(t,e),ln(o)}}else A(n,Ae),ln(o);return!0},get(e,n,i){if(n===ce)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>k(j(s?e[n]:Ae),u)),r.set(n,o)),o!==void 0){var c=I(o);return c===Ae?void 0:c}return Reflect.get(e,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=I(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==Ae)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===ce)return!0;var n=r.get(t),i=n!==void 0&&n.v!==Ae||Reflect.has(e,t);return(n!==void 0||ir!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>k(i?j(e[t]):Ae,u)),r.set(t,n)),I(n)===Ae)?!1:i},set(e,t,n,s){var c=r.get(t),l=t in e;if(i&&t===`length`)for(var d=n;dk(Ae,u)),r.set(d+``,p)):A(p,Ae)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>k(void 0,u)),A(c,j(n)),r.set(t,c));else{l=c.v!==Ae;var m=f(()=>j(n));A(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&A(g,_+1)}ln(o)}return!0},ownKeys(e){I(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==Ae});for(var[n,i]of r)i.v!==Ae&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Ee()}})}function dn(e){try{if(typeof e==`object`&&e&&ce in e)return e[ce]}catch{}return e}function fn(e,t){return Object.is(dn(e),dn(t))}var pn,mn,hn,gn;function _n(){if(pn===void 0){pn=window,mn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;hn=a(t,`firstChild`).get,gn=a(t,`nextSibling`).get,u(e)&&(e[fe]=void 0,e[de]=null,e[pe]=void 0,e.__e=void 0),u(n)&&(n[me]=void 0)}}function vn(e=``){return document.createTextNode(e)}function yn(e){return hn.call(e)}function bn(e){return gn.call(e)}function M(e,t){if(!Re)return yn(e);var n=yn(Be);if(n===null)n=Be.appendChild(vn());else if(t&&n.nodeType!==3){var r=vn();return n?.before(r),Ve(r),r}return t&&wn(n),Ve(n),n}function N(e,t=!1){if(!Re){var n=yn(e);return n instanceof Comment&&n.data===``?bn(n):n}if(t){if(Be?.nodeType!==3){var r=vn();return Be?.before(r),Ve(r),r}wn(Be)}return Be}function P(e,t=1,n=!1){let r=Re?Be:e;for(var i;t--;)i=r,r=bn(r);if(!Re)return r;if(n){if(r?.nodeType!==3){var a=vn();return r===null?i?.after(a):r.before(a),Ve(a),a}wn(r)}return Ve(r),r}function xn(e){e.textContent=``}function Sn(){return!1}function Cn(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function wn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function Tn(e){ir===null&&(tr===null&&Se(e),xe()),$n&&be(e)}function En(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function Dn(e,t){var n=ir;n!==null&&n.f&8192&&(e|=x);var r={ctx:Ye,deps:null,nodes:null,f:e|y|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};Ft?.register_created_effect(r);var i=r;if(e&4)Vt===null?Gt.ensure().schedule(r):Vt.push(r);else if(t!==null){try{Sr(r)}catch(e){throw Un(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=ee))}if(i!==null&&(i.parent=n,n!==null&&En(i,n),tr!==null&&tr.f&2&&!(e&64))){var a=tr;(a.effects??=[]).push(i)}return r}function On(){return tr!==null&&!nr}function kn(e){let t=Dn(8,null);return at(t,v),t.teardown=e,t}function An(e){Tn(`$effect`);var t=ir.f;if(!tr&&t&32&&Ye!==null&&!Ye.i){var n=Ye;(n.e??=[]).push(e)}else return jn(e)}function jn(e){return Dn(4|ne,e)}function Mn(e){Gt.ensure();let t=Dn(64|te,e);return()=>{Un(t)}}function Nn(e){Gt.ensure();let t=Dn(64|te,e);return(e={})=>new Promise(n=>{e.outro?Kn(t,()=>{Un(t),n(void 0)}):(Un(t),n(void 0))})}function Pn(e){return Dn(4,e)}function Fn(e){return Dn(oe|te,e)}function In(e,t=0){return Dn(8|t,e)}function F(e,t=[],n=[],r=[]){xt(r,t,n,t=>{Dn(8,()=>{e(...t.map(I))})})}function Ln(e,t=0){return Dn(16|t,e)}function Rn(e,t=0){return Dn(_|t,e)}function zn(e){return Dn(32|te,e)}function Bn(e){var t=e.teardown;if(t!==null){let e=$n,n=tr;er(!0),rr(null);try{t.call(null)}finally{er(e),rr(n)}}}function Vn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&ht(()=>{e.abort(ge)});var r=n.next;n.f&64?n.parent=null:Un(n,t),n=r}}function Hn(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Un(t),t=n}}function Un(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Wn(e.nodes.start,e.nodes.end),n=!0),e.f|=w,Vn(e,t&&!n),xr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Bn(e),e.f^=w,e.f|=S;var i=e.parent;i!==null&&i.first!==null&&Gn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Wn(e,t){for(;e!==null;){var n=e===t?null:bn(e);e.remove(),e=n}}function Gn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Kn(e,t,n=!0){var r=[];qn(e,r,!0);var i=()=>{n&&Un(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function qn(e,t,n){if(!(e.f&8192)){e.f^=x;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;qn(i,t,o?n:!1)}i=a}}}function Jn(e){Yn(e,!0)}function Yn(e,t){if(e.f&8192){e.f^=x,e.f&1024||(at(e,y),Gt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Yn(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Xn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:bn(n);t.append(n),n=i}}var Zn=null,Qn=!1,$n=!1;function er(e){$n=e}var tr=null,nr=!1;function rr(e){tr=e}var ir=null;function ar(e){ir=e}var or=null;function sr(e){tr!==null&&(or??=new Set).add(e)}var cr=null,lr=0,ur=null;function dr(e){ur=e}var fr=1,pr=0,mr=pr;function hr(e){mr=e}function gr(){return++fr}function _r(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~ie),t&4096){for(var n=e.deps,r=n.length,i=0;ie.wv)return!0}t&512&&Lt===null&&at(e,v)}return!1}function vr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(or!==null&&or.has(e)))for(var i=0;i{e.ac.abort(ge)}),e.ac=null);try{e.f|=ae;var u=e.fn,d=u();e.f|=C;var f=e.deps,p=Ft?.is_fork;if(cr!==null){var m;if(p||xr(e,lr),f!==null&&lr>0)for(f.length=lr+cr.length,m=0;m{s.ac.abort(ge),s.ac=null,at(s,y)}),Mt(s),xr(s,0)}}function xr(e,t){var n=e.deps;if(n!==null)for(var r=t;rn?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?et(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function Vr(e,t,n,r,i){var a={capture:r,passive:i},o=Br(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&kn(()=>{t.removeEventListener(e,o,a)})}function L(e,t,n){(t[Lr]??={})[e]=n}function Hr(e){for(var t=0;t{throw e});throw p}}finally{e[Lr]=t,delete e.currentTarget,rr(d),ar(f)}}}var Gr=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Kr(e){return Gr?.createHTML(e)??e}function qr(e){var t=Cn(`template`);return t.innerHTML=Kr(e.replaceAll(``,``)),t.content}function Jr(e,t){var n=ir;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function R(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(``);return()=>{if(Re)return Jr(Be,null),Be;i===void 0&&(i=qr(a?e:``+e),n||(i=yn(i)));var t=r||mn?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=yn(t),s=t.lastChild;Jr(o,s)}else Jr(t,t);return t}}function Yr(e,t,n=`svg`){var r=!e.startsWith(``),i=(t&1)!=0,a=`<${n}>${r?e:``+e}`,o;return()=>{if(Re)return Jr(Be,null),Be;if(!o){var e=yn(qr(a));if(i)for(o=document.createDocumentFragment();yn(e);)o.appendChild(yn(e));else o=yn(e)}var t=o.cloneNode(!0);if(i){var n=yn(t),r=t.lastChild;Jr(n,r)}else Jr(t,t);return t}}function Xr(e,t){return Yr(e,t,`svg`)}function Zr(e=``){if(!Re){var t=vn(e+``);return Jr(t,t),t}var n=Be;return n.nodeType===3?wn(n):(n.before(n=vn()),Ve(n)),Jr(n,n),n}function Qr(){if(Re)return Jr(Be,null),Be;var e=document.createDocumentFragment(),t=document.createComment(``),n=vn();return e.append(t,n),Jr(t,n),e}function z(e,t){if(Re){var n=ir;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=Be),He();return}e!==null&&e.before(t)}var $r=!0;function ei(e){$r=e}function B(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[me]??=e.nodeValue)&&(e[me]=n,e.nodeValue=`${n}`)}function ti(e,t){return ri(e,t)}var ni=new Map;function ri(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){_n();var l=void 0,u=Nn(()=>{var u=n??t.appendChild(vn());yt(u,{pending:()=>{}},t=>{E({});var n=Ye;if(o&&(n.c=o),a&&(i.$$events=a),Re&&Jr(t,null),$r=s,l=e(t,i)||{},$r=!0,Re&&(ir.nodes.end=Be,Be===null||Be.nodeType!==8||Be.data!==`]`))throw Fe(),ke;D()},c);var d=new Set,f=e=>{for(var n=0;n{for(var e of d)for(let n of[t,document]){var r=ni.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Wr),r.delete(e),r.size===0&&ni.delete(n)):r.set(e,i)}zr.delete(f),u!==n&&u.parentNode?.removeChild(u)}});return ii.set(l,u),l}var ii=new WeakMap,ai=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)Jn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Jn(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(Un(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();Xn(r,t),t.append(vn()),this.#n.set(e,{effect:r,fragment:t})}else Un(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Kn(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(Un(n.effect),this.#n.delete(e))};ensure(e,t){var n=Ft,r=Sn();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=vn();i.append(a),this.#n.set(e,{effect:zn(()=>t(a)),fragment:i})}else this.#t.set(e,zn(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else Re&&(this.anchor=Be),this.#a(n)}};function V(e,t,n=!1){var r;Re&&(r=Be,He());var i=new ai(e),a=n?ee:0;function o(e,t){if(Re){var n=Ge(r);if(e!==parseInt(n.substring(1))){var a=We();Ve(a),i.anchor=a,ze(!1),i.ensure(e,t),ze(!0);return}}i.ensure(e,t)}Ln(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function oi(e,t){return t}function si(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;ci(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=i.length===0&&n!==null;if(l){var u=n,d=u.parentNode;xn(d),d.append(u),e.items.clear()}ci(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function ci(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i{var t=i();return e(t)?t:t==null?[]:r(t)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,di(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=re,pi(d,null,c)):Jn(d):Kn(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:Ln(()=>{p=I(f);var e=p.length;let t=!1;Re&&Ge(c)===`[!`!=(e===0)&&(c=We(),Ve(c),ze(!1),t=!0);for(var r=new Set,u=Ft,v=Sn(),y=0;ys(c)):(d=zn(()=>s(li??=vn())),d.f|=re)),e>r.size&&ye(``,``,``),Re&&e>0&&Ve(We()),!h)if(m.set(u,r),v){for(let[e,t]of l)r.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);t&&ze(!0),I(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,Re&&(c=Be)}function ui(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function di(e,t,n,i,a){var o=(i&8)!=0,s=t.length,c=e.items,l=ui(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v0){var te=i&4&&s===0?n:null;if(o){for(v=0;v{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function fi(e,t,n,r,i,a,o,s){var c=o&1?o&16?an(n):on(n,!1,!1):null,l=o&2?an(i):null;return{v:c,i:l,e:zn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function pi(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=bn(r);if(a.before(r),r===i)return;r=o}}function mi(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function hi(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;Re&&(o=Ve(yn(c)))}F(()=>{var e=ir;if(s===(s=t()??``)){Re&&He();return}if(n&&!Re){e.nodes=null,c.innerHTML=s,s!==``&&Jr(yn(c),c.lastChild);return}if(e.nodes!==null&&(Wn(e.nodes.start,e.nodes.end),e.nodes=null),s!==``){if(Re){for(var a=Be.data,l=He(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=bn(l);if(l===null)throw Fe(),ke;Jr(Be,u),o=Ve(l);return}var d=Cn(r?`svg`:i?`math`:`template`,r?Me:i?Ne:void 0);d.innerHTML=s;var f=r||i?d:d.content;if(Jr(yn(f),f.lastChild),r||i)for(;yn(f);)o.before(yn(f));else o.before(f)}})}function gi(e,t,...n){var r=new ai(e);Ln(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},ee)}function _i(e,t,n){var r;Re&&(r=Be,He());var i=new ai(e);Ln(()=>{var e=t()??null;if(Re&&Ge(r)===`[`!=(e!==null)){var a=We();Ve(a),i.anchor=a,ze(!1),i.ensure(e,e&&(t=>n(t,e))),ze(!0);return}i.ensure(e,e&&(t=>n(t,e)))},ee)}var vi=()=>performance.now(),yi={tick:e=>requestAnimationFrame(e),now:()=>vi(),tasks:new Set};function bi(){let e=yi.now();yi.tasks.forEach(t=>{t.c(e)||(yi.tasks.delete(t),t.f())}),yi.tasks.size!==0&&yi.tick(bi)}function xi(e){let t;return yi.tasks.size===0&&yi.tick(bi),{promise:new Promise(n=>{yi.tasks.add(t={c:e,f:n})}),abort(){yi.tasks.delete(t)}}}function Si(e,t){ht(()=>{e.dispatchEvent(new CustomEvent(t))})}function Ci(e){if(e===`float`)return`cssFloat`;if(e===`offset`)return`cssOffset`;if(e.startsWith(`--`))return e;let t=e.split(`-`);return t.length===1?t[0]:t[0]+t.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}function wi(e){let t={},n=e.split(`;`);for(let e of n){let[n,r]=e.split(`:`);if(!n||r===void 0)break;let i=Ci(n.trim());t[i]=r.trim()}return t}var Ti=e=>e,Ei=null;function Di(e){Ei=e}function Oi(e,t,n){var r=(Ei??ir).nodes,i,a,o,s=null;r.a??={element:e,measure(){i=this.element.getBoundingClientRect()},apply(){if(o?.abort(),a=this.element.getBoundingClientRect(),i.left!==a.left||i.right!==a.right||i.top!==a.top||i.bottom!==a.bottom){let e=t()(this.element,{from:i,to:a},n?.());o=Ai(this.element,e,void 0,1,()=>{},()=>{o?.abort(),o=void 0})}},fix(){if(!e.getAnimations().length){var{position:t,width:n,height:r}=getComputedStyle(e);if(t!==`absolute`&&t!==`fixed`){var a=e.style;s={position:a.position,width:a.width,height:a.height,transform:a.transform},a.position=`absolute`,a.width=n,a.height=r;var o=e.getBoundingClientRect();if(i.left!==o.left||i.top!==o.top){var c=`translate(${i.left-o.left}px, ${i.top-o.top}px)`;a.transform=a.transform?`${a.transform} ${c}`:c}}}},unfix(){if(s){var t=e.style;t.position=s.position,t.width=s.width,t.height=s.height,t.transform=s.transform}}},r.a.element=e}function ki(e,t,n,r){var i=(e&1)!=0,a=(e&2)!=0,o=i&&a,s=(e&4)!=0,c=o?`both`:i?`in`:`out`,l,u=t.inert,d=t.style.overflow,f,p;function m(){return ht(()=>l??=n()(t,r?.()??{},{direction:c}))}var h={is_global:s,in(){if(t.inert=u,!i){p?.abort(),p?.reset?.();return}a||f?.abort(),f=Ai(t,m(),p,1,()=>{Si(t,`introstart`)},()=>{Si(t,`introend`),f?.abort(),f=l=void 0,t.style.overflow=d})},out(e){if(!a){e?.(),l=void 0;return}t.inert=!0,p=Ai(t,m(),f,0,()=>{Si(t,`outrostart`)},()=>{Si(t,`outroend`),e?.()})},stop:()=>{f?.abort(),p?.abort()}},g=ir;if((g.nodes.t??=[]).push(h),i&&$r){var _=s;if(!_){for(var v=g.parent;v&&v.f&65536;)for(;(v=v.parent)&&!(v.f&16););_=!v||(v.f&32768)!=0}_&&Pn(()=>{Er(()=>h.in())})}}function Ai(e,t,n,r,i,a){var o=r===1;if(d(t)){var s,c=!1;return et(()=>{c||(s=Ai(e,t({direction:o?`in`:`out`}),n,r,i,a))}),{abort:()=>{c=!0,s?.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(n?.deactivate(),!t?.duration&&!t?.delay)return i(),a(),{abort:f,deactivate:f,reset:f,t:()=>r};let{delay:l=0,css:u,tick:p,easing:m=Ti}=t;var h=[];if(o&&n===void 0&&(p&&p(0,1),u)){var g=wi(u(0,1));h.push(g,g)}var _=()=>1-r,v=e.animate(h,{duration:l,fill:`forwards`});return v.onfinish=()=>{v.cancel(),i();var o=n?.t()??1-r;n?.abort();var s=r-o,c=t.duration*Math.abs(s),l=[];if(c>0){var d=!1;if(u)for(var f=Math.ceil(c/(1e3/60)),h=0;h<=f;h+=1){var g=o+s*m(h/f),y=wi(u(g,1-g));l.push(y),d||=y.overflow===`hidden`}d&&(e.style.overflow=`hidden`),_=()=>{var e=v.currentTime;return o+s*m(e/c)},p&&xi(()=>{if(v.playState!==`running`)return!1;var e=_();return p(e,1-e),!0})}v=e.animate(l,{duration:c,fill:`forwards`}),v.onfinish=()=>{_=()=>r,p?.(r,1-r),a()}},{abort:()=>{v&&(v.cancel(),v.effect=null,v.onfinish=f)},deactivate:()=>{a=f},reset:()=>{r===0&&p?.(1,0)},t:()=>_()}}function ji(e,t,n,r,i,a){let o=Re;Re&&He();var s=null;Re&&Be.nodeType===1&&(s=Be,He());var c=Re?Be:e,l=ir,u=new ai(c,!1);Ln(()=>{let e=t()||null;var a=i?i():n||e===`svg`?Me:void 0;if(e===null){u.ensure(null,null),ei(!0);return}return u.ensure(e,t=>{if(e){if(s=Re?s:Cn(e,a),Jr(s,s),r){var n=null;Re&&Ir(e)&&s.append(n=document.createComment(``));var i=Re?yn(s):s.appendChild(vn());Re&&(i===null?ze(!1):Ve(i)),Di(l),r(s,i),n?.remove(),Di(null)}ir.nodes.end=s,t.before(s)}Re&&Ve(t)}),ei(!0),()=>{e&&ei(!1)}},ee),kn(()=>{ei(!0)}),o&&(ze(!0),Ve(c))}function Mi(e,t){var n=void 0,r;Rn(()=>{n!==(n=t())&&(r&&=(Un(r),null),n&&(r=zn(()=>{Pn(()=>n(e))})))})}function Ni(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t=0;){var s=o+a;(o===0||Ii.includes(r[o-1]))&&(s===r.length||Ii.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Ri(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function zi(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Bi(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(zi)),i&&c.push(...Object.keys(i).map(zi));var l=0,u=-1;let t=e.length;for(var d=0;d{Ui(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),kn(()=>{t.disconnect()})}function Gi(e,t,n=t){var r=new WeakSet,i=!0;gt(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),Ki);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&Ki(o)}n(a),e.__value=a,Ft!==null&&r.add(Ft)}),Pn(()=>{var a=t();if(e===document.activeElement){var o=Ft;if(r.has(o))return}if(Ui(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=Ki(s),n(a))}e.__value=a,i=!1}),Wi(e)}function Ki(e){return`__value`in e?e.__value:e.value}var qi=Symbol(`class`),Ji=Symbol(`style`),Yi=Symbol(`is custom element`),Xi=Symbol(`is html`),Zi=_e?`link`:`LINK`,Qi=_e?`input`:`INPUT`,$i=_e?`option`:`OPTION`,ea=_e?`select`:`SELECT`,ta=_e?`progress`:`PROGRESS`;function na(e){if(Re){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;W(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;W(e,`checked`,null),e.checked=r}}};e[he]=n,et(n),mt()}}function ra(e,t){var n=ca(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==ta)||(e.value=t??``)}function ia(e,t){var n=ca(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function aa(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function W(e,t,n,r){var i=ca(e);Re&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===Zi)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ue]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&ua(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function oa(e,t,n,r,i=!1,a=!1){if(Re&&i&&e.nodeName===Qi){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||na(o)}var s=ca(e),c=s[Yi],l=!s[Xi];let u=Re&&c;u&&ze(!1);var d=t||{},f=e.nodeName===$i;for(var p in t)p in n||(n[p]=null);n.class?n.class=Fi(n.class):(r||n[qi])&&(n.class=null),n[Ji]&&(n.style??=null);var m=ua(e);if(e.nodeName===Qi&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==d.type||h===void 0&&e.hasAttribute(`type`))&&(d.type=h,W(e,`type`,h,a))}for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){U(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t?.[qi],n[qi]),d[i]=o,d[qi]=n[qi];continue}if(i===`style`){Hi(e,o,t?.[Ji],n[Ji]),d[i]=o,d[Ji]=n[Ji];continue}var g=d[i];if(!(o===g&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var _=i[0]+i[1];if(_!==`$$`)if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=kr(r);if(Dr(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(v)L(r,e,o),Hr([r]);else if(o!=null){function a(e){d[i].call(this,e)}d[n]=Br(r,e,a,t)}}else if(i===`style`)W(e,i,o);else if(i===`autofocus`)dt(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)aa(e,o);else{var y=i;l||(y=Mr(y));var b=y===`defaultValue`||y===`defaultChecked`;if(o==null&&!c&&!b)if(s[i]=null,y===`value`||y===`checked`){let n=e,r=t===void 0;if(y===`value`){let e=n.defaultValue;n.removeAttribute(y),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(y),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else b||m.includes(y)&&(c||typeof o!=`string`)?(e[y]=o,y in s&&(s[y]=Ae)):typeof o!=`function`&&W(e,y,o,a)}}}return u&&ze(!0),d}function sa(e,t,n=[],r=[],i=[],a,o=!1,s=!1){xt(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===ea,l=!1;if(Rn(()=>{var u=t(...n.map(I)),d=oa(e,r,u,a,o,s);l&&c&&`value`in u&&Ui(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||Un(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&Un(i[t]),i[t]=zn(()=>Mi(e,()=>f))),d[t]=f}r=d}),c){var u=e;Pn(()=>{Ui(u,r.value,!0),Wi(u)})}l=!0})}function ca(e){return e[de]??={[Yi]:e.nodeName.includes(`-`),[Xi]:e.namespaceURI===je}}var la=new Map;function ua(e){var t=e.getAttribute(`is`)||e.nodeName,n=la.get(t);if(n)return n;la.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.push(s);i=l(i)}return n}function da(e,t,n=t){var r=new WeakSet;gt(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=pa(e)?ma(a):a,n(a),Ft!==null&&r.add(Ft),await Cr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(Re&&e.defaultValue!==e.value||Er(t)==null&&e.value)&&(n(pa(e)?ma(e.value):e.value),Ft!==null&&r.add(Ft)),In(()=>{var n=t();if(e===document.activeElement){var i=Ft;if(r.has(i))return}pa(e)&&n===ma(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function fa(e,t,n=t){gt(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(Re&&e.defaultChecked!==e.checked||Er(t)==null)&&n(e.checked),In(()=>{e.checked=!!t()})}function pa(e){var t=e.type;return t===`number`||t===`range`}function ma(e){return e===``?null:+e}function ha(e,t){return e===t||e?.[ce]===t}function ga(e={},t,n,r){var i=Ye.r,a=ir;return Pn(()=>{var o,s;return In(()=>{o=s,s=r?.()||[],Er(()=>{ha(n(...s),e)||(t(e,...s),o&&ha(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&ha(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}var _a={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return!e.exclude.has(t)&&t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function va(e,t,n){return new Proxy({props:e,exclude:t},_a)}function ya(e,t,n,r){var i=!0,o=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>s&&i?(u??=Tt(r),I(u)):(l&&(l=!1,c=s?Er(r):r),c);let f;if(o){var p=ce in e||le in e;f=a(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;o?[m,h]=ut(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&we(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?Tt:Ot)(()=>(v=!1,g()));o&&I(y);var b=ir;return(function(e,t){if(arguments.length>0){let n=t?I(y):i&&o?j(e):e;return A(y,n),v=!0,c!==void 0&&(c=n),e}return $n&&v||b.f&16384?y.v:I(y)})}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var ba=new Set([`$$slots`,`$$events`,`$$legacy`,`icon`,`class`]),xa=Xr(``);function G(e,t){let n=ya(t,`icon`,19,()=>[]),r=ya(t,`class`,3,``),i=va(t,ba);var a=xa();sa(a,()=>({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`,class:r(),"aria-hidden":`true`,focusable:`false`,...i}));{let e=(t,n=f)=>{var r=Qr();H(N(r),17,n,oi,(t,n)=>{var r=O(()=>g(I(n),3));let i=()=>I(r)[0],a=()=>I(r)[1],o=()=>I(r)[2];var s=Qr();ji(N(s),i,!0,(t,n)=>{sa(t,()=>({xmlns:`http://www.w3.org/2000/svg`,...a()}));var r=Qr(),i=N(r),s=t=>{e(t,o)},c=O(()=>Array.isArray(o()));V(i,e=>{I(c)&&e(s)}),z(n,r)}),z(t,s)}),z(t,r)};e(M(a),n),T(a)}z(e,a)}var Sa=Xr(``);function Ca(e){z(e,Sa())}function wa(){try{return typeof localStorage>`u`?null:localStorage}catch{return null}}function Ta(e,t=null){let n=wa();if(!n)return t;try{return n.getItem(e)??t}catch{return t}}function Ea(e,t){let n=wa();if(n)try{n.setItem(e,String(t))}catch{}}var Da=new class{#e=k(`system`);get theme(){return I(this.#e)}set theme(e){A(this.#e,e,!0)}#t=k(0);get tick(){return I(this.#t)}set tick(e){A(this.#t,e,!0)}init(){this.theme=Ta(`gomodel_theme`,`system`),this.apply(),window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{this.theme===`system`&&this.tick++})}set(e){this.theme=e,Ea(`gomodel_theme`,e),this.apply(),this.tick++}toggle(){let e=[`light`,`system`,`dark`];this.set(e[(e.indexOf(this.theme)+1)%e.length])}apply(){let e=document.documentElement;this.theme===`system`?e.removeAttribute(`data-theme`):e.setAttribute(`data-theme`,this.theme)}},Oa=new class{#e=k(!1);get collapsed(){return I(this.#e)}set collapsed(e){A(this.#e,e,!0)}init(){this.collapsed=Ta(`gomodel_sidebar_collapsed`)===`true`}toggle(){this.collapsed=!this.collapsed,Ea(`gomodel_sidebar_collapsed`,this.collapsed)}},ka=new class{#e=k(j([]));get stack(){return I(this.#e)}set stack(e){A(this.#e,e,!0)}#t=1;opened(){let e=this.#t++;return this.stack=[...this.stack,e],e}closed(e){this.stack=this.stack.filter(t=>t!==e)}isTop(e){return this.stack.length>0&&this.stack[this.stack.length-1]===e}get openCount(){return this.stack.length}get anyOpen(){return this.stack.length>0}},Aa=[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`}]],ja=[[`path`,{d:`m12 19-7-7 7-7`}],[`path`,{d:`M19 12H5`}]],Ma=[[`path`,{d:`M5 12h14`}],[`path`,{d:`m12 5 7 7-7 7`}]],Na=[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`}],[`path`,{d:`M12 22V12`}]],Pa=[[`rect`,{width:`16`,height:`20`,x:`4`,y:`2`,rx:`2`}],[`line`,{x1:`8`,x2:`16`,y1:`6`,y2:`6`}],[`line`,{x1:`16`,x2:`16`,y1:`14`,y2:`18`}],[`path`,{d:`M16 10h.01`}],[`path`,{d:`M12 10h.01`}],[`path`,{d:`M8 10h.01`}],[`path`,{d:`M12 14h.01`}],[`path`,{d:`M8 14h.01`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M8 18h.01`}]],Fa=[[`path`,{d:`M8 2v4`}],[`path`,{d:`M16 2v4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`}],[`path`,{d:`M3 10h18`}],[`path`,{d:`M8 14h.01`}],[`path`,{d:`M12 14h.01`}],[`path`,{d:`M16 14h.01`}],[`path`,{d:`M8 18h.01`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M16 18h.01`}]],Ia=[[`path`,{d:`M8 2v4`}],[`path`,{d:`M16 2v4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`}],[`path`,{d:`M3 10h18`}]],La=[[`path`,{d:`M13 17V9`}],[`path`,{d:`M18 17V5`}],[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`}],[`path`,{d:`M8 17v-3`}]],Ra=[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`}],[`path`,{d:`M18 17V9`}],[`path`,{d:`M13 17V5`}],[`path`,{d:`M8 17v-3`}]],za=[[`path`,{d:`M20 6 9 17l-5-5`}]],Ba=[[`path`,{d:`m6 9 6 6 6-6`}]],Va=[[`path`,{d:`m9 18 6-6-6-6`}]],Ha=[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`}],[`path`,{d:`m9 11 3 3L22 4`}]],Ua=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`m9 12 2 2 4-4`}]],Wa=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8`}],[`path`,{d:`M12 18V6`}]],Ga=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 6v6l4 2`}]],Ka=[[`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`}]],qa=[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 15 21.84`}],[`path`,{d:`M21 5V8`}],[`path`,{d:`M21 12L18 17H22L19 22`}],[`path`,{d:`M3 12A9 3 0 0 0 14.59 14.87`}]],Ja=[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`}]],Ya=[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`}],[`path`,{d:`M10 9H8`}],[`path`,{d:`M16 13H8`}],[`path`,{d:`M16 17H8`}]],Xa=[[`path`,{d:`m12 14 4-4`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`}]],Za=[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}],[`path`,{d:`M12 7v5l4 2`}]],Qa=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 16v-4`}],[`path`,{d:`M12 8h.01`}]],$a=[[`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`}]],eo=[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`}]],to=[[`path`,{d:`M3 5h.01`}],[`path`,{d:`M3 12h.01`}],[`path`,{d:`M3 19h.01`}],[`path`,{d:`M8 5h13`}],[`path`,{d:`M8 12h13`}],[`path`,{d:`M8 19h13`}]],no=[[`circle`,{cx:`12`,cy:`16`,r:`1`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`}]],ro=[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`m21 3-7 7`}],[`path`,{d:`m3 21 7-7`}],[`path`,{d:`M9 21H3v-6`}]],io=[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`}]],ao=[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`}]],oo=[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`}],[`path`,{d:`m15 5 4 4`}]],so=[[`path`,{d:`M12 22v-5`}],[`path`,{d:`M15 8V2`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`}],[`path`,{d:`M9 8V2`}]],co=[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]],lo=[[`path`,{d:`M12 2v10`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`}]],uo=[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`}],[`path`,{d:`M8 16H3v5`}]],fo=[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}]],po=[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`}]],mo=[[`path`,{d:`m21 21-4.34-4.34`}],[`circle`,{cx:`11`,cy:`11`,r:`8`}]],ho=[[`path`,{d:`m10.852 14.772-.383.923`}],[`path`,{d:`M13.148 14.772a3 3 0 1 0-2.296-5.544l-.383-.923`}],[`path`,{d:`m13.148 9.228.383-.923`}],[`path`,{d:`m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544`}],[`path`,{d:`m14.772 10.852.923-.383`}],[`path`,{d:`m14.772 13.148.923.383`}],[`path`,{d:`M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5`}],[`path`,{d:`M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5`}],[`path`,{d:`M6 18h.01`}],[`path`,{d:`M6 6h.01`}],[`path`,{d:`m9.228 10.852-.923-.383`}],[`path`,{d:`m9.228 13.148-.923.383`}]],go=[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`}]],_o=[[`path`,{d:`M14 17H5`}],[`path`,{d:`M19 7h-9`}],[`circle`,{cx:`17`,cy:`17`,r:`3`}],[`circle`,{cx:`7`,cy:`7`,r:`3`}]],vo=[[`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`}]],yo=[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`}],[`path`,{d:`m9 12 2 2 4-4`}]],bo=[[`path`,{d:`m2 2 20 20`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`}]],xo=[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`}]],So=[[`path`,{d:`m18 14 4 4-4 4`}],[`path`,{d:`m18 2 4 4-4 4`}],[`path`,{d:`M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22`}],[`path`,{d:`M2 6h1.972a4 4 0 0 1 3.6 2.2`}],[`path`,{d:`M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45`}]],Co=[[`circle`,{cx:`12`,cy:`12`,r:`4`}],[`path`,{d:`M12 2v2`}],[`path`,{d:`M12 20v2`}],[`path`,{d:`m4.93 4.93 1.41 1.41`}],[`path`,{d:`m17.66 17.66 1.41 1.41`}],[`path`,{d:`M2 12h2`}],[`path`,{d:`M20 12h2`}],[`path`,{d:`m6.34 17.66-1.41 1.41`}],[`path`,{d:`m19.07 4.93-1.41 1.41`}]],wo=[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]],To=[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`}],[`circle`,{cx:`12`,cy:`14`,r:`8`}]],Eo=[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]],Do=[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`}],[`path`,{d:`M12 9v4`}],[`path`,{d:`M12 17h.01`}]],Oo=[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`}],[`circle`,{cx:`12`,cy:`7`,r:`4`}]],ko=[[`path`,{d:`M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1`}],[`path`,{d:`M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4`}]],Ao=[[`path`,{d:`m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72`}],[`path`,{d:`m14 7 3 3`}],[`path`,{d:`M5 6v4`}],[`path`,{d:`M19 14v4`}],[`path`,{d:`M10 2v2`}],[`path`,{d:`M7 8H3`}],[`path`,{d:`M21 16h-4`}],[`path`,{d:`M11 3H9`}]],jo=[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`}]],Mo=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]],No=R(``),Po=R(`
        `,1);function Fo(e,t){E(t,!0);let n=ya(t,`compact`,3,!1),r=[{value:`light`,icon:Co,label:`Light theme`},{value:`system`,icon:io,label:`System theme`},{value:`dark`,icon:ao,label:`Dark theme`}],i=O(()=>r.find(e=>e.value===Da.theme)||r[1]),a=O(()=>`Change theme (currently `+I(i).label+`)`);var o=Po(),s=N(o);let c;H(s,21,()=>r,e=>e.value,(e,t)=>{var n=No();let r;G(M(n),{get icon(){return I(t).icon},class:`theme-icon`}),T(n),F(()=>{r=U(n,1,`theme-btn svelte-1keql7b`,null,r,{active:Da.theme===I(t).value}),W(n,`aria-pressed`,Da.theme===I(t).value),W(n,`title`,I(t).label),W(n,`aria-label`,I(t).label)}),L(`click`,n,()=>Da.set(I(t).value)),z(e,n)}),T(s);var l=P(s,2);let u;G(M(l),{get icon(){return I(i).icon},class:`theme-icon`}),T(l),F(()=>{c=U(s,1,`theme-toggle svelte-1keql7b`,null,c,{"is-compact":n()}),u=U(l,1,`theme-toggle-mobile svelte-1keql7b`,null,u,{"is-compact":n()}),W(l,`title`,I(a)),W(l,`aria-label`,I(a))}),L(`click`,l,()=>Da.toggle()),z(e,o),D()}Hr([`click`]);function Io(){return typeof window>`u`?`/`:window.GOMODEL_BASE_PATH||`/`}function Lo(e){let t=Io();return!e||e.charAt(0)!==`/`||e.indexOf(`//`)===0||t===`/`||e===t||e.indexOf(t+`/`)===0?e:t+e}function Ro(e){let t=Io();return t===`/`||!e?e:e===t?`/`:e.indexOf(t+`/`)===0?e.slice(t.length)||`/`:e}function zo(){return typeof window>`u`?``:window.GOMODEL_VERSION||``}function Bo(){return typeof window>`u`?!1:window.GOMODEL_DEMO_MODE===!0}var Vo=[`overview`,`usage`,`budgets`,`rate-limits`,`models`,`workflows`,`audit-logs`,`guardrails`,`mcp-servers`,`providers-config`,`auth-keys`,`settings`];function Ho(e){return e.startsWith(`/admin/static/`)?`/`+e.slice(14).replace(/^\/+/,``):e}function Uo(e){let t=Ho(Ro(e)).replace(/\/$/,``).replace(`/admin/dashboard`,``).replace(/^\//,``).split(`/`),n=t[0];n===`audit`&&(n=`audit-logs`);let r=t[1]||null;return n===`settings`&&r===`guardrails`?{page:`guardrails`,sub:null}:(n=Vo.includes(n)?n:`overview`,{page:n,sub:r})}var Wo=new class{#e=k(`overview`);get page(){return I(this.#e)}set page(e){A(this.#e,e,!0)}#t=k(null);get sub(){return I(this.#t)}set sub(e){A(this.#t,e,!0)}init(){let{page:e,sub:t}=Uo(window.location.pathname);this.page=e,this.sub=t,window.addEventListener(`popstate`,()=>{let{page:e,sub:t}=Uo(window.location.pathname);this.page=e,this.sub=t})}navigate(e,t=null){let n=t?`/`+t:``;history.pushState(null,``,Lo(`/admin/dashboard/`+e+n)),this.page=e,this.sub=t}},Go=`gomodel_api_key`;function Ko(e){let t=String(e||``).trim();if(/^Bearer\s*$/i.test(t))return``;let n=t.match(/^Bearer\s+(.+)$/i);return n?n[1].trim():t}var K=new class{#e=k(``);get apiKey(){return I(this.#e)}set apiKey(e){A(this.#e,e,!0)}#t=k(!1);get needsAuth(){return I(this.#t)}set needsAuth(e){A(this.#t,e,!0)}#n=k(!1);get authError(){return I(this.#n)}set authError(e){A(this.#n,e,!0)}#r=k(``);get authErrorMessage(){return I(this.#r)}set authErrorMessage(e){A(this.#r,e,!0)}#i=k(!1);get dialogOpen(){return I(this.#i)}set dialogOpen(e){A(this.#i,e,!0)}#a=k(0);get generation(){return I(this.#a)}set generation(e){A(this.#a,e,!0)}#o=k(0);get refreshTick(){return I(this.#o)}set refreshTick(e){A(this.#o,e,!0)}init(){try{this.apiKey=Ko(localStorage.getItem(Go)||``)}catch{this.apiKey=``}}hasApiKey(){return Ko(this.apiKey)!==``}save(){this.apiKey=Ko(this.apiKey);try{localStorage.setItem(Go,this.apiKey)}catch{}}openDialog(){this.dialogOpen=!0}closeDialog(){this.dialogOpen=!1}submit(){let e=Ko(this.apiKey);return e?(this.apiKey=e,this.save(),this.generation++,this.authError=!1,this.authErrorMessage=``,this.needsAuth=!1,this.closeDialog(),this.refresh(),!0):(this.apiKey=``,this.authError=!0,this.authErrorMessage=``,this.needsAuth=!0,this.openDialog(),!1)}refresh(){this.refreshTick++}handleUnauthorized(e,t=``){return typeof e==`number`&&e{r[e.type]=e.value}),r.year+`-`+r.month+`-`+r.day}formatTimestampInTimeZone(e,t){if(e==null)return`-`;let n=new Date(e);if(Number.isNaN(n.getTime()))return`-`;let r=rs(`en-CA`,{timeZone:is(t)?t:$o,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}).formatToParts(n),i={};return r.forEach(e=>{i[e.type]=e.value}),i.year+`-`+i.month+`-`+i.day+` `+i.hour+`:`+i.minute+`:`+i.second}formatTimestamp(e){return this.formatTimestampInTimeZone(e,this.effectiveTimezone())}currentDateKey(e){return this.dateKeyInTimeZone(e||new Date,this.effectiveTimezone())}dateKeyToDate(e){return Jo(e)}dateToDateKey(e){return Yo(e)}addDaysToDateKey(e,t){return Xo(e,t)}todayDate(){return this.dateKeyToDate(this.currentDateKey())}startOfMonthDate(e){let t=e instanceof Date?e:this.todayDate();return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1))}timeZoneOffsetLabel(e,t){let n=is(e)?e:$o;try{let e=rs(`en-US`,{timeZone:n,hour:`2-digit`,minute:`2-digit`,hourCycle:`h23`,timeZoneName:`longOffset`}).formatToParts(t||new Date).find(e=>e.type===`timeZoneName`);if(!e||!e.value)return`UTC+00:00`;let r=e.value.replace(`GMT`,`UTC`);return r===`UTC`?`UTC+00:00`:r}catch{return`UTC+00:00`}}timeZoneOffsetMinutes(e,t){let n=/^UTC([+-])(\d{2}):(\d{2})$/.exec(this.timeZoneOffsetLabel(e,t));if(!n)return 0;let r=Number(n[2])*60+Number(n[3]);return n[1]===`-`?-r:r}timeZoneOptionLabel(e,t){return e+` (`+this.timeZoneOffsetLabel(e,t)+`)`}detectedTimeZoneLabel(){return this.timeZoneOptionLabel(this.detectedTimezone)}effectiveTimeZoneLabel(){return this.timeZoneOptionLabel(this.effectiveTimezone())}ensureOptions(){if(this.optionsLoaded)return;let e=new Date,t=[];try{typeof Intl.supportedValuesOf==`function`&&(t=Intl.supportedValuesOf(`timeZone`))}catch{t=[]}[$o,this.detectedTimezone,this.override].forEach(e=>{e&&t.indexOf(e)===-1&&is(e)&&t.push(e)}),t=t.filter(e=>is(e)),t.sort((t,n)=>{let r=this.timeZoneOffsetMinutes(t,e)-this.timeZoneOffsetMinutes(n,e);return r===0?t.localeCompare(n):r}),this.options=t.map(t=>({value:t,label:this.timeZoneOptionLabel(t,e)})),this.optionsLoaded=!0}saveOverride(){let e=wa();if(e)if(this.override&&is(this.override))try{e.setItem(es,this.override)}catch{}else{try{e.removeItem(es)}catch{}this.override=``}this.optionsLoaded=!1,this.ensureOptions()}clearOverride(){let e=wa();if(e)try{e.removeItem(es)}catch{}this.override=``}calendarTimeZoneText(){let e=this.override?`manual override`:`auto-detected`;return`Activity grouped by `+this.effectiveTimeZoneLabel()+` (`+e+`)`}};function cs(e,t){let n=e&&typeof e==`object`&&e.error&&e.error.message;return(typeof n==`string`?n.trim():``)||t}function ls(e,t){let n=e&&e.data;if(n&&typeof n==`object`){let e=[n.message,n.error,n.error&&typeof n.error==`object`?n.error.message:null];for(let t of e)if(typeof t==`string`&&t.trim())return t.trim()}return t}function us(){let e={"Content-Type":`application/json`},t=Ko(K.apiKey);return t&&(e.Authorization=`Bearer `+t),e[`X-GoModel-Timezone`]=ss.effectiveTimezone(),e}function ds(e,t={}){return fetch(Lo(e),{...t,headers:{...us(),...t.headers||{}}})}async function fs(e,t,{label:n=e,parse:r=!0}={}){let i=K.generation,a=await ds(e,t);if(a.status===401)return K.handleUnauthorized(i),{ok:!1,stale:ie.trim()).filter(Boolean);return e.length>0?e:_s}cacheVisible(){if(this.flag(`CACHE_ENABLED`)!==``)return this.booleanFlag(`CACHE_ENABLED`,!1);let e=this.flag(`REDIS_URL`),t=this.flag(`SEMANTIC_CACHE_ENABLED`);return e===``&&t===``||this.booleanFlag(`REDIS_URL`,!1)||this.booleanFlag(`SEMANTIC_CACHE_ENABLED`,!1)}auditVisible(){return this.booleanFlag(`LOGGING_ENABLED`,!0)}usageVisible(){return this.booleanFlag(`USAGE_ENABLED`,!0)}budgetsVisible(){return this.booleanFlag(`BUDGETS_ENABLED`,!0)}rateLimitsVisible(){return this.booleanFlag(`RATE_LIMITS_ENABLED`,!0)}guardrailsVisible(){return this.booleanFlag(`GUARDRAILS_ENABLED`,!0)}mcpVisible(){return this.booleanFlag(`MCP_ENABLED`,!0)}liveLogsVisible(){return this.booleanFlag(`DASHBOARD_LIVE_LOGS_ENABLED`,!0)}fetch(){return this.#n||=this.#r().finally(()=>{this.#n=null}),this.#n}async ensureLoaded(){if(this.#n){await this.#n;return}this.loaded||await this.fetch()}async#r(){let e=typeof AbortController==`function`?new AbortController:null,t=e?setTimeout(()=>e.abort(),1e4):null;try{let t=await ps(`/admin/runtime/config`,{label:`dashboard config`,signal:e?e.signal:void 0});if(t.stale)return;if(!t.ok){this.config={},this.loaded=!1;return}let n=t.data,r={};for(let e of gs)n&&typeof n==`object`&&!Array.isArray(n)&&n[e]!==void 0&&n[e]!==null&&(r[e]=String(n[e]).trim());this.config=r,this.loaded=!0}catch(e){console.error(`Failed to fetch dashboard config:`,e),this.config={},this.loaded=!1}finally{t!==null&&clearTimeout(t)}}},ys=[{page:`overview`,label:`Overview`,icon:eo},{page:`providers-config`,label:`Providers`,icon:ho},{page:`models`,label:`Models`,icon:Na},{page:`audit-logs`,label:`Audit Logs`,icon:Za},{page:`usage`,label:`Usage`,icon:Ra},{page:`budgets`,label:`Budgets`,icon:ko,visible:()=>vs.budgetsVisible()},{page:`rate-limits`,label:`Rate Limits`,icon:Xa,visible:()=>vs.rateLimitsVisible()},{page:`auth-keys`,label:`API Keys`,icon:$a},{page:`workflows`,label:`Workflows`,icon:jo},{page:`guardrails`,label:`Guardrails (experimental)`,icon:yo,visible:()=>vs.guardrailsVisible()},{page:`mcp-servers`,label:`MCP Servers`,icon:so,visible:()=>vs.mcpVisible()},{page:`settings`,label:`Settings`,icon:vo}],bs=R(` `),xs=R(`
        `),Ss=R(` `,1);function Cs(e,t){E(t,!0);let n=O(()=>ys.filter(e=>!e.visible||e.visible()));var r=Ss(),i=N(r);let a;var o=M(i),s=M(o);Ca(M(s),{}),T(s),Ue(4),T(o);var c=P(o,2);H(c,21,()=>I(n),e=>e.page,(e,t)=>{var n=bs();let r;var i=M(n);G(i,{get icon(){return I(t).icon},class:`nav-icon`});var a=P(i,2),o=M(a,!0);T(a),T(n),F(e=>{W(n,`href`,e),r=U(n,1,`nav-item svelte-1nwtzae`,null,r,{active:Wo.page===I(t).page}),W(n,`title`,I(t).label),B(o,I(t).label)},[()=>Lo(`/admin/dashboard/`+I(t).page)]),L(`click`,n,e=>{e.preventDefault(),Wo.navigate(I(t).page)}),z(e,n)}),T(c);var l=P(c,2),u=M(l);Fo(u,{get compact(){return Oa.collapsed}});var d=P(u,2),f=e=>{var t=xs(),n=M(t),r=M(n);G(r,{get icon(){return no},class:`api-key-open-icon`});var i=P(r,2),a=M(i,!0);T(i),T(n),T(t),F(()=>{W(n,`aria-label`,K.needsAuth?`Enter API key`:`Change API key`),B(a,K.needsAuth?`Enter API key`:`Change API key`)}),L(`click`,n,()=>K.openDialog()),z(e,t)},p=O(()=>K.needsAuth||K.hasApiKey());V(d,e=>{I(p)&&e(f)}),T(l),T(i);var m=P(i,2);let h;F(()=>{a=U(i,1,`sidebar svelte-1nwtzae`,null,a,{"sidebar-collapsed":Oa.collapsed}),h=U(m,1,`sidebar-toggle svelte-1nwtzae`,null,h,{collapsed:Oa.collapsed}),W(m,`title`,Oa.collapsed?`Expand sidebar`:`Collapse sidebar`),W(m,`aria-label`,Oa.collapsed?`Expand sidebar`:`Collapse sidebar`),W(m,`aria-expanded`,!Oa.collapsed)}),L(`click`,m,()=>Oa.toggle()),z(e,r),D()}Hr([`click`]);var ws=R(``);function Ts(e,t){E(t,!0);let n=ya(t,`label`,3,`Close`),r=ya(t,`class`,3,``),i=ya(t,`iconClass`,3,`table-icon-svg`),a=ya(t,`disabled`,3,!1),o=ya(t,`el`,15,null);var s=ws();G(M(s),{get icon(){return Mo},get class(){return i()}}),T(s),ga(s,e=>o(e),()=>o()),F(()=>{U(s,1,Fi([`dialog-close-btn`,r()]),`svelte-11l1bb5`),W(s,`aria-label`,n()),s.disabled=a()}),L(`click`,s,function(...e){t.onclick?.apply(this,e)}),z(e,s),D()}Hr([`click`]);var Es=R(`
        `,1);function Ds(e,t){E(t,!0);let n=ya(t,`open`,3,!1),r=ya(t,`variant`,3,`editor`),i=ya(t,`closeOnBackdrop`,3,!0),a=O(()=>r()===`auth`?`auth-dialog-backdrop`:`editor-modal-backdrop`),o=O(()=>r()===`auth`?`auth-dialog-shell`:`editor-modal-shell`),s=k(null);An(()=>{if(!n())return;let e=Er(()=>ka.opened());Cr().then(()=>{let e=I(s)&&I(s).querySelector(`[data-modal-autofocus]`);e&&typeof e.focus==`function`&&e.focus()});let r=n=>{n.key===`Escape`&&ka.isTop(e)&&t.onclose?.()};return window.addEventListener(`keydown`,r),()=>{ka.closed(e),window.removeEventListener(`keydown`,r)}});function c(e){i()&&e.target===I(s)&&t.onclose?.()}var l=Qr(),u=N(l),d=e=>{var n=Es(),r=N(n),i=P(r,2);gi(M(i),()=>t.children??f),T(i),ga(i,e=>A(s,e),()=>I(s)),F(()=>{U(r,1,Fi(I(a)),`svelte-17e0w4c`),U(i,1,Fi(I(o)),`svelte-17e0w4c`)}),L(`click`,i,c),z(e,n)};V(u,e=>{n()&&e(d)}),z(e,l),D()}Hr([`click`]);var Os=R(``),ks=R(``);function As(e,t){E(t,!0),Ds(e,{get open(){return K.dialogOpen},variant:`auth`,onclose:()=>K.closeDialog(),children:(e,t)=>{var n=ks(),r=M(n),i=M(r),a=M(i),o=M(a,!0);T(a),T(i),Ts(P(i,2),{label:`Close authentication dialog`,onclick:()=>K.closeDialog(),class:`auth-dialog-close`,iconClass:``}),T(r);var s=P(r,2),c=M(s),l=M(c);G(l,{get icon(){return no},class:`auth-dialog-input-icon`});var u=P(l,2);na(u),T(c);var d=P(c,2),f=e=>{var t=Os(),n=M(t,!0);T(t),F(()=>B(n,K.authErrorMessage||`Enter a valid API key to continue.`)),z(e,t)};V(d,e=>{K.authError&&e(f)});var p=P(d,4),m=M(p),h=M(m);G(h,{get icon(){return za},class:`auth-dialog-submit-icon`});var g=P(h,2),_=M(g,!0);T(g),T(m),T(p),T(s),T(n),F(()=>{B(o,K.needsAuth?`Dashboard locked`:`Change API key`),B(_,K.needsAuth?`Unlock dashboard`:`Save API key`)}),Vr(`submit`,s,e=>{e.preventDefault(),K.submit()}),da(u,()=>K.apiKey,e=>K.apiKey=e),z(e,n)},$$slots:{default:!0}}),D()}function js(){return{open:!1,title:``,titleId:`typedConfirmationDialogTitle`,inputId:`typed-confirmation-input`,message:``,requiredText:``,value:``,confirmLabel:`Confirm`,icon:Do,dialogClass:``,loading:!1,onConfirm:null,onClose:null}}var Ms=new class{#e=k(j(js()));get state(){return I(this.#e)}set state(e){A(this.#e,e,!0)}#t=k(``);get error(){return I(this.#t)}set error(e){A(this.#t,e,!0)}open(e){this.error=``,this.state={...js(),open:!0,...e||{}}}close(){let e=this.state;typeof e.onClose==`function`&&e.onClose(),this.state=js(),this.error=``}ready(){return String(this.state.value||``).trim().toLowerCase()===String(this.state.requiredText||``).trim().toLowerCase()}inputLabel(){return`Type `+String(this.state.requiredText||``).trim()+` to confirm`}async submit(){if(!this.ready()){this.error=this.inputLabel()+`.`;return}if(typeof this.state.onConfirm==`function`){this.state.loading=!0;try{await this.state.onConfirm()}finally{this.state.loading=!1}}}},Ns=R(`

        `),Ps=R(``),Fs=R(`

        `);function Is(e,t){E(t,!0);let n=O(()=>Ms.state);Ds(e,{get open(){return I(n).open},variant:`auth`,onclose:()=>Ms.close(),children:(e,t)=>{var r=Fs(),i=M(r),a=M(i),o=M(a,!0);T(a),Ts(P(a,2),{label:`Close confirmation dialog`,onclick:()=>Ms.close(),class:`auth-dialog-close`,iconClass:``}),T(i);var s=P(i,2),c=M(s),l=e=>{var t=Ns(),r=M(t,!0);T(t),F(()=>B(r,I(n).message)),z(e,t)};V(c,e=>{I(n).message&&e(l)});var u=P(c,2),d=M(u),f=M(d,!0);T(d);var p=P(d,2);na(p),T(u);var m=P(u,2),h=e=>{var t=Ps(),n=M(t,!0);T(t),F(()=>B(n,Ms.error)),z(e,t)};V(m,e=>{Ms.error&&e(h)});var g=P(m,2),_=M(g),v=P(_,2),y=M(v);G(y,{get icon(){return I(n).icon},class:`form-action-icon`});var b=P(y,2),x=M(b,!0);T(b),T(v),T(g),T(s),T(r),F((e,t)=>{U(r,1,`auth-dialog ${I(n).dialogClass??``}`),W(r,`aria-labelledby`,I(n).titleId),W(a,`id`,I(n).titleId),B(o,I(n).title),W(d,`for`,I(n).inputId),B(f,e),W(p,`id`,I(n).inputId),v.disabled=t,B(x,I(n).confirmLabel)},[()=>Ms.inputLabel(),()=>I(n).loading||!Ms.ready()]),Vr(`submit`,s,e=>{e.preventDefault(),Ms.submit()}),da(p,()=>Ms.state.value,e=>Ms.state.value=e),L(`click`,_,()=>Ms.close()),z(e,r)},$$slots:{default:!0}}),D()}Hr([`click`]);var Ls=e=>e;function Rs(e){let t=e-1;return t*t*t+1}function zs(e){let t=typeof e==`string`&&e.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);return t?[parseFloat(t[1]),t[2]||`px`]:[e,`px`]}function Bs(e,{delay:t=0,duration:n=400,easing:r=Ls}={}){let i=+getComputedStyle(e).opacity;return{delay:t,duration:n,easing:r,css:e=>`opacity: ${e*i}`}}function Vs(e,{delay:t=0,duration:n=400,easing:r=Rs,x:i=0,y:a=0,opacity:o=0}={}){let s=getComputedStyle(e),c=+s.opacity,l=s.transform===`none`?``:s.transform,u=c*(1-o),[d,f]=zs(i),[p,m]=zs(a);return{delay:t,duration:n,easing:r,css:(e,t)=>` + transform: ${l} translate(${(1-e)*d}${f}, ${(1-e)*p}${m}); + opacity: ${c-u*t}`}}function Hs(e,{delay:t=0,duration:n=400,easing:r=Rs,axis:i=`y`}={}){let a=getComputedStyle(e),o=+a.opacity,s=i===`y`?`height`:`width`,c=parseFloat(a[s]),l=i===`y`?[`top`,`bottom`]:[`left`,`right`],u=l.map(e=>`${e[0].toUpperCase()}${e.slice(1)}`),d=parseFloat(a[`padding${u[0]}`]),f=parseFloat(a[`padding${u[1]}`]),p=parseFloat(a[`margin${u[0]}`]),m=parseFloat(a[`margin${u[1]}`]),h=parseFloat(a[`border${u[0]}Width`]),g=parseFloat(a[`border${u[1]}Width`]);return{delay:t,duration:n,easing:r,css:e=>`overflow: hidden;opacity: ${Math.min(e*20,1)*o};${s}: ${e*c}px;padding-${l[0]}: ${e*d}px;padding-${l[1]}: ${e*f}px;margin-${l[0]}: ${e*p}px;margin-${l[1]}: ${e*m}px;border-${l[0]}-width: ${e*h}px;border-${l[1]}-width: ${e*g}px;min-${s}: 0`}}function Us(e){return--e*e*(2.70158*e+1.70158)+1}function Ws(e){let t=e-1;return t*t*t+1}var Gs=5e3,Ks=8e3,qs=new class{#e=k(j([]));get toasts(){return I(this.#e)}set toasts(e){A(this.#e,e,!0)}#t=0;#n=new Map;success(e){this.#r(`success`,e,Gs)}error(e){this.#r(`error`,e,Ks)}dismiss(e){let t=this.#n.get(e);t&&(clearTimeout(t),this.#n.delete(e)),this.toasts=this.toasts.filter(t=>t.id!==e)}#r(e,t,n){let r=String(t||``).trim();if(!r)return;let i=this.toasts.find(t=>t.kind===e&&t.text===r);i&&this.dismiss(i.id);let a=++this.#t;this.toasts=[...this.toasts,{id:a,kind:e,text:r}],this.#n.set(a,setTimeout(()=>this.dismiss(a),n))}},Js=R(`
        `),Ys=R(`
        `);function Xs(e,t){E(t,!0);var n=Ys();H(n,21,()=>qs.toasts,e=>e.id,(e,t)=>{var n=Js();let r;var i=M(n),a=M(i,!0);T(i);var o=P(i,2);T(n),F(()=>{r=U(n,1,`flash-toast svelte-1i257xg`,null,r,{"flash-toast-success":I(t).kind===`success`,"flash-toast-error":I(t).kind===`error`}),W(n,`role`,I(t).kind===`error`?`alert`:`status`),W(n,`aria-live`,I(t).kind===`error`?`assertive`:`polite`),B(a,I(t).text)}),L(`click`,o,()=>qs.dismiss(I(t).id)),ki(1,n,()=>Vs,()=>({y:-24,duration:360,easing:Us})),ki(2,n,()=>Bs,()=>({duration:150})),z(e,n)}),T(n),z(e,n),D()}Hr([`click`]);var Zs=R(``);function Qs(e,t){E(t,!0);var n=Qr(),r=N(n),i=e=>{z(e,Zs())},a=O(()=>Bo());V(r,e=>{I(a)&&e(i)}),z(e,n),D()}function $s(e){return String(e||``).split(`,`).map(e=>e.trim()).filter(e=>e)}function ec(e){if(e==null||e===``)return`Not captured`;if(typeof e==`string`){let t=e.trim();if(t.startsWith(`{`)&&t.endsWith(`}`)||t.startsWith(`[`)&&t.endsWith(`]`))try{return JSON.stringify(JSON.parse(t),null,2)}catch{return e}return e}try{return JSON.stringify(e,null,2)}catch{return String(e)}}function tc(e){return e==null||e===void 0?`-`:e.toLocaleString()}function nc(e){if(e==null)return`---`;let t=Number(e);return Number.isFinite(t)?t>0&&t<1e-4?`<$0.0001`:`$`+t.toFixed(4).replace(/(\.\d{2}\d*?)0+$/,`$1`):`---`}function rc(e){return e==null||e===void 0?`—`:`$`+e.toFixed(2)}function ic(e){return e==null||e===void 0?`—`:e<.01?`$`+e.toFixed(6):`$`+e.toFixed(4)}function ac(e){if(e==null||e===``)return`-`;let t=Number(e);if(!Number.isFinite(t))return`-`;let n=Math.abs(t),r=[{threshold:1e9,suffix:`B`},{threshold:1e6,suffix:`M`},{threshold:1e3,suffix:`K`}];for(let e=0;e=i.threshold){let n=t/i.threshold;return Math.abs(Number(n.toFixed(1)))>=1e3&&e>0&&(i=r[e-1],n=t/i.threshold),n.toFixed(1).replace(/\.0$/,``)+i.suffix}}return String(t)}function oc(e,t){let n=t==null||t===``?NaN:Number(t),r=Number.isFinite(n)?tc(n):`-`;return String(e||`Tokens`)+`: `+r}function sc(e){return e?typeof e==`string`?e:e.getUTCFullYear()+`-`+String(e.getUTCMonth()+1).padStart(2,`0`)+`-`+String(e.getUTCDate()).padStart(2,`0`):``}function cc(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:t.getUTCFullYear()+`-`+String(t.getUTCMonth()+1).padStart(2,`0`)+`-`+String(t.getUTCDate()).padStart(2,`0`)}function lc(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:t.getUTCFullYear()+`-`+String(t.getUTCMonth()+1).padStart(2,`0`)+`-`+String(t.getUTCDate()).padStart(2,`0`)+` `+String(t.getUTCHours()).padStart(2,`0`)+`:`+String(t.getUTCMinutes()).padStart(2,`0`)+`:`+String(t.getUTCSeconds()).padStart(2,`0`)+` UTC`}function uc(e){return String(e&&e.provider||``).trim()}function dc(e){return String(e&&e.provider_name||``).trim()||uc(e)}function fc(e,t){let n=String(t||``).trim();if(!n)return`-`;let r=dc(e);return!r||n===r||n.startsWith(r+`/`)?n:r+`/`+n}function pc(e){return fc(e,e&&e.model)}function mc(e){return fc(e,e&&e.resolved_model)}function hc(e){let t=String(e&&(e.requested_model||e.model)||``).trim();if(!e)return t;let n=String(e.data&&e.data.failover&&e.data.failover.target_model||``).trim();if(n&&n!==t)return t+` ⮕ `+n;if(e.alias_used&&e.resolved_model){let n=mc(e);if(n&&n!==`-`&&n!==t)return t+` ⮕ `+n}return t}var gc=`gomodel_date_range`,_c=1;function vc(e){return/^[1-9]\d*$/.test(String(e??``))}var yc=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function bc({selectedPreset:e,startKey:t,endKey:n,followsToday:r}){return e&&vc(e)?{v:_c,mode:`preset`,days:String(e)}:e?null:Zo(t)&&Zo(n)?{v:_c,mode:`custom`,start:t,end:n,follow:r===!0}:null}function xc(e){let t=e;if(typeof e==`string`)try{t=JSON.parse(e)}catch{return null}return!t||typeof t!=`object`?null:t.mode===`preset`?vc(t.days)?{mode:`preset`,days:String(t.days)}:null:t.mode===`custom`&&Zo(t.start)&&Zo(t.end)&&t.start<=t.end?{mode:`custom`,start:t.start,end:t.end,follow:t.follow===!0}:null}function Sc(e,t,n){let r=Qo(e,t);return r<1||!Zo(n)?{start:e,end:t}:{start:Xo(n,-(r-1)),end:n}}function Cc(e,t){if(e===t)return`Today`;let[n,r,i]=e.split(`-`);return yc[Number(r)-1]+` `+Number(i)+`, `+n}function wc({selectedPreset:e,startKey:t,endKey:n,followsToday:r,todayKey:i}){if(e)return`Last `+e+` days`;if(!Zo(t)||!Zo(n))return``;let a=Qo(t,n);return r||n===i?a===1?`Today`:`Last `+a+` days`:a===1?`1 day`:a+` days`}function Tc({selectedPreset:e,startKey:t,endKey:n,todayKey:r}){if(e)return`Last `+e+` days`;let i=e=>Cc(e,r);return Zo(t)&&Zo(n)?t===n?i(t):i(t)+` – `+i(n):Zo(t)?i(t)+` – ...`:`Last 30 days`}var Ec=6e4,Dc=new class{#e=k(j(`30`));get days(){return I(this.#e)}set days(e){A(this.#e,e,!0)}#t=k(j(`30`));get selectedPreset(){return I(this.#t)}set selectedPreset(e){A(this.#t,e,!0)}#n=k(null);get customStartDate(){return I(this.#n)}set customStartDate(e){A(this.#n,e,!0)}#r=k(null);get customEndDate(){return I(this.#r)}set customEndDate(e){A(this.#r,e,!0)}#i=k(!1);get followsToday(){return I(this.#i)}set followsToday(e){A(this.#i,e,!0)}#a=k(`daily`);get interval(){return I(this.#a)}set interval(e){A(this.#a,e,!0)}#o=k(0);get syncTick(){return I(this.#o)}set syncTick(e){A(this.#o,e,!0)}init(){this.restore(),this.syncToToday(),typeof setInterval==`function`&&setInterval(()=>this.syncToToday(),Ec)}queryStr(){return this.customStartDate&&this.customEndDate?`start_date=`+sc(this.customStartDate)+`&end_date=`+sc(this.customEndDate):`days=`+this.days}selectPreset(e){this.selectedPreset=e,this.customStartDate=null,this.customEndDate=null,this.followsToday=!1,this.days=e,this.persist()}selectStart(e){this.selectedPreset=null,this.customStartDate=e,this.customEndDate&&this.customEndDatet.category===e);return t?t.count:0}get filteredModels(){if(!this.filter)return this.models;let e=this.filter.toLowerCase();return this.models.filter(t=>(t.model?.id??``).toLowerCase().includes(e)||(t.provider_name??``).toLowerCase().includes(e)||(t.provider_type??``).toLowerCase().includes(e)||(t.selector??``).toLowerCase().includes(e)||(t.model?.owned_by??``).toLowerCase().includes(e)||(t.model?.metadata?.modes??[]).join(`,`).toLowerCase().includes(e)||(t.model?.metadata?.categories??[]).join(`,`).toLowerCase().includes(e))}},kc=R(``);function Ac(e,t){E(t,!0);var n=Qr(),r=N(n),i=e=>{var t=kc(),n=P(M(t),2);T(t),L(`click`,n,()=>K.openDialog()),z(e,t)};V(r,e=>{K.authError&&e(i)}),z(e,n),D()}Hr([`click`]);function jc(){return{total_requests:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,total_input_cost:null,total_output_cost:null,total_cost:null}}function Mc(){return{summary:{total_hits:0,exact_hits:0,semantic_hits:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,total_saved_cost:null},daily:[]}}var Nc=new class{#e=k(j(jc()));get summary(){return I(this.#e)}set summary(e){A(this.#e,e,!0)}#t=k(j([]));get daily(){return I(this.#t)}set daily(e){A(this.#t,e,!0)}#n=k(j(Mc()));get cacheOverview(){return I(this.#n)}set cacheOverview(e){A(this.#n,e,!0)}#r=k(!1);get loading(){return I(this.#r)}set loading(e){A(this.#r,e,!0)}#i=null;#a=null;cacheAnalyticsEnabled(){return vs.cacheVisible()}async fetchUsage(){this.#i&&this.#i.abort();let e=new AbortController;this.#i=e,this.loading=!0;try{let t=Dc.queryStr()+`&interval=`+Dc.interval,[n,r]=await Promise.all([ps(`/admin/usage/summary?`+t,{label:`usage summary`,signal:e.signal}),ps(`/admin/usage/daily?`+t,{label:`usage daily`,signal:e.signal})]);if(n.stale||r.stale||e.signal.aborted)return;if(!n.ok||!r.ok){this.summary=jc(),this.daily=[],this.cacheOverview=Mc();return}this.summary=n.data||jc(),this.daily=Array.isArray(r.data)?r.data:[]}catch(e){if(hs(e))return;console.error(`Failed to fetch usage:`,e),this.summary=jc(),this.daily=[]}finally{this.#i===e&&(this.#i=null,this.loading=!1)}}async fetchCacheOverview(e=``){if(await vs.ensureLoaded(),!this.cacheAnalyticsEnabled()){this.cacheOverview=Mc();return}this.#a&&this.#a.abort();let t=new AbortController;this.#a=t;try{let n=await ps(`/admin/cache/overview?`+(Dc.queryStr()+`&interval=`+Dc.interval+e),{label:`cache overview`,signal:t.signal});if(n.stale||t.signal.aborted)return;if(!n.ok){this.cacheOverview=Mc();return}let r=n.data&&typeof n.data==`object`?n.data:Mc();r.summary||=Mc().summary,Array.isArray(r.daily)||(r.daily=[]),this.cacheOverview=r}catch(e){if(hs(e))return;console.error(`Failed to fetch cache overview:`,e),this.cacheOverview=Mc()}finally{this.#a===t&&(this.#a=null)}}},Pc=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`];function Fc(e,t){let n=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+t,1));return Pc[n.getUTCMonth()]+` `+n.getUTCFullYear()}function Ic(e,t,n){let r=e.getUTCFullYear(),i=e.getUTCMonth()+t,a=new Date(Date.UTC(r,i,1)),o=new Date(Date.UTC(r,i+1,0)),s=(a.getUTCDay()+6)%7,c=[],l=new Date(Date.UTC(r,i,0));for(let e=s-1;e>=0;e--){let t=l.getUTCDate()-e,a=new Date(Date.UTC(r,i-1,t));c.push({day:t,date:a,current:!1,key:`p-`+n(a)})}for(let e=1;e<=o.getUTCDate();e++){let t=new Date(Date.UTC(r,i,e));c.push({day:e,date:t,current:!0,key:`c-`+n(t)})}let u=42-c.length;for(let e=1;e<=u;e++){let t=new Date(Date.UTC(r,i+1,e));c.push({day:e,date:t,current:!1,key:`n-`+n(t)})}return c}function Lc(e,t,n){let r=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+t,1));return n&&r.getTime()>n.getTime()?e:r}function Rc(e,t){return e.getUTCFullYear()===t.getUTCFullYear()&&e.getUTCMonth()===t.getUTCMonth()}var zc=R(``),Bc=R(``),Vc=R(``),Hc=R(`
        MoTuWeThFrSaSu
        `);function Uc(e,t){E(t,!0);let n=ya(t,`offset`,3,0),r=O(()=>Ic(t.calendarMonth,n(),e=>ss.dateToDateKey(e))),i=O(()=>Rc(t.calendarMonth,ss.todayDate())),a=e=>ss.dateToDateKey(e.date),o=e=>a(e)>ss.currentDateKey(),s=e=>e.current&&a(e)===ss.currentDateKey();function c(e,t){let n=t===`start`?Dc.rangeStart():Dc.rangeEnd();return e.current&&!!n&&a(e)===ss.dateToDateKey(n)}function l(e){let t=Dc.rangeStart(),n=Dc.rangeEnd();return!e.current||!t||!n?!1:a(e)>=ss.dateToDateKey(t)&&a(e)<=ss.dateToDateKey(n)}var u=Hc(),d=M(u),f=M(d);let p;var m=P(f,2),h=M(m,!0);T(m);var g=P(m,2),_=e=>{z(e,zc())},v=e=>{var n=Bc();F(()=>n.disabled=I(i)),L(`click`,n,function(...e){t.onnext?.apply(this,e)}),z(e,n)};V(g,e=>{n()===-1?e(_):e(v,-1)}),T(d);var y=P(d,4);H(y,21,()=>I(r),e=>e.key,(e,n)=>{var r=Vc(),i=M(r,!0);T(r),F((e,t)=>{U(r,1,e,`svelte-g7ga4u`),r.disabled=t,B(i,I(n).day)},[()=>Fi([`dp-day`,{"other-month":!I(n).current,today:s(I(n)),"range-start":c(I(n),`start`),"range-end":c(I(n),`end`),"in-range":l(I(n)),disabled:o(I(n))}]),()=>o(I(n))||!I(n).current]),L(`click`,r,()=>t.onselect?.(I(n))),z(e,r)}),T(y),T(u),F(e=>{p=U(f,1,`dp-nav-btn svelte-g7ga4u`,null,p,{"dp-nav-prev-mobile":n()!==-1}),B(h,e)},[()=>Fc(t.calendarMonth,n())]),L(`click`,f,function(...e){t.onprev?.apply(this,e)}),z(e,u),D()}Hr([`click`]);var Wc=R(``),Gc=R(`
        `),Kc=Xr(``),qc=Xr(``),Jc=R(`
        `),Yc=R(`
        `);function Xc(e,t){E(t,!0);let n=[`3`,`7`,`14`,`30`,`90`],r=k(!1),i=k(`start`),a=k(j(new Date)),o=k(j({show:!1,x:0,y:0})),s=k(null);function c(){A(r,!I(r)),I(r)&&(Dc.syncToToday(),A(a,ss.startOfMonthDate(Dc.customEndDate||ss.todayDate()),!0),A(i,`start`))}function l(){A(r,!1),A(o,{show:!1,x:0,y:0},!0)}An(()=>{if(!I(r))return;let e=e=>{I(s)&&!I(s).contains(e.target)&&l()},t=e=>{e.key===`Escape`&&l()};return document.addEventListener(`click`,e,!0),window.addEventListener(`keydown`,t),()=>{document.removeEventListener(`click`,e,!0),window.removeEventListener(`keydown`,t)}});let u=Dc.syncTick;An(()=>{let e=Dc.syncTick;e!==u&&(u=e,t.onchange?.())});function d(e){Dc.selectPreset(e),A(i,`start`),t.onchange?.(),l()}let f=()=>A(a,Lc(I(a),-1),!0),p=()=>A(a,Lc(I(a),1,ss.startOfMonthDate(ss.todayDate())),!0);function m(e){let n=new Date(e.date);if(I(i)===`start`){Dc.selectStart(n),A(i,`end`),t.onchange?.();return}Dc.selectEnd(n),A(i,`start`),t.onchange?.(),l()}var h=Yc(),g=M(h),_=P(M(g),2),v=M(_,!0);T(_);var y=P(_,2);let b;T(g);var x=P(g,2),S=e=>{var t=Gc(),r=M(t);H(r,20,()=>n,e=>e,(e,t)=>{var n=Wc();let r;var i=M(n);T(n),F(()=>{r=U(n,1,`preset-btn svelte-ax7ma4`,null,r,{active:Dc.selectedPreset===t}),B(i,`Last ${t??``} days`)}),L(`click`,n,()=>d(t)),z(e,n)}),T(r);var i=P(r,2);H(i,20,()=>[-1,0],e=>e,(e,t)=>{Uc(e,{get calendarMonth(){return I(a)},get offset(){return t},onprev:f,onnext:p,onselect:m})}),T(i),T(t),L(`mousemove`,i,e=>A(o,{show:!0,x:e.clientX,y:e.clientY},!0)),Vr(`mouseleave`,i,()=>A(o,{show:!1,x:0,y:0},!0)),z(e,t)};V(x,e=>{I(r)&&e(S)});var C=P(x,2),w=e=>{var t=Jc(),n=M(t),r=e=>{z(e,Kc())},a=e=>{z(e,qc())};V(n,e=>{I(i)===`start`?e(r):e(a,-1)});var s=P(n,2),c=M(s,!0);T(s),T(t),F(()=>{Hi(t,`left:${I(o).x??``}px;top:${I(o).y??``}px`),B(c,I(i)===`end`?`Select end date`:`Select start date`)}),z(e,t)};V(C,e=>{I(o).show&&e(w)}),T(h),ga(h,e=>A(s,e),()=>I(s)),F((e,t)=>{W(g,`title`,e),B(v,t),b=U(y,0,`date-picker-chevron svelte-ax7ma4`,null,b,{open:I(r)})},[()=>Dc.dateRangeSpanLabel(),()=>Dc.dateRangeLabel()]),L(`click`,g,c),z(e,h),D()}Hr([`click`,`mousemove`]);function Zc(e){return e+.5|0}var Qc=(e,t,n)=>Math.max(Math.min(e,n),t);function $c(e){return Qc(Zc(e*2.55),0,255)}function el(e){return Qc(Zc(e*255),0,255)}function tl(e){return Qc(Zc(e/2.55)/100,0,1)}function nl(e){return Qc(Zc(e*100),0,100)}var rl={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},il=[...`0123456789ABCDEF`],al=e=>il[e&15],ol=e=>il[(e&240)>>4]+il[e&15],sl=e=>(e&240)>>4==(e&15),cl=e=>sl(e.r)&&sl(e.g)&&sl(e.b)&&sl(e.a);function ll(e){var t=e.length,n;return e[0]===`#`&&(t===4||t===5?n={r:255&rl[e[1]]*17,g:255&rl[e[2]]*17,b:255&rl[e[3]]*17,a:t===5?rl[e[4]]*17:255}:(t===7||t===9)&&(n={r:rl[e[1]]<<4|rl[e[2]],g:rl[e[3]]<<4|rl[e[4]],b:rl[e[5]]<<4|rl[e[6]],a:t===9?rl[e[7]]<<4|rl[e[8]]:255})),n}var ul=(e,t)=>e<255?t(e):``;function dl(e){var t=cl(e)?al:ol;return e?`#`+t(e.r)+t(e.g)+t(e.b)+ul(e.a,t):void 0}var fl=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function pl(e,t,n){let r=t*Math.min(n,1-n),i=(t,i=(t+e/30)%12)=>n-r*Math.max(Math.min(i-3,9-i,1),-1);return[i(0),i(8),i(4)]}function ml(e,t,n){let r=(r,i=(r+e/60)%6)=>n-n*t*Math.max(Math.min(i,4-i,1),0);return[r(5),r(3),r(1)]}function hl(e,t,n){let r=pl(e,1,.5),i;for(t+n>1&&(i=1/(t+n),t*=i,n*=i),i=0;i<3;i++)r[i]*=1-t-n,r[i]+=t;return r}function gl(e,t,n,r,i){return e===i?(t-n)/r+(t.5?l/(2-i-a):l/(i+a),s=gl(t,n,r,l,i),s=s*60+.5),[s|0,c||0,o]}function vl(e,t,n,r){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,n,r)).map(el)}function yl(e,t,n){return vl(pl,e,t,n)}function bl(e,t,n){return vl(hl,e,t,n)}function xl(e,t,n){return vl(ml,e,t,n)}function Sl(e){return(e%360+360)%360}function Cl(e){let t=fl.exec(e),n=255,r;if(!t)return;t[5]!==r&&(n=t[6]?$c(+t[5]):el(+t[5]));let i=Sl(+t[2]),a=t[3]/100,o=t[4]/100;return r=t[1]===`hwb`?bl(i,a,o):t[1]===`hsv`?xl(i,a,o):yl(i,a,o),{r:r[0],g:r[1],b:r[2],a:n}}function wl(e,t){var n=_l(e);n[0]=Sl(n[0]+t),n=yl(n),e.r=n[0],e.g=n[1],e.b=n[2]}function Tl(e){if(!e)return;let t=_l(e),n=t[0],r=nl(t[1]),i=nl(t[2]);return e.a<255?`hsla(${n}, ${r}%, ${i}%, ${tl(e.a)})`:`hsl(${n}, ${r}%, ${i}%)`}var El={x:`dark`,Z:`light`,Y:`re`,X:`blu`,W:`gr`,V:`medium`,U:`slate`,A:`ee`,T:`ol`,S:`or`,B:`ra`,C:`lateg`,D:`ights`,R:`in`,Q:`turquois`,E:`hi`,P:`ro`,O:`al`,N:`le`,M:`de`,L:`yello`,F:`en`,K:`ch`,G:`arks`,H:`ea`,I:`ightg`,J:`wh`},Dl={OiceXe:`f0f8ff`,antiquewEte:`faebd7`,aqua:`ffff`,aquamarRe:`7fffd4`,azuY:`f0ffff`,beige:`f5f5dc`,bisque:`ffe4c4`,black:`0`,blanKedOmond:`ffebcd`,Xe:`ff`,XeviTet:`8a2be2`,bPwn:`a52a2a`,burlywood:`deb887`,caMtXe:`5f9ea0`,KartYuse:`7fff00`,KocTate:`d2691e`,cSO:`ff7f50`,cSnflowerXe:`6495ed`,cSnsilk:`fff8dc`,crimson:`dc143c`,cyan:`ffff`,xXe:`8b`,xcyan:`8b8b`,xgTMnPd:`b8860b`,xWay:`a9a9a9`,xgYF:`6400`,xgYy:`a9a9a9`,xkhaki:`bdb76b`,xmagFta:`8b008b`,xTivegYF:`556b2f`,xSange:`ff8c00`,xScEd:`9932cc`,xYd:`8b0000`,xsOmon:`e9967a`,xsHgYF:`8fbc8f`,xUXe:`483d8b`,xUWay:`2f4f4f`,xUgYy:`2f4f4f`,xQe:`ced1`,xviTet:`9400d3`,dAppRk:`ff1493`,dApskyXe:`bfff`,dimWay:`696969`,dimgYy:`696969`,dodgerXe:`1e90ff`,fiYbrick:`b22222`,flSOwEte:`fffaf0`,foYstWAn:`228b22`,fuKsia:`ff00ff`,gaRsbSo:`dcdcdc`,ghostwEte:`f8f8ff`,gTd:`ffd700`,gTMnPd:`daa520`,Way:`808080`,gYF:`8000`,gYFLw:`adff2f`,gYy:`808080`,honeyMw:`f0fff0`,hotpRk:`ff69b4`,RdianYd:`cd5c5c`,Rdigo:`4b0082`,ivSy:`fffff0`,khaki:`f0e68c`,lavFMr:`e6e6fa`,lavFMrXsh:`fff0f5`,lawngYF:`7cfc00`,NmoncEffon:`fffacd`,ZXe:`add8e6`,ZcSO:`f08080`,Zcyan:`e0ffff`,ZgTMnPdLw:`fafad2`,ZWay:`d3d3d3`,ZgYF:`90ee90`,ZgYy:`d3d3d3`,ZpRk:`ffb6c1`,ZsOmon:`ffa07a`,ZsHgYF:`20b2aa`,ZskyXe:`87cefa`,ZUWay:`778899`,ZUgYy:`778899`,ZstAlXe:`b0c4de`,ZLw:`ffffe0`,lime:`ff00`,limegYF:`32cd32`,lRF:`faf0e6`,magFta:`ff00ff`,maPon:`800000`,VaquamarRe:`66cdaa`,VXe:`cd`,VScEd:`ba55d3`,VpurpN:`9370db`,VsHgYF:`3cb371`,VUXe:`7b68ee`,VsprRggYF:`fa9a`,VQe:`48d1cc`,VviTetYd:`c71585`,midnightXe:`191970`,mRtcYam:`f5fffa`,mistyPse:`ffe4e1`,moccasR:`ffe4b5`,navajowEte:`ffdead`,navy:`80`,Tdlace:`fdf5e6`,Tive:`808000`,TivedBb:`6b8e23`,Sange:`ffa500`,SangeYd:`ff4500`,ScEd:`da70d6`,pOegTMnPd:`eee8aa`,pOegYF:`98fb98`,pOeQe:`afeeee`,pOeviTetYd:`db7093`,papayawEp:`ffefd5`,pHKpuff:`ffdab9`,peru:`cd853f`,pRk:`ffc0cb`,plum:`dda0dd`,powMrXe:`b0e0e6`,purpN:`800080`,YbeccapurpN:`663399`,Yd:`ff0000`,Psybrown:`bc8f8f`,PyOXe:`4169e1`,saddNbPwn:`8b4513`,sOmon:`fa8072`,sandybPwn:`f4a460`,sHgYF:`2e8b57`,sHshell:`fff5ee`,siFna:`a0522d`,silver:`c0c0c0`,skyXe:`87ceeb`,UXe:`6a5acd`,UWay:`708090`,UgYy:`708090`,snow:`fffafa`,sprRggYF:`ff7f`,stAlXe:`4682b4`,tan:`d2b48c`,teO:`8080`,tEstN:`d8bfd8`,tomato:`ff6347`,Qe:`40e0d0`,viTet:`ee82ee`,JHt:`f5deb3`,wEte:`ffffff`,wEtesmoke:`f5f5f5`,Lw:`ffff00`,LwgYF:`9acd32`};function Ol(){let e={},t=Object.keys(Dl),n=Object.keys(El),r,i,a,o,s;for(r=0;r>16&255,a>>8&255,a&255]}return e}var kl;function Al(e){kl||(kl=Ol(),kl.transparent=[0,0,0,0]);let t=kl[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}var jl=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function Ml(e){let t=jl.exec(e),n=255,r,i,a;if(t){if(t[7]!==r){let e=+t[7];n=t[8]?$c(e):Qc(e*255,0,255)}return r=+t[1],i=+t[3],a=+t[5],r=255&(t[2]?$c(r):Qc(r,0,255)),i=255&(t[4]?$c(i):Qc(i,0,255)),a=255&(t[6]?$c(a):Qc(a,0,255)),{r,g:i,b:a,a:n}}}function Nl(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${tl(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}var Pl=e=>e<=.0031308?e*12.92:e**(1/2.4)*1.055-.055,Fl=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4;function Il(e,t,n){let r=Fl(tl(e.r)),i=Fl(tl(e.g)),a=Fl(tl(e.b));return{r:el(Pl(r+n*(Fl(tl(t.r))-r))),g:el(Pl(i+n*(Fl(tl(t.g))-i))),b:el(Pl(a+n*(Fl(tl(t.b))-a))),a:e.a+n*(t.a-e.a)}}function Ll(e,t,n){if(e){let r=_l(e);r[t]=Math.max(0,Math.min(r[t]+r[t]*n,t===0?360:1)),r=yl(r),e.r=r[0],e.g=r[1],e.b=r[2]}}function Rl(e,t){return e&&Object.assign(t||{},e)}function zl(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=el(e[3]))):(t=Rl(e,{r:0,g:0,b:0,a:1}),t.a=el(t.a)),t}function Bl(e){return e.charAt(0)===`r`?Ml(e):Cl(e)}var Vl=class e{constructor(t){if(t instanceof e)return t;let n=typeof t,r;n===`object`?r=zl(t):n===`string`&&(r=ll(t)||Al(t)||Bl(t)),this._rgb=r,this._valid=!!r}get valid(){return this._valid}get rgb(){var e=Rl(this._rgb);return e&&(e.a=tl(e.a)),e}set rgb(e){this._rgb=zl(e)}rgbString(){return this._valid?Nl(this._rgb):void 0}hexString(){return this._valid?dl(this._rgb):void 0}hslString(){return this._valid?Tl(this._rgb):void 0}mix(e,t){if(e){let n=this.rgb,r=e.rgb,i,a=t===i?.5:t,o=2*a-1,s=n.a-r.a,c=((o*s===-1?o:(o+s)/(1+o*s))+1)/2;i=1-c,n.r=255&c*n.r+i*r.r+.5,n.g=255&c*n.g+i*r.g+.5,n.b=255&c*n.b+i*r.b+.5,n.a=a*n.a+(1-a)*r.a,this.rgb=n}return this}interpolate(e,t){return e&&(this._rgb=Il(this._rgb,e._rgb,t)),this}clone(){return new e(this.rgb)}alpha(e){return this._rgb.a=el(e),this}clearer(e){let t=this._rgb;return t.a*=1-e,this}greyscale(){let e=this._rgb;return e.r=e.g=e.b=Zc(e.r*.3+e.g*.59+e.b*.11),this}opaquer(e){let t=this._rgb;return t.a*=1+e,this}negate(){let e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return Ll(this._rgb,2,e),this}darken(e){return Ll(this._rgb,2,-e),this}saturate(e){return Ll(this._rgb,1,e),this}desaturate(e){return Ll(this._rgb,1,-e),this}rotate(e){return wl(this._rgb,e),this}};function Hl(){}var Ul=(()=>{let e=0;return()=>e++})();function Wl(e){return e==null}function Gl(e){if(Array.isArray&&Array.isArray(e))return!0;let t=Object.prototype.toString.call(e);return t.slice(0,7)===`[object`&&t.slice(-6)===`Array]`}function Kl(e){return e!==null&&Object.prototype.toString.call(e)===`[object Object]`}function ql(e){return(typeof e==`number`||e instanceof Number)&&isFinite(+e)}function Jl(e,t){return ql(e)?e:t}function Yl(e,t){return e===void 0?t:e}var Xl=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100:+e/t,Zl=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100*t:+e;function Ql(e,t,n){if(e&&typeof e.call==`function`)return e.apply(n,t)}function $l(e,t,n,r){let i,a,o;if(Gl(e))if(a=e.length,r)for(i=a-1;i>=0;i--)t.call(n,e[i],i);else for(i=0;ie,x:e=>e.x,y:e=>e.y};function cu(e){let t=e.split(`.`),n=[],r=``;for(let e of t)r+=e,r.endsWith(`\\`)?r=r.slice(0,-1)+`.`:(n.push(r),r=``);return n}function lu(e){let t=cu(e);return e=>{for(let n of t){if(n===``)break;e&&=e[n]}return e}}function uu(e,t){return(su[t]||(su[t]=lu(t)))(e)}function du(e){return e.charAt(0).toUpperCase()+e.slice(1)}var fu=e=>e!==void 0,pu=e=>typeof e==`function`,mu=(e,t)=>{if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0};function hu(e){return e.type===`mouseup`||e.type===`click`||e.type===`contextmenu`}var gu=Math.PI,_u=2*gu,vu=_u+gu,yu=1/0,bu=gu/180,xu=gu/2,Su=gu/4,Cu=gu*2/3,wu=Math.log10,Tu=Math.sign;function Eu(e,t,n){return Math.abs(e-t)e-t).pop(),t}function ku(e){return typeof e==`symbol`||typeof e==`object`&&!!e&&!(Symbol.toPrimitive in e||`toString`in e||`valueOf`in e)}function Au(e){return!ku(e)&&!isNaN(parseFloat(e))&&isFinite(e)}function ju(e,t){let n=Math.round(e);return n-t<=e&&n+t>=e}function Mu(e,t,n){let r,i,a;for(r=0,i=e.length;rc&&l=Math.min(t,n)-r&&e<=Math.max(t,n)+r}function Wu(e,t,n){n||=(n=>e[n]1;)a=i+r>>1,n(a)?i=a:r=a;return{lo:i,hi:r}}var Gu=(e,t,n,r)=>Wu(e,n,r?r=>{let i=e[r][t];return ie[r][t]Wu(e,n,r=>e[r][t]>=n);function qu(e,t,n){let r=0,i=e.length;for(;rr&&e[i-1]>n;)i--;return r>0||i{let n=`_onData`+du(t),r=e[t];Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value(...t){let i=r.apply(this,t);return e._chartjs.listeners.forEach(e=>{typeof e[n]==`function`&&e[n](...t)}),i}})})}function Xu(e,t){let n=e._chartjs;if(!n)return;let r=n.listeners,i=r.indexOf(t);i!==-1&&r.splice(i,1),!(r.length>0)&&(Ju.forEach(t=>{delete e[t]}),delete e._chartjs)}function Zu(e){let t=new Set(e);return t.size===e.length?e:Array.from(t)}var Qu=function(){return typeof window>`u`?function(e){return e()}:window.requestAnimationFrame}();function $u(e,t){let n=[],r=!1;return function(...i){n=i,r||(r=!0,Qu.call(window,()=>{r=!1,e.apply(t,n)}))}}function ed(e,t){let n;return function(...r){return t?(clearTimeout(n),n=setTimeout(e,t,r)):e.apply(this,r),t}}var td=e=>e===`start`?`left`:e===`end`?`right`:`center`,nd=(e,t,n)=>e===`start`?t:e===`end`?n:(t+n)/2,rd=(e,t,n,r)=>e===(r?`left`:`right`)?n:e===`center`?(t+n)/2:t;function id(e,t,n){let r=t.length,i=0,a=r;if(e._sorted){let{iScale:o,vScale:s,_parsed:c}=e,l=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null,u=o.axis,{min:d,max:f,minDefined:p,maxDefined:m}=o.getUserBounds();if(p){if(i=Math.min(Gu(c,u,d).lo,n?r:Gu(t,u,o.getPixelForValue(d)).lo),l){let e=c.slice(0,i+1).reverse().findIndex(e=>!Wl(e[s.axis]));i-=Math.max(0,e)}i=Vu(i,0,r-1)}if(m){let e=Math.max(Gu(c,o.axis,f,!0).hi+1,n?0:Gu(t,u,o.getPixelForValue(f),!0).hi+1);if(l){let t=c.slice(e-1).findIndex(e=>!Wl(e[s.axis]));e+=Math.max(0,t)}a=Vu(e,i,r)-i}else a=r-i}return{start:i,count:a}}function ad(e){let{xScale:t,yScale:n,_scaleRanges:r}=e,i={xmin:t.min,xmax:t.max,ymin:n.min,ymax:n.max};if(!r)return e._scaleRanges=i,!0;let a=r.xmin!==t.min||r.xmax!==t.max||r.ymin!==n.min||r.ymax!==n.max;return Object.assign(r,i),a}var od=e=>e===0||e===1,sd=(e,t,n)=>-(2**(10*--e)*Math.sin((e-t)*_u/n)),cd=(e,t,n)=>2**(-10*e)*Math.sin((e-t)*_u/n)+1,ld={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>--e*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-(--e*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>--e*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>-Math.cos(e*xu)+1,easeOutSine:e=>Math.sin(e*xu),easeInOutSine:e=>-.5*(Math.cos(gu*e)-1),easeInExpo:e=>e===0?0:2**(10*(e-1)),easeOutExpo:e=>e===1?1:-(2**(-10*e))+1,easeInOutExpo:e=>od(e)?e:e<.5?.5*2**(10*(e*2-1)):.5*(-(2**(-10*(e*2-1)))+2),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1- --e*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>od(e)?e:sd(e,.075,.3),easeOutElastic:e=>od(e)?e:cd(e,.075,.3),easeInOutElastic(e){let t=.1125,n=.45;return od(e)?e:e<.5?.5*sd(e*2,t,n):.5+.5*cd(e*2-1,t,n)},easeInBack(e){return e*e*(2.70158*e-1.70158)},easeOutBack(e){return--e*e*(2.70158*e+1.70158)+1},easeInOutBack(e){let t=1.70158;return(e/=.5)<1?.5*(e*e*(((t*=1.525)+1)*e-t)):.5*((e-=2)*e*(((t*=1.525)+1)*e+t)+2)},easeInBounce:e=>1-ld.easeOutBounce(1-e),easeOutBounce(e){let t=7.5625,n=2.75;return e<1/n?t*e*e:e<2/n?t*(e-=1.5/n)*e+.75:e<2.5/n?t*(e-=2.25/n)*e+.9375:t*(e-=2.625/n)*e+.984375},easeInOutBounce:e=>e<.5?ld.easeInBounce(e*2)*.5:ld.easeOutBounce(e*2-1)*.5+.5};function ud(e){if(e&&typeof e==`object`){let t=e.toString();return t===`[object CanvasPattern]`||t===`[object CanvasGradient]`}return!1}function dd(e){return ud(e)?e:new Vl(e)}function fd(e){return ud(e)?e:new Vl(e).saturate(.5).darken(.1).hexString()}var pd=[`x`,`y`,`borderWidth`,`radius`,`tension`],md=[`color`,`borderColor`,`backgroundColor`];function hd(e){e.set(`animation`,{delay:void 0,duration:1e3,easing:`easeOutQuart`,fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe(`animation`,{_fallback:!1,_indexable:!1,_scriptable:e=>e!==`onProgress`&&e!==`onComplete`&&e!==`fn`}),e.set(`animations`,{colors:{type:`color`,properties:md},numbers:{type:`number`,properties:pd}}),e.describe(`animations`,{_fallback:`animation`}),e.set(`transitions`,{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:`transparent`},visible:{type:`boolean`,duration:0}}},hide:{animations:{colors:{to:`transparent`},visible:{type:`boolean`,easing:`linear`,fn:e=>e|0}}}})}function gd(e){e.set(`layout`,{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}var _d=new Map;function vd(e,t){t||={};let n=e+JSON.stringify(t),r=_d.get(n);return r||(r=new Intl.NumberFormat(e,t),_d.set(n,r)),r}function yd(e,t,n){return vd(t,n).format(e)}var bd={values(e){return Gl(e)?e:``+e},numeric(e,t,n){if(e===0)return`0`;let r=this.chart.options.locale,i,a=e;if(n.length>1){let t=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(t<1e-4||t>0x38d7ea4c68000)&&(i=`scientific`),a=xd(e,n)}let o=wu(Math.abs(a)),s=isNaN(o)?1:Math.max(Math.min(-1*Math.floor(o),20),0),c={notation:i,minimumFractionDigits:s,maximumFractionDigits:s};return Object.assign(c,this.options.ticks.format),yd(e,r,c)},logarithmic(e,t,n){if(e===0)return`0`;let r=n[t].significand||e/10**Math.floor(wu(e));return[1,2,3,5,10,15].includes(r)||t>.8*n.length?bd.numeric.call(this,e,t,n):``}};function xd(e,t){let n=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(n)>=1&&e!==Math.floor(e)&&(n=e-Math.floor(e)),n}var Sd={formatters:bd};function Cd(e){e.set(`scale`,{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:`ticks`,clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(e,t)=>t.lineWidth,tickColor:(e,t)=>t.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:``,padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:``,padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Sd.formatters.values,minor:{},major:{},align:`center`,crossAlign:`near`,showLabelBackdrop:!1,backdropColor:`rgba(255, 255, 255, 0.75)`,backdropPadding:2}}),e.route(`scale.ticks`,`color`,``,`color`),e.route(`scale.grid`,`color`,``,`borderColor`),e.route(`scale.border`,`color`,``,`borderColor`),e.route(`scale.title`,`color`,``,`color`),e.describe(`scale`,{_fallback:!1,_scriptable:e=>!e.startsWith(`before`)&&!e.startsWith(`after`)&&e!==`callback`&&e!==`parser`,_indexable:e=>e!==`borderDash`&&e!==`tickBorderDash`&&e!==`dash`}),e.describe(`scales`,{_fallback:`scale`}),e.describe(`scale.ticks`,{_scriptable:e=>e!==`backdropPadding`&&e!==`callback`,_indexable:e=>e!==`backdropPadding`})}var wd=Object.create(null),Td=Object.create(null);function Ed(e,t){if(!t)return e;let n=t.split(`.`);for(let t=0,r=n.length;te.chart.platform.getDevicePixelRatio(),this.elements={},this.events=[`mousemove`,`mouseout`,`click`,`touchstart`,`touchmove`],this.font={family:`'Helvetica Neue', 'Helvetica', 'Arial', sans-serif`,size:12,style:`normal`,lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(e,t)=>fd(t.backgroundColor),this.hoverBorderColor=(e,t)=>fd(t.borderColor),this.hoverColor=(e,t)=>fd(t.color),this.indexAxis=`x`,this.interaction={mode:`nearest`,intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(e),this.apply(t)}set(e,t){return Dd(this,e,t)}get(e){return Ed(this,e)}describe(e,t){return Dd(Td,e,t)}override(e,t){return Dd(wd,e,t)}route(e,t,n,r){let i=Ed(this,e),a=Ed(this,n),o=`_`+t;Object.defineProperties(i,{[o]:{value:i[t],writable:!0},[t]:{enumerable:!0,get(){let e=this[o],t=a[r];return Kl(e)?Object.assign({},t,e):Yl(e,t)},set(e){this[o]=e}}})}apply(e){e.forEach(e=>e(this))}}({_scriptable:e=>!e.startsWith(`on`),_indexable:e=>e!==`events`,hover:{_fallback:`interaction`},interaction:{_scriptable:!1,_indexable:!1}},[hd,gd,Cd]);function kd(e){return!e||Wl(e.size)||Wl(e.family)?null:(e.style?e.style+` `:``)+(e.weight?e.weight+` `:``)+e.size+`px `+e.family}function Ad(e,t,n,r,i){let a=t[i];return a||(a=t[i]=e.measureText(i).width,n.push(i)),a>r&&(r=a),r}function jd(e,t,n,r){r||={};let i=r.data=r.data||{},a=r.garbageCollect=r.garbageCollect||[];r.font!==t&&(i=r.data={},a=r.garbageCollect=[],r.font=t),e.save(),e.font=t;let o=0,s=n.length,c,l,u,d,f;for(c=0;cn.length){for(c=0;c0&&e.stroke()}}function Id(e,t,n){return n||=.5,!t||e&&e.x>t.left-n&&e.xt.top-n&&e.y0&&a.strokeColor!==``,c,l;for(e.save(),e.font=i.string,Vd(e,a),c=0;c+e||0;function Xd(e,t){let n={},r=Kl(t),i=r?Object.keys(t):t,a=Kl(e)?r?n=>Yl(e[n],e[t[n]]):t=>e[t]:()=>e;for(let e of i)n[e]=Yd(a(e));return n}function Zd(e){return Xd(e,{top:`y`,right:`x`,bottom:`y`,left:`x`})}function Qd(e){return Xd(e,[`topLeft`,`topRight`,`bottomLeft`,`bottomRight`])}function $d(e){let t=Zd(e);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function ef(e,t){e||={},t||=Od.font;let n=Yl(e.size,t.size);typeof n==`string`&&(n=parseInt(n,10));let r=Yl(e.style,t.style);r&&!(``+r).match(qd)&&(console.warn(`Invalid font style specified: "`+r+`"`),r=void 0);let i={family:Yl(e.family,t.family),lineHeight:Jd(Yl(e.lineHeight,t.lineHeight),n),size:n,style:r,weight:Yl(e.weight,t.weight),string:``};return i.string=kd(i),i}function tf(e,t,n,r){let i=!0,a,o,s;for(a=0,o=e.length;an&&e===0?0:e+t;return{min:o(r,-Math.abs(a)),max:o(i,a)}}function rf(e,t){return Object.assign(Object.create(e),t)}function af(e,t=[``],n,r,i=()=>e[0]){let a=n||e;return r===void 0&&(r=xf(`_fallback`,e)),new Proxy({[Symbol.toStringTag]:`Object`,_cacheable:!0,_scopes:e,_rootScopes:a,_fallback:r,_getTarget:i,override:n=>af([n,...e],t,a,r)},{deleteProperty(t,n){return delete t[n],delete t._keys,delete e[0][n],!0},get(n,r){return uf(n,r,()=>bf(r,t,e,n))},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(e._scopes[0],t)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(e,t){return Sf(e).includes(t)},ownKeys(e){return Sf(e)},set(e,t,n){let r=e._storage||=i();return e[t]=r[t]=n,delete e._keys,!0}})}function of(e,t,n,r){let i={_cacheable:!1,_proxy:e,_context:t,_subProxy:n,_stack:new Set,_descriptors:sf(e,r),setContext:t=>of(e,t,n,r),override:i=>of(e.override(i),t,n,r)};return new Proxy(i,{deleteProperty(t,n){return delete t[n],delete e[n],!0},get(e,t,n){return uf(e,t,()=>df(e,t,n))},getOwnPropertyDescriptor(t,n){return t._descriptors.allKeys?Reflect.has(e,n)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,n)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(t,n){return Reflect.has(e,n)},ownKeys(){return Reflect.ownKeys(e)},set(t,n,r){return e[n]=r,delete t[n],!0}})}function sf(e,t={scriptable:!0,indexable:!0}){let{_scriptable:n=t.scriptable,_indexable:r=t.indexable,_allKeys:i=t.allKeys}=e;return{allKeys:i,scriptable:n,indexable:r,isScriptable:pu(n)?n:()=>n,isIndexable:pu(r)?r:()=>r}}var cf=(e,t)=>e?e+du(t):t,lf=(e,t)=>Kl(t)&&e!==`adapters`&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function uf(e,t,n){if(Object.prototype.hasOwnProperty.call(e,t)||t===`constructor`)return e[t];let r=n();return e[t]=r,r}function df(e,t,n){let{_proxy:r,_context:i,_subProxy:a,_descriptors:o}=e,s=r[t];return pu(s)&&o.isScriptable(t)&&(s=ff(t,s,e,n)),Gl(s)&&s.length&&(s=pf(t,s,e,o.isIndexable)),lf(t,s)&&(s=of(s,i,a&&a[t],o)),s}function ff(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_stack:s}=n;if(s.has(e))throw Error(`Recursion detected: `+Array.from(s).join(`->`)+`->`+e);s.add(e);let c=t(a,o||r);return s.delete(e),lf(e,c)&&(c=_f(i._scopes,i,e,c)),c}function pf(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_descriptors:s}=n;if(a.index!==void 0&&r(e))return t[a.index%t.length];if(Kl(t[0])){let n=t,r=i._scopes.filter(e=>e!==n);t=[];for(let c of n){let n=_f(r,i,e,c);t.push(of(n,a,o&&o[e],s))}}return t}function mf(e,t,n){return pu(e)?e(t,n):e}var hf=(e,t)=>e===!0?t:typeof e==`string`?uu(t,e):void 0;function gf(e,t,n,r,i){for(let a of t){let t=hf(n,a);if(t){e.add(t);let a=mf(t._fallback,n,i);if(a!==void 0&&a!==n&&a!==r)return a}else if(t===!1&&r!==void 0&&n!==r)return null}return!1}function _f(e,t,n,r){let i=t._rootScopes,a=mf(t._fallback,n,r),o=[...e,...i],s=new Set;s.add(r);let c=vf(s,o,n,a||n,r);return c===null||a!==void 0&&a!==n&&(c=vf(s,o,a,c,r),c===null)?!1:af(Array.from(s),[``],i,a,()=>yf(t,n,r))}function vf(e,t,n,r,i){for(;n;)n=gf(e,t,n,r,i);return n}function yf(e,t,n){let r=e._getTarget();t in r||(r[t]={});let i=r[t];return Gl(i)&&Kl(n)?n:i||{}}function bf(e,t,n,r){let i;for(let a of t)if(i=xf(cf(a,e),n),i!==void 0)return lf(e,i)?_f(n,r,e,i):i}function xf(e,t){for(let n of t){if(!n)continue;let t=n[e];if(t!==void 0)return t}}function Sf(e){let t=e._keys;return t||=e._keys=Cf(e._scopes),t}function Cf(e){let t=new Set;for(let n of e)for(let e of Object.keys(n).filter(e=>!e.startsWith(`_`)))t.add(e);return Array.from(t)}function wf(e,t,n,r){let{iScale:i}=e,{key:a=`r`}=this._parsing,o=Array(r),s,c,l,u;for(s=0,c=r;ste===`x`?`y`:`x`;function Of(e,t,n,r){let i=e.skip?t:e,a=t,o=n.skip?t:n,s=Lu(a,i),c=Lu(o,a),l=s/(s+c),u=c/(s+c);l=isNaN(l)?0:l,u=isNaN(u)?0:u;let d=r*l,f=r*u;return{previous:{x:a.x-d*(o.x-i.x),y:a.y-d*(o.y-i.y)},next:{x:a.x+f*(o.x-i.x),y:a.y+f*(o.y-i.y)}}}function kf(e,t,n){let r=e.length,i,a,o,s,c,l=Ef(e,0);for(let u=0;u!e.skip)),t.cubicInterpolationMode===`monotone`)jf(e,i);else{let n=r?e[e.length-1]:e[0];for(a=0,o=e.length;ae.ownerDocument.defaultView.getComputedStyle(e,null);function zf(e,t){return Rf(e).getPropertyValue(t)}var Bf=[`top`,`right`,`bottom`,`left`];function Vf(e,t,n){let r={};n=n?`-`+n:``;for(let i=0;i<4;i++){let a=Bf[i];r[a]=parseFloat(e[t+`-`+a+n])||0}return r.width=r.left+r.right,r.height=r.top+r.bottom,r}var Hf=(e,t,n)=>(e>0||t>0)&&(!n||!n.shadowRoot);function Uf(e,t){let n=e.touches,r=n&&n.length?n[0]:e,{offsetX:i,offsetY:a}=r,o=!1,s,c;if(Hf(i,a,e.target))s=i,c=a;else{let e=t.getBoundingClientRect();s=r.clientX-e.left,c=r.clientY-e.top,o=!0}return{x:s,y:c,box:o}}function Wf(e,t){if(`native`in e)return e;let{canvas:n,currentDevicePixelRatio:r}=t,i=Rf(n),a=i.boxSizing===`border-box`,o=Vf(i,`padding`),s=Vf(i,`border`,`width`),{x:c,y:l,box:u}=Uf(e,n),d=o.left+(u&&s.left),f=o.top+(u&&s.top),{width:p,height:m}=t;return a&&(p-=o.width+s.width,m-=o.height+s.height),{x:Math.round((c-d)/p*n.width/r),y:Math.round((l-f)/m*n.height/r)}}function Gf(e,t,n){let r,i;if(t===void 0||n===void 0){let a=e&&If(e);if(!a)t=e.clientWidth,n=e.clientHeight;else{let e=a.getBoundingClientRect(),o=Rf(a),s=Vf(o,`border`,`width`),c=Vf(o,`padding`);t=e.width-c.width-s.width,n=e.height-c.height-s.height,r=Lf(o.maxWidth,a,`clientWidth`),i=Lf(o.maxHeight,a,`clientHeight`)}}return{width:t,height:n,maxWidth:r||yu,maxHeight:i||yu}}var Kf=e=>Math.round(e*10)/10;function qf(e,t,n,r){let i=Rf(e),a=Vf(i,`margin`),o=Lf(i.maxWidth,e,`clientWidth`)||yu,s=Lf(i.maxHeight,e,`clientHeight`)||yu,c=Gf(e,t,n),{width:l,height:u}=c;if(i.boxSizing===`content-box`){let e=Vf(i,`border`,`width`),t=Vf(i,`padding`);l-=t.width+e.width,u-=t.height+e.height}return l=Math.max(0,l-a.width),u=Math.max(0,r?l/r:u-a.height),l=Kf(Math.min(l,o,c.maxWidth)),u=Kf(Math.min(u,s,c.maxHeight)),l&&!u&&(u=Kf(l/2)),(t!==void 0||n!==void 0)&&r&&c.height&&u>c.height&&(u=c.height,l=Kf(Math.floor(u*r))),{width:l,height:u}}function Jf(e,t,n){let r=t||1,i=Kf(e.height*r),a=Kf(e.width*r);e.height=Kf(e.height),e.width=Kf(e.width);let o=e.canvas;return o.style&&(n||!o.style.height&&!o.style.width)&&(o.style.height=`${e.height}px`,o.style.width=`${e.width}px`),e.currentDevicePixelRatio!==r||o.height!==i||o.width!==a?(e.currentDevicePixelRatio=r,o.height=i,o.width=a,e.ctx.setTransform(r,0,0,r,0,0),!0):!1}var Yf=function(){let e=!1;try{let t={get passive(){return e=!0,!1}};Ff()&&(window.addEventListener(`test`,null,t),window.removeEventListener(`test`,null,t))}catch{}return e}();function Xf(e,t){let n=zf(e,t),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?+r[1]:void 0}function Zf(e,t,n,r){return{x:e.x+n*(t.x-e.x),y:e.y+n*(t.y-e.y)}}function Qf(e,t,n,r){return{x:e.x+n*(t.x-e.x),y:r===`middle`?n<.5?e.y:t.y:r===`after`?n<1?e.y:t.y:n>0?t.y:e.y}}function $f(e,t,n,r){let i={x:e.cp2x,y:e.cp2y},a={x:t.cp1x,y:t.cp1y},o=Zf(e,i,n),s=Zf(i,a,n),c=Zf(a,t,n);return Zf(Zf(o,s,n),Zf(s,c,n),n)}var ep=function(e,t){return{x(n){return e+e+t-n},setWidth(e){t=e},textAlign(e){return e===`center`?e:e===`right`?`left`:`right`},xPlus(e,t){return e-t},leftForLtr(e,t){return e-t}}},tp=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,t){return e+t},leftForLtr(e,t){return e}}};function np(e,t,n){return e?ep(t,n):tp()}function rp(e,t){let n,r;(t===`ltr`||t===`rtl`)&&(n=e.canvas.style,r=[n.getPropertyValue(`direction`),n.getPropertyPriority(`direction`)],n.setProperty(`direction`,t,`important`),e.prevTextDirection=r)}function ip(e,t){t!==void 0&&(delete e.prevTextDirection,e.canvas.style.setProperty(`direction`,t[0],t[1]))}function ap(e){return e===`angle`?{between:Bu,compare:Ru,normalize:zu}:{between:Uu,compare:(e,t)=>e-t,normalize:e=>e}}function op({start:e,end:t,count:n,loop:r,style:i}){return{start:e%n,end:t%n,loop:r&&(t-e+1)%n===0,style:i}}function sp(e,t,n){let{property:r,start:i,end:a}=n,{between:o,normalize:s}=ap(r),c=t.length,{start:l,end:u,loop:d}=e,f,p;if(d){for(l+=c,u+=c,f=0,p=c;fc(i,y,_)&&s(i,y)!==0,x=()=>s(a,_)===0||c(a,y,_),S=()=>h||b(),C=()=>!h||x();for(let e=u,n=u;e<=d;++e)v=t[e%o],!v.skip&&(_=l(v[r]),_!==y&&(h=c(_,i,a),g===null&&S()&&(g=s(_,i)===0?e:n),g!==null&&C()&&(m.push(op({start:g,end:e,loop:f,count:o,style:p})),g=null),n=e,y=_));return g!==null&&m.push(op({start:g,end:d,loop:f,count:o,style:p})),m}function lp(e,t){let n=[],r=e.segments;for(let i=0;ii&&e[a%t].skip;)a--;return a%=t,{start:i,end:a}}function dp(e,t,n,r){let i=e.length,a=[],o=t,s=e[t],c;for(c=t+1;c<=n;++c){let n=e[c%i];n.skip||n.stop?s.skip||(r=!1,a.push({start:t%i,end:(c-1)%i,loop:r}),t=o=n.stop?c:null):(o=c,s.skip&&(t=c)),s=n}return o!==null&&a.push({start:t%i,end:o%i,loop:r}),a}function fp(e,t){let n=e.points,r=e.options.spanGaps,i=n.length;if(!i)return[];let a=!!e._loop,{start:o,end:s}=up(n,i,a,r);return r===!0?pp(e,[{start:o,end:s,loop:a}],n,t):pp(e,dp(n,o,sr({chart:e,initial:t.initial,numSteps:a,currentStep:Math.min(n-t.start,a)}))}_refresh(){this._request||=(this._running=!0,Qu.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let t=0;this._charts.forEach((n,r)=>{if(!n.running||!n.items.length)return;let i=n.items,a=i.length-1,o=!1,s;for(;a>=0;--a)s=i[a],s._active?(s._total>n.duration&&(n.duration=s._total),s.tick(e),o=!0):(i[a]=i[i.length-1],i.pop());o&&(r.draw(),this._notify(r,n,e,`progress`)),i.length||(n.running=!1,this._notify(r,n,e,`complete`),n.initial=!1),t+=i.length}),this._lastDate=e,t===0&&(this._running=!1)}_getAnims(e){let t=this._charts,n=t.get(e);return n||(n={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},t.set(e,n)),n}listen(e,t,n){this._getAnims(e).listeners[t].push(n)}add(e,t){!t||!t.length||this._getAnims(e).items.push(...t)}has(e){return this._getAnims(e).items.length>0}start(e){let t=this._charts.get(e);t&&(t.running=!0,t.start=Date.now(),t.duration=t.items.reduce((e,t)=>Math.max(e,t._duration),0),this._refresh())}running(e){if(!this._running)return!1;let t=this._charts.get(e);return!(!t||!t.running||!t.items.length)}stop(e){let t=this._charts.get(e);if(!t||!t.items.length)return;let n=t.items,r=n.length-1;for(;r>=0;--r)n[r].cancel();t.items=[],this._notify(e,t,Date.now(),`complete`)}remove(e){return this._charts.delete(e)}},xp=`transparent`,Sp={boolean(e,t,n){return n>.5?t:e},color(e,t,n){let r=dd(e||xp),i=r.valid&&dd(t||xp);return i&&i.valid?i.mix(r,n).hexString():t},number(e,t,n){return e+(t-e)*n}},Cp=class{constructor(e,t,n,r){let i=t[n];r=tf([e.to,r,i,e.from]);let a=tf([e.from,i,r]);this._active=!0,this._fn=e.fn||Sp[e.type||typeof a],this._easing=ld[e.easing]||ld.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=t,this._prop=n,this._from=a,this._to=r,this._promises=void 0}active(){return this._active}update(e,t,n){if(this._active){this._notify(!1);let r=this._target[this._prop],i=n-this._start,a=this._duration-i;this._start=n,this._duration=Math.floor(Math.max(a,e.duration)),this._total+=i,this._loop=!!e.loop,this._to=tf([e.to,t,r,e.from]),this._from=tf([e.from,r,t])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){let t=e-this._start,n=this._duration,r=this._prop,i=this._from,a=this._loop,o=this._to,s;if(this._active=i!==o&&(a||t1?2-s:s,s=this._easing(Math.min(1,Math.max(0,s))),this._target[r]=this._fn(i,o,s)}wait(){let e=this._promises||=[];return new Promise((t,n)=>{e.push({res:t,rej:n})})}_notify(e){let t=e?`res`:`rej`,n=this._promises||[];for(let e=0;e{let i=e[r];if(!Kl(i))return;let a={};for(let e of t)a[e]=i[e];(Gl(i.properties)&&i.properties||[r]).forEach(e=>{(e===r||!n.has(e))&&n.set(e,a)})})}_animateOptions(e,t){let n=t.options,r=Ep(e,n);if(!r)return[];let i=this._createAnimations(r,n);return n.$shared&&Tp(e.options.$animations,n).then(()=>{e.options=n},()=>{}),i}_createAnimations(e,t){let n=this._properties,r=[],i=e.$animations||={},a=Object.keys(t),o=Date.now(),s;for(s=a.length-1;s>=0;--s){let c=a[s];if(c.charAt(0)===`$`)continue;if(c===`options`){r.push(...this._animateOptions(e,t));continue}let l=t[c],u=i[c],d=n.get(c);if(u)if(d&&u.active()){u.update(d,l,o);continue}else u.cancel();if(!d||!d.duration){e[c]=l;continue}i[c]=u=new Cp(d,e,c,l),r.push(u)}return r}update(e,t){if(this._properties.size===0){Object.assign(e,t);return}let n=this._createAnimations(e,t);if(n.length)return bp.add(this._chart,n),!0}};function Tp(e,t){let n=[],r=Object.keys(t);for(let t=0;t0||!n&&t<0)return i.index}return null}function Rp(e,t){let{chart:n,_cachedMeta:r}=e,i=n._stacks||={},{iScale:a,vScale:o,index:s}=r,c=a.axis,l=o.axis,u=Pp(a,o,r),d=t.length,f;for(let e=0;en[e].axis===t).shift()}function Bp(e,t){return rf(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:`default`,type:`dataset`})}function Vp(e,t,n){return rf(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:n,index:t,mode:`default`,type:`data`})}function Hp(e,t){let n=e.controller.index,r=e.vScale&&e.vScale.axis;if(r){t||=e._parsed;for(let e of t){let t=e._stacks;if(!t||t[r]===void 0||t[r][n]===void 0)return;delete t[r][n],t[r]._visualValues!==void 0&&t[r]._visualValues[n]!==void 0&&delete t[r]._visualValues[n]}}}var Up=e=>e===`reset`||e===`none`,Wp=(e,t)=>t?e:Object.assign({},e),Gp=(e,t,n)=>e&&!t.hidden&&t._stacked&&{keys:Ap(n,!0),values:null},Kp=class{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(e,t){this.chart=e,this._ctx=e.ctx,this.index=t,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){let e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=Np(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled(`filler`)&&console.warn(`Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options`)}updateIndex(e){this.index!==e&&Hp(this._cachedMeta),this.index=e}linkScales(){let e=this.chart,t=this._cachedMeta,n=this.getDataset(),r=(e,t,n,r)=>e===`x`?t:e===`r`?r:n,i=t.xAxisID=Yl(n.xAxisID,zp(e,`x`)),a=t.yAxisID=Yl(n.yAxisID,zp(e,`y`)),o=t.rAxisID=Yl(n.rAxisID,zp(e,`r`)),s=t.indexAxis,c=t.iAxisID=r(s,i,a,o),l=t.vAxisID=r(s,a,i,o);t.xScale=this.getScaleForId(i),t.yScale=this.getScaleForId(a),t.rScale=this.getScaleForId(o),t.iScale=this.getScaleForId(c),t.vScale=this.getScaleForId(l)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){let t=this._cachedMeta;return e===t.iScale?t.vScale:t.iScale}reset(){this._update(`reset`)}_destroy(){let e=this._cachedMeta;this._data&&Xu(this._data,this),e._stacked&&Hp(e)}_dataCheck(){let e=this.getDataset(),t=e.data||=[],n=this._data;if(Kl(t)){let e=this._cachedMeta;this._data=Mp(t,e)}else if(n!==t){if(n){Xu(n,this);let e=this._cachedMeta;Hp(e),e._parsed=[]}t&&Object.isExtensible(t)&&Yu(t,this),this._syncList=[],this._data=t}}addElements(){let e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){let t=this._cachedMeta,n=this.getDataset(),r=!1;this._dataCheck();let i=t._stacked;t._stacked=Np(t.vScale,t),t.stack!==n.stack&&(r=!0,Hp(t),t.stack=n.stack),this._resyncElements(e),(r||i!==t._stacked)&&(Rp(this,t._parsed),t._stacked=Np(t.vScale,t))}configure(){let e=this.chart.config,t=e.datasetScopeKeys(this._type),n=e.getOptionScopes(this.getDataset(),t,!0);this.options=e.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,t){let{_cachedMeta:n,_data:r}=this,{iScale:i,_stacked:a}=n,o=i.axis,s=e===0&&t===r.length||n._sorted,c=e>0&&n._parsed[e-1],l,u,d;if(this._parsing===!1)n._parsed=r,n._sorted=!0,d=r;else{d=Gl(r[e])?this.parseArrayData(n,r,e,t):Kl(r[e])?this.parseObjectData(n,r,e,t):this.parsePrimitiveData(n,r,e,t);let i=()=>u[o]===null||c&&u[o]t||u=0;--d)if(!p()){this.updateRangeFromParsed(c,e,f,s);break}}return c}getAllParsedValues(e){let t=this._cachedMeta._parsed,n=[],r,i,a;for(r=0,i=t.length;r=0&&ethis.getContext(n,r,t),u);return p.$shared&&(p.$shared=s,i[a]=Object.freeze(Wp(p,s))),p}_resolveAnimations(e,t,n){let r=this.chart,i=this._cachedDataOpts,a=`animation-${t}`,o=i[a];if(o)return o;let s;if(r.options.animation!==!1){let r=this.chart.config,i=r.datasetAnimationScopeKeys(this._type,t),a=r.getOptionScopes(this.getDataset(),i);s=r.createResolver(a,this.getContext(e,n,t))}let c=new wp(r,s&&s.animations);return s&&s._cacheable&&(i[a]=Object.freeze(c)),c}getSharedOptions(e){if(e.$shared)return this._sharedOptions||=Object.assign({},e)}includeOptions(e,t){return!t||Up(e)||this.chart._animationsDisabled}_getSharedOptions(e,t){let n=this.resolveDataElementOptions(e,t),r=this._sharedOptions,i=this.getSharedOptions(n),a=this.includeOptions(t,i)||i!==r;return this.updateSharedOptions(i,t,n),{sharedOptions:i,includeOptions:a}}updateElement(e,t,n,r){Up(r)?Object.assign(e,n):this._resolveAnimations(t,r).update(e,n)}updateSharedOptions(e,t,n){e&&!Up(t)&&this._resolveAnimations(void 0,t).update(e,n)}_setStyle(e,t,n,r){e.active=r;let i=this.getStyle(t,r);this._resolveAnimations(t,n,r).update(e,{options:!r&&this.getSharedOptions(i)||i})}removeHoverStyle(e,t,n){this._setStyle(e,n,`active`,!1)}setHoverStyle(e,t,n){this._setStyle(e,n,`active`,!0)}_removeDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!1)}_setDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!0)}_resyncElements(e){let t=this._data,n=this._cachedMeta.data;for(let[e,t,n]of this._syncList)this[e](t,n);this._syncList=[];let r=n.length,i=t.length,a=Math.min(i,r);a&&this.parse(0,a),i>r?this._insertElements(r,i-r,e):i{for(e.length+=t,o=e.length-1;o>=a;o--)e[o]=e[o-t]};for(s(i),o=e;oe-t))}return e._cache.$bar}function Jp(e){let t=e.iScale,n=qp(t,e.type),r=t._length,i,a,o,s,c=()=>{o===32767||o===-32768||(fu(s)&&(r=Math.min(r,Math.abs(o-s)||r)),s=o)};for(i=0,a=n.length;i0?i[e-1]:null,s=eMath.abs(s)&&(c=s,l=o),t[n.axis]=l,t._custom={barStart:c,barEnd:l,start:i,end:a,min:o,max:s}}function Qp(e,t,n,r){return Gl(e)?Zp(e,t,n,r):t[n.axis]=n.parse(e,r),t}function $p(e,t,n,r){let i=e.iScale,a=e.vScale,o=i.getLabels(),s=i===a,c=[],l,u,d,f;for(l=n,u=n+r;l=n?1:-1):Tu(e)}function nm(e){let t,n,r,i,a;return e.horizontal?(t=e.base>e.x,n=`left`,r=`right`):(t=e.basee.controller.options.grouped),i=n.options.stacked,a=[],o=this._cachedMeta.controller.getParsed(t),s=o&&o[n.axis],c=e=>{let t=e._parsed.find(e=>e[n.axis]===s),r=t&&t[e.vScale.axis];if(Wl(r)||isNaN(r))return!0};for(let n of r)if(!(t!==void 0&&c(n))&&((i===!1||a.indexOf(n.stack)===-1||i===void 0&&n.stack===void 0)&&a.push(n.stack),n.index===e))break;return a.length||a.push(void 0),a}_getStackCount(e){return this._getStacks(void 0,e).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){let e=this.chart.scales,t=this.chart.options.indexAxis;return Object.keys(e).filter(n=>e[n].axis===t).shift()}_getAxis(){let e={},t=this.getFirstScaleIdForIndexAxis();for(let n of this.chart.data.datasets)e[Yl(this.chart.options.indexAxis===`x`?n.xAxisID:n.yAxisID,t)]=!0;return Object.keys(e)}_getStackIndex(e,t,n){let r=this._getStacks(e,n),i=t===void 0?-1:r.indexOf(t);return i===-1?r.length-1:i}_getRuler(){let e=this.options,t=this._cachedMeta,n=t.iScale,r=[],i,a;for(i=0,a=t.data.length;i=0;--n)t=Math.max(t,e[n].size(this.resolveDataElementOptions(n))/2);return t>0&&t}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart.data.labels||[],{xScale:r,yScale:i}=t,a=this.getParsed(e),o=r.getLabelForValue(a.x),s=i.getLabelForValue(a.y),c=a._custom;return{label:n[e]||``,value:`(`+o+`, `+s+(c?`, `+c:``)+`)`}}update(e){let t=this._cachedMeta.data;this.updateElements(t,0,t.length,e)}updateElements(e,t,n,r){let i=r===`reset`,{iScale:a,vScale:o}=this._cachedMeta,{sharedOptions:s,includeOptions:c}=this._getSharedOptions(t,r),l=a.axis,u=o.axis;for(let d=t;dBu(e,s,c,!0)?1:Math.max(t,t*n,r,r*n),m=(e,t,r)=>Bu(e,s,c,!0)?-1:Math.min(t,t*n,r,r*n),h=p(0,l,d),g=p(xu,u,f),_=m(gu,l,d),v=m(gu+xu,u,f);r=(h-_)/2,i=(g-v)/2,a=-(h+_)/2,o=-(g+v)/2}return{ratioX:r,ratioY:i,offsetX:a,offsetY:o}}var dm=class extends Kp{static id=`doughnut`;static defaults={datasetElementType:!1,dataElementType:`arc`,animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:`number`,properties:[`circumference`,`endAngle`,`innerRadius`,`outerRadius`,`startAngle`,`x`,`y`,`offset`,`borderWidth`,`spacing`]}},cutout:`50%`,rotation:0,circumference:360,radius:`100%`,spacing:0,indexAxis:`r`};static descriptors={_scriptable:e=>e!==`spacing`,_indexable:e=>e!==`spacing`&&!e.startsWith(`borderDash`)&&!e.startsWith(`hoverBorderDash`)};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){let t=e.data,{labels:{pointStyle:n,textAlign:r,color:i,useBorderRadius:a,borderRadius:o}}=e.legend.options;return t.labels.length&&t.datasets.length?t.labels.map((t,s)=>{let c=e.getDatasetMeta(0).controller.getStyle(s);return{text:t,fillStyle:c.backgroundColor,fontColor:i,hidden:!e.getDataVisibility(s),lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:c.borderWidth,strokeStyle:c.borderColor,textAlign:r,pointStyle:n,borderRadius:a&&(o||c.borderRadius),index:s}}):[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}}}};constructor(e,t){super(e,t),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,t){let n=this.getDataset().data,r=this._cachedMeta;if(this._parsing===!1)r._parsed=n;else{let i=e=>+n[e];if(Kl(n[e])){let{key:e=`value`}=this._parsing;i=t=>+uu(n[t],e)}let a,o;for(a=e,o=e+t;a0&&!isNaN(e)?Math.abs(e)/t*_u:0}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart,r=n.data.labels||[],i=yd(t._parsed[e],n.options.locale);return{label:r[e]||``,value:i}}getMaxBorderWidth(e){let t=0,n=this.chart,r,i,a,o,s;if(!e){for(r=0,i=n.data.datasets.length;r0&&this.getParsed(t-1);for(let n=0;n=_){v.skip=!0;continue}let b=this.getParsed(n),x=Wl(b[f]),S=v[d]=a.getPixelForValue(b[d],n),C=v[f]=i||x?o.getBasePixel():o.getPixelForValue(s?this.applyStack(o,b,s):b[f],n);v.skip=isNaN(S)||isNaN(C)||x,v.stop=n>0&&Math.abs(b[d]-y[d])>h,m&&(v.parsed=b,v.raw=c.data[n]),u&&(v.options=l||this.resolveDataElementOptions(n,p.active?`active`:r)),g||this.updateElement(p,n,v,r),y=b}}getMaxOverflow(){let e=this._cachedMeta,t=e.dataset,n=t.options&&t.options.borderWidth||0,r=e.data||[];if(!r.length)return n;let i=r[0].size(this.resolveDataElementOptions(0)),a=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(n,i,a)/2}draw(){let e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}},pm=class extends Kp{static id=`polarArea`;static defaults={dataElementType:`arc`,animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:`number`,properties:[`x`,`y`,`startAngle`,`endAngle`,`innerRadius`,`outerRadius`]}},indexAxis:`r`,startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){let t=e.data;if(t.labels.length&&t.datasets.length){let{labels:{pointStyle:n,color:r}}=e.legend.options;return t.labels.map((t,i)=>{let a=e.getDatasetMeta(0).controller.getStyle(i);return{text:t,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,fontColor:r,lineWidth:a.borderWidth,pointStyle:n,hidden:!e.getDataVisibility(i),index:i}})}return[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}}},scales:{r:{type:`radialLinear`,angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(e,t){super(e,t),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){let t=this._cachedMeta,n=this.chart,r=n.data.labels||[],i=yd(t._parsed[e].r,n.options.locale);return{label:r[e]||``,value:i}}parseObjectData(e,t,n,r){return wf.bind(this)(e,t,n,r)}update(e){let t=this._cachedMeta.data;this._updateRadius(),this.updateElements(t,0,t.length,e)}getMinMax(){let e=this._cachedMeta,t={min:1/0,max:-1/0};return e.data.forEach((e,n)=>{let r=this.getParsed(n).r;!isNaN(r)&&this.chart.getDataVisibility(n)&&(rt.max&&(t.max=r))}),t}_updateRadius(){let e=this.chart,t=e.chartArea,n=e.options,r=Math.min(t.right-t.left,t.bottom-t.top),i=Math.max(r/2,0),a=(i-Math.max(n.cutoutPercentage?i/100*n.cutoutPercentage:1,0))/e.getVisibleDatasetCount();this.outerRadius=i-a*this.index,this.innerRadius=this.outerRadius-a}updateElements(e,t,n,r){let i=r===`reset`,a=this.chart,o=a.options.animation,s=this._cachedMeta.rScale,c=s.xCenter,l=s.yCenter,u=s.getIndexAngle(0)-.5*gu,d=u,f,p=360/this.countVisibleElements();for(f=0;f{!isNaN(this.getParsed(n).r)&&this.chart.getDataVisibility(n)&&t++}),t}_computeAngle(e,t,n){return this.chart.getDataVisibility(e)?Nu(this.resolveDataElementOptions(e,t).angle||n):0}},mm=Object.freeze({__proto__:null,BarController:cm,BubbleController:lm,DoughnutController:dm,LineController:fm,PieController:class extends dm{static id=`pie`;static defaults={cutout:0,rotation:0,circumference:360,radius:`100%`}},PolarAreaController:pm,RadarController:class extends Kp{static id=`radar`;static defaults={datasetElementType:`line`,dataElementType:`point`,indexAxis:`r`,showLine:!0,elements:{line:{fill:`start`}}};static overrides={aspectRatio:1,scales:{r:{type:`radialLinear`}}};getLabelAndValue(e){let t=this._cachedMeta.vScale,n=this.getParsed(e);return{label:t.getLabels()[e],value:``+t.getLabelForValue(n[t.axis])}}parseObjectData(e,t,n,r){return wf.bind(this)(e,t,n,r)}update(e){let t=this._cachedMeta,n=t.dataset,r=t.data||[],i=t.iScale.getLabels();if(n.points=r,e!==`resize`){let t=this.resolveDatasetElementOptions(e);this.options.showLine||(t.borderWidth=0);let a={_loop:!0,_fullLoop:i.length===r.length,options:t};this.updateElement(n,void 0,a,e)}this.updateElements(r,0,r.length,e)}updateElements(e,t,n,r){let i=this._cachedMeta.rScale,a=r===`reset`;for(let o=t;o0&&this.getParsed(t-1);for(let l=t;l0&&Math.abs(n[f]-v[f])>g,h&&(m.parsed=n,m.raw=c.data[l]),d&&(m.options=u||this.resolveDataElementOptions(l,t.active?`active`:r)),_||this.updateElement(t,l,m,r),v=n}this.updateSharedOptions(u,r,l)}getMaxOverflow(){let e=this._cachedMeta,t=e.data||[];if(!this.options.showLine){let e=0;for(let n=t.length-1;n>=0;--n)e=Math.max(e,t[n].size(this.resolveDataElementOptions(n))/2);return e>0&&e}let n=e.dataset,r=n.options&&n.options.borderWidth||0;if(!t.length)return r;let i=t[0].size(this.resolveDataElementOptions(0)),a=t[t.length-1].size(this.resolveDataElementOptions(t.length-1));return Math.max(r,i,a)/2}}});function hm(){throw Error(`This method is not implemented: Check that a complete date adapter is provided.`)}var gm={_date:class e{static override(t){Object.assign(e.prototype,t)}options;constructor(e){this.options=e||{}}init(){}formats(){return hm()}parse(){return hm()}format(){return hm()}add(){return hm()}diff(){return hm()}startOf(){return hm()}endOf(){return hm()}}};function _m(e,t,n,r){let{controller:i,data:a,_sorted:o}=e,s=i._cachedMeta.iScale,c=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null;if(s&&t===s.axis&&t!==`r`&&o&&a.length){let o=s._reversePixels?Ku:Gu;if(!r){let r=o(a,t,n);if(c){let{vScale:t}=i._cachedMeta,{_parsed:n}=e,a=n.slice(0,r.lo+1).reverse().findIndex(e=>!Wl(e[t.axis]));r.lo-=Math.max(0,a);let o=n.slice(r.hi).findIndex(e=>!Wl(e[t.axis]));r.hi+=Math.max(0,o)}return r}else if(i._sharedOptions){let e=a[0],r=typeof e.getRange==`function`&&e.getRange(t);if(r){let e=o(a,t,n-r),i=o(a,t,n+r);return{lo:e.lo,hi:i.hi}}}}return{lo:0,hi:a.length-1}}function vm(e,t,n,r,i){let a=e.getSortedVisibleDatasetMetas(),o=n[t];for(let e=0,n=a.length;e{e[o]&&e[o](t[n],i)&&(a.push({element:e,datasetIndex:r,index:c}),s||=e.inRange(t.x,t.y,i))}),r&&!s?[]:a}var Tm={evaluateInteractionItems:vm,modes:{index(e,t,n,r){let i=Wf(t,e),a=n.axis||`x`,o=n.includeInvisible||!1,s=n.intersect?bm(e,i,a,r,o):Cm(e,i,a,!1,r,o),c=[];return s.length?(e.getSortedVisibleDatasetMetas().forEach(e=>{let t=s[0].index,n=e.data[t];n&&!n.skip&&c.push({element:n,datasetIndex:e.index,index:t})}),c):[]},dataset(e,t,n,r){let i=Wf(t,e),a=n.axis||`xy`,o=n.includeInvisible||!1,s=n.intersect?bm(e,i,a,r,o):Cm(e,i,a,!1,r,o);if(s.length>0){let t=s[0].datasetIndex,n=e.getDatasetMeta(t).data;s=[];for(let e=0;ee.pos===t)}function Om(e,t){return e.filter(e=>Em.indexOf(e.pos)===-1&&e.box.axis===t)}function km(e,t){return e.sort((e,n)=>{let r=t?n:e,i=t?e:n;return r.weight===i.weight?r.index-i.index:r.weight-i.weight})}function Am(e){let t=[],n,r,i,a,o,s;for(n=0,r=(e||[]).length;ne.box.fullSize),!0),r=km(Dm(t,`left`),!0),i=km(Dm(t,`right`)),a=km(Dm(t,`top`),!0),o=km(Dm(t,`bottom`)),s=Om(t,`x`),c=Om(t,`y`);return{fullSize:n,leftAndTop:r.concat(a),rightAndBottom:i.concat(c).concat(o).concat(s),chartArea:Dm(t,`chartArea`),vertical:r.concat(i).concat(c),horizontal:a.concat(o).concat(s)}}function Pm(e,t,n,r){return Math.max(e[n],t[n])+Math.max(e[r],t[r])}function Fm(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function Im(e,t,n,r){let{pos:i,box:a}=n,o=e.maxPadding;if(!Kl(i)){n.size&&(e[i]-=n.size);let t=r[n.stack]||{size:0,count:1};t.size=Math.max(t.size,n.horizontal?a.height:a.width),n.size=t.size/t.count,e[i]+=n.size}a.getPadding&&Fm(o,a.getPadding());let s=Math.max(0,t.outerWidth-Pm(o,e,`left`,`right`)),c=Math.max(0,t.outerHeight-Pm(o,e,`top`,`bottom`)),l=s!==e.w,u=c!==e.h;return e.w=s,e.h=c,n.horizontal?{same:l,other:u}:{same:u,other:l}}function Lm(e){let t=e.maxPadding;function n(n){let r=Math.max(t[n]-e[n],0);return e[n]+=r,r}e.y+=n(`top`),e.x+=n(`left`),n(`right`),n(`bottom`)}function Rm(e,t){let n=t.maxPadding;function r(e){let r={left:0,top:0,right:0,bottom:0};return e.forEach(e=>{r[e]=Math.max(t[e],n[e])}),r}return r(e?[`left`,`right`]:[`top`,`bottom`])}function zm(e,t,n,r){let i=[],a,o,s,c,l,u;for(a=0,o=e.length,l=0;a{typeof e.beforeLayout==`function`&&e.beforeLayout()});let u=c.reduce((e,t)=>t.box.options&&t.box.options.display===!1?e:e+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:n,padding:i,availableWidth:a,availableHeight:o,vBoxMaxWidth:a/2/u,hBoxMaxHeight:o/2}),f=Object.assign({},i);Fm(f,$d(r));let p=Object.assign({maxPadding:f,w:a,h:o,x:i.left,y:i.top},i),m=Mm(c.concat(l),d);zm(s.fullSize,p,d,m),zm(c,p,d,m),zm(l,p,d,m)&&zm(c,p,d,m),Lm(p),Vm(s.leftAndTop,p,d,m),p.x+=p.w,p.y+=p.h,Vm(s.rightAndBottom,p,d,m),e.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},$l(s.chartArea,t=>{let n=t.box;Object.assign(n,e.chartArea),n.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}},Um=class{acquireContext(e,t){}releaseContext(e){return!1}addEventListener(e,t,n){}removeEventListener(e,t,n){}getDevicePixelRatio(){return 1}getMaximumSize(e,t,n,r){return t=Math.max(0,t||e.width),n||=e.height,{width:t,height:Math.max(0,r?Math.floor(t/r):n)}}isAttached(e){return!0}updateConfig(e){}},Wm=class extends Um{acquireContext(e){return e&&e.getContext&&e.getContext(`2d`)||null}updateConfig(e){e.options.animation=!1}},Gm=`$chartjs`,Km={touchstart:`mousedown`,touchmove:`mousemove`,touchend:`mouseup`,pointerenter:`mouseenter`,pointerdown:`mousedown`,pointermove:`mousemove`,pointerup:`mouseup`,pointerleave:`mouseout`,pointerout:`mouseout`},qm=e=>e===null||e===``;function Jm(e,t){let n=e.style,r=e.getAttribute(`height`),i=e.getAttribute(`width`);if(e[Gm]={initial:{height:r,width:i,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||`block`,n.boxSizing=n.boxSizing||`border-box`,qm(i)){let t=Xf(e,`width`);t!==void 0&&(e.width=t)}if(qm(r))if(e.style.height===``)e.height=e.width/(t||2);else{let t=Xf(e,`height`);t!==void 0&&(e.height=t)}return e}var Ym=Yf?{passive:!0}:!1;function Xm(e,t,n){e&&e.addEventListener(t,n,Ym)}function Zm(e,t,n){e&&e.canvas&&e.canvas.removeEventListener(t,n,Ym)}function Qm(e,t){let n=Km[e.type]||e.type,{x:r,y:i}=Wf(e,t);return{type:n,chart:t,native:e,x:r===void 0?null:r,y:i===void 0?null:i}}function $m(e,t){for(let n of e)if(n===t||n.contains(t))return!0}function eh(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=$m(n.addedNodes,r),t&&=!$m(n.removedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}function th(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=$m(n.removedNodes,r),t&&=!$m(n.addedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}var nh=new Map,rh=0;function ih(){let e=window.devicePixelRatio;e!==rh&&(rh=e,nh.forEach((t,n)=>{n.currentDevicePixelRatio!==e&&t()}))}function ah(e,t){nh.size||window.addEventListener(`resize`,ih),nh.set(e,t)}function oh(e){nh.delete(e),nh.size||window.removeEventListener(`resize`,ih)}function sh(e,t,n){let r=e.canvas,i=r&&If(r);if(!i)return;let a=$u((e,t)=>{let r=i.clientWidth;n(e,t),r{let t=e[0],n=t.contentRect.width,r=t.contentRect.height;n===0&&r===0||a(n,r)});return o.observe(i),ah(e,a),o}function ch(e,t,n){n&&n.disconnect(),t===`resize`&&oh(e)}function lh(e,t,n){let r=e.canvas,i=$u(t=>{e.ctx!==null&&n(Qm(t,e))},e);return Xm(r,t,i),i}var uh=class extends Um{acquireContext(e,t){let n=e&&e.getContext&&e.getContext(`2d`);return n&&n.canvas===e?(Jm(e,t),n):null}releaseContext(e){let t=e.canvas;if(!t[Gm])return!1;let n=t[Gm].initial;[`height`,`width`].forEach(e=>{let r=n[e];Wl(r)?t.removeAttribute(e):t.setAttribute(e,r)});let r=n.style||{};return Object.keys(r).forEach(e=>{t.style[e]=r[e]}),t.width=t.width,delete t[Gm],!0}addEventListener(e,t,n){this.removeEventListener(e,t);let r=e.$proxies||={};r[t]=({attach:eh,detach:th,resize:sh}[t]||lh)(e,t,n)}removeEventListener(e,t){let n=e.$proxies||={},r=n[t];r&&(({attach:ch,detach:ch,resize:ch}[t]||Zm)(e,t,r),n[t]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,t,n,r){return qf(e,t,n,r)}isAttached(e){let t=e&&If(e);return!!(t&&t.isConnected)}};function dh(e){return!Ff()||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas?Wm:uh}var fh=class{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(e){let{x:t,y:n}=this.getProps([`x`,`y`],e);return{x:t,y:n}}hasValue(){return Au(this.x)&&Au(this.y)}getProps(e,t){let n=this.$animations;if(!t||!n)return this;let r={};return e.forEach(e=>{r[e]=n[e]&&n[e].active()?n[e]._to:this[e]}),r}};function ph(e,t){let n=e.options.ticks,r=mh(e),i=Math.min(n.maxTicksLimit||r,r),a=n.major.enabled?gh(t):[],o=a.length,s=a[0],c=a[o-1],l=[];if(o>i)return _h(t,l,a,o/i),l;let u=hh(a,t,i);if(o>0){let e,n,r=o>1?Math.round((c-s)/(o-1)):null;for(vh(t,l,u,Wl(r)?0:s-r,s),e=0,n=o-1;ei)return t}return Math.max(i,1)}function gh(e){let t=[],n,r;for(n=0,r=e.length;ne===`left`?`right`:e===`right`?`left`:e,xh=(e,t,n)=>t===`top`||t===`left`?e[t]+n:e[t]-n,Sh=(e,t)=>Math.min(t||e,e);function Ch(e,t){let n=[],r=e.length/t,i=e.length,a=0;for(;ao+s)))return c}function Th(e,t){$l(e,e=>{let n=e.gc,r=n.length/2,i;if(r>t){for(i=0;in?n:t,n=r&&t>n?t:n,{min:Jl(t,Jl(n,t)),max:Jl(n,Jl(t,n))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||=this._computeLabelItems(e)}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){Ql(this.options.beforeUpdate,[this])}update(e,t,n){let{beginAtZero:r,grace:i,ticks:a}=this.options,o=a.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=t,this._margins=n=Object.assign({left:0,right:0,top:0,bottom:0},n),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+n.left+n.right:this.height+n.top+n.bottom,this._dataLimitsCached||=(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=nf(this,i,r),!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let s=o=i||n<=1||!this.isHorizontal()){this.labelRotation=r;return}let l=this._getLabelSizes(),u=l.widest.width,d=l.highest.height,f=Vu(this.chart.width-u,0,this.maxWidth);o=e.offset?this.maxWidth/n:f/(n-1),u+6>o&&(o=f/(n-(e.offset?.5:1)),s=this.maxHeight-Eh(e.grid)-t.padding-Dh(e.title,this.chart.options.font),c=Math.sqrt(u*u+d*d),a=Pu(Math.min(Math.asin(Vu((l.highest.height+6)/o,-1,1)),Math.asin(Vu(s/c,-1,1))-Math.asin(Vu(d/c,-1,1)))),a=Math.max(r,Math.min(i,a))),this.labelRotation=a}afterCalculateLabelRotation(){Ql(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){Ql(this.options.beforeFit,[this])}fit(){let e={width:0,height:0},{chart:t,options:{ticks:n,title:r,grid:i}}=this,a=this._isVisible(),o=this.isHorizontal();if(a){let a=Dh(r,t.options.font);if(o?(e.width=this.maxWidth,e.height=Eh(i)+a):(e.height=this.maxHeight,e.width=Eh(i)+a),n.display&&this.ticks.length){let{first:t,last:r,widest:i,highest:a}=this._getLabelSizes(),s=n.padding*2,c=Nu(this.labelRotation),l=Math.cos(c),u=Math.sin(c);if(o){let t=n.mirror?0:u*i.width+l*a.height;e.height=Math.min(this.maxHeight,e.height+t+s)}else{let t=n.mirror?0:l*i.width+u*a.height;e.width=Math.min(this.maxWidth,e.width+t+s)}this._calculatePadding(t,r,u,l)}}this._handleMargins(),o?(this.width=this._length=t.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=t.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,t,n,r){let{ticks:{align:i,padding:a},position:o}=this.options,s=this.labelRotation!==0,c=o!==`top`&&this.axis===`x`;if(this.isHorizontal()){let o=this.getPixelForTick(0)-this.left,l=this.right-this.getPixelForTick(this.ticks.length-1),u=0,d=0;s?c?(u=r*e.width,d=n*t.height):(u=n*e.height,d=r*t.width):i===`start`?d=t.width:i===`end`?u=e.width:i!==`inner`&&(u=e.width/2,d=t.width/2),this.paddingLeft=Math.max((u-o+a)*this.width/(this.width-o),0),this.paddingRight=Math.max((d-l+a)*this.width/(this.width-l),0)}else{let n=t.height/2,r=e.height/2;i===`start`?(n=0,r=e.height):i===`end`&&(n=t.height,r=0),this.paddingTop=n+a,this.paddingBottom=r+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){Ql(this.options.afterFit,[this])}isHorizontal(){let{axis:e,position:t}=this.options;return t===`top`||t===`bottom`||e===`x`}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let t,n;for(t=0,n=e.length;t({width:a[e]||0,height:o[e]||0});return{first:C(0),last:C(t-1),widest:C(x),highest:C(S),widths:a,heights:o}}getLabelForValue(e){return e}getPixelForValue(e,t){return NaN}getValueForPixel(e){}getPixelForTick(e){let t=this.ticks;return e<0||e>t.length-1?null:this.getPixelForValue(t[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);let t=this._startPixel+e*this._length;return Hu(this._alignToPixels?Md(this.chart,t,0):t)}getDecimalForPixel(e){let t=(e-this._startPixel)/this._length;return this._reversePixels?1-t:t}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:e,max:t}=this;return e<0&&t<0?t:e>0&&t>0?e:0}getContext(e){let t=this.ticks||[];if(e>=0&&eo*r?o/n:s/r:s*r0:!!e}_computeGridLineItems(e){let t=this.axis,n=this.chart,r=this.options,{grid:i,position:a,border:o}=r,s=i.offset,c=this.isHorizontal(),l=this.ticks.length+ +!!s,u=Eh(i),d=[],f=o.setContext(this.getContext()),p=f.display?f.width:0,m=p/2,h=function(e){return Md(n,e,p)},g,_,v,y,b,x,S,C,w,ee,te,ne;if(a===`top`)g=h(this.bottom),x=this.bottom-u,C=g-m,ee=h(e.top)+m,ne=e.bottom;else if(a===`bottom`)g=h(this.top),ee=e.top,ne=h(e.bottom)-m,x=g+m,C=this.top+u;else if(a===`left`)g=h(this.right),b=this.right-u,S=g-m,w=h(e.left)+m,te=e.right;else if(a===`right`)g=h(this.left),w=e.left,te=h(e.right)-m,b=g+m,S=this.left+u;else if(t===`x`){if(a===`center`)g=h((e.top+e.bottom)/2+.5);else if(Kl(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}ee=e.top,ne=e.bottom,x=g+m,C=x+u}else if(t===`y`){if(a===`center`)g=h((e.left+e.right)/2);else if(Kl(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}b=g-m,S=b-u,w=e.left,te=e.right}let re=Yl(r.ticks.maxTicksLimit,l),ie=Math.max(1,Math.ceil(l/re));for(_=0;_0&&(a-=r/2);break}f={left:a,top:i,width:r+t.width,height:n+t.height,color:e.backdropColor}}h.push({label:y,font:w,textOffset:ne,options:{rotation:m,color:n,strokeColor:s,strokeWidth:l,textAlign:d,textBaseline:re,translation:[b,x],backdrop:f}})}return h}_getXAxisLabelAlignment(){let{position:e,ticks:t}=this.options;if(-Nu(this.labelRotation))return e===`top`?`left`:`right`;let n=`center`;return t.align===`start`?n=`left`:t.align===`end`?n=`right`:t.align===`inner`&&(n=`inner`),n}_getYAxisLabelAlignment(e){let{position:t,ticks:{crossAlign:n,mirror:r,padding:i}}=this.options,a=this._getLabelSizes(),o=e+i,s=a.widest.width,c,l;return t===`left`?r?(l=this.right+i,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l+=s)):(l=this.right-o,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l=this.left)):t===`right`?r?(l=this.left+i,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l-=s)):(l=this.left+o,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l=this.right)):c=`right`,{textAlign:c,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;let e=this.chart,t=this.options.position;if(t===`left`||t===`right`)return{top:0,left:this.left,bottom:e.height,right:this.right};if(t===`top`||t===`bottom`)return{top:this.top,left:0,bottom:this.bottom,right:e.width}}drawBackground(){let{ctx:e,options:{backgroundColor:t},left:n,top:r,width:i,height:a}=this;t&&(e.save(),e.fillStyle=t,e.fillRect(n,r,i,a),e.restore())}getLineWidthForValue(e){let t=this.options.grid;if(!this._isVisible()||!t.display)return 0;let n=this.ticks.findIndex(t=>t.value===e);return n>=0?t.setContext(this.getContext(n)).lineWidth:0}drawGrid(e){let t=this.options.grid,n=this.ctx,r=this._gridLineItems||=this._computeGridLineItems(e),i,a,o=(e,t,r)=>{!r.width||!r.color||(n.save(),n.lineWidth=r.width,n.strokeStyle=r.color,n.setLineDash(r.borderDash||[]),n.lineDashOffset=r.borderDashOffset,n.beginPath(),n.moveTo(e.x,e.y),n.lineTo(t.x,t.y),n.stroke(),n.restore())};if(t.display)for(i=0,a=r.length;i{this.draw(e)}}]:[{z:r,draw:e=>{this.drawBackground(),this.drawGrid(e),this.drawTitle()}},{z:i,draw:()=>{this.drawBorder()}},{z:n,draw:e=>{this.drawLabels(e)}}]}getMatchingVisibleMetas(e){let t=this.chart.getSortedVisibleDatasetMetas(),n=this.axis+`AxisID`,r=[],i,a;for(i=0,a=t.length;i{let r=n.split(`.`),i=r.pop(),a=[e].concat(r).join(`.`),o=t[n].split(`.`),s=o.pop(),c=o.join(`.`);Od.route(a,i,c,s)})}function Ih(e){return`id`in e&&`defaults`in e}var Lh=new class{constructor(){this.controllers=new Nh(Kp,`datasets`,!0),this.elements=new Nh(fh,`elements`),this.plugins=new Nh(Object,`plugins`),this.scales=new Nh(Mh,`scales`),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each(`register`,e)}remove(...e){this._each(`unregister`,e)}addControllers(...e){this._each(`register`,e,this.controllers)}addElements(...e){this._each(`register`,e,this.elements)}addPlugins(...e){this._each(`register`,e,this.plugins)}addScales(...e){this._each(`register`,e,this.scales)}getController(e){return this._get(e,this.controllers,`controller`)}getElement(e){return this._get(e,this.elements,`element`)}getPlugin(e){return this._get(e,this.plugins,`plugin`)}getScale(e){return this._get(e,this.scales,`scale`)}removeControllers(...e){this._each(`unregister`,e,this.controllers)}removeElements(...e){this._each(`unregister`,e,this.elements)}removePlugins(...e){this._each(`unregister`,e,this.plugins)}removeScales(...e){this._each(`unregister`,e,this.scales)}_each(e,t,n){[...t].forEach(t=>{let r=n||this._getRegistryForType(t);n||r.isForType(t)||r===this.plugins&&t.id?this._exec(e,r,t):$l(t,t=>{let r=n||this._getRegistryForType(t);this._exec(e,r,t)})})}_exec(e,t,n){let r=du(e);Ql(n[`before`+r],[],n),t[e](n),Ql(n[`after`+r],[],n)}_getRegistryForType(e){for(let t=0;te.filter(e=>!t.some(t=>e.plugin.id===t.plugin.id));this._notify(r(t,n),e,`stop`),this._notify(r(n,t),e,`start`)}};function zh(e){let t={},n=[],r=Object.keys(Lh.plugins.items);for(let e=0;e1&&Kh(e[0].toLowerCase());if(t)return t}throw Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function Yh(e,t,n){if(n[t+`AxisID`]===e)return{axis:t}}function Xh(e,t){if(t.data&&t.data.datasets){let n=t.data.datasets.filter(t=>t.xAxisID===e||t.yAxisID===e);if(n.length)return Yh(e,`x`,n[0])||Yh(e,`y`,n[0])}return{}}function Zh(e,t){let n=wd[e.type]||{scales:{}},r=t.scales||{},i=Uh(e.type,t),a=Object.create(null);return Object.keys(r).forEach(t=>{let o=r[t];if(!Kl(o))return console.error(`Invalid scale configuration for scale: ${t}`);if(o._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);let s=Jh(t,o,Xh(t,e),Od.scales[o.type]),c=Gh(s,i),l=n.scales||{};a[t]=au(Object.create(null),[{axis:s},o,l[s],l[c]])}),e.data.datasets.forEach(n=>{let i=n.type||e.type,o=n.indexAxis||Uh(i,t),s=(wd[i]||{}).scales||{};Object.keys(s).forEach(e=>{let t=Wh(e,o),i=n[t+`AxisID`]||t;a[i]=a[i]||Object.create(null),au(a[i],[{axis:t},r[i],s[e]])})}),Object.keys(a).forEach(e=>{let t=a[e];au(t,[Od.scales[t.type],Od.scale])}),a}function Qh(e){let t=e.options||={};t.plugins=Yl(t.plugins,{}),t.scales=Zh(e,t)}function $h(e){return e||={},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function eg(e){return e||={},e.data=$h(e.data),Qh(e),e}var tg=new Map,ng=new Set;function rg(e,t){let n=tg.get(e);return n||(n=t(),tg.set(e,n),ng.add(n)),n}var ig=(e,t,n)=>{let r=uu(t,n);r!==void 0&&e.add(r)},ag=class{constructor(e){this._config=eg(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=$h(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){let e=this._config;this.clearCache(),Qh(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return rg(e,()=>[[`datasets.${e}`,``]])}datasetAnimationScopeKeys(e,t){return rg(`${e}.transition.${t}`,()=>[[`datasets.${e}.transitions.${t}`,`transitions.${t}`],[`datasets.${e}`,``]])}datasetElementScopeKeys(e,t){return rg(`${e}-${t}`,()=>[[`datasets.${e}.elements.${t}`,`datasets.${e}`,`elements.${t}`,``]])}pluginScopeKeys(e){let t=e.id,n=this.type;return rg(`${n}-plugin-${t}`,()=>[[`plugins.${t}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,t){let n=this._scopeCache,r=n.get(e);return(!r||t)&&(r=new Map,n.set(e,r)),r}getOptionScopes(e,t,n){let{options:r,type:i}=this,a=this._cachedScopes(e,n),o=a.get(t);if(o)return o;let s=new Set;t.forEach(t=>{e&&(s.add(e),t.forEach(t=>ig(s,e,t))),t.forEach(e=>ig(s,r,e)),t.forEach(e=>ig(s,wd[i]||{},e)),t.forEach(e=>ig(s,Od,e)),t.forEach(e=>ig(s,Td,e))});let c=Array.from(s);return c.length===0&&c.push(Object.create(null)),ng.has(t)&&a.set(t,c),c}chartOptionScopes(){let{options:e,type:t}=this;return[e,wd[t]||{},Od.datasets[t]||{},{type:t},Od,Td]}resolveNamedOptions(e,t,n,r=[``]){let i={$shared:!0},{resolver:a,subPrefixes:o}=og(this._resolverCache,e,r),s=a;if(cg(a,t)){i.$shared=!1,n=pu(n)?n():n;let t=this.createResolver(e,n,o);s=of(a,n,t)}for(let e of t)i[e]=s[e];return i}createResolver(e,t,n=[``],r){let{resolver:i}=og(this._resolverCache,e,n);return Kl(t)?of(i,t,void 0,r):i}};function og(e,t,n){let r=e.get(t);r||(r=new Map,e.set(t,r));let i=n.join(),a=r.get(i);return a||(a={resolver:af(t,n),subPrefixes:n.filter(e=>!e.toLowerCase().includes(`hover`))},r.set(i,a)),a}var sg=e=>Kl(e)&&Object.getOwnPropertyNames(e).some(t=>pu(e[t]));function cg(e,t){let{isScriptable:n,isIndexable:r}=sf(e);for(let i of t){let t=n(i),a=r(i),o=(a||t)&&e[i];if(t&&(pu(o)||sg(o))||a&&Gl(o))return!0}return!1}var lg=`4.5.1`,ug=[`top`,`bottom`,`left`,`right`,`chartArea`];function dg(e,t){return e===`top`||e===`bottom`||ug.indexOf(e)===-1&&t===`x`}function fg(e,t){return function(n,r){return n[e]===r[e]?n[t]-r[t]:n[e]-r[e]}}function pg(e){let t=e.chart,n=t.options.animation;t.notifyPlugins(`afterRender`),Ql(n&&n.onComplete,[e],t)}function mg(e){let t=e.chart,n=t.options.animation;Ql(n&&n.onProgress,[e],t)}function hg(e){return Ff()&&typeof e==`string`?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}var gg={},_g=e=>{let t=hg(e);return Object.values(gg).filter(e=>e.canvas===t).pop()};function vg(e,t,n){let r=Object.keys(e);for(let i of r){let r=+i;if(r>=t){let a=e[i];delete e[i],(n>0||r>t)&&(e[r+n]=a)}}}function yg(e,t,n,r){return!n||e.type===`mouseout`?null:r?t:e}var bg=class{static defaults=Od;static instances=gg;static overrides=wd;static registry=Lh;static version=lg;static getChart=_g;static register(...e){Lh.add(...e),xg()}static unregister(...e){Lh.remove(...e),xg()}constructor(e,t){let n=this.config=new ag(t),r=hg(e),i=_g(r);if(i)throw Error(`Canvas is already in use. Chart with ID '`+i.id+`' must be destroyed before the canvas with ID '`+i.canvas.id+`' can be reused.`);let a=n.createResolver(n.chartOptionScopes(),this.getContext());this.platform=new(n.platform||(dh(r))),this.platform.updateConfig(n);let o=this.platform.acquireContext(r,a.aspectRatio),s=o&&o.canvas,c=s&&s.height,l=s&&s.width;if(this.id=Ul(),this.ctx=o,this.canvas=s,this.width=l,this.height=c,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Rh,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=ed(e=>this.update(e),a.resizeDelay||0),this._dataChanges=[],gg[this.id]=this,!o||!s){console.error(`Failed to create chart: can't acquire context from the given item`);return}bp.listen(this,`complete`,pg),bp.listen(this,`progress`,mg),this._initialize(),this.attached&&this.update()}get aspectRatio(){let{options:{aspectRatio:e,maintainAspectRatio:t},width:n,height:r,_aspectRatio:i}=this;return Wl(e)?t&&i?i:r?n/r:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return Lh}_initialize(){return this.notifyPlugins(`beforeInit`),this.options.responsive?this.resize():Jf(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins(`afterInit`),this}clear(){return Nd(this.canvas,this.ctx),this}stop(){return bp.stop(this),this}resize(e,t){bp.running(this)?this._resizeBeforeDraw={width:e,height:t}:this._resize(e,t)}_resize(e,t){let n=this.options,r=this.canvas,i=n.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(r,e,t,i),o=n.devicePixelRatio||this.platform.getDevicePixelRatio(),s=this.width?`resize`:`attach`;this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,Jf(this,o,!0)&&(this.notifyPlugins(`resize`,{size:a}),Ql(n.onResize,[this,a],this),this.attached&&this._doResize(s)&&this.render())}ensureScalesHaveIDs(){$l(this.options.scales||{},(e,t)=>{e.id=t})}buildOrUpdateScales(){let e=this.options,t=e.scales,n=this.scales,r=Object.keys(n).reduce((e,t)=>(e[t]=!1,e),{}),i=[];t&&(i=i.concat(Object.keys(t).map(e=>{let n=t[e],r=Jh(e,n),i=r===`r`,a=r===`x`;return{options:n,dposition:i?`chartArea`:a?`bottom`:`left`,dtype:i?`radialLinear`:a?`category`:`linear`}}))),$l(i,t=>{let i=t.options,a=i.id,o=Jh(a,i),s=Yl(i.type,t.dtype);(i.position===void 0||dg(i.position,o)!==dg(t.dposition))&&(i.position=t.dposition),r[a]=!0;let c=null;a in n&&n[a].type===s?c=n[a]:(c=new(Lh.getScale(s))({id:a,type:s,ctx:this.ctx,chart:this}),n[c.id]=c),c.init(i,e)}),$l(r,(e,t)=>{e||delete n[t]}),$l(n,e=>{Hm.configure(this,e,e.options),Hm.addBox(this,e)})}_updateMetasets(){let e=this._metasets,t=this.data.datasets.length,n=e.length;if(e.sort((e,t)=>e.index-t.index),n>t){for(let e=t;et.length&&delete this._stacks,e.forEach((e,n)=>{t.filter(t=>t===e._dataset).length===0&&this._destroyDatasetMeta(n)})}buildOrUpdateControllers(){let e=[],t=this.data.datasets,n,r;for(this._removeUnreferencedMetasets(),n=0,r=t.length;n{this.getDatasetMeta(t).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins(`reset`)}update(e){let t=this.config;t.update();let n=this._options=t.createResolver(t.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!n.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins(`beforeUpdate`,{mode:e,cancelable:!0})===!1)return;let i=this.buildOrUpdateControllers();this.notifyPlugins(`beforeElementsUpdate`);let a=0;for(let e=0,t=this.data.datasets.length;e{e.reset()}),this._updateDatasets(e),this.notifyPlugins(`afterUpdate`,{mode:e}),this._layers.sort(fg(`z`,`_idx`));let{_active:o,_lastEvent:s}=this;s?this._eventHandler(s,!0):o.length&&this._updateHoverStyles(o,o,!0),this.render()}_updateScales(){$l(this.scales,e=>{Hm.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let e=this.options;(!mu(new Set(Object.keys(this._listeners)),new Set(e.events))||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){let{_hiddenIndices:e}=this,t=this._getUniformDataChanges()||[];for(let{method:n,start:r,count:i}of t)vg(e,r,n===`_removeElements`?-i:i)}_getUniformDataChanges(){let e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];let t=this.data.datasets.length,n=t=>new Set(e.filter(e=>e[0]===t).map((e,t)=>t+`,`+e.splice(1).join(`,`))),r=n(0);for(let e=1;ee.split(`,`)).map(e=>({method:e[1],start:+e[2],count:+e[3]}))}_updateLayout(e){if(this.notifyPlugins(`beforeLayout`,{cancelable:!0})===!1)return;Hm.update(this,this.width,this.height,e);let t=this.chartArea,n=t.width<=0||t.height<=0;this._layers=[],$l(this.boxes,e=>{n&&e.position===`chartArea`||(e.configure&&e.configure(),this._layers.push(...e._layers()))},this),this._layers.forEach((e,t)=>{e._idx=t}),this.notifyPlugins(`afterLayout`)}_updateDatasets(e){if(this.notifyPlugins(`beforeDatasetsUpdate`,{mode:e,cancelable:!0})!==!1){for(let e=0,t=this.data.datasets.length;e=0;--t)this._drawDataset(e[t]);this.notifyPlugins(`afterDatasetsDraw`)}_drawDataset(e){let t=this.ctx,n={meta:e,index:e.index,cancelable:!0},r=yp(this,e);this.notifyPlugins(`beforeDatasetDraw`,n)!==!1&&(r&&Ld(t,r),e.controller.draw(),r&&Rd(t),n.cancelable=!1,this.notifyPlugins(`afterDatasetDraw`,n))}isPointInArea(e){return Id(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,t,n,r){let i=Tm.modes[t];return typeof i==`function`?i(this,e,n,r):[]}getDatasetMeta(e){let t=this.data.datasets[e],n=this._metasets,r=n.filter(e=>e&&e._dataset===t).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:t&&t.order||0,index:e,_dataset:t,_parsed:[],_sorted:!1},n.push(r)),r}getContext(){return this.$context||=rf(null,{chart:this,type:`chart`})}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){let t=this.data.datasets[e];if(!t)return!1;let n=this.getDatasetMeta(e);return typeof n.hidden==`boolean`?!n.hidden:!t.hidden}setDatasetVisibility(e,t){let n=this.getDatasetMeta(e);n.hidden=!t}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,t,n){let r=n?`show`:`hide`,i=this.getDatasetMeta(e),a=i.controller._resolveAnimations(void 0,r);fu(t)?(i.data[t].hidden=!n,this.update()):(this.setDatasetVisibility(e,n),a.update(i,{visible:n}),this.update(t=>t.datasetIndex===e?r:void 0))}hide(e,t){this._updateVisibility(e,t,!1)}show(e,t){this._updateVisibility(e,t,!0)}_destroyDatasetMeta(e){let t=this._metasets[e];t&&t.controller&&t.controller._destroy(),delete this._metasets[e]}_stop(){let e,t;for(this.stop(),bp.remove(this),e=0,t=this.data.datasets.length;e{t.addEventListener(this,n,r),e[n]=r},r=(e,t,n)=>{e.offsetX=t,e.offsetY=n,this._eventHandler(e)};$l(this.options.events,e=>n(e,r))}bindResponsiveEvents(){this._responsiveListeners||={};let e=this._responsiveListeners,t=this.platform,n=(n,r)=>{t.addEventListener(this,n,r),e[n]=r},r=(n,r)=>{e[n]&&(t.removeEventListener(this,n,r),delete e[n])},i=(e,t)=>{this.canvas&&this.resize(e,t)},a,o=()=>{r(`attach`,o),this.attached=!0,this.resize(),n(`resize`,i),n(`detach`,a)};a=()=>{this.attached=!1,r(`resize`,i),this._stop(),this._resize(0,0),n(`attach`,o)},t.isAttached(this.canvas)?o():a()}unbindEvents(){$l(this._listeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._listeners={},$l(this._responsiveListeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,t,n){let r=n?`set`:`remove`,i,a,o,s;for(t===`dataset`&&(i=this.getDatasetMeta(e[0].datasetIndex),i.controller[`_`+r+`DatasetHoverStyle`]()),o=0,s=e.length;o{let n=this.getDatasetMeta(e);if(!n)throw Error(`No dataset found at index `+e);return{datasetIndex:e,element:n.data[t],index:t}});eu(n,t)||(this._active=n,this._lastEvent=null,this._updateHoverStyles(n,t))}notifyPlugins(e,t,n){return this._plugins.notify(this,e,t,n)}isPluginEnabled(e){return this._plugins._cache.filter(t=>t.plugin.id===e).length===1}_updateHoverStyles(e,t,n){let r=this.options.hover,i=(e,t)=>e.filter(e=>!t.some(t=>e.datasetIndex===t.datasetIndex&&e.index===t.index)),a=i(t,e),o=n?e:i(e,t);a.length&&this.updateHoverStyle(a,r.mode,!1),o.length&&r.mode&&this.updateHoverStyle(o,r.mode,!0)}_eventHandler(e,t){let n={event:e,replay:t,cancelable:!0,inChartArea:this.isPointInArea(e)},r=t=>(t.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins(`beforeEvent`,n,r)===!1)return;let i=this._handleEvent(e,t,n.inChartArea);return n.cancelable=!1,this.notifyPlugins(`afterEvent`,n,r),(i||n.changed)&&this.render(),this}_handleEvent(e,t,n){let{_active:r=[],options:i}=this,a=t,o=this._getActiveElements(e,r,n,a),s=hu(e),c=yg(e,this._lastEvent,n,s);n&&(this._lastEvent=null,Ql(i.onHover,[e,o,this],this),s&&Ql(i.onClick,[e,o,this],this));let l=!eu(o,r);return(l||t)&&(this._active=o,this._updateHoverStyles(o,r,t)),this._lastEvent=c,l}_getActiveElements(e,t,n,r){if(e.type===`mouseout`)return[];if(!n)return t;let i=this.options.hover;return this.getElementsAtEventForMode(e,i.mode,i,r)}};function xg(){return $l(bg.instances,e=>e._plugins.invalidate())}function Sg(e,t,n){let{startAngle:r,x:i,y:a,outerRadius:o,innerRadius:s,options:c}=t,{borderWidth:l,borderJoinStyle:u}=c,d=Math.min(l/o,zu(r-n));if(e.beginPath(),e.arc(i,a,o-l/2,r+d/2,n-d/2),s>0){let t=Math.min(l/s,zu(r-n));e.arc(i,a,s+l/2,n-t/2,r+t/2,!0)}else{let t=Math.min(l/2,o*zu(r-n));if(u===`round`)e.arc(i,a,t,n-gu/2,r+gu/2,!0);else if(u===`bevel`){let o=2*t*t,s=-o*Math.cos(n+gu/2)+i,c=-o*Math.sin(n+gu/2)+a,l=o*Math.cos(r+gu/2)+i,u=o*Math.sin(r+gu/2)+a;e.lineTo(s,c),e.lineTo(l,u)}}e.closePath(),e.moveTo(0,0),e.rect(0,0,e.canvas.width,e.canvas.height),e.clip(`evenodd`)}function Cg(e,t,n){let{startAngle:r,pixelMargin:i,x:a,y:o,outerRadius:s,innerRadius:c}=t,l=i/s;e.beginPath(),e.arc(a,o,s,r-l,n+l),c>i?(l=i/c,e.arc(a,o,c,n+l,r-l,!0)):e.arc(a,o,i,n+xu,r-xu),e.closePath(),e.clip()}function wg(e){return Xd(e,[`outerStart`,`outerEnd`,`innerStart`,`innerEnd`])}function Tg(e,t,n,r){let i=wg(e.options.borderRadius),a=(n-t)/2,o=Math.min(a,r*t/2),s=e=>{let t=(n-Math.min(a,e))*r/2;return Vu(e,0,Math.min(a,t))};return{outerStart:s(i.outerStart),outerEnd:s(i.outerEnd),innerStart:Vu(i.innerStart,0,o),innerEnd:Vu(i.innerEnd,0,o)}}function Eg(e,t,n,r){return{x:n+e*Math.cos(t),y:r+e*Math.sin(t)}}function Dg(e,t,n,r,i,a){let{x:o,y:s,startAngle:c,pixelMargin:l,innerRadius:u}=t,d=Math.max(t.outerRadius+r+n-l,0),f=u>0?u+r+n+l:0,p=0,m=i-c;if(r){let e=((u>0?u-r:0)+(d>0?d-r:0))/2;p=(m-(e===0?m:m*e/(e+r)))/2}let h=(m-Math.max(.001,m*d-n/gu)/d)/2,g=c+h+p,_=i-h-p,{outerStart:v,outerEnd:y,innerStart:b,innerEnd:x}=Tg(t,f,d,_-g),S=d-v,C=d-y,w=g+v/S,ee=_-y/C,te=f+b,ne=f+x,re=g+b/te,ie=_-x/ne;if(e.beginPath(),a){let t=(w+ee)/2;if(e.arc(o,s,d,w,t),e.arc(o,s,d,t,ee),y>0){let t=Eg(C,ee,o,s);e.arc(t.x,t.y,y,ee,_+xu)}let n=Eg(ne,_,o,s);if(e.lineTo(n.x,n.y),x>0){let t=Eg(ne,ie,o,s);e.arc(t.x,t.y,x,_+xu,ie+Math.PI)}let r=(_-x/f+(g+b/f))/2;if(e.arc(o,s,f,_-x/f,r,!0),e.arc(o,s,f,r,g+b/f,!0),b>0){let t=Eg(te,re,o,s);e.arc(t.x,t.y,b,re+Math.PI,g-xu)}let i=Eg(S,g,o,s);if(e.lineTo(i.x,i.y),v>0){let t=Eg(S,w,o,s);e.arc(t.x,t.y,v,g-xu,w)}}else{e.moveTo(o,s);let t=Math.cos(w)*d+o,n=Math.sin(w)*d+s;e.lineTo(t,n);let r=Math.cos(ee)*d+o,i=Math.sin(ee)*d+s;e.lineTo(r,i)}e.closePath()}function Og(e,t,n,r,i){let{fullCircles:a,startAngle:o,circumference:s}=t,c=t.endAngle;if(a){Dg(e,t,n,r,c,i);for(let t=0;t=gu&&p===0&&u!==`miter`&&Sg(e,t,h),a||(Dg(e,t,n,r,h,i),e.stroke())}var Ag=class extends fh{static id=`arc`;static defaults={borderAlign:`center`,borderColor:`#fff`,borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1};static defaultRoutes={backgroundColor:`backgroundColor`};static descriptors={_scriptable:!0,_indexable:e=>e!==`borderDash`};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(e){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,t,n){let{angle:r,distance:i}=Iu(this.getProps([`x`,`y`],n),{x:e,y:t}),{startAngle:a,endAngle:o,innerRadius:s,outerRadius:c,circumference:l}=this.getProps([`startAngle`,`endAngle`,`innerRadius`,`outerRadius`,`circumference`],n),u=(this.options.spacing+this.options.borderWidth)/2,d=Yl(l,o-a),f=Bu(r,a,o)&&a!==o,p=d>=_u||f,m=Uu(i,s+u,c+u);return p&&m}getCenterPoint(e){let{x:t,y:n,startAngle:r,endAngle:i,innerRadius:a,outerRadius:o}=this.getProps([`x`,`y`,`startAngle`,`endAngle`,`innerRadius`,`outerRadius`],e),{offset:s,spacing:c}=this.options,l=(r+i)/2,u=(a+o+c+s)/2;return{x:t+Math.cos(l)*u,y:n+Math.sin(l)*u}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){let{options:t,circumference:n}=this,r=(t.offset||0)/4,i=(t.spacing||0)/2,a=t.circular;if(this.pixelMargin=t.borderAlign===`inner`?.33:0,this.fullCircles=n>_u?Math.floor(n/_u):0,n===0||this.innerRadius<0||this.outerRadius<0)return;e.save();let o=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(o)*r,Math.sin(o)*r);let s=r*(1-Math.sin(Math.min(gu,n||0)));e.fillStyle=t.backgroundColor,e.strokeStyle=t.borderColor,Og(e,this,s,i,a),kg(e,this,s,i,a),e.restore()}};function jg(e,t,n=t){e.lineCap=Yl(n.borderCapStyle,t.borderCapStyle),e.setLineDash(Yl(n.borderDash,t.borderDash)),e.lineDashOffset=Yl(n.borderDashOffset,t.borderDashOffset),e.lineJoin=Yl(n.borderJoinStyle,t.borderJoinStyle),e.lineWidth=Yl(n.borderWidth,t.borderWidth),e.strokeStyle=Yl(n.borderColor,t.borderColor)}function Mg(e,t,n){e.lineTo(n.x,n.y)}function Ng(e){return e.stepped?zd:e.tension||e.cubicInterpolationMode===`monotone`?Bd:Mg}function Pg(e,t,n={}){let r=e.length,{start:i=0,end:a=r-1}=n,{start:o,end:s}=t,c=Math.max(i,o),l=Math.min(a,s),u=is&&a>s;return{count:r,start:c,loop:t.loop,ilen:l(o+(l?s-e:e))%a,y=()=>{h!==g&&(e.lineTo(u,g),e.lineTo(u,h),e.lineTo(u,_))};for(c&&(p=i[v(0)],e.moveTo(p.x,p.y)),f=0;f<=s;++f){if(p=i[v(f)],p.skip)continue;let t=p.x,n=p.y,r=t|0;r===m?(ng&&(g=n),u=(d*u+t)/++d):(y(),e.lineTo(t,n),m=r,d=0,h=g=n),_=n}y()}function Lg(e){let t=e.options,n=t.borderDash&&t.borderDash.length;return!e._decimated&&!e._loop&&!t.tension&&t.cubicInterpolationMode!==`monotone`&&!t.stepped&&!n?Ig:Fg}function Rg(e){return e.stepped?Qf:e.tension||e.cubicInterpolationMode===`monotone`?$f:Zf}function zg(e,t,n,r){let i=t._path;i||(i=t._path=new Path2D,t.path(i,n,r)&&i.closePath()),jg(e,t.options),e.stroke(i)}function Bg(e,t,n,r){let{segments:i,options:a}=t,o=Lg(t);for(let s of i)jg(e,a,s.style),e.beginPath(),o(e,t,s,{start:n,end:n+r-1})&&e.closePath(),e.stroke()}var Vg=typeof Path2D==`function`;function Hg(e,t,n,r){Vg&&!t.options.segment?zg(e,t,n,r):Bg(e,t,n,r)}var Ug=class extends fh{static id=`line`;static defaults={borderCapStyle:`butt`,borderDash:[],borderDashOffset:0,borderJoinStyle:`miter`,borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:`default`,fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:`backgroundColor`,borderColor:`borderColor`};static descriptors={_scriptable:!0,_indexable:e=>e!==`borderDash`&&e!==`fill`};constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,t){let n=this.options;if((n.tension||n.cubicInterpolationMode===`monotone`)&&!n.stepped&&!this._pointsUpdated){let r=n.spanGaps?this._loop:this._fullLoop;Pf(this._points,n,e,r,t),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||=fp(this,this.options.segment)}first(){let e=this.segments,t=this.points;return e.length&&t[e[0].start]}last(){let e=this.segments,t=this.points,n=e.length;return n&&t[e[n-1].end]}interpolate(e,t){let n=this.options,r=e[t],i=this.points,a=lp(this,{property:t,start:r,end:r});if(!a.length)return;let o=[],s=Rg(n),c,l;for(c=0,l=a.length;ce.replace(`rgb(`,`rgba(`).replace(`)`,`, 0.5)`));function i_(e){return n_[e%n_.length]}function a_(e){return r_[e%r_.length]}function o_(e,t){return e.borderColor=i_(t),e.backgroundColor=a_(t),++t}function s_(e,t){return e.backgroundColor=e.data.map(()=>i_(t++)),t}function c_(e,t){return e.backgroundColor=e.data.map(()=>a_(t++)),t}function l_(e){let t=0;return(n,r)=>{let i=e.getDatasetMeta(r).controller;i instanceof dm?t=s_(n,t):i instanceof pm?t=c_(n,t):i&&(t=o_(n,t))}}function u_(e){let t;for(t in e)if(e[t].borderColor||e[t].backgroundColor)return!0;return!1}function d_(e){return e&&(e.borderColor||e.backgroundColor)}function f_(){return Od.borderColor!==`rgba(0,0,0,0.1)`||Od.backgroundColor!==`rgba(0,0,0,0.1)`}var p_={id:`colors`,defaults:{enabled:!0,forceOverride:!1},beforeLayout(e,t,n){if(!n.enabled)return;let{data:{datasets:r},options:i}=e.config,{elements:a}=i,o=u_(r)||d_(i)||a&&u_(a)||f_();if(!n.forceOverride&&o)return;let s=l_(e);r.forEach(s)}};function m_(e,t,n,r,i){let a=i.samples||r;if(a>=n)return e.slice(t,t+n);let o=[],s=(n-2)/(a-2),c=0,l=t+n-1,u=t,d,f,p,m,h;for(o[c++]=e[u],d=0;dp&&(p=m,f=e[a],h=a);o[c++]=f,u=h}return o[c++]=e[l],o}function h_(e,t,n,r){let i=0,a=0,o,s,c,l,u,d,f,p,m,h,g=[],_=t+n-1,v=e[t].x,y=e[_].x-v;for(o=t;oh&&(h=l,f=o),i=(a*i+s.x)/++a;else{let n=o-1;if(!Wl(d)&&!Wl(f)){let t=Math.min(d,f),r=Math.max(d,f);t!==p&&t!==n&&g.push({...e[t],x:i}),r!==p&&r!==n&&g.push({...e[r],x:i})}o>0&&n!==p&&g.push(e[n]),g.push(s),u=t,a=0,m=h=l,d=f=p=o}}return g}function g_(e){if(e._decimated){let t=e._data;delete e._decimated,delete e._data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,writable:!0,value:t})}}function __(e){e.data.datasets.forEach(e=>{g_(e)})}function v_(e,t){let n=t.length,r=0,i,{iScale:a}=e,{min:o,max:s,minDefined:c,maxDefined:l}=a.getUserBounds();return c&&(r=Vu(Gu(t,a.axis,o).lo,0,n-1)),i=l?Vu(Gu(t,a.axis,s).hi+1,r,n)-r:n-r,{start:r,count:i}}var y_={id:`decimation`,defaults:{algorithm:`min-max`,enabled:!1},beforeElementsUpdate:(e,t,n)=>{if(!n.enabled){__(e);return}let r=e.width;e.data.datasets.forEach((t,i)=>{let{_data:a,indexAxis:o}=t,s=e.getDatasetMeta(i),c=a||t.data;if(tf([o,e.options.indexAxis])===`y`||!s.controller.supportsDecimation)return;let l=e.scales[s.xAxisID];if(l.type!==`linear`&&l.type!==`time`||e.options.parsing)return;let{start:u,count:d}=v_(s,c);if(d<=(n.threshold||4*r)){g_(t);return}Wl(a)&&(t._data=c,delete t.data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(e){this._data=e}}));let f;switch(n.algorithm){case`lttb`:f=m_(c,u,d,r,n);break;case`min-max`:f=h_(c,u,d,r);break;default:throw Error(`Unsupported decimation algorithm '${n.algorithm}'`)}t._decimated=f})},destroy(e){__(e)}};function b_(e,t,n){let r=e.segments,i=e.points,a=t.points,o=[];for(let e of r){let{start:r,end:s}=e;s=C_(r,s,i);let c=x_(n,i[r],i[s],e.loop);if(!t.segments){o.push({source:e,target:c,start:i[r],end:i[s]});continue}let l=lp(t,c);for(let t of l){let r=x_(n,a[t.start],a[t.end],t.loop),s=cp(e,i,r);for(let e of s)o.push({source:e,target:t,start:{[n]:w_(c,r,`start`,Math.max)},end:{[n]:w_(c,r,`end`,Math.min)}})}}return o}function x_(e,t,n,r){if(r)return;let i=t[e],a=n[e];return e===`angle`&&(i=zu(i),a=zu(a)),{property:e,start:i,end:a}}function S_(e,t){let{x:n=null,y:r=null}=e||{},i=t.points,a=[];return t.segments.forEach(({start:e,end:t})=>{t=C_(e,t,i);let o=i[e],s=i[t];r===null?n!==null&&(a.push({x:n,y:o.y}),a.push({x:n,y:s.y})):(a.push({x:o.x,y:r}),a.push({x:s.x,y:r}))}),a}function C_(e,t,n){for(;t>e;t--){let e=n[t];if(!isNaN(e.x)&&!isNaN(e.y))break}return t}function w_(e,t,n,r){return e&&t?r(e[n],t[n]):e?e[n]:t?t[n]:0}function T_(e,t){let n=[],r=!1;return Gl(e)?(r=!0,n=e):n=S_(e,t),n.length?new Ug({points:n,options:{tension:0},_loop:r,_fullLoop:r}):null}function E_(e){return e&&e.fill!==!1}function D_(e,t,n){let r=e[t].fill,i=[t],a;if(!n)return r;for(;r!==!1&&i.indexOf(r)===-1;){if(!ql(r))return r;if(a=e[r],!a)return!1;if(a.visible)return r;i.push(r),r=a.fill}return!1}function O_(e,t,n){let r=M_(e);if(Kl(r))return!isNaN(r.value)&&r;let i=parseFloat(r);return ql(i)&&Math.floor(i)===i?k_(r[0],t,i,n):[`origin`,`start`,`end`,`stack`,`shape`].indexOf(r)>=0&&r}function k_(e,t,n,r){return(e===`-`||e===`+`)&&(n=t+n),n===t||n<0||n>=r?!1:n}function A_(e,t){let n=null;return e===`start`?n=t.bottom:e===`end`?n=t.top:Kl(e)?n=t.getPixelForValue(e.value):t.getBasePixel&&(n=t.getBasePixel()),n}function j_(e,t,n){let r;return r=e===`start`?n:e===`end`?t.options.reverse?t.min:t.max:Kl(e)?e.value:t.getBaseValue(),r}function M_(e){let t=e.options,n=t.fill,r=Yl(n&&n.target,n);return r===void 0&&(r=!!t.backgroundColor),r===!1||r===null?!1:r===!0?`origin`:r}function N_(e){let{scale:t,index:n,line:r}=e,i=[],a=r.segments,o=r.points,s=P_(t,n);s.push(T_({x:null,y:t.bottom},r));for(let e=0;e=0;--t){let n=i[t].$filler;n&&(n.line.updateControlPoints(a,n.axis),r&&n.fill&&U_(e.ctx,n,a))}},beforeDatasetsDraw(e,t,n){if(n.drawTime!==`beforeDatasetsDraw`)return;let r=e.getSortedVisibleDatasetMetas();for(let t=r.length-1;t>=0;--t){let n=r[t].$filler;E_(n)&&U_(e.ctx,n,e.chartArea)}},beforeDatasetDraw(e,t,n){let r=t.meta.$filler;!E_(r)||n.drawTime!==`beforeDatasetDraw`||U_(e.ctx,r,e.chartArea)},defaults:{propagate:!0,drawTime:`beforeDatasetDraw`}},Z_=(e,t)=>{let{boxHeight:n=t,boxWidth:r=t}=e;return e.usePointStyle&&(n=Math.min(n,t),r=e.pointStyleWidth||Math.min(r,t)),{boxWidth:r,boxHeight:n,itemHeight:Math.max(t,n)}},Q_=(e,t)=>e!==null&&t!==null&&e.datasetIndex===t.datasetIndex&&e.index===t.index,$_=class extends fh{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t,n){this.maxWidth=e,this.maxHeight=t,this._margins=n,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){let e=this.options.labels||{},t=Ql(e.generateLabels,[this.chart],this)||[];e.filter&&(t=t.filter(t=>e.filter(t,this.chart.data))),e.sort&&(t=t.sort((t,n)=>e.sort(t,n,this.chart.data))),this.options.reverse&&t.reverse(),this.legendItems=t}fit(){let{options:e,ctx:t}=this;if(!e.display){this.width=this.height=0;return}let n=e.labels,r=ef(n.font),i=r.size,a=this._computeTitleHeight(),{boxWidth:o,itemHeight:s}=Z_(n,i),c,l;t.font=r.string,this.isHorizontal()?(c=this.maxWidth,l=this._fitRows(a,i,o,s)+10):(l=this.maxHeight,c=this._fitCols(a,r,o,s)+10),this.width=Math.min(c,e.maxWidth||this.maxWidth),this.height=Math.min(l,e.maxHeight||this.maxHeight)}_fitRows(e,t,n,r){let{ctx:i,maxWidth:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.lineWidths=[0],l=r+o,u=e;i.textAlign=`left`,i.textBaseline=`middle`;let d=-1,f=-l;return this.legendItems.forEach((e,p)=>{let m=n+t/2+i.measureText(e.text).width;(p===0||c[c.length-1]+m+2*o>a)&&(u+=l,c[c.length-(p>0?0:1)]=0,f+=l,d++),s[p]={left:0,top:f,row:d,width:m,height:r},c[c.length-1]+=m+o}),u}_fitCols(e,t,n,r){let{ctx:i,maxHeight:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.columnSizes=[],l=a-e,u=o,d=0,f=0,p=0,m=0;return this.legendItems.forEach((e,a)=>{let{itemWidth:h,itemHeight:g}=ev(n,t,i,e,r);a>0&&f+g+2*o>l&&(u+=d+o,c.push({width:d,height:f}),p+=d+o,m++,d=f=0),s[a]={left:p,top:f,col:m,width:h,height:g},d=Math.max(d,h),f+=g+o}),u+=d,c.push({width:d,height:f}),u}adjustHitBoxes(){if(!this.options.display)return;let e=this._computeTitleHeight(),{legendHitBoxes:t,options:{align:n,labels:{padding:r},rtl:i}}=this,a=np(i,this.left,this.width);if(this.isHorizontal()){let i=0,o=nd(n,this.left+r,this.right-this.lineWidths[i]);for(let s of t)i!==s.row&&(i=s.row,o=nd(n,this.left+r,this.right-this.lineWidths[i])),s.top+=this.top+e+r,s.left=a.leftForLtr(a.x(o),s.width),o+=s.width+r}else{let i=0,o=nd(n,this.top+e+r,this.bottom-this.columnSizes[i].height);for(let s of t)s.col!==i&&(i=s.col,o=nd(n,this.top+e+r,this.bottom-this.columnSizes[i].height)),s.top=o,s.left+=this.left+r,s.left=a.leftForLtr(a.x(s.left),s.width),o+=s.height+r}}isHorizontal(){return this.options.position===`top`||this.options.position===`bottom`}draw(){if(this.options.display){let e=this.ctx;Ld(e,this),this._draw(),Rd(e)}}_draw(){let{options:e,columnSizes:t,lineWidths:n,ctx:r}=this,{align:i,labels:a}=e,o=Od.color,s=np(e.rtl,this.left,this.width),c=ef(a.font),{padding:l}=a,u=c.size,d=u/2,f;this.drawTitle(),r.textAlign=s.textAlign(`left`),r.textBaseline=`middle`,r.lineWidth=.5,r.font=c.string;let{boxWidth:p,boxHeight:m,itemHeight:h}=Z_(a,u),g=function(e,t,n){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;r.save();let i=Yl(n.lineWidth,1);if(r.fillStyle=Yl(n.fillStyle,o),r.lineCap=Yl(n.lineCap,`butt`),r.lineDashOffset=Yl(n.lineDashOffset,0),r.lineJoin=Yl(n.lineJoin,`miter`),r.lineWidth=i,r.strokeStyle=Yl(n.strokeStyle,o),r.setLineDash(Yl(n.lineDash,[])),a.usePointStyle){let o={radius:m*Math.SQRT2/2,pointStyle:n.pointStyle,rotation:n.rotation,borderWidth:i},c=s.xPlus(e,p/2),l=t+d;Fd(r,o,c,l,a.pointStyleWidth&&p)}else{let a=t+Math.max((u-m)/2,0),o=s.leftForLtr(e,p),c=Qd(n.borderRadius);r.beginPath(),Object.values(c).some(e=>e!==0)?Gd(r,{x:o,y:a,w:p,h:m,radius:c}):r.rect(o,a,p,m),r.fill(),i!==0&&r.stroke()}r.restore()},_=function(e,t,n){Wd(r,n.text,e,t+h/2,c,{strikethrough:n.hidden,textAlign:s.textAlign(n.textAlign)})},v=this.isHorizontal(),y=this._computeTitleHeight();f=v?{x:nd(i,this.left+l,this.right-n[0]),y:this.top+l+y,line:0}:{x:this.left+l,y:nd(i,this.top+y+l,this.bottom-t[0].height),line:0},rp(this.ctx,e.textDirection);let b=h+l;this.legendItems.forEach((o,u)=>{r.strokeStyle=o.fontColor,r.fillStyle=o.fontColor;let m=r.measureText(o.text).width,h=s.textAlign(o.textAlign||=a.textAlign),x=p+d+m,S=f.x,C=f.y;s.setWidth(this.width),v?u>0&&S+x+l>this.right&&(C=f.y+=b,f.line++,S=f.x=nd(i,this.left+l,this.right-n[f.line])):u>0&&C+b>this.bottom&&(S=f.x=S+t[f.line].width+l,f.line++,C=f.y=nd(i,this.top+y+l,this.bottom-t[f.line].height));let w=s.x(S);if(g(w,C,o),S=rd(h,S+p+d,v?S+x:this.right,e.rtl),_(s.x(S),C,o),v)f.x+=x+l;else if(typeof o.text!=`string`){let e=c.lineHeight;f.y+=rv(o,e)+l}else f.y+=b}),ip(this.ctx,e.textDirection)}drawTitle(){let e=this.options,t=e.title,n=ef(t.font),r=$d(t.padding);if(!t.display)return;let i=np(e.rtl,this.left,this.width),a=this.ctx,o=t.position,s=n.size/2,c=r.top+s,l,u=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),l=this.top+c,u=nd(e.align,u,this.right-d);else{let t=this.columnSizes.reduce((e,t)=>Math.max(e,t.height),0);l=c+nd(e.align,this.top,this.bottom-t-e.labels.padding-this._computeTitleHeight())}let f=nd(o,u,u+d);a.textAlign=i.textAlign(td(o)),a.textBaseline=`middle`,a.strokeStyle=t.color,a.fillStyle=t.color,a.font=n.string,Wd(a,t.text,f,l,n)}_computeTitleHeight(){let e=this.options.title,t=ef(e.font),n=$d(e.padding);return e.display?t.lineHeight+n.height:0}_getLegendItemAt(e,t){let n,r,i;if(Uu(e,this.left,this.right)&&Uu(t,this.top,this.bottom)){for(i=this.legendHitBoxes,n=0;ne.length>t.length?e:t)),t+n.size/2+r.measureText(i).width}function nv(e,t,n){let r=e;return typeof t.text!=`string`&&(r=rv(t,n)),r}function rv(e,t){return t*(e.text?e.text.length:0)}function iv(e,t){return!!((e===`mousemove`||e===`mouseout`)&&(t.onHover||t.onLeave)||t.onClick&&(e===`click`||e===`mouseup`))}var av={id:`legend`,_element:$_,start(e,t,n){let r=e.legend=new $_({ctx:e.ctx,options:n,chart:e});Hm.configure(e,r,n),Hm.addBox(e,r)},stop(e){Hm.removeBox(e,e.legend),delete e.legend},beforeUpdate(e,t,n){let r=e.legend;Hm.configure(e,r,n),r.options=n},afterUpdate(e){let t=e.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(e,t){t.replay||e.legend.handleEvent(t.event)},defaults:{display:!0,position:`top`,align:`center`,fullSize:!0,reverse:!1,weight:1e3,onClick(e,t,n){let r=t.datasetIndex,i=n.chart;i.isDatasetVisible(r)?(i.hide(r),t.hidden=!0):(i.show(r),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:e=>e.chart.options.color,boxWidth:40,padding:10,generateLabels(e){let t=e.data.datasets,{labels:{usePointStyle:n,pointStyle:r,textAlign:i,color:a,useBorderRadius:o,borderRadius:s}}=e.legend.options;return e._getSortedDatasetMetas().map(e=>{let c=e.controller.getStyle(n?0:void 0),l=$d(c.borderWidth);return{text:t[e.index].label,fillStyle:c.backgroundColor,fontColor:a,hidden:!e.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(l.width+l.height)/4,strokeStyle:c.borderColor,pointStyle:r||c.pointStyle,rotation:c.rotation,textAlign:i||c.textAlign,borderRadius:o&&(s||c.borderRadius),datasetIndex:e.index}},this)}},title:{color:e=>e.chart.options.color,display:!1,position:`center`,text:``}},descriptors:{_scriptable:e=>!e.startsWith(`on`),labels:{_scriptable:e=>![`generateLabels`,`filter`,`sort`].includes(e)}}},ov=class extends fh{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t){let n=this.options;if(this.left=0,this.top=0,!n.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=t;let r=Gl(n.text)?n.text.length:1;this._padding=$d(n.padding);let i=r*ef(n.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=i:this.width=i}isHorizontal(){let e=this.options.position;return e===`top`||e===`bottom`}_drawArgs(e){let{top:t,left:n,bottom:r,right:i,options:a}=this,o=a.align,s=0,c,l,u;return this.isHorizontal()?(l=nd(o,n,i),u=t+e,c=i-n):(a.position===`left`?(l=n+e,u=nd(o,r,t),s=gu*-.5):(l=i-e,u=nd(o,t,r),s=gu*.5),c=r-t),{titleX:l,titleY:u,maxWidth:c,rotation:s}}draw(){let e=this.ctx,t=this.options;if(!t.display)return;let n=ef(t.font),r=n.lineHeight/2+this._padding.top,{titleX:i,titleY:a,maxWidth:o,rotation:s}=this._drawArgs(r);Wd(e,t.text,0,0,n,{color:t.color,maxWidth:o,rotation:s,textAlign:td(t.align),textBaseline:`middle`,translation:[i,a]})}};function sv(e,t){let n=new ov({ctx:e.ctx,options:t,chart:e});Hm.configure(e,n,t),Hm.addBox(e,n),e.titleBlock=n}var cv={id:`title`,_element:ov,start(e,t,n){sv(e,n)},stop(e){let t=e.titleBlock;Hm.removeBox(e,t),delete e.titleBlock},beforeUpdate(e,t,n){let r=e.titleBlock;Hm.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`bold`},fullSize:!0,padding:10,position:`top`,text:``,weight:2e3},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},lv=new WeakMap,uv={id:`subtitle`,start(e,t,n){let r=new ov({ctx:e.ctx,options:n,chart:e});Hm.configure(e,r,n),Hm.addBox(e,r),lv.set(e,r)},stop(e){Hm.removeBox(e,lv.get(e)),lv.delete(e)},beforeUpdate(e,t,n){let r=lv.get(e);Hm.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`normal`},fullSize:!0,padding:0,position:`top`,text:``,weight:1500},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},dv={average(e){if(!e.length)return!1;let t,n,r=new Set,i=0,a=0;for(t=0,n=e.length;te+t)/r.size,y:i/a}},nearest(e,t){if(!e.length)return!1;let n=t.x,r=t.y,i=1/0,a,o,s;for(a=0,o=e.length;a-1?e.split(` +`):e}function mv(e,t){let{element:n,datasetIndex:r,index:i}=t,a=e.getDatasetMeta(r).controller,{label:o,value:s}=a.getLabelAndValue(i);return{chart:e,label:o,parsed:a.getParsed(i),raw:e.data.datasets[r].data[i],formattedValue:s,dataset:a.getDataset(),dataIndex:i,datasetIndex:r,element:n}}function hv(e,t){let n=e.chart.ctx,{body:r,footer:i,title:a}=e,{boxWidth:o,boxHeight:s}=t,c=ef(t.bodyFont),l=ef(t.titleFont),u=ef(t.footerFont),d=a.length,f=i.length,p=r.length,m=$d(t.padding),h=m.height,g=0,_=r.reduce((e,t)=>e+t.before.length+t.lines.length+t.after.length,0);if(_+=e.beforeBody.length+e.afterBody.length,d&&(h+=d*l.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),_){let e=t.displayColors?Math.max(s,c.lineHeight):c.lineHeight;h+=p*e+(_-p)*c.lineHeight+(_-1)*t.bodySpacing}f&&(h+=t.footerMarginTop+f*u.lineHeight+(f-1)*t.footerSpacing);let v=0,y=function(e){g=Math.max(g,n.measureText(e).width+v)};return n.save(),n.font=l.string,$l(e.title,y),n.font=c.string,$l(e.beforeBody.concat(e.afterBody),y),v=t.displayColors?o+2+t.boxPadding:0,$l(r,e=>{$l(e.before,y),$l(e.lines,y),$l(e.after,y)}),v=0,n.font=u.string,$l(e.footer,y),n.restore(),g+=m.width,{width:g,height:h}}function gv(e,t){let{y:n,height:r}=t;return ne.height-r/2?`bottom`:`center`}function _v(e,t,n,r){let{x:i,width:a}=r,o=n.caretSize+n.caretPadding;if(e===`left`&&i+a+o>t.width||e===`right`&&i-a-o<0)return!0}function vv(e,t,n,r){let{x:i,width:a}=n,{width:o,chartArea:{left:s,right:c}}=e,l=`center`;return r===`center`?l=i<=(s+c)/2?`left`:`right`:i<=a/2?l=`left`:i>=o-a/2&&(l=`right`),_v(l,e,t,n)&&(l=`center`),l}function yv(e,t,n){let r=n.yAlign||t.yAlign||gv(e,n);return{xAlign:n.xAlign||t.xAlign||vv(e,t,n,r),yAlign:r}}function bv(e,t){let{x:n,width:r}=e;return t===`right`?n-=r:t===`center`&&(n-=r/2),n}function xv(e,t,n){let{y:r,height:i}=e;return t===`top`?r+=n:t===`bottom`?r-=i+n:r-=i/2,r}function Sv(e,t,n,r){let{caretSize:i,caretPadding:a,cornerRadius:o}=e,{xAlign:s,yAlign:c}=n,l=i+a,{topLeft:u,topRight:d,bottomLeft:f,bottomRight:p}=Qd(o),m=bv(t,s),h=xv(t,c,l);return c===`center`?s===`left`?m+=l:s===`right`&&(m-=l):s===`left`?m-=Math.max(u,f)+i:s===`right`&&(m+=Math.max(d,p)+i),{x:Vu(m,0,r.width-t.width),y:Vu(h,0,r.height-t.height)}}function Cv(e,t,n){let r=$d(n.padding);return t===`center`?e.x+e.width/2:t===`right`?e.x+e.width-r.right:e.x+r.left}function wv(e){return fv([],pv(e))}function Tv(e,t,n){return rf(e,{tooltip:t,tooltipItems:n,type:`tooltip`})}function Ev(e,t){let n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}var Dv={beforeTitle:Hl,title(e){if(e.length>0){let t=e[0],n=t.chart.data.labels,r=n?n.length:0;if(this&&this.options&&this.options.mode===`dataset`)return t.dataset.label||``;if(t.label)return t.label;if(r>0&&t.dataIndex{let t={before:[],lines:[],after:[]},i=Ev(n,e);fv(t.before,pv(Ov(i,`beforeLabel`,this,e))),fv(t.lines,Ov(i,`label`,this,e)),fv(t.after,pv(Ov(i,`afterLabel`,this,e))),r.push(t)}),r}getAfterBody(e,t){return wv(Ov(t.callbacks,`afterBody`,this,e))}getFooter(e,t){let{callbacks:n}=t,r=Ov(n,`beforeFooter`,this,e),i=Ov(n,`footer`,this,e),a=Ov(n,`afterFooter`,this,e),o=[];return o=fv(o,pv(r)),o=fv(o,pv(i)),o=fv(o,pv(a)),o}_createItems(e){let t=this._active,n=this.chart.data,r=[],i=[],a=[],o=[],s,c;for(s=0,c=t.length;se.filter(t,r,i,n))),e.itemSort&&(o=o.sort((t,r)=>e.itemSort(t,r,n))),$l(o,t=>{let n=Ev(e.callbacks,t);r.push(Ov(n,`labelColor`,this,t)),i.push(Ov(n,`labelPointStyle`,this,t)),a.push(Ov(n,`labelTextColor`,this,t))}),this.labelColors=r,this.labelPointStyles=i,this.labelTextColors=a,this.dataPoints=o,o}update(e,t){let n=this.options.setContext(this.getContext()),r=this._active,i,a=[];if(!r.length)this.opacity!==0&&(i={opacity:0});else{let e=dv[n.position].call(this,r,this._eventPosition);a=this._createItems(n),this.title=this.getTitle(a,n),this.beforeBody=this.getBeforeBody(a,n),this.body=this.getBody(a,n),this.afterBody=this.getAfterBody(a,n),this.footer=this.getFooter(a,n);let t=this._size=hv(this,n),o=Object.assign({},e,t),s=yv(this.chart,n,o),c=Sv(n,o,s,this.chart);this.xAlign=s.xAlign,this.yAlign=s.yAlign,i={opacity:1,x:c.x,y:c.y,width:t.width,height:t.height,caretX:e.x,caretY:e.y}}this._tooltipItems=a,this.$context=void 0,i&&this._resolveAnimations().update(this,i),e&&n.external&&n.external.call(this,{chart:this.chart,tooltip:this,replay:t})}drawCaret(e,t,n,r){let i=this.getCaretPosition(e,n,r);t.lineTo(i.x1,i.y1),t.lineTo(i.x2,i.y2),t.lineTo(i.x3,i.y3)}getCaretPosition(e,t,n){let{xAlign:r,yAlign:i}=this,{caretSize:a,cornerRadius:o}=n,{topLeft:s,topRight:c,bottomLeft:l,bottomRight:u}=Qd(o),{x:d,y:f}=e,{width:p,height:m}=t,h,g,_,v,y,b;return i===`center`?(y=f+m/2,r===`left`?(h=d,g=h-a,v=y+a,b=y-a):(h=d+p,g=h+a,v=y-a,b=y+a),_=h):(g=r===`left`?d+Math.max(s,l)+a:r===`right`?d+p-Math.max(c,u)-a:this.caretX,i===`top`?(v=f,y=v-a,h=g-a,_=g+a):(v=f+m,y=v+a,h=g+a,_=g-a),b=v),{x1:h,x2:g,x3:_,y1:v,y2:y,y3:b}}drawTitle(e,t,n){let r=this.title,i=r.length,a,o,s;if(i){let c=np(n.rtl,this.x,this.width);for(e.x=Cv(this,n.titleAlign,n),t.textAlign=c.textAlign(n.titleAlign),t.textBaseline=`middle`,a=ef(n.titleFont),o=n.titleSpacing,t.fillStyle=n.titleColor,t.font=a.string,s=0;se!==0)?(e.beginPath(),e.fillStyle=i.multiKeyBackground,Gd(e,{x:t,y:p,w:c,h:s,radius:o}),e.fill(),e.stroke(),e.fillStyle=a.backgroundColor,e.beginPath(),Gd(e,{x:n,y:p+1,w:c-2,h:s-2,radius:o}),e.fill()):(e.fillStyle=i.multiKeyBackground,e.fillRect(t,p,c,s),e.strokeRect(t,p,c,s),e.fillStyle=a.backgroundColor,e.fillRect(n,p+1,c-2,s-2))}e.fillStyle=this.labelTextColors[n]}drawBody(e,t,n){let{body:r}=this,{bodySpacing:i,bodyAlign:a,displayColors:o,boxHeight:s,boxWidth:c,boxPadding:l}=n,u=ef(n.bodyFont),d=u.lineHeight,f=0,p=np(n.rtl,this.x,this.width),m=function(n){t.fillText(n,p.x(e.x+f),e.y+d/2),e.y+=d+i},h=p.textAlign(a),g,_,v,y,b,x,S;for(t.textAlign=a,t.textBaseline=`middle`,t.font=u.string,e.x=Cv(this,h,n),t.fillStyle=n.bodyColor,$l(this.beforeBody,m),f=o&&h!==`right`?a===`center`?c/2+l:c+2+l:0,y=0,x=r.length;y0&&t.stroke()}_updateAnimationTarget(e){let t=this.chart,n=this.$animations,r=n&&n.x,i=n&&n.y;if(r||i){let n=dv[e.position].call(this,this._active,this._eventPosition);if(!n)return;let a=this._size=hv(this,e),o=Object.assign({},n,this._size),s=yv(t,e,o),c=Sv(e,o,s,t);(r._to!==c.x||i._to!==c.y)&&(this.xAlign=s.xAlign,this.yAlign=s.yAlign,this.width=a.width,this.height=a.height,this.caretX=n.x,this.caretY=n.y,this._resolveAnimations().update(this,c))}}_willRender(){return!!this.opacity}draw(e){let t=this.options.setContext(this.getContext()),n=this.opacity;if(!n)return;this._updateAnimationTarget(t);let r={width:this.width,height:this.height},i={x:this.x,y:this.y};n=Math.abs(n)<.001?0:n;let a=$d(t.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;t.enabled&&o&&(e.save(),e.globalAlpha=n,this.drawBackground(i,e,r,t),rp(e,t.textDirection),i.y+=a.top,this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),ip(e,t.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,t){let n=this._active,r=e.map(({datasetIndex:e,index:t})=>{let n=this.chart.getDatasetMeta(e);if(!n)throw Error(`Cannot find a dataset at index `+e);return{datasetIndex:e,element:n.data[t],index:t}}),i=!eu(n,r),a=this._positionChanged(r,t);(i||a)&&(this._active=r,this._eventPosition=t,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,t,n=!0){if(t&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let r=this.options,i=this._active||[],a=this._getActiveElements(e,i,t,n),o=this._positionChanged(a,e),s=t||!eu(a,i)||o;return s&&(this._active=a,(r.enabled||r.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,t))),s}_getActiveElements(e,t,n,r){let i=this.options;if(e.type===`mouseout`)return[];if(!r)return t.filter(e=>this.chart.data.datasets[e.datasetIndex]&&this.chart.getDatasetMeta(e.datasetIndex).controller.getParsed(e.index)!==void 0);let a=this.chart.getElementsAtEventForMode(e,i.mode,i,n);return i.reverse&&a.reverse(),a}_positionChanged(e,t){let{caretX:n,caretY:r,options:i}=this,a=dv[i.position].call(this,e,t);return a!==!1&&(n!==a.x||r!==a.y)}},Av=Object.freeze({__proto__:null,Colors:p_,Decimation:y_,Filler:X_,Legend:av,SubTitle:uv,Title:cv,Tooltip:{id:`tooltip`,_element:kv,positioners:dv,afterInit(e,t,n){n&&(e.tooltip=new kv({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){let t=e.tooltip;if(t&&t._willRender()){let n={tooltip:t};if(e.notifyPlugins(`beforeTooltipDraw`,{...n,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins(`afterTooltipDraw`,n)}},afterEvent(e,t){if(e.tooltip){let n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:`average`,backgroundColor:`rgba(0,0,0,0.8)`,titleColor:`#fff`,titleFont:{weight:`bold`},titleSpacing:2,titleMarginBottom:6,titleAlign:`left`,bodyColor:`#fff`,bodySpacing:2,bodyFont:{},bodyAlign:`left`,footerColor:`#fff`,footerSpacing:2,footerMarginTop:6,footerFont:{weight:`bold`},footerAlign:`left`,padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:`#fff`,displayColors:!0,boxPadding:0,borderColor:`rgba(0,0,0,0)`,borderWidth:0,animation:{duration:400,easing:`easeOutQuart`},animations:{numbers:{type:`number`,properties:[`x`,`y`,`width`,`height`,`caretX`,`caretY`]},opacity:{easing:`linear`,duration:200}},callbacks:Dv},defaultRoutes:{bodyFont:`font`,footerFont:`font`,titleFont:`font`},descriptors:{_scriptable:e=>e!==`filter`&&e!==`itemSort`&&e!==`external`,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:`animation`}},additionalOptionScopes:[`interaction`]}}),jv=(e,t,n,r)=>(typeof t==`string`?(n=e.push(t)-1,r.unshift({index:n,label:t})):isNaN(t)&&(n=null),n);function Mv(e,t,n,r){let i=e.indexOf(t);return i===-1?jv(e,t,n,r):i===e.lastIndexOf(t)?i:n}var Nv=(e,t)=>e===null?null:Vu(Math.round(e),0,t);function Pv(e){let t=this.getLabels();return e>=0&&et.length-1?null:this.getPixelForValue(t[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}};function Iv(e,t){let n=[],{bounds:r,step:i,min:a,max:o,precision:s,count:c,maxTicks:l,maxDigits:u,includeBounds:d}=e,f=i||1,p=l-1,{min:m,max:h}=t,g=!Wl(a),_=!Wl(o),v=!Wl(c),y=(h-m)/(u+1),b=Du((h-m)/p/f)*f,x,S,C,w;if(b<1e-14&&!g&&!_)return[{value:m},{value:h}];w=Math.ceil(h/b)-Math.floor(m/b),w>p&&(b=Du(w*b/p/f)*f),Wl(s)||(x=10**s,b=Math.ceil(b*x)/x),r===`ticks`?(S=Math.floor(m/b)*b,C=Math.ceil(h/b)*b):(S=m,C=h),g&&_&&i&&ju((o-a)/i,b/1e3)?(w=Math.round(Math.min((o-a)/b,l)),b=(o-a)/w,S=a,C=o):v?(S=g?a:S,C=_?o:C,w=c-1,b=(C-S)/w):(w=(C-S)/b,w=Eu(w,Math.round(w),b/1e3)?Math.round(w):Math.ceil(w));let ee=Math.max(Fu(b),Fu(S));x=10**(Wl(s)?ee:s),S=Math.round(S*x)/x,C=Math.round(C*x)/x;let te=0;for(g&&(d&&S!==a?(n.push({value:a}),So)break;n.push({value:e})}return _&&d&&C!==o?n.length&&Eu(n[n.length-1].value,o,Lv(o,y,e))?n[n.length-1].value=o:n.push({value:o}):(!_||C===o)&&n.push({value:C}),n}function Lv(e,t,{horizontal:n,minRotation:r}){let i=Nu(r),a=(n?Math.sin(i):Math.cos(i))||.001,o=.75*t*(``+e).length;return Math.min(t/a,o)}var Rv=class extends Mh{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,t){return Wl(e)||(typeof e==`number`||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){let{beginAtZero:e}=this.options,{minDefined:t,maxDefined:n}=this.getUserBounds(),{min:r,max:i}=this,a=e=>r=t?r:e,o=e=>i=n?i:e;if(e){let e=Tu(r),t=Tu(i);e<0&&t<0?o(0):e>0&&t>0&&a(0)}if(r===i){let t=i===0?1:Math.abs(i*.05);o(i+t),e||a(r-t)}this.min=r,this.max=i}getTickLimit(){let{maxTicksLimit:e,stepSize:t}=this.options.ticks,n;return t?(n=Math.ceil(this.max/t)-Math.floor(this.min/t)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${t} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),e||=11),e&&(n=Math.min(e,n)),n}computeTickLimit(){return 1/0}buildTicks(){let e=this.options,t=e.ticks,n=this.getTickLimit();n=Math.max(2,n);let r=Iv({maxTicks:n,bounds:e.bounds,min:e.min,max:e.max,precision:t.precision,step:t.stepSize,count:t.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:t.minRotation||0,includeBounds:t.includeBounds!==!1},this._range||this);return e.bounds===`ticks`&&Mu(r,this,`value`),e.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){let e=this.ticks,t=this.min,n=this.max;if(super.configure(),this.options.offset&&e.length){let r=(n-t)/Math.max(e.length-1,1)/2;t-=r,n+=r}this._startValue=t,this._endValue=n,this._valueRange=n-t}getLabelForValue(e){return yd(e,this.chart.options.locale,this.options.ticks.format)}},zv=class extends Rv{static id=`linear`;static defaults={ticks:{callback:Sd.formatters.numeric}};determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=ql(e)?e:0,this.max=ql(t)?t:1,this.handleTickRangeOptions()}computeTickLimit(){let e=this.isHorizontal(),t=e?this.width:this.height,n=Nu(this.options.ticks.minRotation),r=(e?Math.sin(n):Math.cos(n))||.001,i=this._resolveTickFontOptions(0);return Math.ceil(t/Math.min(40,i.lineHeight/r))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}},Bv=e=>Math.floor(wu(e)),Vv=(e,t)=>10**(Bv(e)+t);function Hv(e){return e/10**Bv(e)==1}function Uv(e,t,n){let r=10**n,i=Math.floor(e/r);return Math.ceil(t/r)-i}function Wv(e,t){let n=Bv(t-e);for(;Uv(e,t,n)>10;)n++;for(;Uv(e,t,n)<10;)n--;return Math.min(n,Bv(e))}function Gv(e,{min:t,max:n}){t=Jl(e.min,t);let r=[],i=Bv(t),a=Wv(t,n),o=a<0?10**Math.abs(a):1,s=10**a,c=i>a?10**i:0,l=Math.round((t-c)*o)/o,u=Math.floor((t-c)/s/10)*s*10,d=Math.floor((l-u)/10**a),f=Jl(e.min,Math.round((c+u+d*10**a)*o)/o);for(;f=10?d=d<15?15:20:d++,d>=20&&(a++,d=2,o=a>=0?1:o),f=Math.round((c+u+d*10**a)*o)/o;let p=Jl(e.max,f);return r.push({value:p,major:Hv(p),significand:d}),r}var Kv=class extends Mh{static id=`logarithmic`;static defaults={ticks:{callback:Sd.formatters.logarithmic,major:{enabled:!0}}};constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,t){let n=Rv.prototype.parse.apply(this,[e,t]);if(n===0){this._zero=!0;return}return ql(n)&&n>0?n:null}determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=ql(e)?Math.max(0,e):null,this.max=ql(t)?Math.max(0,t):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!ql(this._userMin)&&(this.min=e===Vv(this.min,0)?Vv(this.min,-1):Vv(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:e,maxDefined:t}=this.getUserBounds(),n=this.min,r=this.max,i=t=>n=e?n:t,a=e=>r=t?r:e;n===r&&(n<=0?(i(1),a(10)):(i(Vv(n,-1)),a(Vv(r,1)))),n<=0&&i(Vv(r,-1)),r<=0&&a(Vv(n,1)),this.min=n,this.max=r}buildTicks(){let e=this.options,t=Gv({min:this._userMin,max:this._userMax},this);return e.bounds===`ticks`&&Mu(t,this,`value`),e.reverse?(t.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),t}getLabelForValue(e){return e===void 0?`0`:yd(e,this.chart.options.locale,this.options.ticks.format)}configure(){let e=this.min;super.configure(),this._startValue=wu(e),this._valueRange=wu(this.max)-wu(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(wu(e)-this._startValue)/this._valueRange)}getValueForPixel(e){let t=this.getDecimalForPixel(e);return 10**(this._startValue+t*this._valueRange)}};function qv(e){let t=e.ticks;if(t.display&&e.display){let e=$d(t.backdropPadding);return Yl(t.font&&t.font.size,Od.font.size)+e.height}return 0}function Jv(e,t,n){return n=Gl(n)?n:[n],{w:jd(e,t.string,n),h:n.length*t.lineHeight}}function Yv(e,t,n,r,i){return e===r||e===i?{start:t-n/2,end:t+n/2}:ei?{start:t-n,end:t}:{start:t,end:t+n}}function Xv(e){let t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},n=Object.assign({},t),r=[],i=[],a=e._pointLabels.length,o=e.options.pointLabels,s=o.centerPointLabels?gu/a:0;for(let c=0;ct.r&&(s=(r.end-t.r)/a,e.r=Math.max(e.r,t.r+s)),i.startt.b&&(c=(i.end-t.b)/o,e.b=Math.max(e.b,t.b+c))}function Qv(e,t,n){let r=e.drawingArea,{extra:i,additionalAngle:a,padding:o,size:s}=n,c=e.getPointPosition(t,r+i+o,a),l=Math.round(Pu(zu(c.angle+xu))),u=ry(c.y,s.h,l),d=ty(l),f=ny(c.x,s.w,d);return{visible:!0,x:c.x,y:u,textAlign:d,left:f,top:u,right:f+s.w,bottom:u+s.h}}function $v(e,t){if(!t)return!0;let{left:n,top:r,right:i,bottom:a}=e;return!(Id({x:n,y:r},t)||Id({x:n,y:a},t)||Id({x:i,y:r},t)||Id({x:i,y:a},t))}function ey(e,t,n){let r=[],i=e._pointLabels.length,a=e.options,{centerPointLabels:o,display:s}=a.pointLabels,c={extra:qv(a)/2,additionalAngle:o?gu/i:0},l;for(let a=0;a270||n<90)&&(e-=t),e}function iy(e,t,n){let{left:r,top:i,right:a,bottom:o}=n,{backdropColor:s}=t;if(!Wl(s)){let n=Qd(t.borderRadius),c=$d(t.backdropPadding);e.fillStyle=s;let l=r-c.left,u=i-c.top,d=a-r+c.width,f=o-i+c.height;Object.values(n).some(e=>e!==0)?(e.beginPath(),Gd(e,{x:l,y:u,w:d,h:f,radius:n}),e.fill()):e.fillRect(l,u,d,f)}}function ay(e,t){let{ctx:n,options:{pointLabels:r}}=e;for(let i=t-1;i>=0;i--){let t=e._pointLabelItems[i];if(!t.visible)continue;let a=r.setContext(e.getPointLabelContext(i));iy(n,a,t);let o=ef(a.font),{x:s,y:c,textAlign:l}=t;Wd(n,e._pointLabels[i],s,c+o.lineHeight/2,o,{color:a.color,textAlign:l,textBaseline:`middle`})}}function oy(e,t,n,r){let{ctx:i}=e;if(n)i.arc(e.xCenter,e.yCenter,t,0,_u);else{let n=e.getPointPosition(0,t);i.moveTo(n.x,n.y);for(let a=1;a{let n=Ql(this.options.pointLabels.callback,[e,t],this);return n||n===0?n:``}).filter((e,t)=>this.chart.getDataVisibility(t))}fit(){let e=this.options;e.display&&e.pointLabels.display?Xv(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,t,n,r){this.xCenter+=Math.floor((e-t)/2),this.yCenter+=Math.floor((n-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,t,n,r))}getIndexAngle(e){let t=_u/(this._pointLabels.length||1),n=this.options.startAngle||0;return zu(e*t+Nu(n))}getDistanceFromCenterForValue(e){if(Wl(e))return NaN;let t=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*t:(e-this.min)*t}getValueForDistanceFromCenter(e){if(Wl(e))return NaN;let t=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-t:this.min+t}getPointLabelContext(e){let t=this._pointLabels||[];if(e>=0&&e{if(t!==0||t===0&&this.min<0){s=this.getDistanceFromCenterForValue(e.value);let n=this.getContext(t),o=r.setContext(n),c=i.setContext(n);sy(this,o,s,a,c)}}),n.display){for(e.save(),o=a-1;o>=0;o--){let r=n.setContext(this.getPointLabelContext(o)),{color:i,lineWidth:a}=r;!a||!i||(e.lineWidth=a,e.strokeStyle=i,e.setLineDash(r.borderDash),e.lineDashOffset=r.borderDashOffset,s=this.getDistanceFromCenterForValue(t.reverse?this.min:this.max),c=this.getPointPosition(o,s),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(c.x,c.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){let e=this.ctx,t=this.options,n=t.ticks;if(!n.display)return;let r=this.getIndexAngle(0),i,a;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(r),e.textAlign=`center`,e.textBaseline=`middle`,this.ticks.forEach((r,o)=>{if(o===0&&this.min>=0&&!t.reverse)return;let s=n.setContext(this.getContext(o)),c=ef(s.font);if(i=this.getDistanceFromCenterForValue(this.ticks[o].value),s.showLabelBackdrop){e.font=c.string,a=e.measureText(r.label).width,e.fillStyle=s.backdropColor;let t=$d(s.backdropPadding);e.fillRect(-a/2-t.left,-i-c.size/2-t.top,a+t.width,c.size+t.height)}Wd(e,r.label,0,-i,c,{color:s.color,strokeColor:s.textStrokeColor,strokeWidth:s.textStrokeWidth})}),e.restore()}drawTitle(){}},uy={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},dy=Object.keys(uy);function fy(e,t){return e-t}function py(e,t){if(Wl(t))return null;let n=e._adapter,{parser:r,round:i,isoWeekday:a}=e._parseOpts,o=t;return typeof r==`function`&&(o=r(o)),ql(o)||(o=typeof r==`string`?n.parse(o,r):n.parse(o)),o===null?null:(i&&(o=i===`week`&&(Au(a)||a===!0)?n.startOf(o,`isoWeek`,a):n.startOf(o,i)),+o)}function my(e,t,n,r){let i=dy.length;for(let a=dy.indexOf(e);a=dy.indexOf(n);a--){let n=dy[a];if(uy[n].common&&e._adapter.diff(i,r,n)>=t-1)return n}return dy[n?dy.indexOf(n):0]}function gy(e){for(let t=dy.indexOf(e)+1,n=dy.length;t=t?n[r]:n[i];e[a]=!0}}function vy(e,t,n,r){let i=e._adapter,a=+i.startOf(t[0].value,r),o=t[t.length-1].value,s,c;for(s=a;s<=o;s=+i.add(s,1,r))c=n[s],c>=0&&(t[c].major=!0);return t}function yy(e,t,n){let r=[],i={},a=t.length,o,s;for(o=0;o+e.value))}initOffsets(e=[]){let t=0,n=0,r,i;this.options.offset&&e.length&&(r=this.getDecimalForValue(e[0]),t=e.length===1?1-r:(this.getDecimalForValue(e[1])-r)/2,i=this.getDecimalForValue(e[e.length-1]),n=e.length===1?i:(i-this.getDecimalForValue(e[e.length-2]))/2);let a=e.length<3?.5:.25;t=Vu(t,0,a),n=Vu(n,0,a),this._offsets={start:t,end:n,factor:1/(t+1+n)}}_generate(){let e=this._adapter,t=this.min,n=this.max,r=this.options,i=r.time,a=i.unit||my(i.minUnit,t,n,this._getLabelCapacity(t)),o=Yl(r.ticks.stepSize,1),s=a===`week`&&i.isoWeekday,c=Au(s)||s===!0,l={},u=t,d,f;if(c&&(u=+e.startOf(u,`isoWeek`,s)),u=+e.startOf(u,c?`day`:a),e.diff(n,t,a)>1e5*o)throw Error(t+` and `+n+` are too far apart with stepSize of `+o+` `+a);let p=r.ticks.source===`data`&&this.getDataTimestamps();for(d=u,f=0;d+e)}getLabelForValue(e){let t=this._adapter,n=this.options.time;return n.tooltipFormat?t.format(e,n.tooltipFormat):t.format(e,n.displayFormats.datetime)}format(e,t){let n=this.options.time.displayFormats,r=this._unit,i=t||n[r];return this._adapter.format(e,i)}_tickFormatFunction(e,t,n,r){let i=this.options,a=i.ticks.callback;if(a)return Ql(a,[e,t,n],this);let o=i.time.displayFormats,s=this._unit,c=this._majorUnit,l=s&&o[s],u=c&&o[c],d=n[t],f=c&&u&&d&&d.major;return this._adapter.format(e,r||(f?u:l))}generateTickLabels(e){let t,n,r;for(t=0,n=e.length;t0?o:1}getDataTimestamps(){let e=this._cache.data||[],t,n;if(e.length)return e;let r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(t=0,n=r.length;t=e[r].pos&&t<=e[i].pos&&({lo:r,hi:i}=Gu(e,`pos`,t)),{pos:a,time:s}=e[r],{pos:o,time:c}=e[i]):(t>=e[r].time&&t<=e[i].time&&({lo:r,hi:i}=Gu(e,`time`,t)),{time:a,pos:s}=e[r],{time:o,pos:c}=e[i]);let l=o-a;return l?s+(c-s)*(t-a)/l:s}var Sy=class extends by{static id=`timeseries`;static defaults=by.defaults;constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let e=this._getTimestampsForTable(),t=this._table=this.buildLookupTable(e);this._minPos=xy(t,this.min),this._tableRange=xy(t,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){let{min:t,max:n}=this,r=[],i=[],a,o,s,c,l;for(a=0,o=e.length;a=t&&c<=n&&r.push(c);if(r.length<2)return[{time:t,pos:0},{time:n,pos:1}];for(a=0,o=r.length;ae-t)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;let t=this.getDataTimestamps(),n=this.getLabelTimestamps();return e=t.length&&n.length?this.normalize(t.concat(n)):t.length?t:n,e=this._cache.all=e,e}getDecimalForValue(e){return(xy(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){let t=this._offsets,n=this.getDecimalForPixel(e)/t.factor-t.end;return xy(this._table,n*this._tableRange+this._minPos,!0)}},Cy=[mm,t_,Av,Object.freeze({__proto__:null,CategoryScale:Fv,LinearScale:zv,LogarithmicScale:Kv,RadialLinearScale:ly,TimeScale:by,TimeSeriesScale:Sy})];bg.register(...Cy);var wy=bg,Ty=R(``);function Ey(e,t){E(t,!0);let n=ya(t,`class`,3,``),r=ya(t,`ariaLabel`,3,``),i=k(null),a=null;An(()=>{if(Da.tick,!I(i)||typeof t.build!=`function`)return;let e=t.build();if(!e){a&&=(a.destroy(),null);return}return a&&=(a.destroy(),null),a=new wy(I(i).getContext(`2d`),e),()=>{a&&=(a.destroy(),null)}});var o=Ty();ga(o,e=>A(i,e),()=>I(i)),F(()=>{U(o,1,Fi(n())),W(o,`aria-label`,r())}),z(e,o),D()}var Dy=R(``),Oy=R(`
        `);function ky(e,t){E(t,!0);let n=ya(t,`options`,19,()=>[]),r=ya(t,`ariaLabel`,3,``),i=ya(t,`class`,3,``);var a=Oy();H(a,21,n,e=>e.value,(e,n)=>{var r=Dy();let i;var a=M(r,!0);T(r),F(()=>{i=U(r,1,`segmented-btn svelte-92fh5i`,null,i,{active:t.value===I(n).value}),W(r,`aria-pressed`,t.value===I(n).value),B(a,I(n).label)}),L(`click`,r,()=>t.onchange?.(I(n).value)),z(e,r)}),T(a),F(()=>{U(a,1,Fi([`segmented-control`,i()]),`svelte-92fh5i`),W(a,`aria-label`,r())}),z(e,a),D()}Hr([`click`]);function Ay(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function jy(){return{grid:Ay(`--chart-grid`),text:Ay(`--chart-text`),dayMarker:Ay(`--chart-day-marker`),tooltipBg:Ay(`--chart-tooltip-bg`),tooltipBorder:Ay(`--chart-tooltip-border`),tooltipText:Ay(`--chart-tooltip-text`)}}function My(){return{size:11,family:`'SF Mono', Menlo, Consolas, monospace`}}function Ny(e,t){return{backgroundColor:e.tooltipBg,borderColor:e.tooltipBorder,borderWidth:1,titleColor:e.tooltipText,bodyColor:e.tooltipText,callbacks:t}}function Py(e){if(typeof document>`u`||!document.body)return e;let t=document.createElement(`span`);t.style.display=`none`,t.style.color=e,document.body.appendChild(t);let n=getComputedStyle(t).color;return document.body.removeChild(t),n||e}var Fy=[`#c2845a`,`#7a9e7e`,`#d4a574`,`#b8a98e`,`#8b9e6b`,`#7d8a97`,`#c47a5a`,`#6b8e6b`,`#a09486`,`#9b7ea4`,`#c49a6c`];function Iy(){return[...Fy]}function Ly(e){let t=5381,n=String(e||``);for(let e=0;eac(e)}}var By={seconds:{apiName:`second`,windowLabel:`Last 60 seconds`,refreshMs:2e3},minutes:{apiName:`minute`,windowLabel:`Last 60 minutes`,refreshMs:5e3},hours:{apiName:`hour`,windowLabel:`Last 24 hours`,refreshMs:2e4},days:{apiName:`day`,windowLabel:`Last 30 days`,refreshMs:6e4}},Vy=[{value:`seconds`,label:`Seconds`},{value:`minutes`,label:`Minutes`},{value:`hours`,label:`Hours`},{value:`days`,label:`Days`}];function Hy(){return{input:0,output:0,prompt:0,local:0}}function Uy(e){return String(e).padStart(2,`0`)}function Wy(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function Gy(e,t){if(!Number.isFinite(t))return``;let n=new Date(t);switch(e){case`seconds`:return Uy(n.getHours())+`:`+Uy(n.getMinutes())+`:`+Uy(n.getSeconds());case`minutes`:return Uy(n.getHours())+`:`+Uy(n.getMinutes());case`hours`:return Uy(n.getHours())+`:00`;default:return Uy(n.getMonth()+1)+`-`+Uy(n.getDate())}}function Ky(e,t){let n=[],r=[],i={input:[],output:[],prompt:[],local:[]},a=Hy();for(let o of e||[]){let e=Date.parse(o&&o.start),s=Wy(o&&o.input_tokens),c=Wy(o&&o.output_tokens),l=Wy(o&&o.prompt_cached_tokens),u=Wy(o&&o.locally_cached_tokens);n.push(Gy(t,e)),r.push(Number.isFinite(e)?e:null),i.input.push(s),i.output.push(c),i.prompt.push(l),i.local.push(u),a.input+=s,a.output+=c,a.prompt+=l,a.local+=u}return{labels:n,stamps:r,cols:i,totals:a}}function qy(e){let t=e||Hy();return t.input+t.output+t.prompt+t.local>0}function Jy(e,t){return ac(Math.max(0,Math.round(e&&e[t]||0)))}function Yy(e){return(By[e]||By.minutes).windowLabel}function Xy(e,t){return`Live token throughput, `+Yy(t).toLowerCase()+`. Input `+Jy(e,`input`)+`, output `+Jy(e,`output`)+`, prompt cached `+Jy(e,`prompt`)+`, locally cached `+Jy(e,`local`)+` tokens.`}function Zy(e,t,n,r){let i=e=>ac(Math.max(0,Math.round(e))),a=n.stamps,o=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderWidth:0,borderRadius:0,categoryPercentage:1,barPercentage:1,stack:`tokens`});return{type:`bar`,plugins:[{id:`liveTokensDayMarks`,afterDatasetsDraw:t=>{if(r===`days`)return;let n=t.getDatasetMeta(0),i=t.chartArea;if(!n||!n.data||!i)return;let o=t.ctx;o.save(),o.font=`10px 'SF Mono', Menlo, Consolas, monospace`;let s=null;for(let t=0;t{if(!e.length)return``;let t=a[e[0].dataIndex];if(!t)return e[0].label;let n=new Date(t);return r===`days`?n.toLocaleDateString():n.toLocaleString()},label:e=>e.dataset.label+`: `+i(e.parsed.y),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+i(t)}})}}}}var Qy=900,$y=6,eb=new class{#e=k(`minutes`);get granularity(){return I(this.#e)}set granularity(e){A(this.#e,e,!0)}#t=k(j([]));get buckets(){return I(this.#t)}set buckets(e){A(this.#t,e,!0)}#n=k(!1);get active(){return I(this.#n)}set active(e){A(this.#n,e,!0)}#r=null;#i=null;#a=null;#o=0;#s=null;#c=!1;start(){this.stop(),this.active=!0,this.fetch(),this.#l(),this.#u()}stop(){this.active=!1,this.#r&&=(clearInterval(this.#r),null),this.#i&&=(clearTimeout(this.#i),null),this.#a&&=(clearTimeout(this.#a),null),this.#o=0,this.#s&&=(this.#s.abort(),null),this.buckets=[]}setGranularity(e){!By[e]||e===this.granularity||(this.granularity=e,this.buckets=[],this.#l(),this.fetch())}#l(){this.#r&&=(clearInterval(this.#r),null);let e=By[this.granularity]||By.minutes;this.#r=setInterval(()=>{this.active&&this.fetch()},e.refreshMs)}noteUsageEvent(e){!this.active||e!==`usage.flushed`||(this.#i||=setTimeout(()=>{this.#i=null,this.fetch()},Qy))}async fetch(){if(!this.active||this.#c)return;this.#c=!0;let e=this.granularity;try{let t=await ps(`/admin/usage/throughput?granularity=`+(By[e]||By.minutes).apiName,{label:`token throughput`});if(t.stale||!t.ok||this.granularity!==e)return;this.buckets=t.data&&Array.isArray(t.data.buckets)?t.data.buckets:[]}catch(e){if(hs(e))return;console.error(`Failed to fetch token throughput:`,e)}finally{this.#c=!1,this.active&&this.granularity!==e&&this.fetch()}}async#u(){await vs.ensureLoaded(),this.active&&vs.liveLogsVisible()&&(typeof ReadableStream>`u`||(this.#s&&this.#s.abort(),this.#s=new AbortController,this.#d(this.#s)))}async#d(e){try{let t=await ds(`/admin/live/logs?types=usage`,{signal:e.signal});if(!t.ok||!t.body||typeof t.body.getReader!=`function`){this.#m();return}this.#o=0,await this.#f(t.body.getReader()),this.#m()}catch(e){if(hs(e))return;console.error(`Live usage stream failed:`,e),this.#m()}}async#f(e){let t=new TextDecoder,n=``;for(;;){let r=await e.read();if(r.done)break;n+=t.decode(r.value,{stream:!0});let i;for(;i=n.match(/\r?\n\r?\n/);){let e=i.index,t=n.slice(0,e);n=n.slice(e+i[0].length),this.#p(t)}}n+=t.decode(),n.trim()&&this.#p(n)}#p(e){let t=String(e||``).split(/\r?\n/),n=[];for(let e of t)e.indexOf(`data:`)===0&&n.push(e.slice(5).trimStart());if(n.length===0)return;let r;try{r=JSON.parse(n.join(` +`))}catch{return}if(!r||typeof r!=`object`)return;let i=String(r.type||``).trim();i.indexOf(`usage.`)===0&&this.noteUsageEvent(i)}#m(){if(!this.active||this.#a)return;let e=Math.min(this.#o+1,$y);this.#o=e;let t=Math.min(3e4,500*2**(e-1));this.#a=setTimeout(()=>{this.#a=null,this.#u()},t)}},tb=R(`
        `),nb=R(`
        Waiting for live requests…
        `),rb=R(`

        Live Token Throughput

        `);function ib(e,t){E(t,!0);let n=O(()=>Ky(eb.buckets,eb.granularity)),r=O(()=>I(n).totals);function i(){return{input:Py(`var(--token-input)`),output:Py(`var(--token-output)`),prompt:Py(`var(--token-prompt)`),local:Py(`var(--token-local)`)}}let a=[{metric:`input`,label:`Input Tokens`,colorVar:`--token-input`},{metric:`output`,label:`Output Tokens`,colorVar:`--token-output`},{metric:`prompt`,label:`Prompt (Input) Cached`,colorVar:`--token-prompt`},{metric:`local`,label:`Locally Cached`,colorVar:`--token-local`}];var o=rb(),s=M(o),c=M(s),l=P(M(c),2),u=M(l);let d;var f=P(u,2),p=M(f,!0);T(f),T(l),T(c),ky(P(c,2),{ariaLabel:`Live token throughput granularity`,get options(){return Vy},get value(){return eb.granularity},onchange:e=>eb.setGranularity(e)}),T(s);var m=P(s,2);H(m,21,()=>a,e=>e.metric,(e,t)=>{var n=tb(),i=M(n),a=P(i,2),o=M(a,!0);T(a);var s=P(a,2),c=M(s,!0);T(s),T(n),F(e=>{Hi(i,`background: var(${I(t).colorVar??``})`),B(o,I(t).label),B(c,e)},[()=>Jy(I(r),I(t).metric)]),z(e,n)}),T(m);var h=P(m,2),g=M(h);{let e=O(()=>Xy(I(r),eb.granularity));Ey(g,{get ariaLabel(){return I(e)},build:()=>Zy(jy(),i(),I(n),eb.granularity)})}var _=P(g,2),v=e=>{z(e,nb())},y=O(()=>!qy(I(r)));V(_,e=>{I(y)&&e(v)}),T(h),T(o),F(e=>{d=U(u,1,`live-dot`,null,d,{"is-streaming":eb.active}),B(p,e)},[()=>Yy(eb.granularity)]),z(e,o),D()}function ab(e){let t=e||{};if(t.total_tokens!==null&&t.total_tokens!==void 0){let e=Number(t.total_tokens);if(Number.isFinite(e))return e}let n=Number(t.total_input_tokens||0),r=Number(t.total_output_tokens||0);return(Number.isFinite(n)?n:0)+(Number.isFinite(r)?r:0)}function ob(e,t){if(!t)return 0;let n=e&&e.summary?e.summary:{},r=Number(n.total_hits||0);return Number.isFinite(r)&&r>0?r:0}function sb(e,t,n){let r=Number(e&&e.total_requests||0);return(Number.isFinite(r)?r:0)+ob(t,n)}function cb(e,t,n){let r=ob(t,n);return r<=0?``:tc(sb(e,t,n)-r)+` to providers + `+tc(r)+` from cache`}function lb(e){let t=e&&e.summary?e.summary:{},n=Number(t.total_input_tokens||0),r=Number(t.total_output_tokens||0);return(Number.isFinite(n)?n:0)+(Number.isFinite(r)?r:0)}function ub(e,t,n){let r=e=>{let t=Number(e||0);return Number.isFinite(t)&&t>0?t:0},i=e||{},a=r(i.uncached_input_tokens),o=r(i.cached_input_tokens),s=r(i.cache_write_input_tokens),c=t&&t.summary?t.summary:{},l=n?r(c.total_input_tokens):0;return[{key:`uncached`,label:`Regular`,tokens:a+s,colorVar:`--cache-meter-uncached`,note:s>0?`Includes `+tc(s)+` cache-write tokens`:``},{key:`prompt`,label:`Prompt cached`,tokens:o,colorVar:`--cache-meter-prompt`,note:`Provider prompt-cache reads`},{key:`local`,label:`Locally cached`,tokens:l,colorVar:`--cache-meter-local`,note:`Served from GoModel response cache`}]}function db(e,t,n){return ub(e,t,n).reduce((e,t)=>e+t.tokens,0)}function fb(e,t,n){return db(e,t,n)>0}function pb(e,t,n){let r=ub(e,t,n),i=r.reduce((e,t)=>e+t.tokens,0);if(i<=0)return r.map(e=>Object.assign({},e,{pct:0}));let a=r.map(e=>{let t=e.tokens/i*100,n=Math.floor(t);return Object.assign({},e,{pct:n,remainder:t-n})}),o=100-a.reduce((e,t)=>e+t.pct,0);return a.map((e,t)=>({index:t,remainder:e.remainder,tokens:e.tokens})).filter(e=>e.tokens>0).sort((e,t)=>t.remainder-e.remainder).forEach(e=>{o>0&&(a[e.index].pct+=1,--o)}),a}function mb(e,t,n){return pb(e,t,n).filter(e=>e.tokens>0)}function hb(e){let t=[e.label+`: `+tc(e.tokens)+` input tokens (`+e.pct+`%)`];return e.note&&t.push(e.note),t.join(` +`)}function gb(e){let t=(e||[]).map(e=>e.label+` `+e.pct+`%`);return`Cache breakdown of input tokens — `+(t.length?t.join(`, `):`no data`)}function _b(e){return e.getUTCFullYear()+`-`+String(e.getUTCMonth()+1).padStart(2,`0`)+`-`+String(e.getUTCDate()).padStart(2,`0`)}function vb(e,t,n,r){if(t!==`daily`||!n||!r)return e;let i={};(e||[]).forEach(e=>{i[e.date]=e});let a=[];for(let e=new Date(n);e<=r;e.setUTCDate(e.getUTCDate()+1)){let t=_b(e);a.push(i[t]||{date:t,input_tokens:0,output_tokens:0,total_tokens:0,requests:0,input_cost:null,output_cost:null,total_cost:null})}return a}function yb(e,t){let n=e=>Number(e)||0,r=e.map(e=>e.date),i=e.map(e=>n(e.uncached_input_tokens)+n(e.cache_write_input_tokens)+n(e.cached_input_tokens)>0?n(e.uncached_input_tokens)+n(e.cache_write_input_tokens):n(e.input_tokens)),a=e.map(e=>n(e.output_tokens)),o=e.map(e=>n(e.cached_input_tokens)),s={};return(t||[]).forEach(e=>{s[e.date]=e}),{labels:r,inputPaid:i,output:a,prompt:o,local:r.map(e=>{let t=s[e];return t?n(t.input_tokens)+n(t.output_tokens):0})}}function bb(e){let t=e||{},n=Math.max(0,Number(t.uncached_input_tokens)||0),r=Math.max(0,Number(t.cached_input_tokens)||0),i=Math.max(0,Number(t.cache_write_input_tokens)||0),a=n+r+i;return a>0?r/a*100:0}function xb(e){let t=e||{};return(Number(t.uncached_input_tokens)||0)+(Number(t.cached_input_tokens)||0)+(Number(t.cache_write_input_tokens)||0)>0}function Sb(e){return xb(e)?Math.round(bb(e))+`%`:`—`}function Cb(e,t,n={}){let r=!!n.cacheEnabled,i=n.resolve||(e=>e),a=(e,t)=>i(`color-mix(in srgb, `+e+` `+t+`%, transparent)`),o=(e,t,n,r)=>Object.assign({label:e,data:t,borderColor:n,backgroundColor:n,fill:!1,tension:.3,borderWidth:2,pointRadius:0,pointHoverRadius:4},r||{}),s=[o(`Input Tokens`,t.inputPaid,i(`var(--token-input)`),{fill:`origin`}),o(`Output Tokens`,t.output,i(`var(--token-output)`),{fill:`-1`}),o(`Prompt (Input) Cached`,t.prompt,i(`var(--token-prompt)`),{fill:`-1`,borderDash:[6,4]})];return r&&s.push(o(`Locally Cached`,t.local,a(`var(--info)`,35),{fill:`-1`,borderDash:[2,3]})),{type:`line`,data:{labels:t.labels,datasets:s},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:Ny(e,{label:e=>e.dataset.label+`: `+e.parsed.y.toLocaleString(),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+t.toLocaleString()}})},scales:{x:{stacked:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:My(),maxRotation:0,autoSkip:!0,maxTicksLimit:10}},y:{stacked:!0,beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:zy(e)}}}}}function wb(e,t,n){let r=Math.max(0,Math.min(100,e));return{type:`doughnut`,data:{datasets:[{data:[r,100-r],backgroundColor:[t,n],borderWidth:0,spacing:0}]},options:{rotation:-90,circumference:180,cutout:`84%`,responsive:!0,maintainAspectRatio:!1,animation:{duration:0},layout:{padding:1},events:[],plugins:{legend:{display:!1},tooltip:{enabled:!1}}}}}var Tb=`gomodel_provider_status_details_expanded`,Eb=`gomodel_provider_card_expanded_overrides`,Db=3e3,Ob=`https://gomodel.enterpilot.io/docs/providers/`,kb={anthropic:`anthropic`,azure:`azure`,bailian:`bailian`,bedrock:`bedrock`,"bedrock-mantle":`bedrock-mantle`,cohere:`cohere`,deepseek:`deepseek`,gemini:`gemini`,opencode_go:`opencode-go`,oracle:`oracle`,vertex:`vertex`,vllm:`vllm`,xiaomi:`xiaomi`};function Ab(){return{summary:{total:0,healthy:0,degraded:0,unhealthy:0,overall_status:`degraded`},providers:[]}}function jb(e){let t={detailsExpanded:!1,cardOverrides:{}};try{if(e){let n=e.getItem(Tb);n===`true`||n===`false`?t.detailsExpanded=n===`true`:e.setItem(Tb,`false`);let r=JSON.parse(e.getItem(Eb)||`{}`);r&&typeof r==`object`&&!Array.isArray(r)&&(t.cardOverrides=r)}}catch{}return t}function Mb(e,t){if(e)try{e.setItem(Tb,t?`true`:`false`)}catch{}}function Nb(e,t){if(e)try{e.setItem(Eb,JSON.stringify(t))}catch{}}function Pb(e,t,n){let r=n&&n.name?String(n.name):``;return r&&Object.prototype.hasOwnProperty.call(e,r)?e[r]===!0:t}function Fb(e){return`is-`+(String(e&&e.overall_status||`degraded`).trim()||`degraded`)}function Ib(e){return`is-`+(String(e||`degraded`).trim()||`degraded`)}function Lb(e){let t=e||{};return String(t.healthy||0)+`/`+String(t.total||0)}function Rb(e){let t=e||{},n=Number(t.total||0),r=Number(t.healthy||0);return n>0&&rString(e&&e.status_label||``).trim().toLowerCase()===`starting`)}function Vb(e){if(!e||!e.runtime)return``;let t=e.runtime.last_model_fetch_at||``,n=e.runtime.last_availability_check_at||``;return t?n&&Date.parse(n)>Date.parse(t)?n:t:n}function Hb(e,t){let n=Vb(e);if(!n||typeof t!=`function`)return`-`;let r=t(n);if(!r||r===`-`)return`-`;let i=String(r).split(` `);return i.length>1?i.slice(1).join(` `):r}function Ub(e,t){let n=Vb(e);return n?typeof t==`function`?t(n):String(n):``}function Wb(e){if(!e)return``;let t=String(e.name||``).trim(),n=String(e.type||e.config&&e.config.type||``).trim();return!n||n===t?``:n}function Gb(e){let t=String(e&&(e.type||e.config&&e.config.type)||``).trim().toLowerCase(),n=t?kb[t]:``;return n?Ob+n+`?utm_source=gomodel_dashboard`:``}function Kb(e){let t=e&&e.config&&e.config.resilience?e.config.resilience.retry:null;return t?String(t.max_retries)+` retries, `+t.initial_backoff+` initial, `+t.max_backoff+` max, factor `+t.backoff_factor+`, jitter `+t.jitter_factor:`-`}function qb(e){let t=e&&e.config&&e.config.resilience?e.config.resilience.circuit_breaker:null;return t?String(t.failure_threshold)+` fail, `+String(t.success_threshold)+` success, `+t.timeout+` timeout`:`-`}function Jb(e){let t=e&&e.config&&Array.isArray(e.config.models)?e.config.models.filter(Boolean):[];return t.length===0?`Automatic`:t.join(`, `)}function Yb(e){if(!e)return``;let t=[];return e.status_reason&&t.push(String(e.status_reason)),e.last_error&&t.push(`Last error: `+String(e.last_error)),t.join(` + +`)}function Xb(e){let t=e&&e.request_health;return t&&typeof t==`object`?t:null}function Zb(e){let t=Xb(e);return t?String(t.circuit_state||``).trim():``}function Qb(e){let t=Zb(e);return t?t.charAt(0).toUpperCase()+t.slice(1):``}function $b(e){let t=Zb(e);return t===`open`?`is-unhealthy`:t===`half-open`?`is-degraded`:`is-healthy`}function ex(e){let t=Xb(e);if(!t)return``;let n=Number(t.requests||0),r=Number(t.errors||0),i=Math.round(Number(t.window_seconds||0)/60),a=i>0?`last `+i+` min`:`recent`;return String(n)+` request`+(n===1?``:`s`)+` · `+String(r)+` error`+(r===1?``:`s`)+` (`+a+`)`}function tx(e){let t=Xb(e);return t&&Array.isArray(t.models)?t.models:[]}function nx(e){return e?String(Number(e.errors||0))+`/`+String(Number(e.requests||0))+` failed`:``}function rx(e){let t=e&&e.last_error;return!t||!t.message?``:(t.status_code?`HTTP `+String(t.status_code)+`: `:``)+t.message}function ix(){return{name:``,slug:``,url:``,transport:`http`,description:``,enabled:!0,headers:[],allowed_tools:``,disallowed_tools:``,user_paths:``,tool_timeout_seconds:``}}function ax(){return{server:``,status:``,instructions:``,tools:[],prompts:[],resources:[],templates:[]}}function ox(e){return String(e&&(e.slug||e.name)||``).trim()}function sx(e){return String(e&&e.status||``).trim()||`connecting`}function cx(e){switch(sx(e)){case`connected`:return`status-success`;case`degraded`:return String(e&&e.last_error||``).trim()?`status-error`:`status-warning`;case`connecting`:return`status-neutral`;default:return`status-unknown`}}function lx(e,t){let n=sx(e),r=String(e&&e.last_error||``).trim();return r&&n!==`connected`?r:n===`connected`&&e&&e.connected_at?`Connected since `+(typeof t==`function`?t:String)(e.connected_at):``}function ux(e){return String(e&&e.transport||``)===`stdio`?`local command`:String(e&&e.url||``).trim()||`—`}function dx(e){let t=Number(e&&e.prompt_count||0),n=Number(e&&e.resource_count||0);return t+` prompts · `+n+` resources`}function fx(e){let t=String(e||``).normalize(`NFKD`).toLowerCase(),n=t.replace(/[\u0300-\u036f]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,64).replace(/-+$/g,``);if(n)return n;let r=2166136261;for(let e of t)r=Math.imul((r^e.codePointAt(0))>>>0,16777619)>>>0;return`mcp-`+r.toString(16).padStart(8,`0`)}function px(e){return String(e||``).split(` +`).map(e=>e.trim()).filter(e=>e)}function mx(e){return!e||typeof e!=`object`||Array.isArray(e)?[]:Object.keys(e).sort().map(t=>({name:t,value:String(e[t]||``)}))}function hx(e){let t={};return(Array.isArray(e)?e:[]).forEach(e=>{let n=String(e&&e.name||``).trim();n&&(t[n]=String(e&&e.value||``))}),t}function gx(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.slug,e.url,e.transport,e.description,e.status].some(e=>String(e||``).toLowerCase().includes(r)))}function _x(e){return{name:String(e.name||``).trim(),slug:ox(e),url:String(e.url||``).trim(),transport:e.transport===`sse`?`sse`:`http`,description:String(e.description||``).trim(),enabled:e.enabled!==!1,headers:mx(e.headers),allowed_tools:(Array.isArray(e.allowed_tools)?e.allowed_tools:[]).join(`, `),disallowed_tools:(Array.isArray(e.disallowed_tools)?e.disallowed_tools:[]).join(`, `),user_paths:(Array.isArray(e.user_paths)?e.user_paths:[]).join(` +`),tool_timeout_seconds:e.tool_timeout_seconds?String(e.tool_timeout_seconds):``}}function vx(e,t,n){let r=String(e.name||``).trim(),i=String(e.slug||fx(r)).trim().toLowerCase(),a=String(e.url||``).trim(),o=e.transport===`sse`?`sse`:`http`;if(!r)return{error:`Name is required.`};if(!/^[a-z0-9][a-z0-9_-]{0,63}$/.test(i))return{error:`Slug must use 1–64 lowercase ASCII letters, numbers, hyphens, or underscores.`};if(t===`create`&&(n||[]).some(e=>ox(e)===i))return{error:`Slug "`+i+`" is already in use.`};if(!a)return{error:`URL is required.`};let s,c=String(e.tool_timeout_seconds||``).trim();if(c!==``){let e=Number(c);if(!Number.isSafeInteger(e)||e<0)return{error:`Tool timeout must be a non-negative whole number of seconds.`};s=e}return{payload:{name:r,slug:i,url:a,transport:o,headers:hx(e.headers),description:String(e.description||``).trim(),enabled:!!e.enabled,allowed_tools:$s(e.allowed_tools),disallowed_tools:$s(e.disallowed_tools),user_paths:px(e.user_paths),tool_timeout_seconds:s}}}function yx(e,t){let n=t&&typeof t==`object`&&!Array.isArray(t)?t:{},r=e=>(Array.isArray(e)?e:[]).filter(e=>e&&typeof e==`object`);return{server:String(n.server||e||``).trim(),status:String(n.status||``).trim(),instructions:String(n.instructions||``).trim(),tools:r(n.tools),prompts:r(n.prompts),resources:r(n.resources),templates:r(n.templates)}}function bx(e,t){return String(e&&e.server||``)+`_`+String(t||``)}function xx(e){let t=e||ax(),n=(e,t)=>{let n=String(e||``).trim(),r=String(t||``).trim();return n&&r?n+` — `+r:r||n},r=e=>n=>({key:e+`:`+String(n.name||``),name:String(n.name||``),aggregated:bx(t,n.name),description:String(n.description||``).trim()});return[{key:`tools`,title:`Tools`,items:(t.tools||[]).map(r(`tool`))},{key:`prompts`,title:`Prompts`,items:(t.prompts||[]).map(r(`prompt`))},{key:`resources`,title:`Resources`,items:(t.resources||[]).map(e=>({key:`resource:`+String(e.uri||``),name:String(e.uri||``),aggregated:``,description:n(e.name,e.description)}))},{key:`templates`,title:`Resource templates`,items:(t.templates||[]).map(e=>({key:`template:`+String(e.uri_template||``),name:String(e.uri_template||``),aggregated:``,description:n(e.name,e.description)}))}].filter(e=>e.items.length>0)}function Sx(e){return xx(e).length===0}function Cx(e){return(e||[]).length}function wx(e){return(e||[]).filter(e=>sx(e)===`connected`).length}function Tx(e){return(e||[]).filter(e=>e&&e.enabled!==!1&&sx(e)===`degraded`).length}function Ex(e,t){return!!e&&Cx(t)>0}function Dx(e){return String(wx(e))+`/`+String(Cx(e))}function Ox(e){return Tx(e)>0?`is-degraded`:`is-healthy`}function kx(e){let t=Tx(e);if(t>0)return String(t)+` server`+(t===1?``:`s`)+` need`+(t===1?`s`:``)+` attention`;let n=Cx(e),r=wx(e);return n>0&&r===n?`All MCP servers connected`:String(r)+` of `+String(n)+` server`+(n===1?``:`s`)+` connected`}function Ax(){return{interval:`day`,buckets:[],summary:{requests:0},provider_latency:[]}}function jx(e){let t=e&&typeof e==`object`?e:{};return{interval:t.interval===`hour`?`hour`:`day`,buckets:Array.isArray(t.buckets)?t.buckets:[],summary:t.summary&&typeof t.summary==`object`?t.summary:{requests:0},provider_latency:Array.isArray(t.provider_latency)?t.provider_latency:[]}}function Mx(e){return Number(e&&e.summary&&e.summary.requests||0)>0}function Nx(e){return(e&&Array.isArray(e.provider_latency)?e.provider_latency:[]).length>0}function Px(e){let t=e&&e.summary?e.summary.success_rate:null;return t==null?`—`:(Math.round(Number(t)*1e3)/10).toFixed(1)+`%`}function Fx(e,t){return Number(e&&e.summary&&e.summary[t]||0)}function Ix(e){let t=Number(e);return Number.isFinite(t)?t>=6e4?(t/6e4).toFixed(1)+` min`:t>=1e3?(t/1e3).toFixed(2)+` s`:Math.round(t)+` ms`:`-`}function Lx(e){let t=e&&e.summary?e.summary.avg_duration_ms:null;return t==null?`—`:Ix(Number(t))}function Rx(e,t){try{let n={};return new Intl.DateTimeFormat(`en-US`,{timeZone:t,year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,hourCycle:`h23`}).formatToParts(e).forEach(e=>{n[e.type]=e.value}),{year:n.year,month:n.month,day:n.day,hour:Number(n.hour)}}catch{return{year:String(e.getFullYear()),month:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`][e.getMonth()],day:String(e.getDate()),hour:e.getHours()}}}function zx(e,t,n){let r=new Date(e.start);if(Number.isNaN(r.getTime()))return String(e.start||``);let i=Rx(r,n),a=i.month+` `+i.day;return t!==`hour`||i.hour===0?a:String(i.hour).padStart(2,`0`)+`:00`}function Bx(e,t,n,r){let i=new Date(e.start);if(Number.isNaN(i.getTime()))return String(e.start||``);if(t===`hour`)return r(e.start);let a=Rx(i,n);return a.month+` `+a.day+`, `+a.year}function Vx(e){return{ok:e(`var(--success)`),clientError:e(`var(--warning)`),serverError:e(`var(--danger)`),other:e(`color-mix(in srgb, var(--text-muted) 55%, transparent)`)}}function Hx(e,t,n={}){let r=n.interval===`hour`?`hour`:`day`,i=n.zone,a=n.resolve||(e=>e),o=n.formatTimestamp||(e=>String(e)),s=t.map(e=>zx(e,r,i)),c=Vx(a),l=a(`var(--bg-surface)`),u=e=>Number(e)||0,d=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderColor:l,borderWidth:1,borderSkipped:!1,borderRadius:2,maxBarThickness:28}),f=[d(`2xx`,t.map(e=>u(e.status_2xx)),c.ok),d(`4xx`,t.map(e=>u(e.status_4xx)),c.clientError),d(`5xx`,t.map(e=>u(e.status_5xx)),c.serverError)];return t.some(e=>u(e.status_other)>0)&&f.push(d(`Other`,t.map(e=>u(e.status_other)),c.other)),{type:`bar`,data:{labels:s,datasets:f},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:Ny(e,{title:e=>e.length?Bx(t[e[0].dataIndex],r,i,o):``,label:e=>e.dataset.label+`: `+e.parsed.y.toLocaleString(),footer:e=>{let t=0;return e.forEach(e=>{t+=Number(e.parsed.y)||0}),`Total: `+t.toLocaleString()}})},scales:{x:{stacked:!0,grid:{display:!1},border:{display:!1},ticks:{color:e.text,font:My(),maxRotation:0,autoSkip:!0,maxTicksLimit:12}},y:{stacked:!0,beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:My(),precision:0,callback:e=>ac(e)}}}}}}function Ux(e=Iy()){let t={};return function(n){return n in t||(t[n]=e[Object.keys(t).length%e.length]),t[n]}}function Wx(e,t,n,r={}){let i=r.interval===`hour`?`hour`:`day`,a=r.zone,o=r.formatTimestamp||(e=>String(e)),s=r.providerColor||Ux();return{type:`line`,data:{labels:t.map(e=>zx(e,i,a)),datasets:n.map(e=>({label:e.provider,data:(e.avg_duration_ms||[]).map(e=>e==null?null:Number(e)),borderColor:s(e.provider),backgroundColor:s(e.provider),fill:!1,tension:.3,borderWidth:2,pointRadius:0,pointHoverRadius:4,spanGaps:i===`hour`&&2}))},options:{responsive:!0,maintainAspectRatio:!1,animation:{duration:0},interaction:{mode:`index`,intersect:!1},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:Ny(e,{title:e=>e.length?Bx(t[e[0].dataIndex],i,a,o):``,label:e=>{let t=(n[e.datasetIndex]&&n[e.datasetIndex].requests||[])[e.dataIndex],r=Number(t)||0;return e.dataset.label+`: `+Ix(e.parsed.y)+(r>0?` (`+r.toLocaleString()+` req)`:``)}})},scales:{x:{grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:My(),maxRotation:0,autoSkip:!0,maxTicksLimit:12}},y:{beginAtZero:!0,grid:{color:e.grid},border:{display:!1},ticks:{color:e.text,font:My(),callback:e=>Ix(e)}}}}}}var Gx=class{#e=k(j(Ab()));get status(){return I(this.#e)}set status(e){A(this.#e,e,!0)}#t=k(!1);get loading(){return I(this.#t)}set loading(e){A(this.#t,e,!0)}#n=k(!1);get loadedOnce(){return I(this.#n)}set loadedOnce(e){A(this.#n,e,!0)}#r=k(!1);get detailsExpanded(){return I(this.#r)}set detailsExpanded(e){A(this.#r,e,!0)}#i=k(j({}));get cardOverrides(){return I(this.#i)}set cardOverrides(e){A(this.#i,e,!0)}#a=null;#o=null;#s=!1;initPreferences(){if(this.#s)return;this.#s=!0;let e=jb(wa());this.detailsExpanded=e.detailsExpanded,this.cardOverrides=e.cardOverrides}cardExpanded(e){return Pb(this.cardOverrides,this.detailsExpanded,e)}toggleCard(e){let t=e&&e.name?String(e.name):``;if(!t)return;let n={...this.cardOverrides};n[t]=!this.cardExpanded(e),this.cardOverrides=n,Nb(wa(),this.cardOverrides)}toggleDetails(){this.detailsExpanded=!this.detailsExpanded,this.cardOverrides={},Mb(wa(),this.detailsExpanded),Nb(wa(),this.cardOverrides)}detailsToggleLabel(){return this.detailsExpanded?`Show Details`:`Hide Details`}async fetch(){this.initPreferences(),this.#a&&this.#a.abort();let e=new AbortController;this.#a=e,this.loading=!0;try{let t=await ps(`/admin/providers/status`,{label:`provider status`,signal:e.signal});if(t.stale||e.signal.aborted)return;if(!t.ok){this.status=Ab(),this.#l();return}let n=t.data&&typeof t.data==`object`?t.data:Ab();n.summary||=Ab().summary,Array.isArray(n.providers)||(n.providers=[]),this.status=n,this.#c()}catch(e){if(hs(e))return;console.error(`Failed to fetch provider status:`,e),this.status=Ab(),this.#l()}finally{this.#a===e&&(this.#a=null,this.loading=!1,this.loadedOnce=!0)}}#c(){this.#l(),Bb(this.status.providers)&&(this.#o=setTimeout(()=>{this.#o=null,this.fetch()},Db))}#l(){this.#o&&=(clearTimeout(this.#o),null)}stopPolling(){this.#l()}},Kx=class{#e=k(j(Ax()));get stats(){return I(this.#e)}set stats(e){A(this.#e,e,!0)}#t=k(!1);get loading(){return I(this.#t)}set loading(e){A(this.#t,e,!0)}#n=0;async fetch(){let e=++this.#n;this.loading=!0;try{let t=await ps(`/admin/audit/stats?`+Dc.queryStr(),{label:`audit stats`});if(t.stale||e!==this.#n)return;if(!t.ok){this.stats=Ax();return}this.stats=jx(t.data)}catch(t){if(console.error(`Failed to fetch audit stats:`,t),e!==this.#n)return;this.stats=Ax()}finally{e===this.#n&&(this.loading=!1)}}},qx=class{#e=k(j([]));get servers(){return I(this.#e)}set servers(e){A(this.#e,e,!0)}#t=k(!1);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}async fetch(){if(await vs.ensureLoaded(),!vs.mcpVisible()){this.available=!1,this.servers=[];return}this.loading=!0;try{let e=await ps(`/admin/mcp-servers`,{label:`mcp servers`});if(e.stale)return;if(e.status===503||e.status===404){this.available=!1,this.servers=[];return}if(this.available=!0,!e.ok){this.servers=[];return}this.servers=Array.isArray(e.data)?e.data:[]}catch(e){console.error(`Failed to fetch MCP servers:`,e),this.servers=[]}finally{this.loading=!1}}},Jx=class{#e=k(j([]));get data(){return I(this.#e)}set data(e){A(this.#e,e,!0)}#t=k(`tokens`);get mode(){return I(this.#t)}set mode(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=null;async fetch(){this.#r&&this.#r.abort();let e=new AbortController;this.#r=e,this.loading=!0;try{let t=await ps(`/admin/usage/daily?days=365&interval=daily`,{label:`calendar`,signal:e.signal});if(t.stale||e.signal.aborted)return;if(!t.ok){this.data=[];return}this.data=Array.isArray(t.data)?t.data:[]}catch(e){if(hs(e))return;console.error(`Failed to fetch calendar data:`,e),this.data=[]}finally{this.#r===e&&(this.#r=null,this.loading=!1)}}},Yx=new Gx,Xx=new Kx,Zx=new qx,Qx=new Jx,$x=(e,t=f,n=f,r=f,i=f)=>{var a=tS(),o=M(a),s=M(o,!0);T(o);var c=P(o,2),l=M(c),u=M(l),d=M(u,!0);T(u),Ue(),T(l);var p=P(l,4),m=M(p),h=M(m,!0);T(m),Ue(),T(p);var g=P(p,4),_=M(g,!0);T(g),T(c),T(a),F((e,n,r,i,a,o)=>{B(s,t()),W(l,`title`,e),B(d,n),W(p,`title`,r),B(h,i),W(g,`title`,a),B(_,o)},[()=>oc(`Input tokens`,n()),()=>ac(n()),()=>oc(`Output tokens`,r()),()=>ac(r()),()=>oc(`Total tokens`,i()),()=>ac(i())]),z(e,a)},eS=(e,t=f,n=f,r=f,i=f,a=f,o=f)=>{var s=iS(),c=M(s),l=M(c,!0);T(c);var u=P(c,2),d=M(u,!0);T(u);var p=P(u,2),m=e=>{var t=nS(),n=M(t,!0);T(t),F(()=>{W(t,`aria-label`,o().title),W(t,`title`,o().title),B(n,a())}),L(`click`,t,function(...e){o().onclick?.apply(this,e)}),z(e,t)},h=e=>{var t=rS(),n=M(t,!0);T(t),F(()=>B(n,a())),z(e,t)};V(p,e=>{o()?e(m):e(h,-1)}),T(s),F(()=>{U(s,1,`card provider-status-flag ${t()??``} ${n()??``}`,`svelte-6tr9cf`),B(l,r()),B(d,i())}),z(e,s)},tS=R(`
        i + o =
        `),nS=R(``),rS=R(` `),iS=R(`
        `),aS=R(`
        Cache Hits
        `),oS=R(`
        Total Requests
        Estimated Cost
        Prompt Cache Rate
        `);function sS(e,t){E(t,!0);let n=O(()=>Nc.summary),r=O(()=>Nc.cacheOverview),i=O(()=>Nc.cacheAnalyticsEnabled()),a=O(()=>Yx.status.summary);function o(){let e=document.getElementById(`provider-status-section`);e&&(e.scrollIntoView({behavior:`smooth`,block:`start`}),e.focus({preventScroll:!0}))}var s=oS(),c=M(s);{let e=O(()=>ab(I(n)));$x(c,()=>`Tokens`,()=>I(n).total_input_tokens,()=>I(n).total_output_tokens,()=>I(e))}var l=P(c,2),u=P(M(l),2),d=M(u,!0);T(u),T(l);var f=P(l,2),p=e=>{var t=aS(),n=P(M(t),2),i=M(n,!0);T(n),T(t),F(e=>B(i,e),[()=>tc(I(r).summary.total_hits)]),z(e,t)};V(f,e=>{I(i)&&e(p)});var m=P(f,2),h=P(M(m),2),g=M(h,!0);T(h),T(m);var _=P(m,2),v=e=>{{let t=O(()=>lb(I(r)));$x(e,()=>`Local Cache`,()=>I(r).summary.total_input_tokens,()=>I(r).summary.total_output_tokens,()=>I(t))}};V(_,e=>{I(i)&&e(v)});var y=P(_,2),b=P(M(y),2),x=M(b);Ey(x,{build:()=>wb(bb(I(n)),Py(`var(--token-prompt)`),Py(`var(--bg-surface-hover)`))});var S=P(x,2),C=M(S,!0);T(S),T(b),T(y);var w=P(y,2),ee=e=>{{let t=O(()=>Fb(I(a))),n=O(()=>Lb(I(a))),r=O(()=>zb(I(a))),i=O(()=>Rb(I(a))?{title:`View providers overview`,onclick:o}:null);eS(e,()=>`provider-status-overview-card`,()=>I(t),()=>`Provider Status`,()=>I(n),()=>I(r),()=>I(i))}};V(w,e=>{I(a).total>0&&e(ee)});var te=P(w,2),ne=e=>{{let t=O(()=>Ox(Zx.servers)),n=O(()=>Dx(Zx.servers)),r=O(()=>kx(Zx.servers));eS(e,()=>`mcp-servers-flag`,()=>I(t),()=>`MCP Servers`,()=>I(n),()=>I(r),()=>({title:`View MCP servers`,onclick:()=>Wo.navigate(`mcp-servers`)}))}},re=O(()=>Ex(Zx.available,Zx.servers));V(te,e=>{I(re)&&e(ne)}),T(s),F((e,t,n,r,i)=>{W(u,`title`,e),B(d,t),B(g,n),W(b,`aria-label`,r),B(C,i)},[()=>cb(I(n),I(r),I(i)),()=>tc(sb(I(n),I(r),I(i))),()=>nc(I(n).total_cost),()=>`Prompt cache rate `+Sb(I(n)),()=>Sb(I(n))]),z(e,s),D()}Hr([`click`]);var cS=R(` `),lS=R(`
        `),uS=R(`No usage in the selected period yet`),dS=R(`
        `),fS=R(`

        Tokens

        Share of input tokens over the selected period
        `);function pS(e,t){E(t,!0);let n=O(()=>Nc.cacheAnalyticsEnabled()),r=O(()=>pb(Nc.summary,Nc.cacheOverview,I(n))),i=O(()=>mb(Nc.summary,Nc.cacheOverview,I(n))),a=O(()=>fb(Nc.summary,Nc.cacheOverview,I(n)));var o=fS(),s=P(M(o),2);let c;var l=M(s);H(l,17,()=>I(i),e=>e.key,(e,t)=>{var n=lS(),r=M(n),i=e=>{var n=cS(),r=M(n);T(n),F(()=>B(r,`${I(t).pct??``}%`)),z(e,n)};V(r,e=>{I(t).pct>=8&&e(i)}),T(n),F(e=>{Hi(n,`width: ${I(t).pct??``}%; background: var(${I(t).colorVar??``})`),W(n,`title`,e)},[()=>hb(I(t))]),z(e,n)});var u=P(l,2),d=e=>{z(e,uS())};V(u,e=>{I(a)||e(d)}),T(s);var f=P(s,2);H(f,21,()=>I(r),e=>e.key,(e,t)=>{var n=dS(),r=M(n),i=P(r,2),a=M(i,!0);T(i);var o=P(i,2),s=M(o);T(o);var c=P(o,2),l=M(c,!0);T(c),T(n),F((e,i)=>{W(n,`title`,e),Hi(r,`background: var(${I(t).colorVar??``})`),B(a,I(t).label),B(s,`${I(t).pct??``}%`),B(l,i)},[()=>hb(I(t)),()=>tc(I(t).tokens)]),z(e,n)}),T(f),T(o),F(e=>{c=U(s,1,`cache-meter-bar svelte-1yzecxj`,null,c,{"is-empty":!I(a)}),W(s,`aria-label`,e)},[()=>gb(I(i))]),z(e,o),D()}var mS=R(``);function hS(e,t){let n=ya(t,`size`,3,16),r=ya(t,`label`,3,`Loading`),i=ya(t,`class`,3,``);var a=mS();F(()=>{U(a,1,Fi([`spinner`,i()]),`svelte-b54l9o`),Hi(a,`--spinner-size: ${n()??``}px`),W(a,`aria-label`,r())}),z(e,a)}var gS=Xr(` `),_S=Xr(``);function vS(e,t){let n=ya(t,`label`,3,`No data`);var r=_S(),i=P(M(r),9),a=e=>{var t=gS(),r=M(t,!0);T(t),F(()=>B(r,n())),z(e,t)};V(i,e=>{n()&&e(a)}),T(r),F(()=>{W(r,`role`,n()?`img`:void 0),W(r,`aria-label`,n()||void 0),W(r,`aria-hidden`,n()?void 0:`true`)}),z(e,r)}var yS=R(`
        `),bS=R(`

        `);function xS(e,t){E(t,!0);let n=[`daily`,`weekly`,`monthly`,`yearly`];function r(e){Dc.interval=e,t.onintervalchange?.()}function i(){let e=Nc.daily;if(e.length===0)return null;let t=Dc.rangeStart(),n=Dc.rangeEnd(),r=yb(vb(e,Dc.interval,t,n),vb(Array.isArray(Nc.cacheOverview.daily)?Nc.cacheOverview.daily:[],Dc.interval,t,n));return Cb(jy(),r,{cacheEnabled:Nc.cacheAnalyticsEnabled(),resolve:Py})}var a=bS(),o=M(a),s=M(o),c=M(s,!0);T(s);var l=P(s,2);{let e=O(()=>n.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)})));ky(l,{ariaLabel:`Usage chart interval`,get options(){return I(e)},get value(){return Dc.interval},onchange:r})}T(o);var u=P(o,2),d=M(u);Ey(d,{build:i});var f=P(d,2),p=e=>{var t=yS();hS(M(t),{size:24,label:`Loading usage`}),T(t),z(e,t)},m=e=>{var t=yS();vS(M(t),{}),T(t),z(e,t)};V(f,e=>{Nc.daily.length===0&&Nc.loading?e(p):Nc.daily.length===0&&!K.authError&&e(m,1)}),T(u),T(a),F(e=>B(c,e),[()=>Dc.chartTitle()]),z(e,a),D()}var SS=10,CS=.7;function wS(e,t){if(e<=0||t<=0)return 0;let n=(e/t)**+CS,r=Math.ceil(n*SS);return r<1?1:r>SS?SS:r}function TS(){let e=[];for(let t=0;t<=SS;t++)e.push(t);return e}function ES(e,t,n){let r={};(e||[]).forEach(e=>{r[e.date]=e});let i=Jo(Xo(n,-364)),a=i.getUTCDay();i.setUTCDate(i.getUTCDate()-a);let o=[];for(let e=new Date(i);Yo(e)<=n;e.setUTCDate(e.getUTCDate()+1)){let n=Yo(e),i=r[n],a=0;i&&(a=t===`costs`?i.total_cost==null?0:i.total_cost:i.total_tokens||0),o.push({dateStr:n,value:a,level:0,empty:!1})}let s=0;for(let e=0;es&&(s=o[e].value);for(let e=0;e0){for(;l.length<7;)l.push({dateStr:``,value:0,level:0,empty:!0});c.push(l)}return c}function DS(e){let t=Jo(Xo(e,-364)),n=t.getUTCDay();t.setUTCDate(t.getUTCDate()-n);let r=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],i=[],a={},o=0;for(let n=new Date(t);Yo(n)<=e;n.setUTCDate(n.getUTCDate()+7),o++){let t=null;if(o===0)t=new Date(n);else for(let r=0;r<7;r++){let i=new Date(n);if(i.setUTCDate(n.getUTCDate()+r),Yo(i)>e)break;if(i.getUTCDate()===1){t=i;break}}if(!t)continue;let s=t.getUTCFullYear()+`-`+t.getUTCMonth();a[s]||(i.push({label:r[t.getUTCMonth()],col:o,key:s}),a[s]=!0)}for(let e=0;e `),jS=R(`
        `),MS=R(`
        `),NS=R(`
        `),PS=R(`
        `),FS=R(`

        Activity

        Mon Wed Fri
        `,1);function IS(e,t){E(t,!0);let n=k(j({show:!1,x:0,y:0,text:``})),r=O(()=>ss.currentDateKey()),i=O(()=>ES(Qx.data,Qx.mode,I(r))),a=O(()=>DS(I(r)));function o(e,t){t.empty||A(n,{show:!0,x:e.clientX,y:e.clientY,text:kS(t,Qx.mode)},!0)}function s(){A(n,{show:!1,x:0,y:0,text:``},!0)}var c=FS(),l=N(c),u=M(l),d=P(M(u),2),f=e=>{hS(e,{size:14,label:`Loading activity`})};V(d,e=>{Qx.loading&&Qx.data.length===0&&e(f)}),ky(P(d,2),{ariaLabel:`Activity calendar mode`,options:[{value:`tokens`,label:`Tokens`},{value:`costs`,label:`Costs`}],get value(){return Qx.mode},onchange:e=>Qx.mode=e}),T(u);var p=P(u,2),m=P(M(p),2),h=M(m);H(h,21,()=>I(a),e=>e.key,(e,t)=>{var n=AS(),r=M(n,!0);T(n),F(()=>{Hi(n,`grid-column: ${I(t).col+1} / span ${I(t).span??``}`),B(r,I(t).label)}),z(e,n)}),T(h);var g=P(h,2);H(g,21,()=>I(i),oi,(e,t,n)=>{var r=MS();H(r,23,()=>I(t),(e,t)=>n+`-`+t,(e,t)=>{var n=jS();F(()=>U(n,1,Fi([`contribution-calendar-cell`,I(t).empty?`empty`:`level-${I(t).level}`]),`svelte-3hfxuq`)),Vr(`mouseenter`,n,e=>o(e,I(t))),Vr(`mouseleave`,n,s),z(e,n)}),T(r),z(e,r)}),T(g),T(m),T(p);var _=P(p,2),v=M(_),y=M(v),b=M(y,!0);T(y),T(v);var x=P(v,2);H(P(M(x),2),16,TS,e=>e,(e,t)=>{var n=NS();F(()=>U(n,1,`contribution-calendar-cell level-${t??``}`,`svelte-3hfxuq`)),z(e,n)}),Ue(2),T(x),T(_),T(l);var S=P(l,2),C=e=>{var t=PS(),r=M(t,!0);T(t),F(()=>{Hi(t,`left: ${I(n).x??``}px; top: ${I(n).y-40}px`),B(r,I(n).text)}),z(e,t)};V(S,e=>{I(n).show&&e(C)}),F(e=>B(b,e),[()=>OS(Qx.data,Qx.mode)]),z(e,c),D()}var LS=R(``),RS=R(`

        `),zS=R(`
        `);function BS(e,t){E(t,!0);let n=ya(t,`label`,3,`help`),r=ya(t,`text`,3,``),i=ya(t,`open`,15,!1),a=ya(t,`external`,3,!1),o=O(()=>!!r()||!!t.help||a());var s=zS(),c=M(s),l=M(c);gi(l,()=>t.title??f);var u=P(l,2),d=e=>{var r=LS();let a;F(()=>{a=U(r,1,`inline-help-toggle svelte-y40or3`,null,a,{"is-open":i()}),W(r,`aria-label`,(i()?`Hide `:`Show `)+n()),W(r,`aria-expanded`,i()),W(r,`aria-controls`,t.copyId)}),L(`click`,r,()=>i(!i())),z(e,r)};V(u,e=>{I(o)&&e(d)}),gi(P(u,2),()=>t.extra??f),T(c);var p=P(c,2),m=e=>{var n=RS(),i=M(n),a=e=>{var n=Qr();gi(N(n),()=>t.help),z(e,n)},o=e=>{var t=Zr();F(()=>B(t,r())),z(e,t)};V(i,e=>{t.help?e(a):e(o,-1)}),T(n),F(()=>W(n,`id`,t.copyId)),z(e,n)};V(p,e=>{i()&&I(o)&&!a()&&e(m)}),T(s),z(e,s),D()}Hr([`click`]);var VS=R(`

        Provider Latency

        `),HS=R(`
        Avg
        `),US=R(`

        Requests by Status

        Success 2xx 4xx 5xx
        `,1);function WS(e,t){E(t,!0);let n=Ux(),r=O(()=>Xx.stats);function i(){return{interval:I(r).interval,zone:ss.effectiveTimezone(),resolve:Py,formatTimestamp:e=>ss.formatTimestamp(e)}}var a=Qr(),o=N(a),s=e=>{var t=US(),a=N(t),o=M(a),s=P(M(o),2),c=M(s),l=P(M(c),2),u=M(l,!0);T(l),T(c);var d=P(c,2),f=P(M(d),4),p=M(f,!0);T(f),T(d);var m=P(d,2),h=P(M(m),4),g=M(h,!0);T(h),T(m);var _=P(m,2),v=P(M(_),4),y=M(v,!0);T(v),T(_),T(s),T(o);var b=P(o,2);Ey(M(b),{build:()=>Hx(jy(),I(r).buckets,i())}),T(b),T(a);var x=P(a,2),S=e=>{var t=HS(),a=M(t),o=M(a);BS(o,{copyId:`audit-latency-help-copy`,label:`provider latency help`,text:`Average duration of successful requests as measured at the gateway, per provider. Local cache hits and failed requests are excluded; streamed responses count until the stream completes.`,title:e=>{z(e,VS())},$$slots:{title:!0}});var s=P(o,2),c=M(s),l=P(M(c),2),u=M(l,!0);T(l),T(c),T(s),T(a);var d=P(a,2);Ey(M(d),{build:()=>Wx(jy(),I(r).buckets,I(r).provider_latency,{...i(),providerColor:n})}),T(d),T(t),F(e=>B(u,e),[()=>Lx(I(r))]),z(e,t)},C=O(()=>Nx(I(r)));V(x,e=>{I(C)&&e(S)}),F((e,t,n,r)=>{B(u,e),B(p,t),B(g,n),B(y,r)},[()=>Px(I(r)),()=>tc(Fx(I(r),`status_2xx`)),()=>tc(Fx(I(r),`status_4xx`)),()=>tc(Fx(I(r),`status_5xx`))]),z(e,t)},c=O(()=>Mx(I(r)));V(o,e=>{I(c)&&e(s)}),z(e,a),D()}var GS=(e,t=f,n=f,r)=>{let i=Ot(()=>h(r?.(),!1));var a=JS(),o=M(a),s=M(o,!0);T(o);var c=P(o,2),l=e=>{var t=KS(),r=M(t,!0);T(t),F(()=>B(r,n())),z(e,t)},u=e=>{var t=qS(),r=M(t,!0);T(t),F(()=>B(r,n())),z(e,t)};V(c,e=>{I(i)?e(l):e(u,-1)}),T(a),F(()=>B(s,t())),z(e,a)},KS=R(` `),qS=R(` `),JS=R(`
        `),YS=R(`

        `),XS=R(`
        Breaker State
        `),ZS=R(`
        `),QS=R(`
        Models (Recent Traffic)
        `),$S=R(`
        `),eC=R(`

        `);function tC(e,t){E(t,!0);let n=O(()=>$b(t.provider)),r=O(()=>[[`Base URL`,t.provider.config?.base_url],[`API Version`,t.provider.config?.api_version]].filter(([,e])=>!!e));var i=eC();let a;var o=M(i),s=M(o),c=M(s,!0);T(s);var l=P(s,2),u=e=>{var n=YS(),r=M(n,!0);T(n),F(()=>B(r,t.provider.last_error)),z(e,n)};V(l,e=>{t.provider.last_error&&e(u)});var d=P(l,2),f=e=>{var r=$S(),i=M(r);{let e=O(()=>ex(t.provider));GS(i,()=>`Recent Requests`,()=>I(e))}var a=P(i,2),o=e=>{var r=XS(),i=P(M(r),2),a=M(i),o=M(a,!0);T(a),T(i),T(r),F(e=>{U(a,1,Fi([`provider-status-health-state`,I(n)]),`svelte-6y9wjv`),B(o,e)},[()=>Qb(t.provider)]),z(e,r)},s=O(()=>Zb(t.provider));V(a,e=>{I(s)&&e(o)});var c=P(a,2),l=e=>{var n=QS(),r=P(M(n),2);H(r,21,()=>tx(t.provider),e=>e.model,(e,t)=>{var n=ZS();let r;var i=M(n),a=M(i,!0);T(i);var o=P(i,2),s=M(o,!0);T(o),T(n),F((e,i)=>{r=U(n,1,`provider-status-health-model svelte-6y9wjv`,null,r,{"is-flagged":I(t).flagged}),W(n,`title`,e),B(a,I(t).model),B(s,i)},[()=>rx(I(t)),()=>nx(I(t))]),z(e,n)}),T(r),T(n),z(e,n)},u=O(()=>tx(t.provider).length>0);V(c,e=>{I(u)&&e(l)}),T(r),z(e,r)},p=O(()=>Xb(t.provider));V(d,e=>{I(p)&&e(f)});var m=P(d,2),h=M(m);H(h,17,()=>I(r),([e,t])=>e,(e,t)=>{var n=O(()=>g(I(t),2));GS(e,()=>I(n)[0],()=>I(n)[1],()=>!0)});var _=P(h,2);{let e=O(()=>Jb(t.provider));GS(_,()=>`Configured Models`,()=>I(e))}var v=P(_,2);{let e=O(()=>Kb(t.provider));GS(v,()=>`Retry`,()=>I(e))}var y=P(v,2);{let e=O(()=>qb(t.provider));GS(y,()=>`Circuit Breaker`,()=>I(e))}T(m),T(o),T(i),F(()=>{a=U(i,1,`provider-status-details svelte-6y9wjv`,null,a,{"is-expanded":t.expanded,"is-collapsed":!t.expanded}),W(i,`aria-hidden`,!t.expanded),B(c,t.provider.status_reason)}),z(e,i),D()}var nC=R(` `),rC=R(``),iC=R(`

        Models Available
        Last Checked
        `);function aC(e,t){E(t,!0);let n=O(()=>Yx.cardExpanded(t.provider)),r=e=>ss.formatTimestamp(e);var i=iC(),a=M(i),o=M(a),s=M(o),c=M(s),l=M(c,!0);T(c);var u=P(c,2),d=e=>{var n=nC(),r=M(n);T(n),F(e=>B(r,`(${e??``})`),[()=>Wb(t.provider)]),z(e,n)},f=O(()=>Wb(t.provider));V(u,e=>{I(f)&&e(d)});var p=P(u,2),m=e=>{var n=rC();F((e,t,r)=>{W(n,`href`,e),W(n,`aria-label`,t),W(n,`title`,r)},[()=>Gb(t.provider),()=>`View `+(Wb(t.provider)||t.provider.name)+` provider docs`,()=>`View `+(Wb(t.provider)||t.provider.name)+` provider docs`]),z(e,n)},h=O(()=>Gb(t.provider));V(p,e=>{I(h)&&e(m)}),T(s),T(o);var g=P(o,2),_=M(g,!0);T(g),T(a);var v=P(a,2),y=M(v),b=P(M(y),2),x=M(b,!0);T(b),T(y);var S=P(y,2),C=P(M(S),2),w=M(C,!0);T(C),T(S),T(v);var ee=P(v,2);tC(ee,{get provider(){return t.provider},get expanded(){return I(n)}});var te=P(ee,2);let ne;G(M(te),{get icon(){return Ba},class:`provider-status-card-toggle-icon`}),T(te),T(i),F((e,r,i,a,o)=>{B(l,t.provider.name),U(g,1,`provider-status-pill ${e??``}`,`svelte-nopjmh`),W(g,`title`,r),B(_,t.provider.status_label),B(x,i),W(C,`title`,a),B(w,o),ne=U(te,1,`provider-status-card-toggle svelte-nopjmh`,null,ne,{"is-expanded":I(n)}),W(te,`aria-expanded`,I(n)),W(te,`aria-label`,(I(n)?`Collapse `:`Expand `)+t.provider.name+` details`),W(te,`title`,I(n)?`Collapse details`:`Expand details`)},[()=>Ib(t.provider.status),()=>Yb(t.provider),()=>tc(t.provider.runtime?.discovered_model_count),()=>Ub(t.provider,r),()=>Hb(t.provider,r)]),L(`click`,te,()=>Yx.toggleCard(t.provider)),z(e,i),D()}Hr([`click`]);var oC=R(`

        Providers Overview

        `),sC=R(`
        `);function cC(e,t){E(t,!0);let n=O(()=>Yx.status.providers);var r=Qr(),i=N(r),a=e=>{var t=oC(),r=M(t),i=P(M(r),2),a=M(i),o=M(a,!0);T(a);var s=P(a,2);let c;T(i),T(r);var l=P(r,2);H(l,21,()=>I(n),e=>e.name,(e,t)=>{aC(e,{get provider(){return I(t)}})}),T(l),T(t),F((e,t)=>{W(i,`aria-checked`,Yx.detailsExpanded),W(i,`title`,e),B(o,t),c=U(s,1,`provider-status-toggle-track svelte-1kx3uw4`,null,c,{"is-active":Yx.detailsExpanded})},[()=>Yx.detailsToggleLabel(),()=>Yx.detailsToggleLabel()]),L(`click`,i,()=>Yx.toggleDetails()),z(e,t)},o=e=>{var t=sC();hS(M(t),{size:18,label:`Loading provider status`}),T(t),z(e,t)};V(i,e=>{I(n).length>0?e(a):Yx.loading&&!Yx.loadedOnce&&e(o,1)}),z(e,r),D()}Hr([`click`]);var lC=R(`
        `);function uC(e,t){E(t,!0);function n(){Nc.fetchUsage(),Nc.fetchCacheOverview(``),Xx.fetch(),Yx.fetch(),Zx.fetch(),Qx.fetch()}function r(){Nc.fetchUsage(),Nc.fetchCacheOverview(``),Xx.fetch()}function i(){r(),Qx.fetch()}An(()=>{if(K.refreshTick,Wo.page===`overview`)return Er(()=>{n(),eb.start()}),()=>{eb.stop(),Yx.stopPolling()}});var a=lC(),o=M(a);ib(o,{});var s=P(o,4);Xc(M(s),{onchange:i}),T(s);var c=P(s,2);Ac(c,{});var l=P(c,2);sS(l,{});var u=P(l,2);pS(u,{});var d=P(u,2);xS(d,{onintervalchange:r});var f=P(d,2);IS(f,{});var p=P(f,2);WS(p,{}),cC(P(p,2),{}),T(a),z(e,a),D()}var dC=`/admin/live/logs?types=audit,usage`;function fC(e,t,n){return!!t&&String(e&&e.id||``).trim()===t||!!n&&String(e&&e.request_id||``).trim()===n}function pC(e){switch(e){case`date_range`:return`Live paused — the selected date range does not include today. Set it to today to resume.`;case`filters`:return`Live paused while filters are active. Clear them to resume.`;case`pagination`:return`Live paused on later pages. Go to the first page to resume.`;default:return``}}function mC(e){let t=dC,n=Number(e||0);return Number.isFinite(n)&&n>0&&(t+=`&cursor=`+encodeURIComponent(String(n))),t}function hC(){return{async consumeLiveLogsBody(e){let t=new TextDecoder,n=``;for(;;){let r=await e.read();if(r.done)break;n+=t.decode(r.value,{stream:!0});let i;for(;i=n.match(/\r?\n\r?\n/);){let e=i.index,t=n.slice(0,e);n=n.slice(e+i[0].length),this.handleLiveLogsFrame(t)}}n+=t.decode(),n.trim()&&this.handleLiveLogsFrame(n)},handleLiveLogsFrame(e){let t=String(e||``).split(/\r?\n/),n=[];for(let e of t)e.indexOf(`data:`)===0&&n.push(e.slice(5).trimStart());if(n.length===0)return;let r;try{r=JSON.parse(n.join(` +`))}catch{return}this.applyLiveLogEvent(r)},applyLiveLogEvent(e){if(!e||typeof e!=`object`)return;let t=Number(e.seq||0);Number.isFinite(t)&&t>this.liveLogsLastSeq&&(this.liveLogsLastSeq=t);let n=String(e.type||``).trim();if(n!==`heartbeat`){if(n===`reset`){this.reloadLiveLogSources();return}if(n===`audit.removed`){this.removeLiveAuditEntry(e.data);return}if(n.indexOf(`audit.`)===0){this.mergeLiveAuditEntry(e.data||{},n);return}n.indexOf(`usage.`)===0&&(this.mergeLiveUsageEntry(e.data||{},n),typeof this.noteLiveTokenUsage==`function`&&this.noteLiveTokenUsage(n))}},reloadLiveLogSources(){typeof this.fetchUsage==`function`&&this.fetchUsage(),this.page===`audit-logs`&&typeof this.fetchAuditLog==`function`&&this.fetchAuditLog(!0)},auditLivePauseReason(){return!this.auditLog||this.auditLog.offset!==0?`pagination`:this.auditSearch||this.auditMethod||this.auditStatusCode||this.auditStream?`filters`:!this.followsToday&&(this.customStartDate||this.customEndDate)?`date_range`:null},auditLiveInsertAllowed(){return!this.auditLivePauseReason()},usageLiveInsertAllowed(){return this.usageLog&&this.usageLog.offset===0&&!this.usageLogSearch&&!this.usageFilterModel&&!this.usageFilterProvider&&!this.usageFilterLabel&&!this.usageFilterUserPath},mergeLiveAuditEntry(e,t){if(!e||typeof e!=`object`)return;let n=String(e.id||e.request_id||``).trim();if(!n)return;let r=String(e.request_id||``).trim(),i=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],a=i.findIndex(e=>fC(e,n,r)),o=a>=0&&i[a]||{},s=t===`audit.detail`,c=s?{...e,_detail_loaded:!0,_response_partial:!1,bodies_omitted:!1}:this.liveAuditPatch(o,e,t);if(a>=0){let e=this.mergeLiveAuditPatch(o,c);return i.splice(a,1,e),this.auditLog.entries=[...i],this.regroupLiveAuditHead(e),s||this.fetchExpandedAuditDetailIfReady(e),this.notifyLiveConversation(e),e}let l=this.mergeLiveAuditChild(e,c);if(l)return s||this.fetchExpandedAuditDetailIfReady(l),this.notifyLiveConversation(l),l;if(!this.auditLiveInsertAllowed())return;if(!s&&this.auditGroupSessions){let e=this.foldLiveAuditIntoThread(c);if(e)return this.fetchExpandedAuditDetailIfReady(e),this.notifyLiveConversation(e),e}this.auditLog.entries=[this.mergeLiveAuditUsagePatch(c),...i].slice(0,this.auditLog.limit||25),this.auditLog.total=Number(this.auditLog.total||0)+1;let u=this.auditLog.entries[0];return s||this.fetchExpandedAuditDetailIfReady(u),this.notifyLiveConversation(u),u},liveAuditPatch(e,t,n){let r=this.liveAuditStateAfter(e._live_state,n),i=this.liveAuditEventFlushed(e._live_state)||this.liveAuditEventFlushed(r),a={...t,_live:!0,_live_state:r,_audit_flushed:i,_live_pending:!i};return n===`audit.stream`?a._response_partial=!0:this.liveAuditStateSettled(n)&&(a._response_partial=!1),a},mergeLiveAuditChild(e,t){let n=this.auditThreadChildren;if(!n||typeof n!=`object`)return null;let r=String(e.id||``).trim(),i=String(e.request_id||``).trim(),a=Object.keys(n);for(let e=0;efC(e,r,i));if(c<0)continue;let l=this.mergeLiveAuditPatch(s[c]||{},t),u=[...s];return u.splice(c,1,l),this.auditThreadChildren={...n,[a[e]]:{...o,entries:u}},l}return null},regroupLiveAuditHead(e){if(!this.auditGroupSessions)return null;let t=String(e&&e.session_id||``).trim();if(!t)return null;let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=String(e.id||``).trim(),i=n.findIndex(e=>String(e.id||``).trim()===r);if(i<0)return null;let a=n.findIndex((e,n)=>n!==i&&String(e.session_id||``).trim()===t);if(a<0)return null;let o=n[a],s=Date.parse(o&&o.timestamp),c=Date.parse(e&&e.timestamp),l=Number.isFinite(s)&&Number.isFinite(c)&&s>c,u=l?o:e,d=l?e:o,f={...u,session_count:Math.max(1,Number(o.session_count||1))+Math.max(1,Number(e.session_count||1))},p=n.filter((e,t)=>t!==i&&t!==a);return p.unshift(f),this.auditLog.entries=p,this.auditLog.total=Math.max(0,Number(this.auditLog.total||0)-1),this.prependLiveAuditThreadChild(t,d),f},foldLiveAuditIntoThread(e){let t=String(e&&e.session_id||``).trim();if(!t)return null;let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=n.findIndex(e=>String(e.session_id||``).trim()===t);if(r<0)return null;let i=n[r],a=Number(i.session_count),o=this.mergeLiveAuditUsagePatch({...e,session_count:(Number.isFinite(a)&&a>0?a:1)+1}),s=[...n];return s.splice(r,1),s.unshift(o),this.auditLog.entries=s,this.prependLiveAuditThreadChild(t,i),o},prependLiveAuditThreadChild(e,t){let n=this.auditThreadChildren||{},r=n[e],i={...t};delete i.session_count;let a=r&&Array.isArray(r.entries)?{...r,entries:[i,...r.entries],total:Number(r.total||r.entries.length)+1}:{loading:!1,loaded:!1,entries:[i],total:1};this.auditThreadChildren={...n,[e]:a}},removeLiveAuditThreadChild(e,t){let n=this.auditThreadChildren;!n||typeof n!=`object`||Object.keys(n).forEach(r=>{let i=n[r],a=i&&Array.isArray(i.entries)?i.entries:[],o=a.filter(n=>!fC(n,e,t)),s=a.length-o.length;s!==0&&(this.auditThreadChildren={...this.auditThreadChildren,[r]:{...i,entries:o,total:Math.max(0,Number(i.total||a.length)-s)}},this.decrementLiveAuditThreadCount(r,s))})},decrementLiveAuditThreadCount(e,t){let n=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],r=n.findIndex(t=>String(t.session_id||``).trim()===e);if(r<0)return;let i=n[r],a=[...n];a.splice(r,1,{...i,session_count:Math.max(1,Number(i.session_count||1)-t)}),this.auditLog.entries=a},mergeLiveAuditPatch(e,t){let n={...e,...t};return t.data===void 0&&e.data!==void 0?n.data=e.data:e.data&&t.data&&typeof e.data==`object`&&typeof t.data==`object`&&!Array.isArray(e.data)&&!Array.isArray(t.data)&&(n.data={...e.data,...t.data}),this.mergeLiveAuditUsagePatch(n)},mergeLiveAuditUsagePatch(e){let t=this.liveUsageEntryForAudit(e);if(!t)return e;let n=this.auditEntryWithLiveUsage(e,t);return this.removeSkippedLiveUsage(t),n},liveUsageEntryForAudit(e){let t=String(e&&e.request_id||``).trim();return t&&((this.usageLog&&Array.isArray(this.usageLog.entries)?this.usageLog.entries:[]).find(e=>String(e&&e.request_id||``).trim()===t)||this.skippedLiveUsageByRequestId&&this.skippedLiveUsageByRequestId[t])||null},notifyLiveConversation(e){e&&typeof this.refreshLiveConversation==`function`&&this.refreshLiveConversation(e)},fetchExpandedAuditDetailIfReady(e){!e||!this.isAuditEntryExpanded||!this.isAuditEntryExpanded(e)||String(e._live_state||``).trim()!==`audit.flushed`&&!e._audit_flushed||typeof this.fetchAuditEntryDetail==`function`&&this.fetchAuditEntryDetail(e)},liveAuditStateRank(e){switch(String(e||``).trim()){case`audit.started`:return 10;case`audit.updated`:case`audit.stream`:return 20;case`audit.completed`:return 30;case`audit.failed`:case`audit.flushed`:case`audit.detail`:return 40;default:return 0}},liveAuditStateAfter(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return this.liveAuditStateRank(n)>this.liveAuditStateRank(r)?n:r},liveAuditStateSettled(e){return this.liveAuditStateRank(e)>=this.liveAuditStateRank(`audit.completed`)},liveAuditEventFlushed(e){let t=String(e||``).trim();return t===`audit.failed`||t===`audit.flushed`||t===`audit.detail`},removeLiveAuditEntry(e){if(!e||!this.auditLog||!Array.isArray(this.auditLog.entries))return;let t=String(e.id||``).trim(),n=String(e.request_id||``).trim();if(!t&&!n)return;let r=this.auditLog.entries,i=[],a=0,o=0,s=!1;r.forEach(e=>{if(!fC(e,t,n)){i.push(e);return}a++;let r=String(e.session_id||``).trim(),c=Math.max(1,Number(e.session_count||1));if(!this.auditGroupSessions||!r||c<=1)return;o++;let l=this.auditThreadChildren&&this.auditThreadChildren[r],u=l&&Array.isArray(l.entries)?l.entries.filter(e=>!fC(e,t,n)):[];if(u.length===0){s=!0;return}let d={...u[0],session_id:r,session_count:c-1};i.push(d),this.auditThreadChildren={...this.auditThreadChildren,[r]:{...l,entries:u.slice(1),total:Math.max(0,Number(l.total||c)-1)}}}),a>0&&(this.auditLog.entries=i,this.auditLog.total=Math.max(0,Number(this.auditLog.total||0)-a+o)),this.removeLiveAuditThreadChild(t,n),s&&typeof this.fetchAuditLog==`function`&&this.fetchAuditLog(!0)},mergeLiveUsageEntry(e,t){if(!e||typeof e!=`object`)return;e={...e,_live_state:t||e._live_state||`usage.completed`};let n=String(e.id||``).trim();if(!n)return;let r=this.usageLog&&Array.isArray(this.usageLog.entries)?this.usageLog.entries:[],i=r.findIndex(e=>String(e.id||``).trim()===n);if(i>=0){let t=r[i]||{},n=this.mergeLiveUsagePatch(t,e);if(this.applyLiveUsageToAudit(n),this.liveUsageShouldSkip(n)){r.splice(i,1),this.usageLog.entries=[...r],this.usageLog.total=Math.max(0,Number(this.usageLog.total||0)-1),this.storeSkippedLiveUsage(n);return}r.splice(i,1,n),this.usageLog.entries=[...r],this.removeSkippedLiveUsage(n);return}let a=this.mergeLiveUsagePatch(this.liveUsageSeedForEntry(e),e);if(this.applyLiveUsageToAudit(a),this.liveUsageShouldSkip(a)){this.storeSkippedLiveUsage(a);return}this.removeSkippedLiveUsage(a),this.usageLog.entries=[a,...r].slice(0,this.usageLog.limit||50),this.usageLog.total=Number(this.usageLog.total||0)+1},mergeLiveUsagePatch(e,t){e=e&&typeof e==`object`?e:{};let n=this.liveUsageStateAfter(e._live_state,t&&t._live_state),r=this.liveUsageEventFlushed(e)||this.liveUsageEventFlushed({...t,_live_state:n});return{...e,...t,_live:!0,_live_state:n||`usage.completed`,_live_pending:!r,_usage_flushed:r}},liveUsageShouldSkip(e){return!!(this.usageLogHideCached&&this.liveUsageEntryCached(e))||!this.usageLiveInsertAllowed()},liveUsageSeedForEntry(e){return this.skippedLiveUsageForEntry(e)||this.auditLiveUsageForEntry(e)},skippedLiveUsageForEntry(e){let t=String(e&&e.request_id||``).trim();return t&&this.skippedLiveUsageByRequestId?this.skippedLiveUsageByRequestId[t]:null},auditLiveUsageForEntry(e){let t=String(e&&e.request_id||``).trim();if(!t||!this.auditLog||!Array.isArray(this.auditLog.entries))return null;let n=this.auditLog.entries.find(e=>String(e&&e.request_id||``).trim()===t),r=n&&n.usage&&typeof n.usage==`object`&&!Array.isArray(n.usage)?n.usage:null;return r?{id:e&&e.id,request_id:t,entries:r.entries,input_tokens:r.input_tokens,uncached_input_tokens:r.uncached_input_tokens,cached_input_tokens:r.cached_input_tokens,cache_write_input_tokens:r.cache_write_input_tokens,output_tokens:r.output_tokens,total_tokens:r.total_tokens,cached_input_ratio:r.cached_input_ratio,estimated_cached_characters:r.estimated_cached_characters,_live_state:n._usage_live_state,_live_pending:n._usage_live_pending,_usage_flushed:n._usage_flushed}:null},storeSkippedLiveUsage(e){let t=String(e&&e.request_id||``).trim();t&&((!this.skippedLiveUsageByRequestId||typeof this.skippedLiveUsageByRequestId!=`object`||Array.isArray(this.skippedLiveUsageByRequestId))&&(this.skippedLiveUsageByRequestId={}),this.skippedLiveUsageByRequestId[t]=e)},removeSkippedLiveUsage(e){let t=String(e&&e.request_id||``).trim();t&&this.skippedLiveUsageByRequestId&&delete this.skippedLiveUsageByRequestId[t]},liveUsageEntryCached(e){let t=String(e&&e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`||!!(e&&e.cache_hit)},liveUsageEventFlushed(e){let t=String(e&&e._live_state||``).trim();return!!(e&&e._usage_flushed)||t===`usage.failed`||t===`usage.flushed`},liveUsageStateRank(e){switch(String(e||``).trim()){case`usage.completed`:return 10;case`usage.failed`:case`usage.flushed`:return 20;default:return 0}},liveUsageStateAfter(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return this.liveUsageStateRank(n)>this.liveUsageStateRank(r)?n:r},applyLiveUsageToAudit(e){let t=String(e&&e.request_id||``).trim();if(!t||!this.auditLog||!Array.isArray(this.auditLog.entries))return;let n=this.auditLog.entries.findIndex(e=>String(e.request_id||``).trim()===t);if(n>=0){let t=this.auditLog.entries[n];this.auditLog.entries.splice(n,1,this.auditEntryWithLiveUsage(t,e)),this.auditLog.entries=[...this.auditLog.entries]}let r=this.auditThreadChildren;if(!r||typeof r!=`object`)return;let i=r,a=!1;Object.keys(r).forEach(n=>{let r=i[n],o=r&&Array.isArray(r.entries)?r.entries:[],s=o.findIndex(e=>String(e.request_id||``).trim()===t);if(s<0)return;let c=[...o];c.splice(s,1,this.auditEntryWithLiveUsage(o[s],e)),i={...i,[n]:{...r,entries:c}},a=!0}),a&&(this.auditThreadChildren=i)},auditEntryWithLiveUsage(e,t){let n=this.liveUsageStateAfter(e._usage_live_state,t._live_state||`usage.completed`),r=this.liveUsageEventFlushed({_live_state:n,_usage_flushed:e._usage_flushed||t._usage_flushed});return{...e,usage:this.liveUsageSummary(t,e.usage),_usage_live_state:n||`usage.completed`,_usage_live_pending:!r,_usage_flushed:r}},liveUsageSummary(e,t){let n=t&&typeof t==`object`&&!Array.isArray(t)?t:{},r=this.liveNumber(e.input_tokens,this.liveNumber(n.input_tokens,0)),i=this.liveNumber(e.output_tokens,this.liveNumber(n.output_tokens,0)),a=this.liveNumber(e.uncached_input_tokens,this.liveNumber(n.uncached_input_tokens,0)),o=this.liveNumber(e.cached_input_tokens,this.liveNumber(n.cached_input_tokens,0)),s=this.liveNumber(e.cache_write_input_tokens,this.liveNumber(n.cache_write_input_tokens,0));r>0&&a+o+s===0&&(a=r);let c=a+o+s||r,l=c+i||this.liveNumber(e.total_tokens,this.liveNumber(n.total_tokens,0)),u=this.liveNumber(e.cached_input_ratio,this.liveNumber(n.cached_input_ratio,c>0?o/c:0));return{entries:Math.max(1,this.liveNumber(e.entries,this.liveNumber(n.entries,1))),input_tokens:c,uncached_input_tokens:a,cached_input_tokens:o,cache_write_input_tokens:s,output_tokens:i,total_tokens:l,cached_input_ratio:u,estimated_cached_characters:this.liveNumber(e.estimated_cached_characters,this.liveNumber(n.estimated_cached_characters,o*4))}},liveNumber(e,t){let n=Number(e);return Number.isFinite(n)?n:t},auditEntryShouldFetchDetail(e){return!e||e._detail_loading||e._detail_loaded||this.auditEntryLiveDetailPending(e)?!1:this.auditEntryNeedsPersistedLiveDetail(e)||e.bodies_omitted?!0:!this.auditEntryHasDetailData(e)},auditEntryLiveDetailPending(e){if(!e||!e._live)return!1;let t=String(e._live_state||``).trim();return t===`audit.failed`||!e._audit_flushed&&t!==`audit.flushed`&&t!==`audit.detail`},auditEntryNeedsPersistedLiveDetail(e){return!!(e&&e._live&&!e._detail_loaded)},auditEntryHasDetailData(e){let t=e&&e.data;return!t||typeof t!=`object`?!1:t.request_headers!==void 0||t.response_headers!==void 0||t.request_body!==void 0||t.response_body!==void 0||t.request_body_too_big_to_handle!==void 0||t.response_body_too_big_to_handle!==void 0||t.user_agent!==void 0||t.api_key_hash!==void 0||t.temperature!==void 0||t.max_tokens!==void 0||t.error_message!==void 0||t.error_code!==void 0},clearAuditDetailLoading(e){if(!e)return;let t=String(e.id||``).trim(),n=String(e.request_id||``).trim(),r=this.auditLog&&Array.isArray(this.auditLog.entries)?this.auditLog.entries:[],i=r.find(e=>t&&String(e.id||``).trim()===t?!0:!!(n&&String(e.request_id||``).trim()===n)),a=i||e;a._detail_loading=!1,i&&(this.auditLog.entries=[...r])}}}var gC=class{#e=k(j({entries:[],total:0,limit:25,offset:0}));get auditLog(){return I(this.#e)}set auditLog(e){A(this.#e,e,!0)}#t=k(j({entries:[],total:0,limit:50,offset:0}));get usageLog(){return I(this.#t)}set usageLog(e){A(this.#t,e,!0)}#n=k(``);get auditSearch(){return I(this.#n)}set auditSearch(e){A(this.#n,e,!0)}#r=k(``);get auditMethod(){return I(this.#r)}set auditMethod(e){A(this.#r,e,!0)}#i=k(``);get auditStatusCode(){return I(this.#i)}set auditStatusCode(e){A(this.#i,e,!0)}#a=k(``);get auditStream(){return I(this.#a)}set auditStream(e){A(this.#a,e,!0)}#o=k(Ta(`gomodel_audit_group_sessions`,`true`)!==`false`);get auditGroupSessions(){return I(this.#o)}set auditGroupSessions(e){A(this.#o,e,!0)}#s=k(j({}));get auditThreadChildren(){return I(this.#s)}set auditThreadChildren(e){A(this.#s,e,!0)}#c=k(``);get usageLogSearch(){return I(this.#c)}set usageLogSearch(e){A(this.#c,e,!0)}#l=k(``);get usageFilterModel(){return I(this.#l)}set usageFilterModel(e){A(this.#l,e,!0)}#u=k(``);get usageFilterProvider(){return I(this.#u)}set usageFilterProvider(e){A(this.#u,e,!0)}#d=k(``);get usageFilterLabel(){return I(this.#d)}set usageFilterLabel(e){A(this.#d,e,!0)}#f=k(``);get usageFilterUserPath(){return I(this.#f)}set usageFilterUserPath(e){A(this.#f,e,!0)}#p=k(!1);get usageLogHideCached(){return I(this.#p)}set usageLogHideCached(e){A(this.#p,e,!0)}#m=k(!1);get liveLogsStreaming(){return I(this.#m)}set liveLogsStreaming(e){A(this.#m,e,!0)}liveLogsLastSeq=0;liveLogsReconnectAttempts=0;liveLogsReconnectTimer=null;liveLogsController=null;skippedLiveUsageByRequestId=null;fetchUsage=null;fetchAuditLog=null;isAuditEntryExpanded=null;refreshLiveConversation=null;noteLiveTokenUsage=null;get page(){return Wo.page}get customStartDate(){return Dc.customStartDate}get customEndDate(){return Dc.customEndDate}get followsToday(){return Dc.followsToday}liveLogsEnabled(){return vs.liveLogsVisible()}async startLiveLogs(){typeof fetch!=`function`||typeof ReadableStream>`u`||(await vs.ensureLoaded(),this.liveLogsEnabled()&&(this.stopLiveLogs(),this.liveLogsController=typeof AbortController==`function`?new AbortController:null,this.readLiveLogsStream(this.liveLogsController)))}stopLiveLogs(){this.liveLogsStreaming=!1,this.liveLogsReconnectTimer&&=(clearTimeout(this.liveLogsReconnectTimer),null),this.liveLogsController&&typeof this.liveLogsController.abort==`function`&&this.liveLogsController.abort(),this.liveLogsController=null}ensureLiveLogs(){this.liveLogsController||this.liveLogsReconnectTimer||this.startLiveLogs()}async readLiveLogsStream(e){let t={};e&&(t.signal=e.signal);let n=mC(this.liveLogsLastSeq),r=K.generation;try{let i=await ds(n,t);if(i.status===401){if(K.handleUnauthorized(r),r{this.liveLogsReconnectTimer=null,this.startLiveLogs()},t)}async fetchAuditEntryDetail(e){if(!this.auditEntryShouldFetchDetail(e))return;let t=String(e.id||``).trim();if(!t)return;e._detail_loading=!0;let n=e;try{let e=await ps(`/admin/audit/detail?log_id=`+encodeURIComponent(t),{label:`audit detail`});if(e.stale||!e.ok)return;n=this.mergeLiveAuditEntry(e.data,`audit.detail`)||n}catch(e){console.error(`Failed to fetch audit detail:`,e)}finally{this.clearAuditDetailLoading(n)}}};Object.assign(gC.prototype,hC());var _C=new gC;if(typeof window<`u`){let e=!1;window.addEventListener(`pagehide`,()=>{e=!!_C.liveLogsController,_C.stopLiveLogs()}),window.addEventListener(`pageshow`,t=>{t.persisted&&e&&_C.ensureLiveLogs()})}var vC=null;Mn(()=>{An(()=>{let e=K.refreshTick;if(vC===null){vC=e;return}e!==vC&&(vC=e,Er(()=>{_C.stopLiveLogs(),_C.startLiveLogs()}))})});function yC(){return{total_requests:0,total_input_tokens:0,total_output_tokens:0,total_tokens:0,uncached_input_tokens:0,cached_input_tokens:0,cache_write_input_tokens:0,total_input_cost:null,total_output_cost:null,total_cost:null,rewrite_tokens_saved:0,rewrite_cost_saved:null}}function bC(){return{entries:[],total:0,limit:50,offset:0}}function xC(e,t){let n=[[`model`,e&&e.model],[`provider`,e&&e.provider],[`label`,e&&e.label],[`user_path`,e&&e.user_path]],r=``;for(let[e,i]of n)!i||e===t||(r+=`&`+e+`=`+encodeURIComponent(i));return r}function SC({limit:e,offset:t,hideCached:n,search:r}){let i=`&limit=`+e+`&offset=`+t;return i+=`&cache_mode=`+(n?`uncached`:`all`),r&&(i+=`&search=`+encodeURIComponent(r)),i}function CC(e,t){let n=new Set(e||[]);return t&&n.add(t),[...n].sort()}function wC(e,t){let n=Number(t&&t.total_requests||0)-Number(e&&e.total_requests||0);return Number.isFinite(n)&&n>0?n:0}function TC(e,t,n){let r=n?e:t,i=Number(r&&r.total_requests||0);return Number.isFinite(i)?i:0}function EC(e,t,n){let r=wC(e,t);return r<=0?``:n?tc(r)+` cached requests hidden`:tc(Number(e&&e.total_requests||0))+` to providers + `+tc(r)+` from cache`}function DC(e){let t=e||{};return t.total_input_cost===null||t.total_input_cost===void 0?``:nc(t.total_input_cost)+` input + `+nc(t.total_output_cost)+` output`}function OC(e){let t=Number(e&&e.rewrite_tokens_saved||0);return Number.isFinite(t)&&t>0?t:0}function kC(e){return OC(e)>0}function AC(e){let t=e||{};return t.rewrite_cost_saved===void 0?null:t.rewrite_cost_saved}function jC(){return`Estimated at 4 net characters removed per token`}function MC(e,t){return t===`costs`?nc(AC(e)):ac(OC(e))}function NC(e,t){let n=t===`costs`,r=n?Number(AC(e)):OC(e);if(!Number.isFinite(r)||r<=0)return null;let i=e&&(n?e.total_cost:e.total_input_tokens);if(i==null)return null;let a=Number(i);return!Number.isFinite(a)||a<0?null:r/(a+r)*100}function PC(e,t){let n=NC(e,t);return n===null?``:(n<.1?`<0.1`:n.toFixed(1))+`% less`}function FC(e,t){let n=OC(e);if(n<=0)return``;let r=[tc(n)+` estimated prompt token-transmissions removed across provider requests`,jC(),`Savings are summed per provider request; resent conversation history is counted again`],i=AC(e);i!=null&&(r.push(nc(i)+` estimated gross input cost avoided`),r.push(`Prompt-cache changes caused by rewriting are not included`));let a=PC(e,t);return a&&r.push(a+` than the same traffic without rewriting (`+(t===`costs`?`cost`:`tokens`)+`)`),r.join(` +`)}function IC(e){return String(e&&e.cost_source||``).trim()}function LC(e){let t=IC(e);return t===`openrouter_credits`||t===`xai_cost_in_usd_ticks`}function RC(e){switch(IC(e)){case`openrouter_credits`:return`Costs from OpenRouter USD-based credits.`;case`xai_cost_in_usd_ticks`:return`Costs from xAI usage.cost_in_usd_ticks.`;default:return``}}function zC(e){return String(e&&e.cache_type||``).trim().toLowerCase()}function BC(e){let t=zC(e);return t===`exact`||t===`semantic`}function VC(e){let t=zC(e);return t===`exact`?`Exact`:t===`semantic`?`Semantic`:`-`}function HC(e,t){let n=t?String(t):``;return BC(e)?n?`Saved by cache — not charged +`+n:`Saved by cache — not charged`:n}function UC(e){let t=Number(e&&e.cached_input_ratio);return!Number.isFinite(t)||t<=0?0:Math.min(1,t)}function WC(e){return Number(e&&e.cached_input_tokens||0)>0}function GC(e){return WC(e)?(UC(e)*100).toFixed(1)+`%`:``}function KC(e){if(!WC(e))return``;let t=Number(e.cached_input_tokens||0),n=Number(e.uncached_input_tokens||0),r=Number(e.cache_write_input_tokens||0),i=t+n+r,a=[tc(t)+` cached / `+tc(i)+` input tokens`];return r>0&&a.push(tc(r)+` cache write`),a.join(` +`)}function qC(e){let t=[];if(RC(e)&&(t.push(RC(e)),t.push(``)),t.push(`Input: `+nc(e.input_cost)),t.push(`Output: `+nc(e.output_cost)),e.raw_data){t.push(``);for(let[n,r]of Object.entries(e.raw_data)){let e=n.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase()),i=r&&typeof r==`object`?JSON.stringify(r):tc(r);t.push(e+`: `+i)}}return t.join(` +`)}function JC(e){return Array.isArray(e&&e.labels)?e.labels:[]}function YC(e,t,n){return(e||[]).length>0||t?!0:(n||[]).some(e=>JC(e).length>0)}function XC(e){return e&&typeof e.total_tokens==`number`?e.total_tokens:(e&&e.input_tokens||0)+(e&&e.output_tokens||0)}function ZC(e,t){return t?e.total_cost||0:XC(e)}function QC(e,t){return[...e||[]].sort((e,n)=>t?(n.total_cost||0)-(e.total_cost||0):ZC(n,t)-ZC(e,t))}function $C(e){let t=Array.isArray(e)?e:[];if(t.length===0)return!1;if(t.length!==1)return!0;let n=String(t[0]&&t[0].user_path||``).trim();return n!==``&&n!==`/`}function ew(e){return(e||`chart`)===`chart`||e===`stacked`}function tw(e,t,n){let r=QC(e,n),i=e=>Number(e)||0,a=e=>n?Math.min(i(e.cached_input_cost),i(e.input_cost)):i(e.cached_input_tokens),o=e=>n?i(e.input_cost)-a(e):i(e.uncached_input_tokens)+i(e.cached_input_tokens)+i(e.cache_write_input_tokens)>0?i(e.uncached_input_tokens)+i(e.cache_write_input_tokens):i(e.input_tokens),s=e=>i(n?e.output_cost:e.output_tokens),c=e=>n?0:i(e.local_cached_input_tokens),l=e=>n?0:i(e.local_cached_output_tokens),u=r.slice(0,10),d=r.slice(10),f=u.map(t),p=u.map(o),m=u.map(s),h=u.map(a),g=u.map(c),_=u.map(l);if(d.length>0){f.push(`Other`);let e=e=>d.reduce((t,n)=>t+e(n),0);p.push(e(o)),m.push(e(s)),h.push(e(a)),g.push(e(c)),_.push(e(l))}return{labels:f,inputs:p,outputs:m,prompts:h,localIns:g,localOuts:_}}function nw(e){return Math.max(200,e*32+72)}var q=new class{#e=k(`tokens`);get usageMode(){return I(this.#e)}set usageMode(e){A(this.#e,e,!0)}get usageFilterModel(){return _C.usageFilterModel}set usageFilterModel(e){_C.usageFilterModel=e}get usageFilterProvider(){return _C.usageFilterProvider}set usageFilterProvider(e){_C.usageFilterProvider=e}get usageFilterLabel(){return _C.usageFilterLabel}set usageFilterLabel(e){_C.usageFilterLabel=e}get usageFilterUserPath(){return _C.usageFilterUserPath}set usageFilterUserPath(e){_C.usageFilterUserPath=e}#t=k(j({models:[],providers:[],labels:[]}));get usageFacetOptions(){return I(this.#t)}set usageFacetOptions(e){A(this.#t,e,!0)}#n=k(j(yC()));get usageSummary(){return I(this.#n)}set usageSummary(e){A(this.#n,e,!0)}#r=k(j(yC()));get usageSummaryAll(){return I(this.#r)}set usageSummaryAll(e){A(this.#r,e,!0)}#i=k(j([]));get modelUsage(){return I(this.#i)}set modelUsage(e){A(this.#i,e,!0)}#a=k(j([]));get userPathUsage(){return I(this.#a)}set userPathUsage(e){A(this.#a,e,!0)}#o=k(j([]));get labelUsage(){return I(this.#o)}set labelUsage(e){A(this.#o,e,!0)}get usageLog(){return _C.usageLog}set usageLog(e){_C.usageLog=e}get usageLogSearch(){return _C.usageLogSearch}set usageLogSearch(e){_C.usageLogSearch=e}get usageLogHideCached(){return _C.usageLogHideCached}set usageLogHideCached(e){_C.usageLogHideCached=e}#s=k(`chart`);get modelUsageView(){return I(this.#s)}set modelUsageView(e){A(this.#s,e,!0)}#c=k(`chart`);get userPathUsageView(){return I(this.#c)}set userPathUsageView(e){A(this.#c,e,!0)}#l=k(`chart`);get labelUsageView(){return I(this.#l)}set labelUsageView(e){A(this.#l,e,!0)}#u=k(!1);get summaryLoading(){return I(this.#u)}set summaryLoading(e){A(this.#u,e,!0)}#d=k(!1);get modelUsageLoading(){return I(this.#d)}set modelUsageLoading(e){A(this.#d,e,!0)}#f=k(!1);get userPathUsageLoading(){return I(this.#f)}set userPathUsageLoading(e){A(this.#f,e,!0)}#p=k(!1);get labelUsageLoading(){return I(this.#p)}set labelUsageLoading(e){A(this.#p,e,!0)}#m=k(!1);get usageLogLoading(){return I(this.#m)}set usageLogLoading(e){A(this.#m,e,!0)}#h={};#g(e){this.#h[e]&&this.#h[e].abort();let t=new AbortController;return this.#h[e]=t,t}#_(e,t){this.#h[e]===t&&(this.#h[e]=null)}filterQueryStr(e){return xC({model:this.usageFilterModel,provider:this.usageFilterProvider,label:this.usageFilterLabel,user_path:this.usageFilterUserPath},e)}onUsageFilterChanged(){this.fetchUsagePage()}toggleUsageLabelFilter(e){this.usageFilterLabel=this.usageFilterLabel===e?``:e,this.onUsageFilterChanged()}usageLabelChipTitle(e){return this.usageFilterLabel===e?`Clear label filter`:`Filter usage by "`+e+`"`}toggleUsageMode(e){this.usageMode=e,Wo.navigate(`usage`,e===`costs`?`costs`:null)}toggleUsageChartView(e,t){e===`model`&&(this.modelUsageView=t),e===`userPath`&&(this.userPathUsageView=t),e===`label`&&(this.labelUsageView=t)}usageFilterModelOptions(){return CC(this.usageFacetOptions.models,this.usageFilterModel)}usageFilterProviderOptions(){return CC(this.usageFacetOptions.providers,this.usageFilterProvider)}usageFilterLabelOptions(){return CC(this.usageFacetOptions.labels,this.usageFilterLabel)}async fetchUsagePage(){await vs.ensureLoaded();let e=[this.fetchUsagePageSummary(),this.fetchUsageFacetOptions(),this.fetchModelUsage(),this.fetchUserPathUsage(),this.fetchLabelUsage(),this.fetchUsageLog(!0)];Nc.cacheAnalyticsEnabled()&&e.push(Nc.fetchCacheOverview(this.filterQueryStr())),await Promise.all(e)}async fetchUsagePageSummary(){let e=this.#g(`summary`);this.summaryLoading=!0;try{let t=Dc.queryStr()+this.filterQueryStr(),[n,r]=await Promise.all([ps(`/admin/usage/summary?`+t+`&cache_mode=uncached`,{label:`usage page summary`,signal:e.signal}),ps(`/admin/usage/summary?`+t+`&cache_mode=all`,{label:`usage page summary (all)`,signal:e.signal})]);if(n.stale||r.stale||e.signal.aborted)return;if(!n.ok||!r.ok){this.usageSummary=yC(),this.usageSummaryAll=yC();return}this.usageSummary=n.data&&typeof n.data==`object`?n.data:yC(),this.usageSummaryAll=r.data&&typeof r.data==`object`?r.data:yC()}catch(e){if(hs(e))return;console.error(`Failed to fetch usage page summary:`,e),this.usageSummary=yC(),this.usageSummaryAll=yC()}finally{this.#_(`summary`,e),this.#h.summary===null&&(this.summaryLoading=!1)}}async fetchUsageFacetOptions(){let e=this.#g(`facets`);try{let t=async(t,n)=>{let r=await ps(t+`?`+Dc.queryStr()+this.filterQueryStr(n),{label:`usage facet options`,signal:e.signal});return r.stale?null:r.ok&&Array.isArray(r.data)?r.data:[]},n=t(`/admin/usage/models`,`model`),r=!this.usageFilterModel&&!this.usageFilterProvider,[i,a,o]=await Promise.all([n,r?n:t(`/admin/usage/models`,`provider`),t(`/admin/usage/labels`,`label`)]);if(e.signal.aborted||i===null||a===null||o===null)return;this.usageFacetOptions={models:i.map(e=>e&&e.model).filter(Boolean),providers:a.map(e=>dc(e)).filter(Boolean),labels:o.map(e=>e&&e.label).filter(Boolean)}}catch(e){if(hs(e))return;console.error(`Failed to fetch usage facet options:`,e),this.usageFacetOptions={models:[],providers:[],labels:[]}}finally{this.#_(`facets`,e)}}async#v(e,t,n,r,i){let a=this.#g(e);i(!0);try{let e=await ps(t+`?`+Dc.queryStr()+this.filterQueryStr(),{label:n,signal:a.signal});if(e.stale||a.signal.aborted)return;if(!e.ok){r([]);return}r(Array.isArray(e.data)?e.data:[])}catch(e){if(hs(e))return;console.error(`Failed to fetch `+n+`:`,e),r([])}finally{this.#_(e,a),this.#h[e]===null&&i(!1)}}fetchModelUsage(){return this.#v(`modelUsage`,`/admin/usage/models`,`usage models`,e=>this.modelUsage=e,e=>this.modelUsageLoading=e)}fetchUserPathUsage(){return this.#v(`userPathUsage`,`/admin/usage/user-paths`,`usage user paths`,e=>this.userPathUsage=e,e=>this.userPathUsageLoading=e)}fetchLabelUsage(){return this.#v(`labelUsage`,`/admin/usage/labels`,`usage labels`,e=>this.labelUsage=e,e=>this.labelUsageLoading=e)}async fetchUsageLog(e){let t=this.#g(`usageLog`);this.usageLogLoading=!0;try{e&&(this.usageLog.offset=0);let n=Dc.queryStr()+this.filterQueryStr();n+=SC({limit:this.usageLog.limit,offset:this.usageLog.offset,hideCached:this.usageLogHideCached,search:this.usageLogSearch});let r=await ps(`/admin/usage/log?`+n,{label:`usage log`,signal:t.signal});if(r.stale||t.signal.aborted)return;if(!r.ok){this.usageLog=bC();return}let i=r.data&&typeof r.data==`object`?r.data:bC();i.entries||=[],this.usageLog=i}catch(e){if(hs(e))return;console.error(`Failed to fetch usage log:`,e),this.usageLog=bC()}finally{this.#_(`usageLog`,t),this.#h.usageLog===null&&(this.usageLogLoading=!1)}}usageLogNextPage(){this.usageLog.offset+this.usageLog.limit0&&(this.usageLog.offset=Math.max(0,this.usageLog.offset-this.usageLog.limit),this.fetchUsageLog(!1))}};_C.fetchUsage=()=>{Wo.page===`usage`&&q.fetchUsagePage()};var rw=R(`
        `);function iw(e,t){E(t,!0);let n=ya(t,`value`,15,``),r=ya(t,`placeholder`,3,``),i=ya(t,`label`,3,``),a=ya(t,`id`,3,void 0),o=ya(t,`oninput`,3,void 0),s=ya(t,`class`,3,``);var c=rw(),l=M(c);G(l,{get icon(){return mo},class:`filter-input-icon`});var u=P(l,2);na(u),T(c),F(()=>{U(c,1,Fi([`filter-input-wrap`,s()]),`svelte-30xz1k`),W(u,`id`,a()),W(u,`placeholder`,r()),W(u,`aria-label`,i())}),L(`input`,u,function(...e){o()?.apply(this,e)}),da(u,n),z(e,c),D()}Hr([`input`]);function aw(e,t=300){let n=null,r=(...r)=>{clearTimeout(n),n=setTimeout(()=>{n=null,e(...r)},t)};return r.cancel=()=>{clearTimeout(n),n=null},r}var ow=R(``),sw=R(``),cw=R(`
        `);function lw(e,t){E(t,!0);let n=aw(()=>q.onUsageFilterChanged());An(()=>n.cancel);var r=cw(),i=M(r),a=M(i);a.value=a.__value=``,H(P(a),16,()=>q.usageFilterModelOptions(),e=>e,(e,t)=>{var n=ow(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(i);var o=P(i,2),s=M(o);s.value=s.__value=``,H(P(s),16,()=>q.usageFilterProviderOptions(),e=>e,(e,t)=>{var n=ow(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(o);var c=P(o,2),l=e=>{var t=sw(),n=M(t);n.value=n.__value=``,H(P(n),16,()=>q.usageFilterLabelOptions(),e=>e,(e,t)=>{var n=ow(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(t),L(`change`,t,()=>q.onUsageFilterChanged()),Gi(t,()=>q.usageFilterLabel,e=>q.usageFilterLabel=e),z(e,t)},u=O(()=>q.usageFilterLabelOptions().length>0);V(c,e=>{I(u)&&e(l)}),iw(P(c,2),{class:`usage-page-filters-user-path`,placeholder:`User path /team/alpha`,label:`Filter by user path`,get oninput(){return n},get value(){return q.usageFilterUserPath},set value(e){q.usageFilterUserPath=e}}),T(r),L(`change`,i,()=>q.onUsageFilterChanged()),Gi(i,()=>q.usageFilterModel,e=>q.usageFilterModel=e),L(`change`,o,()=>q.onUsageFilterChanged()),Gi(o,()=>q.usageFilterProvider,e=>q.usageFilterProvider=e),z(e,r),D()}Hr([`change`]);var uw=R(`
        Cache Saved
        Cache Hits
        `,1);function dw(e,t){E(t,!0);var n=Qr(),r=N(n),i=e=>{var t=uw(),n=N(t),r=P(M(n),2),i=M(r,!0);T(r),T(n);var a=P(n,2),o=P(M(a),2),s=M(o,!0);T(o),T(a),F((e,t)=>{B(i,e),B(s,t)},[()=>nc(Nc.cacheOverview.summary.total_saved_cost),()=>tc(Nc.cacheOverview.summary.total_hits)]),z(e,t)},a=O(()=>Nc.cacheAnalyticsEnabled());V(r,e=>{I(a)&&e(i)}),z(e,n),D()}var fw=R(` `),pw=R(`
        Pro Saved
        `),mw=R(`
        Total Requests
        Estimated Cost
        `);function hw(e,t){E(t,!0);let n=O(()=>kC(q.usageSummary)),r=O(()=>MC(q.usageSummary,q.usageMode)),i=O(()=>PC(q.usageSummary,q.usageMode));var a=mw(),o=M(a),s=P(M(o),2),c=M(s),l=e=>{hS(e,{size:18,label:`Loading usage summary`})},u=e=>{var t=Zr();F(e=>B(t,e),[()=>tc(TC(q.usageSummary,q.usageSummaryAll,q.usageLogHideCached))]),z(e,t)};V(c,e=>{q.summaryLoading?e(l):e(u,-1)}),T(s),T(o);var d=P(o,2),f=P(M(d),2),p=M(f),m=e=>{hS(e,{size:18,label:`Loading usage summary`})},h=e=>{var t=Zr();F(e=>B(t,e),[()=>nc(q.usageSummary.total_cost)]),z(e,t)};V(p,e=>{q.summaryLoading?e(m):e(h,-1)}),T(f),T(d);var g=P(d,2),_=e=>{var t=pw(),n=P(M(t),2),a=M(n),o=M(a,!0);T(a);var s=P(a,2),c=e=>{var t=fw(),n=M(t,!0);T(t),F(()=>B(n,I(i))),z(e,t)};V(s,e=>{I(i)&&e(c)}),T(n),T(t),F(e=>{W(n,`title`,e),B(o,I(r))},[()=>FC(q.usageSummary,q.usageMode)]),z(e,t)};V(g,e=>{I(n)&&e(_)}),dw(P(g,2),{}),T(a),F((e,t)=>{W(s,`title`,e),W(f,`title`,t)},[()=>EC(q.usageSummary,q.usageSummaryAll,q.usageLogHideCached),()=>DC(q.usageSummary)]),z(e,a),D()}function gw(e,t,n,r){let{stacked:i=!1,costs:a=!1,resolve:o=e=>e}=r||{},s=e=>a?`$`+Math.abs(e).toFixed(2):ac(Math.abs(e)),c=e=>a?`$`+Math.abs(e).toFixed(4):Math.abs(e).toLocaleString(),l=e=>e.map(e=>i?Math.abs(e):-Math.abs(e)),u=(e,t,n)=>({label:e,data:t,backgroundColor:n,borderColor:`transparent`,borderWidth:0,borderRadius:4,maxBarThickness:22}),d=e=>(e||[]).some(e=>Math.abs(e)>0),f=[u(a?`Input Cost`:`Input Tokens`,l(n.inputs),o(`var(--token-input)`)),u(a?`Output Cost`:`Output Tokens`,n.outputs,o(`var(--token-output)`))];return d(n.prompts)&&f.push(u(a?`Prompt Cached Cost`:`Prompt Cached`,l(n.prompts),o(`var(--token-prompt)`))),!a&&d(n.localIns)&&f.push(u(`Locally Cached (Input)`,l(n.localIns),o(`var(--token-local)`))),!a&&d(n.localOuts)&&f.push(u(`Locally Cached (Output)`,n.localOuts,o(`var(--token-local)`))),{type:`bar`,data:{labels:t,datasets:f},options:{indexAxis:`y`,responsive:!0,maintainAspectRatio:!1,animation:{duration:0},layout:{padding:{top:8}},scales:{x:{stacked:!0,beginAtZero:!0,grid:i?{color:e.grid}:{color:t=>t.tick&&t.tick.value===0?e.text:e.grid},border:{display:!1},ticks:{color:e.text,font:My(),callback:e=>s(e)}},y:{stacked:!0,grid:{display:!1},border:{display:!1},ticks:{color:e.text,font:My(),autoSkip:!1}}},plugins:{legend:{labels:{color:e.text,font:{size:12}}},tooltip:Ny(e,{label:e=>e.dataset.label+`: `+c(e.parsed.x),footer:e=>{let t=0;return e.forEach(e=>{t+=Math.abs(Number(e.parsed.x))||0}),`Total: `+c(t)}})}}}}var _w=R(`
        `),vw=R(`

        `),yw=R(`

        `,1),bw=R(`
        `),xw=R(`Model Provider`,1),Sw=R(`User Path`),Cw=R(`Label Requests`,1),ww=R(` `,1),Tw=R(` `),Ew=R(` `,1),Dw=R(` `),Ow=R(`
        Input TokensOutput TokensPrompt CachedLocal CachedTotal TokensInput CostOutput CostTotal Cost
        `),kw=R(`
        `),Aw=R(`
        `);function jw(e,t){E(t,!0);let n=e=>{var n=_w(),r=M(n);let a;var o=P(r,2);let s;var l=P(o,2);let u;T(n),F(()=>{W(n,`aria-label`,I(i).group),a=U(r,1,`chart-view-btn svelte-1kee4g8`,null,a,{active:I(c)===`chart`}),W(r,`aria-pressed`,I(c)===`chart`),W(r,`aria-label`,`Show ${I(i).noun??``} chart`),s=U(o,1,`chart-view-btn svelte-1kee4g8`,null,s,{active:I(c)===`stacked`}),W(o,`aria-pressed`,I(c)===`stacked`),W(o,`aria-label`,`Show ${I(i).noun??``} stacked chart`),u=U(l,1,`chart-view-btn svelte-1kee4g8`,null,u,{active:I(c)===`table`}),W(l,`aria-pressed`,I(c)===`table`),W(l,`aria-label`,`Show ${I(i).noun??``} table`)}),L(`click`,r,()=>q.toggleUsageChartView(t.kind,`chart`)),L(`click`,o,()=>q.toggleUsageChartView(t.kind,`stacked`)),L(`click`,l,()=>q.toggleUsageChartView(t.kind,`table`)),z(e,n)},r={model:{group:`Model usage view`,noun:`model usage`,tokensTitle:`Token Usage by Model`,costsTitle:`Cost by Model`},userPath:{group:`User path usage view`,noun:`user path usage`,tokensTitle:`Usage by User Path`,costsTitle:`Cost by User Path`},label:{group:`Label usage view`,noun:`label usage`,tokensTitle:`Usage by Label`,costsTitle:`Cost by Label`}},i=O(()=>r[t.kind]),a=O(()=>t.kind===`model`?e=>pc(e):t.kind===`userPath`?e=>e.user_path||`/`:e=>e.label);function o(e){return t.kind===`model`?(e.provider_name||e.provider||`-`)+`/`+e.model:t.kind===`userPath`?e.user_path||`/`:e.label}let s=O(()=>t.kind===`model`?q.modelUsage:t.kind===`userPath`?q.userPathUsage:q.labelUsage),c=O(()=>t.kind===`model`?q.modelUsageView:t.kind===`userPath`?q.userPathUsageView:q.labelUsageView),l=O(()=>t.kind===`model`?q.modelUsageLoading:t.kind===`userPath`?q.userPathUsageLoading:q.labelUsageLoading),u=O(()=>q.usageMode===`costs`),d=O(()=>t.kind===`userPath`?$C(I(s)):I(s).length>0),f=O(()=>I(u)?I(i).costsTitle:I(i).tokensTitle),p=O(()=>tw(I(s),I(a),I(u))),m=O(()=>QC(I(s),I(u)));function h(){return ew(I(c))?gw(jy(),I(p).labels,I(p),{stacked:I(c)===`stacked`,costs:I(u),resolve:Py}):null}var g=Qr(),_=N(g),v=e=>{var r=kw(),a=M(r),s=M(a),u=e=>{BS(e,{copyId:`label-usage-help-copy`,label:`label usage help`,text:`One request can have multiple labels. Such a request counts once under each of its labels, so label rows can overlap and add up to more than the period totals.`,title:e=>{var t=vw(),n=M(t,!0);T(t),F(()=>B(n,I(f))),z(e,t)},extra:e=>{var t=Qr(),n=N(t),r=e=>{hS(e,{size:14,get label(){return`Loading ${I(i).noun??``}`}})};V(n,e=>{I(l)&&e(r)}),z(e,t)},$$slots:{title:!0,extra:!0}})},d=e=>{var t=yw(),n=N(t),r=M(n,!0);T(n);var a=P(n,2),o=e=>{hS(e,{size:14,get label(){return`Loading ${I(i).noun??``}`}})};V(a,e=>{I(l)&&e(o)}),F(()=>B(r,I(f))),z(e,t)};V(s,e=>{t.kind===`label`?e(u):e(d,-1)});var g=P(s,2);n(g),T(a);var _=P(a,2),v=e=>{var t=bw();let n;Ey(M(t),{build:h}),T(t),F(e=>n=Hi(t,``,n,e),[()=>({height:`${nw(I(p).labels.length)??``}px`})]),z(e,t)},y=O(()=>ew(I(c))),b=e=>{var n=Ow(),r=M(n),i=M(r),a=M(i),s=M(a),c=e=>{var t=xw();Ue(2),z(e,t)},l=e=>{z(e,Sw())},u=e=>{var t=Cw();Ue(2),z(e,t)};V(s,e=>{t.kind===`model`?e(c):t.kind===`userPath`?e(l,1):e(u,-1)}),Ue(8),T(a),T(i);var d=P(i);H(d,21,()=>I(m),e=>o(e),(e,n)=>{var r=Dw(),i=M(r),a=e=>{var t=ww(),r=N(t),i=M(r,!0);T(r);var a=P(r,2),o=M(a),s=M(o,!0);T(o),T(a),F(e=>{B(i,I(n).model||`-`),B(s,e)},[()=>dc(I(n))||`-`]),z(e,t)},o=e=>{var t=Tw(),r=M(t,!0);T(t),F(()=>B(r,I(n).user_path||`/`)),z(e,t)},s=e=>{var t=Ew(),r=N(t),i=M(r);let a;var o=M(i,!0);T(i),T(r);var s=P(r,2),c=M(s,!0);T(s),F((e,t,r)=>{a=U(i,1,`usage-label-chip`,null,a,{active:q.usageFilterLabel===I(n).label}),Hi(i,`--label-color: ${e??``}`),W(i,`title`,t),B(o,I(n).label),B(c,r)},[()=>Ly(I(n).label),()=>q.usageLabelChipTitle(I(n).label),()=>tc(I(n).requests)]),L(`click`,i,()=>q.toggleUsageLabelFilter(I(n).label)),z(e,t)};V(i,e=>{t.kind===`model`?e(a):t.kind===`userPath`?e(o,1):e(s,-1)});var c=P(i),l=M(c,!0);T(c);var u=P(c),d=M(u,!0);T(u);var f=P(u),p=M(f,!0);T(f);var m=P(f),h=M(m,!0);T(m);var g=P(m),_=M(g,!0);T(g);var v=P(g),y=M(v,!0);T(v);var b=P(v),x=M(b,!0);T(b);var S=P(b),C=M(S,!0);T(S),T(r),F((e,t,n,r,i,a,o,s,c,u,g)=>{B(l,e),B(d,t),W(f,`title`,n),B(p,r),W(m,`title`,`${i??``} input + ${a??``} output`),B(h,o),B(_,s),B(y,c),B(x,u),B(C,g)},[()=>tc(I(n).input_tokens),()=>tc(I(n).output_tokens),()=>I(n).cached_input_cost==null?``:`~`+nc(I(n).cached_input_cost)+` at current cached-input pricing`,()=>tc(I(n).cached_input_tokens||0),()=>tc(I(n).local_cached_input_tokens||0),()=>tc(I(n).local_cached_output_tokens||0),()=>tc((I(n).local_cached_input_tokens||0)+(I(n).local_cached_output_tokens||0)),()=>tc(XC(I(n))),()=>nc(I(n).input_cost),()=>nc(I(n).output_cost),()=>nc(I(n).total_cost)]),z(e,r)}),T(d),T(r),T(n),z(e,n)};V(_,e=>{I(y)?e(v):e(b,-1)}),T(r),z(e,r)},y=e=>{var t=Aw();hS(M(t),{size:20,get label(){return`Loading ${I(i).noun??``}`}}),T(t),z(e,t)};V(_,e=>{I(d)?e(v):I(l)&&e(y,1)}),z(e,g),D()}Hr([`click`]);var Mw=R(``);function Nw(e,t){E(t,!0);let n=ya(t,`total`,3,0),r=ya(t,`offset`,3,0),i=ya(t,`limit`,3,25);var a=Qr(),o=N(a),s=e=>{var a=Mw(),o=M(a),s=M(o);T(o);var c=P(o,2),l=M(c),u=P(l,2);T(c),T(a),F(e=>{B(s,`Showing ${r()+1}-${e??``} of ${n()??``}`),l.disabled=r()===0,u.disabled=r()+i()>=n()},[()=>Math.min(r()+i(),n())]),L(`click`,l,()=>t.onprev?.()),L(`click`,u,()=>t.onnext?.()),z(e,a)};V(o,e=>{n()>0&&e(s)}),z(e,a),D()}Hr([`click`]);var Pw=(e,t=f)=>{var n=Qr(),r=N(n),i=e=>{var n=Iw();H(n,20,()=>JC(t()),e=>e,(e,t)=>{var n=Fw();let r;var i=M(n,!0);T(n),F((e,a)=>{r=U(n,1,`usage-label-chip`,null,r,{active:q.usageFilterLabel===t}),Hi(n,`--label-color: ${e??``}`),W(n,`title`,a),B(i,t)},[()=>Ly(t),()=>q.usageLabelChipTitle(t)]),L(`click`,n,()=>q.toggleUsageLabelFilter(t)),z(e,n)}),T(n),z(e,n)},a=O(()=>JC(t()).length>0),o=e=>{z(e,Lw())};V(r,e=>{I(a)?e(i):e(o,-1)}),z(e,n)},Fw=R(``),Iw=R(`
        `),Lw=R(`-`),Rw=R(`Labels`),zw=R(`Cost`),Bw=R(``),Vw=R(` `),Hw=R(``),Uw=R(` `),Ww=R(` `),Gw=R(`
        TimestampProviderModelUser PathCacheProvider Cache
        `),Kw=R(`
        `),qw=R(`
        `),Jw=R(`

        Request Log

        `);function Yw(e,t){E(t,!0);let n=O(()=>q.usageMode===`costs`),r=O(()=>YC(q.labelUsage,q.usageFilterLabel,q.usageLog.entries)),i=aw(()=>q.fetchUsageLog(!0));An(()=>i.cancel);var a=Jw(),o=P(M(a),2),s=M(o);iw(M(s),{placeholder:`Search by request ID, model, provider...`,label:`Search by request ID, model, provider`,get oninput(){return i},get value(){return q.usageLogSearch},set value(e){q.usageLogSearch=e}}),T(s);var c=P(s,2),l=M(c),u=M(l);na(u),Ue(2),T(l),T(c),T(o);var d=P(o,2),f=e=>{var t=Gw(),i=M(t),a=M(i),o=M(a),s=P(M(o),4),c=e=>{z(e,Rw())};V(s,e=>{I(r)&&e(c)});var l=P(s,3),u=M(l,!0);T(l);var d=P(l),f=M(d,!0);T(d);var p=P(d),m=M(p,!0);T(p);var h=P(p),g=e=>{z(e,zw())};V(h,e=>{I(n)||e(g)}),T(o),T(a);var _=P(a);H(_,21,()=>q.usageLog.entries,e=>e.id,(e,t)=>{var i=Ww();let a;var o=M(i),s=M(o,!0);T(o);var c=P(o),l=M(c),u=M(l,!0);T(l),T(c);var d=P(c),f=M(d,!0);T(d);var p=P(d),m=M(p,!0);T(p);var h=P(p),g=e=>{var n=Bw();Pw(M(n),()=>I(t)),T(n),z(e,n)};V(h,e=>{I(r)&&e(g)});var _=P(h),v=M(_,!0);T(_);var y=P(_),b=M(y),x=e=>{var n=Vw(),r=M(n,!0);T(n),F(e=>B(r,e),[()=>GC(I(t))]),z(e,n)},S=O(()=>WC(I(t))),C=e=>{z(e,Lw())};V(b,e=>{I(S)?e(x):e(C,-1)}),T(y);var w=P(y),ee=M(w,!0);T(w);var te=P(w),ne=M(te,!0);T(te);var re=P(te),ie=M(re),ae=M(ie,!0);T(ie);var oe=P(ie,2),se=e=>{{let n=O(()=>RC(I(t)));G(e,{get icon(){return Wa},class:`cost-source-icon`,get title(){return I(n)}})}},ce=O(()=>I(n)&&LC(I(t)));V(oe,e=>{I(ce)&&e(se)});var le=P(oe,2),ue=e=>{G(e,{get icon(){return qa},class:`cache-savings-icon`})},de=O(()=>I(n)&&BC(I(t)));V(le,e=>{I(de)&&e(ue)});var fe=P(le,2),pe=e=>{var n=Hw();F(()=>W(n,`title`,I(t).costs_calculation_caveat)),z(e,n)};V(fe,e=>{I(n)&&I(t).costs_calculation_caveat&&e(pe)}),T(re);var me=P(re),he=e=>{var n=Uw(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=e=>{{let n=O(()=>RC(I(t)));G(e,{get icon(){return Wa},class:`cost-source-icon`,get title(){return I(n)}})}},s=O(()=>LC(I(t)));V(a,e=>{I(s)&&e(o)});var c=P(a,2),l=e=>{G(e,{get icon(){return qa},class:`cache-savings-icon`})},u=O(()=>BC(I(t)));V(c,e=>{I(u)&&e(l)});var d=P(c,2),f=e=>{var n=Hw();F(()=>W(n,`title`,I(t).costs_calculation_caveat)),z(e,n)};V(d,e=>{I(t).costs_calculation_caveat&&e(f)}),T(n),F((e,t)=>{W(n,`title`,e),B(i,t)},[()=>HC(I(t),qC(I(t))),()=>nc(I(t).total_cost)]),z(e,n)};V(me,e=>{I(n)||e(he)}),T(i),F((e,n,r,c,l,d,p,h,g,_,b,x,S)=>{a=U(i,1,`svelte-hg4ill`,null,a,e),W(o,`title`,n),B(s,r),B(u,c),B(f,I(t).model),B(m,I(t).user_path||`-`),B(v,l),W(y,`title`,d),W(w,`title`,p),B(ee,h),W(te,`title`,g),B(ne,_),W(re,`title`,b),W(ie,`title`,x),B(ae,S)},[()=>({"usage-log-row-cached":BC(I(t))}),()=>lc(I(t).timestamp),()=>ss.formatTimestamp(I(t).timestamp),()=>dc(I(t))||`-`,()=>VC(I(t)),()=>KC(I(t)),()=>I(n)?tc(I(t).input_tokens)+` tokens`:``,()=>I(n)?nc(I(t).input_cost):tc(I(t).input_tokens),()=>I(n)?tc(I(t).output_tokens)+` tokens`:``,()=>I(n)?nc(I(t).output_cost):tc(I(t).output_tokens),()=>I(n)?HC(I(t),``):``,()=>I(n)?HC(I(t),tc(I(t).total_tokens)+` tokens +`+qC(I(t))):``,()=>I(n)?nc(I(t).total_cost):tc(I(t).total_tokens)]),z(e,i)}),T(_),T(i),T(t),F(()=>{B(u,I(n)?`Input Cost`:`Input`),B(f,I(n)?`Output Cost`:`Output`),B(m,I(n)?`Total Cost`:`Total`)}),z(e,t)},p=e=>{var t=Kw();hS(M(t),{size:20,label:`Loading request log`}),T(t),z(e,t)},m=e=>{var t=qw();vS(M(t),{}),T(t),z(e,t)};V(d,e=>{q.usageLog.entries.length>0?e(f):q.usageLogLoading?e(p,1):e(m,-1)}),Nw(P(d,2),{get total(){return q.usageLog.total},get offset(){return q.usageLog.offset},get limit(){return q.usageLog.limit},onprev:()=>q.usageLogPrevPage(),onnext:()=>q.usageLogNextPage()}),T(a),L(`change`,u,()=>q.fetchUsageLog(!0)),fa(u,()=>q.usageLogHideCached,e=>q.usageLogHideCached=e),z(e,a),D()}Hr([`click`,`change`]);var Xw=R(`
        `);function Zw(e,t){E(t,!0);let n=`usage`;An(()=>{K.refreshTick,Wo.page===n&&(q.fetchUsagePage(),_C.ensureLiveLogs())}),An(()=>{Wo.page===n&&(q.usageMode=Wo.sub===`costs`?`costs`:`tokens`)});var r=Xw(),i=P(M(r),2),a=M(i);ky(a,{ariaLabel:`Usage mode`,options:[{value:`tokens`,label:`Tokens`},{value:`costs`,label:`Costs`}],get value(){return q.usageMode},onchange:e=>q.toggleUsageMode(e)}),Xc(P(a,2),{onchange:()=>q.fetchUsagePage()}),T(i);var o=P(i,2);lw(o,{});var s=P(o,2);hw(s,{});var c=P(s,2),l=M(c);jw(l,{kind:`model`});var u=P(l,2);jw(u,{kind:`userPath`}),jw(P(u,2),{kind:`label`}),T(c),Yw(P(c,2),{}),T(r),z(e,r),D()}var Qw=R(`
        `);function $w(e,t){let n=ya(t,`label`,3,`Loading...`),r=ya(t,`class`,3,``);var i=Qw(),a=P(M(i),2),o=M(a,!0);T(a),T(i),F(()=>{U(i,1,Fi([`loading-state`,r()]),`svelte-hzxv1d`),B(o,n())}),z(e,i)}var eT=R(``);function tT(e,t){let n=ya(t,`label`,3,``),r=ya(t,`class`,3,``),i=ya(t,`disabled`,3,!1);var a=eT();gi(M(a),()=>t.children??f),T(a),F(()=>{U(a,1,Fi([`table-action-btn`,r()])),W(a,`aria-label`,n()),W(a,`title`,n()),a.disabled=i()}),L(`click`,a,function(...e){t.onclick?.apply(this,e)}),z(e,a)}Hr([`click`]);async function nT(e,{label:t,errorFallback:n=`Unable to load ${t}.`,unavailableStatuses:r=[503],normalize:i=e=>Array.isArray(e)?e:[],options:a}){let o;try{o=await ps(e,{...a||{},label:t})}catch(e){return hs(e)||console.error(`Failed to fetch ${t}:`,e),{status:`error`,items:[],error:n,result:null}}return o.stale?{status:`stale`,items:[],error:``,result:o}:r.includes(o.status)?{status:`unavailable`,items:[],error:``,result:o}:o.ok?{status:`ok`,items:i(o.data),error:``,result:o}:{status:`error`,items:[],error:o.status===401?``:cs(o.data,n),result:o}}async function rT(e,t,n,{label:r,errorFallback:i=`Unable to ${r}.`,unavailableStatuses:a=[503],unavailableMessage:o=`This feature is unavailable on the gateway.`,options:s}){let c;try{c=await ms(e,t,n,{...s||{},label:r})}catch(e){return hs(e)||console.error(`Failed to ${r}:`,e),{status:`error`,error:i,result:null}}return c.stale?{status:`stale`,error:``,result:c}:a.includes(c.status)?{status:`unavailable`,error:o,result:c}:c.ok?{status:`ok`,error:``,result:c}:{status:`error`,error:c.status===401?`Authentication required.`:cs(c.data,i),result:c}}function iT(){return{scope:`user_path`,subject:`/`,period:`daily`,period_seconds:86400,amount:``,source:`manual`}}function aT(e){let t={user_path:{label:`User path`,chip:`user path`,fieldLabel:`User Path`,placeholder:`/team/alpha`},label:{label:`Label`,chip:`label`,fieldLabel:`Label`,placeholder:`Mobile-App-iOS`}};return t[e]||t.user_path}function oT(){return[`user_path`,`label`].map(e=>({value:e,label:aT(e).label}))}function sT(e){return String(e&&e.scope||``).trim()||`user_path`}function cT(e){return String(e&&e.subject||``).trim()||String(e&&e.user_path||``)}function lT(e){return aT(sT(e)).chip}function uT(e){return sT(e)===`label`?`budget-label`:`budget-user-path`}function dT(e){return aT(String(e&&e.scope||``)).fieldLabel}function fT(e){return aT(String(e&&e.scope||``)).placeholder}function pT(e){e.subject=String(e&&e.scope||``)===`user_path`?`/`:``}function mT(){return[{value:`hourly`,label:`Hourly`},{value:`daily`,label:`Daily`},{value:`weekly`,label:`Weekly`},{value:`monthly`,label:`Monthly`},{value:`custom`,label:`Custom seconds`}]}function hT(e){switch(String(e||``).trim().toLowerCase()){case`hourly`:return 3600;case`daily`:return 86400;case`weekly`:return 604800;case`monthly`:return 2592e3;default:return 0}}function gT(e){switch(Number(e||0)){case 3600:return`hourly`;case 86400:return`daily`;case 604800:return`weekly`;case 2592e3:return`monthly`;default:return`custom`}}function _T(e){return sT(e)+`:`+cT(e)+`:`+String(e&&e.period_seconds||``)}function vT(e,t){if(!t||!Array.isArray(e))return null;let n=_T(t);return e.find(e=>_T(e)===n)||null}function yT(e){let t=String(e||``).trim();if(!t)return`User path is required.`;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function bT(e){if(yT(e))return``;let t=String(e||``).trim(),n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function xT(e){return`/`+String(e||``).trimStart().replace(/^\/+/,``)}function ST(e){return Array.isArray(e)?e:e&&Array.isArray(e.budgets)?e.budgets:[]}function CT(e){let t=Number(e&&e.period_seconds||0);return[cT(e),lT(e),BT(e),gT(t),t?String(t)+`s`:``,t?String(t)+` seconds`:``].join(` `).toLowerCase()}var wT={user_path:0,label:1};function TT(e,t){let n=Array.isArray(e)?e.slice():[],r=String(t||`subject`);return n.sort((e,t)=>{let n=(wT[sT(e)]||0)-(wT[sT(t)]||0),i=cT(e).localeCompare(cT(t)),a=Number(t&&t.period_seconds||0)-Number(e&&e.period_seconds||0);return r===`period`?a||n||i:n||i||a}),n}function ET(e,t,n){let r=Array.isArray(e)?e:[],i=String(t||``).trim().toLowerCase();return TT(i?r.filter(e=>CT(e).includes(i)):r.slice(),n)}function DT(e){let t=e||{},n=sT(t),r=String(t.subject||``).trim();if(n===`user_path`){let e=yT(r);if(e)return{payload:null,error:e}}else if(!r)return{payload:null,error:`Label is required.`};let i=Number(t.amount);if(!Number.isFinite(i)||i<=0)return{payload:null,error:`Amount must be greater than 0.`};let a=String(t.period||``).trim(),o=hT(a);return a===`custom`&&(o=Number(t.period_seconds)),!Number.isFinite(o)||o<=0?{payload:null,error:`Period seconds must be greater than 0.`}:{payload:{scope:n,subject:n===`user_path`?bT(r):r,period_seconds:Math.trunc(o),amount:i,source:String(t.source||`manual`).trim()||`manual`},error:``}}function OT(e){return{scope:sT(e),subject:cT(e),budget_key:{period_seconds:e.period_seconds},amount:e.amount}}function kT(e){return{scope:sT(e),subject:cT(e),budget_key:{period_seconds:e.period_seconds}}}function AT(e){return{scope:sT(e),subject:cT(e),period_seconds:e.period_seconds}}function jT(e){return nc(e)}function MT(e,t){let n=e||{},r=t||{};return`A budget for "`+((cT(n)||cT(r))+` `+BT({period_seconds:n.period_seconds||r.period_seconds,period_label:r.period_label}))+`" already exists. Saving will override the current `+jT(r.amount)+` limit with `+jT(n.amount)+`.`}function NT(e){let t=Number(e);return!Number.isFinite(t)||t<0?0:t}function PT(e,t){let n=NT(e);return Math.round((t?Math.min(n,1):n)*1e3)/10}function FT(e){return NT(e&&e.usage_ratio)}function IT(e){return PT(FT(e),!0)}function LT(e){return PT(e&&e.period_ratio,!0)}function RT(e){return PT(FT(e),!1).toFixed(1).replace(/\.0$/,``)+`%`}function zT(e){return LT(e).toFixed(1).replace(/\.0$/,``)+`%`}function BT(e){let t=Number(e&&e.period_seconds||0);switch(t){case 3600:return`Hourly`;case 86400:return`Daily`;case 604800:return`Weekly`;case 2592e3:return`Monthly`;default:{let n=String(e&&e.period_label||``).trim();return n?`Custom `+n:`Custom `+String(t||``)+`s`}}}function VT(e){switch(Number(e&&e.period_seconds||0)){case 3600:return`budget-period-label-hourly`;case 86400:return`budget-period-label-daily`;case 604800:return`budget-period-label-weekly`;case 2592e3:return`budget-period-label-monthly`;default:return`budget-period-label-custom`}}function HT(e){return VT(e).replace(`budget-period-label-`,`budget-bar-fill-period-`)}function UT(e){return VT(e).replace(`budget-period-label-`,`budget-bar-track-period-`)}function WT(e){switch(Number(e&&e.period_seconds||0)){case 3600:return Ga;case 86400:return Co;case 604800:return Fa;case 2592e3:return Ia;default:return _o}}function GT(e){let t=Math.max(0,Math.trunc(Number(e||0)));return t+` `+(t===1?`second`:`seconds`)}function KT(e){let t=Number(e&&e.period_seconds||0);switch(t){case 3600:return`1 hour`;case 86400:return`1 day`;case 604800:return`1 week`;case 2592e3:return`1 month`;default:return GT(t)}}function qT(e){return String(e&&e.source||``).trim()||`manual`}function JT(e){let t=qT(e).toLowerCase();return t===`manual`?`Created from the dashboard.`:t===`config`?`Loaded from configuration.`:`Budget source: `+t}function YT(e){let t=Number(e&&e.remaining);return Number.isFinite(t)?t<0?nc(Math.abs(t))+` over`:nc(t)+` remaining`:``}var J=new class{#e=k(j([]));get budgets(){return I(this.#e)}set budgets(e){A(this.#e,e,!0)}#t=k(!0);get budgetsAvailable(){return I(this.#t)}set budgetsAvailable(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get filter(){return I(this.#r)}set filter(e){A(this.#r,e,!0)}#i=k(`subject`);get sortBy(){return I(this.#i)}set sortBy(e){A(this.#i,e,!0)}#a=k(``);get error(){return I(this.#a)}set error(e){A(this.#a,e,!0)}#o=k(!1);get formOpen(){return I(this.#o)}set formOpen(e){A(this.#o,e,!0)}#s=k(!1);get formSubmitting(){return I(this.#s)}set formSubmitting(e){A(this.#s,e,!0)}#c=k(``);get formError(){return I(this.#c)}set formError(e){A(this.#c,e,!0)}#l=k(!1);get editing(){return I(this.#l)}set editing(e){A(this.#l,e,!0)}#u=k(j(iT()));get form(){return I(this.#u)}set form(e){A(this.#u,e,!0)}#d=k(!1);get overrideDialogOpen(){return I(this.#d)}set overrideDialogOpen(e){A(this.#d,e,!0)}#f=k(null);get overridePendingPayload(){return I(this.#f)}set overridePendingPayload(e){A(this.#f,e,!0)}#p=k(null);get overrideExistingBudget(){return I(this.#p)}set overrideExistingBudget(e){A(this.#p,e,!0)}#m=k(``);get resettingKey(){return I(this.#m)}set resettingKey(e){A(this.#m,e,!0)}#h=k(``);get deletingKey(){return I(this.#h)}set deletingKey(e){A(this.#h,e,!0)}#g=k(!1);get resetAllLoading(){return I(this.#g)}set resetAllLoading(e){A(this.#g,e,!0)}#_=null;managementEnabled(){return vs.budgetsVisible()}filteredBudgets(){return ET(this.budgets,this.filter,this.sortBy)}async fetchBudgetsPage(){if(await vs.ensureLoaded(),!this.managementEnabled()){this.budgets=[],this.budgetsAvailable=!1,this.error=``;return}return this.#_||=this.fetchBudgets().finally(()=>{this.#_=null}),this.#_}async fetchBudgets(){this.loading=!0,this.error=``;let e=await nT(`/admin/budgets`,{label:`budgets`,errorFallback:`Unable to load budgets.`,normalize:ST});if(this.loading=!1,e.status!==`stale`){if(e.status===`unavailable`){this.budgetsAvailable=!1,this.budgets=[];return}if(!e.result){this.budgets=[],this.error=e.error;return}if(this.budgetsAvailable=!0,e.status===`error`){this.error=e.error;return}this.budgets=e.items}}openForm(e){if(this.editing=!!e,this.formError=``,e){let t=Number(e.period_seconds||0);this.form={scope:sT(e),subject:cT(e),period:gT(t),period_seconds:t,amount:String(e.amount||``),source:String(e.source||`manual`)}}else this.form=iT();this.formOpen=!0}syncPeriodSeconds(){let e=hT(String(this.form.period||``).trim());e>0&&(this.form.period_seconds=e)}setFormSubject(e){this.form.subject=this.form.scope===`label`?String(e??``):xT(e)}syncScope(){pT(this.form)}closeForm(){this.closeOverrideDialog(),this.formOpen=!1,this.formSubmitting=!1,this.formError=``,this.editing=!1,this.form=iT()}async submitForm(){if(this.formSubmitting)return;let{payload:e,error:t}=DT(this.form);if(!e){this.formError=t;return}if(!this.editing){let t=vT(this.budgets,e);if(t){this.openOverrideDialog(t,e);return}}await this.saveBudgetPayload(e)}async saveBudgetPayload(e){if(this.formSubmitting||!e)return;this.formSubmitting=!0,this.formError=``;let t=await rT(`/admin/budgets`,`PUT`,OT(e),{label:`save budget`,errorFallback:`Unable to save budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.formSubmitting=!1,t.status!==`stale`){if(t.status===`unavailable`){this.budgetsAvailable=!1,this.formError=t.error;return}if(t.status===`error`){this.formError=t.error;return}this.closeForm(),qs.success(`Budget saved.`),this.fetchBudgets()}}openOverrideDialog(e,t){this.overrideExistingBudget=e||null,this.overridePendingPayload=t||null,this.overrideDialogOpen=!0}closeOverrideDialog(){this.overrideDialogOpen=!1,this.overridePendingPayload=null,this.overrideExistingBudget=null}async confirmOverride(){if(!this.overridePendingPayload){this.closeOverrideDialog();return}let e=this.overridePendingPayload;this.closeOverrideDialog(),await this.saveBudgetPayload(e)}async resetBudget(e){if(!e)return;let t=_T(e);if(this.resettingKey===t)return;let n=cT(e)+` `+BT(e);if(!confirm(`Reset budget "`+n+`"?`))return;this.resettingKey=t;let r=await rT(`/admin/budgets/reset-one`,`POST`,AT(e),{label:`reset budget`,errorFallback:`Unable to reset budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.resettingKey=``,r.status!==`stale`){if(r.status===`unavailable`){this.budgetsAvailable=!1,qs.error(r.error);return}if(r.status===`error`){qs.error(r.error);return}qs.success(`Budget reset.`),this.fetchBudgets()}}async deleteBudget(e){if(!e)return;let t=_T(e);if(this.deletingKey===t)return;let n=cT(e)+` `+BT(e);if(!confirm(`Delete budget "`+n+`"? This cannot be undone.`))return;this.deletingKey=t;let r=await rT(`/admin/budgets`,`DELETE`,kT(e),{label:`delete budget`,errorFallback:`Unable to delete budget.`,unavailableMessage:`Budget management is unavailable.`});if(this.deletingKey=``,r.status!==`stale`){if(r.status===`unavailable`){this.budgetsAvailable=!1,qs.error(r.error);return}if(r.status===`error`){qs.error(r.error);return}this.budgets=ST(r.result.data),qs.success(`Budget deleted.`)}}openResetDialog(){Ms.open({title:`Reset Budgets`,titleId:`budgetResetDialogTitle`,inputId:`budget-reset-confirmation`,requiredText:`reset`,confirmLabel:`Reset All Budgets`,icon:fo,dialogClass:`budget-reset-dialog`,onConfirm:()=>this.resetAllBudgets()})}async resetAllBudgets(){if(this.resetAllLoading)return;this.resetAllLoading=!0;let e=await rT(`/admin/budgets/reset`,`POST`,{confirmation:`reset`},{label:`reset budgets`,errorFallback:`Unable to reset budgets.`,unavailableStatuses:[]});if(this.resetAllLoading=!1,e.status!==`stale`){if(e.status!==`ok`){Ms.error=e.error;return}Ms.close(),qs.success(`Budgets reset.`),Wo.page===`budgets`&&this.fetchBudgets()}}},XT=R(` Edit`,1),ZT=R(` `,1),QT=R(`
        Usage
        Period
        `),$T=R(`
        `);function eE(e,t){E(t,!0);let n=ya(t,`budgets`,19,()=>[]);function r(e){if(!e)return``;let t=ss.formatTimestamp(e);return!t||t===`-`?``:t+` `+ss.effectiveTimeZoneLabel()}var i=$T();H(i,21,n,e=>_T(e),(e,t)=>{var n=QT(),i=M(n),a=M(i),o=M(a),s=M(o),c=e=>{G(e,{get icon(){return wo},class:`budget-scope-icon`})},l=O(()=>sT(I(t))===`label`);V(s,e=>{I(l)&&e(c)});var u=P(s);T(o);var d=P(o,2),f=M(d),p=M(f);{let e=O(()=>WT(I(t)));G(p,{get icon(){return I(e)},class:`budget-period-icon`})}var m=P(p,2),h=M(m,!0);T(m),T(f),T(d);var g=P(d,2),_=M(g),v=M(_),y=M(v,!0);T(v),T(_);var b=P(_,2),x=M(b);tT(x,{label:`Edit budget`,class:`budget-action-btn`,onclick:()=>J.openForm(I(t)),children:(e,t)=>{var n=XT();G(N(n),{get icon(){return oo},class:`budget-action-icon`}),Ue(2),z(e,n)},$$slots:{default:!0}});var S=P(x,2);{let e=O(()=>J.resettingKey===_T(I(t))?`Resetting budget`:`Reset budget`),n=O(()=>J.resettingKey===_T(I(t)));tT(S,{get label(){return I(e)},class:`budget-action-btn budget-action-btn-warning`,onclick:()=>J.resetBudget(I(t)),get disabled(){return I(n)},children:(e,n)=>{var r=ZT(),i=N(r);G(i,{get icon(){return fo},class:`budget-action-icon`});var a=P(i,2),o=M(a,!0);T(a),F(e=>B(o,e),[()=>J.resettingKey===_T(I(t))?`Resetting`:`Reset`]),z(e,r)},$$slots:{default:!0}})}var C=P(S,2);{let e=O(()=>J.deletingKey===_T(I(t))?`Deleting budget`:`Delete budget`),n=O(()=>J.deletingKey===_T(I(t)));tT(C,{get label(){return I(e)},class:`table-action-btn-danger budget-action-btn`,onclick:()=>J.deleteBudget(I(t)),get disabled(){return I(n)},children:(e,n)=>{var r=ZT(),i=N(r);G(i,{get icon(){return Eo},class:`budget-action-icon`});var a=P(i,2),o=M(a,!0);T(a),F(e=>B(o,e),[()=>J.deletingKey===_T(I(t))?`Deleting`:`Delete`]),z(e,r)},$$slots:{default:!0}})}T(b),T(g),T(a);var w=P(a,2),ee=M(w),te=M(ee),ne=P(M(te),2),re=M(ne,!0);T(ne),T(te);var ie=P(te,2),ae=M(ie);let oe;var se=P(ae,2),ce=M(se),le=M(ce,!0);T(ce);var ue=P(ce,2),de=M(ue,!0);T(ue),T(se);var fe=P(se,2),pe=M(fe),me=M(pe,!0);T(pe);var he=P(pe,2),ge=M(he,!0);T(he),T(fe),T(ie),T(ee);var _e=P(ee,2),ve=M(_e),ye=P(M(ve),2),be=M(ye,!0);T(ye),T(ve);var xe=P(ve,2),Se=M(xe),Ce=P(Se,2),we=M(Ce),Te=M(we,!0);T(we);var Ee=P(we,2),De=M(Ee,!0);T(Ee);var Oe=P(Ee,2),ke=M(Oe,!0);T(Oe),T(Ce);var Ae=P(Ce,2),je=M(Ae),Me=M(je,!0);T(je);var Ne=P(je,2),Pe=M(Ne,!0);T(Ne);var Fe=P(Ne,2),Ie=M(Fe,!0);T(Fe),T(Ae),T(xe),T(_e),T(w),T(i),T(n),F((e,t,n,r,i,a,s,c,l,d,p,m,g,_,b,x,S,C,w,ee,te,ne,se,ce,ue,fe,pe,he,_e,ve)=>{U(o,1,`budget-scope-value ${e??``}`,`svelte-1jm56wo`),Hi(o,t),W(o,`title`,n),B(u,` ${r??``}`),U(f,1,`budget-period-label ${i??``}`,`svelte-1jm56wo`),B(h,a),W(v,`title`,s),B(y,c),B(re,l),W(ie,`aria-valuenow`,d),W(ie,`aria-label`,p),Hi(ie,`--budget-progress: ${m??``}%`),oe=U(ae,1,`budget-bar-fill budget-bar-fill-usage`,null,oe,g),B(le,_),B(de,b),B(me,x),B(ge,S),B(be,C),U(xe,1,`budget-bar-track ${w??``}`,`svelte-1jm56wo`),W(xe,`aria-valuenow`,ee),Hi(xe,`--budget-progress: ${te??``}%`),U(Se,1,`budget-bar-fill budget-bar-fill-period ${ne??``}`,`svelte-1jm56wo`),W(we,`title`,se),B(Te,ce),B(De,ue),W(Oe,`title`,fe),B(ke,pe),B(Me,he),B(Pe,_e),B(Ie,ve)},[()=>uT(I(t)),()=>sT(I(t))===`label`?`--label-color: `+Ly(cT(I(t))):void 0,()=>lT(I(t))+`: `+cT(I(t)),()=>cT(I(t)),()=>VT(I(t)),()=>BT(I(t)),()=>JT(I(t)),()=>qT(I(t)),()=>RT(I(t)),()=>IT(I(t)),()=>`Budget usage: `+nc(I(t).spent)+` of `+nc(I(t).amount)+`, `+YT(I(t)),()=>IT(I(t)),()=>({"budget-bar-fill-danger":FT(I(t))>=1}),()=>nc(I(t).spent)+` of `+nc(I(t).amount),()=>YT(I(t)),()=>nc(I(t).spent)+` of `+nc(I(t).amount),()=>YT(I(t)),()=>zT(I(t)),()=>UT(I(t)),()=>LT(I(t)),()=>LT(I(t)),()=>HT(I(t)),()=>r(I(t).period_start),()=>ss.formatTimestamp(I(t).period_start),()=>KT(I(t)),()=>r(I(t).period_end),()=>ss.formatTimestamp(I(t).period_end),()=>ss.formatTimestamp(I(t).period_start),()=>KT(I(t)),()=>ss.formatTimestamp(I(t).period_end)]),z(e,n)}),T(i),z(e,i),D()}var tE=R(`

        `,1),nE=R(``),rE=R(``),iE=R(`
        `);function aE(e,t){E(t,!0);let n=ya(t,`open`,3,!1),r=ya(t,`title`,3,``),i=ya(t,`ariaLabel`,3,``),a=ya(t,`error`,3,``),o=ya(t,`submitting`,3,!1),s=ya(t,`submitDisabled`,3,!1),c=ya(t,`submitLabel`,3,`Save`),l=ya(t,`submittingLabel`,3,`Saving...`),u=ya(t,`submitIcon`,3,po),d=ya(t,`cancel`,3,!0),p=ya(t,`dialogClass`,3,``),m=ya(t,`novalidate`,3,!1),h=ya(t,`canClose`,3,()=>!0);function g(){K.dialogOpen||h()()&&t.onclose?.()}Ds(e,{get open(){return n()},variant:`editor`,onclose:g,children:(e,n)=>{var h=iE(),g=M(h),_=M(g),v=M(_),y=M(v),b=e=>{var n=Qr();gi(N(n),()=>t.header),z(e,n)},x=e=>{var n=tE(),i=N(n),a=M(i,!0);T(i);var o=P(i,2),s=e=>{var n=Qr();gi(N(n),()=>t.headerHint),z(e,n)};V(o,e=>{t.headerHint&&e(s)}),F(()=>B(a,r())),z(e,n)};V(y,e=>{t.header?e(b):e(x,-1)}),T(v);var S=P(v,2);{let e=O(()=>`Close `+(i()||r()).toLowerCase());Ts(S,{get label(){return I(e)},onclick:()=>t.onclose?.()})}T(_);var C=P(_,2);gi(C,()=>t.children??f);var w=P(C,2),ee=e=>{var t=nE(),n=M(t,!0);T(t),F(()=>B(n,a())),z(e,t)};V(w,e=>{a()&&e(ee)});var te=P(w,2),ne=M(te),re=e=>{var n=rE();L(`click`,n,()=>t.onclose?.()),z(e,n)};V(ne,e=>{d()&&e(re)});var ie=P(ne,2),ae=e=>{var n=Qr();gi(N(n),()=>t.extraActions),z(e,n)};V(ie,e=>{t.extraActions&&e(ae)});var oe=P(ie,2),se=M(oe);G(se,{get icon(){return u()},class:`form-action-icon`});var ce=P(se,2),le=M(ce,!0);T(ce),T(oe),T(te),T(g),T(h),F(()=>{U(h,1,Fi([`model-editor`,p()])),W(h,`aria-label`,i()||r()),g.noValidate=m(),oe.disabled=o()||s(),B(le,o()?l():c())}),Vr(`submit`,g,e=>{e.preventDefault(),t.onsubmit?.()}),z(e,h)},$$slots:{default:!0}}),D()}Hr([`click`]);var oE=R(`
        `);function sE(e,t){let n=ya(t,`label`,3,``);var r=oE(),i=M(r),a=M(i,!0);T(i),gi(P(i,2),()=>t.children??f),T(r),F(()=>{W(i,`for`,t.id),B(a,n())}),z(e,r)}var cE=R(``),lE=R(``),uE=R(``),dE=R(``),fE=R(``),pE=R(``),mE=R(`

        Editing a budget updates its limit only. Use Reset to start a new + budget period.

        `),hE=R(`
        `,1),gE=R(``),_E=R(` `,1);function vE(e,t){E(t,!0);function n(e){J.setFormSubject(e.target.value),e.target.value=J.form.subject}var r=_E(),i=N(r);{let e=O(()=>J.editing?`Edit Budget`:`Create Budget`);aE(i,{get open(){return J.formOpen},get title(){return I(e)},ariaLabel:`Budget editor`,get error(){return J.formError},get submitting(){return J.formSubmitting},submitLabel:`Save Budget`,dialogClass:`budget-editor`,canClose:()=>!J.overrideDialogOpen,onclose:()=>J.closeForm(),onsubmit:()=>J.submitForm(),children:(e,t)=>{var r=hE(),i=N(r),a=M(i);sE(a,{id:`budget-scope`,label:`Scope`,children:(e,t)=>{var n=lE();H(n,21,oT,e=>e.value,(e,t)=>{var n=cE(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n),F(()=>n.disabled=J.editing),L(`change`,n,()=>J.syncScope()),Gi(n,()=>J.form.scope,e=>J.form.scope=e),z(e,n)},$$slots:{default:!0}});var o=P(a,2);{let e=O(()=>dT(J.form));sE(o,{id:`budget-subject`,get label(){return I(e)},children:(e,t)=>{var r=uE();na(r),F(e=>{W(r,`placeholder`,e),ra(r,J.form.subject),r.disabled=J.editing,W(r,`data-modal-autofocus`,!J.editing||void 0)},[()=>fT(J.form)]),L(`input`,r,n),z(e,r)},$$slots:{default:!0}})}var s=P(o,2);sE(s,{id:`budget-period`,label:`Period`,children:(e,t)=>{var n=dE();H(n,21,mT,e=>e.value,(e,t)=>{var n=cE(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n),F(()=>n.disabled=J.editing),L(`change`,n,()=>J.syncPeriodSeconds()),Gi(n,()=>J.form.period,e=>J.form.period=e),z(e,n)},$$slots:{default:!0}});var c=P(s,2),l=e=>{sE(e,{id:`budget-period-seconds`,label:`Period Seconds`,children:(e,t)=>{var n=fE();na(n),F(()=>n.disabled=J.editing),da(n,()=>J.form.period_seconds,e=>J.form.period_seconds=e),z(e,n)},$$slots:{default:!0}})};V(c,e=>{J.form.period===`custom`&&e(l)}),sE(P(c,2),{id:`budget-amount`,label:`Amount`,children:(e,t)=>{var n=pE();na(n),F(()=>W(n,`data-modal-autofocus`,J.editing||void 0)),da(n,()=>J.form.amount,e=>J.form.amount=e),z(e,n)},$$slots:{default:!0}}),T(i);var u=P(i,2),d=e=>{z(e,mE())};V(u,e=>{J.editing&&e(d)}),z(e,r)},$$slots:{default:!0}})}Ds(P(i,2),{get open(){return J.overrideDialogOpen},variant:`auth`,onclose:()=>J.closeOverrideDialog(),children:(e,t)=>{var n=gE(),r=M(n);Ts(P(M(r),2),{label:`Close budget override dialog`,onclick:()=>J.closeOverrideDialog(),class:`auth-dialog-close`,iconClass:``}),T(r);var i=P(r,2),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s),l=P(c,2),u=M(l);G(u,{get icon(){return po},class:`form-action-icon`});var d=P(u,2),f=M(d,!0);T(d),T(l),T(s),T(i),T(n),F(e=>{B(o,e),l.disabled=J.formSubmitting,B(f,J.formSubmitting?`Saving...`:`Override Budget`)},[()=>MT(J.overridePendingPayload,J.overrideExistingBudget)]),Vr(`submit`,i,e=>{e.preventDefault(),J.confirmOverride()}),L(`click`,c,()=>J.closeOverrideDialog()),z(e,n)},$$slots:{default:!0}}),z(e,r),D()}Hr([`change`,`input`,`click`]);var yE=R(`

        Budgets

        `),bE=R(``),xE=R(`
        Budget management is unavailable.
        `),SE=R(``),CE=R(`
        `),wE=R(`

        No budgets configured yet.

        `),TE=R(`

        No budgets match your filter.

        `),EE=R(`
        `);function DE(e,t){E(t,!0),An(()=>{K.refreshTick,Wo.page===`budgets`&&J.fetchBudgetsPage()});let n=O(()=>J.filteredBudgets());var r=EE(),i=M(r),a=M(i);BS(M(a),{copyId:`budgets-help-copy`,label:`budgets help`,title:e=>{z(e,yE())},help:e=>{Ue(),z(e,Zr(`Budgets are evaluated from tracked usage cost records for each user + path subtree. Enforcement runs only when Budget is enabled for the + active workflow.`))},$$slots:{title:!0,help:!0}}),T(a);var o=P(a,2),s=M(o),c=e=>{var t=bE();G(M(t),{get icon(){return co},class:`form-action-icon`}),Ue(2),T(t),F(()=>t.disabled=J.formSubmitting),L(`click`,t,()=>J.openForm()),z(e,t)},l=O(()=>J.managementEnabled()&&J.budgetsAvailable&&!K.authError);V(s,e=>{I(l)&&e(c)}),T(o),T(i);var u=P(i,2);Ac(u,{});var d=P(u,2),f=e=>{z(e,xE())},p=O(()=>(!J.managementEnabled()||!J.budgetsAvailable)&&!K.authError);V(d,e=>{I(p)&&e(f)});var m=P(d,2),h=e=>{var t=SE(),n=M(t,!0);T(t),F(()=>B(n,J.error)),z(e,t)};V(m,e=>{J.error&&!K.authError&&e(h)});var g=P(m,2),_=e=>{$w(e,{label:`Loading budgets...`})};V(g,e=>{J.loading&&!K.authError&&e(_)});var v=P(g,2),y=e=>{var t=CE(),n=M(t);iw(M(n),{id:`budget-filter`,placeholder:`Filter by user path, label, or period...`,label:`Filter budgets by user path or period`,get value(){return J.filter},set value(e){J.filter=e}}),T(n);var r=P(n,2),i=P(M(r),2),a=M(i);a.value=a.__value=`subject`;var o=P(a);o.value=o.__value=`period`,T(i),T(r),T(t),Gi(i,()=>J.sortBy,e=>J.sortBy=e),z(e,t)};V(v,e=>{(J.budgets.length>0||J.filter)&&J.budgetsAvailable&&!K.authError&&!J.formOpen&&e(y)});var b=P(v,2);vE(b,{});var x=P(b,2),S=e=>{eE(e,{get budgets(){return I(n)}})};V(x,e=>{I(n).length>0&&J.budgetsAvailable&&!K.authError&&e(S)});var C=P(x,2),w=e=>{z(e,wE())},ee=O(()=>J.budgets.length===0&&!J.filter&&!J.loading&&!K.authError&&!J.error&&J.budgetsAvailable&&J.managementEnabled());V(C,e=>{I(ee)&&e(w)});var te=P(C,2),ne=e=>{z(e,TE())},re=O(()=>J.budgets.length>0&&I(n).length===0&&J.filter&&!J.loading&&!K.authError&&!J.error&&J.budgetsAvailable&&J.managementEnabled());V(te,e=>{I(re)&&e(ne)}),T(r),z(e,r),D()}Hr([`click`]);function OE(){return{scope:`user_path`,subject:`/`,period:`minute`,period_seconds:60,max_requests:``,max_tokens:``,source:`manual`}}function kE(e){let t={user_path:{label:`User path`,chip:`user path`,fieldLabel:`User Path`,placeholder:`/team/alpha`},provider:{label:`Provider`,chip:`provider`,fieldLabel:`Provider Name`,placeholder:`openai`},model:{label:`Model`,chip:`model`,fieldLabel:`Model`,placeholder:`openai/gpt-4o`}};return t[e]||t.user_path}function AE(){return[`user_path`,`provider`,`model`].map(e=>({value:e,label:kE(e).label}))}function jE(e){return String(e&&e.scope||``).trim()||`user_path`}function ME(e){return String(e&&e.subject||``).trim()||String(e&&e.user_path||``)}function NE(e){return kE(jE(e)).chip}function PE(e){return kE(String(e&&e.scope||``)).fieldLabel}function FE(e){return kE(String(e&&e.scope||``)).placeholder}function IE(e){e.subject=String(e&&e.scope||``)===`user_path`?`/`:``}function LE(){return[{value:`minute`,label:`Per minute`},{value:`hour`,label:`Per hour`},{value:`day`,label:`Per day`},{value:`concurrent`,label:`Concurrent (in-flight)`},{value:`custom`,label:`Custom seconds`}]}function RE(e){switch(String(e||``).trim().toLowerCase()){case`minute`:return 60;case`hour`:return 3600;case`day`:return 86400;case`concurrent`:return 0;default:return-1}}function zE(e){switch(Number(e||0)){case 60:return`minute`;case 3600:return`hour`;case 86400:return`day`;case 0:return`concurrent`;default:return`custom`}}function BE(e){let t=String(e&&e.period||``).trim(),n=RE(t);n>=0&&(e.period_seconds=n),t===`concurrent`&&(e.max_tokens=``)}function VE(e){return jE(e)+`:`+ME(e)+`:`+String(e&&e.period_seconds||`0`)}function HE(e){return Number(e&&e.period_seconds||0)===0}function UE(e){return String(e&&e.period_label||``).trim()||zE(Number(e&&e.period_seconds||0))}function WE(e){return String(e&&e.source||``)===`config`?`config`:`manual`}function GE(e){return String(e&&e.source||``)===`config`}function KE(e){let t=Number(e);return Number.isFinite(t)?t.toLocaleString():`0`}function qE(e,t){let n=Number(e),r=Number(t);if(!Number.isFinite(n)||!Number.isFinite(r)||r<=0)return 0;let i=Math.round(n/r*100);return Math.min(Math.max(i,0),100)}function JE(e,t){let n=String(t||``).trim().toLowerCase(),r=Array.isArray(e)?e.slice():[],i={user_path:0,provider:1,model:2};return r.sort((e,t)=>{let n=(i[jE(e)]||0)-(i[jE(t)]||0);if(n!==0)return n;let r=ME(e).localeCompare(ME(t));return r===0?Number(e.period_seconds||0)-Number(t.period_seconds||0):r}),n?r.filter(e=>{let t=ME(e).toLowerCase(),r=NE(e).toLowerCase(),i=UE(e).toLowerCase();return t.includes(n)||r.includes(n)||i.includes(n)}):r}function YE(e){return!e||!Array.isArray(e.rate_limits)?[]:e.rate_limits}function XE(e,t,n){let r=String(t||``).trim();return r=e===`provider`||e===`model`?r.toLowerCase():`/`+r.split(`/`).map(e=>e.trim()).filter(Boolean).join(`/`),e+`:`+r+`:`+Number(n||0)}function ZE(e,t){return e?XE(t.scope,t.subject,t.limit_key.period_seconds)!==XE(e.scope,e.subject,e.period_seconds):!1}function QE(e){let t=e||{},n=String(t.scope||`user_path`),r=String(t.subject||``).trim();if(n!==`user_path`&&!r)return{error:PE(t)+` is required.`};let i=String(t.period||``)===`concurrent`,a=t.period_seconds;if(a===``||a==null)return{error:`Period seconds is required.`};let o=Number(a);if(!Number.isInteger(o)||o<0||o===0&&!i)return{error:`Period seconds must be a positive integer (0 only for the concurrent period).`};let s=String(t.max_requests===void 0||t.max_requests===null?``:t.max_requests).trim(),c=String(t.max_tokens===void 0||t.max_tokens===null?``:t.max_tokens).trim();if(!s&&!c)return{error:`Set max requests, max tokens, or both.`};if(i&&c)return{error:`Token limits are not valid for the concurrent period.`};let l={scope:n,subject:r||`/`,limit_key:{period_seconds:o}};if(s){let e=Number(s);if(!Number.isInteger(e)||e<=0)return{error:`Max requests must be a positive integer.`};l.max_requests=e}if(c){let e=Number(c);if(!Number.isInteger(e)||e<=0)return{error:`Max tokens must be a positive integer.`};l.max_tokens=e}return{payload:l}}function $E(e,t,n){if(jE(e)!==`model`)return!1;let r=String(ME(e)).toLowerCase(),i=String(n||``).trim().toLowerCase();if(!i)return!1;if(r===i)return!0;let a=String(t||``).trim().toLowerCase();return a?r===a+`/`+i||i.startsWith(a+`/`)&&r===i.slice(a.length+1):!1}function eD(e,t){return jE(e)===`provider`&&String(ME(e)).toLowerCase()===String(t||``).trim().toLowerCase()}function tD(e){let t=e||{},n=String(t.model||``),r=String(t.provider||``);return!r||n.toLowerCase().startsWith(r+`/`)?n:r+`/`+n}function nD(e,t){let n=e||{},r=Array.isArray(t)?t:[],i=[];return n.kind===`model`&&i.push({key:`model`,title:`Model limits`,scope:`model`,subject:tD(n),hint:``,items:r.filter(e=>$E(e,n.provider,n.model))}),i.push({key:`provider`,title:`Provider limits (`+n.provider+`)`,scope:`provider`,subject:n.provider,hint:n.kind===`model`?`Shared by every model routed to this provider.`:``,items:r.filter(e=>eD(e,n.provider))}),i.push({key:`global`,title:`Global limits`,scope:`user_path`,subject:`/`,hint:`Root user-path rules throttle all traffic. Narrower user-path rules also apply, per consumer.`,items:r.filter(e=>jE(e)===`user_path`&&ME(e)===`/`)}),i}function rD(e){return HE(e)?qE(e.in_flight,e.max_requests):Math.max(qE(e.requests_used,e.max_requests),qE(e.tokens_used,e.max_tokens))}function iD(e){return`--rate-limit-pressure: `+rD(e)+`%`}function aD(e){let t=rD(e);return t>=100?`rate-limit-pressure-row rate-limit-pressure-full`:t>=75?`rate-limit-pressure-row rate-limit-pressure-high`:`rate-limit-pressure-row`}function oD(e){return(Array.isArray(e)?e:[]).some(e=>jE(e)===`user_path`&&ME(e)===`/`)}function sD(e,t,n){let r=Array.isArray(e)?e:[];return r.some(e=>$E(e,t,n))?`table-action-btn-active`:r.some(e=>eD(e,t))||oD(r)?`rate-limit-gauge-inherited`:``}function cD(e,t){let n=Array.isArray(e)?e:[];return n.some(e=>eD(e,t))?`table-action-btn-active`:oD(n)?`rate-limit-gauge-inherited`:``}function lD(e,t){let n=`Rate limits for `+e;return t===`table-action-btn-active`?n+` (direct limits configured)`:t?n+` (inherited limits apply)`:n}function uD(e){if(HE(e))return KE(e.in_flight)+` of `+KE(e.max_requests)+` in flight`;let t=[];return e.max_requests!==null&&e.max_requests!==void 0&&t.push(KE(e.requests_used)+`/`+KE(e.max_requests)+` req`),e.max_tokens!==null&&e.max_tokens!==void 0&&t.push(KE(e.tokens_used)+`/`+KE(e.max_tokens)+` tok`),t.join(` · `)}var Y=new class{#e=k(j([]));get rateLimits(){return I(this.#e)}set rateLimits(e){A(this.#e,e,!0)}#t=k(!0);get rateLimitsAvailable(){return I(this.#t)}set rateLimitsAvailable(e){A(this.#t,e,!0)}#n=k(!1);get rateLimitsLoading(){return I(this.#n)}set rateLimitsLoading(e){A(this.#n,e,!0)}rateLimitFetchPromise=null;#r=k(``);get rateLimitFilter(){return I(this.#r)}set rateLimitFilter(e){A(this.#r,e,!0)}#i=k(``);get rateLimitError(){return I(this.#i)}set rateLimitError(e){A(this.#i,e,!0)}#a=k(!1);get rateLimitFormOpen(){return I(this.#a)}set rateLimitFormOpen(e){A(this.#a,e,!0)}#o=k(!1);get rateLimitFormSubmitting(){return I(this.#o)}set rateLimitFormSubmitting(e){A(this.#o,e,!0)}#s=k(``);get rateLimitFormError(){return I(this.#s)}set rateLimitFormError(e){A(this.#s,e,!0)}#c=k(!1);get rateLimitEditing(){return I(this.#c)}set rateLimitEditing(e){A(this.#c,e,!0)}rateLimitEditingOriginal=null;rateLimitFormReturnToInspector=!1;#l=k(``);get rateLimitResettingKey(){return I(this.#l)}set rateLimitResettingKey(e){A(this.#l,e,!0)}#u=k(``);get rateLimitDeletingKey(){return I(this.#u)}set rateLimitDeletingKey(e){A(this.#u,e,!0)}#d=k(!1);get rateLimitInspectorOpen(){return I(this.#d)}set rateLimitInspectorOpen(e){A(this.#d,e,!0)}#f=k(j({kind:``,provider:``,model:``,title:``}));get rateLimitInspector(){return I(this.#f)}set rateLimitInspector(e){A(this.#f,e,!0)}#p=k(j(OE()));get rateLimitForm(){return I(this.#p)}set rateLimitForm(e){A(this.#p,e,!0)}rateLimitsEnabled(){return vs.rateLimitsVisible()}defaultRateLimitForm(){return OE()}rateLimitScopeMeta(e){return kE(e)}rateLimitScopeOptions(){return AE()}rateLimitScope(e){return jE(e)}rateLimitSubject(e){return ME(e)}rateLimitScopeLabel(e){return NE(e)}rateLimitSubjectFieldLabel(){return PE(this.rateLimitForm)}rateLimitSubjectPlaceholder(){return FE(this.rateLimitForm)}syncRateLimitScope(){IE(this.rateLimitForm)}rateLimitPeriodOptions(){return LE()}rateLimitPeriodSeconds(e){return RE(e)}rateLimitPeriodFromSeconds(e){return zE(e)}syncRateLimitPeriodSeconds(){BE(this.rateLimitForm)}rateLimitKey(e){return VE(e)}rateLimitIsConcurrent(e){return HE(e)}rateLimitPeriodLabel(e){return UE(e)}rateLimitSourceLabel(e){return WE(e)}rateLimitIsReadOnly(e){return GE(e)}formatRateLimitNumber(e){return KE(e)}rateLimitUsagePercent(e,t){return qE(e,t)}filteredRateLimits(){return JE(this.rateLimits,this.rateLimitFilter)}normalizeRateLimitListPayload(e){return YE(e)}async fetchRateLimitsPage(){if(await vs.ensureLoaded(),!this.rateLimitsEnabled()){this.rateLimits=[],this.rateLimitsAvailable=!1,this.rateLimitError=``;return}return this.rateLimitFetchPromise||=this.fetchRateLimits().finally(()=>{this.rateLimitFetchPromise=null}),this.rateLimitFetchPromise}async fetchRateLimits(){this.rateLimitsLoading=!0,this.rateLimitError=``;let e=await nT(`/admin/rate-limits`,{label:`rate limits`,errorFallback:`Unable to load rate limits.`,normalize:YE});if(this.rateLimitsLoading=!1,e.status!==`stale`){if(e.status===`unavailable`){this.rateLimitsAvailable=!1,this.rateLimits=[];return}if(!e.result){this.rateLimits=[],this.rateLimitError=e.error;return}if(this.rateLimitsAvailable=!0,e.status===`error`){this.rateLimitError=e.error;return}this.rateLimits=e.items}}openRateLimitForm(e){if(this.rateLimitEditing=!!e,this.rateLimitFormError=``,e){let t=Number(e.period_seconds||0);this.rateLimitEditingOriginal={scope:jE(e),subject:ME(e),period_seconds:t},this.rateLimitForm={scope:jE(e),subject:ME(e),period:zE(t),period_seconds:t,max_requests:e.max_requests===null||e.max_requests===void 0?``:String(e.max_requests),max_tokens:e.max_tokens===null||e.max_tokens===void 0?``:String(e.max_tokens),source:String(e.source||`manual`)}}else this.rateLimitEditingOriginal=null,this.rateLimitForm=OE();this.rateLimitFormOpen=!0}closeRateLimitForm(){this.rateLimitFormOpen=!1,this.rateLimitFormSubmitting=!1,this.rateLimitFormError=``,this.rateLimitEditing=!1,this.rateLimitEditingOriginal=null,this.rateLimitForm=OE(),this.rateLimitFormReturnToInspector&&(this.rateLimitFormReturnToInspector=!1,this.rateLimitInspectorOpen=!0)}rateLimitNormalizedIdentity(e,t,n){return XE(e,t,n)}rateLimitIdentityMoved(e){return ZE(this.rateLimitEditingOriginal,e)}setRateLimitFormSubject(e){this.rateLimitForm.subject=String(e||``)}rateLimitFormPayload(){return QE(this.rateLimitForm)}async submitRateLimitForm(){if(this.rateLimitFormSubmitting)return;let{payload:e,error:t}=this.rateLimitFormPayload();if(t){this.rateLimitFormError=t;return}let n=this.rateLimitIdentityMoved(e),r=this.rateLimitEditingOriginal;this.rateLimitFormSubmitting=!0,this.rateLimitFormError=``;try{let t=await rT(`/admin/rate-limits`,`PUT`,e,{label:`save rate limit`,errorFallback:`Unable to save rate limit.`,unavailableStatuses:[]});if(t.status===`stale`)return;if(t.status!==`ok`){this.rateLimitFormError=t.error;return}if(this.rateLimits=YE(t.result.data),n&&!await this.deleteMovedRateLimitOriginal(r))return;this.closeRateLimitForm(),qs.success(n?`Rate limit moved; live counters restarted.`:`Rate limit saved.`)}finally{this.rateLimitFormSubmitting=!1}}async deleteMovedRateLimitOriginal(e){let t=await rT(`/admin/rate-limits`,`DELETE`,{scope:e.scope,subject:e.subject,limit_key:{period_seconds:Number(e.period_seconds||0)}},{label:`remove the moved rate limit`,errorFallback:`The new rule was saved, but the previous one could not be removed. Delete it manually.`,unavailableStatuses:[]});return t.status===`stale`?!1:t.status===`ok`?(this.rateLimits=YE(t.result.data),!0):(this.rateLimitFormError=t.error,!1)}async deleteRateLimit(e){let t=VE(e);if(this.rateLimitDeletingKey===t)return;this.rateLimitDeletingKey=t;let n=await rT(`/admin/rate-limits`,`DELETE`,{scope:jE(e),subject:ME(e),limit_key:{period_seconds:Number(e.period_seconds||0)}},{label:`delete rate limit`,errorFallback:`Unable to delete rate limit.`,unavailableStatuses:[]});if(this.rateLimitDeletingKey=``,n.status!==`stale`){if(n.status!==`ok`){qs.error(n.error);return}this.rateLimits=YE(n.result.data),qs.success(`Rate limit deleted.`)}}async resetRateLimit(e){let t=VE(e);if(this.rateLimitResettingKey===t)return;this.rateLimitResettingKey=t;let n=await rT(`/admin/rate-limits/reset-one`,`POST`,{scope:jE(e),subject:ME(e),period_seconds:Number(e.period_seconds||0)},{label:`reset rate limit`,errorFallback:`Unable to reset rate limit.`,unavailableStatuses:[]});if(this.rateLimitResettingKey=``,n.status!==`stale`){if(n.status!==`ok`){qs.error(n.error);return}this.rateLimits=YE(n.result.data),qs.success(`Rate limit counters reset.`)}}rateLimitInspectorModelID(e){return String(e&&e.model&&e.model.id||``).trim()}openRateLimitInspectorForModel(e){let t=this.rateLimitInspectorModelID(e),n=String(e&&e.provider_name||``).trim().toLowerCase();this.rateLimitInspector={kind:`model`,provider:n,model:t,title:String(e&&e.display_name||t)},this.showRateLimitInspector()}openRateLimitInspectorForProvider(e){let t=String(e&&e.provider_name||``).trim().toLowerCase();this.rateLimitInspector={kind:`provider`,provider:t,model:``,title:String(e&&e.display_name||t)},this.showRateLimitInspector()}showRateLimitInspector(){this.rateLimitInspectorOpen=!0,this.fetchRateLimitsPage()}closeRateLimitInspector(){this.rateLimitInspectorOpen=!1}rateLimitRuleMatchesModel(e,t,n){return $E(e,t,n)}rateLimitRuleMatchesProvider(e,t){return eD(e,t)}rateLimitInspectorQualifiedModel(){return tD(this.rateLimitInspector)}rateLimitInspectorSections(){return nD(this.rateLimitInspector,this.rateLimits)}rateLimitPressurePercent(e){return rD(e)}rateLimitPressureStyle(e){return iD(e)}rateLimitPressureClass(e){return aD(e)}rateLimitGaugeCache={rules:null,states:{}};rateLimitGaugeMemo(e,t){this.rateLimitGaugeCache.rules!==this.rateLimits&&(this.rateLimitGaugeCache={rules:this.rateLimits,states:{}});let n=this.rateLimitGaugeCache.states;return e in n||(n[e]=t()),n[e]}rateLimitGaugeClassForModel(e){let t=this.rateLimitInspectorModelID(e),n=String(e&&e.provider_name||``).trim().toLowerCase(),r=this.rateLimits;return this.rateLimitGaugeMemo(`model:`+n+`/`+t,()=>sD(r,n,t))}rateLimitGaugeClassForProvider(e){let t=String(e&&e.provider_name||``).trim().toLowerCase(),n=this.rateLimits;return this.rateLimitGaugeMemo(`provider:`+t,()=>cD(n,t))}hasGlobalRateLimits(){let e=this.rateLimits;return this.rateLimitGaugeMemo(`global`,()=>oD(e))}rateLimitGaugeTitle(e,t){return lD(e,t)}rateLimitInspectorSummary(e){return uD(e)}openRateLimitFormFromInspector(e,t,n){this.rateLimitInspectorOpen=!1,this.rateLimitFormReturnToInspector=!0,this.openRateLimitForm(n||void 0),n||(this.rateLimitForm.scope=e,this.rateLimitForm.subject=t)}},dD=R(``),fD=R(``),pD=R(``),mD=R(``),hD=R(``),gD=R(``),_D=R(``),vD=R(`

        Scope, subject, and period identify the rule: changing any of them + moves the rule to a new key and restarts its live counters.

        `),yD=R(`

        A user path rule limits the whole subtree; provider and model rules cap + all traffic routed there and make load balancing skip the target while + it is saturated. One shared counter per rule. Leave a field empty to + skip that limit. Token limits require usage tracking.

        `,1);function bD(e,t){E(t,!0);{let t=O(()=>Y.rateLimitEditing?`Edit Rate Limit`:`Create Rate Limit`);aE(e,{get open(){return Y.rateLimitFormOpen},get title(){return I(t)},ariaLabel:`Rate limit editor`,get error(){return Y.rateLimitFormError},get submitting(){return Y.rateLimitFormSubmitting},submitLabel:`Save Rate Limit`,dialogClass:`budget-editor`,novalidate:!0,onclose:()=>Y.closeRateLimitForm(),onsubmit:()=>Y.submitRateLimitForm(),children:(e,t)=>{var n=yD(),r=N(n),i=M(r);sE(i,{id:`rate-limit-scope`,label:`Scope`,children:(e,t)=>{var n=fD();H(n,21,()=>Y.rateLimitScopeOptions(),e=>e.value,(e,t)=>{var n=dD(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n),L(`change`,n,()=>Y.syncRateLimitScope()),Gi(n,()=>Y.rateLimitForm.scope,e=>Y.rateLimitForm.scope=e),z(e,n)},$$slots:{default:!0}});var a=P(i,2);{let e=O(()=>Y.rateLimitSubjectFieldLabel());sE(a,{id:`rate-limit-subject`,get label(){return I(e)},children:(e,t)=>{var n=pD();na(n),F(e=>{W(n,`placeholder`,e),W(n,`data-modal-autofocus`,!Y.rateLimitEditing||void 0),ra(n,Y.rateLimitForm.subject)},[()=>Y.rateLimitSubjectPlaceholder()]),L(`input`,n,e=>Y.setRateLimitFormSubject(e.currentTarget.value)),z(e,n)},$$slots:{default:!0}})}var o=P(a,2);sE(o,{id:`rate-limit-period`,label:`Period`,children:(e,t)=>{var n=mD();H(n,21,()=>Y.rateLimitPeriodOptions(),e=>e.value,(e,t)=>{var n=dD(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n),L(`change`,n,()=>Y.syncRateLimitPeriodSeconds()),Gi(n,()=>Y.rateLimitForm.period,e=>Y.rateLimitForm.period=e),z(e,n)},$$slots:{default:!0}});var s=P(o,2),c=e=>{sE(e,{id:`rate-limit-period-seconds`,label:`Period Seconds`,children:(e,t)=>{var n=hD();na(n),da(n,()=>Y.rateLimitForm.period_seconds,e=>Y.rateLimitForm.period_seconds=e),z(e,n)},$$slots:{default:!0}})};V(s,e=>{Y.rateLimitForm.period===`custom`&&e(c)});var l=P(s,2);{let e=O(()=>Y.rateLimitForm.period===`concurrent`?`Max In-Flight Requests`:`Max Requests`);sE(l,{id:`rate-limit-max-requests`,get label(){return I(e)},children:(e,t)=>{var n=gD();na(n),F(()=>W(n,`data-modal-autofocus`,Y.rateLimitEditing?!0:void 0)),da(n,()=>Y.rateLimitForm.max_requests,e=>Y.rateLimitForm.max_requests=e),z(e,n)},$$slots:{default:!0}})}var u=P(l,2),d=e=>{sE(e,{id:`rate-limit-max-tokens`,label:`Max Tokens`,children:(e,t)=>{var n=_D();na(n),da(n,()=>Y.rateLimitForm.max_tokens,e=>Y.rateLimitForm.max_tokens=e),z(e,n)},$$slots:{default:!0}})};V(u,e=>{Y.rateLimitForm.period!==`concurrent`&&e(d)}),T(r);var f=P(r,4),p=e=>{z(e,vD())};V(f,e=>{Y.rateLimitEditing&&e(p)}),z(e,n)},$$slots:{default:!0}})}D()}Hr([`change`,`input`]);var xD=R(` `),SD=R(` Edit`,1),CD=R(` `,1),wD=R(`
        In-flight
        `),TD=R(`
        Requests
        `),ED=R(`
        Tokens
        `),DD=R(`
        `),OD=R(`
        `);function kD(e,t){E(t,!0);var n=OD();H(n,21,()=>t.rules,e=>Y.rateLimitKey(e),(e,t)=>{var n=DD(),r=M(n),i=M(r),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s),l=e=>{var n=xD(),r=M(n);{let e=O(()=>Y.rateLimitScope(I(t))===`provider`?go:Na);G(r,{get icon(){return I(e)},class:`budget-period-icon`})}var i=P(r,2),a=M(i,!0);T(i),T(n),F((e,t)=>{W(n,`title`,e),B(a,t)},[()=>`Rule scope: `+Y.rateLimitScopeLabel(I(t)),()=>Y.rateLimitScopeLabel(I(t))]),z(e,n)},u=O(()=>Y.rateLimitScope(I(t))!==`user_path`);V(c,e=>{I(u)&&e(l)});var d=P(c,2),f=M(d);{let e=O(()=>Y.rateLimitIsConcurrent(I(t))?Aa:To);G(f,{get icon(){return I(e)},class:`budget-period-icon`})}var p=P(f,2),m=M(p,!0);T(p),T(d),T(s);var h=P(s,2),g=M(h),_=M(g),v=M(_,!0);T(_),T(g);var y=P(g,2),b=M(y),x=e=>{tT(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>Y.openRateLimitForm(I(t)),children:(e,t)=>{var n=SD();G(N(n),{get icon(){return oo},class:`budget-action-icon`}),Ue(2),z(e,n)},$$slots:{default:!0}})},S=O(()=>!Y.rateLimitIsReadOnly(I(t)));V(b,e=>{I(S)&&e(x)});var C=P(b,2);{let e=O(()=>Y.rateLimitResettingKey===Y.rateLimitKey(I(t))?`Resetting counters`:`Reset counters`),n=O(()=>Y.rateLimitResettingKey===Y.rateLimitKey(I(t)));tT(C,{get label(){return I(e)},class:`budget-action-btn budget-action-btn-warning`,onclick:()=>Y.resetRateLimit(I(t)),get disabled(){return I(n)},children:(e,n)=>{var r=CD(),i=N(r);G(i,{get icon(){return fo},class:`budget-action-icon`});var a=P(i,2),o=M(a,!0);T(a),F(e=>B(o,e),[()=>Y.rateLimitResettingKey===Y.rateLimitKey(I(t))?`Resetting`:`Reset`]),z(e,r)},$$slots:{default:!0}})}var w=P(C,2),ee=e=>{{let n=O(()=>Y.rateLimitDeletingKey===Y.rateLimitKey(I(t))?`Deleting rate limit`:`Delete rate limit`),r=O(()=>Y.rateLimitDeletingKey===Y.rateLimitKey(I(t)));tT(e,{get label(){return I(n)},class:`table-action-btn-danger budget-action-btn`,onclick:()=>Y.deleteRateLimit(I(t)),get disabled(){return I(r)},children:(e,n)=>{var r=CD(),i=N(r);G(i,{get icon(){return Eo},class:`budget-action-icon`});var a=P(i,2),o=M(a,!0);T(a),F(e=>B(o,e),[()=>Y.rateLimitDeletingKey===Y.rateLimitKey(I(t))?`Deleting`:`Delete`]),z(e,r)},$$slots:{default:!0}})}},te=O(()=>!Y.rateLimitIsReadOnly(I(t)));V(w,e=>{I(te)&&e(ee)}),T(y),T(h),T(i);var ne=P(i,2),re=M(ne),ie=e=>{var n=wD(),r=M(n),i=P(M(r),2),a=M(i,!0);T(i),T(r);var o=P(r,2),s=M(o);let c;var l=P(s,2),u=M(l),d=M(u,!0);T(u),T(l),T(o),T(n),F((e,t,n,r,i,l)=>{B(a,e),W(o,`aria-valuenow`,t),W(o,`aria-label`,n),Hi(o,r),c=U(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),B(d,l)},[()=>Y.rateLimitUsagePercent(I(t).in_flight,I(t).max_requests)+`%`,()=>Y.rateLimitUsagePercent(I(t).in_flight,I(t).max_requests),()=>`In-flight requests: `+Y.formatRateLimitNumber(I(t).in_flight)+` of `+Y.formatRateLimitNumber(I(t).max_requests),()=>`--budget-progress: `+Y.rateLimitUsagePercent(I(t).in_flight,I(t).max_requests)+`%`,()=>({"budget-bar-fill-danger":Y.rateLimitUsagePercent(I(t).in_flight,I(t).max_requests)>=100}),()=>Y.formatRateLimitNumber(I(t).in_flight)+` of `+Y.formatRateLimitNumber(I(t).max_requests)+` in flight`]),z(e,n)},ae=O(()=>Y.rateLimitIsConcurrent(I(t)));V(re,e=>{I(ae)&&e(ie)});var oe=P(re,2),se=e=>{var n=TD(),r=M(n),i=P(M(r),2),a=M(i,!0);T(i),T(r);var o=P(r,2),s=M(o);let c;var l=P(s,2),u=M(l),d=M(u,!0);T(u);var f=P(u,2),p=M(f,!0);T(f),T(l),T(o),T(n),F((e,t,n,r,i,l,u)=>{B(a,e),W(o,`aria-valuenow`,t),W(o,`aria-label`,n),Hi(o,r),c=U(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),B(d,l),B(p,u)},[()=>Y.rateLimitUsagePercent(I(t).requests_used,I(t).max_requests)+`%`,()=>Y.rateLimitUsagePercent(I(t).requests_used,I(t).max_requests),()=>`Requests used: `+Y.formatRateLimitNumber(I(t).requests_used)+` of `+Y.formatRateLimitNumber(I(t).max_requests),()=>`--budget-progress: `+Y.rateLimitUsagePercent(I(t).requests_used,I(t).max_requests)+`%`,()=>({"budget-bar-fill-danger":Y.rateLimitUsagePercent(I(t).requests_used,I(t).max_requests)>=100}),()=>Y.formatRateLimitNumber(I(t).requests_used)+` of `+Y.formatRateLimitNumber(I(t).max_requests)+` requests`,()=>Y.formatRateLimitNumber(I(t).requests_remaining)+` left`]),z(e,n)},ce=O(()=>!Y.rateLimitIsConcurrent(I(t))&&I(t).max_requests);V(oe,e=>{I(ce)&&e(se)});var le=P(oe,2),ue=e=>{var n=ED(),r=M(n),i=P(M(r),2),a=M(i,!0);T(i),T(r);var o=P(r,2),s=M(o);let c;var l=P(s,2),u=M(l),d=M(u,!0);T(u);var f=P(u,2),p=M(f,!0);T(f),T(l),T(o),T(n),F((e,t,n,r,i,l,u)=>{B(a,e),W(o,`aria-valuenow`,t),W(o,`aria-label`,n),Hi(o,r),c=U(s,1,`budget-bar-fill budget-bar-fill-usage`,null,c,i),B(d,l),B(p,u)},[()=>Y.rateLimitUsagePercent(I(t).tokens_used,I(t).max_tokens)+`%`,()=>Y.rateLimitUsagePercent(I(t).tokens_used,I(t).max_tokens),()=>`Tokens used: `+Y.formatRateLimitNumber(I(t).tokens_used)+` of `+Y.formatRateLimitNumber(I(t).max_tokens),()=>`--budget-progress: `+Y.rateLimitUsagePercent(I(t).tokens_used,I(t).max_tokens)+`%`,()=>({"budget-bar-fill-danger":Y.rateLimitUsagePercent(I(t).tokens_used,I(t).max_tokens)>=100}),()=>Y.formatRateLimitNumber(I(t).tokens_used)+` of `+Y.formatRateLimitNumber(I(t).max_tokens)+` tokens`,()=>Y.formatRateLimitNumber(I(t).tokens_remaining)+` left`]),z(e,n)},de=O(()=>!Y.rateLimitIsConcurrent(I(t))&&I(t).max_tokens);V(le,e=>{I(de)&&e(ue)}),T(ne),T(r),T(n),F((e,t,n,r,i)=>{W(a,`title`,e),B(o,t),B(m,n),W(_,`title`,r),B(v,i)},[()=>Y.rateLimitScopeLabel(I(t))+`: `+Y.rateLimitSubject(I(t)),()=>Y.rateLimitSubject(I(t)),()=>Y.rateLimitPeriodLabel(I(t)),()=>Y.rateLimitIsReadOnly(I(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>Y.rateLimitSourceLabel(I(t))]),z(e,n)}),T(n),z(e,n),D()}var AD=R(`

        Rate Limits

        `),jD=R(``),MD=R(`
        Rate limit management is unavailable.
        `),ND=R(``),PD=R(`
        `),FD=R(`

        No rate limits configured yet.

        `),ID=R(`

        No rate limits match your filter.

        `),LD=R(`
        `);function RD(e,t){E(t,!0),An(()=>{K.refreshTick,Wo.page===`rate-limits`&&Y.fetchRateLimitsPage()});let n=O(()=>Y.filteredRateLimits());var r=LD(),i=M(r),a=M(i);BS(M(a),{copyId:`rate-limits-help-copy`,label:`rate limits help`,text:`Rate limits cap requests, tokens, and in-flight concurrency for a user path subtree, a provider, or a model. Consumer (user path) breaches return 429 with Retry-After and x-ratelimit-* headers; saturated providers and models are skipped by load balancing and failover while capacity exists elsewhere. Counters are per gateway instance and reset on restart; token limits need usage tracking.`,title:e=>{z(e,AD())},$$slots:{title:!0}}),T(a);var o=P(a,2),s=M(o),c=e=>{var t=jD();G(M(t),{get icon(){return co},class:`form-action-icon`}),Ue(2),T(t),F(()=>t.disabled=Y.rateLimitFormSubmitting),L(`click`,t,()=>Y.openRateLimitForm()),z(e,t)},l=O(()=>Y.rateLimitsEnabled()&&Y.rateLimitsAvailable&&!K.authError);V(s,e=>{I(l)&&e(c)}),T(o),T(i);var u=P(i,2);Ac(u,{});var d=P(u,2),f=e=>{z(e,MD())},p=O(()=>(!Y.rateLimitsEnabled()||!Y.rateLimitsAvailable)&&!K.authError);V(d,e=>{I(p)&&e(f)});var m=P(d,2),h=e=>{var t=ND(),n=M(t,!0);T(t),F(()=>B(n,Y.rateLimitError)),z(e,t)};V(m,e=>{Y.rateLimitError&&!K.authError&&e(h)});var g=P(m,2),_=e=>{$w(e,{label:`Loading rate limits...`})};V(g,e=>{Y.rateLimitsLoading&&!K.authError&&e(_)});var v=P(g,2),y=e=>{var t=PD(),n=M(t);iw(M(n),{id:`rate-limit-filter`,placeholder:`Filter by subject, scope, or period...`,label:`Filter rate limits by subject, scope, or period`,get value(){return Y.rateLimitFilter},set value(e){Y.rateLimitFilter=e}}),T(n),T(t),z(e,t)};V(v,e=>{(Y.rateLimits.length>0||Y.rateLimitFilter)&&Y.rateLimitsAvailable&&!K.authError&&!Y.rateLimitFormOpen&&e(y)});var b=P(v,2);bD(b,{});var x=P(b,2),S=e=>{kD(e,{get rules(){return I(n)}})};V(x,e=>{I(n).length>0&&Y.rateLimitsAvailable&&!K.authError&&e(S)});var C=P(x,2),w=e=>{z(e,FD())},ee=O(()=>Y.rateLimits.length===0&&!Y.rateLimitFilter&&!Y.rateLimitsLoading&&!K.authError&&!Y.rateLimitError&&Y.rateLimitsAvailable&&Y.rateLimitsEnabled());V(C,e=>{I(ee)&&e(w)});var te=P(C,2),ne=e=>{z(e,ID())},re=O(()=>Y.rateLimits.length>0&&I(n).length===0&&Y.rateLimitFilter&&!Y.rateLimitsLoading&&!K.authError&&!Y.rateLimitError&&Y.rateLimitsAvailable&&Y.rateLimitsEnabled());V(te,e=>{I(re)&&e(ne)}),T(r),z(e,r),D()}Hr([`click`]);function zD(e){return String(e||``).trim().toLowerCase()}function BD(e){if(!e)return``;let t=String(e.selector||``).trim();if(t)return t;if(!e.model||!e.model.id)return``;let n=String(e.model.id||``).trim(),r=String(e.provider_name||``).trim();if(r)return r+`/`+n;let i=String(e.provider_type||``).trim();return!i||n.includes(`/`)?n:i+`/`+n}function VD(e,t,n,r){let i=new Set,a=String(e||``).trim().toLowerCase(),o=String(t||``).trim().toLowerCase(),s=String(n||``).trim().toLowerCase(),c=String(r||``).trim().toLowerCase();if(c&&i.add(c),!a)return i;i.add(a),s&&i.add(s+`/`+a),o&&!a.includes(`/`)&&i.add(o+`/`+a);let l=a.split(`/`);return l.length===2&&l[1]&&i.add(l[1]),i}function HD(e){return VD(e&&e.model?e.model.id:``,e?e.provider_type:``,e?e.provider_name:``,e?e.selector:``)}function UD(e){let t=new Set,n=String(e.resolved_model||``).trim().toLowerCase(),r=String(e.target_model||``).trim().toLowerCase(),i=String(e.target_provider||``).trim().toLowerCase();if(n){t.add(n);let e=n.split(`/`);e.length===2&&e[1]&&t.add(e[1])}if(r){t.add(r);let e=r.split(`/`);e.length===2&&e[1]&&t.add(e[1])}return r&&i&&t.add(i+`/`+r),t}function WD(e){if(!e)return``;let t=String(e.provider||``).trim(),n=String(e.model||``).trim();return!t||!n||n===t||n.startsWith(t+`/`)?n:t+`/`+n}function GD(e){if(e===``||e==null)return null;let t=Number(e);return!Number.isFinite(t)||t<=0?null:t}function KD(e,t){let n={model:e},r=GD(t);return r!==null&&(n.weight=r),n}function qD(e){let t=Array.isArray(e)?e:[],n=[];for(let e of t){let t=String(e&&e.model||``).trim();t&&n.push(KD(t,e&&e.weight))}return n}function JD(e){switch(String(e||``).toLowerCase()){case`cost`:return`lowest cost`;case`round_robin`:case``:return`round robin`;default:return e}}var YD={round_robin:`Round-robin (rotate across targets; honors weights)`,cost:`Lowest cost (cheapest target per request)`,adaptive:`Adaptive (target chosen by the registered routing extension)`};function XD(e,t){let n=Array.isArray(e)?[...e]:[],r=String(t||``).trim().toLowerCase();return r&&!n.includes(r)&&n.push(r),n.map(e=>({value:e,label:YD[e]||e}))}function ZD(e){let t=Array.isArray(e.targets)?e.targets:[],n=t.length>0?t[0]:{},r=t.map(e=>{let t={provider:e.provider||``,model:e.model||``};return e.weight&&(t.weight=e.weight),t});return{name:e.source,target_provider:n.provider||``,target_model:n.model||``,targets:r,strategy:e.strategy||``,session_affinity:e.session_affinity!==!1,description:e.description||``,enabled:e.enabled!==!1,managed:!!e.managed,valid:!!e.valid,resolved_model:e.resolved_model||``,provider_type:e.provider_type||``,user_paths:Array.isArray(e.user_paths)?e.user_paths:[]}}function QD(e){let t=Array.isArray(e)?e:[],n=[],r=[];for(let e of t)!e||typeof e!=`object`||(e.kind===`redirect`?n.push(ZD(e)):e.kind===`policy`&&r.push({selector:e.source,provider_name:e.provider_name||``,model:e.model||``,user_paths:Array.isArray(e.user_paths)?e.user_paths:[],description:e.description||``,enabled:e.enabled!==!1,managed:!!e.managed,scope_kind:e.scope_kind||``}));return{aliases:n,policies:r}}function $D(e){if(!e)return`—`;let t=Array.isArray(e.targets)?e.targets:[];return t.length>1?t.length+` targets · `+JD(e.strategy):e.resolved_model?e.resolved_model:e.target_provider?e.target_provider+`/`+e.target_model:e.target_model||`—`}function eO(e){return e?e.enabled===!1?`is-disabled`:e.valid?`is-valid`:`is-invalid`:`is-invalid`}function tO(e){return e?e.enabled===!1?`Disabled`:e.valid?`Active`:`Invalid`:`Invalid`}function nO(e){return Array.isArray(e)&&e.length>0&&e.indexOf(`/`)===-1}function rO(e,t){return!t||!e?``:e.effective_enabled===!1?`is-disabled`:nO(e.user_paths)?`is-restricted`:`is-enabled`}function iO(e){if(!e)return``;let t=[];e.effective_enabled===!1&&t.push(e.default_enabled===!1?`Disabled by default`:`Disabled`);let n=Array.isArray(e.user_paths)?e.user_paths:[];return n.length>0&&t.push(`Allowed for `+n.join(`, `)),t.join(` · `)}function aO({models:e,aliases:t,virtualModelsAvailable:n,activeCategory:r}){let i=Array.isArray(e)?e:[],a=Array.isArray(t)?t:[],o=new Map;if(n)for(let e of a){let t=zD(e&&e.name);!t||e.enabled===!1||!e.valid||o.set(t,e)}let s=new Map,c=i.map(e=>{let t=BD(e),n=null;for(let t of HD(e))s.has(t)||s.set(t,e),!n&&o.has(t)&&(n=o.get(t));let r=e&&e.access?e.access:null;return{key:`model:`+t,display_name:t,secondary_name:``,provider_name:e.provider_name||``,provider_type:e.provider_type||``,model:e.model,selector:e.selector||``,is_alias:!1,alias:null,access:r,masking_alias:n,has_virtual_model:!!(n||r&&r.override),alias_state_class:``,alias_state_text:``}});if(!n)return c;for(let e of a){let t=s.get(zD(e&&e.name));if(e&&e.enabled!==!1&&e.valid&&t)continue;let n=null;for(let t of UD(e))if(n=s.get(t)||null,n)break;!n&&r&&r!==`all`||c.push({key:`alias:`+e.name,display_name:e.name,secondary_name:$D(e),provider_name:n&&n.provider_name||``,provider_type:n?n.provider_type||e.provider_type||``:e.provider_type||``,model:n?n.model:{id:e.name,object:`model`},selector:``,is_alias:!0,alias:e,access:null,masking_alias:null,source_model_exists:!!t,has_virtual_model:!0,alias_state_class:eO(e),alias_state_text:tO(e)})}return c.sort((e,t)=>e.is_alias===t.is_alias?String(e.display_name||``).localeCompare(String(t.display_name||``)):e.is_alias?-1:1)}function oO(e,t){if(!t)return e;let n=String(t).toLowerCase();return e.filter(e=>[e.display_name,e.secondary_name,e.provider_name,e.provider_type,e.model&&e.model.owned_by,e.alias&&e.alias.description,e.alias&&e.alias_state_text,e.model&&e.model.metadata&&e.model.metadata.modes?e.model.metadata.modes.join(`,`):``,e.model&&e.model.metadata&&e.model.metadata.categories?e.model.metadata.categories.join(`,`):``].some(e=>String(e||``).toLowerCase().includes(n)))}function sO(e,t){return String(e||``).trim()||String(t||``).trim()||`Unassigned`}function cO(e,t){let n=String(e||``).trim(),r=String(t||``).trim();return!r||r===n?``:r}function lO(e){let t=String(e||``).trim();return t?t+`/`:``}function uO(e){let t=Array.isArray(e)?e:[],n=t.filter(e=>e&&!e.is_alias).length,r=t.filter(e=>e&&e.is_alias).length,i=[];return n>0&&i.push(n+(n===1?` model`:` models`)),r>0&&i.push(r+(r===1?` alias`:` aliases`)),i.join(` · `)}function dO(e,t,n){let r=String(t||``).trim(),i=String(n||``).trim();for(let t of Array.isArray(e)?e:[]){let e=String(t&&t.provider_name||``).trim(),n=String(t&&t.provider_type||``).trim();if(!(r&&e!==r)&&!(!r&&i&&n!==i)&&t&&t.access)return t.access.default_enabled!==!1}return!0}function fO(e){for(let t of Array.isArray(e)?e:[])if(t&&t.access)return t.access.default_enabled!==!1;return!0}function pO(e,t){let n=String(t||``).trim();if(!n)return null;for(let t of Array.isArray(e)?e:[])if(String(t&&t.selector||``).trim()===n)return t;return null}function mO(e,t,n,r){let i=lO(t),a=r&&r.get(`/`)||null,o=i&&r&&r.get(i)||null,s=dO(e,t,n),c=o||a,l=c&&Array.isArray(c.user_paths)?Array.from(new Set(c.user_paths)).sort():[];return{selector:i,default_enabled:s,effective_enabled:c?c.enabled!==!1:s,user_paths:l,override:o}}function hO(e,t,n){if(!Array.isArray(e)||e.length===0)return[];let r=new Map;for(let e of Array.isArray(n)?n:[]){let t=String(e&&e.selector||``).trim();t&&r.set(t,e)}let i=[],a=new Map;for(let t of e){if(t&&t.is_alias){i.push(t);continue}let e=String(t&&t.provider_name||``).trim(),n=String(t&&t.provider_type||``).trim(),r=`provider-group:`+(e||n||`unassigned`);a.has(r)||a.set(r,{key:r,provider_name:e,provider_type:n,display_name:sO(e,n),type_label:cO(e,n),rows:[]});let o=a.get(r);!o.provider_name&&e&&(o.provider_name=e),!o.provider_type&&n&&(o.provider_type=n),o.display_name=sO(o.provider_name,o.provider_type),o.type_label=cO(o.provider_name,o.provider_type),o.rows.push(t)}let o=Array.from(a.values()).map(e=>{let n=mO(t,e.provider_name,e.provider_type,r);return{...e,access:n,access_summary:iO(n),item_count_label:uO(e.rows)}}).sort((e,t)=>String(e.display_name||``).localeCompare(String(t.display_name||``)));return i.length>0&&o.unshift({key:`virtual-model-group`,is_virtual_models:!0,provider_name:``,provider_type:``,display_name:`Virtual models`,type_label:``,rows:i,access:{selector:``},access_summary:``,item_count_label:uO(i)}),o}function gO(e,t){let n=pO(t,`/`),r=fO(e),i=n&&Array.isArray(n.user_paths)?n.user_paths:[];return{key:`scope-global`,is_alias:!1,display_name:`all providers and models`,access:{selector:`/`,default_enabled:r,effective_enabled:n?n.enabled!==!1:r,user_paths:i,override:n}}}function _O(e){return e?String(e.access&&e.access.selector||``).trim()||String(e.override_selector||``).trim()||BD(e):``}function vO(e){if(!e)return[];let t=[];return e.is_alias?t.push(`alias-row`,eO(e.alias)):e.has_virtual_model&&t.push(`alias-row`,`is-valid`),!e.is_alias&&e.masking_alias&&t.push(`masked-model-row`),!e.is_alias&&e.access&&e.access.effective_enabled===!1&&t.push(`model-access-disabled-row`),t}function yO(e){return!!(e&&e.is_alias&&e.alias&&e.alias.name&&!e.alias.managed)}function bO(e){return!!(e&&!e.is_alias&&e.masking_alias&&e.masking_alias.name&&!e.masking_alias.managed)}function xO(e){return e&&e.is_alias&&e.alias&&e.alias.name?`alias-row-`+String(e.alias.name).replace(/[^a-zA-Z0-9_-]+/g,`-`):``}function SO(e){return e?e.is_alias?!!(e.alias&&e.alias.managed):!!(e.access&&e.access.override&&e.access.override.managed||e.masking_alias&&e.masking_alias.managed):!1}function CO(e){return!!(e&&e.override)}function wO(e){return e?`table-action-btn-active`:``}function TO(e,t){let n=`Edit `+String(e||`model access`);return t?n+` (virtual model exists)`:n}function EO(){return{source:``,target_model:``,target_weight:1,targets:[],strategy:`round_robin`,session_affinity:!0,user_paths:``,description:``,enabled:!0}}function DO(e){return String(e&&e.target_model||``).trim()!==``}function OO(e){return String(e&&e.target_model||``).trim()?!0:qD(e&&e.targets).length>0}function kO(e){return!!e&&Array.isArray(e.targets)&&e.targets.length>0}function AO(e){return kO(e)&&String(e&&e.strategy||``).toLowerCase()!==`cost`}function jO(e){let t=Array.isArray(e.targets)?e.targets:[];if(t.length>0){let n=t.shift();e.target_model=n.model||``,e.target_weight=n.weight||1;return}e.target_model=``,e.target_weight=1}function MO(e){let t=Array.isArray(e&&e.targets)?e.targets:[];return t.length>0?{primaryModel:WD(t[0]),primaryWeight:t[0].weight||1,extraTargets:t.slice(1).map(e=>({model:WD(e),weight:e.weight||1}))}:{primaryModel:e&&e.target_provider?e.target_provider+`/`+e.target_model:e&&e.target_model||``,primaryWeight:1,extraTargets:[]}}function NO(e){return String(e||``).split(/\r?\n|,/).map(e=>String(e||``).trim()).filter(Boolean)}function PO(e,t,n){let r=String(e&&e.source||``).trim(),i=String(e&&e.target_model||``).trim(),a=qD(e&&e.targets),o=OO(e),s=String(t||``).trim(),c=n===`edit`&&!!s&&r!==s,l={source:r,user_paths:NO(e&&e.user_paths),description:String(e&&e.description||``).trim(),enabled:!!(e&&e.enabled)};if(c&&(l.old_source=s),o){let t=[];if(i&&t.push(KD(i,e.target_weight)),t.push(...a),t.length>1){let n=e.strategy||`round_robin`;l.targets=n===`cost`?t.map(e=>({model:e.model})):t,l.strategy=n,e&&e.session_affinity===!1&&(l.session_affinity=!1)}else l.target_model=t[0].model}return{payload:l,source:r,isRedirect:o,isRename:c}}function FO(e){let t={source:e.name,description:String(e.description||``).trim(),user_paths:Array.isArray(e.user_paths)?e.user_paths:[],enabled:e.enabled===!1},n=Array.isArray(e.targets)?e.targets:[];return n.length>1?(t.strategy=e.strategy||`round_robin`,e.session_affinity===!1&&(t.session_affinity=!1),t.targets=t.strategy===`cost`?n.map(e=>({model:WD(e)})):n.map(e=>KD(WD(e),e.weight))):n.length===1?t.target_model=WD(n[0]):t.target_model=e.target_provider?e.target_provider+`/`+e.target_model:e.target_model,t}function IO(e,t,n){let r=n||{},i=r.effective_enabled===!1,a=t&&Array.isArray(t.user_paths)?t.user_paths:[],o=`PUT`,s;return i===!1?s={source:e,enabled:!1,user_paths:a}:t&&a.length===0&&r.default_enabled!==!1?(o=`DELETE`,s={source:e}):s={source:e,enabled:!0,user_paths:a},{method:o,payload:s,desired:i}}function LO(e,t,n){let r=Math.max(1,Number(t||75)),i=Math.min(n,e+r);return{limit:i,rendering:iaO({models:Oc.models,aliases:this.aliases,virtualModelsAvailable:this.virtualModelsAvailable,activeCategory:Oc.activeCategory}));get displayModels(){return I(this.#T)}set displayModels(e){A(this.#T,e)}#E=O(()=>hO(this.displayModels,Oc.models,this.modelOverrideViews));get displayModelGroups(){return I(this.#E)}set displayModelGroups(e){A(this.#E,e)}#D=O(()=>oO(this.displayModels,Oc.filter));get filteredDisplayModels(){return I(this.#D)}set filteredDisplayModels(e){A(this.#D,e)}#O=O(()=>{let e=this.filteredDisplayModels,t=Math.max(0,Math.min(Number(this.modelRenderLimit||0),e.length));return!Oc.filter&&t>=this.displayModels.length?this.displayModelGroups:hO(e.slice(0,t),Oc.models,this.modelOverrideViews)});get filteredDisplayModelGroups(){return I(this.#O)}set filteredDisplayModelGroups(e){A(this.#O,e)}#k=O(()=>gO(Oc.models,this.modelOverrideViews));get globalScopeRow(){return I(this.#k)}set globalScopeRow(e){A(this.#k,e)}modelsBusy(){return!!(Oc.loading||this.modelsRendering)}modelLoadingText(){if(Oc.loading)return this.displayModels.length>0?`Refreshing models...`:`Loading models...`;let e=this.filteredDisplayModels.length;return`Rendering models... `+Math.min(Number(this.modelRenderLimit||0),e)+` / `+e}restartModelRendering(e){let t=++this.#a,n=RO(this.modelRenderBatchSize,e);this.modelRenderLimit=n.limit,this.modelsRendering=n.rendering,n.rendering&&this.#A(t)}stopModelRendering(){this.#a++,this.modelsRendering=!1}#A(e){let t=()=>{if(e!==this.#a)return;let t=LO(this.modelRenderLimit,this.modelRenderBatchSize,this.filteredDisplayModels.length);this.modelRenderLimit=t.limit,this.modelsRendering=t.rendering,t.rendering&&this.#A(e)};typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>setTimeout(t,0)):setTimeout(t,0)}async fetchVirtualModels(){this.aliasLoading=!0,this.aliasError=``;try{let e=await ps(`/admin/virtual-models`,{label:`virtual models`});if(e.status===503){this.virtualModelsAvailable=!1,this.aliases=[],this.modelOverrideViews=[];return}if(e.stale)return;if(this.virtualModelsAvailable=!0,!e.ok){this.aliases=[],this.modelOverrideViews=[];return}let{aliases:t,policies:n}=QD(e.data);this.aliases=t,this.modelOverrideViews=n}catch(e){console.error(`Failed to fetch virtual models:`,e),this.aliases=[],this.modelOverrideViews=[],this.aliasError=`Unable to load virtual models.`}finally{this.aliasLoading=!1}}qualifiedModelName(e){return BD(e)}findModelOverrideView(e){return pO(this.modelOverrideViews,e)}hasGlobalModelOverride(){return!!this.findModelOverrideView(`/`)}findExistingAliasByName(e){let t=zD(e);if(!t)return null;for(let e of this.aliases)if(zD(e&&e.name)===t)return e;return null}findConcreteModelByName(e){let t=zD(e);if(!t)return null;for(let e of Oc.models)if(HD(e).has(t))return e;return null}rowToggleEnabled(e){return e?e.is_alias?e.alias&&e.alias.enabled!==!1:!!(e.access&&e.access.effective_enabled!==!1):!1}rowToggleLabel(e){return this.rowTogglingKey&&this.rowTogglingKey===e.key?`Updating...`:this.rowToggleRestricted(e)?`Restricted`:this.rowToggleEnabled(e)?`Enabled`:`Disabled`}rowToggleRestricted(e){return!!e&&!e.is_alias&&rO(e.access,this.virtualModelsAvailable)===`is-restricted`}rowToggleAriaLabel(e){if(!e)return``;let t=this.rowToggleEnabled(e)?`Disable `:`Enable `,n;return n=e.is_alias?`alias `+String(e.alias&&e.alias.name||``):String(e.display_name||e.access&&e.access.selector||`model`),t+n.trim()}async toggleRowEnabled(e){if(this.virtualModelsAvailable&&!(!e||this.rowTogglingKey===e.key)){if(SO(e)){qs.success(`This virtual model is managed by configuration and is read-only.`);return}if(e.is_alias){await this.toggleAliasRow(e);return}await this.toggleModelRow(e)}}async toggleAliasRow(e){let t=e.alias;if(!t||!t.name)return;this.rowTogglingKey=e.key;let n=FO(t);try{let e=await ms(`/admin/virtual-models`,`PUT`,n,{label:`alias state`});if(e.status===503){this.virtualModelsAvailable=!1,qs.error(`Virtual models feature is unavailable.`);return}if(e.stale)return;if(!e.ok){qs.error(e.status===401?`Authentication required.`:ls(e,`Failed to update alias state.`));return}qs.success(n.enabled?`Alias enabled.`:`Alias disabled.`),this.fetchVirtualModels()}catch(e){console.error(`Failed to toggle alias state:`,e),qs.error(`Failed to update alias state.`)}finally{this.rowTogglingKey=``}}async toggleModelRow(e){let t=_O(e);if(!t)return;let{method:n,payload:r,desired:i}=IO(t,this.findModelOverrideView(t),e.access||{});this.rowTogglingKey=e.key;try{let e=await ms(`/admin/virtual-models`,n,r,{label:`model access`});if(e.status===503){this.virtualModelsAvailable=!1,qs.error(`Virtual models feature is unavailable.`);return}if(!(n===`DELETE`&&e.status===404)){if(e.stale)return;if(!e.ok){qs.error(e.status===401?`Authentication required.`:ls(e,`Failed to update model access.`));return}}qs.success(i?`Model enabled.`:`Model disabled.`),Promise.all([Oc.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to toggle model access:`,e),qs.error(`Failed to update model access.`)}finally{this.rowTogglingKey=``}}async removeAliasRow(e){if(!(e&&e.is_alias&&e.alias&&e.alias.name&&!e.alias.managed)||this.rowDeletingKey)return;let t=String(e.alias.name||``).trim();t&&await this.mutateVirtualModelRow({rowKey:e.key,confirmMessage:`Remove the virtual model alias "`+t+`"?`,method:`DELETE`,payload:{source:t},operation:`virtual model`,failureMessage:`Failed to remove virtual model.`,notice:`Virtual model removed.`,ignoreNotFound:!0})}async removeRedirectRow(e){let t=e&&e.masking_alias;if(!(e&&!e.is_alias&&t&&t.name&&!t.managed)||this.rowDeletingKey)return;let n=String(t.name||``).trim();n&&await this.mutateVirtualModelRow({rowKey:e.key,confirmMessage:`Remove the redirect for "`+n+`"? Other virtual model settings will be preserved.`,method:`PUT`,payload:{source:n,user_paths:Array.isArray(t.user_paths)?t.user_paths:[],description:String(t.description||``).trim(),enabled:t.enabled!==!1},operation:`virtual model redirect`,failureMessage:`Failed to remove redirect.`,notice:`Redirect removed. Other virtual model settings were preserved.`})}async mutateVirtualModelRow(e){if(!this.rowDeletingKey&&window.confirm(e.confirmMessage)){this.rowDeletingKey=e.rowKey;try{let t=await ms(`/admin/virtual-models`,e.method,e.payload,{label:e.operation});if(t.status===503){this.virtualModelsAvailable=!1,qs.error(`Virtual models feature is unavailable.`);return}if(!(e.ignoreNotFound&&t.status===404)){if(t.stale)return;if(!t.ok){qs.error(t.status===401?`Authentication required.`:ls(t,e.failureMessage));return}}this.virtualModelsAvailable=!0,qs.success(e.notice),Promise.all([Oc.fetchModels(),this.fetchVirtualModels()])}catch(t){console.error(e.failureMessage,t),qs.error(e.failureMessage)}finally{this.rowDeletingKey=``}}}addVmTarget(){Array.isArray(this.vmForm.targets)||(this.vmForm.targets=[]),this.vmForm.targets.push({model:``,weight:1})}removeVmTarget(e){Array.isArray(this.vmForm.targets)&&this.vmForm.targets.splice(e,1)}removePrimaryTarget(){jO(this.vmForm)}vmFormHasPrimaryTarget(){return DO(this.vmForm)}vmFormShowStrategy(){return kO(this.vmForm)}vmStrategyOptions(){return XD(vs.virtualModelStrategies(),this.vmForm.strategy)}vmFormShowWeights(){return AO(this.vmForm)}vmFormToggleRestricted(){return!!(this.vmForm&&this.vmForm.enabled)&&nO(NO(this.vmForm.user_paths))}vmFormToggleLabel(){return!this.vmForm||!this.vmForm.enabled?`Disabled`:this.vmFormToggleRestricted()?`Restricted`:`Enabled`}resetVirtualModelForm(){this.vmFormError=``,this.vmFormHelpOpen=!1,this.vmFormUserPathsHelpOpen=!1,this.vmSubmitting=!1,this.vmDeleting=!1,this.vmFormHasExisting=!1,this.vmFormDefaultEnabled=!0,this.vmFormEffectiveEnabled=!0,this.vmFormDisplayName=``,this.vmFormSourceLocked=!1,this.vmFormOriginalSource=``,this.vmFormManaged=!1,this.vmForm=EO()}closeVirtualModelForm(){this.vmFormOpen=!1,this.resetVirtualModelForm()}openVirtualModelCreate(e){this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`create`,this.vmFormSourceLocked=!1,this.vmFormDisplayName=`New virtual model`,e&&e.model&&e.model.id&&(this.vmForm.target_model=BD(e))}openVirtualModelEditAlias(e){if(!e)return;this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!1,this.vmFormHasExisting=!0,this.vmFormManaged=!!e.managed,this.vmFormOriginalSource=e.name||``,this.vmFormDisplayName=e.name||``,this.vmFormDefaultEnabled=fO(Oc.models),this.vmFormEffectiveEnabled=e.enabled!==!1;let{primaryModel:t,primaryWeight:n,extraTargets:r}=MO(e);this.vmForm={source:e.name||``,target_model:t,target_weight:n,targets:r,strategy:e.strategy||`round_robin`,session_affinity:e.session_affinity!==!1,user_paths:(Array.isArray(e.user_paths)?e.user_paths:[]).join(` +`),description:e.description||``,enabled:e.enabled!==!1}}openVirtualModelEditModel(e){if(!e||e.is_alias)return;let t=e.access||{},n=t.override||null,r=n&&Array.isArray(n.user_paths)?n.user_paths:Array.isArray(t.user_paths)?t.user_paths:[],i=_O(e);this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!0,this.vmFormHasExisting=!!n,this.vmFormOriginalSource=i;let a=n?n.enabled!==!1:t.effective_enabled!==!1;this.vmFormDefaultEnabled=t.default_enabled!==!1,this.vmFormEffectiveEnabled=a,this.vmFormManaged=!!(n&&n.managed),this.vmFormDisplayName=e.access_display_name||e.display_name||i||``,this.vmForm={source:i,target_model:``,target_weight:``,targets:[],strategy:`round_robin`,user_paths:r.join(` +`),description:n&&n.description?n.description:``,enabled:a}}openGlobalModelOverrideEdit(){let e=this.findModelOverrideView(`/`),t=e&&Array.isArray(e.user_paths)?e.user_paths:[],n=fO(Oc.models);this.resetVirtualModelForm(),this.vmFormOpen=!0,this.vmFormMode=`edit`,this.vmFormSourceLocked=!0,this.vmFormHasExisting=!!e,this.vmFormOriginalSource=`/`,this.vmFormDefaultEnabled=n,this.vmFormEffectiveEnabled=e?e.enabled!==!1:n,this.vmFormManaged=!!(e&&e.managed),this.vmFormDisplayName=`All providers and models`,this.vmForm={source:`/`,target_model:``,target_weight:``,targets:[],strategy:`round_robin`,user_paths:t.join(` +`),description:e&&e.description?e.description:``,enabled:e?e.enabled!==!1:n}}openProviderOverrideEdit(e){!e||!e.access||!e.access.selector||this.openVirtualModelEditModel({display_name:e.display_name,access_display_name:`All models in `+e.display_name,provider_name:e.provider_name,provider_type:e.provider_type,access:e.access,override_selector:e.access.selector,is_alias:!1})}async submitVirtualModelForm(){if(this.vmFormManaged){this.vmFormError=`This virtual model is managed by configuration and cannot be edited here.`;return}let{payload:e,source:t,isRedirect:n,isRename:r}=PO(this.vmForm,this.vmFormOriginalSource,this.vmFormMode);if(!t){this.vmFormError=`Source is required.`;return}if(this.vmFormError=``,this.vmFormMode!==`edit`){let e=this.findExistingAliasByName(t),r=e?null:this.findModelOverrideView(t);if(e||r){let n=e?`A virtual model named "`+e.name+`" already exists. Saving will update that virtual model. Continue?`:`An access policy for "`+t+`" already exists. Saving will update that virtual model. Continue?`;if(!window.confirm(n)){this.vmFormError=`Choose a different source or edit the existing virtual model.`;return}}else if(n){let e=this.findConcreteModelByName(t);if(e){let t=BD(e)||String(e.model&&e.model.id||``).trim();if(!window.confirm(`A model named "`+t+`" already exists. Creating this alias will mask that model in the list. Continue?`)){this.vmFormError=`Choose a different source to avoid masking an existing model.`;return}}}}else if(r){let e=(this.aliases||[]).find(e=>e&&e.name===t)||null,r=e?null:this.findModelOverrideView(t);if(e||r){this.vmFormError=`A virtual model for "`+t+`" already exists. Choose a different source.`;return}if(n){let e=this.findConcreteModelByName(t);if(e){let t=BD(e)||String(e.model&&e.model.id||``).trim();if(!window.confirm(`A model named "`+t+`" already exists. Renaming to that name will mask the model in the list. Continue?`)){this.vmFormError=`Choose a different source to avoid masking an existing model.`;return}}}}this.vmSubmitting=!0;try{let t=await ms(`/admin/virtual-models`,`PUT`,e,{label:`virtual model`});if(t.status===503){this.virtualModelsAvailable=!1,this.vmFormError=`Virtual models feature is unavailable.`;return}if(t.stale)return;if(!t.ok){this.vmFormError=t.status===401?`Authentication required.`:ls(t,`Failed to save virtual model.`);return}let r=!n&&t.status===204;this.virtualModelsAvailable=!0,this.closeVirtualModelForm(),qs.success(n?`Alias saved.`:r?`Model access reset to inherited/default.`:`Model access saved.`),Promise.all([Oc.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to save virtual model:`,e),this.vmFormError=`Failed to save virtual model.`}finally{this.vmSubmitting=!1}}async deleteVirtualModel(){if(this.vmFormManaged){this.vmFormError=`This virtual model is managed by configuration and cannot be removed here.`;return}let e=String(this.vmForm.source||this.vmFormOriginalSource||``).trim();if(!(!e||!this.vmFormHasExisting)&&window.confirm(`Remove the virtual model for "`+e+`"? This reverts to inherited/default behavior.`)){this.vmDeleting=!0,this.vmFormError=``;try{let t=await ms(`/admin/virtual-models`,`DELETE`,{source:e},{label:`virtual model`});if(t.status===503){this.virtualModelsAvailable=!1,this.vmFormError=`Virtual models feature is unavailable.`;return}if(t.status!==404){if(t.stale)return;if(!t.ok){this.vmFormError=t.status===401?`Authentication required.`:ls(t,`Failed to remove virtual model.`);return}}this.virtualModelsAvailable=!0,this.closeVirtualModelForm(),qs.success(`Virtual model removed.`),Promise.all([Oc.fetchModels(),this.fetchVirtualModels()])}catch(e){console.error(`Failed to delete virtual model:`,e),this.vmFormError=`Failed to remove virtual model.`}finally{this.vmDeleting=!1}}}},BO=[{value:`input_per_mtok`,label:`Input $/MTok`,group:`Tokens`},{value:`output_per_mtok`,label:`Output $/MTok`,group:`Tokens`},{value:`cached_input_per_mtok`,label:`Cached input $/MTok`,group:`Tokens`},{value:`cache_write_per_mtok`,label:`Cache write $/MTok`,group:`Tokens`},{value:`reasoning_output_per_mtok`,label:`Reasoning output $/MTok`,group:`Tokens`},{value:`batch_input_per_mtok`,label:`Batch input $/MTok`,group:`Batch`},{value:`batch_output_per_mtok`,label:`Batch output $/MTok`,group:`Batch`},{value:`audio_input_per_mtok`,label:`Audio input $/MTok`,group:`Audio`},{value:`audio_output_per_mtok`,label:`Audio output $/MTok`,group:`Audio`},{value:`per_image`,label:`$/Image`,group:`Image`},{value:`input_per_image`,label:`Input $/Image`,group:`Image`},{value:`per_second_input`,label:`Input $/Second`,group:`Audio/Video`},{value:`per_second_output`,label:`Output $/Second`,group:`Video`},{value:`per_character_input`,label:`$/Character`,group:`Audio`},{value:`per_page`,label:`$/Page`,group:`Utility`},{value:`per_request`,label:`$/Request`,group:`Utility`}];function VO(e){let t=BO.find(t=>t.value===e);return t?t.label:String(e||``).replace(/_/g,` `)}function HO(e){return e&&typeof e==`object`?JSON.parse(JSON.stringify(e)):{}}function UO(e,t){let n=HO(e),r=t&&t.pricing?t.pricing:t;if(!r||typeof r!=`object`)return n;for(let e of BO)r[e.value]!==null&&r[e.value]!==void 0&&(n[e.value]=Number(r[e.value]));return Array.isArray(r.tiers)&&r.tiers.length>0&&(n.tiers=HO(r.tiers)),n}function WO(e){switch(String(e||``).trim()){case`config_yaml`:return`config.yaml`;case`model_registry`:return`Model registry`;default:return e?String(e):`Unknown`}}function GO(e){let t=e&&e.pricing?e.pricing:{},n=e&&e.pricing_sources&&typeof e.pricing_sources==`object`?e.pricing_sources:{},r={};for(let e of BO)t[e.value]!==null&&t[e.value]!==void 0&&(r[e.value]=WO(n[e.value]||`model_registry`));return r}function KO(e){let t=String(e&&e.selector||``).trim();return t?`Dashboard/API override (`+t+`)`:`Dashboard/API override`}function qO(e){let t=String(e||``).trim();return t?t+`/`:``}function JO(e){return String(e&&e.model&&e.model.id||``).trim()}function YO(e){let t=String(e&&e.provider_name||``).trim(),n=JO(e);return t&&n?t+`/`+n:n}function XO(e){return JO(e)}function ZO(e){let t=new Map;for(let n of Array.isArray(e)?e:[]){let e=String(n&&n.selector||``).trim();e&&t.set(e,n)}return t}function QO(e,t){let n=String(t||``).trim();return n&&ZO(e).get(n)||null}function $O(e,t,n){let r=ZO(e),i=YO(t),a=XO(t),o=qO(t&&t.provider_name),s=String(n||``).trim();for(let e of[i,a,o,`/`]){if(!e||e===s)continue;let t=r.get(e);if(t)return t}return null}function ek(e,t,n){let r=e&&e.model&&e.model.metadata?e.model.metadata:null,i=HO(r&&r.pricing),a=GO(r),o=$O(t,e,n),s=o&&o.pricing?o.pricing:null;if(s){let e=KO(o);for(let t of BO)s[t.value]!==null&&s[t.value]!==void 0&&(i[t.value]=Number(s[t.value]),a[t.value]=e);Array.isArray(s.tiers)&&s.tiers.length>0&&(i.tiers=HO(s.tiers),a.tiers=e)}return{pricing:i,sources:a}}function tk(e,t){let n=e&&e.pricing?e.pricing:{},r=[];for(let e of BO)n[e.value]!==null&&n[e.value]!==void 0&&r.push({id:t(),field:e.value,value:String(n[e.value])});return r}function nk(e,t){let n=new Set;for(let r of Array.isArray(e)?e:[]){if(t&&r.id===t)continue;let e=String(r.field||``).trim();e&&n.add(e)}return n}function rk(e,t){let n=nk(e,t&&t.id);return BO.filter(e=>e.value===(t&&t.field)||!n.has(e.value))}function ik(e,t){let n={},r=new Set;for(let t of Array.isArray(e)?e:[]){let e=String(t.field||``).trim();if(!e)return{error:`Choose a price type for every row.`};if(r.has(e))return{error:`Each price type can only be used once.`};r.add(e);let i=String(t.value||``).trim();if(i===``)return{error:`Enter a value for `+VO(e)+`.`};let a=Number(i);if(!Number.isFinite(a)||a<0)return{error:`Pricing values must be numbers greater than or equal to 0.`};n[e]=a}let i=Array.isArray(t)?t:[];return i.length>0&&(n.tiers=HO(i)),Object.keys(n).length===0?{error:`Add at least one pricing field before saving.`}:{pricing:n}}function ak(e,t,n){let r=e||{},i=t||{},a=n||{},o=UO(r,a);return BO.map(e=>{let t=a[e.value]!==null&&a[e.value]!==void 0,n=r[e.value]!==null&&r[e.value]!==void 0;return{field:e.value,label:e.label,value:o[e.value],source:t?`Form/API value`:n?i[e.value]||`Model registry`:`Unset`}}).filter(e=>e.source!==`Unset`||e.value!==void 0)}var ok=new class{#e=k(!0);get modelPricingOverridesAvailable(){return I(this.#e)}set modelPricingOverridesAvailable(e){A(this.#e,e,!0)}#t=k(j([]));get modelPricingOverrideViews(){return I(this.#t)}set modelPricingOverrideViews(e){A(this.#t,e,!0)}#n=k(``);get modelPricingOverrideError(){return I(this.#n)}set modelPricingOverrideError(e){A(this.#n,e,!0)}#r=k(!1);get modelPricingOverrideFormOpen(){return I(this.#r)}set modelPricingOverrideFormOpen(e){A(this.#r,e,!0)}#i=k(!1);get modelPricingOverrideSubmitting(){return I(this.#i)}set modelPricingOverrideSubmitting(e){A(this.#i,e,!0)}#a=k(!1);get modelPricingOverrideFormHasExistingOverride(){return I(this.#a)}set modelPricingOverrideFormHasExistingOverride(e){A(this.#a,e,!0)}#o=k(``);get modelPricingOverrideFormDisplayName(){return I(this.#o)}set modelPricingOverrideFormDisplayName(e){A(this.#o,e,!0)}#s=k(``);get modelPricingOverrideFormScope(){return I(this.#s)}set modelPricingOverrideFormScope(e){A(this.#s,e,!0)}#c=k(j([]));get modelPricingOverrideFormScopeOptions(){return I(this.#c)}set modelPricingOverrideFormScopeOptions(e){A(this.#c,e,!0)}#l=k(null);get modelPricingOverrideFormRow(){return I(this.#l)}set modelPricingOverrideFormRow(e){A(this.#l,e,!0)}#u=k(null);get modelPricingOverrideFormBasePricing(){return I(this.#u)}set modelPricingOverrideFormBasePricing(e){A(this.#u,e,!0)}#d=k(null);get modelPricingOverrideFormBasePricingSources(){return I(this.#d)}set modelPricingOverrideFormBasePricingSources(e){A(this.#d,e,!0)}#f=k(j([]));get modelPricingOverrideFormPreservedTiers(){return I(this.#f)}set modelPricingOverrideFormPreservedTiers(e){A(this.#f,e,!0)}#p=k(j([]));get modelPricingOverrideRows(){return I(this.#p)}set modelPricingOverrideRows(e){A(this.#p,e,!0)}#m=k(j({selector:``}));get modelPricingOverrideForm(){return I(this.#m)}set modelPricingOverrideForm(e){A(this.#m,e,!0)}_modelPricingOverrideRowID=0;pricingFieldOptions(){return BO}pricingFieldLabel(e){return VO(e)}async fetchModelPricingOverrides(){this.modelPricingOverrideError=``;try{let e=await ps(`/admin/model-pricing-overrides`,{label:`model pricing overrides`});if(e.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideViews=[];return}if(e.stale)return;if(this.modelPricingOverridesAvailable=!0,!e.ok){this.modelPricingOverrideViews=[];return}this.modelPricingOverrideViews=Array.isArray(e.data)?e.data:[]}catch(e){console.error(`Failed to fetch model pricing overrides:`,e),this.modelPricingOverrideViews=[],this.modelPricingOverrideError=`Unable to load model pricing overrides.`}}findModelPricingOverrideView(e){return QO(this.modelPricingOverrideViews,e)}hasGlobalPricingOverride(){return!!this.findModelPricingOverrideView(`/`)}hasProviderPricingOverride(e){return!!this.findModelPricingOverrideView(qO(e&&e.provider_name))}hasModelPricingOverride(e){return!!this.findModelPricingOverrideView(YO(e))}modelPricingButtonClass(e){return e?`table-action-btn-active`:``}modelPricingButtonLabel(e,t){let n=`Edit `+String(e||`model pricing`);return t?n+` (override exists)`:n}modelRowPricing(e){return ek(e,this.modelPricingOverrideViews).pricing}openGlobalPricingOverrideEdit(){this.openModelPricingOverrideForm({displayName:`All providers and models`,selector:`/`,scope:`global`,scopeOptions:[{value:`global`,label:`All providers and models`,selector:`/`}],row:null})}openProviderPricingOverrideEdit(e){let t=qO(e&&e.provider_name);t&&this.openModelPricingOverrideForm({displayName:`All models in `+(e.display_name||e.provider_name||t),selector:t,scope:`provider`,scopeOptions:[{value:`provider`,label:`Provider`,selector:t}],row:null})}openModelPricingOverrideEdit(e){if(!e||e.is_alias)return;let t=YO(e),n=XO(e),r=[{value:`exact`,label:`This provider and model`,selector:t}];n&&n!==t&&r.push({value:`model`,label:`This model across providers`,selector:n}),this.openModelPricingOverrideForm({displayName:e.display_name||t,selector:t,scope:`exact`,scopeOptions:r,row:e})}openModelPricingOverrideForm(e){let t=e||{};this.modelPricingOverrideFormOpen=!0,this.modelPricingOverrideError=``,this.modelPricingOverrideFormDisplayName=t.displayName||t.selector||`Pricing`,this.modelPricingOverrideFormScope=t.scope||``,this.modelPricingOverrideFormScopeOptions=Array.isArray(t.scopeOptions)?t.scopeOptions:[],this.modelPricingOverrideFormRow=t.row||null,this.modelPricingOverrideForm={selector:t.selector||``},this.loadModelPricingOverrideFormSelector(t.selector||``)}loadModelPricingOverrideFormSelector(e){e=String(e||``).trim();let t=this.findModelPricingOverrideView(e);this.modelPricingOverrideFormHasExistingOverride=!!t,this.modelPricingOverrideRows=tk(t,()=>this.nextModelPricingOverrideRowID()),this.modelPricingOverrideFormPreservedTiers=t&&t.pricing&&Array.isArray(t.pricing.tiers)?HO(t.pricing.tiers):[],this.modelPricingOverrideRows.length===0&&this.modelPricingOverrideFormPreservedTiers.length===0&&this.addModelPricingOverrideRow();let n=this.modelPricingOverrideFormRow,r=n?ek(n,this.modelPricingOverrideViews,e):{pricing:{},sources:{}};this.modelPricingOverrideFormBasePricing=r.pricing,this.modelPricingOverrideFormBasePricingSources=r.sources}setModelPricingOverrideScope(e){this.modelPricingOverrideFormScope=e;let t=this.modelPricingOverrideFormScopeOptions.find(t=>t.value===e);t&&(this.modelPricingOverrideForm.selector=t.selector,this.loadModelPricingOverrideFormSelector(t.selector))}nextModelPricingOverrideRowID(){return this._modelPricingOverrideRowID=(this._modelPricingOverrideRowID||0)+1,`pricing-row-`+this._modelPricingOverrideRowID}availablePricingFieldOptions(e){return rk(this.modelPricingOverrideRows,e)}addModelPricingOverrideRow(){let e=nk(this.modelPricingOverrideRows),t=BO.find(t=>!e.has(t.value))||BO[0];t&&this.modelPricingOverrideRows.push({id:this.nextModelPricingOverrideRowID(),field:t.value,value:``})}removeModelPricingOverrideRow(e){this.modelPricingOverrideRows=this.modelPricingOverrideRows.filter(t=>t.id!==e.id),this.modelPricingOverrideRows.length===0&&this.modelPricingOverrideFormPreservedTiers.length===0&&this.addModelPricingOverrideRow()}modelPricingOverridePayload(){return ik(this.modelPricingOverrideRows,this.modelPricingOverrideFormPreservedTiers)}modelPricingOverrideDraftPricing(){let e=this.modelPricingOverridePayload();return e&&e.pricing?e.pricing:{}}modelPricingEffectivePreviewRows(){return ak(this.modelPricingOverrideFormBasePricing,this.modelPricingOverrideFormBasePricingSources,this.modelPricingOverrideDraftPricing())}closeModelPricingOverrideForm(){this.modelPricingOverrideFormOpen=!1,this.modelPricingOverrideSubmitting=!1,this.modelPricingOverrideError=``,this.modelPricingOverrideFormHasExistingOverride=!1,this.modelPricingOverrideFormDisplayName=``,this.modelPricingOverrideFormScope=``,this.modelPricingOverrideFormScopeOptions=[],this.modelPricingOverrideFormRow=null,this.modelPricingOverrideFormBasePricing=null,this.modelPricingOverrideFormBasePricingSources=null,this.modelPricingOverrideFormPreservedTiers=[],this.modelPricingOverrideRows=[],this.modelPricingOverrideForm={selector:``}}async submitModelPricingOverrideForm(){let e=String(this.modelPricingOverrideForm.selector||``).trim();if(!e){this.modelPricingOverrideError=`Model pricing selector is required.`;return}let t=this.modelPricingOverridePayload();if(t.error){this.modelPricingOverrideError=t.error;return}let n={selector:e,...t};this.modelPricingOverrideSubmitting=!0,this.modelPricingOverrideError=``;try{let e=await ms(`/admin/model-pricing-overrides`,`PUT`,n,{label:`model pricing override`});if(e.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideError=`Model pricing overrides feature is unavailable.`;return}if(e.stale)return;if(!e.ok){this.modelPricingOverrideError=e.status===401?`Authentication required.`:ls(e,`Failed to save model pricing.`);return}this.modelPricingOverridesAvailable=!0,this.closeModelPricingOverrideForm(),qs.success(`Model pricing saved.`),this.fetchModelPricingOverrides()}catch(e){console.error(`Failed to save model pricing override:`,e),this.modelPricingOverrideError=`Failed to save model pricing.`}finally{this.modelPricingOverrideSubmitting=!1}}async deleteModelPricingOverride(){let e=String(this.modelPricingOverrideForm.selector||``).trim();if(!(!e||!this.modelPricingOverrideFormHasExistingOverride)&&window.confirm(`Remove the model pricing override for "`+e+`"?`)){this.modelPricingOverrideSubmitting=!0,this.modelPricingOverrideError=``;try{let t=await ms(`/admin/model-pricing-overrides`,`DELETE`,{selector:e},{label:`model pricing override`});if(t.status===503){this.modelPricingOverridesAvailable=!1,this.modelPricingOverrideError=`Model pricing overrides feature is unavailable.`;return}if(t.status!==404){if(t.stale)return;if(!t.ok){this.modelPricingOverrideError=t.status===401?`Authentication required.`:ls(t,`Failed to remove model pricing override.`);return}}this.modelPricingOverridesAvailable=!0,this.closeModelPricingOverrideForm(),qs.success(`Model pricing override removed.`),this.fetchModelPricingOverrides()}catch(e){console.error(`Failed to delete model pricing override:`,e),this.modelPricingOverrideError=`Failed to remove model pricing override.`}finally{this.modelPricingOverrideSubmitting=!1}}}},sk=R(``);function ck(e,t){E(t,!0);var n=sk();let r;var i=P(M(n),2),a=M(i,!0);T(i),T(n),F((e,i,o)=>{r=U(n,1,`alias-toggle`,null,r,e),n.disabled=zO.rowTogglingKey===t.row.key||!zO.virtualModelsAvailable,W(n,`aria-label`,i),B(a,o)},[()=>({enabled:zO.rowToggleEnabled(t.row),restricted:zO.rowToggleRestricted(t.row)}),()=>zO.rowToggleAriaLabel(t.row),()=>zO.rowToggleLabel(t.row)]),L(`click`,n,()=>zO.toggleRowEnabled(t.row)),z(e,n),D()}Hr([`click`]);var lk=R(`
        `);function uk(e,t){E(t,!0);var n=lk(),r=M(n),i=e=>{ck(e,{get row(){return zO.globalScopeRow}})};V(r,e=>{zO.virtualModelsAvailable&&e(i)});var a=P(r,2),o=e=>{{let t=O(()=>ok.modelPricingButtonLabel(`global model pricing`,ok.hasGlobalPricingOverride())),n=O(()=>ok.modelPricingButtonClass(ok.hasGlobalPricingOverride()));tT(e,{get label(){return I(t)},get class(){return`table-icon-btn ${I(n)??``}`},onclick:()=>ok.openGlobalPricingOverrideEdit(),children:(e,t)=>{G(e,{get icon(){return Wa},class:`table-icon-svg`})},$$slots:{default:!0}})}};V(a,e=>{ok.modelPricingOverridesAvailable&&e(o)});var s=P(a,2),c=e=>{{let t=O(()=>TO(`global model access`,zO.hasGlobalModelOverride())),n=O(()=>wO(zO.hasGlobalModelOverride()));tT(e,{get label(){return I(t)},get class(){return`table-icon-btn ${I(n)??``}`},onclick:()=>zO.openGlobalModelOverrideEdit(),children:(e,t)=>{G(e,{get icon(){return oo},class:`table-icon-svg`})},$$slots:{default:!0}})}};V(s,e=>{zO.virtualModelsAvailable&&e(c)}),T(n),z(e,n),D()}function dk(e){return String(e&&(e.primary_model||e.source)||``).trim()}function fk(e){return Array.isArray(e&&e.fallback_models)?e.fallback_models:Array.isArray(e&&e.targets)?e.targets:[]}function pk(e){return Array.isArray(e)?e.map(e=>({...e,source:dk(e),targets:fk(e)})):[]}function mk(e){let t=fk(e);return t.length===0?`-`:t.join(`, `)}function hk(e){return e&&e.enabled===!1?`Off`:e&&e.managed?`Config`:`On`}function gk(e,t){let n=String(t||``).trim();return n&&(Array.isArray(e)?e:[]).find(e=>dk(e)===n)||null}function _k(e,t){if(!t||t.is_alias)return!1;let n=gk(e,BD(t));return!!(n&&n.enabled!==!1&&fk(n).length>0)}function vk(e,t){return _k(e,t)?`table-action-btn-failover-active`:``}function yk(e,t){let n=`Edit failover for `+(t&&t.display_name?t.display_name:`model`);return _k(e,t)?n+` (active)`:n}function bk(e){let t=[e&&e.target_model];return(Array.isArray(e&&e.targets)?e.targets:[]).forEach(e=>t.push(e&&e.model)),t.map(e=>String(e||``).trim()).filter(Boolean)}function xk(e){let t=Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(Boolean):[];return{target_model:t[0]||``,targets:t.slice(1).map(e=>({model:e}))}}function Sk(e){return{primary_model:String(e&&e.source||``).trim(),fallback_models:bk(e),enabled:!(e&&e.enabled===!1)}}function Ck(e){return dk(e)}function wk(e){let t={};return(Array.isArray(e)?e:[]).forEach(e=>{let n=Ck(e);n&&(t[n]=!0)}),t}function Tk(e,t){let n=Ck(t);return!!(n&&e&&e[n])}function Ek(e,t){return(Array.isArray(e)?e:[]).filter(e=>Tk(t,e))}function Dk(e,t){let n=Array.isArray(e)?e:[];return n.length>0&&Ek(n,t).length===n.length}function Ok(e){return[dk(e),fk(e).join(` `)].join(` `).toLowerCase()}function kk(e,t){let n=Array.isArray(e)?e:[],r=String(t||``).trim().toLowerCase();return r?n.filter(e=>Ok(e).includes(r)):n}function Ak(e){return{primary_model:dk(e),fallback_models:fk(e).map(e=>String(e||``).trim()).filter(Boolean),enabled:!!(e&&e.enabled!==!1)}}function jk(){return{source:``,target_model:``,targets:[],enabled:!0}}var X=new class{#e=k(!0);get failoverAvailable(){return I(this.#e)}set failoverAvailable(e){A(this.#e,e,!0)}#t=k(j([]));get failoverRules(){return I(this.#t)}set failoverRules(e){A(this.#t,e,!0)}#n=k(!1);get failoverLoading(){return I(this.#n)}set failoverLoading(e){A(this.#n,e,!0)}#r=k(!1);get failoverSaving(){return I(this.#r)}set failoverSaving(e){A(this.#r,e,!0)}#i=k(!1);get failoverGenerating(){return I(this.#i)}set failoverGenerating(e){A(this.#i,e,!0)}#a=k(``);get failoverError(){return I(this.#a)}set failoverError(e){A(this.#a,e,!0)}#o=k(j([]));get failoverGeneratedRules(){return I(this.#o)}set failoverGeneratedRules(e){A(this.#o,e,!0)}#s=k(!1);get failoverDraftsOpen(){return I(this.#s)}set failoverDraftsOpen(e){A(this.#s,e,!0)}#c=k(j({}));get failoverDraftSelections(){return I(this.#c)}set failoverDraftSelections(e){A(this.#c,e,!0)}#l=k(``);get failoverDraftFilter(){return I(this.#l)}set failoverDraftFilter(e){A(this.#l,e,!0)}#u=k(!1);get failoverDraftSaving(){return I(this.#u)}set failoverDraftSaving(e){A(this.#u,e,!0)}#d=k(!1);get failoverFormOpen(){return I(this.#d)}set failoverFormOpen(e){A(this.#d,e,!0)}#f=k(`create`);get failoverFormMode(){return I(this.#f)}set failoverFormMode(e){A(this.#f,e,!0)}#p=k(!1);get failoverFormManaged(){return I(this.#p)}set failoverFormManaged(e){A(this.#p,e,!0)}#m=k(j(jk()));get failoverForm(){return I(this.#m)}set failoverForm(e){A(this.#m,e,!0)}failoverEnabled(){return vs.booleanFlag(`FAILOVER_ENABLED`,!0)}async fetchFailoverRules(){if(!this.failoverEnabled()){this.failoverAvailable=!1,this.failoverRules=[],this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!1,this.failoverError=``,this.failoverLoading=!1;return}this.failoverLoading=!0,this.failoverError=``;try{let e=await ps(`/admin/failover`,{label:`failover mappings`});if(e.status===503){this.failoverAvailable=!1,this.failoverRules=[];return}if(e.stale)return;if(this.failoverAvailable=!0,!e.ok){this.failoverRules=[];return}this.failoverRules=pk(e.data)}catch(e){console.error(`Failed to fetch failover mappings:`,e),this.failoverRules=[],this.failoverError=`Unable to load failover mappings.`}finally{this.failoverLoading=!1}}resetFailoverForm(){this.failoverFormMode=`create`,this.failoverFormManaged=!1,this.failoverForm=jk()}openFailoverCreate(){this.resetFailoverForm(),this.failoverFormOpen=!0,this.focusFailoverEditor()}openFailoverEdit(e){if(!e)return;this.resetFailoverForm(),this.failoverFormMode=`edit`,this.failoverFormOpen=!0,this.failoverFormManaged=!!e.managed;let t=this.failoverPrimaryModel(e),n=this.failoverTargets(e);this.failoverForm={source:t,target_model:n[0]||``,targets:n.slice(1).map(e=>({model:e})),enabled:e.enabled!==!1},this.focusFailoverEditor()}openFailoverForModel(e){if(!e||e.is_alias)return;let t=this.qualifiedModelName(e),n=this.failoverRules.find(e=>this.failoverPrimaryModel(e)===t);if(n){this.openFailoverEdit(n);return}this.resetFailoverForm(),this.failoverFormMode=`create`,this.failoverFormOpen=!0,this.failoverForm.source=t,this.focusFailoverEditor()}closeFailoverForm(){this.failoverFormOpen=!1}closeFailoverDraftsModal(){this.failoverDraftSaving||(this.failoverDraftsOpen=!1)}failoverFormTargets(){return bk(this.failoverForm)}setFailoverFormTargets(e){let t=xk(e);this.failoverForm.target_model=t.target_model,this.failoverForm.targets=t.targets}addFailoverTarget(){Array.isArray(this.failoverForm.targets)||(this.failoverForm.targets=[]),this.failoverForm.targets.push({model:``}),this.focusFailoverEditor()}removeFailoverTarget(e){if(!Array.isArray(this.failoverForm.targets)){this.failoverForm.targets=[];return}this.failoverForm.targets.splice(e,1)}removePrimaryFailoverTarget(){let e=Array.isArray(this.failoverForm.targets)?this.failoverForm.targets:[];if(e.length>0){let t=e.shift();this.failoverForm.target_model=t&&t.model?t.model:``,this.failoverForm.targets=e;return}this.failoverForm.target_model=``}failoverRulePayload(){return Sk(this.failoverForm)}async submitFailoverForm(){if(this.failoverSaving||this.failoverGenerating||this.failoverFormManaged)return;let e=this.failoverRulePayload();if(!e.primary_model){this.failoverError=`Primary model is required.`;return}if(e.enabled&&e.fallback_models.length===0){this.failoverError=`Add at least one failover target.`;return}this.failoverSaving=!0,this.failoverError=``;try{let t=await ms(`/admin/failover`,`PUT`,e,{label:`failover mapping`});if(t.stale)return;if(!t.ok){this.failoverError=`Failed to save failover mapping.`;return}qs.success(`Failover mapping saved.`),this.closeFailoverForm(),this.fetchFailoverRules()}catch(e){console.error(`Failed to save failover mapping:`,e),this.failoverError=`Failed to save failover mapping.`}finally{this.failoverSaving=!1}}async deleteFailoverRule(e){let t=String(e&&this.failoverPrimaryModel(e)||this.failoverForm.source||``).trim();if(!(!t||this.failoverSaving||this.failoverGenerating)&&confirm(`Remove failover mapping for "`+t+`"?`)){this.failoverSaving=!0,this.failoverError=``;try{let e=await ms(`/admin/failover`,`DELETE`,{primary_model:t},{label:`failover mapping`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to remove failover mapping.`;return}qs.success(`Failover mapping removed.`),this.closeFailoverForm(),this.fetchFailoverRules()}catch(e){console.error(`Failed to remove failover mapping:`,e),this.failoverError=`Failed to remove failover mapping.`}finally{this.failoverSaving=!1}}}async generateFailoverForForm(){if(this.failoverGenerating||this.failoverSaving||this.failoverFormManaged)return;let e=String(this.failoverForm.source||``).trim();if(!e){this.failoverError=`Primary model is required.`;return}this.failoverGenerating=!0,this.failoverError=``;try{let t=await ms(`/admin/failover/generate`,`POST`,{primary_model:e},{label:`failover generation`});if(t.stale)return;if(!t.ok){this.failoverError=`Failed to generate failover mapping.`;return}let n=pk(t.data),r=n.find(t=>this.failoverPrimaryModel(t)===e)||n[0]||null,i=this.failoverTargets(r);if(i.length===0){this.failoverError=`No failover suggestions were generated for this model.`;return}this.setFailoverFormTargets(i),qs.success(`Generated `+i.length+` fallback model`+(i.length===1?`.`:`s.`)),this.focusFailoverEditor()}catch(e){console.error(`Failed to generate failover mapping:`,e),this.failoverError=`Failed to generate failover mapping.`}finally{this.failoverGenerating=!1}}openFailoverResetDialog(){Ms.open({title:`Remove failover models`,titleId:`failoverResetDialogTitle`,inputId:`failover-reset-confirmation`,message:`Remove every dashboard-managed failover mapping. Configuration-managed mappings remain active.`,requiredText:`remove`,confirmLabel:`Remove Failover`,icon:Eo,dialogClass:`budget-reset-dialog`,onConfirm:async()=>{await this.resetFailoverRules(),this.failoverError&&(Ms.error=this.failoverError)}})}async resetFailoverRules(){if(!this.failoverSaving){this.failoverSaving=!0,this.failoverError=``;try{let e=await ms(`/admin/failover/reset`,`POST`,void 0,{label:`failover removal`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to remove failover mappings.`;return}this.failoverRules=pk(e.data),this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!1,qs.success(`Dashboard-managed failover mappings removed.`),Ms.close()}catch(e){console.error(`Failed to remove failover mappings:`,e),this.failoverError=`Failed to remove failover mappings.`}finally{this.failoverSaving=!1}}}async generateFailoverRules(){if(!(this.failoverGenerating||this.failoverDraftSaving)){this.failoverGenerating=!0,this.failoverError=``,this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.failoverDraftsOpen=!0;try{let e=await ms(`/admin/failover/generate`,`POST`,void 0,{label:`failover generation`});if(e.stale)return;if(!e.ok){this.failoverError=`Failed to generate failover mappings.`;return}this.failoverGeneratedRules=pk(e.data),this.selectAllFailoverDrafts(this.failoverGeneratedRules)}catch(e){console.error(`Failed to generate failover mappings:`,e),this.failoverError=`Failed to generate failover mappings.`}finally{this.failoverGenerating=!1}}}failoverDraftKey(e){return Ck(e)}selectAllFailoverDrafts(e){this.failoverDraftSelections=wk(e)}failoverDraftSelected(e){return Tk(this.failoverDraftSelections,e)}setFailoverDraftSelected(e,t){let n=this.failoverDraftKey(e);n&&(this.failoverDraftSelections={...this.failoverDraftSelections,[n]:!!t})}selectedFailoverDrafts(){return Ek(this.failoverGeneratedRules,this.failoverDraftSelections)}selectedFailoverDraftCount(){return this.selectedFailoverDrafts().length}failoverDraftCountLabel(){return this.selectedFailoverDraftCount()+` / `+this.failoverGeneratedRules.length+` selected`}allFailoverDraftsSelected(){return Dk(this.failoverGeneratedRules,this.failoverDraftSelections)}toggleAllFailoverDrafts(){if(!(this.failoverDraftSaving||this.failoverGenerating||this.failoverGeneratedRules.length===0)){if(this.allFailoverDraftsSelected()){this.failoverDraftSelections={};return}this.selectAllFailoverDrafts(this.failoverGeneratedRules)}}failoverDraftSearchText(e){return Ok(e)}filteredFailoverDrafts(){return kk(this.failoverGeneratedRules,this.failoverDraftFilter)}failoverDraftPayload(e){return Ak(e)}async saveSelectedFailoverDrafts(){if(this.failoverDraftSaving||this.failoverGenerating)return;let e=this.selectedFailoverDrafts();if(e.length===0){this.failoverError=`Select at least one failover draft.`;return}this.failoverDraftSaving=!0,this.failoverError=``;try{for(let t of e){let e=this.failoverDraftPayload(t);if(!e.primary_model||e.fallback_models.length===0){this.failoverError=`Generated failover draft is missing model data.`;return}let n=await ms(`/admin/failover`,`PUT`,e,{label:`failover mapping`});if(n.stale)return;if(!n.ok){this.failoverError=`Failed to save failover mapping.`;return}}qs.success(`Saved `+e.length+` failover mapping`+(e.length===1?`.`:`s.`)),this.failoverDraftsOpen=!1,this.failoverGeneratedRules=[],this.failoverDraftSelections={},this.failoverDraftFilter=``,this.fetchFailoverRules()}catch(e){console.error(`Failed to save generated failover mappings:`,e),this.failoverError=`Failed to save failover mappings.`}finally{this.failoverDraftSaving=!1}}focusFailoverEditor(){setTimeout(()=>{let e=document.querySelector(`[data-failover-editor]`),t=e&&e.querySelector?e.querySelector(`[data-modal-autofocus], input:not([disabled]), textarea:not([disabled]), button:not([disabled])`):null;t&&typeof t.focus==`function`&&t.focus({preventScroll:!0})},0)}failoverTargetLabel(e){return mk(e)}failoverPrimaryModel(e){return dk(e)}failoverTargets(e){return fk(e)}findFailoverMapping(e){return gk(this.failoverRules,e)}hasActiveFailoverMapping(e){return _k(this.failoverRules,e)}failoverButtonClass(e){return vk(this.failoverRules,e)}failoverButtonLabel(e){return yk(this.failoverRules,e)}normalizeFailoverRules(e){return pk(e)}failoverRuleStatus(e){return hk(e)}qualifiedModelName(e){return BD(e)}},Mk=R(``),Nk=R(``),Pk=R(`Config`),Fk=R(`
        Targets
        `),Ik=R(``),Lk=R(`
        Redirects to
        `),Rk=R(` `),zk=R(`
        `),Bk=R(`
        `),Vk=R(`
        `);function Hk(e,t){E(t,!0);let n=O(()=>ok.modelRowPricing(t.row));var r=Vk(),i=M(r),a=M(i),o=M(a),s=M(o),c=M(s,!0);T(s);var l=P(s,2),u=e=>{z(e,Mk())};V(l,e=>{t.row.is_alias&&e(u)});var d=P(l,2),f=e=>{z(e,Nk())};V(d,e=>{!t.row.is_alias&&t.row.masking_alias&&e(f)});var p=P(d,2),m=e=>{z(e,Pk())},h=O(()=>SO(t.row));V(p,e=>{I(h)&&e(m)}),T(o);var g=P(o,2),_=e=>{var n=Fk(),r=P(M(n)),i=M(r,!0);T(r),T(n),F(()=>B(i,t.row.secondary_name)),z(e,n)};V(g,e=>{t.row.is_alias&&e(_)});var v=P(g,2),y=e=>{var n=Lk(),r=P(M(n)),i=M(r,!0);T(r);var a=P(r,2),o=e=>{var n=Ik();F(e=>{W(n,`aria-label`,zO.rowDeletingKey===t.row.key?`Removing redirect for `+t.row.display_name:`Remove redirect for `+t.row.display_name),W(n,`title`,zO.rowDeletingKey===t.row.key?`Removing redirect for `+t.row.display_name:`Remove redirect for `+t.row.display_name),n.disabled=e},[()=>!!zO.rowDeletingKey]),L(`click`,n,()=>zO.removeRedirectRow(t.row)),z(e,n)},s=O(()=>zO.virtualModelsAvailable&&bO(t.row));V(a,e=>{I(s)&&e(o)}),T(n),F(e=>B(i,e),[()=>$D(t.row.masking_alias)]),z(e,n)};V(v,e=>{!t.row.is_alias&&t.row.masking_alias&&e(y)}),T(a),T(i);var b=P(i);H(b,17,()=>t.columns,oi,(e,r)=>{var i=Rk(),a=M(i,!0);T(i),F(e=>{U(i,1,Fi(I(r).class),`svelte-1iynym`),B(a,e)},[()=>I(r).value(t.row,I(n))]),z(e,i)});var x=P(b),S=M(x),C=e=>{var n=zk(),r=M(n);ck(r,{get row(){return t.row}});var i=P(r,2),a=e=>{{let n=O(()=>zO.rowDeletingKey===t.row.key?`Removing alias `+t.row.alias.name:`Remove alias `+t.row.alias.name),r=O(()=>!!zO.rowDeletingKey);tT(e,{get label(){return I(n)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>zO.removeAliasRow(t.row),get disabled(){return I(r)},children:(e,t)=>{G(e,{get icon(){return Eo},class:`table-icon-svg`})},$$slots:{default:!0}})}},o=O(()=>zO.virtualModelsAvailable&&yO(t.row));V(i,e=>{I(o)&&e(a)});var s=P(i,2),c=e=>{{let n=O(()=>`Edit alias `+t.row.alias.name);tT(e,{get label(){return I(n)},class:`table-icon-btn table-action-btn-active`,onclick:()=>zO.openVirtualModelEditAlias(t.row.alias),children:(e,t)=>{G(e,{get icon(){return oo},class:`table-icon-svg`})},$$slots:{default:!0}})}};V(s,e=>{zO.virtualModelsAvailable&&e(c)}),T(n),z(e,n)},w=e=>{var n=Bk(),r=M(n);ck(r,{get row(){return t.row}});var i=P(r,2),a=e=>{{let n=O(()=>ok.modelPricingButtonLabel(`model pricing for `+t.row.display_name,ok.hasModelPricingOverride(t.row))),r=O(()=>ok.modelPricingButtonClass(ok.hasModelPricingOverride(t.row)));tT(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>ok.openModelPricingOverrideEdit(t.row),children:(e,t)=>{G(e,{get icon(){return Wa},class:`table-icon-svg`})},$$slots:{default:!0}})}};V(i,e=>{ok.modelPricingOverridesAvailable&&e(a)});var o=P(i,2),s=e=>{{let n=O(()=>X.failoverButtonLabel(t.row)),r=O(()=>X.failoverButtonClass(t.row));tT(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>X.openFailoverForModel(t.row),children:(e,t)=>{G(e,{get icon(){return So},class:`table-icon-svg`})},$$slots:{default:!0}})}},c=O(()=>X.failoverAvailable&&X.failoverEnabled());V(o,e=>{I(c)&&e(s)});var l=P(o,2),u=e=>{{let n=O(()=>Y.rateLimitGaugeTitle(t.row.display_name,Y.rateLimitGaugeClassForModel(t.row))),r=O(()=>Y.rateLimitGaugeClassForModel(t.row));tT(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>Y.openRateLimitInspectorForModel(t.row),children:(e,t)=>{G(e,{get icon(){return Xa},class:`table-icon-svg`})},$$slots:{default:!0}})}},d=O(()=>Y.rateLimitsEnabled()&&Y.rateLimitInspectorModelID(t.row));V(l,e=>{I(d)&&e(u)});var f=P(l,2),p=e=>{{let n=O(()=>`Edit redirect for `+t.row.display_name);tT(e,{get label(){return I(n)},class:`table-icon-btn table-action-btn-active`,onclick:()=>zO.openVirtualModelEditAlias(t.row.masking_alias),children:(e,t)=>{G(e,{get icon(){return oo},class:`table-icon-svg`})},$$slots:{default:!0}})}};V(f,e=>{zO.virtualModelsAvailable&&t.row.masking_alias&&t.row.masking_alias.name&&e(p)});var m=P(f,2),h=e=>{{let n=O(()=>TO(`model access for `+t.row.display_name,CO(t.row.access))),r=O(()=>wO(CO(t.row.access)));tT(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>zO.openVirtualModelEditModel(t.row),children:(e,t)=>{G(e,{get icon(){return oo},class:`table-icon-svg`})},$$slots:{default:!0}})}};V(m,e=>{zO.virtualModelsAvailable&&!t.row.masking_alias&&e(h)}),T(n),z(e,n)};V(S,e=>{t.row.is_alias?e(C):e(w,-1)}),T(x),T(r),F((e,n)=>{W(r,`id`,e),U(r,1,n,`svelte-1iynym`),B(c,t.row.display_name)},[()=>xO(t.row)||void 0,()=>Fi(vO(t.row))]),z(e,r),D()}Hr([`click`]);var Uk={headerLines:[`Modes`],value:e=>(e.model?.metadata?.modes??[]).join(`, `)||`-`};function Wk(e,t){return{headerLines:e,class:`col-price`,value:t}}var Gk=Wk([`Input / Output ($/MTok)`],(e,t)=>rc(t?.input_per_mtok)+` / `+rc(t?.output_per_mtok)),Kk={all:[Uk,Gk],text_generation:[Uk,Gk,Wk([`Cached $/MTok`],(e,t)=>rc(t?.cached_input_per_mtok))],embedding:[Wk([`Input`,`$/MTok`],(e,t)=>rc(t?.input_per_mtok))],image:[Wk([`$/Image`],(e,t)=>ic(t?.per_image))],audio:[Wk([`$/Second`],(e,t)=>ic(t?.per_second_input)),Wk([`$/Character`],(e,t)=>ic(t?.per_character_input))],video:[Wk([`$/Second (In)`],(e,t)=>ic(t?.per_second_input)),Wk([`$/Second (Out)`],(e,t)=>ic(t?.per_second_output))],utility:[Wk([`$/Page`],(e,t)=>ic(t?.per_page)),Wk([`$/Request`],(e,t)=>ic(t?.per_request))]};function qk(e){return Kk[e]||Kk.all}function Jk(e){return qk(e).length+2}var Yk=R(`
        `),Xk=R(` `,1),Zk=R(``),Qk=R(` `),$k=R(` `),eA=R(`
        `),tA=R(`
        `),nA=R(`
        Model
        `);function rA(e,t){E(t,!0);let n=O(()=>Oc.activeCategory||`all`),r=O(()=>qk(I(n))),i=O(()=>Jk(I(n)));var a=nA(),o=M(a),s=M(o),c=M(s),l=P(M(c));H(l,17,()=>I(r),oi,(e,t)=>{var n=Zk();H(n,21,()=>I(t).headerLines,oi,(e,t,n)=>{var r=Xk(),i=N(r),a=e=>{z(e,Yk())};V(i,e=>{n>0&&e(a)});var o=P(i,1,!0);F(()=>B(o,I(t))),z(e,r)}),T(n),F(()=>U(n,1,Fi(I(t).class),`svelte-1911hy6`)),z(e,n)});var u=P(l);uk(M(u),{}),T(u),T(c),T(s),H(P(s),17,()=>zO.filteredDisplayModelGroups,e=>e.key,(e,t)=>{var n=tA(),a=M(n),o=M(a),s=M(o),c=M(s),l=M(c),u=M(l),d=M(u,!0);T(u);var f=P(u,2),p=e=>{var n=Qk(),r=M(n,!0);T(n),F(()=>B(r,`(`+I(t).type_label+`)`)),z(e,n)};V(f,e=>{I(t).type_label&&e(p)});var m=P(f,2),h=e=>{var n=$k(),r=M(n,!0);T(n),F(()=>B(r,I(t).item_count_label)),z(e,n)};V(m,e=>{I(t).item_count_label&&e(h)}),T(l);var g=P(l,2),_=e=>{var n=eA(),r=M(n,!0);T(n),F(()=>B(r,I(t).access_summary)),z(e,n)};V(g,e=>{I(t).access_summary&&e(_)}),T(c);var v=P(c,2),y=M(v),b=e=>{ck(e,{get row(){return I(t)}})};V(y,e=>{I(t).access.selector&&e(b)});var x=P(y,2),S=e=>{{let n=O(()=>ok.modelPricingButtonLabel(`provider pricing for `+I(t).display_name,ok.hasProviderPricingOverride(I(t)))),r=O(()=>ok.modelPricingButtonClass(ok.hasProviderPricingOverride(I(t))));tT(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>ok.openProviderPricingOverrideEdit(I(t)),children:(e,t)=>{G(e,{get icon(){return Wa},class:`table-icon-svg`})},$$slots:{default:!0}})}};V(x,e=>{ok.modelPricingOverridesAvailable&&I(t).provider_name&&e(S)});var C=P(x,2),w=e=>{{let n=O(()=>Y.rateLimitGaugeTitle(`provider `+I(t).display_name,Y.rateLimitGaugeClassForProvider(I(t)))),r=O(()=>Y.rateLimitGaugeClassForProvider(I(t)));tT(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>Y.openRateLimitInspectorForProvider(I(t)),children:(e,t)=>{G(e,{get icon(){return Xa},class:`table-icon-svg`})},$$slots:{default:!0}})}},ee=O(()=>Y.rateLimitsEnabled()&&I(t).provider_name);V(C,e=>{I(ee)&&e(w)});var te=P(C,2),ne=e=>{{let n=O(()=>TO(`provider access for `+I(t).display_name,CO(I(t).access))),r=O(()=>wO(CO(I(t).access)));tT(e,{get label(){return I(n)},get class(){return`table-icon-btn ${I(r)??``}`},onclick:()=>zO.openProviderOverrideEdit(I(t)),children:(e,t)=>{G(e,{get icon(){return oo},class:`table-icon-svg`})},$$slots:{default:!0}})}};V(te,e=>{zO.virtualModelsAvailable&&I(t).access.selector&&e(ne)}),T(v),T(s),T(o),T(a),H(P(a),17,()=>I(t).rows,e=>e.key,(e,t)=>{Hk(e,{get row(){return I(t)},get columns(){return I(r)}})}),T(n),F(()=>{W(o,`colspan`,I(i)),B(d,I(t).display_name)}),z(e,n)}),T(o),T(a),z(e,a),D()}var iA=R(``);function aA(e,t){let n=ya(t,`enabled`,3,!1),r=ya(t,`label`,3,``),i=ya(t,`disabled`,3,!1),a=ya(t,`restricted`,3,!1);var o=iA();let s;var c=P(M(o),2),l=M(c,!0);T(c),T(o),F(()=>{s=U(o,1,`alias-toggle`,null,s,{enabled:n(),restricted:a()}),o.disabled=i(),W(o,`aria-label`,(n()?`Disable `:`Enable `)+r()),B(l,t.text??(n()?`Enabled`:`Disabled`))}),L(`click`,o,function(...e){t.onclick?.apply(this,e)}),z(e,o)}Hr([`click`]);var oA=R(``),sA=R(`
        `);function cA(e,t){E(t,!0);let n=ya(t,`model`,15,``),r=ya(t,`weight`,15),i=ya(t,`id`,3,void 0),a=ya(t,`placeholder`,3,`openai/gpt-4o`),o=ya(t,`showRemove`,3,!0);var s=sA(),c=M(s);na(c);var l=P(c,2),u=e=>{var t=oA();na(t),F(()=>t.disabled=zO.vmFormManaged),da(t,r),z(e,t)},d=O(()=>zO.vmFormShowWeights());V(l,e=>{I(d)&&e(u)});var f=P(l,2),p=e=>{tT(e,{label:`Remove target`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,get onclick(){return t.onremove},get disabled(){return zO.vmFormManaged},children:(e,t)=>{G(e,{get icon(){return Eo},class:`table-icon-svg`})},$$slots:{default:!0}})};V(f,e=>{o()&&e(p)}),T(s),F(()=>{W(c,`id`,i()),W(c,`placeholder`,a()),c.disabled=zO.vmFormManaged}),da(c,n),z(e,s),D()}var lA=R(`

        `),uA=R(`adaptive lets the registered routing extension pick the target per + request.`,1),dA=R(`Add one target to make this a redirect/alias, or two or more to load + balance across them, then pick a strategy: round_robin rotates across targets + (weight biases the share) and cost always routes to the cheapest available + target. Leave Targets empty to make it only an access policy on the Source selector. The selector uses / for all providers and + models, for one provider, or for one model. user_paths is + matched against the effective request user_path: the managed API key user_path when present, otherwise the configured user path request header.`,1),fA=R(``),pA=R(`

        This virtual model is defined in configuration (config.yaml / VIRTUAL_MODELS) and is read-only here. Edit your configuration to change it.

        `),mA=R(``),hA=R(``),gA=R(``),_A=R(`
        `,1),vA=R(``),yA=R(`Use / to allow every user path. Use a team path to restrict to that + subtree, or an unused path to make the selector unavailable.`,1),bA=R(``),xA=R(` `),SA=R(`
        Targets
        `,1);function CA(e,t){E(t,!0);let n=zO;An(()=>{n.vmFormOpen&&vs.ensureLoaded()});{let t=e=>{BS(e,{copyId:`virtual-model-help-copy`,label:`virtual model help`,get open(){return n.vmFormHelpOpen},set open(e){n.vmFormHelpOpen=e},title:e=>{var t=lA(),r=M(t,!0);T(t),F(()=>B(r,n.vmFormDisplayName||n.vmForm.source||`Virtual model`)),z(e,t)},help:e=>{Ue();var t=dA(),n=P(N(t),7),r=e=>{var t=uA();Ue(),z(e,t)},i=O(()=>vs.virtualModelStrategies().includes(`adaptive`));V(n,e=>{I(i)&&e(r)});var a=P(n,8);a.textContent=`{provider_name}/`;var o=P(a,2);o.textContent=`{provider_name}/{model}`,Ue(7),z(e,t)},$$slots:{title:!0,help:!0}})},r=e=>{var t=Qr(),r=N(t),i=e=>{var t=fA();F(()=>t.disabled=n.vmDeleting||n.vmSubmitting),L(`click`,t,()=>n.deleteVirtualModel()),z(e,t)};V(r,e=>{n.vmFormHasExisting&&!n.vmFormManaged&&e(i)}),z(e,t)},i=O(()=>n.vmDeleting||n.vmFormManaged),a=O(()=>n.vmFormMode===`edit`?`Save`:`Create`),o=O(()=>n.vmFormMode===`edit`?po:co);aE(e,{get open(){return n.vmFormOpen},ariaLabel:`Virtual model editor`,get error(){return n.vmFormError},get submitting(){return n.vmSubmitting},get submitDisabled(){return I(i)},get submitLabel(){return I(a)},get submitIcon(){return I(o)},onclose:()=>n.closeVirtualModelForm(),onsubmit:()=>n.submitVirtualModelForm(),header:t,extraActions:r,children:(e,t)=>{var r=SA(),i=N(r),a=e=>{z(e,pA())};V(i,e=>{n.vmFormManaged&&e(a)});var o=P(i,2);sE(o,{id:`virtual-model-source`,label:`Source`,children:(e,t)=>{var r=mA();na(r),F(()=>r.disabled=n.vmFormSourceLocked||n.vmFormManaged),da(r,()=>n.vmForm.source,e=>n.vmForm.source=e),z(e,r)},$$slots:{default:!0}});var s=P(o,2);H(s,21,()=>Oc.models,e=>BD(e),(e,t)=>{var n=hA(),r=M(n,!0);T(n);var i={};F((e,t)=>{B(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>BD(I(t)),()=>BD(I(t))]),z(e,n)}),T(s);var c=P(s,2),l=P(M(c),2);{let e=O(()=>n.vmFormHasPrimaryTarget());cA(l,{id:`virtual-model-target`,get showRemove(){return I(e)},onremove:()=>n.removePrimaryTarget(),get model(){return n.vmForm.target_model},set model(e){n.vmForm.target_model=e},get weight(){return n.vmForm.target_weight},set weight(e){n.vmForm.target_weight=e}})}var u=P(l,2);H(u,17,()=>n.vmForm.targets,oi,(e,t,r)=>{cA(e,{placeholder:`groq/llama`,onremove:()=>n.removeVmTarget(r),get model(){return I(t).model},set model(e){I(t).model=e},get weight(){return I(t).weight},set weight(e){I(t).weight=e}})});var d=P(u,2),f=M(d);G(M(f),{get icon(){return co},class:`form-action-icon`}),Ue(2),T(f),T(d),T(c);var p=P(c,2),m=e=>{var t=_A(),r=N(t);sE(r,{id:`virtual-model-strategy`,label:`Load-balancing strategy`,children:(e,t)=>{var r=gA();H(r,21,()=>n.vmStrategyOptions(),e=>e.value,(e,t)=>{var n=hA(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(r),F(()=>r.disabled=n.vmFormManaged),Gi(r,()=>n.vmForm.strategy,e=>n.vmForm.strategy=e),z(e,r)},$$slots:{default:!0}});var i=P(r,2),a=M(i),o=M(a);na(o),Ue(2),T(a),T(i),F(()=>o.disabled=n.vmFormManaged),fa(o,()=>n.vmForm.session_affinity,e=>n.vmForm.session_affinity=e),z(e,t)},h=O(()=>n.vmFormShowStrategy());V(p,e=>{I(h)&&e(m)});var g=P(p,2),_=M(g);BS(_,{copyId:`virtual-model-user-paths-help`,label:`user paths help`,get open(){return n.vmFormUserPathsHelpOpen},set open(e){n.vmFormUserPathsHelpOpen=e},title:e=>{z(e,vA())},help:e=>{Ue();var t=yA();Ue(2),z(e,t)},$$slots:{title:!0,help:!0}});var v=P(_,2);ft(v),W(v,`placeholder`,`/ +/team/alpha +/non-existing`),T(g);var y=P(g,2);sE(y,{id:`virtual-model-description`,label:`Description`,children:(e,t)=>{var r=bA();ft(r),F(()=>r.disabled=n.vmFormManaged),da(r,()=>n.vmForm.description,e=>n.vmForm.description=e),z(e,r)},$$slots:{default:!0}});var b=P(y,2),x=M(b),S=e=>{var t=xA(),r=M(t,!0);T(t),F(()=>B(r,`Default enabled: `+(n.vmFormDefaultEnabled?`yes`:`no`)+` · Effective now: `+(n.vmFormEffectiveEnabled?`yes`:`no`))),z(e,t)};V(x,e=>{n.vmFormMode===`edit`&&e(S)});var C=P(x,2),w=M(C);{let e=O(()=>n.vmFormToggleRestricted()),t=O(()=>n.vmFormToggleLabel());aA(w,{get enabled(){return n.vmForm.enabled},get restricted(){return I(e)},label:`virtual model`,get disabled(){return n.vmFormManaged},get text(){return I(t)},onclick:()=>{n.vmFormManaged||(n.vmForm.enabled=!n.vmForm.enabled)}})}T(C),T(b),F(()=>{f.disabled=n.vmFormManaged,v.disabled=n.vmFormManaged}),L(`click`,f,()=>n.addVmTarget()),da(v,()=>n.vmForm.user_paths,e=>n.vmForm.user_paths=e),z(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}})}D()}Hr([`click`]);var wA=R(`

        Pricing override

        `,1),TA=R(``),EA=R(``),DA=R(``),OA=R(``),kA=R(`
        `),AA=R(`
        Tiered pricing exists for this override and will be preserved. Tier editing can be added + without a database migration.
        `),jA=R(`
        No pricing fields set.
        `),MA=R(`
        `),NA=R(`

        Currency is USD. Saved fields override model registry and config.yaml pricing for this + selector; unset fields continue to inherit.

        Price Type USD Source
        `,1);function PA(e,t){E(t,!0);let n=ok;aE(e,{get open(){return n.modelPricingOverrideFormOpen},ariaLabel:`Model pricing editor`,dialogClass:`model-pricing-editor`,get error(){return n.modelPricingOverrideError},get submitting(){return n.modelPricingOverrideSubmitting},submitLabel:`Save Pricing`,onclose:()=>n.closeModelPricingOverrideForm(),onsubmit:()=>n.submitModelPricingOverrideForm(),header:e=>{var t=wA(),r=P(N(t),2),i=M(r,!0);T(r),F(()=>B(i,n.modelPricingOverrideFormDisplayName||n.modelPricingOverrideForm.selector||`Pricing`)),z(e,t)},extraActions:e=>{var t=Qr(),r=N(t),i=e=>{var t=TA();F(()=>t.disabled=n.modelPricingOverrideSubmitting),L(`click`,t,()=>n.deleteModelPricingOverride()),z(e,t)};V(r,e=>{n.modelPricingOverrideFormHasExistingOverride&&e(i)}),z(e,t)},children:(e,t)=>{var r=NA(),i=N(r),a=M(i);sE(a,{id:`model-pricing-override-selector`,label:`Selector`,children:(e,t)=>{var r=EA();na(r),da(r,()=>n.modelPricingOverrideForm.selector,e=>n.modelPricingOverrideForm.selector=e),z(e,r)},$$slots:{default:!0}});var o=P(a,2),s=e=>{sE(e,{id:`model-pricing-override-scope`,label:`Scope`,children:(e,t)=>{var r=OA();H(r,21,()=>n.modelPricingOverrideFormScopeOptions,e=>e.value,(e,t)=>{var n=DA(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(r),L(`change`,r,()=>n.setModelPricingOverrideScope(n.modelPricingOverrideFormScope)),Gi(r,()=>n.modelPricingOverrideFormScope,e=>n.modelPricingOverrideFormScope=e),z(e,r)},$$slots:{default:!0}})};V(o,e=>{n.modelPricingOverrideFormScopeOptions.length>1&&e(s)}),T(i);var c=P(i,4);H(c,21,()=>n.modelPricingOverrideRows,e=>e.id,(e,t,r)=>{var i=kA(),a=M(i),o=M(a),s=P(o,2);H(s,21,()=>n.availablePricingFieldOptions(I(t)),e=>e.value,(e,t)=>{var n=DA(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).group+` - `+I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(s),T(a);var c=P(a,2),l=M(c),u=P(l,2);na(u),T(c);var d=P(c,2);{let e=O(()=>`Remove `+n.pricingFieldLabel(I(t).field));tT(d,{get label(){return I(e)},class:`table-action-btn-danger table-icon-btn pricing-override-remove-row`,onclick:()=>n.removeModelPricingOverrideRow(I(t)),children:(e,t)=>{G(e,{get icon(){return Mo},class:`table-icon-svg`})},$$slots:{default:!0}})}T(i),F(()=>{W(o,`for`,`pricing-type-`+I(t).id),W(s,`id`,`pricing-type-`+I(t).id),W(l,`for`,`pricing-value-`+I(t).id),W(u,`id`,`pricing-value-`+I(t).id)}),Gi(s,()=>I(t).field,e=>I(t).field=e),da(u,()=>I(t).value,e=>I(t).value=e),z(e,i)}),T(c);var l=P(c,2),u=M(l);G(M(u),{get icon(){return co},class:`form-action-icon`}),Ue(2),T(u),T(l);var d=P(l,2),f=e=>{z(e,AA())};V(d,e=>{n.modelPricingOverrideFormPreservedTiers.length>0&&e(f)});var p=P(d,2),m=P(M(p),2),h=e=>{z(e,jA())},g=O(()=>n.modelPricingEffectivePreviewRows().length===0);V(m,e=>{I(g)&&e(h)}),H(P(m,2),17,()=>n.modelPricingEffectivePreviewRows(),e=>e.field,(e,t)=>{var n=MA(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=M(a,!0);T(a);var s=P(a,2),c=M(s,!0);T(s),T(n),F(e=>{B(i,I(t).label),B(o,e),B(c,I(t).source)},[()=>I(t).value===null||I(t).value===void 0?`-`:ic(Number(I(t).value))]),z(e,n)}),T(p),L(`click`,u,()=>n.addModelPricingOverrideRow()),z(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}}),D()}Hr([`click`,`change`]);var FA=R(`

        Failover mapping

        `,1),IA=R(``),LA=R(`

        This failover mapping is defined in configuration and is read-only here.

        `),RA=R(``),zA=R(`
        `),BA=R(`
        `,1),VA=R(`
        `);function HA(e,t){E(t,!0);{let t=e=>{var t=FA(),n=P(N(t),2),r=M(n,!0);T(n),F(()=>B(r,X.failoverForm.source||`Failover`)),z(e,t)},n=e=>{var t=Qr(),n=N(t),r=e=>{var t=IA();F(()=>t.disabled=X.failoverSaving||X.failoverGenerating),L(`click`,t,()=>X.deleteFailoverRule()),z(e,t)};V(n,e=>{X.failoverFormMode===`edit`&&!X.failoverFormManaged&&e(r)}),z(e,t)},r=O(()=>X.failoverGenerating||X.failoverFormManaged);aE(e,{get open(){return X.failoverFormOpen},ariaLabel:`Failover editor`,get error(){return X.failoverError},get submitting(){return X.failoverSaving},get submitDisabled(){return I(r)},submitLabel:`Save`,onclose:()=>X.closeFailoverForm(),onsubmit:()=>X.submitFailoverForm(),header:t,extraActions:n,children:(e,t)=>{var n=VA(),r=M(n),i=e=>{z(e,LA())};V(r,e=>{X.failoverFormManaged&&e(i)});var a=P(r,2);H(a,21,()=>Oc.models,oi,(e,t)=>{var n=RA(),r=M(n,!0);T(n);var i={};F((e,t)=>{B(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>BD(I(t)),()=>BD(I(t))]),z(e,n)}),T(a);var o=P(a,2);sE(o,{id:`failover-target`,label:`Fallback models`,children:(e,t)=>{var n=BA(),r=N(n),i=M(r),a=M(i);na(a);var o=P(a,2),s=e=>{tT(e,{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>X.removePrimaryFailoverTarget(),get disabled(){return X.failoverFormManaged},children:(e,t)=>{G(e,{get icon(){return Eo},class:`table-icon-svg`})},$$slots:{default:!0}})};V(o,e=>{X.failoverForm.target_model&&e(s)}),T(i),H(P(i,2),17,()=>X.failoverForm.targets,oi,(e,t,n)=>{var r=zA(),i=M(r);na(i),tT(P(i,2),{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>X.removeFailoverTarget(n),get disabled(){return X.failoverFormManaged},children:(e,t)=>{G(e,{get icon(){return Eo},class:`table-icon-svg`})},$$slots:{default:!0}}),T(r),F(()=>i.disabled=X.failoverFormManaged),da(i,()=>I(t).model,e=>I(t).model=e),z(e,r)}),T(r);var c=P(r,2),l=M(c);G(M(l),{get icon(){return co},class:`form-action-icon`}),Ue(2),T(l);var u=P(l,2),d=M(u);G(d,{get icon(){return Ao},class:`form-action-icon`});var f=P(d,2),p=M(f,!0);T(f),T(u),T(c),F(e=>{a.disabled=X.failoverFormManaged,l.disabled=X.failoverFormManaged||X.failoverGenerating||X.failoverSaving,u.disabled=e,B(p,X.failoverGenerating?`Generating...`:`Generate automatically`)},[()=>X.failoverFormManaged||X.failoverGenerating||X.failoverSaving||!X.failoverEnabled()]),da(a,()=>X.failoverForm.target_model,e=>X.failoverForm.target_model=e),L(`click`,l,()=>X.addFailoverTarget()),L(`click`,u,()=>X.generateFailoverForForm()),z(e,n)},$$slots:{default:!0}});var s=P(o,2),c=M(s);aA(M(c),{get enabled(){return X.failoverForm.enabled},label:`failover mapping`,get disabled(){return X.failoverFormManaged},onclick:()=>{X.failoverFormManaged||(X.failoverForm.enabled=!X.failoverForm.enabled)}}),T(c),T(s),T(n),z(e,n)},$$slots:{header:!0,extraActions:!0,default:!0}})}D()}Hr([`click`]);var UA=R(` `),WA=R(`
        `),GA=R(``),KA=R(`
        `),qA=R(`

        No failover suggestions were generated.

        `),JA=R(`

        No failover drafts match the filter.

        `),YA=R(``),XA=R(``);function ZA(e,t){E(t,!0),Ds(e,{get open(){return X.failoverDraftsOpen},variant:`editor`,onclose:()=>X.closeFailoverDraftsModal(),children:(e,t)=>{var n=XA(),r=M(n),i=P(M(r),2),a=M(i),o=e=>{var t=UA(),n=M(t,!0);T(t),F(e=>B(n,e),[()=>X.failoverDraftCountLabel()]),z(e,t)};V(a,e=>{X.failoverGeneratedRules.length>0&&e(o)}),Ts(P(a,2),{label:`Close failover drafts`,onclick:()=>X.closeFailoverDraftsModal(),get disabled(){return X.failoverDraftSaving}}),T(i),T(r);var s=P(r,2),c=e=>{$w(e,{label:`Generating failover drafts...`,class:`failover-drafts-loading`})};V(s,e=>{X.failoverGenerating&&e(c)});var l=P(s,2),u=e=>{var t=WA(),n=M(t);iw(n,{placeholder:`Filter failover drafts...`,label:`Filter failover drafts`,get value(){return X.failoverDraftFilter},set value(e){X.failoverDraftFilter=e}});var r=P(n,2),i=M(r);G(i,{get icon(){return za},class:`form-action-icon`});var a=P(i,2),o=M(a,!0);T(a),T(r),T(t),F(e=>{r.disabled=X.failoverDraftSaving,B(o,e)},[()=>X.allFailoverDraftsSelected()?`Deselect all`:`Select all`]),L(`click`,r,()=>X.toggleAllFailoverDrafts()),z(e,t)};V(l,e=>{!X.failoverGenerating&&X.failoverGeneratedRules.length>0&&e(u)});var d=P(l,2),f=e=>{var t=KA();H(t,21,()=>X.filteredFailoverDrafts(),e=>`failover-draft:`+X.failoverPrimaryModel(e),(e,t)=>{var n=GA(),r=M(n);na(r);var i=P(r,2),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s,!0);T(s),T(i),T(n),F((e,t,n,i)=>{ia(r,e),r.disabled=X.failoverDraftSaving,W(r,`aria-label`,t),B(o,n),B(c,i)},[()=>X.failoverDraftSelected(I(t)),()=>`Select failover draft for `+X.failoverPrimaryModel(I(t)),()=>X.failoverPrimaryModel(I(t)),()=>X.failoverTargetLabel(I(t))]),L(`change`,r,e=>X.setFailoverDraftSelected(I(t),e.currentTarget.checked)),z(e,n)}),T(t),z(e,t)},p=O(()=>!X.failoverGenerating&&X.filteredFailoverDrafts().length>0);V(d,e=>{I(p)&&e(f)});var m=P(d,2),h=e=>{z(e,qA())};V(m,e=>{!X.failoverGenerating&&X.failoverGeneratedRules.length===0&&!X.failoverError&&e(h)});var g=P(m,2),_=e=>{z(e,JA())},v=O(()=>!X.failoverGenerating&&X.failoverGeneratedRules.length>0&&X.filteredFailoverDrafts().length===0);V(g,e=>{I(v)&&e(_)});var y=P(g,2),b=e=>{var t=YA(),n=M(t,!0);T(t),F(()=>B(n,X.failoverError)),z(e,t)};V(y,e=>{X.failoverError&&e(b)});var x=P(y,2),S=M(x),C=P(S,2),w=M(C);G(w,{get icon(){return po},class:`form-action-icon`});var ee=P(w,2),te=M(ee,!0);T(ee),T(C),T(x),T(n),F(e=>{S.disabled=X.failoverDraftSaving,C.disabled=e,B(te,X.failoverDraftSaving?`Saving...`:`Save selected`)},[()=>X.failoverGenerating||X.failoverDraftSaving||X.selectedFailoverDraftCount()===0]),L(`click`,S,()=>X.closeFailoverDraftsModal()),L(`click`,C,()=>X.saveSelectedFailoverDrafts()),z(e,n)},$$slots:{default:!0}}),D()}Hr([`click`,`change`]);var QA=R(`
        Rate limit management is unavailable.
        `),$A=R(` Add`,1),ej=R(`

        `),tj=R(`

        No rules.

        `),nj=R(` Edit`,1),rj=R(`
        `),ij=R(`
        `),aj=R(`

        `),oj=R(``),sj=R(``);function cj(e,t){E(t,!0);function n(){K.dialogOpen||Y.closeRateLimitInspector()}Ds(e,{get open(){return Y.rateLimitInspectorOpen},variant:`editor`,onclose:n,children:(e,t)=>{var n=sj(),r=M(n),i=M(r),a=P(M(i),2),o=M(a),s=M(o,!0);T(o),T(a),T(i),Ts(P(i,2),{label:`Close rate limits inspector`,onclick:()=>Y.closeRateLimitInspector()}),T(r);var c=P(r,2),l=e=>{$w(e,{label:`Loading rate limits...`})},u=e=>{z(e,QA())},d=e=>{var t=Qr();H(N(t),17,()=>Y.rateLimitInspectorSections(),e=>e.key,(e,t)=>{var n=aj(),r=M(n),i=M(r),a=M(i,!0);T(i);var o=P(i,2);{let e=O(()=>`Add `+I(t).title.toLowerCase());tT(o,{get label(){return I(e)},class:`budget-action-btn`,onclick:()=>Y.openRateLimitFormFromInspector(I(t).scope,I(t).subject),children:(e,t)=>{var n=$A();G(N(n),{get icon(){return co},class:`table-icon-svg`}),Ue(2),z(e,n)},$$slots:{default:!0}})}T(r);var s=P(r,2),c=e=>{var n=ej(),r=M(n,!0);T(n),F(()=>B(r,I(t).hint)),z(e,n)};V(s,e=>{I(t).hint&&e(c)});var l=P(s,2),u=e=>{z(e,tj())},d=e=>{var n=ij();H(n,21,()=>I(t).items,e=>Y.rateLimitKey(e),(e,t)=>{var n=rj(),r=M(n),i=M(r),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s),l=M(c);{let e=O(()=>Y.rateLimitIsConcurrent(I(t))?Aa:To);G(l,{get icon(){return I(e)},class:`budget-period-icon`})}var u=P(l,2),d=M(u,!0);T(u),T(c),T(s);var f=P(s,2),p=M(f),m=M(p),h=M(m,!0);T(m);var g=P(m,2),_=M(g,!0);T(g),T(p);var v=P(p,2),y=M(v),b=e=>{tT(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>Y.openRateLimitFormFromInspector(null,null,I(t)),children:(e,t)=>{var n=nj();G(N(n),{get icon(){return oo},class:`budget-action-icon`}),Ue(2),z(e,n)},$$slots:{default:!0}})},x=O(()=>!Y.rateLimitIsReadOnly(I(t)));V(y,e=>{I(x)&&e(b)}),T(v),T(f),T(i),T(r),T(n),F((e,t,r,i,a,s,c,l)=>{U(n,1,`budget-row ${e??``}`),Hi(n,t),W(n,`title`,r),B(o,i),B(d,a),B(h,s),W(g,`title`,c),B(_,l)},[()=>Y.rateLimitPressureClass(I(t)),()=>Y.rateLimitPressureStyle(I(t)),()=>Y.rateLimitPressurePercent(I(t))+`% of the most constrained cap used`,()=>Y.rateLimitSubject(I(t)),()=>Y.rateLimitPeriodLabel(I(t)),()=>Y.rateLimitInspectorSummary(I(t)),()=>Y.rateLimitIsReadOnly(I(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>Y.rateLimitSourceLabel(I(t))]),z(e,n)}),T(n),z(e,n)};V(l,e=>{I(t).items.length===0?e(u):e(d,-1)}),T(n),F(()=>B(a,I(t).title)),z(e,n)}),z(e,t)};V(c,e=>{Y.rateLimitsLoading?e(l):Y.rateLimitsAvailable?e(d,-1):e(u,1)});var f=P(c,2),p=M(f),m=P(p,2),h=e=>{var t=oj();L(`click`,t,()=>{Y.closeRateLimitInspector(),Wo.navigate(`rate-limits`)}),z(e,t)},g=O(()=>Y.rateLimitsEnabled());V(m,e=>{I(g)&&e(h)}),T(f),T(n),F(()=>B(s,Y.rateLimitInspector.title)),L(`click`,p,()=>Y.closeRateLimitInspector()),z(e,n)},$$slots:{default:!0}}),D()}Hr([`click`]);var lj=R(`
        models
        `),uj=R(`
        Virtual models feature is unavailable.
        `),dj=R(`
        `),fj=R(``),pj=R(`
        `),mj=R(``),hj=R(`
        `),gj=R(`

        No models registered.

        `),_j=R(`

        No models in this category.

        `),vj=R(`

        No models match your filter.

        `),yj=R(`
        `);function bj(e,t){E(t,!0),An(()=>{K.refreshTick,Wo.page===`models`&&(zO.fetchVirtualModels(),ok.fetchModelPricingOverrides(),X.fetchFailoverRules(),Y.fetchRateLimitsPage())}),An(()=>{let e=zO.filteredDisplayModels.length;return Er(()=>zO.restartModelRendering(e)),()=>zO.stopModelRendering()});let n=O(()=>K.needsAuth);var r=yj(),i=M(r),a=P(M(i),2),o=e=>{var t=lj(),n=M(t),r=M(n,!0);T(n),Ue(),T(t),F(()=>B(r,Oc.filter?zO.filteredDisplayModels.length+` / `+zO.displayModels.length:zO.displayModels.length)),z(e,t)};V(a,e=>{zO.displayModels.length>0&&e(o)}),T(i);var s=P(i,2);Ac(s,{});var c=P(s,2),l=e=>{z(e,uj())};V(c,e=>{!zO.virtualModelsAvailable&&!I(n)&&e(l)});var u=P(c,2),d=e=>{var t=dj(),n=M(t,!0);T(t),F(()=>B(n,zO.aliasError)),z(e,t)};V(u,e=>{zO.aliasError&&!I(n)&&e(d)});var f=P(u,2),p=e=>{var t=dj(),n=M(t,!0);T(t),F(()=>B(n,ok.modelPricingOverrideError)),z(e,t)};V(f,e=>{ok.modelPricingOverrideError&&!I(n)&&!ok.modelPricingOverrideFormOpen&&e(p)});var m=P(f,2),h=e=>{var t=pj();H(t,21,()=>Oc.categories,e=>e.category,(e,t)=>{var n=fj();let r;var i=M(n),a=M(i,!0);T(i);var o=P(i,2),s=M(o,!0);T(o),T(n),F(()=>{r=U(n,1,`category-tab svelte-scpjps`,null,r,{active:Oc.activeCategory===I(t).category}),B(a,I(t).display_name),B(s,I(t).count)}),L(`click`,n,()=>Oc.selectCategory(I(t).category)),z(e,n)}),T(t),z(e,t)};V(m,e=>{Oc.categories.length>0&&e(h)});var g=P(m,2),_=e=>{var t=hj(),n=M(t);iw(M(n),{placeholder:`Filter by provider, provider/model, alias, or owner...`,label:`Filter models by provider, provider/model, alias, or owner`,get value(){return Oc.filter},set value(e){Oc.filter=e}}),T(n);var r=P(n,2),i=M(r),a=e=>{var t=mj();G(M(t),{get icon(){return co},class:`alias-create-icon`}),Ue(2),T(t),L(`click`,t,()=>zO.openVirtualModelCreate()),z(e,t)};V(i,e=>{zO.virtualModelsAvailable&&e(a)}),T(r),T(t),z(e,t)};V(g,e=>{(zO.displayModels.length>0||Oc.filter||zO.virtualModelsAvailable)&&e(_)});var v=P(g,2),y=e=>{{let t=O(()=>zO.modelLoadingText());$w(e,{get label(){return I(t)},class:`models-loading-state`})}},b=O(()=>zO.modelsBusy()&&!I(n));V(v,e=>{I(b)&&e(y)});var x=P(v,2);CA(x,{});var S=P(x,2);PA(S,{});var C=P(S,2),w=e=>{rA(e,{})};V(C,e=>{(zO.displayModels.length>0||Oc.filter)&&e(w)});var ee=P(C,2),te=e=>{z(e,gj())};V(ee,e=>{zO.displayModels.length===0&&!Oc.loading&&!I(n)&&!Oc.filter&&(Oc.activeCategory===`all`||!Oc.activeCategory)&&e(te)});var ne=P(ee,2),re=e=>{z(e,_j())};V(ne,e=>{zO.displayModels.length===0&&!Oc.loading&&!I(n)&&!Oc.filter&&Oc.activeCategory&&Oc.activeCategory!==`all`&&e(re)});var ie=P(ne,2),ae=e=>{z(e,vj())};V(ie,e=>{zO.displayModels.length>0&&zO.filteredDisplayModels.length===0&&Oc.filter&&e(ae)});var oe=P(ie,2);cj(oe,{});var se=P(oe,2);bD(se,{});var ce=P(se,2);HA(ce,{}),ZA(P(ce,2),{}),T(r),z(e,r),D()}Hr([`click`]);var xj=`draft-workflow-preview`;function Sj(){return{scope_provider:``,scope_model:``,scope_user_path:``,name:``,description:``,features:{cache:!0,audit:!0,usage:!0,budget:!0,guardrails:!1,failover:!0},guardrails:[]}}function Cj(){return{scope_provider:``,scope_model:``,scope_user_path:``}}function wj(e){return{ref:``,step:Number.isFinite(e)?e:10}}function Tj(e){let t=e==null?``:String(e).trim();if(t===``)return NaN;let n=Number(t);return Number.isFinite(n)?n:NaN}function Ej(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return n;let r=t.charAt(0).toUpperCase()+t.slice(1);for(let n of[t,r])if(Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==null&&e[n]!==void 0)return e[n];return n}function Dj(e,t){return!e||typeof e!=`object`||Array.isArray(e)?!1:[t,t.charAt(0).toUpperCase()+t.slice(1)].some(t=>Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==null&&e[t]!==void 0)}function Oj(e){return{cache:!!Ej(e,`cache`,!1),audit:!!Ej(e,`audit`,!1),usage:!!Ej(e,`usage`,!1),budget:Ej(e,`budget`,!0)!==!1,guardrails:!!Ej(e,`guardrails`,!1),failover:Ej(e,`failover`,!0)!==!1}}function kj(e,t){let n=Oj(e),r=t||{},i=n.usage&&!!r.usage;return{cache:n.cache&&!!r.cache,audit:n.audit&&!!r.audit,usage:i,budget:i&&n.budget&&!!r.budget,guardrails:n.guardrails&&!!r.guardrails,failover:n.failover&&!!r.failover}}function Aj(e,t){let n=e&&e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:e&&e.features?e.features:{};return{...kj((e&&e.effective_features&&typeof e.effective_features==`object`&&!Array.isArray(e.effective_features)?e.effective_features:null)||n,t),failover:Oj(n).failover}}function jj(e,t){return Aj(e,t).failover?`On`:`Off`}function Mj(e){return(Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:Array.isArray(e&&e.guardrails)?e.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:Tj(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0)}function Nj(e,t){return Aj(e,t).guardrails&&Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[]}function Pj(e){return String(e&&(e.scope_provider_name||e.scope_provider)||``).trim()}function Fj(e){return String(e&&(e.provider_name||e.provider_type)||``).trim()}function Ij(e,t){let n=new Set,r=String(t&&t.scope_provider||``).trim();return r&&n.add(r),(Array.isArray(e)?e:[]).forEach(e=>{let t=Fj(e);t&&n.add(t)}),[...n].sort()}function Lj(e,t,n){let r=String(t||``).trim(),i=new Set,a=String(n&&n.scope_provider||``).trim(),o=String(n&&n.scope_model||``).trim();return r&&r===a&&o&&i.add(o),(Array.isArray(e)?e:[]).forEach(e=>{if(r&&Fj(e)!==r)return;let t=String(e&&e.model&&e.model.id||``).trim();t&&i.add(t)}),[...i].sort()}function Rj(e){let t=String(e&&e.scope_type||``).trim();return t===`provider_model`?`Provider Name + Model`:t===`provider_model_path`?`Provider Name + Model + Path`:t===`provider_path`?`Provider Name + Path`:t===`path`?`Path`:t===`provider`?`Provider Name`:`Global`}function zj(e){return String(e&&e.scope_display||`global`).trim()||`global`}function Bj(e){let t=String(e&&e.name||``).trim();if(t)return t;let n=zj(e);return n===`global`?`All models`:n}function Vj(e){let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function Hj(e){if(Vj(e))return``;let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function Uj(e){let t=e||Sj(),n=String(t.scope_provider||``).trim(),r=Hj(t.scope_user_path);return{scope_provider:n,scope_model:n?String(t.scope_model||``).trim():``,scope_user_path:r}}function Wj(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=Hj(e&&e.scope_user_path);return!t&&!r?`global`:!t&&r?`path`:!n&&!r?`provider`:!n&&r?`provider_path`:r?`provider_model_path`:`provider_model`}function Gj(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=Hj(e&&e.scope_user_path),i=Wj({scope_provider:t,scope_model:n,scope_user_path:r});return i===`global`?`global`:i===`path`?r:i===`provider`?t:i===`provider_path`?t+` @ `+r:i===`provider_model_path`?t+`/`+n+` @ `+r:t+`/`+n}function Kj(e,t){let n=t||Cj(),r=Pj(e&&e.scope),i=r?String(e&&e.scope&&e.scope.scope_model||``).trim():``,a=Hj(e&&e.scope&&e.scope.scope_user_path);return r===String(n.scope_provider||``).trim()&&i===String(n.scope_model||``).trim()&&a===Hj(n.scope_user_path)}function qj(e,t,n){let r=Uj(t);return!(r.scope_provider!==``||r.scope_model!==``||r.scope_user_path!==``)&&!n?null:(Array.isArray(e)?e:[]).find(e=>Kj(e,r))||null}function Jj(e){return String(e&&e.scope_type||``).trim()!==`global`}function Yj(e){let t=String(e||``).trim();return t?t.length<=14?t:t.slice(0,12)+`…`:`—`}function Xj(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.description,e.scope_display,e.scope_type,Pj(e&&e.scope),e.scope&&e.scope.scope_model,e.scope&&e.scope.scope_user_path,e.workflow_hash,...Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>e.ref):[]].some(e=>String(e||``).toLowerCase().includes(r)))}function Zj(e,t){let n=e||Sj(),r=Uj(n),i=Oj(n.features||{}),a=kj(i,t);a.failover=i.failover;let o=!!a.guardrails,s=o?Mj(n):[];return{id:xj,scope_type:Wj(r),scope_display:Gj(r),scope:{scope_provider_name:r.scope_provider,scope_model:r.scope_model,...r.scope_user_path?{scope_user_path:r.scope_user_path}:{}},name:String(n.name||``).trim(),description:String(n.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!a.cache,audit:!!a.audit,usage:!!a.usage,budget:!!a.budget,guardrails:o,failover:!!a.failover},guardrails:s}}}function Qj({form:e,caps:t,workflows:n=[],formHydrated:r=!1,hydratedScope:i=null}){let a=e||Sj(),o=String(a.scope_provider||``).trim(),s=o?String(a.scope_model||``).trim():``,c=Hj(a.scope_user_path),l=Oj(a.features||{}),u=kj(l,t),d=qj(n,a,r),f=d&&d.workflow_payload&&d.workflow_payload.features,p=Dj(f,`failover`),m=p?Ej(f,`failover`,!0)!==!1:null,h=i||Cj(),g=String(h.scope_provider||``).trim()===o&&String(h.scope_model||``).trim()===s&&Hj(h.scope_user_path)===Hj(c),_=!!(t&&t.failover),v=_||!!r&&g&&Object.prototype.hasOwnProperty.call(l,`failover`)||!r&&!!d&&p,y=u.guardrails?(Array.isArray(a.guardrails)?a.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:Tj(e&&e.step)})):[],b={scope_provider_name:o,scope_model:s,...c?{scope_user_path:c}:{},name:String(a.name||``).trim(),description:String(a.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!u.cache,audit:!!u.audit,usage:!!u.usage,budget:!!u.budget,guardrails:!!u.guardrails},guardrails:y}};return v&&(b.workflow_payload.features.failover=!_&&!r&&d&&p?m:!!l.failover),b}function $j(e,{models:t=[],hydratedScope:n=null}={}){let r=n||Cj(),i=String(r.scope_provider||``).trim(),a=String(r.scope_model||``).trim(),o=String(e&&(e.scope_provider_name||e.scope_provider)||``).trim(),s=String(e&&e.scope_model||``).trim();if(o&&!Ij(t,r).includes(o)&&o!==i)return`Choose a registered provider name.`;if(s&&!o)return`Model selection requires a provider name.`;if(s){let e=Lj(t,o,r),n=o===i&&s===a;if(!e.includes(s)&&!n)return`Choose a registered model for the selected provider name.`}let c=Vj(e.scope_user_path);if(c)return c;let l=e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:{},u=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[];if(!l.guardrails)return``;let d=new Set;for(let e of u){if(!e.ref)return`Each guardrail step needs a guardrail ref.`;if(!Number.isInteger(e.step)||e.step<0)return`Each guardrail step must use a non-negative integer step number.`;if(d.has(e.ref))return`Each guardrail ref may appear only once in a workflow.`;d.add(e.ref)}return``}var eM=new class{#e=k(j([]));get workflows(){return I(this.#e)}set workflows(e){A(this.#e,e,!0)}#t=k(!0);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get error(){return I(this.#r)}set error(e){A(this.#r,e,!0)}#i=k(``);get filter(){return I(this.#i)}set filter(e){A(this.#i,e,!0)}#a=k(!1);get formOpen(){return I(this.#a)}set formOpen(e){A(this.#a,e,!0)}#o=k(!1);get submitting(){return I(this.#o)}set submitting(e){A(this.#o,e,!0)}#s=k(``);get deactivatingID(){return I(this.#s)}set deactivatingID(e){A(this.#s,e,!0)}#c=k(``);get formError(){return I(this.#c)}set formError(e){A(this.#c,e,!0)}#l=k(!1);get formHydrated(){return I(this.#l)}set formHydrated(e){A(this.#l,e,!0)}#u=k(j(Cj()));get hydratedScope(){return I(this.#u)}set hydratedScope(e){A(this.#u,e,!0)}#d=k(j([]));get guardrailRefs(){return I(this.#d)}set guardrailRefs(e){A(this.#d,e,!0)}#f=k(j(Sj()));get form(){return I(this.#f)}set form(e){A(this.#f,e,!0)}#p=null;failoverVisible(){return vs.booleanFlag(`FAILOVER_ENABLED`,!0)}featureCaps(){return{cache:vs.cacheVisible(),audit:vs.auditVisible(),usage:vs.usageVisible(),budget:vs.budgetsVisible(),guardrails:vs.guardrailsVisible(),failover:this.failoverVisible()}}get filteredWorkflows(){return Xj(this.workflows,this.filter)}providerOptions(){return Ij(Oc.models,this.hydratedScope)}modelOptions(e){return Lj(Oc.models,e,this.hydratedScope)}activeScopeMatch(){return qj(this.workflows,this.form,this.formHydrated)}submitMode(){return this.activeScopeMatch()?`save`:`create`}submitLabel(){return this.submitMode()===`save`?`Save`:`Create`}submittingLabel(){return this.submitMode()===`save`?`Saving...`:`Creating...`}preview(){return Zj(this.form,this.featureCaps())}openCreate(e){if(this.formOpen=!0,this.submitting=!1,this.formError=``,!e){this.formHydrated=!1,this.hydratedScope=Cj(),this.form=Sj();return}this.formHydrated=!0,this.hydratedScope={scope_provider:Pj(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``).trim(),scope_user_path:String(e.scope&&e.scope.scope_user_path||``).trim()};let t=e.workflow_payload&&e.workflow_payload.features?Oj(e.workflow_payload.features):Aj(e,this.featureCaps()),n=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>({ref:String(e&&e.ref||``).trim(),step:Tj(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0):Mj(e);this.form={scope_provider:Pj(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``),scope_user_path:String(e.scope&&e.scope.scope_user_path||``),name:String(e.name||``),description:String(e.description||``),features:{cache:!!t.cache,audit:!!t.audit,usage:!!t.usage,budget:!!t.budget,guardrails:!!t.guardrails,failover:!!t.failover},guardrails:n.map(e=>({ref:String(e&&e.ref||``),step:Number.isFinite(e&&e.step)?e.step:10}))}}closeForm(){this.formOpen=!1,this.submitting=!1,this.formError=``,this.formHydrated=!1,this.hydratedScope=Cj(),this.form=Sj()}setProvider(e){if(this.form.scope_provider=String(e||``).trim(),!this.form.scope_provider){this.form.scope_model=``;return}this.modelOptions(this.form.scope_provider).includes(String(this.form.scope_model||``).trim())||(this.form.scope_model=``)}addGuardrailStep(){let e=(Array.isArray(this.form.guardrails)?this.form.guardrails:[]).reduce((e,t)=>{let n=Number(t&&t.step);return Number.isFinite(n)?Math.max(e,n):e},0)+10;this.form.guardrails.push(wj(e))}removeGuardrailStep(e){Array.isArray(this.form.guardrails)&&this.form.guardrails.splice(e,1)}buildRequest(){return Qj({form:this.form,caps:this.featureCaps(),workflows:this.workflows,formHydrated:this.formHydrated,hydratedScope:this.hydratedScope})}async fetchWorkflows(){this.#p&&this.#p.abort();let e=new AbortController;this.#p=e,this.loading=!0,this.error=``;let t=setTimeout(()=>e.abort(),1e4),n=await nT(`/admin/workflows`,{label:`workflows`,options:{signal:e.signal}});if(clearTimeout(t),this.#p===e&&(this.#p=null,this.loading=!1,n.status!==`stale`)){if(n.status===`unavailable`){this.available=!1,this.workflows=[];return}if(n.result&&(this.available=!0),n.status===`error`){this.workflows=[],this.error=e.signal.aborted?`Loading workflows timed out.`:n.error;return}this.workflows=n.items}}async fetchGuardrailRefs(){let e=await nT(`/admin/workflows/guardrails`,{label:`workflow guardrails`});e.status!==`stale`&&(this.guardrailRefs=e.items)}async fetchPage(){await Promise.all([vs.ensureLoaded(),this.fetchWorkflows(),this.fetchGuardrailRefs()])}async submitForm(){if(this.submitting)return;this.formError=``;let e=this.buildRequest(),t=$j(e,{models:Oc.models,hydratedScope:this.hydratedScope});if(t){this.formError=t;return}this.submitting=!0;try{let t=await rT(`/admin/workflows`,`POST`,e,{label:`create workflow`,unavailableStatuses:[]});if(t.status===`stale`||t.result&&t.result.status===401)return;if(t.status===`error`){this.formError=t.error;return}qs.success(`Workflow created and activated.`),this.closeForm(),this.fetchPage()}finally{this.submitting=!1}}async deactivate(e){let t=String(e&&e.id||``).trim();if(!t||this.deactivatingID||!Jj(e))return;let n=Bj(e);if(confirm(`Deactivate workflow "`+n+`"? Requests will fall back to the next active workflow for this scope.`)){this.deactivatingID=t;try{let e=await rT(`/admin/workflows/`+encodeURIComponent(t)+`/deactivate`,`POST`,void 0,{label:`deactivate workflow`,unavailableStatuses:[]});if(e.status===`stale`||e.result&&e.result.status===401)return;if(e.status===`error`){qs.error(e.error);return}qs.success(`Workflow deactivated.`),this.fetchPage()}finally{this.deactivatingID=``}}}};function tM(e){let t=String(e??``),n=typeof navigator<`u`?navigator.clipboard:null;if(n&&typeof n.writeText==`function`)return n.writeText(t);let r=typeof document<`u`?document:null;if(!r||!r.body||typeof r.execCommand!=`function`)return Promise.reject(Error(`Clipboard API unavailable`));let i=r.createElement(`textarea`);i.value=t,i.setAttribute(`readonly`,``),i.style.position=`fixed`,i.style.top=`0`,i.style.left=`0`,i.style.opacity=`0`;try{if(r.body.appendChild(i),i.focus(),i.select(),i.setSelectionRange(0,i.value.length),!r.execCommand(`copy`))throw Error(`execCommand copy returned false`)}finally{i.parentNode&&i.parentNode.removeChild(i)}return Promise.resolve()}function nM({resetDelayMs:e=2e3,logPrefix:t}={}){let n=j({copied:!1,error:!1}),r=null;function i(){r!==null&&clearTimeout(r),r=null}function a(){i(),r=setTimeout(()=>{n.copied=!1,n.error=!1,r=null},e)}return{get copied(){return n.copied},get error(){return n.error},reset(){i(),n.copied=!1,n.error=!1},async copy(e,r){if(!(e==null||e===``)){i(),n.copied=!1,n.error=!1;try{await tM(typeof r==`function`?r(e):String(e)),n.copied=!0,n.error=!1}catch(e){console.error(t||`Failed to copy text:`,e),n.copied=!1,n.error=!0}a()}}}}var rM=R(``);function iM(e,t){E(t,!0);let n=ya(t,`workflowID`,3,``),r=nM({logPrefix:`Failed to copy workflow ID:`});An(()=>{n(),r.reset()});let i=O(()=>r.error?`Unable to copy workflow ID`:r.copied?`Workflow ID copied`:`Copy workflow ID`),a=O(()=>n()?I(i)+` `+n():I(i));async function o(e){e.preventDefault(),n()&&await r.copy(n())}var s=rM();let c;var l=P(M(s),4),u=M(l,!0);T(l);var d=P(l,2);G(M(d),{get icon(){return Ka}}),T(d),T(s),F(()=>{c=U(s,1,`workflow-pipeline-meta mono svelte-1viff7o`,null,c,{"workflow-pipeline-meta-copied":r.copied,"workflow-pipeline-meta-error":r.error}),W(s,`title`,I(i)),W(s,`aria-label`,I(a)),B(u,n())}),L(`click`,s,o),z(e,s),D()}Hr([`click`]);var aM=(e,t)=>{let n=()=>(t?.()).icon,r=()=>(t?.()).label,i=Ot(()=>h((t?.()).variant,`workflow-node-feature`)),a=()=>(t?.()).state,o=()=>(t?.()).sub,s=()=>(t?.()).badge;var c=lM(),l=M(c),u=e=>{var t=oM();let r;G(M(t),{get icon(){return n()}}),T(t),F(()=>r=U(t,1,`workflow-node-icon svelte-nbptrg`,null,r,{"workflow-node-icon-endpoint":I(i)===`workflow-node-endpoint`})),z(e,t)};V(l,e=>{n()&&e(u)});var d=P(l,2),f=M(d,!0);T(d);var p=P(d,2),m=e=>{var t=sM(),n=M(t,!0);T(t),F(()=>B(n,s())),z(e,t)};V(p,e=>{s()&&e(m)});var g=P(p,2),_=e=>{var t=cM(),n=M(t,!0);T(t),F(()=>B(n,o())),z(e,t)};V(g,e=>{o()&&e(_)}),T(c),F(()=>{U(c,1,Fi([`workflow-node`,I(i),a()]),`svelte-nbptrg`),B(f,r())}),z(e,c)},oM=R(`
        `),sM=R(` `),cM=R(` `),lM=R(`
        `),uM=R(`
        `,1),dM=R(`
        `,1),fM=R(`
        `),pM=R(`
        Async
        `),mM=R(`
        `);function hM(e,t){E(t,!0);let n=ya(t,`chart`,19,()=>({}));var r=mM();let i;var a=M(r),o=e=>{iM(e,{get workflowID(){return n().workflowID}})};V(a,e=>{n().workflowID&&e(o)});var s=P(a,2),c=M(s);aM(c,()=>({icon:Oo,label:`Client`,variant:`workflow-node-endpoint`}));var l=P(c,4);aM(l,()=>({icon:Ja,label:`Auth`,state:n().authNodeClass,sub:n().authNodeSublabel}));var u=P(l,2),d=e=>{var t=uM(),r=N(t);aM(P(r,2),()=>({icon:Ja,label:`Cache`,state:n().cacheNodeClass,badge:n().cacheStatusLabel})),F(()=>U(r,1,Fi([`workflow-conn`,n().cacheConnClass]),`svelte-nbptrg`)),z(e,t)};V(u,e=>{n().showCache&&e(d)});var f=P(u,2),p=e=>{var t=dM();aM(P(N(t),2),()=>({icon:ko,label:`Budget`,state:n().budgetNodeClass,badge:n().budgetStatusLabel})),z(e,t)};V(f,e=>{n().showBudget&&e(p)});var m=P(f,2),h=e=>{var t=dM();aM(P(N(t),2),()=>({icon:xo,label:`Guardrails`,sub:n().guardrailLabel})),z(e,t)};V(m,e=>{n().showGuardrails&&e(h)});var g=P(m,2),_=P(g,2);aM(_,()=>({label:n().aiLabel,variant:`workflow-node-ai`,state:n().aiNodeClass,sub:n().aiSublabel}));var v=P(_,2),y=e=>{var t=uM(),r=N(t);aM(P(r,2),()=>({icon:ro,label:`Failover`,state:n().failoverNodeClass,badge:n().failoverStatusLabel,sub:n().failoverTargetLabel})),F(()=>U(r,1,Fi([`workflow-conn`,n().failoverConnClass]),`svelte-nbptrg`)),z(e,t)};V(v,e=>{n().showFailover&&e(y)});var b=P(v,2);aM(P(b,2),()=>({icon:Ha,label:`Response`,variant:`workflow-node-endpoint`,state:n().responseNodeClass,sub:n().responseNodeSublabel})),T(s);var x=P(s,2),S=e=>{var t=pM(),r=M(t),i=M(r),a=e=>{aM(e,()=>({icon:La,label:`Usage`,variant:`workflow-node-feature workflow-node-async`,state:n().usageNodeClass}))};V(i,e=>{n().showUsage&&e(a)});var o=P(i,2),s=e=>{z(e,fM())};V(o,e=>{n().showUsage&&n().showAudit&&e(s)});var c=P(o,2),l=e=>{aM(e,()=>({icon:Ya,label:`Audit Log`,variant:`workflow-node-feature workflow-node-async`,state:n().auditNodeClass}))};V(c,e=>{n().showAudit&&e(l)}),T(r),Ue(4),T(t),z(e,t)};V(x,e=>{n().showAsync&&e(S)}),T(r),F(()=>{i=U(r,1,`workflow-pipeline svelte-nbptrg`,null,i,{"workflow-pipeline-has-meta":n().workflowID}),U(g,1,Fi([`workflow-conn`,n().aiConnClass]),`svelte-nbptrg`),U(b,1,Fi([`workflow-conn`,n().responseConnClass]),`svelte-nbptrg`)}),z(e,r),D()}function gM(e){let t=Mj(e).length;return t===0?``:t===1?`1 step`:t+` steps`}function _M(e,t){return t&&t.provider?t.provider:Pj(e&&e.scope)||`AI`}function vM(e,t){return t&&t.model?t.model:e&&e.scope&&e.scope.scope_model||null}function yM(e,t){let n=String(e&&e.id||``).trim();if(n&&n!==`draft-workflow-preview`)return n;let r=String(t&&t.workflow_version_id||``).trim();return r&&r!==`draft-workflow-preview`?r:null}function bM(e){let t=e&&e.data&&e.data.workflow_features;return!t||typeof t!=`object`||Array.isArray(t)?null:Oj(t)}function xM(e){let t=e&&e.data&&e.data.failover;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=String(t.target_model||t.targetModel||``).trim()||null;return n?{targetModel:n}:null}function SM(e,t=0){if(t>4||e==null)return``;if(typeof e==`string`){let n=e.trim();if(!n||n[0]!==`{`&&n[0]!==`[`)return``;try{return SM(JSON.parse(n),t+1)}catch{return``}}if(Array.isArray(e)){for(let n of e){let e=SM(n,t+1);if(e)return e}return``}return typeof e==`object`?String(e.code||``).trim()||(e.error===void 0?``:SM(e.error,t+1)):``}function CM(e){let t=e&&e.data&&typeof e.data==`object`&&!Array.isArray(e.data)?e.data:{};return String(t.error_code||t.errorCode||``).trim()||SM(t.response_body)}function wM(e){let t=String(e||``).trim();if(!t)return null;let n=t.indexOf(`/`);return n<=0||n>=t.length-1?null:{provider:t.slice(0,n),model:t.slice(n+1)}}function TM(e,t){let n=String(e&&(e.requested_model||e.model)||``).trim(),r=xM(e);if(!(r&&r.targetModel))return{provider:String(e&&e.provider||``).trim()||null,model:n||null};let i=wM(n);if(i)return i;let a=Pj(t&&t.scope),o=a?String(t&&t.scope&&t.scope.scope_model||``).trim():``;return a||o?{provider:a||null,model:o||n||null}:{provider:null,model:n||null}}function EM(e,t){if(!e)return null;let n=(()=>{let t=String(e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`?t:null})(),r=(()=>{if(e.status_code===void 0||e.status_code===null)return null;let t=String(e.status_code).trim();if(!t)return null;let n=Number(t);return Number.isFinite(n)?n:null})(),i=n?!0:e.cache_hit!==void 0&&e.cache_hit!==null&&!!e.cache_hit,a=xM(e),o=TM(e,t),s=Number.isFinite(r)&&r>=200&&r<300,c=String(e.error_type||``).trim().toLowerCase()===`authentication_error`,l=String(e.auth_method||``).trim().toLowerCase()||null,u=CM(e).toLowerCase()===`budget_exceeded`;return{cacheHit:i,cacheType:n||null,failoverTarget:a&&a.targetModel?a.targetModel:null,provider:o.provider,model:o.model,statusCode:r,responseSuccess:s,aiSuccess:s&&!i,authError:c,authMethod:l,budgetExceeded:u}}function DM(e){return!!(e&&e.cacheHit)}function OM(e){return!!(e&&e.failoverTarget)}function kM(e){return!!(e&&e.budgetExceeded)}function AM(e,t){return t?`workflow-node-current`:e&&e.cacheHit?`workflow-node-success`:``}function jM(e){return e&&e.cacheHit?`workflow-conn-hit`:``}function MM(e){return!e||!e.cacheHit?null:e.cacheType===`semantic`?`Hit (Semantic)`:`Hit (Exact)`}function NM(e,t,n,r){return e?kM(t)?`workflow-node-error`:r?`workflow-node-current`:n?`workflow-node-success`:``:``}function PM(e){return kM(e)?`Exceeded`:null}function FM(e){return e&&e.cacheHit?`workflow-node-skipped`:e&&e.failoverTarget?`workflow-node-success`:``}function IM(e){return e&&e.cacheHit?`workflow-conn-dim`:e&&e.failoverTarget?`workflow-conn-hit`:``}function LM(e){return e&&e.failoverTarget?`Redirected`:null}function RM(e){return e&&e.failoverTarget?e.failoverTarget:null}function zM(e){return e&&e.cacheHit?`workflow-conn-dim`:``}function BM(e,t){return e?e.cacheHit?`workflow-node-skipped`:t?`workflow-node-current`:e.aiSuccess?`workflow-node-success`:``:``}function VM(e,t){if(!e)return``;let n=e.statusCode;return!Number.isFinite(n)&&t?`workflow-node-current`:Number.isFinite(n)?n>=500?`workflow-node-error`:n>=400?`workflow-node-warning`:n>=300?`workflow-node-neutral`:n>=200?`workflow-node-success`:``:``}function HM(e){return!e||!Number.isFinite(e.statusCode)?null:String(e.statusCode)}function UM(e,t){return e?e.authError?`workflow-node-error`:t?`workflow-node-current`:e.authMethod===`api_key`||e.authMethod===`master_key`?`workflow-node-success`:``:``}function WM(e){return!e||!e.authMethod?null:e.authMethod}function GM(e,t,n){return e?n?`workflow-node-current`:t?`workflow-node-success`:``:``}function KM(e,t){if(!e||!e._live)return!!t;let n=String(e._live_state||``).trim();return!!e._audit_flushed||n===`audit.flushed`||n===`audit.detail`}function qM(e,t){if(!e)return!!t;let n=e.usage||{},r=Number(n.entries||0)>0;if(!e._live)return r;let i=String(e._usage_live_state||``).trim();return e._usage_flushed||i===`usage.flushed`?!0:!e._usage_live_pending&&r&&!e._live_pending}function JM(e){return!!(e&&e._live&&e._usage_live_pending&&!e._usage_flushed)}function YM(e,t){return!e||!e._live||KM(e,!1)?!1:String(e._live_state||``).trim()===`audit.completed`||!!(t&&Number.isFinite(t.statusCode))}function XM(e,t,n){return!e||!e._live?``:JM(e)?`usage`:YM(e,t)?`audit`:KM(e,!1)&&!e._live_pending?``:t&&t.cacheHit?`cache`:t&&(t.provider||t.model)?`ai`:n&&n.budget&&(e.workflow_version_id||e.requested_model)?`budget`:t&&t.authMethod?``:`auth`}function ZM(e,t,n,r){let i=n||{},a=i.features&&typeof i.features==`object`&&!Array.isArray(i.features)?Oj(i.features):Aj(e,r),o=!!i.forceAudit,s=!!i.highlightAsyncPresent,c=!!a.budget||kM(t),l=!!a.guardrails,u=!!a.usage,d=o||!!a.audit,f=!!i.forceAsync||!!(u||d),p=!!a.failover||OM(t),m=yM(e,i.entry),h=XM(i.entry,t,a),g=JM(i.entry),_=YM(i.entry,t),v=KM(i.entry,s),y=qM(i.entry,s);return{showBudget:c,budgetNodeClass:NM(c,t,s,h===`budget`),budgetStatusLabel:PM(t),showGuardrails:l,guardrailLabel:l?gM(e):``,showCache:!!i.forceCache||!!a.cache||DM(t),cacheNodeClass:AM(t,h===`cache`),cacheConnClass:jM(t),cacheStatusLabel:MM(t),showFailover:p,failoverNodeClass:p?FM(t):``,failoverConnClass:p?IM(t):``,failoverStatusLabel:p?LM(t):null,failoverTargetLabel:p?RM(t):null,aiLabel:_M(e,t),aiSublabel:vM(e,t),aiConnClass:zM(t),aiNodeClass:BM(t,h===`ai`),responseConnClass:zM(t),responseNodeClass:VM(t,h===`response`),responseNodeSublabel:HM(t),authNodeClass:UM(t,h===`auth`),authNodeSublabel:WM(t),usageNodeClass:GM(u,y,g),auditNodeClass:GM(d,v,_),showAsync:f,showUsage:u,showAudit:d,workflowID:m}}function QM(e,t){return ZM(e,null,{forceCache:!1},t)}function $M(e,t,n){return ZM(t,EM(e,t),{entry:e,features:bM(e)||(t?Aj(t,n):{cache:!1,audit:!1,usage:!1,budget:!1,guardrails:!1,failover:!1}),forceAudit:!0,forceAsync:!0,highlightAsyncPresent:!0},n)}var eN=R(`

        `),tN=R(`

        `),nN=R(`
        `),rN=R(`
        `),iN=R(`

        No guardrails configured for this workflow.

        `),aN=R(`

        Guardrails

        `),oN=R(``),sN=R(`

        `);function cN(e,t){E(t,!0);let n=ya(t,`preview`,3,!1),r=O(()=>eM.featureCaps()),i=O(()=>Bj(t.workflow)),a=O(()=>Nj(t.workflow,I(r))),o=O(()=>QM(t.workflow,I(r))),s=O(()=>n()?`draft-workflow-preview-guardrail-`:t.workflow.id+`-guardrail-`);var c=sN();let l;var u=M(c),d=M(u),f=M(d),p=M(f,!0);T(f);var m=P(f,2),h=M(m,!0);T(m),T(d);var g=P(d,2),_=M(g),v=M(_,!0);T(_),T(g),T(u);var y=P(u,2),b=e=>{var n=eN(),r=M(n,!0);T(n),F(()=>B(r,t.workflow.description)),z(e,n)};V(y,e=>{t.workflow.description&&e(b)});var x=P(y,2),S=e=>{var n=tN(),i=M(n);T(n),F(e=>B(i,`Failover: ${e??``}`),[()=>jj(t.workflow,I(r))]),z(e,n)},C=O(()=>eM.failoverVisible());V(x,e=>{I(C)&&e(S)});var w=P(x,2);hM(w,{get chart(){return I(o)}});var ee=P(w,2),te=e=>{var t=aN(),n=M(t),r=P(M(n),2),i=M(r,!0);T(r),T(n);var o=P(n,2),c=e=>{var t=rN();H(t,23,()=>I(a),(e,t)=>I(s)+t,(e,t)=>{var n=nN(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=M(a);T(a),T(n),F(()=>{B(i,I(t).ref),B(o,`step ${I(t).step??``}`)}),z(e,n)}),T(t),z(e,t)},l=e=>{z(e,iN())};V(o,e=>{I(a).length>0?e(c):e(l,-1)}),T(t),F(()=>B(i,I(a).length?I(a).length+` steps`:`None`)),z(e,t)},ne=O(()=>vs.guardrailsVisible());V(ee,e=>{I(ne)&&e(te)});var re=P(ee,2),ie=e=>{var n=oN(),r=M(n),a=M(r),o=M(a,!0);T(a);var s=P(a,2);{let e=O(()=>`Edit workflow `+I(i));tT(s,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>eM.openCreate(t.workflow),children:(e,t)=>{G(e,{get icon(){return oo},class:`table-icon-svg`})},$$slots:{default:!0}})}T(r);var c=P(r,2),l=M(c),u=M(l);T(l);var d=P(l,2),f=M(d);T(d);var p=P(d,2),m=M(p);T(p),T(c),T(n),F((e,n,r,s)=>{a.disabled=e,W(a,`aria-label`,`Deactivate workflow `+I(i)),W(a,`title`,n),B(o,eM.deactivatingID===t.workflow.id?`Deactivating...`:`Deactivate`),B(u,`version: v${t.workflow.version??``}`),B(f,`created: ${r??``}`),B(m,`hash: ${s??``}`)},[()=>eM.deactivatingID===t.workflow.id||!Jj(t.workflow),()=>Jj(t.workflow)?`Deactivate active workflow`:`The global workflow cannot be deactivated.`,()=>ss.formatTimestamp(t.workflow.created_at),()=>Yj(t.workflow.workflow_hash)]),L(`click`,a,()=>eM.deactivate(t.workflow)),z(e,n)};V(re,e=>{n()||e(ie)}),T(c),F((e,t)=>{l=U(c,1,`workflow-card svelte-1fo9fvq`,null,l,{"workflow-preview-card":n()}),B(p,e),B(h,I(i)),B(v,t)},[()=>Rj(t.workflow),()=>zj(t.workflow)]),z(e,c),D()}Hr([`click`]);var lN=R(`

        `),uN=R(``),dN=R(``),fN=R(``),pN=R(``),mN=R(``),hN=R(``),gN=R(``),_N=R(``),vN=R(``),yN=R(``),bN=R(``),xN=R(``),SN=R(`
        No named guardrails are currently registered on this deployment. You can still draft a workflow, but guardrail-backed creation may be rejected.
        `),CN=R(`
        `),wN=R(`
        `),TN=R(`

        No guardrail steps configured yet.

        `),EN=R(`

        Guardrail Steps

        Guardrails in the same numeric step run together. Later steps wait for earlier ones to finish.

        `),DN=R(`

        Leave provider name empty to target all providers and models. Select a provider name without a model to target all models for that configured provider.

        Add a path to scope the workflow to that subtree. Leading slashes are optional and will be normalized; you can enter "team/alpha" or "/team/alpha". Matching checks the deepest user path first, then falls back toward the root.

        If you leave the name empty, the workflow will display as the matched provider/model scope or “All models”.

        Preview

        Live
        `,1);function ON(e,t){E(t,!0);{let t=e=>{BS(e,{copyId:`workflow-help-copy`,label:`workflow help`,text:`Create immutable version. Submitting activates it for the selected scope.`,title:e=>{var t=lN(),n=M(t,!0);T(t),F(e=>B(n,e),[()=>eM.submitMode()===`save`?`Edit Workflow`:`Create Workflow`]),z(e,t)},$$slots:{title:!0}})},n=O(()=>eM.submitLabel()),r=O(()=>eM.submittingLabel()),i=O(()=>eM.submitMode()===`create`?co:po);aE(e,{get open(){return eM.formOpen},ariaLabel:`Workflow editor`,get error(){return eM.formError},get submitting(){return eM.submitting},get submitLabel(){return I(n)},get submittingLabel(){return I(r)},get submitIcon(){return I(i)},dialogClass:`workflow-editor`,onclose:()=>eM.closeForm(),onsubmit:()=>eM.submitForm(),header:t,children:(e,t)=>{var n=DN(),r=N(n),i=M(r);sE(i,{id:`workflow-scope-provider`,label:`Provider Name`,children:(e,t)=>{var n=dN(),r=M(n);r.value=r.__value=``,H(P(r),16,()=>eM.providerOptions(),e=>e,(e,t)=>{var n=uN(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(n),L(`change`,n,e=>eM.setProvider(e.currentTarget.value)),Gi(n,()=>eM.form.scope_provider,e=>eM.form.scope_provider=e),z(e,n)},$$slots:{default:!0}});var a=P(i,2),o=e=>{sE(e,{id:`workflow-scope-model`,label:`Model`,children:(e,t)=>{var n=fN(),r=M(n);r.value=r.__value=``,H(P(r),17,()=>eM.modelOptions(eM.form.scope_provider),e=>eM.form.scope_provider+`-`+e,(e,t)=>{var n=uN(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t)),i!==(i=I(t))&&(n.value=(n.__value=I(t))??``)}),z(e,n)}),T(n),Gi(n,()=>eM.form.scope_model,e=>eM.form.scope_model=e),z(e,n)},$$slots:{default:!0}})};V(a,e=>{eM.form.scope_provider&&e(o)});var s=P(a,2);sE(s,{id:`workflow-name`,label:`Name`,children:(e,t)=>{var n=pN();na(n),da(n,()=>eM.form.name,e=>eM.form.name=e),z(e,n)},$$slots:{default:!0}}),sE(P(s,2),{id:`workflow-user-path`,label:`User Path`,children:(e,t)=>{var n=mN();na(n),da(n,()=>eM.form.scope_user_path,e=>eM.form.scope_user_path=e),z(e,n)},$$slots:{default:!0}}),T(r);var c=P(r,8);sE(c,{id:`workflow-description`,label:`Description`,children:(e,t)=>{var n=hN();ft(n),da(n,()=>eM.form.description,e=>eM.form.description=e),z(e,n)},$$slots:{default:!0}});var l=P(c,2),u=M(l),d=e=>{var t=gN(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>eM.form.features.cache,e=>eM.form.features.cache=e),z(e,t)},f=O(()=>vs.cacheVisible());V(u,e=>{I(f)&&e(d)});var p=P(u,2),m=e=>{var t=_N(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>eM.form.features.audit,e=>eM.form.features.audit=e),z(e,t)},h=O(()=>vs.auditVisible());V(p,e=>{I(h)&&e(m)});var g=P(p,2),_=e=>{var t=vN(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>eM.form.features.usage,e=>eM.form.features.usage=e),z(e,t)},v=O(()=>vs.usageVisible());V(g,e=>{I(v)&&e(_)});var y=P(g,2),b=e=>{var t=yN(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>eM.form.features.budget,e=>eM.form.features.budget=e),z(e,t)},x=O(()=>vs.budgetsVisible());V(y,e=>{I(x)&&e(b)});var S=P(y,2),C=e=>{var t=bN(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>eM.form.features.guardrails,e=>eM.form.features.guardrails=e),z(e,t)},w=O(()=>vs.guardrailsVisible());V(S,e=>{I(w)&&e(C)});var ee=P(S,2),te=e=>{var t=xN(),n=M(t);na(n),Ue(2),T(t),fa(n,()=>eM.form.features.failover,e=>eM.form.features.failover=e),z(e,t)},ne=O(()=>eM.failoverVisible());V(ee,e=>{I(ne)&&e(te)}),T(l);var re=P(l,2),ie=P(M(re),2);{let e=O(()=>eM.preview());cN(ie,{get workflow(){return I(e)},preview:!0})}T(re);var ae=P(re,2),oe=e=>{var t=EN(),n=M(t),r=P(M(n),2);T(n);var i=P(n,2),a=e=>{var t=SN(),n=P(M(t),2);T(t),L(`click`,n,()=>Wo.navigate(`guardrails`)),z(e,t)};V(i,e=>{eM.guardrailRefs.length===0&&e(a)});var o=P(i,2),s=e=>{var t=wN();H(t,21,()=>eM.form.guardrails,oi,(e,t,n)=>{var r=CN(),i=M(r),a=M(i);W(a,`for`,`workflow-guardrail-ref-`+n);var o=P(a,2);na(o),W(o,`id`,`workflow-guardrail-ref-`+n),W(o,`aria-label`,`Guardrail reference `+(n+1)),T(i);var s=P(i,2),c=M(s);W(c,`for`,`workflow-guardrail-step-`+n);var l=P(c,2);na(l),W(l,`id`,`workflow-guardrail-step-`+n),W(l,`aria-label`,`Guardrail step `+(n+1)),T(s);var u=P(s,2);T(r),da(o,()=>I(t).ref,e=>I(t).ref=e),da(l,()=>I(t).step,e=>I(t).step=e),L(`click`,u,()=>eM.removeGuardrailStep(n)),z(e,r)}),T(t),z(e,t)},c=e=>{z(e,TN())};V(o,e=>{eM.form.guardrails.length>0?e(s):e(c,-1)}),T(t),L(`click`,r,()=>eM.addGuardrailStep()),z(e,t)},se=O(()=>eM.form.features.guardrails&&vs.guardrailsVisible());V(ae,e=>{I(se)&&e(oe)}),z(e,n)},$$slots:{header:!0,default:!0}})}D()}Hr([`change`,`click`]);var kN=R(`

        Loading workflows...

        `),AN=R(`
        `),jN=R(`

        No active workflows found.

        `),MN=R(`

        No workflows match your filter.

        `),NN=R(`
        `);function PN(e,t){E(t,!0);var n=NN(),r=M(n),i=e=>{var t=kN();hS(M(t),{size:16,label:`Loading workflows`}),Ue(),T(t),z(e,t)};V(r,e=>{eM.loading&&!K.authError&&e(i)});var a=P(r,2),o=e=>{var t=AN();H(t,21,()=>eM.filteredWorkflows,e=>e.id,(e,t)=>{cN(e,{get workflow(){return I(t)}})}),T(t),z(e,t)};V(a,e=>{eM.filteredWorkflows.length>0&&e(o)});var s=P(a,2),c=e=>{z(e,jN())};V(s,e=>{eM.workflows.length===0&&!eM.loading&&!K.authError&&eM.available&&e(c)});var l=P(s,2),u=e=>{z(e,MN())};V(l,e=>{eM.workflows.length>0&&eM.filteredWorkflows.length===0&&!eM.loading&&e(u)}),T(n),z(e,n),D()}var FN=R(``),IN=R(`
        Workflows feature is unavailable.
        `),LN=R(`
        `),RN=R(`
        `),zN=R(``),BN=R(`
        `);function VN(e,t){E(t,!0),An(()=>{K.refreshTick,eM.fetchPage()});var n=BN(),r=M(n),i=P(M(r),2),a=M(i),o=e=>{var t=FN();G(M(t),{get icon(){return co},class:`form-action-icon`,"aria-hidden":`true`}),Ue(2),T(t),L(`click`,t,()=>eM.openCreate()),z(e,t)};V(a,e=>{eM.available&&e(o)}),T(i),T(r);var s=P(r,2),c=e=>{z(e,IN())};V(s,e=>{!eM.available&&!K.authError&&e(c)});var l=P(s,2),u=e=>{var t=LN(),n=M(t,!0);T(t),F(()=>B(n,eM.error)),z(e,t)};V(l,e=>{eM.error&&!K.authError&&e(u)});var d=P(l,2),f=e=>{var t=RN(),n=M(t);iw(M(n),{placeholder:`Filter by scope, name, hash, or guardrail...`,label:`Filter workflows by scope, name, hash, or guardrail`,get value(){return eM.filter},set value(e){eM.filter=e}}),T(n);var r=P(n,2),i=M(r),a=M(i,!0);T(i),T(r),T(t),F(()=>B(a,eM.filteredWorkflows.length+` active scopes`)),z(e,t)};V(d,e=>{eM.available&&e(f)});var p=P(d,2);ON(p,{});var m=P(p,2);PN(m,{});var h=P(m,2);H(h,20,()=>eM.guardrailRefs,e=>e,(e,t)=>{var n=zN(),r={};F(()=>{r!==(r=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(h),T(n),z(e,n),D()}Hr([`click`]);function HN(e,{from:t,to:n},r={}){var{delay:i=0,duration:a=e=>Math.sqrt(e)*120,easing:o=Ws}=r,s=getComputedStyle(e),c=s.transform===`none`?``:s.transform,[l,u]=s.transformOrigin.split(` `).map(parseFloat);l/=e.clientWidth,u/=e.clientHeight;var d=UN(e),f=e.clientWidth/n.width/d,p=e.clientHeight/n.height/d,m=t.left+t.width*l,h=t.top+t.height*u,g=n.left+n.width*l,_=n.top+n.height*u,v=(m-g)*f,y=(h-_)*p,b=t.width/n.width,x=t.height/n.height;return{delay:i,duration:typeof a==`function`?a(Math.sqrt(v*v+y*y)):a,easing:o,css:(e,t)=>`transform: ${c} translate(${t*v}px, ${t*y}px) scale(${e+t*b}, ${e+t*x});`}}function UN(e){if(`currentCSSZoom`in e)return e.currentCSSZoom;for(var t=e,n=1;t!==null;)n*=+getComputedStyle(t).zoom,t=t.parentElement;return n}var WN=null;function GN(){return WN===null&&(WN=typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`)),!!(WN&&WN.matches)}function KN(e){return GN()?0:e}function qN(e,t){return!t||!t.live?{duration:0}:Hs(e,{duration:KN(150)})}var JN=new class{#e=k(j({}));get workflowVersionsByID(){return I(this.#e)}set workflowVersionsByID(e){A(this.#e,e,!0)}workflowVersionRequests={};workflowFeatureCaps(){return{cache:vs.cacheVisible(),audit:vs.auditVisible(),usage:vs.usageVisible(),budget:vs.budgetsVisible(),guardrails:vs.guardrailsVisible(),failover:vs.booleanFlag(`FAILOVER_ENABLED`,!0)}}cacheWorkflowVersion(e){let t=String(e&&e.id||``).trim();return t?(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:e},e):null}cacheMissingWorkflowVersion(e){let t=String(e||``).trim();t&&(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:null})}workflowVersionCacheHas(e){return Object.prototype.hasOwnProperty.call(this.workflowVersionsByID||{},String(e||``).trim())}workflowVersionByID(e){let t=String(e||``).trim();return t&&this.workflowVersionCacheHas(t)?this.workflowVersionsByID[t]:null}async fetchWorkflowVersion(e){let t=String(e||``).trim();if(!t)return null;if(this.workflowVersionCacheHas(t))return this.workflowVersionsByID[t];if(this.workflowVersionRequests[t])return this.workflowVersionRequests[t];let n=(async()=>{let e=typeof AbortController==`function`?new AbortController:null,n=e?setTimeout(()=>e.abort(),1e4):null;try{let n=await ps(`/admin/workflows/`+encodeURIComponent(t),{label:`workflow`,signal:e?e.signal:void 0});if(n.stale)return null;if(n.status===404)return this.cacheMissingWorkflowVersion(t),null;if(!n.ok)return null;let r=n.data;return!r||typeof r!=`object`||Array.isArray(r)?(this.cacheMissingWorkflowVersion(t),null):this.cacheWorkflowVersion(r)}catch(e){return e&&e.name===`AbortError`||console.error(`Failed to fetch workflow version:`,e),null}finally{n!==null&&clearTimeout(n),delete this.workflowVersionRequests[t]}})();return this.workflowVersionRequests[t]=n,n}async prefetchAuditWorkflows(e){let t=[...new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.workflow_version_id||``).trim()).filter(Boolean))];t.length!==0&&await Promise.all(t.map(e=>this.fetchWorkflowVersion(e)))}auditEntryWorkflow(e){let t=String(e&&e.workflow_version_id||``).trim();return t?this.workflowVersionByID(t):null}},YN=6;function XN(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function ZN(e,t=0,n=null){let r=String(e||``).trim();if(!r)return``;if(t>YN)return r;let i=XN(r);return i==null?r:QN(i,t+1,n)||n&&n(i)||r}function QN(e,t=0,n=null,r=null){if(e==null||t>YN)return``;if(typeof e==`string`){let i=XN(e.trim());return i==null?``:QN(i,t+1,n,r)}if(typeof e!=`object`)return``;let i=r||new Set;if(i.has(e))return``;if(i.add(e),Array.isArray(e)){for(let r=0;r=400||tP(t&&t.response_body)}function rP(e){let t=e&&e.data?e.data:null;return t?$N(t.error_message)||(nP(e,t)?QN(t.response_body,0):``):``}function iP(e){if(e==null||String(e).trim()===``)return null;let t=Number(e);return!Number.isInteger(t)||t<0?null:t}function aP(e){let t=iP(e);return t===null?``:t===0?`Audit logs are retained indefinitely.`:t===1?`Audit logs are retained for 1 day.`:`Audit logs are retained for `+t+` days.`}function oP(e){let t=iP(e);return t===null?``:t===0?`Audit logs are retained `:`Audit logs are retained for `}function sP(e){let t=iP(e);return t===null?``:t===0?`indefinitely`:t===1?`1 day`:t+` days`}function cP({dateQuery:e,limit:t,offset:n,search:r,method:i,statusCode:a,stream:o}){let s=e;return s+=`&limit=`+t+`&offset=`+n,r&&(s+=`&search=`+encodeURIComponent(r)),i&&(s+=`&method=`+encodeURIComponent(i)),a&&(s+=`&status_code=`+encodeURIComponent(a)),o&&(s+=`&stream=`+encodeURIComponent(o)),s}function lP({sessionId:e,limit:t}){return`session_id=`+encodeURIComponent(e)+`&limit=`+(t||100)+`&offset=0`}function uP(e){return String(e&&e.session_id||``).trim()}function dP(e){let t=Number(e&&e.session_count);return Number.isFinite(t)&&t>1?t:1}function fP(e){return!!uP(e)&&dP(e)>1}function pP(e){return{entries:(Array.isArray(e&&e.sessions)?e.sessions:[]).filter(e=>e&&e.latest).map(e=>({...e.latest,session_id:uP(e.latest)||String(e.session_id||``).trim(),session_count:Number(e.count||1)})),total:Number(e&&e.total||0),limit:Number(e&&e.limit||25),offset:Number(e&&e.offset||0)}}function mP(e,t,n){let r=new Set((Array.isArray(n)?n:[]).flatMap(e=>vP(e))),i=(Array.isArray(t)?t:[]).filter(e=>!vP(e).some(e=>r.has(e))),a=new Set([...r,...i.flatMap(e=>vP(e))]),o=(e&&Array.isArray(e.entries)?e.entries:[]).filter(e=>e&&e._live&&!vP(e).some(e=>a.has(e)));return{entries:[...o,...i],preservedCount:o.length}}function hP(e,t){let n=e||{};if(!t)return n;if(n[t]){let e={...n};return delete e[t],e}return{...n,[t]:!0}}function gP(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>uP(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=n[e];return}a=!0}),a?i:n}function _P(e){return String(e&&e.id||``).trim()}function vP(e){if(!e)return[];let t=[],n=String(e.id||``).trim(),r=String(e.request_id||``).trim();return n&&t.push(`id:`+n),r&&t.push(`request:`+r),t}function yP(e){return!!(e&&e._live&&e._live_pending&&!e._audit_flushed)}function bP(e){let t=e&&e.customStartDate,n=e&&e.customEndDate;if(!t&&!n)return!0;let r=new Date;if(t){let e=new Date(t);if(e.setHours(0,0,0,0),Number.isFinite(e.getTime())&&re)return!1}return!0}function xP(e,t){return e&&Number(e.offset||0)===0&&!(t&&t.search)&&!(t&&t.method)&&!(t&&t.statusCode)&&!(t&&t.stream)&&bP(t)}function SP(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!xP(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>yP(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>vP(e))),s=[];return a.forEach(e=>{let t=vP(e);t.length!==0&&(t.some(e=>o.has(e))||(t.forEach(e=>o.add(e)),s.push(e)))}),s.length===0?r:(r.entries=[...s,...i].slice(0,r.limit||25),r.total=Number(r.total||0)+s.length,r)}function CP(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!xP(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>yP(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>vP(e))),s=new Map;i.forEach((e,t)=>{let n=uP(e);n&&!s.has(n)&&s.set(n,t)});let c=[],l=i;return a.forEach(e=>{let t=vP(e);if(t.length===0||t.some(e=>o.has(e)))return;let n=uP(e);if(n&&s.has(n)){let r=s.get(n);l===i&&(l=[...i]),l[r]={...e,session_count:Math.max(dP(l[r]),dP(e))},t.forEach(e=>o.add(e));return}t.forEach(e=>o.add(e)),c.push(e)}),r.entries=[...c,...l].slice(0,r.limit||25),r.total=Number(r.total||0)+c.length,r}function wP(e,t){let n=_P(t),r=e||{};if(!n)return r;if(r[n]){let e={...r};return delete e[n],e}return{...r,[n]:!0}}function TP(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>_P(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=!0;return}a=!0}),a?i:n}function EP(e){if(e==null)return`-`;let t=Number(e);return Number.isFinite(t)?t<=0?`pending`:t<1e6?Math.round(t/1e3)+` µs`:t<1e9?(t/1e6).toFixed(2)+` ms`:(t/1e9).toFixed(2)+` s`:`-`}function DP(e){if(e==null||e===``)return`status-unknown`;let t=Number(e);return Number.isFinite(t)?t>=500?`status-error`:t>=400?`status-warning`:t>=300?`status-neutral`:`status-success`:`status-unknown`}function OP(e){if(!e||!e._live||!e._live_pending)return!1;let t=String(e._live_state||``).trim();if(t===`audit.completed`||t===`audit.flushed`||t===`audit.detail`)return!1;if(e._response_partial)return!0;if(e.status_code!==null&&e.status_code!==void 0&&e.status_code!==``||Number(e.duration_ns||0)>0||e.error_type||e.error_message)return!1;let n=e.data||{};return!(n.response_headers||n.response_body||n.error_message)}function kP(e){let t=e&&e.data&&e.data.failover;return!t||typeof t!=`object`||Array.isArray(t)?null:String(t.target_model||t.targetModel||``).trim()||null}function AP(e){return(e&&e.data&&Array.isArray(e.data.attempts)?e.data.attempts:[]).map((e,t)=>({...e,seq:Number(e&&e.seq||t+1)})).sort((e,t)=>e.seq-t.seq)}function jP(e){let t=AP(e);return t.length>1||t.some(e=>!(e&&e.success))}function MP(e){if(!e)return`-`;let t=e.status_code||e.status;return t?String(t):e.success?`ok`:`error`}function NP(e){return String(e&&e.kind||``).trim()||`attempt`}function PP(e){if(!e)return`-`;let t=String(e.provider_name||``).trim(),n=String(e.provider_type||e.provider||``).trim();return t&&n&&t!==n?t+` (`+n+`)`:t||n||`-`}function FP(e){return String(e&&e.model||``).trim()||`-`}function IP(e){let t=AP(e);return t.length>1||t.some(e=>!(e&&e.success))?t:[]}function LP(e){return AP(e).length+`×`}function RP(e){let t=AP(e),n=t.filter(e=>!(e&&e.success)).length,r=t.length===1?`attempt`:`attempts`,i=t.length+` provider `+r;return n>0?i+` · `+n+` failed`:i}function zP(e){if(!e)return``;let t=[`#`+Number(e.seq||0)],n=NP(e);n&&n!==`attempt`&&t.push(n),t.push(MP(e));let r=PP(e);r&&r!==`-`&&t.push(r);let i=FP(e);return i&&i!==`-`&&t.push(i),t.push(e.success?`succeeded`:`failed`),t.join(` · `)}function BP(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t&&t.response_body!=null?t.response_body:null}return t.response_body!=null&&t.response_body!==``?t.response_body:null}function VP(e){if(!e||e.success)return``;let t=String(e.error_message||``).trim(),n=String(e.error_code||``).trim(),r=String(e.error_type||``).trim();return t&&n?n+`: `+t:t||n||r||`Provider attempt failed`}function HP(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t?t.response_headers:null}return t.response_headers||null}function UP(e){let t=Number(e&&e.status_code);return Number.isFinite(t)&&t>0?t:null}function WP(e,t){let n=!!(t&&t.success),r=e&&e.data?e.data:null,i=BP(e,t),a=HP(e,t),o=VP(t),s=i!=null&&i!==``,c=NP(t),l=AP(e).length<=1;return{title:`Response`,direction:`response`,seq:l?0:Number(t&&t.seq||0),kind:l||c===`attempt`?``:c,statusCode:l?null:UP(t),layout:`split`,entry:e,copyHeaders:a,copyBody:i,showErrorMessage:!!o,errorMessage:o,showHeaders:!!a,headers:a,showBody:s,body:i,showEmpty:!o&&!s&&!a,emptyMessage:`No response was captured for this attempt.`,showTooLarge:!!(n&&r&&r.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function GP(e){return e&&e.data&&Array.isArray(e.data.request_revisions)?e.data.request_revisions:[]}function KP(e){return GP(e).filter(e=>!(e&&e.no_change))}function qP(e){return GP(e).filter(e=>e&&e.no_change).map(e=>{let t=String(e.rewriter||`rewriter`);return{id:`step-`+Number(e.seq||0),rewriter:t,label:t+`: no change`,title:t+` ran and forwarded the request unchanged`}})}function JP(e){let t=Number(e&&e.bytes_before),n=Number(e&&e.bytes_after);if(!Number.isFinite(t)||!Number.isFinite(n)||t<=0||n>=t)return``;let r=(1-n/t)*100;return`-`+(r>=10?String(Math.round(r)):r.toFixed(1))+`%`}function YP(e,t){let n=t&&t.body,r=n!=null&&n!==``,i=KP(e).length<=1,a={rewriter:t&&t.rewriter||``,bytes:Number(t&&t.bytes_before||0)+` → `+Number(t&&t.bytes_after||0)};return t&&t.detail!=null&&(a.detail=t.detail),{title:`Rewritten`,direction:`request`,seq:i?0:Number(t&&t.seq||0),kind:t&&t.rewriter?String(t.rewriter):``,savingsLabel:JP(t),layout:`split`,entry:e,copyHeaders:a,copyBody:n,showErrorMessage:!1,errorMessage:null,showHeaders:!0,headers:a,headersTitle:`What changed`,showBody:r,body:n,showEmpty:!1,emptyMessage:``,showTooLarge:!r,tooLargeMessage:`Rewritten body not captured (body logging disabled or body too large).`}}function XP(e){let t=e&&e.usage;return!t||typeof t!=`object`?null:t}function ZP(e){let t=XP(e);return Number(t&&t.cached_input_tokens||0)>0}function QP(e){let t=XP(e),n=Number(t&&t.input_tokens||0),r=Number(t&&t.cached_input_tokens||0);return!Number.isFinite(n)||n<=0||!Number.isFinite(r)||r<=0?0:Math.max(0,Math.min(100,r/n*100))}function $P(e){let t=XP(e);if(!t)return``;let n=Number(t.input_tokens||0),r=Number(t.cached_input_tokens||0);return n<=0?tc(r)+` cached`:QP(e).toFixed(1)+`% cached`}function eF(e){return ZP(e)?$P(e):``}function tF(e,t){let n=XP(e);if(!n||!e||!e.data||!e.data.request_body)return null;let r=Number(n.estimated_cached_characters||0);if(!Number.isFinite(r)||r<=0||typeof t!=`function`)return null;let i=t(e.data.request_body);return!Array.isArray(i)||i.length===0?null:{characters:r,segments:i}}function nF(e,t){let n=e&&e.data?e.data:null,r=!n||!n.request_headers&&!n.request_body,i=r&&OP(e);return{title:`Request`,direction:`request`,layout:`split`,entry:e,copyHeaders:n&&n.request_headers,copyBody:n&&n.request_body,showErrorMessage:!1,errorMessage:null,showHeaders:!!(n&&n.request_headers),headers:n&&n.request_headers,showBody:!!(n&&n.request_body),body:n&&n.request_body,bodyCacheRatioLabel:eF(e),promptCacheHighlight:tF(e,t),noChangeSteps:qP(e),showEmpty:r&&!i,emptyMessage:`Request details were not captured.`,showPending:i,pendingMessage:`Waiting for request data…`,showTooLarge:!!(n&&n.request_body_too_big_to_handle),tooLargeMessage:`Request body was too large to capture.`}}function rF(e){let t=e&&e.data?e.data:null,n=rP(e),r=!t||!n&&!t.response_headers&&!t.response_body,i=r&&OP(e);return{title:`Response`,direction:`response`,layout:`split`,entry:e,copyHeaders:t&&t.response_headers,copyBody:t&&t.response_body,showErrorMessage:!!n,errorMessage:n,showHeaders:!!(t&&t.response_headers),headers:t&&t.response_headers,showBody:!!(t&&t.response_body),body:t&&t.response_body,streaming:!!(e&&e._response_partial&&t&&t.response_body)&&OP(e),showEmpty:r&&!i,emptyMessage:`Response details were not captured.`,showPending:i,pendingMessage:`Response in progress…`,showTooLarge:!!(t&&t.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function iF(e,t){let n=[{id:`request`,pane:nF(e,t)}];return KP(e).forEach(t=>{n.push({id:`revision-`+Number(t&&t.seq||0),pane:YP(e,t)})}),jP(e)?AP(e).forEach(t=>{n.push({id:`response-`+Number(t&&t.seq||0),pane:WP(e,t)})}):n.push({id:`response`,pane:rF(e)}),n}function aF(e){if(!jP(e))return`response`;let t=AP(e),n=null;return t.forEach(e=>{e&&e.success&&(n=e)}),n||=t[t.length-1],n?`response-`+Number(n.seq||0):`request`}function oF(e,t,n){return e&&(Array.isArray(n)?n:iF(t)).some(t=>t.id===e)?e:aF(t)}function sF(e,t,n){if(!t||!t.length)return null;let r=t.indexOf(n);r<0&&(r=0);let i;switch(e){case`ArrowRight`:case`ArrowDown`:i=(r+1)%t.length;break;case`ArrowLeft`:case`ArrowUp`:i=(r-1+t.length)%t.length;break;case`Home`:i=0;break;case`End`:i=t.length-1;break;default:return null}return t[i]}var cF=100;function lF(){return{entries:[],total:0,limit:25,offset:0}}var uF=new class{#e=k(j({}));get auditExpandedEntries(){return I(this.#e)}set auditExpandedEntries(e){A(this.#e,e,!0)}#t=k(j({}));get auditExpandedThreads(){return I(this.#t)}set auditExpandedThreads(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}auditFetchToken=0;get auditLog(){return _C.auditLog}set auditLog(e){_C.auditLog=e}get auditSearch(){return _C.auditSearch}set auditSearch(e){_C.auditSearch=e}get auditMethod(){return _C.auditMethod}set auditMethod(e){_C.auditMethod=e}get auditStatusCode(){return _C.auditStatusCode}set auditStatusCode(e){_C.auditStatusCode=e}get auditStream(){return _C.auditStream}set auditStream(e){_C.auditStream=e}get auditGroupSessions(){return _C.auditGroupSessions}liveFilters(){return{search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream,customStartDate:Dc.customStartDate,customEndDate:Dc.customEndDate}}toggleAuditGroupSessions(){_C.auditGroupSessions=!_C.auditGroupSessions,Ea(`gomodel_audit_group_sessions`,_C.auditGroupSessions),this.auditExpandedThreads={},_C.auditThreadChildren={},this.fetchAuditLog(!0)}async fetchAuditLog(e){let t=++this.auditFetchToken;this.loading=!0;try{e&&(this.auditLog.offset=0);let n=this.auditGroupSessions,r=cP({dateQuery:Dc.queryStr(),limit:this.auditLog.limit,offset:this.auditLog.offset,search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream}),i=await ps((n?`/admin/audit/sessions?`:`/admin/audit/log?`)+r,{label:`audit log`});if(i.stale||t!==this.auditFetchToken)return;if(!i.ok){this.auditLog=lF();return}let a=n?pP(i.data):i.data,o=(n?CP:SP)(a,this.auditLog&&this.auditLog.entries,this.liveFilters());Array.isArray(o.entries)||(o.entries=[]),this.auditLog=o,this.auditExpandedThreads=gP(this.auditExpandedThreads,o.entries),_C.auditThreadChildren=gP(_C.auditThreadChildren,o.entries);let s=[...o.entries,...this.loadedThreadChildren()];this.auditExpandedEntries=TP(this.auditExpandedEntries,s);try{await JN.prefetchAuditWorkflows(s)}catch(e){console.error(`Failed to prefetch audit workflows:`,e)}}catch(e){if(console.error(`Failed to fetch audit log:`,e),t!==this.auditFetchToken)return;this.auditLog=lF()}finally{t===this.auditFetchToken&&(this.loading=!1)}}loadedThreadChildren(){let e=_C.auditThreadChildren||{};return Object.keys(e).flatMap(t=>Array.isArray(e[t]&&e[t].entries)?e[t].entries:[])}isThreadExpanded(e){return!!(e&&this.auditExpandedThreads[e])}threadChildren(e){return e&&_C.auditThreadChildren[e]||null}async toggleThread(e){let t=uP(e);if(!t)return;let n=!this.isThreadExpanded(t);this.auditExpandedThreads=hP(this.auditExpandedThreads,t);let r=_C.auditThreadChildren[t];n&&!(r&&(r.loaded||r.loading))&&await this.fetchThreadEntries(e)}async fetchThreadEntries(e){let t=uP(e);if(!t)return;let n=_C.auditThreadChildren[t];_C.auditThreadChildren={..._C.auditThreadChildren,[t]:{loading:!0,loaded:!1,entries:n&&Array.isArray(n.entries)?n.entries:[],total:Number(n&&n.total||0)}};let r=()=>{let e={..._C.auditThreadChildren},n=e[t],r=n&&Array.isArray(n.entries)?n.entries:[];r.length>0?e[t]={loading:!1,loaded:!1,entries:r,total:r.length}:(delete e[t],this.auditExpandedThreads[t]&&(this.auditExpandedThreads=hP(this.auditExpandedThreads,t))),_C.auditThreadChildren=e};try{let n=await ps(`/admin/audit/log?`+lP({sessionId:t,limit:cF}),{label:`audit session`});if(n.stale){r();return}if(!n.ok)throw Error(`audit session fetch failed`);let i=_C.auditThreadChildren[t],a=this.auditLog.entries.find(e=>uP(e)===t),o=mP(i,n.data.entries,a?[a]:[e]);_C.auditThreadChildren={..._C.auditThreadChildren,[t]:{loading:!1,loaded:!0,entries:o.entries,total:Number(n.data.total||0)+o.preservedCount}}}catch(e){console.error(`Failed to fetch audit session entries:`,e),r()}}clearAuditFilters(){this.auditSearch=``,this.auditMethod=``,this.auditStatusCode=``,this.auditStream=``,this.fetchAuditLog(!0)}auditLogNextPage(){this.auditLog.offset+this.auditLog.limit0&&(this.auditLog.offset=Math.max(0,this.auditLog.offset-this.auditLog.limit),this.fetchAuditLog(!1))}isAuditEntryExpanded(e){let t=_P(e);return t?!!(this.auditExpandedEntries&&this.auditExpandedEntries[t]):!1}toggleAuditEntryExpanded(e){this.auditExpandedEntries=wP(this.auditExpandedEntries,e);let t=this.isAuditEntryExpanded(e);return t&&typeof _C.fetchAuditEntryDetail==`function`&&_C.fetchAuditEntryDetail(e),t}expandAuditEntry(e){this.isAuditEntryExpanded(e)||this.toggleAuditEntryExpanded(e)}};_C.fetchAuditLog=e=>uF.fetchAuditLog(e),_C.isAuditEntryExpanded=e=>uF.isAuditEntryExpanded(e);var dF=R(`
        `);function fF(e,t){E(t,!0);let n=aw(()=>uF.fetchAuditLog(!0));An(()=>n.cancel);var r=dF(),i=M(r);iw(M(i),{id:`audit-filter-search`,placeholder:`Search by request ID, model, provider, path, user path, or error...`,label:`Search by request ID, model, provider, path, user path, or error`,get oninput(){return n},get value(){return uF.auditSearch},set value(e){uF.auditSearch=e}}),T(i);var a=P(i,2),o=M(a),s=M(o);s.value=s.__value=``;var c=P(s);c.value=c.__value=`GET`;var l=P(c);l.value=l.__value=`POST`;var u=P(l);u.value=u.__value=`PUT`;var d=P(u);d.value=d.__value=`PATCH`;var f=P(d);f.value=f.__value=`DELETE`,T(o);var p=P(o,2),m=M(p);m.value=m.__value=``;var h=P(m);h.value=h.__value=`200`;var g=P(h);g.value=g.__value=`201`;var _=P(g);_.value=_.__value=`400`;var v=P(_);v.value=v.__value=`401`;var y=P(v);y.value=y.__value=`403`;var b=P(y);b.value=b.__value=`404`;var x=P(b);x.value=x.__value=`429`;var S=P(x);S.value=S.__value=`500`;var C=P(S);C.value=C.__value=`502`;var w=P(C);w.value=w.__value=`503`;var ee=P(w);ee.value=ee.__value=`504`,T(p);var te=P(p,2),ne=M(te);ne.value=ne.__value=``;var re=P(ne);re.value=re.__value=`true`;var ie=P(re);ie.value=ie.__value=`false`,T(te);var ae=P(te,2);G(M(ae),{get icon(){return Mo},class:`table-icon-svg`}),Ue(2),T(ae),T(a),T(r),L(`change`,o,()=>uF.fetchAuditLog(!0)),Gi(o,()=>uF.auditMethod,e=>uF.auditMethod=e),L(`change`,p,()=>uF.fetchAuditLog(!0)),Gi(p,()=>uF.auditStatusCode,e=>uF.auditStatusCode=e),L(`change`,te,()=>uF.fetchAuditLog(!0)),Gi(te,()=>uF.auditStream,e=>uF.auditStream=e),L(`click`,ae,()=>uF.clearAuditFilters()),z(e,r),D()}Hr([`change`,`click`]);var pF=R(`Live stream connecting…`),mF=R(` `),hF=R(`Live`),gF=R(` `);function _F(e,t){E(t,!0);let n=O(()=>_C.auditLivePauseReason()),r=O(()=>_C.liveLogsStreaming&&!I(n));var i=Qr(),a=N(i),o=e=>{var t=gF(),i=M(t);let a;var o=P(i,2),s=e=>{z(e,pF())},c=e=>{var t=mF(),r=M(t,!0);T(t),F(e=>B(r,e),[()=>pC(I(n))]),z(e,t)},l=e=>{z(e,hF())};V(o,e=>{_C.liveLogsStreaming?I(n)?e(c,1):e(l,-1):e(s)}),T(t),F(()=>a=U(i,1,`live-dot svelte-tve6yv`,null,a,{"is-streaming":I(r)})),z(e,t)},s=O(()=>vs.liveLogsVisible());V(a,e=>{I(s)&&e(o)}),z(e,i),D()}var vF=R(` `),yF=R(``);function bF(e,t){E(t,!0);let n=O(()=>[{key:`provider`,text:dc(t.entry)||`-`},{key:`model`,text:t.entry.requested_model||t.entry.model||`-`,mono:!0},{key:`user_path`,text:t.entry.user_path,mono:!0},{key:`request_id`,text:`request_id: `+(t.entry.request_id||`-`),mono:!0},{key:`ip`,text:t.entry.client_ip&&`ip: `+t.entry.client_ip,mono:!0},{key:`auth_key_id`,text:t.entry.auth_key_id&&`auth_key_id: `+t.entry.auth_key_id,mono:!0},{key:`alias`,text:t.entry.alias_used&&`alias`,class:`audit-alias-badge`},{key:`resolved`,text:t.entry.alias_used&&t.entry.resolved_model&&`resolved: `+mc(t.entry),mono:!0},{key:`failover`,text:kP(t.entry)&&`failover: `+kP(t.entry),mono:!0},{key:`stream`,text:t.entry.stream&&`stream`},{key:`error_type`,text:t.entry.error_type}].filter(e=>!!e.text));var r=yF(),i=P(M(r),2);H(i,21,()=>I(n),e=>e.key,(e,t)=>{var n=vF(),r=M(n,!0);T(n),F(()=>{U(n,1,Fi([`provider-badge`,I(t).class,{mono:I(t).mono}]),`svelte-hyopt0`),B(r,I(t).text)}),z(e,n)}),T(i),T(r),z(e,r),D()}var xF=R(``),SF=R(` `);function CF(e,t){E(t,!0);let n=O(()=>IP(t.entry)),r=O(()=>I(n).length>0?RP(t.entry):``),i=O(()=>I(n).length>0?LP(t.entry):``);var a=Qr(),o=N(a),s=e=>{var a=SF(),o=M(a);H(o,21,()=>I(n),e=>t.entry.id+`-pip-`+e.seq,(e,t)=>{var n=xF();let r;F(e=>{r=U(n,1,`audit-attempt-pip svelte-1eu22xn`,null,r,{"audit-attempt-success":!!(I(t)&&I(t).success),"audit-attempt-error":!(I(t)&&I(t).success)}),W(n,`title`,e)},[()=>zP(I(t))]),z(e,n)}),T(o);var s=P(o,2),c=M(s,!0);T(s),T(a),F(()=>{W(a,`title`,I(r)),W(a,`aria-label`,I(r)),B(c,I(i))}),z(e,a)};V(o,e=>{I(n).length>0&&e(s)}),z(e,a),D()}var wF=new Set([`instructions`,`messages`,`input`,`previous_response_id`,`choices`,`output`]);function TF(e){if(e==null)return``;if(typeof e==`string`)return e.trim();if(Array.isArray(e))return e.map(e=>typeof e==`string`?e:!e||typeof e!=`object`?``:typeof e.text==`string`?e.text:typeof e.output_text==`string`?e.output_text:``).filter(Boolean).join(` +`).trim();if(typeof e==`object`){if(typeof e.text==`string`)return e.text.trim();try{return JSON.stringify(e,null,2)}catch{return``}}return String(e).trim()}function EF(e){if(e==null)return[];if(typeof e==`string`)return e?[e]:[];if(Array.isArray(e))return e.flatMap(e=>typeof e==`string`?e?[e]:[]:!e||typeof e!=`object`?[]:typeof e.text==`string`?e.text?[e.text]:[]:typeof e.output_text==`string`&&e.output_text?[e.output_text]:[]);if(typeof e==`object`)return typeof e.text==`string`&&e.text?[e.text]:[];let t=String(e);return t?[t]:[]}function DF(e){if(e==null)return[];if(typeof e==`string`){let t=e.trim();return t?[{role:`user`,text:t}]:[]}if(!Array.isArray(e)){let t=TF(e);return t?[{role:`user`,text:t}]:[]}return e.map(e=>{if(!e||typeof e!=`object`)return null;let t=String(e.role||`user`).toLowerCase(),n=TF(e.content);return n?{role:t,text:n}:null}).filter(Boolean)}function OF(e){return!e||typeof e!=`object`?``:Array.isArray(e.content)?e.content.map(e=>e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(` +`).trim():TF(e.content)}function kF(e){if(!e||typeof e!=`object`)return[];let t=[];return t.push(...EF(e.instructions)),Array.isArray(e.messages)&&e.messages.forEach(e=>{!e||typeof e!=`object`||t.push(...EF(e.content))}),typeof e.input==`string`?t.push(e.input):Array.isArray(e.input)?e.input.forEach(e=>{!e||typeof e!=`object`||(t.push(...EF(e.content)),typeof e.text==`string`&&t.push(e.text))}):e.input&&typeof e.input==`object`&&(t.push(...EF(e.input.content)),typeof e.input.text==`string`&&t.push(e.input.text)),t.map(e=>String(e||``)).filter(e=>e.length>0)}var AF=e=>TF(e);function jF(e){if(!e||!e.data)return``;let t=QN(e.data.response_body,0,AF);if(t)return t;let n=e.data.error_message;if(n==null)return``;if(typeof n==`string`){let e=n.trim();return e?QN(XN(e),0,AF)||e:``}return QN(n,0,AF)||TF(n)}function MF(e){return Array.isArray(e)?e.some(e=>!e||typeof e!=`object`?!1:e.type===`message`||e.role===`assistant`||e.role===`user`||e.role===`system`?!0:Array.isArray(e.content)?e.content.some(e=>!e||typeof e!=`object`?!1:typeof e.text==`string`||e.type===`output_text`||e.type===`input_text`):!1):!1}function NF(e){if(!e)return!1;let t=String(e).toLowerCase();return t===`/v1/embeddings`||t===`/v1/embeddings/`||t.startsWith(`/v1/embeddings?`)||t.startsWith(`/v1/embeddings/`)}function PF(e){return e?!!IF(e):!1}function FF(e){let t=String(e||``).trim().split(`?`)[0].replace(/\/+$/,``).toLowerCase();return t.startsWith(`/v1/`)?t.slice(3):t}function IF(e){switch(FF(e)){case`/chat/completions`:return`chat`;case`/responses`:return`responses`;case`/messages`:return`messages`;default:return``}}function LF(e){if(!e||typeof e!=`object`)return null;try{return JSON.parse(JSON.stringify(e))}catch{return null}}function RF(e,t){if(!t||typeof t!=`object`)return;let n=e[e.length-1];try{if(n&&JSON.stringify(n)===JSON.stringify(t))return}catch{}e.push(t)}function zF(e){let t=IF(e&&e.path),n=e&&e.data&&e.data.request_body;return!t||!n||typeof n!=`object`?!1:t!==`responses`||(e.data&&e.data.response_body&&typeof e.data.response_body.id==`string`?e.data.response_body.id.trim():``)!==``||vI(n)!==``}function BF(e,t){let n=String(t||``).trim(),r=IF(e&&e.path),i=LF(e&&e.data&&e.data.request_body);if(!n||!r||!i)return null;let a=e&&e.data?e.data.response_body:null;if(r===`responses`){let e=a&&typeof a.id==`string`?a.id.trim():``,t=vI(i);return!e&&!t?null:(i.input=n,e&&!t?i.previous_response_id=e:delete i.previous_response_id,i)}let o=Array.isArray(i.messages)?i.messages:[];if(r===`chat`){let e=a&&Array.isArray(a.choices)?a.choices[0]:null;e&&e.message&&RF(o,LF(e.message)),o.push({role:`user`,content:n})}else a&&a.content!==void 0&&RF(o,{role:String(a.role||`assistant`),content:LF(a.content)||a.content}),o.push({role:`user`,content:n});return i.messages=o,i}var VF=new Set(`authorization.proxy-authorization.cookie.content-type.content-length.host.accept.connection.accept-encoding.content-encoding.transfer-encoding.user-agent.date.expect.upgrade.via.te.trailer.keep-alive.origin.referer.forwarded.x-real-ip.traceparent.tracestate.x-request-id.idempotency-key.x-idempotency-key.x-gomodel-timezone.x-gomodel-interaction-parent`.split(`.`));function HF(e,t,n=``){let r=e&&e.data&&e.data.request_headers,i={};return r&&typeof r==`object`&&Object.keys(r).forEach(e=>{let t=String(e).toLowerCase(),n=String(r[e]==null?``:r[e]);!e||!n||n===`[REDACTED]`||VF.has(t)||t.startsWith(`sec-`)||t.startsWith(`cf-`)||t.startsWith(`x-forwarded-`)||(i[e]=n)}),i[`X-GoModel-Interaction-Parent`]=String(t||e&&e.id||``).trim(),String(n||``).trim()&&(i[`X-Request-ID`]=String(n).trim()),i}function UF(e,t){let n=String(t||``).trim();return!n||!Array.isArray(e)?null:e.find(e=>String(e&&e.request_id||``).trim()===n)||null}function WF(e,t,n,r,i){let a=Array.isArray(e)?e:[],o=String(i&&i.id||``).trim(),s=String(i&&i.request_id||``).trim(),c=String(i&&i.session_id||``).trim(),l=String(r||``).trim(),u=GF(i),d=a.some(e=>o&&String(e&&e.id||``).trim()===o||s&&String(e&&e.request_id||``).trim()===s),f=!!l&&s===l,p=!!n&&c===String(n).trim(),m=!!u&&(u===String(t||``).trim()||a.some(e=>String(e&&e.id||``).trim()===u)),h=d||f||!l&&(p||m);return{accepted:h,submittedChild:f,followUpRequestID:h&&f&&o?``:l}}function GF(e){let t=e&&e.data&&e.data.request_headers;if(!t||typeof t!=`object`)return``;let n=Object.keys(t).find(e=>e.toLowerCase()===`x-gomodel-interaction-parent`);return n?String(t[n]||``).trim():``}function KF(e,t){return!Array.isArray(e)||!t?null:e.find(e=>String(e&&e.id||``)===String(t))||null}function qF(e){return!Array.isArray(e)||e.length===0?null:e.reduce((e,t)=>e?yI(t,e)>=0?t:e:t,null)}function JF(e,t){let n=new Set(Array.isArray(t)?t.map(String):[]);return qF((Array.isArray(e)?e:[]).filter(e=>{let t=String(e&&e.id||``);return n.has(t)&&e&&e.data&&e.data.request_body!=null}))}function YF(e,t){let n=qF(e);return!!n&&String(n.id||``)===String(t||``)}function XF(e){if(e&&e.conversation_payload)return!0;let t=e&&e.data?e.data.request_body:null,n=e&&e.data?e.data.response_body:null,r=t&&(Array.isArray(t.messages)||t.input!==void 0||typeof t.instructions==`string`||typeof t.previous_response_id==`string`),i=n&&(Array.isArray(n.choices)||MF(n.output));return!!(r||i)}function ZF(e){return!e||NF(e.path)?!1:PF(e.path)||XF(e)}function QF(e){let t=0,n=!1,r=!1,i=String(e||``);for(let e=0;e0&&a+1`,`>`).replaceAll(`"`,`"`).replaceAll(`'`,`'`)}function nI(e){return!!(e&&typeof e==`object`&&e.__audio__===!0)}function rI(e){let t=Number(e||0);if(!Number.isFinite(t)||t<=0)return`0 B`;let n=[`B`,`KB`,`MB`,`GB`],r=0,i=t;for(;i>=1024&&r`
        `+tI(t)+``+tI(aI(e[t]))+`
        `);return t.length?``:``}function sI(e){let t=iI(e.content_type),n=tI(t+` · `+rI(e.bytes)),r=oI(e.meta);if(e.stored&&e.encoding===`base64`&&e.data){let i=String(e.data).replace(/[^A-Za-z0-9+/=]/g,``);return`
        `+n+`
        `+r+`
        `}let i=e.too_large?`Audio too large to store.`:`Audio not logged. Set LOGGING_LOG_AUDIO_BODIES=true to capture playable audio.`;return`
        `+n+`
        `+tI(i)+`
        `+r+`
        `}function cI(e){try{return JSON.stringify(String(e)).slice(1,-1)}catch{return``}}function lI(e){if(!e||typeof e!=`object`)return null;let t=Number(e.characters||0);if(!Number.isFinite(t)||t<=0)return null;let n=Array.isArray(e.segments)?e.segments.map(e=>String(e||``)).filter(Boolean):[];return n.length===0?null:{remaining:Math.floor(t),segments:n,segmentIndex:0}}function uI(e,t){if(!t||t.remaining<=0||t.segmentIndex>=t.segments.length)return tI(e);let n=``,r=0,i=0;for(;t.remaining>0&&t.segmentIndex`+tI(l)+``,r=s+l.length,i=s+o.length,t.remaining-=c,c>=a.length){t.segmentIndex++;continue}break}return n?n+tI(e.slice(r)):tI(e)}function dI(e,t,n){let r=n&&typeof n.formatJSON==`function`?n.formatJSON:e=>String(e),i=n&&typeof n.canShowConversation==`function`?n.canShowConversation:()=>!1,a=lI(n&&n.promptCacheHighlight),o=r(t);if(!o||o===`Not captured`)return tI(o);if(!i(e))return o.split(` +`).map(e=>uI(e,a)).join(` +`);let s=o.split(` +`),c=[],l=0;for(;luI(e,a)).join(` +`);c.push(``+o+``),l=r+1;continue}c.push(uI(e,a)),l++}return c.join(` +`)}function fI(e){let t=String(e||``).toLowerCase();return t===`system`||t===`developer`?{role:`system`,label:`System Prompt`,className:`role-system`}:t===`assistant`?{role:`assistant`,label:`Agent`,className:`role-assistant`}:t===`error`?{role:`error`,label:`Error`,className:`role-error`}:t===`function_call`?{role:`function_call`,label:`Function Call`,className:`role-function-call`}:t===`function_result`?{role:`function_result`,label:`Function Result`,className:`role-function-result`}:{role:`user`,label:`User`,className:`role-user`}}function pI(e,t,{timestamp:n,entryID:r,isAnchor:i,isAfterAnchor:a,index:o,toolCalls:s,functionName:c}){let l=fI(e);return{uid:r+`-`+o,entryID:r,timestamp:n,text:t,role:l.role,roleLabel:l.label,roleClass:l.className,isAnchor:i,isAfterAnchor:a,toolCalls:Array.isArray(s)&&s.length>0?s:null,functionName:c||``}}function mI(e){return Array.isArray(e)?e.map(e=>{if(!e)return null;let t=e.function||e;return{name:t.name||e.name||``,arguments:t.arguments||e.arguments||``}}).filter(Boolean):[]}function hI(e,t,n){if(t&&Array.isArray(t.messages)&&t.messages.forEach(t=>{!t||!Array.isArray(t.tool_calls)||t.tool_calls.forEach(t=>{if(!t)return;let n=t.id||``,r=(t.function||t).name||t.name||``;n&&r&&(e[n]=r)})}),t&&Array.isArray(t.input)&&t.input.forEach(t=>{if(!t||typeof t!=`object`||t.type!==`function_call`)return;let n=t.id||t.call_id||``,r=t.name||``;n&&r&&(e[n]=r)}),n&&Array.isArray(n.choices)){let t=n.choices[0];t&&t.message&&Array.isArray(t.message.tool_calls)&&t.message.tool_calls.forEach(t=>{if(!t)return;let n=t.id||``,r=(t.function||t).name||t.name||``;n&&r&&(e[n]=r)})}n&&Array.isArray(n.output)&&n.output.forEach(t=>{if(!t||t.type!==`function_call`)return;let n=t.id||t.call_id||``,r=t.name||``;n&&r&&(e[n]=r)})}function gI(e){return Array.isArray(e)?`[`+e.map(gI).join(`,`)+`]`:e&&typeof e==`object`?`{`+Object.keys(e).sort().map(t=>JSON.stringify(t)+`:`+gI(e[t])).join(`,`)+`}`:JSON.stringify(e)}function _I(e){if(!e||typeof e!=`object`)return null;let t=[];if(e.system!==void 0&&t.push({system:e.system}),e.instructions!==void 0&&t.push({instructions:e.instructions}),Array.isArray(e.messages))t.push(...e.messages);else if(Array.isArray(e.input)&&e.previous_response_id==null&&e.conversation==null)t.push(...e.input);else return null;return t.map(gI)}function vI(e){let t=e&&e.conversation;return typeof t==`string`?t.trim():t&&typeof t.id==`string`?t.id.trim():``}function yI(e,t){let n=new Date(e&&e.timestamp).getTime(),r=new Date(t&&t.timestamp).getTime();if(Number.isFinite(n)&&Number.isFinite(r)&&n!==r)return n-r;let i=String(e&&e.timestamp||``).localeCompare(String(t&&t.timestamp||``));if(i!==0)return i;let a=String(e&&e.id||``),o=String(t&&t.id||``);return ao)}function bI(e,t){if(!Array.isArray(e)||e.length===0)return{messages:[],entryIDs:[]};let n=[...e].sort(yI),r={};n.forEach(e=>{let t=e.data&&e.data.request_body?e.data.request_body:null,n=e.data&&e.data.response_body?e.data.response_body:null;hI(r,t,n)});let i=[],a=new Set,o=new Set,s=new Set,c=[],l=null,u=0,d=n.findIndex(e=>e.id===t),f=e=>JSON.stringify({role:e.role,text:e.text,toolCalls:e.toolCalls,functionName:e.functionName});return n.forEach((e,n)=>{let p=e.id===t,m=d>=0&&n>d,h=e.timestamp,g=e.data&&e.data.request_body?e.data.request_body:null,_=e.data&&e.data.response_body?e.data.response_body:null,v=i.length,y=(t,n,{toolCalls:r,functionName:i}={})=>pI(t,n,{timestamp:h,entryID:e.id,isAnchor:p,isAfterAnchor:m,index:++u,toolCalls:r,functionName:i});if(g&&g.system!==void 0){let e=TF(g.system);e&&i.push(y(`system`,e))}if(g&&g.instructions!==void 0){let e=TF(g.instructions);e&&i.push(y(`system`,e))}g&&Array.isArray(g.messages)&&g.messages.forEach(e=>{if(!e)return;let t=(e.role||`user`).toLowerCase();if(t===`tool`){let t=TF(e.content),n=e.name||r[e.tool_call_id]||``;t&&i.push(y(`function_result`,t,{functionName:n}));return}if(t===`assistant`){let n=TF(e.content),r=mI(e.tool_calls);(n||r.length>0)&&i.push(y(t,n,{toolCalls:r}));return}let n=TF(e.content);n&&i.push(y(t,n))}),g&&g.input!==void 0&&(Array.isArray(g.input)?g.input.forEach(e=>{if(!(!e||typeof e!=`object`)){if(e.type===`function_call_output`){let t=typeof e.output==`string`?e.output:TF(e.output);t&&i.push(y(`function_result`,t,{functionName:r[e.call_id]||``}))}else if(e.type===`function_call`)i.push(y(`function_call`,``,{toolCalls:[{name:e.name||``,arguments:e.arguments||``}]}));else if(e.role){let t=String(e.role).toLowerCase(),n=TF(e.content);n&&i.push(y(t,n))}}}):DF(g.input).forEach(e=>{e.text&&i.push(y(e.role,e.text))}));let b=i.splice(v),x=b.map(f),S=_I(g),C=S!==null,w=GF(e),ee=!!w&&a.has(w),te=String(g&&g.previous_response_id||``).trim(),ne=vI(g),re=ee||!!te&&o.has(te)||!!ne&&s.has(ne);if(m){let e=C&&l&&l.length>0&&l.every((e,t)=>S[t]===e);if(C&&!e&&!ee||!C&&!re)return}p&&C&&(l=[...S]);let ie=String(e.id||``).trim();p&&(a.clear(),o.clear(),s.clear()),ie&&(p||m)&&a.add(ie),ne&&s.add(ne);let ae=0;for(;ae0;){let t=c.slice(-e),n=x.slice(0,e);if(t.every((e,t)=>e===n[t]))break;e--}i.push(...b.slice(e)),c.push(...x.slice(e))}if(_&&Array.isArray(_.choices)){let e=_.choices[0];if(e&&e.message){let t=(e.message.role||`assistant`).toLowerCase(),n=TF(e.message.content),r=mI(e.message.tool_calls);if(n||r.length>0){let e=y(t,n,{toolCalls:r});i.push(e),c.push(f(e))}}}if(_&&Array.isArray(_.output)&&_.output.forEach(e=>{if(!e)return;if(e.type===`function_call`){let t=y(`function_call`,``,{toolCalls:[{name:e.name||``,arguments:e.arguments||``}]});i.push(t),c.push(f(t));return}let t=(e.role||`assistant`).toLowerCase(),n=OF(e);if(n){let e=y(t,n);i.push(e),c.push(f(e))}}),_&&_.content!==void 0&&!Array.isArray(_.choices)&&!Array.isArray(_.output)){let e=String(_.role||`assistant`).toLowerCase(),t=TF(_.content);if(t){let n=y(e,t);i.push(n),c.push(f(n))}}let oe=jF(e);oe&&i.push(y(`error`,oe));let se=String(_&&_.id||``).trim();se&&o.add(se)}),{messages:i,entryIDs:[...a]}}function xI(e){return e.role===`function_call`?(e.toolCalls||[]).map(function(e){let t=e.arguments||``;try{t=JSON.stringify(JSON.parse(t),null,2)}catch{}return e.name+`(`+t+`)`}).join(` + +`):e.text||``}var SI=600*1e3,CI=15*1e3,wI=250,TI=class{#e=k(!1);get conversationOpen(){return I(this.#e)}set conversationOpen(e){A(this.#e,e,!0)}#t=k(!1);get conversationLoading(){return I(this.#t)}set conversationLoading(e){A(this.#t,e,!0)}#n=k(``);get conversationError(){return I(this.#n)}set conversationError(e){A(this.#n,e,!0)}#r=k(``);get conversationAnchorID(){return I(this.#r)}set conversationAnchorID(e){A(this.#r,e,!0)}#i=k(j([]));get conversationEntries(){return I(this.#i)}set conversationEntries(e){A(this.#i,e,!0)}#a=k(j([]));get conversationMessages(){return I(this.#a)}set conversationMessages(e){A(this.#a,e,!0)}#o=k(j([]));get conversationBranchEntryIDs(){return I(this.#o)}set conversationBranchEntryIDs(e){A(this.#o,e,!0)}#s=k(``);get conversationSessionID(){return I(this.#s)}set conversationSessionID(e){A(this.#s,e,!0)}#c=k(!1);get conversationTruncated(){return I(this.#c)}set conversationTruncated(e){A(this.#c,e,!0)}#l=k(!1);get conversationFollowLatest(){return I(this.#l)}set conversationFollowLatest(e){A(this.#l,e,!0)}#u=k(``);get conversationOpenedFromID(){return I(this.#u)}set conversationOpenedFromID(e){A(this.#u,e,!0)}#d=k(``);get followUpText(){return I(this.#d)}set followUpText(e){A(this.#d,e,!0)}#f=k(!1);get followUpSending(){return I(this.#f)}set followUpSending(e){A(this.#f,e,!0)}#p=k(``);get followUpError(){return I(this.#p)}set followUpError(e){A(this.#p,e,!0)}followUpRequestID=``;followUpAbort=null;conversationRequestToken=0;conversationReturnFocusEl=null;bodyPointerStart=null;#m=k(null);get conversationDialogEl(){return I(this.#m)}set conversationDialogEl(e){A(this.#m,e,!0)}#h=k(null);get conversationCloseBtnEl(){return I(this.#h)}set conversationCloseBtnEl(e){A(this.#h,e,!0)}#g=k(null);get conversationThreadEl(){return I(this.#g)}set conversationThreadEl(e){A(this.#g,e,!0)}canShowConversation(e){return ZF(e)}startBodyInteraction(e){this.bodyPointerStart={x:e.clientX,y:e.clientY}}_isBodyDrag(e){if(!this.bodyPointerStart)return!1;let t=Math.abs(e.clientX-this.bodyPointerStart.x),n=Math.abs(e.clientY-this.bodyPointerStart.y);return t>4||n>4}_hasActiveSelection(){let e=window.getSelection?window.getSelection():null;return!e||e.isCollapsed?!1:String(e.toString()||``).trim().length>0}handleBodyConversationClick(e,t){let n=this._isBodyDrag(e);if(this.bodyPointerStart=null,n||this._hasActiveSelection()||!this.canShowConversation(t))return;let r=e.target&&e.target.closest?e.target.closest(`[data-conversation-trigger="1"]`):null;r&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,r))}handleErrorConversationClick(e,t){let n=this._isBodyDrag(e);this.bodyPointerStart=null,!n&&(this._hasActiveSelection()||this.canShowConversation(t)&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,e.currentTarget)))}formatJSON(e){return ec(e)}renderBodyWithConversationHighlights(e,t,n){return dI(e,t,{formatJSON:e=>this.formatJSON(e),canShowConversation:e=>this.canShowConversation(e),promptCacheHighlight:n&&n.promptCacheHighlight})}async openConversation(e,t){if(!e||!e.id||!this.canShowConversation(e))return;let n=document.activeElement instanceof HTMLElement?document.activeElement:null;t instanceof HTMLElement?this.conversationReturnFocusEl=t:n&&n!==document.body&&(this.conversationReturnFocusEl=n);let r=++this.conversationRequestToken;if(this.conversationOpen=!0,this.conversationError=``,this.conversationAnchorID=e.id,this.conversationOpenedFromID=e.id,this.conversationSessionID=String(e.session_id||``).trim(),this.conversationEntries=[],this.conversationMessages=[],this.conversationBranchEntryIDs=[],this.conversationTruncated=!1,this.conversationFollowLatest=!1,this.followUpText=``,this.followUpError=``,this.followUpRequestID=``,document.body.classList.add(`conversation-drawer-open`),requestAnimationFrame(()=>this._focusConversationDrawer()),this._conversationEntryLivePending(e)){this.conversationFollowLatest=!0,this.conversationLoading=!1,this.applyLiveConversationEntry(e),this._scheduleLatestScroll();return}this.conversationLoading=!0,await this.fetchConversation(e.id,r,!0,!0)}_conversationEntryLivePending(e){return typeof _C.auditEntryLiveDetailPending==`function`&&_C.auditEntryLiveDetailPending(e)}applyLiveConversationEntry(e){let t=[...this.conversationEntries||[]],n=String(e.id||``).trim(),r=String(e.request_id||``).trim(),i=t.findIndex(e=>n&&String(e.id||``).trim()===n||r&&String(e.request_id||``).trim()===r);i>=0?t.splice(i,1,{...t[i],...e}):t.push(e),this.conversationEntries=t,!this.conversationSessionID&&e.session_id&&(this.conversationSessionID=String(e.session_id).trim()),this._applyConversationView(t),this.conversationFollowLatest&&this._scheduleLatestScroll()}_applyConversationView(e){let t=bI(e,this.conversationAnchorID);if(this.conversationFollowLatest){let n=JF(e,t.entryIDs);n&&n.id&&String(n.id)!==this.conversationAnchorID&&(this.conversationAnchorID=String(n.id),t=bI(e,this.conversationAnchorID))}this.conversationBranchEntryIDs=t.entryIDs,this.conversationMessages=t.messages}refreshLiveConversation(e){if(!this.conversationOpen||!e)return;let t=String(e.id||``).trim(),n=WF(this.conversationEntries,this.conversationAnchorID,this.conversationSessionID,this.followUpRequestID,e);if(!n.accepted)return;this.followUpRequestID=n.followUpRequestID,t&&n.submittedChild&&(this.conversationAnchorID=t,this.conversationFollowLatest=!0);let r=String(e._live_state||``).trim();if(r===`audit.flushed`||r===`audit.detail`){this.applyLiveConversationEntry(e),this.conversationMessages.length===0&&(this.conversationLoading=!0);let n=++this.conversationRequestToken;this.fetchConversation(this.conversationAnchorID||t,n,!1);return}this.applyLiveConversationEntry(e)}conversationLiveWaiting(){if(!this.conversationOpen)return!1;let e=new Set(this.conversationBranchEntryIDs||[]);return(this.conversationEntries||[]).some(t=>e.has(String(t&&t.id||``))&&t._live&&(typeof _C.liveAuditStateSettled!=`function`||!_C.liveAuditStateSettled(t._live_state)))}conversationLiveStatusText(){return(this.conversationMessages||[]).length>0?`Model is responding…`:`Waiting for request data…`}closeConversation(){this.followUpAbort&&this.followUpAbort.abort(),this.conversationOpen=!1,this.conversationRequestToken++,this.conversationSessionID=``,this.conversationBranchEntryIDs=[],this.conversationFollowLatest=!1,this.conversationOpenedFromID=``,this.followUpRequestID=``,this.followUpSending=!1,document.body.classList.remove(`conversation-drawer-open`);let e=this.conversationReturnFocusEl;this.conversationReturnFocusEl=null,e&&typeof e.focus==`function`&&document.contains(e)&&requestAnimationFrame(()=>e.focus())}_focusConversationDrawer(){if(!this.conversationOpen)return;let e=this.conversationCloseBtnEl;if(e&&typeof e.focus==`function`){e.focus();return}let t=this.conversationDialogEl;t&&typeof t.focus==`function`&&t.focus()}async fetchConversation(e,t,n=!0,r=!1){try{let i=await ps(`/admin/audit/conversation?`+(`log_id=`+encodeURIComponent(e)+`&limit=120`),{label:`audit conversation`});if(t!==this.conversationRequestToken||i.stale)return;if(!i.ok){this.conversationError=`Unable to load interactions.`,this.conversationEntries=[],this.conversationMessages=[],this.conversationBranchEntryIDs=[];return}let a=i.data||{},o=a.anchor_id||e;this.conversationEntries=Array.isArray(a.entries)?a.entries:[],r&&(this.conversationFollowLatest=YF(this.conversationEntries,o)),this.conversationAnchorID=o;let s=this.conversationEntries.find(e=>e.id===this.conversationAnchorID);s&&s.session_id&&(this.conversationSessionID=String(s.session_id).trim()),this.conversationTruncated=!!a.truncated,this._applyConversationView(this.conversationEntries),this.conversationFollowLatest?this._scheduleLatestScroll():n&&this._scheduleAnchorScroll()}catch(e){if(t!==this.conversationRequestToken)return;console.error(`Failed to fetch audit conversation:`,e),this.conversationError=`Failed to load interactions.`,this.conversationEntries=[],this.conversationMessages=[],this.conversationBranchEntryIDs=[]}finally{t===this.conversationRequestToken&&(this.conversationLoading=!1)}}selectedConversationEntry(){return KF(this.conversationEntries,this.conversationAnchorID)}followUpKind(){let e=this.selectedConversationEntry();return zF(e)?IF(e.path):``}canSendFollowUp(){return!!this.followUpKind()&&!!String(this.followUpText||``).trim()&&!this.followUpSending&&!this.conversationLiveWaiting()}async sendFollowUp(){if(!this.canSendFollowUp())return;let e=this.selectedConversationEntry(),t=BF(e,this.followUpText);if(!e||!t)return;let n=this.conversationAnchorID,r=DI(),i=new AbortController,a=!1,o=setTimeout(()=>{a=!0,i.abort()},SI);this.followUpSending=!0,this.followUpError=``,this.followUpRequestID=r,this.followUpAbort=i;try{let a=HF(e,n,r),o=await ds(e.path,{method:`POST`,headers:a,body:JSON.stringify(t),signal:i.signal}),s=String(o.headers.get(`X-Request-ID`)||``).trim();if(s&&this.followUpRequestID&&(this.followUpRequestID=s),!o.ok){let e=`Unable to send message.`;try{let t=await o.json();e=t&&t.error&&t.error.message||e}catch{}this.followUpError=e,(this.followUpRequestID===r||this.followUpRequestID===s)&&(this.followUpRequestID=``);return}if(this.followUpText=``,await EI(o),!_C.liveLogsStreaming&&this.conversationOpen){let e=++this.conversationRequestToken;await this._selectPersistedFollowUp(n,this.followUpRequestID,e,i.signal)}}catch(e){hs(e)||i.signal.aborted?a&&this.conversationOpen&&(this.followUpError=`The request timed out.`):(console.error(`Failed to send interaction follow-up:`,e),this.followUpError=`Failed to send message.`)}finally{clearTimeout(o),this.followUpAbort===i&&(this.followUpAbort=null,this.followUpSending=!1)}}async _selectPersistedFollowUp(e,t,n,r){let i=Date.now()+CI;for(;this.conversationOpen&&n===this.conversationRequestToken&&Date.now(){let e=this.conversationThreadEl;if(!e)return;let t=e.querySelectorAll(`[data-conversation-anchor="true"]`),n=t[t.length-1];n&&typeof n.scrollIntoView==`function`&&n.scrollIntoView({block:`center`})})}_scheduleLatestScroll(){requestAnimationFrame(()=>{let e=this.conversationThreadEl;if(!e)return;let t=e.lastElementChild;t&&typeof t.scrollIntoView==`function`&&t.scrollIntoView({block:`end`})})}};async function EI(e){let t=e&&e.body&&typeof e.body.getReader==`function`?e.body.getReader():null;if(!t){await e.text();return}for(;!(await t.read()).done;);}function DI(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID==`function`?globalThis.crypto.randomUUID():`dashboard-`+Date.now().toString(36)+`-`+Math.random().toString(36).slice(2)}function OI(e,t){return new Promise((n,r)=>{let i,a=()=>{clearTimeout(i),r(new DOMException(`Aborted`,`AbortError`))};if(i=setTimeout(()=>{t&&t.removeEventListener(`abort`,a),n()},e),t){if(t.aborted){a();return}t.addEventListener(`abort`,a,{once:!0})}})}var kI=new TI;_C.refreshLiveConversation=e=>kI.refreshLiveConversation(e);var AI=R(``),jI=R(` `),MI=R(``),NI=R(`
        `);function PI(e,t){E(t,!0);let n=ya(t,`thread`,3,null),r=ya(t,`expanded`,3,!1),i=ya(t,`onactivate`,3,null);function a(e){e.preventDefault(),i()&&i()()}function o(e){e.stopPropagation(),e.preventDefault(),n().ontoggle()}function s(e){e.stopPropagation(),e.preventDefault(),uF.expandAuditEntry(t.entry),kI.openConversation(t.entry,e.currentTarget)}var c=NI();let l;var u=M(c),d=M(u),f=e=>{var t=AI(),r=M(t);{let e=O(()=>n().expanded?Ba:Va);G(r,{get icon(){return I(e)},class:`audit-thread-expander-svg`})}var i=P(r,2),a=M(i,!0);T(i),T(t),F(()=>{W(t,`aria-expanded`,n().expanded),W(t,`title`,`Session with `+n().count+` requests`),W(t,`aria-label`,`Session with `+n().count+` requests, `+(n().expanded?`collapse`:`expand`)),B(a,n().count)}),L(`click`,t,o),z(e,t)};V(d,e=>{n()&&e(f)});var p=P(d,2),m=M(p,!0);T(p);var h=P(p,2),g=M(h,!0);T(h);var _=P(h,2),v=e=>{var n=jI(),r=M(n,!0);T(n),F(e=>B(r,e),[()=>hc(t.entry)]),z(e,n)};V(_,e=>{(t.entry.requested_model||t.entry.model)&&e(v)});var y=P(_,2),b=M(y,!0);T(y),T(u);var x=P(u,2),S=M(x);CF(S,{get entry(){return t.entry}});var C=P(S,2),w=M(C,!0);T(C);var ee=P(C,2),te=M(ee,!0);T(ee);var ne=P(ee,2),re=e=>{var t=MI();G(M(t),{get icon(){return Va},class:`audit-conversation-trigger-svg`}),T(t),L(`click`,t,s),z(e,t)},ie=O(()=>kI.canShowConversation(t.entry));V(ne,e=>{I(ie)&&e(re)}),T(x),T(c),F((e,n,i,a,o)=>{l=U(c,1,`audit-entry-summary svelte-17mysgz`,null,l,e),W(c,`aria-expanded`,r()),U(p,1,`audit-status-badge ${n??``}`,`svelte-17mysgz`),B(m,t.entry.status_code||`-`),B(g,t.entry.method||`-`),B(b,t.entry.path||`-`),W(C,`title`,i),B(w,a),B(te,o)},[()=>({"audit-entry-summary-live-in-progress":OP(t.entry)}),()=>DP(t.entry.status_code),()=>lc(t.entry.timestamp),()=>ss.formatTimestamp(t.entry.timestamp),()=>EP(t.entry.duration_ns)]),L(`click`,c,a),z(e,c),D()}Hr([`click`]);var FI=R(``);function II(e,t){E(t,!0);let n=ya(t,`label`,3,`Copy`),r=ya(t,`copiedLabel`,3,`Copied`),i=ya(t,`errorLabel`,3,``),a=ya(t,`class`,3,`btn`),o=O(()=>t.state.error&&i()?i():t.state.copied?r():n());var s=FI();let c;var l=M(s),u=e=>{G(e,{get icon(){return Ua},width:`14`,height:`14`,"stroke-width":`2.5`})},d=e=>{G(e,{get icon(){return Ka},width:`14`,height:`14`})};V(l,e=>{t.state.copied?e(u):e(d,-1)});var f=P(l,2),p=M(f,!0);T(f),T(s),F(()=>{c=U(s,1,Fi([`copy-feedback-btn`,a()]),null,c,{"copy-feedback-btn-copied":t.state.copied}),B(p,I(o))}),L(`click`,s,e=>{e.preventDefault(),t.onclick?.(e)}),z(e,s),D()}Hr([`click`]);var LI=R(`
        Error Message
         
        `),RI=R(`
         
        `),zI=R(` `),BI=R(` streaming`),VI=R(`
        Body
        `),HI=R(`

        `),UI=R(`

        `),WI=R(`

        `),GI=R(`
        `);function KI(e,t){E(t,!0);let n=nM({logPrefix:`Failed to copy audit payload:`}),r=nM({logPrefix:`Failed to copy audit payload:`}),i=O(()=>t.pane&&t.pane.showHeaders?ec(t.pane.headers):``),a=O(()=>!t.pane||!t.pane.showBody?``:nI(t.pane.body)?sI(t.pane.body):kI.renderBodyWithConversationHighlights(t.pane.entry,t.pane.body,{promptCacheHighlight:t.pane.promptCacheHighlight})),o=O(()=>!!(t.pane&&kI.canShowConversation(t.pane.entry)));function s(e){e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),kI.handleErrorConversationClick(e,t.pane.entry))}var c=GI();let l;var u=M(c),d=e=>{var n=LI(),r=P(M(n),2);let i;var a=M(r,!0);T(r),T(n),F(()=>{i=U(r,1,`audit-json audit-pane-error-message svelte-1h5puht`,null,i,{"audit-pane-clickable-preview":I(o)}),W(r,`role`,I(o)?`button`:null),W(r,`tabindex`,I(o)?0:null),B(a,t.pane.errorMessage)}),L(`mousedown`,r,e=>kI.startBodyInteraction(e)),L(`keydown`,r,s),L(`click`,r,e=>kI.handleErrorConversationClick(e,t.pane.entry)),z(e,n)};V(u,e=>{t.pane.showErrorMessage&&e(d)});var f=P(u,2),p=e=>{var n=RI(),a=M(n),o=M(a),s=M(o,!0);T(o),II(P(o,2),{get state(){return r},label:`Copy Headers`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>r.copy(t.pane.copyHeaders,ec)}),T(a);var c=P(a,2),l=M(c,!0);T(c),T(n),F(()=>{B(s,t.pane.headersTitle||`Headers`),B(l,I(i))}),z(e,n)};V(f,e=>{t.pane.showHeaders&&e(p)});var m=P(f,2),h=e=>{var r=VI(),i=M(r),o=M(i),s=P(M(o),2),c=e=>{var n=zI(),r=M(n,!0);T(n),F(()=>B(r,t.pane.bodyCacheRatioLabel)),z(e,n)};V(s,e=>{t.pane.bodyCacheRatioLabel&&e(c)});var l=P(s,2),u=e=>{z(e,BI())};V(l,e=>{t.pane.streaming&&e(u)}),T(o),II(P(o,2),{get state(){return n},label:`Copy Body`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>n.copy(t.pane.copyBody,ec)}),T(i);var d=P(i,2);hi(d,()=>I(a),!0),T(d),T(r),L(`mousedown`,d,e=>kI.startBodyInteraction(e)),L(`click`,d,e=>kI.handleBodyConversationClick(e,t.pane.entry)),z(e,r)};V(m,e=>{t.pane.showBody&&e(h)});var g=P(m,2),_=e=>{var n=HI(),r=M(n,!0);T(n),F(()=>B(r,t.pane.emptyMessage)),z(e,n)};V(g,e=>{t.pane.showEmpty&&e(_)});var v=P(g,2),y=e=>{var n=UI(),r=P(M(n),2),i=M(r,!0);T(r),T(n),F(()=>B(i,t.pane.pendingMessage)),z(e,n)};V(v,e=>{t.pane.showPending&&e(y)});var b=P(v,2),x=e=>{var n=WI(),r=M(n,!0);T(n),F(()=>B(r,t.pane.tooLargeMessage)),z(e,n)};V(b,e=>{t.pane.showTooLarge&&e(x)}),T(c),F(()=>l=U(c,1,`audit-pane svelte-1h5puht`,null,l,{"audit-pane-split":t.pane&&t.pane.layout===`split`,"audit-pane-split-single":t.pane&&t.pane.layout===`split`&&!(t.pane.showHeaders&&t.pane.showBody)})),z(e,c),D()}Hr([`mousedown`,`keydown`,`click`]);var qI=R(` `),JI=R(` `),YI=R(` `),XI=R(` `),ZI=R(``),QI=R(`
        `),$I=R(`
        `);function eL(e,t){E(t,!0);let n=ya(t,`panes`,19,()=>[]),r=k(null),i=O(()=>oF(I(r),t.entry,n())),a=e=>`audit-tab-`+t.entry.id+`-`+e,o=e=>`audit-tabpanel-`+t.entry.id+`-`+e;function s(e,t){let i=n().map(e=>e.id),a=sF(e.key,i,t);a!=null&&(e.preventDefault(),((e.currentTarget?.closest?.(`.audit-pane-tablist`))?.querySelectorAll(`.audit-pane-tab`)[i.indexOf(a)])?.focus?.(),A(r,a,!0))}var c=$I(),l=M(c);H(l,21,n,e=>e.id,(e,t)=>{var n=ZI();let c;var l=M(n),u=M(l),d=e=>{G(e,{get icon(){return Ma}})},f=e=>{G(e,{get icon(){return ja}})};V(u,e=>{I(t).pane.direction===`request`?e(d):I(t).pane.direction===`response`&&e(f,1)}),T(l);var p=P(l,2),m=M(p,!0);T(p);var h=P(p,2),g=e=>{var n=qI(),r=M(n);T(n),F(()=>B(r,`#${I(t).pane.seq??``}`)),z(e,n)};V(h,e=>{I(t).pane.seq&&e(g)});var _=P(h,2),v=e=>{var n=JI(),r=M(n,!0);T(n),F(()=>{U(n,1,`provider-badge audit-pane-kind audit-pane-kind-${I(t).pane.kind??``}`,`svelte-1bc5vi5`),B(r,I(t).pane.kind)}),z(e,n)};V(_,e=>{I(t).pane.kind&&e(v)});var y=P(_,2);H(y,17,()=>I(t).pane.noChangeSteps||[],e=>e.id,(e,t)=>{var n=YI(),r=M(n,!0);T(n),F(()=>{W(n,`title`,I(t).title),B(r,I(t).label)}),z(e,n)});var b=P(y,2),x=e=>{var n=XI(),r=M(n,!0);T(n),F(()=>B(r,I(t).pane.savingsLabel)),z(e,n)};V(b,e=>{I(t).pane.savingsLabel&&e(x)});var S=P(b,2),C=e=>{var n=JI(),r=M(n,!0);T(n),F(e=>{U(n,1,`audit-status-badge ${e??``}`,`svelte-1bc5vi5`),B(r,I(t).pane.statusCode)},[()=>DP(I(t).pane.statusCode)]),z(e,n)};V(S,e=>{I(t).pane.statusCode&&e(C)}),T(n),F((e,r)=>{c=U(n,1,`audit-pane-tab svelte-1bc5vi5`,null,c,{"audit-pane-tab-active":I(i)===I(t).id}),W(n,`aria-selected`,I(i)===I(t).id),W(n,`id`,e),W(n,`aria-controls`,r),W(n,`tabindex`,I(i)===I(t).id?0:-1),U(l,1,Fi([`audit-pane-icon`,I(t).pane.direction&&`audit-pane-icon-${I(t).pane.direction}`]),`svelte-1bc5vi5`),B(m,I(t).pane.title)},[()=>a(I(t).id),()=>o(I(t).id)]),L(`keydown`,n,e=>s(e,I(t).id)),L(`click`,n,()=>A(r,I(t).id,!0)),z(e,n)}),T(l),H(P(l,2),17,n,e=>e.id,(e,t)=>{var n=QI();let r;KI(M(n),{get pane(){return I(t).pane}}),T(n),F((e,a)=>{W(n,`id`,e),W(n,`aria-labelledby`,a),r=Hi(n,``,r,{display:I(i)===I(t).id?null:`none`})},[()=>o(I(t).id),()=>a(I(t).id)]),z(e,n)}),T(c),z(e,c),D()}Hr([`keydown`,`click`]);var tL=R(`
        `),nL=R(`
        `);function rL(e,t){E(t,!0);let n=ya(t,`thread`,3,null),r=O(()=>uF.isAuditEntryExpanded(t.entry)),i=O(()=>kI.conversationOpen&&String(kI.conversationAnchorID||``)===String(t.entry.id||``)),a=O(()=>I(r)?iF(t.entry,kF):[]),o=O(()=>I(r)?$M(t.entry,JN.auditEntryWorkflow(t.entry),JN.workflowFeatureCaps()):null);function s(){uF.toggleAuditEntryExpanded(t.entry)}var c=nL();let l;var u=M(c);PI(u,{get entry(){return t.entry},get thread(){return n()},get expanded(){return I(r)},onactivate:s});var d=P(u,2),f=e=>{var n=tL(),r=M(n),i=e=>{hM(e,{get chart(){return I(o)}})};V(r,e=>{I(o)&&e(i)});var s=P(r,2);eL(s,{get entry(){return t.entry},get panes(){return I(a)}}),bF(P(s,2),{get entry(){return t.entry}}),T(n),ki(3,n,()=>Vs,()=>({y:-6,duration:KN(150)})),z(e,n)};V(d,e=>{I(r)&&e(f)}),T(c),F(()=>l=U(c,1,`audit-entry svelte-cmjgwr`,null,l,{"audit-entry-interactions-open":I(i)})),z(e,c),D()}var iL=R(`
        `),aL=R(`
        `),oL=R(`

        `),sL=R(`
        `),cL=R(`
        `);function lL(e,t){E(t,!0);let n=O(()=>uP(t.entry)),r=O(()=>uF.isThreadExpanded(I(n))),i=O(()=>uF.threadChildren(I(n))),a=O(()=>I(i)&&!I(i).loading&&Number(I(i).total||0)>I(i).entries.length+1);var o=Qr(),s=N(o),c=e=>{rL(e,{get entry(){return t.entry}})},l=O(()=>!fP(t.entry)),u=e=>{var n=cL(),o=M(n);{let e=O(()=>({count:dP(t.entry),expanded:I(r),ontoggle:()=>uF.toggleThread(t.entry)}));rL(o,{get entry(){return t.entry},get thread(){return I(e)}})}var s=P(o,2),c=e=>{var t=sL(),n=M(t),r=e=>{var t=iL();hS(M(t),{size:14,label:`Loading session requests`}),T(t),z(e,t)};V(n,e=>{I(i)&&I(i).loading&&e(r)});var o=P(n,2);H(o,17,()=>I(i)&&I(i).entries||[],e=>e.id,(e,t)=>{var n=aL();rL(M(n),{get entry(){return I(t)}}),T(n),z(e,n)});var s=P(o,2),c=e=>{var t=oL(),n=M(t);T(t),F(()=>B(n,`Showing the latest ${I(i).entries.length+1} of ${I(i).total??``} + requests in this session.`)),z(e,t)};V(s,e=>{I(a)&&e(c)}),T(t),ki(3,t,()=>Hs,()=>({duration:KN(150)})),z(e,t)};V(s,e=>{I(r)&&e(c)}),T(n),z(e,n)};V(s,e=>{I(l)?e(c):e(u,-1)}),z(e,o),D()}var uL=R(`
         
        `),dL=R(`
         
        `),fL=R(`
        `),pL=R(`
        `),mL=R(`
        `,1),hL=R(`
        `);function gL(e,t){E(t,!0);let n=O(()=>t.msg.role===`function_call`||t.msg.role===`function_result`);function r(e){return e.role===`function_call`?(e.toolCalls||[]).map(e=>e.name+`()`).join(`, `):(e.functionName?e.functionName+`: `:``)+e.text}var i=hL(),a=M(i),o=e=>{var n=uL(),i=M(n),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=M(s,!0);T(s),T(i);var l=P(i,2),u=M(l,!0);T(l),T(n),F((e,n)=>{B(o,t.msg.roleLabel),B(c,e),B(u,n)},[()=>r(t.msg),()=>xI(t.msg)]),z(e,n)},s=e=>{var n=mL(),r=N(n),i=M(r),a=M(i,!0);T(i);var o=P(i,2),s=M(o,!0);T(o),T(r);var c=P(r,2),l=e=>{var n=dL(),r=M(n,!0);T(n),F(()=>B(r,t.msg.text)),z(e,n)};V(c,e=>{t.msg.text&&e(l)});var u=P(c,2),d=e=>{var n=pL();H(n,23,()=>t.msg.toolCalls,(e,t)=>e.name+`-`+t,(e,t)=>{var n=fL(),r=M(n),i=M(r,!0);T(r),T(n),F(()=>B(i,I(t).name+`()`)),z(e,n)}),T(n),z(e,n)};V(u,e=>{t.msg.toolCalls&&e(d)}),F(e=>{B(a,t.msg.roleLabel),B(s,e)},[()=>ss.formatTimestamp(t.msg.timestamp)]),z(e,n)};V(a,e=>{I(n)?e(o):e(s,-1)}),T(i),F(()=>{U(i,1,Fi([I(n)?`chat-function-note`:`chat-message`,t.msg.roleClass,{"is-anchor":t.msg.isAnchor,"is-after-anchor":t.msg.isAfterAnchor}]),`svelte-12s99s5`),W(i,`data-conversation-anchor`,t.msg.isAnchor?`true`:void 0),W(i,`data-entry-id`,t.msg.entryID)}),z(e,i),D()}var _L=R(``),vL=R(`
        `),yL=R(`

        Loading interactions...

        `),bL=R(`

        No interaction data available for this entry.

        `),xL=R(`
        `),SL=R(`

        Showing the newest part of this session and the selected log.

        `),CL=R(`
        `),wL=R(``),TL=R(`
        `),EL=R(``),DL=R(`

        Interactions

        `,1);function OL(e,t){E(t,!0);let n=kI;An(()=>{if(!n.conversationOpen)return;let e=Er(()=>ka.opened()),t=e=>{e.key===`Escape`&&ka.openCount<=1&&n.closeConversation()};return window.addEventListener(`keydown`,t),()=>{ka.closed(e),window.removeEventListener(`keydown`,t)}});var r=DL(),i=N(r),a=e=>{var t=_L();L(`click`,t,()=>n.closeConversation()),z(e,t)};V(i,e=>{n.conversationOpen&&e(a)});var o=P(i,2);let s;var c=M(o);Ts(P(M(c),2),{label:`Close interactions`,onclick:()=>n.closeConversation(),get el(){return n.conversationCloseBtnEl},set el(e){n.conversationCloseBtnEl=e}}),T(c);var l=P(c,2),u=M(l),d=e=>{var t=vL(),r=M(t,!0);T(t),F(()=>B(r,n.conversationError)),z(e,t)};V(u,e=>{n.conversationError&&e(d)});var f=P(u,2),p=e=>{z(e,yL())};V(f,e=>{n.conversationLoading&&e(p)});var m=P(f,2),h=e=>{z(e,bL())},g=O(()=>!n.conversationLoading&&!n.followUpSending&&!n.conversationError&&n.conversationMessages.length===0&&!n.conversationLiveWaiting());V(m,e=>{I(g)&&e(h)});var _=P(m,2),v=e=>{var t=xL();H(t,21,()=>n.conversationMessages,e=>e.uid,(e,t)=>{gL(e,{get msg(){return I(t)}})}),T(t),ga(t,e=>n.conversationThreadEl=e,()=>n?.conversationThreadEl),z(e,t)};V(_,e=>{n.conversationMessages.length>0&&e(v)});var y=P(_,2),b=e=>{z(e,SL())};V(y,e=>{n.conversationTruncated&&e(b)});var x=P(y,2),S=e=>{var t=CL(),r=P(M(t),2),i=M(r,!0);T(r),T(t),F(e=>B(i,e),[()=>n.conversationLiveStatusText()]),z(e,t)},C=O(()=>n.conversationLiveWaiting());V(x,e=>{I(C)&&e(S)}),T(l);var w=P(l,2),ee=e=>{var t=EL(),r=M(t),i=e=>{var t=TL(),r=P(M(t),2);ft(r);var i=P(r,2),a=e=>{var t=wL(),r=M(t,!0);T(t),F(()=>B(r,n.followUpError)),z(e,t)};V(i,e=>{n.followUpError&&e(a)});var o=P(i,2),s=M(o),c=M(s,!0);T(s);var l=P(s,2),u=M(l,!0);T(l),T(o),T(t),F((e,t,i)=>{r.disabled=e,B(c,t),l.disabled=i,B(u,n.followUpSending?`Sending…`:`Send`)},[()=>n.followUpSending||n.conversationLiveWaiting(),()=>n.selectedConversationEntry()?.path||``,()=>!n.canSendFollowUp()]),Vr(`submit`,t,e=>{e.preventDefault(),n.sendFollowUp()}),da(r,()=>n.followUpText,e=>n.followUpText=e),z(e,t)},a=O(()=>n.followUpKind());V(r,e=>{I(a)&&e(i)});var o=P(r,2),s=M(o,!0);T(o),T(t),F(()=>B(s,n.conversationFollowLatest?`Following latest interaction`:`Opened from log: `+n.conversationOpenedFromID)),z(e,t)};V(w,e=>{n.conversationAnchorID&&e(ee)}),T(o),ga(o,e=>n.conversationDialogEl=e,()=>n?.conversationDialogEl),F(()=>{s=U(o,1,`conversation-drawer`,null,s,{open:n.conversationOpen}),W(o,`aria-hidden`,!n.conversationOpen)}),z(e,r),D()}Hr([`click`]);var kL=R(`

        .

        `),AL=R(`
        Audit logging is off. Live entries are temporary and disappear after + refresh. Set LOGGING_ENABLED=true to persist them.
        `),jL=R(`

        `),ML=R(`
        `),NL=R(`
        `),PL=R(`
        `),FL=R(`
        `),IL=R(`
        `);function LL(e,t){E(t,!0);let n=O(()=>vs.config&&vs.config.LOGGING_RETENTION_DAYS);An(()=>{if(K.refreshTick,Wo.page===`audit-logs`)return Er(()=>r())});function r(){let e=!1;return(async()=>{try{await vs.ensureLoaded()}finally{await uF.fetchAuditLog(!0),!e&&vs.liveLogsVisible()&&_C.ensureLiveLogs()}})(),()=>{e=!0,_C.stopLiveLogs()}}var i=IL(),a=M(i),o=M(a),s=P(M(o),2),c=e=>{BS(e,{copyId:`audit-retention-help-copy`,label:`retention help`,text:`If you want to change the retention period, set LOGGING_RETENTION_DAYS (env var) or logging.retention_days (config.yaml) and restart the gateway. Default is 30 days; 0 keeps audit logs forever.`,title:e=>{var t=kL(),r=M(t,!0),i=P(r),a=M(i,!0);T(i),Ue(),T(t),F((e,t)=>{B(r,e),B(a,t)},[()=>oP(I(n)),()=>sP(I(n))]),z(e,t)},$$slots:{title:!0}})},l=O(()=>aP(I(n)));V(s,e=>{I(l)&&e(c)}),T(o),T(a);var u=P(a,2);Xc(M(u),{onchange:()=>uF.fetchAuditLog(!0)}),T(u);var d=P(u,2);Ac(d,{});var f=P(d,2),p=e=>{z(e,AL())},m=O(()=>vs.loaded&&!vs.auditVisible()&&!K.needsAuth);V(f,e=>{I(m)&&e(p)});var h=P(f,2),g=M(h);fF(g,{});var _=P(g,2),v=M(_),y=M(v),b=e=>{var t=jL(),n=M(t);T(t),F(e=>B(n,`Showing ${uF.auditLog.offset+1}-${e??``} of ${uF.auditLog.total??``} + ${uF.auditGroupSessions?`sessions`:`logs`}`),[()=>Math.min(uF.auditLog.offset+uF.auditLog.limit,uF.auditLog.total)]),z(e,t)};V(y,e=>{uF.auditLog.total>0&&e(b)});var x=P(y,2),S=M(x);na(S),Ue(2),T(x),T(v),_F(P(v,2),{}),T(_);var C=P(_,2),w=e=>{var t=ML();hS(M(t),{size:18,label:`Loading audit logs`}),T(t),z(e,t)},ee=e=>{var t=PL();H(t,29,()=>uF.auditLog.entries,e=>e.id,(e,t)=>{var n=NL(),r=M(n),i=e=>{lL(e,{get entry(){return I(t)}})},a=e=>{rL(e,{get entry(){return I(t)}})};V(r,e=>{uF.auditGroupSessions?e(i):e(a,-1)}),T(n),Oi(n,()=>HN,()=>({duration:KN(150)})),ki(1,n,()=>qN,()=>({live:I(t)._live})),z(e,n)}),T(t),z(e,t)};V(C,e=>{uF.loading&&uF.auditLog.entries.length===0?e(w):uF.auditLog.entries.length>0&&e(ee,1)});var te=P(C,2),ne=e=>{var t=FL();vS(M(t),{}),T(t),z(e,t)};V(te,e=>{uF.auditLog.entries.length===0&&!uF.loading&&!K.needsAuth&&e(ne)}),Nw(P(te,2),{get total(){return uF.auditLog.total},get offset(){return uF.auditLog.offset},get limit(){return uF.auditLog.limit},onprev:()=>uF.auditLogPrevPage(),onnext:()=>uF.auditLogNextPage()}),T(h),OL(P(h,2),{}),T(i),F(()=>ia(S,uF.auditGroupSessions)),L(`change`,S,()=>uF.toggleAuditGroupSessions()),z(e,i),D()}Hr([`change`]);function RL(e){try{let t=JSON.parse(JSON.stringify(e||{}));return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function zL(e){return Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(e=>e):e==null?[]:String(e).split(`,`).map(e=>e.trim()).filter(e=>e)}function BL(e,t){let n=String(t||``).trim();return(e||[]).find(e=>String(e&&e.type||``).trim()===n)||null}function VL(e){return Array.isArray(e)&&e.length>0&&String(e[0].type||``).trim()||`system_prompt`}function HL(e,t){let n=String(t||``).trim();return n&&BL(e,n)?n:VL(e)}function UL(e,t){let n=BL(e,t);return!n||!n.defaults?{}:RL(n.defaults)}function WL(e,t,n){return{...UL(e,n),...RL(t)}}function GL(e,t){let n=HL(e,t);return{name:``,type:n,description:``,user_path:``,config:UL(e,n)}}function KL(e,t){if(!t)return e||[];let n=String(t).toLowerCase();return(e||[]).filter(e=>[e.name,e.type,e.user_path,e.description,e.summary].some(e=>String(e||``).toLowerCase().includes(n)))}function qL(e,t){let n=BL(e,t);return n&&n.label?n.label:t||`Unknown`}function JL(e,t){let n=BL(e,t);return Array.isArray(n&&n.fields)?n.fields:[]}function YL(e,t){if(!t||!e)return t&&t.input===`checkboxes`?[]:``;let n=e[t.key];return n==null?t.input===`checkboxes`?[]:``:t.input===`checkboxes`?zL(n):n}function XL(e,t,n){if(!t)return e;let r=RL(e);if(t.input===`number`){let e=String(n||``).trim();if(e===``)delete r[t.key];else{let n=Number(e);r[t.key]=Number.isFinite(n)?n:e}}else t.input===`checkboxes`?r[t.key]=zL(n):r[t.key]=n;return r}function ZL(e,t,n){return YL(e,t).includes(String(n||``).trim())}function QL(e,t,n,r){let i=zL(YL(e,t)),a=String(n||``).trim();return a?XL(e,t,r?Array.from(new Set([...i,a])):i.filter(e=>e!==a)):e}function $L(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),description:String(e&&e.description||``).trim()||void 0,user_path:String(e&&e.user_path||``).trim()||void 0,config:RL(e&&e.config)}}var eR=new class{#e=k(j([]));get guardrails(){return I(this.#e)}set guardrails(e){A(this.#e,e,!0)}#t=k(j([]));get types(){return I(this.#t)}set types(e){A(this.#t,e,!0)}#n=k(!0);get available(){return I(this.#n)}set available(e){A(this.#n,e,!0)}#r=k(!1);get loading(){return I(this.#r)}set loading(e){A(this.#r,e,!0)}#i=k(!1);get typesLoading(){return I(this.#i)}set typesLoading(e){A(this.#i,e,!0)}#a=k(``);get error(){return I(this.#a)}set error(e){A(this.#a,e,!0)}#o=k(``);get filter(){return I(this.#o)}set filter(e){A(this.#o,e,!0)}#s=k(!1);get formOpen(){return I(this.#s)}set formOpen(e){A(this.#s,e,!0)}#c=k(!1);get formSubmitting(){return I(this.#c)}set formSubmitting(e){A(this.#c,e,!0)}#l=k(``);get deletingName(){return I(this.#l)}set deletingName(e){A(this.#l,e,!0)}#u=k(`create`);get formMode(){return I(this.#u)}set formMode(e){A(this.#u,e,!0)}#d=k(``);get formOriginalName(){return I(this.#d)}set formOriginalName(e){A(this.#d,e,!0)}#f=k(j({name:``,type:``,description:``,user_path:``,config:{}}));get form(){return I(this.#f)}set form(e){A(this.#f,e,!0)}get filtered(){return KL(this.guardrails,this.filter)}typeLabel(e){return qL(this.types,e)}typeFields(e){return JL(this.types,e)}fieldValue(e){return YL(this.form&&this.form.config,e)}setFieldValue(e,t){this.form={...this.form,config:XL(this.form.config,e,t)}}arrayFieldSelected(e,t){return ZL(this.form&&this.form.config,e,t)}toggleArrayFieldValue(e,t,n){this.form={...this.form,config:QL(this.form.config,e,t,n)}}openCreate(){this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=GL(this.types,VL(this.types)),this.formOpen=!0}openEdit(e){let t=HL(this.types,e&&e.type);this.formMode=`edit`,this.formOriginalName=String(e&&e.name||``).trim(),this.error=``,this.form={name:this.formOriginalName,type:t,description:String(e&&e.description||``).trim(),user_path:String(e&&e.user_path||``).trim(),config:WL(this.types,e&&e.config,t)},this.formOpen=!0}closeForm(){this.formOpen=!1,this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=GL(this.types,VL(this.types))}changeType(e){let t=HL(this.types,e);this.form={...this.form,type:t,config:UL(this.types,t)}}async fetchTypes(){this.typesLoading=!0;try{let e=await nT(`/admin/guardrails/types`,{label:`guardrail types`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.types=[];return}if(e.result&&(this.available=!0),this.types=e.items,e.status===`error`){this.error=e.error;return}let t=HL(this.types,this.form.type);this.form={...this.form,type:t,config:WL(this.types,this.form.config,t)}}finally{this.typesLoading=!1}}async fetchGuardrails(){this.loading=!0,this.error=``;try{let e=await nT(`/admin/guardrails`,{label:`guardrails`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.guardrails=[];return}e.result&&(this.available=!0),this.guardrails=e.items,this.error=e.error}finally{this.loading=!1}}async fetchPage(){await Promise.all([this.fetchTypes(),this.fetchGuardrails()])}async submitForm(){let e=String(this.form.name||``).trim(),t=String(this.form.type||``).trim();if(!e){this.error=`Name is required.`;return}if(!t){this.error=`Type is required.`;return}this.error=``,this.formSubmitting=!0;let n=$L(this.form);try{let t=await rT(`/admin/guardrails`,`PUT`,n,{label:`save guardrail`,errorFallback:`Failed to save guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}qs.success(`Guardrail "`+e+`" saved.`),this.closeForm(),this.fetchGuardrails()}finally{this.formSubmitting=!1}}async deleteGuardrail(e){let t=String(e&&e.name||``).trim();if(!(!t||this.deletingName)&&window.confirm(`Delete guardrail "`+t+`"? Workflows that still reference it must be updated first.`)){this.deletingName=t;try{let e=await rT(`/admin/guardrails`,`DELETE`,{name:t},{label:`delete guardrail`,errorFallback:`Failed to delete guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,qs.error(e.error);return}if(e.status===`error`){qs.error(e.error);return}qs.success(`Guardrail "`+t+`" deleted.`),this.formOpen&&this.formOriginalName===t&&this.closeForm(),this.fetchGuardrails()}finally{this.deletingName=``}}}},tR=R(`
        `),nR=R(`

        Loading guardrails...

        `),rR=R(`
        `),iR=R(`
        `),aR=R(`
        NameTypeUser PathSummaryActions
        `),oR=R(`

        No guardrails defined yet.

        `),sR=R(`

        Instances

        Each instance has a reusable name, a type, an optional user path for + future UI visibility scoping, and a JSON-backed config payload for + that type.

        `);function cR(e,t){E(t,!0);var n=sR(),r=M(n),i=P(M(r),2);G(M(i),{get icon(){return co},class:`form-action-icon`}),Ue(2),T(i),T(r);var a=P(r,2),o=e=>{var t=tR(),n=M(t);iw(M(n),{id:`guardrail-filter`,placeholder:`Filter by name, type, user path, summary...`,label:`Guardrail filter`,get value(){return eR.filter},set value(e){eR.filter=e}}),T(n),T(t),z(e,t)};V(a,e=>{eR.available&&e(o)});var s=P(a,2),c=e=>{var t=nR();hS(M(t),{size:16,label:`Loading guardrails`}),Ue(),T(t),z(e,t)};V(s,e=>{eR.loading&&eR.filtered.length===0&&e(c)});var l=P(s,2),u=e=>{var t=aR(),n=M(t),r=P(M(n));H(r,21,()=>eR.filtered,e=>e.name,(e,t)=>{var n=iR(),r=M(n),i=M(r,!0);T(r);var a=P(r),o=M(a),s=M(o,!0);T(o),T(a);var c=P(a),l=M(c,!0);T(c);var u=P(c),d=M(u),f=M(d,!0);T(d);var p=P(d,2),m=e=>{var n=rR(),r=M(n,!0);T(n),F(()=>B(r,I(t).description)),z(e,n)};V(p,e=>{I(t).description&&e(m)}),T(u);var h=P(u),g=M(h),_=M(g);{let e=O(()=>`Edit guardrail `+I(t).name);tT(_,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>eR.openEdit(I(t)),children:(e,t)=>{G(e,{get icon(){return oo},class:`table-icon-svg`})},$$slots:{default:!0}})}var v=P(_,2);{let e=O(()=>(eR.deletingName===I(t).name?`Deleting guardrail `:`Delete guardrail `)+I(t).name),n=O(()=>eR.deletingName===I(t).name);tT(v,{get label(){return I(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>eR.deleteGuardrail(I(t)),get disabled(){return I(n)},children:(e,t)=>{G(e,{get icon(){return Mo},class:`table-icon-svg`})},$$slots:{default:!0}})}T(g),T(h),T(n),F(e=>{B(i,I(t).name),B(s,e),B(l,I(t).user_path||`—`),B(f,I(t).summary||I(t).description||`No summary yet.`)},[()=>eR.typeLabel(I(t).type)]),z(e,n)}),T(r),T(n),T(t),z(e,t)};V(l,e=>{eR.filtered.length>0&&e(u)});var d=P(l,2),f=e=>{z(e,oR())};V(d,e=>{eR.filtered.length===0&&!eR.loading&&eR.available&&!eR.error&&!K.authError&&e(f)}),T(n),F(()=>i.disabled=eR.typesLoading||eR.formSubmitting||!eR.available),L(`click`,i,()=>eR.openCreate()),z(e,n),D()}Hr([`click`]);var lR=R(`

        Workflows reference these names directly, so renames are + intentionally avoided after creation.

        `),uR=R(``),dR=R(``),fR=R(``),pR=R(``),mR=R(``),hR=R(``),gR=R(``),_R=R(``),vR=R(``),yR=R(`
        `),bR=R(``),xR=R(` `),SR=R(`
        `),CR=R(`
        `);function wR(e,t){E(t,!0);let n=O(()=>eR.formMode===`edit`);{let t=e=>{z(e,lR())},r=O(()=>I(n)?`Edit Guardrail`:`Create Guardrail`);aE(e,{get open(){return eR.formOpen},get title(){return I(r)},ariaLabel:`Guardrail editor`,get error(){return eR.error},get submitting(){return eR.formSubmitting},submitLabel:`Save Guardrail`,dialogClass:`settings-guardrails-editor guardrails-editor-wide`,onclose:()=>eR.closeForm(),onsubmit:()=>eR.submitForm(),headerHint:t,children:(e,t)=>{var r=CR(),i=M(r);sE(i,{id:`guardrail-name`,label:`Name`,children:(e,t)=>{var r=uR();na(r),F(()=>{r.disabled=I(n),W(r,`data-modal-autofocus`,!I(n)||void 0)}),da(r,()=>eR.form.name,e=>eR.form.name=e),z(e,r)},$$slots:{default:!0}});var a=P(i,2);sE(a,{id:`guardrail-type`,label:`Type`,children:(e,t)=>{var r=fR();H(r,21,()=>eR.types,e=>e.type,(e,t)=>{var n=dR(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).type)&&(n.value=(n.__value=I(t).type)??``)}),z(e,n)}),T(r);var i;Wi(r),F(()=>{r.disabled=I(n),i!==(i=eR.form.type)&&(r.value=(r.__value=eR.form.type)??``,Ui(r,eR.form.type))}),L(`change`,r,e=>eR.changeType(e.currentTarget.value)),z(e,r)},$$slots:{default:!0}});var o=P(a,2);sE(o,{id:`guardrail-description`,label:`Description`,children:(e,t)=>{var r=pR();na(r),F(()=>W(r,`data-modal-autofocus`,I(n)?!0:void 0)),da(r,()=>eR.form.description,e=>eR.form.description=e),z(e,r)},$$slots:{default:!0}});var s=P(o,2),c=M(s);BS(c,{copyId:`guardrail-user-path-help-copy`,label:`guardrail user path help`,text:`Only used for auxiliary rewrite (llm_based_altering) guardrails; ignored for other guardrail types.`,title:e=>{z(e,mR())},$$slots:{title:!0}});var l=P(c,2);na(l),T(s),H(P(s,2),17,()=>eR.typeFields(eR.form.type),e=>e.key,(e,t)=>{var n=Qr(),r=N(n),i=e=>{var n=yR(),r=M(n);{let e=e=>{var n=hR(),r=M(n,!0);T(n),F(()=>{W(n,`for`,`guardrail-field-`+I(t).key),B(r,I(t).label)}),z(e,n)},n=O(()=>`guardrail-field-help-`+I(t).key),i=O(()=>I(t).label+` help`),a=O(()=>I(t).help||``);BS(r,{get copyId(){return I(n)},get label(){return I(i)},get text(){return I(a)},title:e,$$slots:{title:!0}})}var i=P(r,2),a=e=>{var n=gR();H(n,21,()=>I(t).options||[],e=>e.value,(e,t)=>{var n=dR(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(n);var r;Wi(n),F(e=>{W(n,`id`,`guardrail-field-`+I(t).key),W(n,`aria-describedby`,I(t).help?`guardrail-field-help-`+I(t).key:void 0),r!==(r=e)&&(n.value=(n.__value=e)??``,Ui(n,e))},[()=>eR.fieldValue(I(t))]),L(`change`,n,e=>eR.setFieldValue(I(t),e.currentTarget.value)),z(e,n)},o=e=>{var n=_R();ft(n),F(e=>{W(n,`id`,`guardrail-field-`+I(t).key),W(n,`placeholder`,I(t).placeholder||``),ra(n,e),W(n,`aria-describedby`,I(t).help?`guardrail-field-help-`+I(t).key:void 0)},[()=>eR.fieldValue(I(t))]),L(`input`,n,e=>eR.setFieldValue(I(t),e.currentTarget.value)),z(e,n)},s=e=>{var n=vR();na(n),F(e=>{W(n,`id`,`guardrail-field-`+I(t).key),W(n,`type`,I(t).input||`text`),W(n,`placeholder`,I(t).placeholder||``),ra(n,e),W(n,`aria-describedby`,I(t).help?`guardrail-field-help-`+I(t).key:void 0)},[()=>eR.fieldValue(I(t))]),L(`input`,n,e=>eR.setFieldValue(I(t),e.currentTarget.value)),z(e,n)};V(i,e=>{I(t).input===`select`?e(a):I(t).input===`textarea`?e(o,1):e(s,-1)}),T(n),z(e,n)},a=e=>{var n=SR(),r=M(n),i=M(r,!0);T(r);var a=P(r,2);H(a,21,()=>I(t).options||[],e=>I(t).key+`-`+e.value,(e,n)=>{var r=bR(),i=M(r);na(i);var a=P(i,2),o=M(a,!0);T(a),T(r),F(e=>{ia(i,e),B(o,I(n).label)},[()=>eR.arrayFieldSelected(I(t),I(n).value)]),L(`change`,i,e=>eR.toggleArrayFieldValue(I(t),I(n).value,e.currentTarget.checked)),z(e,r)}),T(a);var o=P(a,2),s=e=>{var n=xR(),r=M(n,!0);T(n),F(()=>{W(n,`id`,`guardrail-field-help-`+I(t).key),B(r,I(t).help)}),z(e,n)};V(o,e=>{I(t).help&&e(s)}),T(n),F(()=>{W(n,`aria-describedby`,I(t).help?`guardrail-field-help-`+I(t).key:void 0),B(i,I(t).label)}),z(e,n)};V(r,e=>{I(t).input===`checkboxes`?e(a,-1):e(i)}),z(e,n)}),T(r),da(l,()=>eR.form.user_path,e=>eR.form.user_path=e),z(e,r)},$$slots:{headerHint:!0,default:!0}})}D()}Hr([`change`,`input`]);var TR=R(`

        Guardrails

        `),ER=R(`
        Runtime guardrail execution is currently off because GUARDRAILS_ENABLED is disabled. You can still manage + definitions here.
        `),DR=R(`
        Guardrails feature is unavailable.
        `),OR=R(`
        `),kR=R(`

        Reusable Policy Objects

        Guardrail Library

        Store guardrails in the database, keep them hot in memory, and attach + them to workflows by reference.

        Instances
        Types
        `);function AR(e,t){E(t,!0),An(()=>{K.refreshTick,Wo.page===`guardrails`&&(vs.ensureLoaded(),eR.fetchPage())});var n=kR(),r=M(n),i=M(r);BS(M(i),{copyId:`guardrails-help-copy`,label:`guardrails help`,text:`Reusable policy objects stored in the database and kept hot in memory for workflow execution.`,title:e=>{z(e,TR())},$$slots:{title:!0}}),T(i),T(r);var a=P(r,2),o=P(M(a),2),s=M(o),c=P(M(s),2),l=M(c,!0);T(c),T(s);var u=P(s,2),d=P(M(u),2),f=M(d,!0);T(d),T(u),T(o),T(a);var p=P(a,2);Ac(p,{});var m=P(p,2),h=e=>{z(e,ER())},g=O(()=>!vs.guardrailsVisible());V(m,e=>{I(g)&&e(h)});var _=P(m,2),v=e=>{z(e,DR())};V(_,e=>{!K.authError&&!eR.available&&e(v)});var y=P(_,2),b=e=>{var t=OR(),n=M(t,!0);T(t),F(()=>B(n,eR.error)),z(e,t)};V(y,e=>{!K.authError&&eR.error&&!eR.formOpen&&e(b)});var x=P(y,2);wR(x,{}),cR(P(x,2),{}),T(n),F((e,t)=>{B(l,e),B(f,t)},[()=>tc(eR.guardrails.length),()=>tc(eR.types.length)]),z(e,n),D()}var Z=new class{#e=k(j([]));get servers(){return I(this.#e)}set servers(e){A(this.#e,e,!0)}#t=k(!0);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get error(){return I(this.#r)}set error(e){A(this.#r,e,!0)}#i=k(``);get filter(){return I(this.#i)}set filter(e){A(this.#i,e,!0)}#a=k(!1);get formOpen(){return I(this.#a)}set formOpen(e){A(this.#a,e,!0)}#o=k(!1);get formSubmitting(){return I(this.#o)}set formSubmitting(e){A(this.#o,e,!0)}#s=k(`create`);get formMode(){return I(this.#s)}set formMode(e){A(this.#s,e,!0)}#c=k(!1);get slugEdited(){return I(this.#c)}set slugEdited(e){A(this.#c,e,!0)}#l=k(!1);get advancedOpen(){return I(this.#l)}set advancedOpen(e){A(this.#l,e,!0)}#u=k(j(ix()));get form(){return I(this.#u)}set form(e){A(this.#u,e,!0)}#d=k(``);get deletingName(){return I(this.#d)}set deletingName(e){A(this.#d,e,!0)}#f=k(``);get reconnectingName(){return I(this.#f)}set reconnectingName(e){A(this.#f,e,!0)}#p=k(!1);get catalogOpen(){return I(this.#p)}set catalogOpen(e){A(this.#p,e,!0)}#m=k(!1);get catalogLoading(){return I(this.#m)}set catalogLoading(e){A(this.#m,e,!0)}#h=k(``);get catalogError(){return I(this.#h)}set catalogError(e){A(this.#h,e,!0)}#g=k(j(ax()));get catalog(){return I(this.#g)}set catalog(e){A(this.#g,e,!0)}#_=O(()=>gx(this.servers,this.filter));get filtered(){return I(this.#_)}set filtered(e){A(this.#_,e)}async fetchServers(){if(await vs.ensureLoaded(),!vs.mcpVisible()){this.available=!1,this.servers=[],this.error=``,this.loading=!1;return}this.loading=!0,this.error=``;try{let e=await nT(`/admin/mcp-servers`,{label:`mcp servers`,errorFallback:`Failed to load MCP servers.`,unavailableStatuses:[503,404]});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.servers=[];return}if(e.status===`error`){e.result&&(this.available=!0),this.servers=[],this.error=e.error;return}this.available=!0,this.servers=e.items}finally{this.loading=!1}}openCreate(){this.formMode=`create`,this.slugEdited=!1,this.advancedOpen=!1,this.error=``,this.form=ix(),this.formOpen=!0}openEdit(e){!e||e.managed||(this.formMode=`edit`,this.slugEdited=!0,this.advancedOpen=!1,this.error=``,this.form=_x(e),this.formOpen=!0)}closeForm(){this.formOpen=!1,this.formMode=`create`,this.slugEdited=!1,this.advancedOpen=!1,this.error=``,this.form=ix()}syncSlugFromName(){this.formMode===`create`&&!this.slugEdited&&(this.form.slug=fx(this.form.name))}markSlugEdited(){this.formMode===`create`&&(this.slugEdited=!0)}addHeader(){this.form.headers.push({name:``,value:``})}removeHeader(e){this.form.headers.splice(e,1)}async submitForm(){let e=vx(this.form,this.formMode,this.servers);if(e.error){this.error=e.error;return}this.error=``,this.formSubmitting=!0;try{let t=await rT(`/admin/mcp-servers`,`PUT`,e.payload,{label:`save mcp server`,errorFallback:`Failed to save MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}qs.success(`MCP server "`+e.payload.name+`" saved.`),this.closeForm(),this.fetchServers()}finally{this.formSubmitting=!1}}async deleteServer(e){let t=String(e&&e.name||``).trim(),n=ox(e);if(!(!n||this.deletingName||e&&e.managed)&&confirm(`Delete MCP server "`+t+`"? Clients lose access to its tools immediately.`)){this.deletingName=n;try{let e=await rT(`/admin/mcp-servers/`+encodeURIComponent(n),`DELETE`,void 0,{label:`delete mcp server`,errorFallback:`Failed to delete MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,qs.error(e.error);return}if(e.status===`error`){qs.error(e.error);return}qs.success(`MCP server "`+t+`" deleted.`),this.formOpen&&this.form.slug===n&&this.closeForm(),this.fetchServers()}finally{this.deletingName=``}}}async reconnectServer(e){let t=String(e&&e.name||``).trim(),n=ox(e);if(!(!n||this.reconnectingName)){this.reconnectingName=n;try{let e=await rT(`/admin/mcp-servers/`+encodeURIComponent(n)+`/reconnect`,`POST`,void 0,{label:`reconnect mcp server`,errorFallback:`Failed to reconnect MCP server.`,unavailableMessage:`MCP server management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,qs.error(e.error);return}if(e.status===`error`){qs.error(e.error);return}let r=e.result.data,i=sx(r);i===`connected`?qs.success(`MCP server "`+t+`" reconnected.`):i===`disabled`?qs.success(`MCP server "`+t+`" is disabled; no connection was attempted.`):qs.error(`Reconnect attempted, but MCP server "`+t+`" is still `+i+`.`),r&&r.name?this.servers=(this.servers||[]).map(e=>ox(e)===ox(r)?r:e):this.fetchServers()}finally{this.reconnectingName=``}}}async openCatalog(e){let t=String(e&&e.name||``).trim(),n=ox(e);if(n){this.catalogOpen=!0,this.catalogLoading=!0,this.catalogError=``,this.catalog={...ax(),server:n,status:sx(e)};try{let e=await ps(`/admin/mcp-servers/`+encodeURIComponent(n)+`/catalog`,{label:`mcp server catalog`});if(e.stale)return;if(e.status===503){this.available=!1,this.catalogError=`MCP server management is unavailable.`;return}if(e.status===404){this.catalogError=`MCP server "`+t+`" was not found.`;return}if(!e.ok){this.catalogError=e.status===401?`Authentication required.`:cs(e.data,`Failed to load MCP server catalog.`);return}this.catalog=yx(n,e.data)}catch(e){console.error(`Failed to load MCP server catalog:`,e),this.catalogError=`Failed to load MCP server catalog.`}finally{this.catalogLoading=!1}}}closeCatalog(){this.catalogOpen=!1,this.catalogLoading=!1,this.catalogError=``,this.catalog=ax()}},jR=R(``),MR=R(`

        `),NR=R(`
        `),PR=R(`

        `),FR=R(`
      • `),IR=R(`

          `),LR=R(`

          No tools listed — the server may still be connecting or degraded.

          `),RR=R(` `,1),zR=R(``);function BR(e,t){E(t,!0);let n=O(()=>xx(Z.catalog));Ds(e,{get open(){return Z.catalogOpen},variant:`editor`,onclose:()=>Z.closeCatalog(),children:(e,t)=>{var r=zR(),i=M(r),a=M(i),o=P(M(a),2),s=M(o),c=M(s,!0);T(s);var l=P(s,2),u=M(l,!0);T(l),T(o),T(a),Ts(P(a,2),{label:`Close MCP server catalog`,onclick:()=>Z.closeCatalog()}),T(i);var d=P(i,2),f=e=>{$w(e,{label:`Loading catalog...`})},p=e=>{var t=jR(),n=M(t,!0);T(t),F(()=>B(n,Z.catalogError)),z(e,t)},m=e=>{var t=RR(),r=N(t),i=e=>{var t=MR(),n=M(t,!0);T(t),F(()=>B(n,Z.catalog.instructions)),z(e,t)};V(r,e=>{Z.catalog.instructions&&e(i)});var a=P(r,2);H(a,17,()=>I(n),e=>e.key,(e,t)=>{var n=IR(),r=M(n),i=M(r,!0);T(r);var a=P(r,2);H(a,21,()=>I(t).items,e=>e.key,(e,t)=>{var n=FR(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=e=>{var n=NR(),r=M(n,!0);T(n),F(()=>{W(n,`title`,`Exposed on the aggregated /mcp endpoint as `+I(t).aggregated),B(r,I(t).aggregated)}),z(e,n)};V(a,e=>{I(t).aggregated&&e(o)});var s=P(a,2),c=e=>{var n=PR(),r=M(n,!0);T(n),F(()=>B(r,I(t).description)),z(e,n)};V(s,e=>{I(t).description&&e(c)}),T(n),F(()=>{W(r,`title`,I(t).aggregated||I(t).name),B(i,I(t).name)}),z(e,n)}),T(a),T(n),F(()=>B(i,I(t).title)),z(e,n)});var o=P(a,2),s=e=>{z(e,LR())},c=O(()=>Sx(Z.catalog));V(o,e=>{I(c)&&e(s)}),z(e,t)};V(d,e=>{Z.catalogLoading?e(f):Z.catalogError?e(p,1):e(m,-1)});var h=P(d,2),g=M(h);T(h),T(r),F((e,t)=>{B(c,Z.catalog.server),U(l,1,`audit-status-badge ${e??``}`,`svelte-1xqrzco`),B(u,t)},[()=>cx(Z.catalog),()=>sx(Z.catalog)]),L(`click`,g,()=>Z.closeCatalog()),z(e,r)},$$slots:{default:!0}}),D()}Hr([`click`]);var VR=R(`

          The display name can change. The slug is the stable client-facing identity.

          `),HR=R(` Human-readable and Unicode-friendly. You can change it later.`,1),UR=R(`Derived from the name. You may edit it before saving.`),WR=R(`Immutable because it is used in URLs, scope headers, and aggregated tool names.`),GR=R(` `,1),KR=R(` stdio servers are config-only: declare them in config.yaml under mcp.servers.`,1),qR=R(``),JR=R(`
          `),YR=R(`
          Headers
          Sent only to the configured server origin. Saved values are shown as ***; leave *** unchanged to keep the stored value.
          Advanced settings Description, access rules, and timeout
          `,1);function XR(e,t){E(t,!0);{let t=e=>{z(e,VR())},n=O(()=>Z.formMode===`edit`?`Edit MCP Server`:`Add MCP Server`);aE(e,{get open(){return Z.formOpen},get title(){return I(n)},ariaLabel:`MCP server editor`,get error(){return Z.error},get submitting(){return Z.formSubmitting},onclose:()=>Z.closeForm(),onsubmit:()=>Z.submitForm(),headerHint:t,children:(e,t)=>{var n=YR(),r=N(n);sE(r,{id:`mcp-server-name`,label:`Name`,children:(e,t)=>{var n=HR(),r=N(n);na(r),Ue(2),L(`input`,r,()=>Z.syncSlugFromName()),da(r,()=>Z.form.name,e=>Z.form.name=e),z(e,n)},$$slots:{default:!0}});var i=P(r,2);sE(i,{id:`mcp-server-slug`,label:`Slug`,children:(e,t)=>{var n=GR(),r=N(n);na(r);var i=P(r,2),a=e=>{z(e,UR())},o=e=>{z(e,WR())};V(i,e=>{Z.formMode===`create`?e(a):e(o,-1)}),F(()=>r.disabled=Z.formMode===`edit`),L(`input`,r,()=>Z.markSlugEdited()),da(r,()=>Z.form.slug,e=>Z.form.slug=e),z(e,n)},$$slots:{default:!0}});var a=P(i,2);sE(a,{id:`mcp-server-transport`,label:`Transport`,children:(e,t)=>{var n=KR(),r=N(n),i=M(r);i.value=i.__value=`http`;var a=P(i);a.value=a.__value=`sse`,T(r),Ue(2),Gi(r,()=>Z.form.transport,e=>Z.form.transport=e),z(e,n)},$$slots:{default:!0}});var o=P(a,2);sE(o,{id:`mcp-server-url`,label:`URL`,children:(e,t)=>{var n=qR();na(n),da(n,()=>Z.form.url,e=>Z.form.url=e),z(e,n)},$$slots:{default:!0}});var s=P(o,2),c=P(M(s),2);H(c,21,()=>Z.form.headers,oi,(e,t,n)=>{var r=JR(),i=M(r);na(i);var a=P(i,2);na(a),tT(P(a,2),{label:`Remove header`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Z.removeHeader(n),children:(e,t)=>{G(e,{get icon(){return Eo},class:`table-icon-svg`})},$$slots:{default:!0}}),T(r),da(i,()=>I(t).name,e=>I(t).name=e),da(a,()=>I(t).value,e=>I(t).value=e),z(e,r)}),T(c);var l=P(c,2),u=M(l);G(M(u),{get icon(){return co},class:`form-action-icon`}),Ue(2),T(u),T(l),Ue(2),T(s);var d=P(s,2),f=M(d);aA(M(f),{get enabled(){return Z.form.enabled},label:`MCP server`,onclick:()=>Z.form.enabled=!Z.form.enabled}),T(f),T(d);var p=P(d,2),m=P(M(p),2),h=M(m),g=P(M(h),2);na(g),T(h);var _=P(h,2),v=P(M(_),2);na(v),T(_);var y=P(_,2),b=P(M(y),2);na(b),T(y);var x=P(y,2),S=P(M(x),2);ft(S),W(S,`placeholder`,`/ +/team/alpha`),T(x);var C=P(x,2),w=P(M(C),2);na(w),T(C),T(m),T(p),F(()=>p.open=Z.advancedOpen),L(`click`,u,()=>Z.addHeader()),Vr(`toggle`,p,e=>Z.advancedOpen=e.currentTarget.open),da(g,()=>Z.form.description,e=>Z.form.description=e),da(v,()=>Z.form.allowed_tools,e=>Z.form.allowed_tools=e),da(b,()=>Z.form.disallowed_tools,e=>Z.form.disallowed_tools=e),da(S,()=>Z.form.user_paths,e=>Z.form.user_paths=e),da(w,()=>Z.form.tool_timeout_seconds,e=>Z.form.tool_timeout_seconds=e),z(e,n)},$$slots:{headerHint:!0,default:!0}})}D()}Hr([`input`,`click`]);var ZR=R(`Config`),QR=R(`
          `),$R=R(`
          `),ez=R(`
          NameTransportEndpointStatusToolsEnabledActions
          `);function tz(e,t){E(t,!0);function n(e){return lx(e,e=>ss.formatTimestamp(e))}var r=ez(),i=M(r),a=P(M(i));H(a,21,()=>Z.filtered,e=>ox(e),(e,t)=>{var r=$R(),i=M(r),a=M(i),o=M(a,!0);T(a);var s=P(a,2),c=e=>{z(e,ZR())};V(s,e=>{I(t).managed&&e(c)});var l=P(s,2),u=M(l,!0);T(l),T(i);var d=P(i),f=M(d),p=M(f,!0);T(f),T(d);var m=P(d),h=M(m,!0);T(m);var g=P(m),_=M(g),v=M(_,!0);T(_);var y=P(_,2),b=e=>{var n=QR(),r=M(n,!0);T(n),F(()=>B(r,I(t).last_error)),z(e,n)},x=O(()=>sx(I(t))===`degraded`&&I(t).last_error);V(y,e=>{I(x)&&e(b)}),T(g);var S=P(g),C=M(S),w=M(C,!0);T(C);var ee=P(C,2),te=M(ee,!0);T(ee),T(S);var ne=P(S),re=M(ne),ie=M(re,!0);T(re),T(ne);var ae=P(ne),oe=M(ae),se=M(oe),ce=e=>{{let n=O(()=>`Edit MCP server `+I(t).name);tT(e,{get label(){return I(n)},class:`table-icon-btn`,onclick:()=>Z.openEdit(I(t)),children:(e,t)=>{G(e,{get icon(){return oo},class:`table-icon-svg`})},$$slots:{default:!0}})}};V(se,e=>{I(t).managed||e(ce)});var le=P(se,2);{let e=O(()=>`Inspect catalog of MCP server `+I(t).name);tT(le,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>Z.openCatalog(I(t)),children:(e,t)=>{G(e,{get icon(){return to},class:`form-action-icon`})},$$slots:{default:!0}})}var ue=P(le,2);{let e=O(()=>(Z.reconnectingName===ox(I(t))?`Reconnecting MCP server `:`Reconnect MCP server `)+I(t).name),n=O(()=>Z.reconnectingName===ox(I(t)));tT(ue,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>Z.reconnectServer(I(t)),get disabled(){return I(n)},children:(e,t)=>{G(e,{get icon(){return uo},class:`form-action-icon`})},$$slots:{default:!0}})}var de=P(ue,2),fe=e=>{{let n=O(()=>(Z.deletingName===ox(I(t))?`Deleting MCP server `:`Delete MCP server `)+I(t).name),r=O(()=>Z.deletingName===ox(I(t)));tT(e,{get label(){return I(n)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>Z.deleteServer(I(t)),get disabled(){return I(r)},children:(e,t)=>{G(e,{get icon(){return Mo},class:`table-icon-svg`})},$$slots:{default:!0}})}};V(de,e=>{I(t).managed||e(fe)}),T(oe),T(ae),T(r),F((e,n,r,i,a,s,c,l)=>{B(o,I(t).name),B(u,e),B(p,I(t).transport||`http`),W(m,`title`,n),B(h,r),U(_,1,`audit-status-badge ${i??``}`,`svelte-ah8nrt`),W(_,`title`,a),B(v,s),B(w,c),B(te,l),U(re,1,Fi([`auth-key-status-badge`,I(t).enabled?`auth-key-status-active`:`auth-key-status-inactive`])),B(ie,I(t).enabled?`Enabled`:`Disabled`)},[()=>ox(I(t)),()=>ux(I(t)),()=>ux(I(t)),()=>cx(I(t)),()=>n(I(t)),()=>sx(I(t)),()=>tc(I(t).tool_count||0),()=>dx(I(t))]),z(e,r)}),T(a),T(i),T(r),z(e,r),D()}var nz=R(`

          MCP Servers

          `),rz=R(``),iz=R(`
          MCP server management is unavailable.
          `),az=R(``),oz=R(`
          `),sz=R(`

          No MCP servers yet. Add one here, or declare servers in config.yaml under mcp.servers.

          `),cz=R(`

          No MCP servers match your filter.

          `),lz=R(`
          `);function uz(e,t){E(t,!0),An(()=>{K.refreshTick,Wo.page===`mcp-servers`&&Z.fetchServers()});var n=lz(),r=M(n),i=M(r);BS(M(i),{copyId:`mcp-servers-help-copy`,label:`MCP servers help`,text:`Upstream Model Context Protocol servers whose tools, prompts, and resources the gateway exposes to clients. Servers added here connect over HTTP or SSE; stdio servers and rows marked Config are declared in config.yaml under mcp.servers and are read-only in the dashboard. Saved header values are masked in API and dashboard responses.`,title:e=>{z(e,nz())},$$slots:{title:!0}}),T(i);var a=P(i,2),o=M(a),s=e=>{var t=rz();G(M(t),{get icon(){return co},class:`form-action-icon`}),Ue(2),T(t),F(()=>t.disabled=Z.formSubmitting),L(`click`,t,()=>Z.openCreate()),z(e,t)};V(o,e=>{Z.available&&!K.authError&&e(s)}),T(a),T(r);var c=P(r,2),l=e=>{z(e,iz())};V(c,e=>{!Z.available&&!K.authError&&e(l)});var u=P(c,2),d=e=>{var t=az(),n=M(t,!0);T(t),F(()=>B(n,Z.error)),z(e,t)};V(u,e=>{Z.error&&!K.authError&&!Z.formOpen&&e(d)});var f=P(u,2),p=e=>{$w(e,{label:`Loading MCP servers...`})};V(f,e=>{Z.loading&&!K.authError&&e(p)});var m=P(f,2),h=e=>{var t=oz(),n=M(t);iw(M(n),{id:`mcp-server-filter`,placeholder:`Filter by name, slug, URL, transport, or status...`,label:`Filter MCP servers by name, slug, URL, transport, or status`,get value(){return Z.filter},set value(e){Z.filter=e}}),T(n),T(t),z(e,t)};V(m,e=>{(Z.servers.length>0||Z.filter)&&Z.available&&!K.authError&&e(h)});var g=P(m,2);XR(g,{});var _=P(g,2);BR(_,{});var v=P(_,2),y=e=>{tz(e,{})};V(v,e=>{Z.filtered.length>0&&Z.available&&!K.authError&&e(y)});var b=P(v,2),x=e=>{z(e,sz())};V(b,e=>{Z.servers.length===0&&!Z.filter&&!Z.loading&&!K.authError&&!Z.error&&Z.available&&e(x)});var S=P(b,2),C=e=>{z(e,cz())};V(S,e=>{Z.servers.length>0&&Z.filtered.length===0&&Z.filter&&!Z.loading&&!K.authError&&Z.available&&e(C)}),T(n),z(e,n),D()}Hr([`click`]);var dz=`api_keys`,fz=`session_sticky_keys`,pz=`base_url`,mz=`service_account_json`,hz=`models`,gz={[dz]:{label:`API Keys`,control:`keys`,hint:`Identified sessions stay on one key by default, improving provider prompt-cache hits. Saved values are shown as ***********; leave the asterisks unchanged to keep the stored key.`},[fz]:{label:`Session-sticky API keys`,control:`checkbox`,hint:`Keep each identified conversation on one API key to preserve provider prompt-cache affinity. Turn off to rotate keys round-robin on every request.`},[pz]:{label:`Base URL`,control:`text`},api_version:{label:`API Version`,control:`text`,placeholder:`e.g. 2024-10-01-preview`,hint:`Leave empty for the provider default. Realtime endpoints may need a newer version.`},backend:{label:`Backend`,control:`select`,hint:`Which Google surface to call. Vertex authenticates with Google credentials instead of an API key.`},auth_type:{label:`Auth Type`,control:`select`,hint:`How to obtain Google credentials. Leave on the default to use Application Default Credentials.`},api_mode:{label:`API Mode`,control:`select`,hint:`Which request shape to send upstream.`},vertex_project:{label:`Vertex Project`,control:`text`,placeholder:`my-gcp-project`},vertex_location:{label:`Vertex Location`,control:`text`,placeholder:`us-central1`},service_account_file:{label:`Service Account File`,control:`text`,placeholder:`/path/to/service-account.json`,hint:`Path readable by the gateway process.`},[mz]:{label:`Service Account JSON`,control:`textarea`,placeholder:`Paste service account JSON`,hint:`Saved values are shown as ***********; leave the asterisks unchanged to keep the stored value, or clear it to remove.`},service_account_json_base64:{label:`Service Account JSON (base64)`,control:`text`,hint:`Saved values are shown as ***********; leave the asterisks unchanged to keep the stored value.`},gcp_scope:{label:`GCP Scope`,control:`text`,placeholder:`https://www.googleapis.com/auth/cloud-platform`},[hz]:{label:`Models (comma-separated)`,control:`text`,placeholder:`gpt-4o, gpt-4o-mini`,hint:`Leave empty to auto-discover models from the provider's /models endpoint where supported.`}};function _z(e){return gz[e]||{label:String(e||``).split(`_`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),control:`text`}}function vz(){return{name:``,type:``,api_keys:[],session_sticky_keys:!0,base_url:``,api_version:``,backend:``,auth_type:``,api_mode:``,vertex_project:``,vertex_location:``,service_account_file:``,service_account_json:``,service_account_json_base64:``,gcp_scope:``,models:``,enabled:!0}}function yz(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.type,e.base_url].some(e=>String(e||``).toLowerCase().includes(r)))}function bz(e,t){let n=(Array.isArray(e)?e:[]).map(e=>String(e&&e.type||``).trim()).filter(Boolean),r=String(t||``).trim();return r&&!n.includes(r)&&n.push(r),n}function xz(e,t){let n=String(t||``).trim();return n&&(Array.isArray(e)?e:[]).find(e=>String(e&&e.type||``).trim()===n)||null}function Sz(e,t){let n=e&&Array.isArray(e.fields)&&e.fields.length>0?e.fields:Object.keys(gz).map(e=>({name:e,advanced:e!==dz})),r=t||e&&e.default_base_url||``,i=[],a=[];for(let e of n){let t=String(e&&e.name||``).trim();if(!t)continue;let n={..._z(t),name:t,required:!!(e&&e.required),options:Array.isArray(e&&e.options)?e.options:[]};t===`base_url`&&r&&(n.placeholder=r,n.hint=`Defaults to `+r),n.options.length>0&&(n.control=`select`),(e&&e.advanced?a:i).push(n)}return{primary:i,advanced:a}}var Cz=new Set([`name`,`type`,`enabled`]);function wz(e,t){let n=new Set([...t.primary||[],...t.advanced||[]].map(e=>e.name)),r=vz(),i={...e};for(let e of Object.keys(r))!Cz.has(e)&&!n.has(e)&&(i[e]=r[e]);return i}function Tz(e){let t=Array.isArray(e&&e.api_keys)?e.api_keys.length:0;return t>0?t+` key`+(t===1?``:`s`):String(e&&e.service_account_json||``).trim()||String(e&&e.service_account_json_base64||``).trim()||String(e&&e.service_account_file||``).trim()?`service account`:String(e&&e.vertex_project||``).trim()?`ADC`:`keyless`}function Ez(e){let t=Array.isArray(e&&e.models)?e.models:[];return t.length===0?`auto-discovered`:t.length+` model`+(t.length===1?``:`s`)}function Dz(e){return(Array.isArray(e)?e:[]).map(e=>({value:String(e||``)}))}function Oz(e){return(Array.isArray(e)?e:[]).map(e=>String(e&&e.value||``))}function kz(e,t){let n=String(t||``).trim();if(!n)return``;let r=new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.name||``).trim()));if(!r.has(n))return n;let i=1;for(;r.has(n+`-`+i);)i+=1;return n+`-`+i}function Az(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),api_keys:Dz(e&&e.api_keys),session_sticky_keys:!e||e.session_sticky_keys!==!1,base_url:String(e&&e.base_url||``),api_version:String(e&&e.api_version||``),backend:String(e&&e.backend||``),auth_type:String(e&&e.auth_type||``),api_mode:String(e&&e.api_mode||``),vertex_project:String(e&&e.vertex_project||``),vertex_location:String(e&&e.vertex_location||``),service_account_file:String(e&&e.service_account_file||``),service_account_json:String(e&&e.service_account_json||``),service_account_json_base64:String(e&&e.service_account_json_base64||``),gcp_scope:String(e&&e.gcp_scope||``),models:(Array.isArray(e&&e.models)?e.models:[]).join(`, `),enabled:!e||e.enabled!==!1}}function jz(e){let t=String(e||``).trim();return t.length>=3&&/^\*+$/.test(t)}function Mz(e,t,n,r){let i={},a=String(e&&e.name||``).trim();String(e&&e.type||``).trim()||(i.type=`Select a provider type.`),a?a.includes(`/`)?i.name=`Name cannot contain '/' — it separates the provider from the model.`:t===`create`&&(Array.isArray(n)?n:[]).some(e=>String(e&&e.name||``).trim()===a)&&(i.name=`Provider "`+a+`" already exists.`):i.name=`Name is required.`;let{primary:o,advanced:s}=Sz(r);for(let t of[...o,...s]){let n=Nz(e,t);n&&(i[t.name]=n)}return i}function Nz(e,t){if(t.name===`api_keys`){let n=Oz(e&&e.api_keys);return t.required&&!n.some(e=>e.trim())?`At least one API key is required for this provider type.`:n.some(e=>!e.trim())?`Remove the empty row instead of leaving a key blank.`:``}let n=String(e&&e[t.name]||``).trim();if(t.required&&!n)return t.label+` is required for this provider type.`;if(!n)return``;if(t.name===`base_url`&&!n.includes(`://`)&&/[./]/.test(n))return`Include the scheme, e.g. https://`+n;if(t.name===`service_account_json`&&!jz(n))try{JSON.parse(n)}catch{return`Paste the service account JSON file's contents — this is not valid JSON.`}return``}function Pz(e,t){let n={name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),enabled:!!(e&&e.enabled)},{primary:r,advanced:i}=Sz(t),a=!!(t&&Array.isArray(t.fields)&&t.fields.length>0),o=new Set;for(let t of[...r,...i])!a&&t.name===`session_sticky_keys`||(o.add(t.name),n[t.name]=Fz(e,t.name));for(let t of Object.keys(gz)){if(o.has(t)||t===`session_sticky_keys`)continue;let r=Fz(e,t);(Array.isArray(r)?r.length>0:String(r).trim()!==``)&&(n[t]=r)}return n}function Fz(e,t){switch(t){case dz:return Oz(e&&e.api_keys);case hz:return $s(e&&e.models);case fz:return!!(e&&e.session_sticky_keys);case mz:return e&&e.service_account_json||``;default:return String(e&&e[t]||``).trim()}}var Q=new class{#e=k(j([]));get rows(){return I(this.#e)}set rows(e){A(this.#e,e,!0)}#t=k(!0);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get error(){return I(this.#r)}set error(e){A(this.#r,e,!0)}#i=k(``);get filter(){return I(this.#i)}set filter(e){A(this.#i,e,!0)}#a=k(!1);get formOpen(){return I(this.#a)}set formOpen(e){A(this.#a,e,!0)}#o=k(!1);get formSubmitting(){return I(this.#o)}set formSubmitting(e){A(this.#o,e,!0)}#s=k(`create`);get formMode(){return I(this.#s)}set formMode(e){A(this.#s,e,!0)}#c=k(!1);get advancedOpen(){return I(this.#c)}set advancedOpen(e){A(this.#c,e,!0)}#l=k(j(vz()));get form(){return I(this.#l)}set form(e){A(this.#l,e,!0)}#u=k(j({}));get fieldErrors(){return I(this.#u)}set fieldErrors(e){A(this.#u,e,!0)}#d=k(``);get focusField(){return I(this.#d)}set focusField(e){A(this.#d,e,!0)}#f=k(``);get deletingName(){return I(this.#f)}set deletingName(e){A(this.#f,e,!0)}#p=k(!1);get deleteSubmitting(){return I(this.#p)}set deleteSubmitting(e){A(this.#p,e,!0)}#m=k(j([]));get types(){return I(this.#m)}set types(e){A(this.#m,e,!0)}#h=k(!1);get typesLoaded(){return I(this.#h)}set typesLoaded(e){A(this.#h,e,!0)}#g=null;get filteredRows(){return yz(this.rows,this.filter)}get schema(){return xz(this.types,this.form.type)}get formFields(){if(!String(this.form.type||``).trim())return{primary:[],advanced:[]};let e=this.schema;return Sz(e,e&&e.default_base_url)}async fetchTypes(){let e=await nT(`/admin/provider-credentials/types`,{label:`provider credential types`});e.status===`ok`&&(this.types=e.items,this.typesLoaded=!0)}async fetchPage(){this.#g&&this.#g.abort();let e=new AbortController;this.#g=e,this.loading=!0,this.error=``;try{let t=await nT(`/admin/provider-credentials`,{label:`provider credentials`,errorFallback:`Failed to load provider credentials.`,unavailableStatuses:[503,404],options:{signal:e.signal}});if(t.status===`stale`||e.signal.aborted)return;if(t.status===`unavailable`){this.available=!1,this.rows=[];return}if(t.status===`error`){t.result&&(this.available=!0),this.rows=[],this.error=t.error;return}this.available=!0,this.rows=t.items,this.typesLoaded||await this.fetchTypes()}finally{this.#g===e&&(this.#g=null,this.loading=!1)}}#_(e,t){this.formMode=e,this.form=t,this.advancedOpen=!1,this.error=``,this.fieldErrors={},this.focusField=``}openCreate(){this.#_(`create`,vz()),this.formOpen=!0,this.typesLoaded||this.fetchTypes()}openEdit(e){!e||e.managed||(this.#_(`edit`,Az(e)),this.formOpen=!0,this.typesLoaded||this.fetchTypes())}closeForm(){this.formOpen=!1,this.#_(`create`,vz())}selectType(){this.fieldErrors={};let e=this.formFields;this.formMode===`create`&&(this.form=wz(this.form,e));let t=e.primary.find(e=>e.name===`api_keys`);t&&t.required&&this.form.api_keys.length===0&&(this.form.api_keys=[{value:``}])}clearFieldError(e){if(this.fieldErrors[e]===void 0)return;let{[e]:t,...n}=this.fieldErrors;this.fieldErrors=n}addApiKeyRow(){this.form.api_keys.push({value:``}),this.clearFieldError(`api_keys`)}removeApiKeyRow(e){this.form.api_keys.splice(e,1),this.clearFieldError(`api_keys`)}#v(e){let t=cs(e,`Failed to save provider credential.`),n=String(e&&e.error&&typeof e.error==`object`&&e.error.param||``).trim();if(n&&this.#y(n)){this.fieldErrors={...this.fieldErrors,[n]:t},this.error=``,this.#b();return}this.error=t}#y(e){if(e===`name`||e===`type`)return!0;let{primary:t,advanced:n}=this.formFields;return[...t,...n].some(t=>t.name===e)}#b(){let e=Object.keys(this.fieldErrors);if(e.length===0)return;let{primary:t,advanced:n}=this.formFields;n.some(t=>e.includes(t.name))&&(this.advancedOpen=!0);let r=[`type`,`name`,...t.map(e=>e.name),...n.map(e=>e.name)];this.focusField=r.find(t=>e.includes(t))||e[0]}#x(){Oc.fetchModels(),Oc.fetchCategories()}async submitForm(){let e=this.schema,t=Mz(this.form,this.formMode,this.rows,e);if(Object.keys(t).length>0){this.fieldErrors=t,this.error=``,this.#b();return}let n=Pz(this.form,e);this.error=``,this.fieldErrors={},this.formSubmitting=!0;try{let e=await rT(`/admin/provider-credentials`,`PUT`,n,{label:`save provider credential`,errorFallback:`Failed to save provider credential.`,unavailableMessage:`Provider credential management is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.error=e.error;return}if(e.status===`error`){e.result&&e.result.status!==401?this.#v(e.result.data):this.error=e.error;return}qs.success(`Provider "`+n.name+`" saved.`),this.closeForm(),this.#x(),this.fetchPage()}finally{this.formSubmitting=!1}}async performDelete(e){this.deleteSubmitting=!0,this.deletingName=e;try{let t=await rT(`/admin/provider-credentials/`+encodeURIComponent(e),`DELETE`,void 0,{label:`delete provider credential`,errorFallback:`Failed to delete provider credential.`,unavailableMessage:`Provider credential management is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,Ms.error=t.error;return}if(t.status===`error`){Ms.error=t.error;return}qs.success(`Provider "`+e+`" deleted.`),Ms.close(),this.formOpen&&this.form.name===e&&this.closeForm(),this.#x(),this.fetchPage()}finally{this.deleteSubmitting=!1,this.deletingName=``}}requestDelete(e){let t=String(e||``).trim();if(!t||this.deleteSubmitting)return;let n=(this.rows||[]).find(e=>String(e&&e.name||``).trim()===t);n&&n.managed||Ms.open({title:`Delete Provider`,titleId:`providerCredentialDeleteDialogTitle`,inputId:`provider-credential-delete-confirmation`,message:`Type "`+t+`" to permanently delete this provider credential. Requests routed to it will fail until it is reconfigured.`,requiredText:t,confirmLabel:`Delete Provider`,icon:Eo,dialogClass:`budget-reset-dialog`,onConfirm:()=>this.performDelete(t)})}},Iz=R(`Config`),Lz=R(` `,1),Rz=R(`
          `),zz=R(`
          NameTypeBase URLAuthModelsEnabledUpdatedActions
          `);function Bz(e,t){E(t,!0);var n=zz(),r=M(n),i=P(M(r));H(i,21,()=>Q.filteredRows,e=>e.name,(e,t)=>{var n=Rz(),r=M(n),i=M(r),a=M(i,!0);T(i);var o=P(i,2),s=e=>{z(e,Iz())};V(o,e=>{I(t).managed&&e(s)}),T(r);var c=P(r),l=M(c),u=M(l,!0);T(l),T(c);var d=P(c),f=M(d,!0);T(d);var p=P(d),m=M(p,!0);T(p);var h=P(p),g=M(h,!0);T(h);var _=P(h),v=M(_);let y;var b=M(v,!0);T(v),T(_);var x=P(_),S=M(x,!0);T(x);var C=P(x),w=M(C),ee=M(w),te=e=>{var n=Lz(),r=N(n);{let e=O(()=>`Edit provider `+I(t).name);tT(r,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>Q.openEdit(I(t)),children:(e,t)=>{G(e,{get icon(){return oo},class:`table-icon-svg`})},$$slots:{default:!0}})}var i=P(r,2);{let e=O(()=>(Q.deletingName===I(t).name?`Deleting provider `:`Delete provider `)+I(t).name),n=O(()=>Q.deletingName===I(t).name);tT(i,{get label(){return I(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>Q.requestDelete(I(t).name),get disabled(){return I(n)},children:(e,t)=>{G(e,{get icon(){return Mo},class:`table-icon-svg`})},$$slots:{default:!0}})}z(e,n)};V(ee,e=>{I(t).managed||e(te)}),T(w),T(C),T(n),F((e,n,r)=>{B(a,I(t).name),B(u,I(t).type),W(d,`title`,I(t).base_url||``),B(f,I(t).base_url||`—`),B(m,e),B(g,n),y=U(v,1,`auth-key-status-badge`,null,y,{"auth-key-status-active":I(t).enabled,"auth-key-status-inactive":!I(t).enabled}),B(b,I(t).enabled?`Enabled`:`Disabled`),B(S,r)},[()=>Tz(I(t)),()=>Ez(I(t)),()=>ss.formatTimestamp(I(t).updated_at)]),z(e,n)}),T(i),T(r),T(n),z(e,n),D()}var Vz=R(``),Hz=R(`
          `),Uz=R(`
          `,1),Wz=R(``),Gz=R(``),Kz=R(``),qz=R(``),Jz=R(``),Yz=R(` `),Xz=R(` `),Zz=R(`
          `);function Qz(e,t){E(t,!0);let n=O(()=>`provider-credential-`+t.field.name),r=O(()=>Q.fieldErrors[t.field.name]||``),i=O(()=>I(r)?I(n)+`-error`:t.field.hint?I(n)+`-hint`:void 0),a=O(()=>{let e=String(Q.form[t.field.name]||``).trim();return!e||t.field.options.includes(e)?t.field.options:[...t.field.options,e]});function o(){Q.clearFieldError(t.field.name)}var s=Zz(),c=M(s),l=M(c),u=P(l),d=e=>{z(e,Vz())};V(u,e=>{t.field.required&&e(d)}),T(c);var f=P(c,2),p=e=>{var t=Uz(),a=N(t);H(a,21,()=>Q.form.api_keys,oi,(e,t,a)=>{var s=Hz(),c=M(s);na(c),W(c,`aria-label`,`API key `+(a+1)),tT(P(c,2),{label:`Remove API key `+(a+1),class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Q.removeApiKeyRow(a),children:(e,t)=>{G(e,{get icon(){return Eo},class:`table-icon-svg`})},$$slots:{default:!0}}),T(s),F(()=>{W(c,`id`,a===0?I(n):I(n)+`-`+a),W(c,`aria-invalid`,I(r)?`true`:void 0),W(c,`aria-describedby`,a===0?I(i):void 0)}),L(`input`,c,o),da(c,()=>I(t).value,e=>I(t).value=e),z(e,s)}),T(a);var s=P(a,2),c=M(s);G(M(c),{get icon(){return co},class:`form-action-icon`}),Ue(2),T(c),T(s),F(()=>W(c,`id`,Q.form.api_keys.length===0?I(n):void 0)),L(`click`,c,()=>Q.addApiKeyRow()),z(e,t)},m=e=>{var s=Gz(),c=M(s);c.value=c.__value=``,H(P(c),16,()=>I(a),e=>e,(e,t)=>{var n=Wz(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(s),F(()=>{W(s,`id`,I(n)),W(s,`aria-invalid`,I(r)?`true`:void 0),W(s,`aria-describedby`,I(i))}),L(`change`,s,o),Gi(s,()=>Q.form[t.field.name],e=>Q.form[t.field.name]=e),z(e,s)},h=e=>{var a=Kz();na(a),F(()=>{W(a,`id`,I(n)),W(a,`aria-invalid`,I(r)?`true`:void 0),W(a,`aria-describedby`,I(i))}),L(`change`,a,o),fa(a,()=>Q.form[t.field.name],e=>Q.form[t.field.name]=e),z(e,a)},g=e=>{var a=qz();ft(a),F(()=>{W(a,`id`,I(n)),W(a,`placeholder`,t.field.placeholder||``),W(a,`aria-invalid`,I(r)?`true`:void 0),W(a,`aria-describedby`,I(i))}),L(`input`,a,o),da(a,()=>Q.form[t.field.name],e=>Q.form[t.field.name]=e),z(e,a)},_=e=>{var a=Jz();na(a),F(()=>{W(a,`id`,I(n)),W(a,`placeholder`,t.field.placeholder||``),W(a,`aria-invalid`,I(r)?`true`:void 0),W(a,`aria-describedby`,I(i))}),L(`input`,a,o),da(a,()=>Q.form[t.field.name],e=>Q.form[t.field.name]=e),z(e,a)};V(f,e=>{t.field.control===`keys`?e(p):t.field.control===`select`?e(m,1):t.field.control===`checkbox`?e(h,2):t.field.control===`textarea`?e(g,3):e(_,-1)});var v=P(f,2),y=e=>{var t=Yz(),i=M(t,!0);T(t),F(()=>{W(t,`id`,I(n)+`-error`),B(i,I(r))}),z(e,t)},b=e=>{var r=Xz(),i=M(r,!0);T(r),F(()=>{W(r,`id`,I(n)+`-hint`),B(i,t.field.hint)}),z(e,r)};V(v,e=>{I(r)?e(y):t.field.hint&&e(b,1)}),T(s),F(()=>{W(c,`for`,I(n)),B(l,`${t.field.label??``} `)}),z(e,s),D()}Hr([`input`,`click`,`change`]);var $z=R(`

          The name is the stable identity used for routing and cannot change once created.

          `),eB=R(``),tB=R(` `),nB=R(`Determines which fields the gateway uses to build requests.`),rB=R(` `),iB=R(`Suggested from the selected type; used to route requests to this provider instance and editable before saving.`),aB=R(`Immutable once created.`),oB=R(`

          Pick a type to configure its credentials — each provider type asks for different settings.

          `),sB=R(`
          Advanced settings
          `),cB=R(`
          `,1);function lB(e,t){E(t,!0);let n=O(()=>bz(Q.types,Q.form.type)),r=O(()=>Q.formFields),i=O(()=>Q.fieldErrors.name||``),a=O(()=>Q.fieldErrors.type||``);function o(){Q.selectType(),Q.formMode===`create`&&(Q.form.name=kz(Q.rows,Q.form.type))}An(()=>{let e=Q.focusField;if(!e)return;Q.focusField=``;let t=document.getElementById(`provider-credential-`+e);t&&(t.scrollIntoView({block:`center`}),t.focus({preventScroll:!0}))});{let t=e=>{z(e,$z())},s=O(()=>Q.formMode===`edit`?`Edit Provider`:`Add Provider`);aE(e,{get open(){return Q.formOpen},get title(){return I(s)},ariaLabel:`Provider credential editor`,get error(){return Q.error},get submitting(){return Q.formSubmitting},novalidate:!0,onclose:()=>Q.closeForm(),onsubmit:()=>Q.submitForm(),headerHint:t,children:(e,t)=>{var s=cB(),c=N(s),l=P(M(c),2),u=M(l);u.value=u.__value=``,H(P(u),16,()=>I(n),e=>e,(e,t)=>{var n=eB(),r=M(n,!0);T(n);var i={};F(()=>{B(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),z(e,n)}),T(l);var d=P(l,2),f=e=>{var t=tB(),n=M(t,!0);T(t),F(()=>B(n,I(a))),z(e,t)},p=e=>{z(e,nB())};V(d,e=>{I(a)?e(f):e(p,-1)}),T(c);var m=P(c,2),h=P(M(m),2);na(h);var g=P(h,2),_=e=>{var t=rB(),n=M(t,!0);T(t),F(()=>B(n,I(i))),z(e,t)},v=e=>{z(e,iB())},y=e=>{z(e,aB())};V(g,e=>{I(i)?e(_):Q.formMode===`create`?e(v,1):e(y,-1)}),T(m);var b=P(m,2),x=e=>{z(e,oB())};V(b,e=>{Q.form.type||e(x)});var S=P(b,2);H(S,17,()=>I(r).primary,e=>e.name,(e,t)=>{Qz(e,{get field(){return I(t)}})});var C=P(S,2),w=M(C);aA(M(w),{get enabled(){return Q.form.enabled},label:`provider`,onclick:()=>Q.form.enabled=!Q.form.enabled}),T(w),T(C);var ee=P(C,2),te=e=>{var t=sB(),n=M(t),i=M(n),a=P(M(i),2),o=M(a,!0);T(a),T(i),T(n);var s=P(n,2);H(s,21,()=>I(r).advanced,e=>e.name,(e,t)=>{Qz(e,{get field(){return I(t)}})}),T(s),T(t),F(e=>{t.open=Q.advancedOpen,B(o,e)},[()=>I(r).advanced.map(e=>e.label).join(`, `)]),Vr(`toggle`,t,e=>Q.advancedOpen=e.currentTarget.open),z(e,t)};V(ee,e=>{I(r).advanced.length>0&&e(te)}),F(()=>{l.disabled=Q.formMode===`edit`,W(l,`aria-invalid`,I(a)?`true`:void 0),W(l,`aria-describedby`,I(a)?`provider-credential-type-error`:`provider-credential-type-hint`),h.disabled=Q.formMode===`edit`,W(h,`aria-invalid`,I(i)?`true`:void 0),W(h,`aria-describedby`,I(i)?`provider-credential-name-error`:`provider-credential-name-hint`)}),L(`change`,l,o),Gi(l,()=>Q.form.type,e=>Q.form.type=e),L(`input`,h,()=>Q.clearFieldError(`name`)),da(h,()=>Q.form.name,e=>Q.form.name=e),z(e,s)},$$slots:{headerHint:!0,default:!0}})}D()}Hr([`change`,`input`]);var uB=R(`

          Providers

          `),dB=R(``),fB=R(`
          Provider credential management is unavailable.
          `),pB=R(``),mB=R(`
          `),hB=R(`

          No dashboard-managed providers yet. Add one here, or declare providers in config.yaml / environment variables.

          `),gB=R(`

          No providers match your filter.

          `),_B=R(`
          `);function vB(e,t){E(t,!0),An(()=>{K.refreshTick,Wo.page===`providers-config`&&Q.fetchPage()});var n=_B(),r=M(n),i=M(r);BS(M(i),{copyId:`providers-config-help-copy`,label:`model providers help`,title:e=>{z(e,uB())},help:e=>{Ue(),z(e,Zr(`Configure LLM provider credentials here instead of setting API keys as + environment variables. Providers declared in config.yaml or env vars + are read-only (Config badge) and cannot be edited or deleted from the + dashboard. Keys are masked after saving.`))},$$slots:{title:!0,help:!0}}),T(i);var a=P(i,2),o=M(a),s=e=>{var t=dB();G(M(t),{get icon(){return co},class:`form-action-icon`}),Ue(2),T(t),F(()=>t.disabled=Q.formSubmitting),L(`click`,t,()=>Q.openCreate()),z(e,t)};V(o,e=>{Q.available&&!K.needsAuth&&e(s)}),T(a),T(r);var c=P(r,2),l=e=>{z(e,fB())};V(c,e=>{!Q.available&&!K.needsAuth&&e(l)});var u=P(c,2),d=e=>{var t=pB(),n=M(t,!0);T(t),F(()=>B(n,Q.error)),z(e,t)};V(u,e=>{Q.error&&!K.needsAuth&&!Q.formOpen&&e(d)});var f=P(u,2),p=e=>{$w(e,{label:`Loading providers...`})};V(f,e=>{Q.loading&&!K.needsAuth&&e(p)});var m=P(f,2),h=e=>{var t=mB(),n=M(t);iw(M(n),{id:`provider-credential-filter`,placeholder:`Filter by name, type, or base URL...`,label:`Filter providers by name, type, or base URL`,get value(){return Q.filter},set value(e){Q.filter=e}}),T(n),T(t),z(e,t)};V(m,e=>{(Q.rows.length>0||Q.filter)&&Q.available&&!K.needsAuth&&e(h)});var g=P(m,2);lB(g,{});var _=P(g,2),v=e=>{Bz(e,{})};V(_,e=>{Q.filteredRows.length>0&&Q.available&&!K.needsAuth&&e(v)});var y=P(_,2),b=e=>{z(e,hB())};V(y,e=>{Q.rows.length===0&&!Q.filter&&!Q.loading&&!K.needsAuth&&!Q.error&&Q.available&&e(b)});var x=P(y,2),S=e=>{z(e,gB())};V(x,e=>{Q.rows.length>0&&Q.filteredRows.length===0&&Q.filter&&!Q.loading&&!K.needsAuth&&Q.available&&e(S)}),T(n),z(e,n),D()}Hr([`click`]);function yB(){return{name:``,description:``,user_path:``,labels:``,dashboard_access:!1,expires_at:``}}function bB(e){let t=[];for(let n of String(e||``).split(`,`)){let e=n.trim();e&&!t.includes(e)&&t.push(e)}return t}function xB(e){let t=String(e||``).trim();if(!t)return``;let n=t.startsWith(`/`)?t:`/`+t;for(let e of n.split(`/`)){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function SB(e){if(xB(e))return``;let t=String(e||``).trim();if(!t)return``;let n=t.startsWith(`/`)?t:`/`+t,r=[];for(let e of n.split(`/`)){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function CB(e){let t=e||{},n=String(t.name||``).trim();if(!n)return{error:`Name is required.`};let r=xB(t.user_path);if(r)return{error:r};let i=SB(t.user_path),a=bB(t.labels),o={name:n,description:String(t.description||``).trim()||void 0,user_path:i||void 0,labels:a.length?a:void 0,dashboard_access:t.dashboard_access?!0:void 0};return t.expires_at&&(o.expires_at=t.expires_at+`T23:59:59Z`),{payload:o}}function wB(e,t=Date.now()){let n=e&&e.expires_at;if(!n)return!1;let r=Date.parse(n);return Number.isFinite(r)&&r<=t}function TB(e){return e?!!e.deactivated_at||e.enabled===!1:!1}function EB(e,t=Date.now()){return!e||e.active===!1||TB(e)?!1:!wB(e,t)}function DB(e){return[e.name,e.description,e.user_path,e.redacted_value,...e.labels||[]].filter(Boolean).join(` `).toLowerCase()}function OB(e,t={}){let{query:n=``,showInactive:r=!1,now:i=Date.now()}=t,a=String(n||``).trim().toLowerCase();return(Array.isArray(e)?e:[]).filter(e=>!r&&!EB(e,i)?!1:!a||DB(e).includes(a))}function kB(e,t){return TB(e)?2:+!EB(e,t)}function AB(e){let t=e&&e.expires_at;if(!t)return 1/0;let n=Date.parse(t);return Number.isFinite(n)?n:1/0}function jB(e){let t=Date.parse(e&&e.deactivated_at||``);return Number.isFinite(t)?t:-1/0}function MB(e,t=Date.now()){return(Array.isArray(e)?e.slice():[]).sort((e,n)=>{let r=kB(e,t),i=kB(n,t);if(r!==i)return r-i;let[a,o]=r===2?[jB(e),jB(n)]:[AB(e),AB(n)];return a===o?String(e.name||``).localeCompare(String(n.name||``)):a>o?-1:1})}function NB(e,t=Date.now()){return(Array.isArray(e)?e:[]).reduce((e,n)=>e+ +!EB(n,t),0)}function PB(){return{open:!1,id:``,name:``,value:``,submitting:!1,error:``}}var $=new class{#e=k(j([]));get keys(){return I(this.#e)}set keys(e){A(this.#e,e,!0)}#t=k(!0);get available(){return I(this.#t)}set available(e){A(this.#t,e,!0)}#n=k(!1);get loading(){return I(this.#n)}set loading(e){A(this.#n,e,!0)}#r=k(``);get error(){return I(this.#r)}set error(e){A(this.#r,e,!0)}#i=k(``);get filter(){return I(this.#i)}set filter(e){A(this.#i,e,!0)}#a=k(!1);get showInactive(){return I(this.#a)}set showInactive(e){A(this.#a,e,!0)}#o=O(()=>MB(OB(this.keys,{query:this.filter,showInactive:this.showInactive})));get visibleKeys(){return I(this.#o)}set visibleKeys(e){A(this.#o,e)}#s=O(()=>NB(this.keys));get inactiveCount(){return I(this.#s)}set inactiveCount(e){A(this.#s,e)}#c=k(!1);get formOpen(){return I(this.#c)}set formOpen(e){A(this.#c,e,!0)}#l=k(!1);get formSubmitting(){return I(this.#l)}set formSubmitting(e){A(this.#l,e,!0)}#u=k(``);get issuedValue(){return I(this.#u)}set issuedValue(e){A(this.#u,e,!0)}#d=k(``);get deactivatingID(){return I(this.#d)}set deactivatingID(e){A(this.#d,e,!0)}#f=k(``);get dashboardAccessID(){return I(this.#f)}set dashboardAccessID(e){A(this.#f,e,!0)}#p=k(j(yB()));get form(){return I(this.#p)}set form(e){A(this.#p,e,!0)}#m=k(j(PB()));get labelsEditor(){return I(this.#m)}set labelsEditor(e){A(this.#m,e,!0)}copyState=nM({logPrefix:`Failed to copy auth key:`});async fetchKeys(){this.loading=!0,this.error=``;try{let e=await nT(`/admin/auth-keys`,{label:`auth keys`,errorFallback:`Unable to load API keys.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.keys=[];return}if(e.status===`error`){e.result&&(this.available=!0),this.error=e.error;return}this.available=!0,this.keys=e.items}finally{this.loading=!1}}openForm(){this.formSubmitting||this.formOpen||(this.formOpen=!0,this.error=``,this.issuedValue||(this.copyState.reset(),this.form=yB()))}closeForm(){this.formOpen&&(this.formOpen=!1,this.error=``,this.copyState.reset(),!this.formSubmitting&&!this.issuedValue&&(this.form=yB()))}copyIssuedValue(){return this.copyState.copy(this.issuedValue)}dismissIssuedKey(){this.issuedValue=``,this.copyState.reset(),this.form=yB()}async submitForm(){let e=CB(this.form);if(e.error){this.error=e.error;return}this.error=``,this.formSubmitting=!0;try{let t=await rT(`/admin/auth-keys`,`POST`,e.payload,{label:`create API key`,errorFallback:`Failed to create API key.`,unavailableMessage:`Auth keys feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error,t.result&&t.result.status!==401&&console.error(`Failed to create API key:`,t.result.status,this.error);return}let n=t.result.data||{};this.issuedValue=n.value||``,this.formOpen=!0,this.copyState.reset(),this.form=yB(),this.fetchKeys()}finally{this.formSubmitting=!1}}openLabelsEditor(e){!e||this.labelsEditor.submitting||(this.labelsEditor={open:!0,id:e.id,name:e.name||``,value:(e.labels||[]).join(`, `),submitting:!1,error:``})}closeLabelsEditor(){!this.labelsEditor.open||this.labelsEditor.submitting||(this.labelsEditor=PB())}async submitLabelsEditor(){let e=this.labelsEditor;if(!e.open||e.submitting||!e.id)return;e.submitting=!0,e.error=``;let t={labels:bB(e.value)};try{let n=await rT(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/labels`,`PUT`,t,{label:`update API key labels`,errorFallback:`Failed to update labels.`,unavailableMessage:`Auth keys feature is unavailable.`});if(n.status===`stale`)return;if(n.status===`unavailable`){this.available=!1,e.error=n.error;return}if(n.status===`error`){e.error=n.error,n.result&&n.result.status!==401&&console.error(`Failed to update auth key labels:`,n.result.status,e.error);return}qs.success(`Labels updated for key "`+e.name+`".`),e.submitting=!1,this.closeLabelsEditor(),this.fetchKeys()}finally{e.submitting=!1}}async toggleDashboardAccess(e){if(!e||!e.active||this.dashboardAccessID)return;let t=!e.dashboard_access;this.dashboardAccessID=e.id;try{let n=await rT(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/dashboard-access`,`PUT`,{dashboard_access:t},{label:`update API key dashboard access`,errorFallback:`Failed to update dashboard access.`,unavailableMessage:`Auth keys feature is unavailable.`});if(n.status===`stale`)return;if(n.status===`unavailable`){this.available=!1,qs.error(n.error);return}if(n.status===`error`){n.result&&n.result.status!==401&&console.error(`Failed to update auth key dashboard access:`,n.result.status,n.error),qs.error(n.error);return}qs.success(`Dashboard access `+(t?`granted to`:`revoked for`)+` key "`+e.name+`".`),this.fetchKeys()}finally{this.dashboardAccessID=``}}async deactivateKey(e){if(!(!e||!e.active)&&window.confirm(`Deactivate key "`+e.name+`"? This cannot be undone.`)){this.deactivatingID=e.id;try{let t=await rT(`/admin/auth-keys/`+encodeURIComponent(e.id)+`/deactivate`,`POST`,void 0,{label:`deactivate API key`,errorFallback:`Failed to deactivate key.`,unavailableMessage:`Auth keys feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,qs.error(t.error);return}if(t.status===`error`){t.result&&t.result.status!==401&&console.error(`Failed to deactivate auth key:`,t.result.status,t.error),qs.error(t.error);return}qs.success(`Key "`+e.name+`" deactivated.`),this.fetchKeys()}finally{this.deactivatingID=``}}}},FB=R(``),IB=R(`

          Store this key securely — it won’t be shown again.

          `),LB=R(``),RB=R(``),zB=R(``),BB=R(``),VB=R(`
          `);function HB(e,t){E(t,!0);{let t=O(()=>$.issuedValue?``:$.error),n=O(()=>$.issuedValue?`Done, I’ve stored it`:`Create API Key`),r=O(()=>$.issuedValue?za:co);aE(e,{get open(){return $.formOpen},title:`Create API Key`,ariaLabel:`API key editor`,get error(){return I(t)},get submitting(){return $.formSubmitting},get submitLabel(){return I(n)},submittingLabel:`Creating...`,get submitIcon(){return I(r)},cancel:!1,dialogClass:`auth-key-editor`,onclose:()=>$.closeForm(),onsubmit:()=>$.issuedValue?$.dismissIssuedKey():$.submitForm(),children:(e,t)=>{var n=Qr(),r=N(n),i=e=>{var t=IB(),n=P(M(t),2),r=M(n),i=M(r,!0);T(r),II(P(r,2),{get state(){return $.copyState},onclick:()=>$.copyIssuedValue()}),T(n);var a=P(n,2),o=e=>{z(e,FB())};V(a,e=>{$.copyState.error&&e(o)}),T(t),F(()=>B(i,$.issuedValue)),z(e,t)},a=e=>{var t=VB(),n=M(t),r=M(n),i=P(M(r),2);na(i),T(r);var a=P(r,2),o=P(M(a),2);na(o),T(a),T(n);var s=P(n,2),c=M(s);BS(c,{copyId:`auth-key-user-path-help-copy`,label:`API key user path help`,title:e=>{z(e,LB())},help:e=>{Ue(),z(e,Zr(`When set, this key overrides the configured user path request + header for audit logging and downstream request context.`))},$$slots:{title:!0,help:!0}});var l=P(c,2);na(l),T(s);var u=P(s,2),d=M(u);BS(d,{copyId:`auth-key-labels-help-copy`,label:`API key labels help`,title:e=>{z(e,RB())},help:e=>{Ue(),z(e,Zr(`Every request authenticated with this key gets these labels, in + addition to any labels from tagging headers. Labels show up in + usage analytics, the request log, and audit logs.`))},$$slots:{title:!0,help:!0}});var f=P(d,2);na(f),T(u);var p=P(u,2),m=M(p);BS(m,{copyId:`auth-key-dashboard-access-help-copy`,label:`API key dashboard access help`,title:e=>{z(e,zB())},help:e=>{Ue(),z(e,Zr(`When off, this key is denied the dashboard and every /admin API + endpoint. Model endpoints and GET /v1/usage stay available to + the key. The master key always has dashboard access.`))},$$slots:{title:!0,help:!0}});var h=P(m,2),g=M(h);na(g),Ue(2),T(h),T(p),sE(P(p,2),{id:`auth-key-description`,label:`Description (optional)`,children:(e,t)=>{var n=BB();ft(n),da(n,()=>$.form.description,e=>$.form.description=e),z(e,n)},$$slots:{default:!0}}),T(t),da(i,()=>$.form.name,e=>$.form.name=e),da(o,()=>$.form.expires_at,e=>$.form.expires_at=e),da(l,()=>$.form.user_path,e=>$.form.user_path=e),da(f,()=>$.form.labels,e=>$.form.labels=e),fa(g,()=>$.form.dashboard_access,e=>$.form.dashboard_access=e),z(e,t)};V(r,e=>{$.issuedValue?e(i):e(a,-1)}),z(e,n)},$$slots:{default:!0}})}D()}var UB=R(`

          `),WB=R(`

          Applies to new requests made with this key. Leave empty to remove all labels.

          `,1);function GB(e,t){E(t,!0),aE(e,{get open(){return $.labelsEditor.open},title:`Edit Labels`,ariaLabel:`API key labels editor`,get error(){return $.labelsEditor.error},get submitting(){return $.labelsEditor.submitting},submitLabel:`Save Labels`,cancel:!1,dialogClass:`auth-key-editor`,onclose:()=>$.closeLabelsEditor(),onsubmit:()=>$.submitLabelsEditor(),headerHint:e=>{var t=UB(),n=M(t,!0);T(t),F(()=>B(n,$.labelsEditor.name)),z(e,t)},children:(e,t)=>{sE(e,{id:`auth-key-labels-edit`,label:`Labels (comma-separated)`,children:(e,t)=>{var n=WB(),r=N(n);na(r),Ue(2),da(r,()=>$.labelsEditor.value,e=>$.labelsEditor.value=e),z(e,n)},$$slots:{default:!0}})},$$slots:{headerHint:!0,default:!0}}),D()}var KB=R(` `),qB=R(`
          `),JB=R(``),YB=R(`Expired`),XB=R(` `),ZB=R(` `,1),QB=R(`Deactivated`),$B=R(`
          `),eV=R(`
          NameDescriptionUser PathLabelsTokenDashboard Access ExpiresCreated
          `);function tV(e,t){E(t,!0);var n=eV(),r=M(n),i=M(r),a=M(i),o=P(M(a),5),s=M(o);G(P(M(s)),{get icon(){return Qa},width:`13`,height:`13`}),T(s),T(o),Ue(3),T(a),T(i);var c=P(i);H(c,21,()=>$.visibleKeys,e=>e.id,(e,t)=>{var n=$B();let r;var i=M(n),a=M(i,!0);T(i);var o=P(i),s=M(o,!0);T(o);var c=P(o),l=M(c,!0);T(c);var u=P(c),d=M(u),f=e=>{var n=qB();H(n,20,()=>I(t).labels||[],e=>e,(e,t)=>{var n=KB(),r=M(n,!0);T(n),F(e=>{Hi(n,e),B(r,t)},[()=>Ry(t)]),z(e,n)}),T(n),z(e,n)},p=e=>{z(e,JB())};V(d,e=>{(I(t).labels||[]).length>0?e(f):e(p,-1)}),T(u);var m=P(u),h=M(m),g=M(h,!0);T(h),T(m);var _=P(m),v=M(_);let y;var b=M(v,!0);T(v),T(_);var x=P(_),S=M(x),C=e=>{var n=XB(),r=M(n),i=M(r,!0);T(r);var a=P(r,2),o=e=>{z(e,YB())},s=O(()=>wB(I(t)));V(a,e=>{I(s)&&e(o)}),T(n),F(e=>B(i,e),[()=>cc(I(t).expires_at)]),z(e,n)},w=e=>{z(e,Zr(`—`))};V(S,e=>{I(t).expires_at?e(C):e(w,-1)}),T(x);var ee=P(x),te=M(ee,!0);T(ee);var ne=P(ee),re=M(ne),ie=M(re),ae=e=>{var n=ZB(),r=N(n);{let e=O(()=>(I(t).dashboard_access?`Revoke dashboard access for API key `:`Grant dashboard access to API key `)+I(t).name),n=O(()=>!!$.dashboardAccessID);tT(r,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>$.toggleDashboardAccess(I(t)),get disabled(){return I(n)},children:(e,n)=>{{let n=O(()=>I(t).dashboard_access?bo:yo);G(e,{get icon(){return I(n)},class:`table-icon-svg`})}},$$slots:{default:!0}})}var i=P(r,2);{let e=O(()=>`Edit labels for API key `+I(t).name);tT(i,{get label(){return I(e)},class:`table-icon-btn`,onclick:()=>$.openLabelsEditor(I(t)),children:(e,t)=>{G(e,{get icon(){return oo},class:`table-icon-svg`})},$$slots:{default:!0}})}var a=P(i,2);{let e=O(()=>($.deactivatingID===I(t).id?`Deactivating API key `:`Deactivate API key `)+I(t).name),n=O(()=>$.deactivatingID===I(t).id);tT(a,{get label(){return I(e)},class:`table-action-btn-danger table-icon-btn`,onclick:()=>$.deactivateKey(I(t)),get disabled(){return I(n)},children:(e,t)=>{G(e,{get icon(){return lo},class:`table-icon-svg`})},$$slots:{default:!0}})}z(e,n)},oe=e=>{var n=QB();F(e=>W(n,`title`,e),[()=>I(t).deactivated_at?`Deactivated on `+lc(I(t).deactivated_at):`Deactivated`]),z(e,n)},se=O(()=>TB(I(t)));V(ie,e=>{I(t).active?e(ae):I(se)&&e(oe,1)}),T(re),T(ne),T(n),F((e,i,o)=>{r=U(n,1,`svelte-nf0ldb`,null,r,e),B(a,I(t).name),B(s,I(t).description||`—`),B(l,I(t).user_path||`—`),B(g,I(t).redacted_value),y=U(v,1,`auth-key-status-badge`,null,y,{"auth-key-status-active":I(t).dashboard_access,"auth-key-status-inactive":!I(t).dashboard_access}),B(b,I(t).dashboard_access?`Allowed`:`Denied`),W(x,`title`,i),B(te,o)},[()=>({"auth-key-row-deactivated":TB(I(t))}),()=>I(t).expires_at?lc(I(t).expires_at):``,()=>ss.formatTimestamp(I(t).created_at)]),z(e,n)}),T(c),T(r),T(n),z(e,n),D()}var nV=R(``),rV=R(`
          API key management is unavailable.
          `),iV=R(``),aV=R(`

          Managed API keys authenticate requests to the gateway. Deactivation is + permanent — create a new key if access needs to be restored.

          `),oV=R(`
          `),sV=R(`
          `),cV=R(`

          `),lV=R(`

          No API keys yet. Issue a key to get started.

          `),uV=R(`
          `);function dV(e,t){E(t,!0),An(()=>{K.refreshTick,Wo.page===`auth-keys`&&$.fetchKeys()});var n=uV(),r=M(n),i=P(M(r),2),a=M(i),o=e=>{var t=nV();G(M(t),{get icon(){return co},class:`table-icon-svg`}),Ue(2),T(t),F(()=>t.disabled=$.formSubmitting),L(`click`,t,()=>{$.formSubmitting||$.openForm()}),z(e,t)};V(a,e=>{$.available&&!K.authError&&e(o)}),T(i),T(r);var s=P(r,2),c=e=>{z(e,rV())};V(s,e=>{!$.available&&!K.authError&&e(c)});var l=P(s,2),u=e=>{var t=iV(),n=M(t,!0);T(t),F(()=>B(n,$.error)),z(e,t)};V(l,e=>{$.error&&!K.authError&&!$.formOpen&&e(u)});var d=P(l,2),f=e=>{z(e,aV())};V(d,e=>{$.available&&!K.authError&&e(f)});var p=P(d,2);HB(p,{});var m=P(p,2);GB(m,{});var h=P(m,2),g=e=>{var t=oV();hS(M(t),{size:18,label:`Loading API keys`}),T(t),z(e,t)};V(h,e=>{$.loading&&$.keys.length===0&&e(g)});var _=P(h,2),v=e=>{var t=sV(),n=M(t);iw(M(n),{placeholder:`Filter by name, description, user path, label, or token...`,label:`Filter API keys by name, description, user path, label, or token`,get value(){return $.filter},set value(e){$.filter=e}}),T(n);var r=P(n,2),i=M(r),a=M(i);na(a);var o=P(a,2),s=P(M(o)),c=e=>{var t=Zr();F(()=>B(t,`(${$.inactiveCount??``})`)),z(e,t)};V(s,e=>{$.inactiveCount>0&&e(c)}),T(o),T(i),T(r),T(t),fa(a,()=>$.showInactive,e=>$.showInactive=e),z(e,t)};V(_,e=>{$.keys.length>0&&$.available&&e(v)});var y=P(_,2),b=e=>{tV(e,{})};V(y,e=>{$.visibleKeys.length>0&&$.available&&e(b)});var x=P(y,2),S=e=>{var t=cV(),n=M(t);T(t),F(()=>B(n,`No API keys match the current filter.${$.inactiveCount>0&&!$.showInactive?` `+$.inactiveCount+` inactive `+($.inactiveCount===1?`key is`:`keys are`)+` hidden.`:``}`)),z(e,t)};V(x,e=>{$.keys.length>0&&$.visibleKeys.length===0&&$.available&&e(S)});var C=P(x,2),w=e=>{z(e,lV())};V(C,e=>{$.keys.length===0&&!$.loading&&!K.authError&&!$.error&&$.available&&e(w)}),T(n),z(e,n),D()}Hr([`click`]);var fV=R(`

          Timezone

          `),pV=R(``),mV=R(``),hV=R(`
          `,1);function gV(e,t){E(t,!0);function n(){ss.saveOverride(),K.refresh()}function r(){ss.clearOverride(),K.refresh()}var i=hV(),a=N(i);BS(M(a),{copyId:`timezone-help-copy`,label:`timezone help`,text:`Day-based analytics, charts, and date filters use your effective timezone. Usage and audit logs keep UTC in the hover title while rendering row timestamps in your effective timezone.`,title:e=>{z(e,fV())},$$slots:{title:!0}}),T(a);var o=P(a,2),s=M(o),c=P(M(s),2),l=M(c),u=M(l);T(l),l.value=l.__value=``,H(P(l),17,()=>ss.options,e=>e.value,(e,t)=>{var n=pV(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(c),T(s),T(o);var d=P(o,2),f=M(d),p=e=>{var t=mV();L(`click`,t,r),z(e,t)};V(f,e=>{ss.override&&e(p)}),T(d),F(e=>B(u,`Automatic (${e??``})`),[()=>ss.detectedTimeZoneLabel()]),Vr(`focus`,c,()=>ss.ensureOptions()),L(`change`,c,n),Gi(c,()=>ss.override,e=>ss.override=e),z(e,i),D()}Hr([`change`,`click`]);var _V=R(``),vV=R(`

          Failover

          `,1);function yV(e,t){E(t,!0);let n=O(()=>X.failoverSaving||X.failoverGenerating||X.failoverDraftSaving||!X.failoverAvailable||!X.failoverEnabled());var r=vV(),i=N(r),a=P(M(i),2),o=M(a),s=M(o);G(s,{get icon(){return Ao},class:`form-action-icon`});var c=P(s,2),l=M(c,!0);T(c),T(o);var u=P(o,2);G(M(u),{get icon(){return Eo},class:`form-action-icon`}),Ue(2),T(u),T(a),T(i);var d=P(i,2),f=M(d),p=e=>{var t=_V(),n=M(t,!0);T(t),F(()=>B(n,X.failoverError)),z(e,t)};V(f,e=>{X.failoverError&&e(p)}),T(d),ZA(P(d,2),{}),F(()=>{o.disabled=I(n),B(l,X.failoverGenerating?`Generating...`:`Generate failover models automatically`),u.disabled=I(n)}),L(`click`,o,()=>X.generateFailoverRules()),L(`click`,u,()=>X.openFailoverResetDialog()),z(e,r),D()}Hr([`click`]);function bV(){return{daily_reset_hour:0,daily_reset_minute:0,weekly_reset_weekday:1,weekly_reset_hour:0,weekly_reset_minute:0,monthly_reset_day:1,monthly_reset_hour:0,monthly_reset_minute:0}}function xV(e,t){let n=t||{},r=(e,t)=>{if(e===``)return t;let n=Number(e);return Number.isFinite(n)&&Number.isInteger(n)?Math.trunc(n):t},i=(e,t)=>r(n[e],t),a=(t,n)=>e?r(e[t],n):n;return{daily_reset_hour:a(`daily_reset_hour`,i(`daily_reset_hour`,0)),daily_reset_minute:a(`daily_reset_minute`,i(`daily_reset_minute`,0)),weekly_reset_weekday:a(`weekly_reset_weekday`,i(`weekly_reset_weekday`,1)),weekly_reset_hour:a(`weekly_reset_hour`,i(`weekly_reset_hour`,0)),weekly_reset_minute:a(`weekly_reset_minute`,i(`weekly_reset_minute`,0)),monthly_reset_day:a(`monthly_reset_day`,i(`monthly_reset_day`,1)),monthly_reset_hour:a(`monthly_reset_hour`,i(`monthly_reset_hour`,0)),monthly_reset_minute:a(`monthly_reset_minute`,i(`monthly_reset_minute`,0))}}function SV(){return[{value:0,label:`Sunday`},{value:1,label:`Monday`},{value:2,label:`Tuesday`},{value:3,label:`Wednesday`},{value:4,label:`Thursday`},{value:5,label:`Friday`},{value:6,label:`Saturday`}]}var CV=R(`

          Budget Resets

          `),wV=R(``),TV=R(`

          If the selected day does not exist in a month, the reset runs on + the last day of that month.

          `),EV=R(``),DV=R(``),OV=R(`
          Monthly
          Weekly
          Daily
          `,1);function kV(e,t){E(t,!0);let n=k(j(bV())),r=k(!1),i=k(!1),a=k(``),o=k(!1),s=O(()=>vs.budgetsVisible());async function c(){if(await vs.ensureLoaded(),!vs.budgetsVisible()){A(a,``);return}A(r,!0),A(a,``);try{let e=await ps(`/admin/budgets/settings`,{label:`budget settings`});if(e.stale)return;if(!e.ok){A(a,`Unable to load budget settings.`);return}A(n,xV(e.data,I(n)),!0)}catch(e){console.error(`Failed to fetch budget settings:`,e),A(a,`Unable to load budget settings.`)}finally{A(r,!1)}}async function l(){if(!I(i)){A(i,!0);try{let e=await ms(`/admin/budgets/settings`,`PUT`,xV(I(n),I(n)),{label:`budget settings`});if(e.stale)return;if(!e.ok){qs.error(`Unable to save budget settings.`);return}A(n,xV(e.data,I(n)),!0),A(a,``),qs.success(`Budget settings saved.`)}catch(e){console.error(`Failed to save budget settings:`,e),qs.error(`Unable to save budget settings.`)}finally{A(i,!1)}}}An(()=>{K.refreshTick,c()});var u=Qr(),d=N(u),f=e=>{var t=OV(),s=N(t),c=M(s);BS(c,{copyId:`budget-settings-help-copy`,label:`budget help`,text:`Budget reset anchors are stored in the database and evaluated in UTC. Hourly budgets reset at the top of each hour.`,title:e=>{z(e,CV())},$$slots:{title:!0}});var u=P(c,2),d=M(u),f=P(M(d),2),p=M(f);BS(p,{copyId:`budget-monthly-day-help-copy`,label:`day of month help`,external:!0,get open(){return I(o)},set open(e){A(o,e,!0)},title:e=>{z(e,wV())},$$slots:{title:!0}});var m=P(p,2);na(m),T(f);var h=P(f,2),g=P(M(h),2);na(g),T(h);var _=P(h,2),v=P(M(_),2);na(v),T(_);var y=P(_,2),b=M(y),x=e=>{z(e,TV())};V(b,e=>{I(o)&&e(x)}),T(y),T(d);var S=P(d,2),C=P(M(S),2),w=P(M(C),2);H(w,21,SV,e=>e.value,(e,t)=>{var n=EV(),r=M(n,!0);T(n);var i={};F(()=>{B(r,I(t).label),i!==(i=I(t).value)&&(n.value=(n.__value=I(t).value)??``)}),z(e,n)}),T(w),T(C);var ee=P(C,2),te=P(M(ee),2);na(te),T(ee);var ne=P(ee,2),re=P(M(ne),2);na(re),T(ne),Ue(2),T(S);var ie=P(S,2),ae=P(M(ie),4),oe=P(M(ae),2);na(oe),T(ae);var se=P(ae,2),ce=P(M(se),2);na(ce),T(se),Ue(2),T(ie),T(u);var le=P(u,2),ue=M(le);G(M(ue),{get icon(){return po},class:`form-action-icon`}),Ue(2),T(ue);var de=P(ue,2),fe=e=>{hS(e,{size:16,label:`Loading budget settings`})};V(de,e=>{I(r)&&e(fe)}),T(le),T(s);var pe=P(s,2),me=M(pe),he=e=>{var t=DV(),n=M(t,!0);T(t),F(()=>B(n,I(a))),z(e,t)};V(me,e=>{I(a)&&e(he)}),T(pe),F(()=>{ue.disabled=I(i)||I(r),W(ue,`aria-busy`,I(i)?`true`:`false`)}),da(m,()=>I(n).monthly_reset_day,e=>I(n).monthly_reset_day=e),da(g,()=>I(n).monthly_reset_hour,e=>I(n).monthly_reset_hour=e),da(v,()=>I(n).monthly_reset_minute,e=>I(n).monthly_reset_minute=e),Gi(w,()=>I(n).weekly_reset_weekday,e=>I(n).weekly_reset_weekday=e),da(te,()=>I(n).weekly_reset_hour,e=>I(n).weekly_reset_hour=e),da(re,()=>I(n).weekly_reset_minute,e=>I(n).weekly_reset_minute=e),da(oe,()=>I(n).daily_reset_hour,e=>I(n).daily_reset_hour=e),da(ce,()=>I(n).daily_reset_minute,e=>I(n).daily_reset_minute=e),L(`click`,ue,l),z(e,t)};V(d,e=>{I(s)&&e(f)}),z(e,u),D()}Hr([`click`]);var AV=R(`

          Reset All Budgets

          Start new budget periods for every configured budget without changing + the limits.

          `);function jV(e,t){E(t,!0);var n=Qr(),r=N(n),i=e=>{var t=AV(),n=P(M(t),2),r=M(n);G(M(r),{get icon(){return fo},class:`form-action-icon`}),Ue(2),T(r),T(n),T(t),F(()=>r.disabled=J.resetAllLoading),L(`click`,r,()=>J.openResetDialog()),z(e,t)},a=O(()=>vs.budgetsVisible());V(r,e=>{I(a)&&e(i)}),z(e,n),D()}Hr([`click`]);function MV(){return{header:``,prefix:``,do_not_pass:!1,delimiter:``,managed:!1}}function NV(e){return(e&&Array.isArray(e.headers)?e.headers:[]).map(e=>({header:typeof e.header==`string`?e.header:``,prefix:typeof e.prefix==`string`?e.prefix:``,do_not_pass:e.do_not_pass===!0,delimiter:typeof e.delimiter==`string`&&e.delimiter!==`,`?e.delimiter:``,managed:e.managed===!0}))}function PV(e){return{headers:(Array.isArray(e)?e:[]).filter(e=>!e.managed&&e.header.trim()!==``).map(e=>({header:e.header.trim(),prefix:e.prefix,do_not_pass:e.do_not_pass,delimiter:e.delimiter}))}}function FV(e){return e&&e.error&&e.error.message?e.error.message:``}var IV=R(`

          Tagging based on headers

          `),LV=R(`config`),RV=R(``),zV=R(`
          `),BV=R(`

          No tagging headers configured. Requests are not labelled.

          `),VV=R(``),HV=R(`
          `,1);function UV(e,t){E(t,!0);let n=k(j([])),r=k(!0),i=k(!1),a=k(!1),o=k(``);function s(){I(n).push(MV())}function c(e){let t=I(n)[e];!t||t.managed||I(n).splice(e,1)}async function l(){A(i,!0),A(o,``);try{let e=await ps(`/admin/tagging/settings`,{label:`tagging settings`});if(e.stale)return;if(!e.ok){A(o,`Unable to load tagging settings.`);return}A(n,NV(e.data),!0),A(r,e.data&&e.data.editable!==!1,!0)}catch(e){console.error(`Failed to fetch tagging settings:`,e),A(o,`Unable to load tagging settings.`)}finally{A(i,!1)}}async function u(){if(!(I(a)||!I(r))){A(a,!0);try{let e=await ms(`/admin/tagging/settings`,`PUT`,PV(I(n)),{label:`tagging settings`});if(e.stale)return;if(!e.ok){qs.error(e.status!==401&&FV(e.data)||`Unable to save tagging settings.`);return}A(n,NV(e.data),!0),A(r,e.data&&e.data.editable!==!1,!0),A(o,``),qs.success(`Tagging settings saved.`)}catch(e){console.error(`Failed to save tagging settings:`,e),qs.error(`Unable to save tagging settings.`)}finally{A(a,!1)}}}An(()=>{K.refreshTick,l()});var d=HV(),f=N(d),p=M(f);BS(p,{copyId:`tagging-settings-help-copy`,label:`tagging help`,text:`Each request is labelled from the listed headers; labels land in usage tracking and audit logs. A header value can carry several labels split by the delimiter (default: comma). The prefix is trimmed from each label only — the header itself is forwarded unchanged unless 'Do not pass' is checked. Rows marked CONFIG come from config.yaml or TAGGING_HEADER_* env vars and are read-only here.`,title:e=>{z(e,IV())},$$slots:{title:!0}});var m=P(p,2),h=M(m);H(h,17,()=>I(n),oi,(e,t,n)=>{var i=zV(),a=M(i),o=M(a);W(o,`for`,`tagging-header-`+n);var s=P(o,2);na(s),W(s,`id`,`tagging-header-`+n),T(a);var l=P(a,2),u=M(l);W(u,`for`,`tagging-prefix-`+n);var d=P(u,2);na(d),W(d,`id`,`tagging-prefix-`+n),T(l);var f=P(l,2),p=M(f);W(p,`for`,`tagging-delimiter-`+n);var m=P(p,2);na(m),W(m,`id`,`tagging-delimiter-`+n),T(f);var h=P(f,2),g=M(h);na(g),Ue(2),T(h);var _=P(h,2),v=M(_),y=e=>{z(e,LV())},b=e=>{var i=RV();F(()=>{i.disabled=!I(r),W(i,`aria-label`,`Remove tagging header `+(I(t).header||n+1))}),L(`click`,i,()=>c(n)),z(e,i)};V(v,e=>{I(t).managed?e(y):e(b,-1)}),T(_),T(i),F(()=>{s.disabled=I(t).managed||!I(r),d.disabled=I(t).managed||!I(r),m.disabled=I(t).managed||!I(r),g.disabled=I(t).managed||!I(r)}),da(s,()=>I(t).header,e=>I(t).header=e),da(d,()=>I(t).prefix,e=>I(t).prefix=e),da(m,()=>I(t).delimiter,e=>I(t).delimiter=e),fa(g,()=>I(t).do_not_pass,e=>I(t).do_not_pass=e),z(e,i)});var g=P(h,2),_=e=>{hS(e,{size:16,label:`Loading tagging settings`})};V(g,e=>{I(i)&&e(_)});var v=P(g,2),y=e=>{z(e,BV())};V(v,e=>{!I(i)&&I(n).length===0&&e(y)}),T(m);var b=P(m,2),x=M(b);G(M(x),{get icon(){return co},class:`form-action-icon`}),Ue(2),T(x);var S=P(x,2);G(M(S),{get icon(){return po},class:`form-action-icon`}),Ue(2),T(S),T(b),T(f);var C=P(f,2),w=M(C),ee=e=>{var t=VV(),n=M(t,!0);T(t),F(()=>B(n,I(o))),z(e,t)};V(w,e=>{I(o)&&e(ee)}),T(C),F(()=>{x.disabled=!I(r)||I(a)||I(i),S.disabled=!I(r)||I(a)||I(i),W(S,`aria-busy`,I(a)?`true`:`false`)}),L(`click`,x,s),L(`click`,S,u),z(e,d),D()}Hr([`click`]);function WV(e){let t=e||{};if(t.selectedPreset)return{days:parseInt(t.selectedPreset,10)||30};let n=t.customStartDate?sc(t.customStartDate):``,r=t.customEndDate||t.today||null;return{start_date:n,end_date:r?sc(r):``}}function GV(e,t,n,r){return{...WV(e),user_path:String(t||``).trim(),selector:String(n||``).trim(),confirmation:r}}function KV(e){let t=Number(e&&e.matched||0),n=Number(e&&e.recalculated||0),r=Number(e&&e.without_pricing||0),i=`Pricing recalculated for `+n+` of `+t+` usage record`+(t===1?``:`s`)+`.`;return r>0&&(i+=` `+r+` usage record`+(r===1?` still lacks`:`s still lack`)+` pricing metadata.`),i}var qV=R(`

          Usage Pricing Recalculation

          `),JV=R(`
          `);function YV(e,t){E(t,!0);let n=k(``),r=k(``),i=k(!1),a=O(()=>vs.booleanFlag(`USAGE_PRICING_RECALCULATION_ENABLED`,!1));function o(){if(!I(a)){qs.error(`Usage pricing recalculation is unavailable.`);return}I(i)||Ms.open({title:`Recalculate Pricing`,titleId:`pricingRecalculateDialogTitle`,inputId:`pricing-recalculate-confirmation`,requiredText:`recalculate`,confirmLabel:`Recalculate Pricing`,icon:Pa,dialogClass:`pricing-recalculate-dialog`,message:`Stored usage cost fields matching the selected filters will be overwritten.`,onConfirm:()=>s()})}async function s(){if(!I(a)){qs.error(`Usage pricing recalculation is unavailable.`);return}if(!I(i)){A(i,!0);try{let e=await ms(`/admin/usage/recalculate-pricing`,`POST`,GV({selectedPreset:Dc.selectedPreset,customStartDate:Dc.customStartDate,customEndDate:Dc.customEndDate,today:ss.todayDate()},I(n),I(r),`recalculate`),{label:`pricing recalculation`});if(e.stale)return;if(!e.ok){Ms.error=`Unable to recalculate pricing.`;return}Ms.close(),qs.success(KV(e.data)),Nc.fetchUsage()}catch(e){console.error(`Failed to recalculate pricing:`,e),Ms.error=`Unable to recalculate pricing.`}finally{A(i,!1)}}}var c=Qr(),l=N(c),u=e=>{var t=JV(),s=M(t);BS(s,{copyId:`pricing-recalculate-help-copy`,label:`pricing recalculation help`,text:`Recalculate stored input, output, total, and Pro Saved costs from the current model pricing metadata. This overwrites matching historical cost fields. Filters are applied to the selected date range, user path subtree, and provider/model selector or alias.`,title:e=>{z(e,qV())},$$slots:{title:!0}});var c=P(s,2),l=M(c),u=P(M(l),2);Xc(M(u),{}),T(u),T(l);var d=P(l,2),f=P(M(d),2);na(f),T(d);var p=P(d,2),m=P(M(p),2);na(m),T(p),T(c);var h=P(c,2),g=M(h);G(M(g),{get icon(){return Pa},class:`form-action-icon`}),Ue(2),T(g),T(h),T(t),F(()=>{g.disabled=I(i)||!I(a),W(g,`aria-busy`,I(i)?`true`:`false`)}),da(f,()=>I(n),e=>A(n,e)),da(m,()=>I(r),e=>A(r,e)),L(`click`,g,o),z(e,t)};V(l,e=>{I(a)&&e(u)}),z(e,c),D()}Hr([`click`]);function XV(e){return String(e&&e.status||`ok`).toLowerCase()}function ZV(e){if(!e||typeof e!=`object`)return`Runtime refresh completed.`;let t=Number(e.model_count||0),n=Number(e.provider_count||0),r=XV(e);return(r===`ok`?`Runtime refreshed.`:r===`partial`?`Runtime refresh completed with warnings.`:`Runtime refresh failed.`)+` `+t+` model`+(t===1?``:`s`)+` across `+n+` provider`+(n===1?``:`s`)+`.`}function QV(e){return!!e&&XV(e)===`ok`}function $V(e){let t=e&&e.steps;return Array.isArray(t)?t:[]}function eH(e){let t=String(e&&e.name||``).replace(/_/g,` `),n=String(e&&e.status||``).trim(),r=String(e&&(e.error||e.message)||``).trim();return t?r?t+`: `+n+` - `+r:t+`: `+n:r||n||``}var tH=R(`

          Runtime Refresh

          `),nH=R(`
        • `),rH=R(`
            `),iH=R(`
            `,1);function aH(e,t){E(t,!0);let n=k(!1),r=k(null);async function i(){if(!I(n)){A(n,!0),A(r,null);try{let e=await ms(`/admin/runtime/refresh`,`POST`,void 0,{label:`runtime refresh`});if(e.stale)return;if(!e.ok){qs.error(`Runtime refresh failed.`);return}A(r,e.data&&typeof e.data==`object`?e.data:null,!0),QV(I(r))?qs.success(ZV(I(r))):qs.error(ZV(I(r))),K.refresh()}catch(e){console.error(`Failed to refresh runtime:`,e),qs.error(`Runtime refresh failed.`)}finally{A(n,!1)}}}var a=iH(),o=N(a),s=M(o);BS(s,{copyId:`runtime-refresh-help-copy`,label:`runtime refresh help`,text:`Pull the latest model metadata, provider inventory, API keys, aliases, model access rules, guardrails, and workflows.`,title:e=>{z(e,tH())},$$slots:{title:!0}});var c=P(s,2),l=M(c);let u;G(M(l),{get icon(){return uo},class:`settings-refresh-icon`}),Ue(2),T(l),T(c),T(o);var d=P(o,2),f=M(d),p=e=>{var t=rH();H(t,21,()=>$V(I(r)),e=>e.name,(e,t)=>{var n=nH(),r=M(n,!0);T(n),F(e=>{U(n,1,`runtime-refresh-step is-${I(t).status??``}`,`svelte-yeq2mp`),B(r,e)},[()=>eH(I(t))]),z(e,n)}),T(t),z(e,t)},m=O(()=>$V(I(r)).length>0);V(f,e=>{I(m)&&e(p)}),T(d),F(()=>{u=U(l,1,`btn btn-primary btn-with-icon settings-refresh-btn`,null,u,{"is-refreshing":I(n)}),l.disabled=I(n),W(l,`aria-busy`,I(n)?`true`:`false`)}),L(`click`,l,i),z(e,a),D()}Hr([`click`]);var oH=R(`
            `);function sH(e,t){E(t,!0),An(()=>{K.refreshTick,Wo.page===`settings`&&(ss.ensureOptions(),vs.ensureLoaded())});var n=oH(),r=P(M(n),2),i=M(r);gV(i,{});var a=P(i,2);yV(a,{});var o=P(a,2);kV(o,{});var s=P(o,2);jV(s,{});var c=P(s,2);UV(c,{});var l=P(c,2);YV(l,{}),aH(P(l,2),{}),T(r);var u=P(r,2),d=M(u,!0);T(u),T(n),F(e=>B(d,e),[()=>zo()]),z(e,n),D()}var cH=R(`
            `);function lH(e,t){E(t,!0);let n={overview:uC,usage:Zw,budgets:DE,"rate-limits":RD,models:bj,workflows:VN,"audit-logs":LL,guardrails:AR,"mcp-servers":uz,"providers-config":vB,"auth-keys":dV,settings:sH};ss.init(),Dc.init(),K.init(),Da.init(),Oa.init(),Wo.init(),An(()=>{K.refreshTick,vs.fetch(),Oc.fetchModels(),Oc.fetchCategories()}),An(()=>{document.body.classList.toggle(`dashboard-modal-open`,ka.anyOpen)});let r=O(()=>n[Wo.page]||uC);var i=cH(),a=M(i);Cs(a,{});var o=P(a,2),s=M(o);Qs(s,{}),_i(P(s,2),()=>I(r),(e,t)=>{t(e,{})}),T(o);var c=P(o,2);As(c,{});var l=P(c,2);Is(l,{}),Xs(P(l,2),{}),T(i),z(e,i),D()}ti(lH,{target:document.getElementById(`app`)}); \ No newline at end of file diff --git a/internal/admin/dashboard/static/dist/index.html b/internal/admin/dashboard/static/dist/index.html index 94b8a970..3c0be002 100644 --- a/internal/admin/dashboard/static/dist/index.html +++ b/internal/admin/dashboard/static/dist/index.html @@ -7,7 +7,7 @@ GoModel Dashboard - + diff --git a/web/dashboard/src/lib/components/atoms/CopyButton.svelte b/web/dashboard/src/lib/components/atoms/CopyButton.svelte index ef9ffbca..c9174219 100644 --- a/web/dashboard/src/lib/components/atoms/CopyButton.svelte +++ b/web/dashboard/src/lib/components/atoms/CopyButton.svelte @@ -3,6 +3,7 @@ // (from createCopyState) and performs the copy in `onclick`, so the same // button works for page-local state and store-held state. import Icon from "$lib/components/atoms/Icon.svelte"; + import { CircleCheck, Copy } from "lucide"; let { state, @@ -30,9 +31,9 @@ }} > {#if state.copied} - + {:else} - + {/if} {text} diff --git a/web/dashboard/src/lib/components/atoms/DialogCloseButton.svelte b/web/dashboard/src/lib/components/atoms/DialogCloseButton.svelte index 1faf0442..546d356d 100644 --- a/web/dashboard/src/lib/components/atoms/DialogCloseButton.svelte +++ b/web/dashboard/src/lib/components/atoms/DialogCloseButton.svelte @@ -3,6 +3,7 @@ // `iconClass` defaults to the 14px table icon size used by the editors; // the auth-style dialogs pass "" to keep their larger X. import Icon from "./Icon.svelte"; + import { X } from "lucide"; let { label = "Close", @@ -22,7 +23,7 @@ {onclick} bind:this={el} > - +